@kubuild/schema 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -0
- package/dist/actions.d.ts +423 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/document.d.ts +4 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/form.d.ts +129 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/index.cjs +845 -90
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +798 -90
- package/dist/index.js.map +1 -1
- package/dist/json-schema.d.ts +690 -0
- package/dist/json-schema.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/document.ts","../src/manifest.ts","../src/template.ts","../src/fixtures/starter-page.json","../src/fixtures.ts","../src/json-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const SCHEMA_NAME = 'stora.page' as const;\nexport const CURRENT_SCHEMA_VERSION = '1.0.0' as const;\n\n/**\n * Asset Reference Schema\n * Represents a reference to an asset stored either locally within the .stora package or hosted externally.\n */\nexport const AssetReferenceSchema = z.object({\n type: z.literal('asset'),\n assetId: z.string().min(1, 'Asset ID cannot be empty'),\n filename: z.string().optional(),\n mimeType: z.string().optional(),\n fallbackUrl: z.string().url().optional(),\n});\n\nexport type AssetReference = z.infer<typeof AssetReferenceSchema>;\n\n/**\n * Variable Binding Schema\n * Represents a dynamic runtime variable replacement (e.g. {{ site.name }}).\n */\nexport const VariableBindingSchema = z.object({\n type: z.literal('variable'),\n key: z.string().min(1, 'Variable key cannot be empty'),\n fallback: z.unknown().optional(),\n});\n\nexport type VariableBinding = z.infer<typeof VariableBindingSchema>;\n\n/**\n * Action Binding Schema\n * Represents an interactive action triggerable by UI components (e.g. navigation, modal, custom event).\n */\nexport const ActionBindingSchema = z.object({\n type: z.string().min(1, 'Action type cannot be empty'),\n payload: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type ActionBinding = z.infer<typeof ActionBindingSchema>;\n\n/**\n * Style Definition Schema\n * Key-value mapping of CSS properties or design tokens.\n *\n * Values are restricted to safe, serializable primitives (string, number,\n * boolean, null) — no functions, objects, or arrays — and string values are\n * screened against known CSS/HTML injection vectors (e.g. `url(javascript:...)`,\n * legacy IE `expression()`, `@import`, embedded `<script>` tags).\n */\nconst DANGEROUS_STYLE_VALUE_PATTERN = /javascript:|expression\\(|@import|<script|vbscript:|data:text\\/html/i;\n\nexport const StyleValueSchema = z.union([\n z.string().refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Style value contains a disallowed or unsafe pattern',\n }),\n z.number(),\n z.boolean(),\n z.null(),\n z.undefined(),\n]);\nexport const StyleDefinitionSchema = z.record(z.string(), StyleValueSchema);\nexport type StyleDefinition = Record<string, string | number | boolean | null | undefined>;\n\n/**\n * Pseudo-state style definitions keyed by CSS pseudo-class selector\n * (e.g. `:hover`, `:focus`, `:active`). Each entry is a style layer applied\n * on top of the resolved breakpoint styles when the state is active.\n */\nexport const PseudoStateStylesSchema = z.record(z.string(), StyleDefinitionSchema);\nexport type PseudoStateStyles = Record<string, StyleDefinition>;\n\n/**\n * Responsive Styles Schema\n * Breakpoint-specific style definitions: base (all viewports), desktop, tablet, and mobile.\n * Optionally carries `states` — pseudo-class style layers (e.g. `:hover`).\n */\nexport const ResponsiveStylesSchema = z\n .object({\n base: StyleDefinitionSchema.optional(),\n desktop: StyleDefinitionSchema.optional(),\n tablet: StyleDefinitionSchema.optional(),\n mobile: StyleDefinitionSchema.optional(),\n states: PseudoStateStylesSchema.optional(),\n })\n .passthrough()\n .default({});\n\nexport type ResponsiveStyles = z.infer<typeof ResponsiveStylesSchema>;\n\n/**\n * Animation Configuration Schema\n * Defines scroll entrance animations (AOS), duration, delay, easing curve,\n * trigger behavior (once), hover micro-interactions, and continuous loop effects.\n */\nexport const AnimationConfigSchema = z.object({\n type: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Animation type contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('none'),\n duration: z.number().min(0, 'Duration must be non-negative').optional().default(600),\n delay: z.number().min(0, 'Delay must be non-negative').optional().default(0),\n easing: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Animation easing contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('ease-out'),\n once: z.boolean().optional().default(true),\n hoverEffect: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Hover effect contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('none'),\n loopEffect: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Loop effect contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('none'),\n});\n\nexport type AnimationConfig = z.infer<typeof AnimationConfigSchema>;\n\nexport const DEFAULT_ANIMATION_CONFIG: AnimationConfig = {\n type: 'none',\n duration: 600,\n delay: 0,\n easing: 'ease-out',\n once: true,\n hoverEffect: 'none',\n loopEffect: 'none',\n};\n\n/**\n * Recursive Node Type Definition\n */\nexport type Node = {\n id: string;\n type: string;\n props?: Record<string, unknown>;\n styles?: ResponsiveStyles;\n animation?: AnimationConfig;\n children?: Node[];\n};\n\n/**\n * Recursive Node Schema\n * Represents any element/node in the document tree.\n * Node IDs are deterministic, independent of React keys, and unique across the document.\n */\nexport const NodeSchema: z.ZodType<Node> = z.lazy(() =>\n z.object({\n id: z.string().min(1, 'Node ID must be a non-empty string'),\n type: z.string().min(1, 'Node type must be a non-empty string'),\n props: z.record(z.string(), z.unknown()).optional().default({}),\n styles: ResponsiveStylesSchema.optional().default({}),\n animation: AnimationConfigSchema.optional(),\n children: z.array(NodeSchema).optional().default([]),\n }),\n);\n\nexport type RootPageNode = Node & { type: 'page' };\n\n/**\n * Root Page Node Schema\n * The root node of a PageDocument must be of type 'page'.\n */\nexport const RootPageNodeSchema: z.ZodType<RootPageNode> = NodeSchema.refine(\n (node): node is RootPageNode => node.type === 'page',\n {\n message: 'Root node must have type \"page\"',\n path: ['type'],\n },\n);\n\n\n/**\n * Document Metadata Schema\n * Pure serializable metadata for the document.\n */\nexport const DocumentMetadataSchema = z.object({\n title: z.string().min(1, 'Title is required').default('Untitled Page'),\n description: z.string().optional().default(''),\n author: z.string().optional().default(''),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n tags: z.array(z.string()).optional().default([]),\n category: z.string().optional().default('general'),\n version: z.string().optional().default('1.0.0'),\n custom: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type DocumentMetadata = z.infer<typeof DocumentMetadataSchema>;\n\n/**\n * Page Document Schema v1\n * Root portable document structure:\n * - schema: strictly \"stora.page\"\n * - version: schema version string (e.g. \"1.0.0\")\n * - metadata: serializable metadata\n * - document: root page node\n */\nexport const PageDocumentSchema = z.object({\n schema: z.literal(SCHEMA_NAME),\n version: z.string().min(1, 'Schema version is required').default(CURRENT_SCHEMA_VERSION),\n metadata: DocumentMetadataSchema.optional(),\n document: RootPageNodeSchema,\n});\n\nexport type PageDocument = z.infer<typeof PageDocumentSchema>;\n\n\n\n/**\n * Type guards\n */\nexport function isAssetReference(value: unknown): value is AssetReference {\n return AssetReferenceSchema.safeParse(value).success;\n}\n\nexport function isVariableBinding(value: unknown): value is VariableBinding {\n return VariableBindingSchema.safeParse(value).success;\n}\n\nexport function isActionBinding(value: unknown): value is ActionBinding {\n return ActionBindingSchema.safeParse(value).success;\n}\n\nexport function isAnimationConfig(value: unknown): value is AnimationConfig {\n return AnimationConfigSchema.safeParse(value).success;\n}\n\n/**\n * Deterministic Node ID Generator\n * Generates predictable IDs based on prefix and an index/identifier (not bound to React keys).\n */\nexport function generateDeterministicNodeId(prefix: string, indexOrKey: number | string): string {\n const cleanPrefix = prefix.toLowerCase().replace(/[^a-z0-9_-]/g, '-');\n return `${cleanPrefix}_${indexOrKey}`;\n}\n\n/**\n * Collect all Node IDs in a node tree\n */\nexport function collectNodeIds(node: Node): string[] {\n const ids: string[] = [node.id];\n if (node.children && Array.isArray(node.children)) {\n for (const child of node.children) {\n ids.push(...collectNodeIds(child));\n }\n }\n return ids;\n}\n\n/**\n * Validate Node ID uniqueness across a node tree or document\n */\nexport function validateNodeIdUniqueness(node: Node): { valid: boolean; duplicateIds: string[] } {\n const allIds = collectNodeIds(node);\n const seen = new Set<string>();\n const duplicates = new Set<string>();\n\n for (const id of allIds) {\n if (seen.has(id)) {\n duplicates.add(id);\n } else {\n seen.add(id);\n }\n }\n\n return {\n valid: duplicates.size === 0,\n duplicateIds: Array.from(duplicates),\n };\n}\n","import { z } from 'zod';\nimport { SCHEMA_NAME } from './document';\n\nexport const ManifestAssetItemSchema = z.object({\n id: z.string().min(1, 'Asset ID cannot be empty'),\n path: z.string().min(1, 'Asset archive path cannot be empty'),\n mimeType: z.string().min(1, 'MIME type cannot be empty'),\n size: z.number().nonnegative('Asset size must be non-negative'),\n checksum: z.string().optional(),\n});\n\nexport type ManifestAssetItem = z.infer<typeof ManifestAssetItemSchema>;\n\nexport const ManifestSchema = z.object({\n schema: z.literal(SCHEMA_NAME).default(SCHEMA_NAME),\n schemaVersion: z.string().min(1, 'Schema version cannot be empty').default('1.0.0'),\n packageVersion: z.string().min(1, 'Package version cannot be empty').default('1.0.0'),\n builderCompatibility: z.string().default('>=0.1.0'),\n requiredComponents: z.array(z.string()).default([]),\n requiredCapabilities: z.array(z.string()).default([]),\n assets: z.array(ManifestAssetItemSchema).default([]),\n createdAt: z.string().optional(),\n});\n\nexport type Manifest = z.infer<typeof ManifestSchema>;\n\nexport function isManifest(value: unknown): value is Manifest {\n return ManifestSchema.safeParse(value).success;\n}\n","import { z } from 'zod';\nimport { AssetReferenceSchema, PageDocumentSchema, type AssetReference, type PageDocument } from './document';\n\n/**\n * Regex for screening dangerous URI schemes and payloads in thumbnail URLs.\n * Rejects javascript:, vbscript:, data: URIs that are not images (e.g. data:text/html),\n * and embedded <script> tags.\n */\nconst DANGEROUS_URI_PATTERN = /^(javascript:|vbscript:|data:(?!image\\/))|<script/i;\n\n/**\n * Validates a string as a safe URL or safe asset path.\n */\nexport function isSafeThumbnailUrl(url: string): boolean {\n if (!url || typeof url !== 'string') return false;\n const trimmed = url.trim();\n if (trimmed.length === 0) return false;\n if (DANGEROUS_URI_PATTERN.test(trimmed)) return false;\n return true;\n}\n\n/**\n * Safe Thumbnail URL String Schema\n */\nexport const SafeThumbnailUrlSchema = z.string().min(1, 'Thumbnail URL cannot be empty').refine(\n (url) => isSafeThumbnailUrl(url),\n { message: 'Thumbnail URL contains an unsafe protocol or payload' }\n);\n\n/**\n * Safe Thumbnail Object Schema\n */\nexport const SafeThumbnailObjectSchema = z.object({\n url: SafeThumbnailUrlSchema,\n alt: z.string().optional(),\n width: z.number().positive().optional(),\n height: z.number().positive().optional(),\n});\n\nexport type SafeThumbnailObject = z.infer<typeof SafeThumbnailObjectSchema>;\n\n/**\n * Safe Thumbnail Schema (AssetReference | safe URL string | safe thumbnail object)\n */\nexport const SafeThumbnailSchema = z.union([\n AssetReferenceSchema,\n SafeThumbnailObjectSchema,\n SafeThumbnailUrlSchema,\n]);\n\nexport type SafeThumbnail = AssetReference | SafeThumbnailObject | string;\n\n/**\n * Template Package Reference Schema\n * Points to an external or archived .stora / JSON package file.\n */\nexport const TemplatePackageRefSchema = z.object({\n path: z.string().optional(),\n url: SafeThumbnailUrlSchema.optional(),\n checksum: z.string().optional(),\n format: z.enum(['stora', 'json']).default('stora'),\n});\n\nexport type TemplatePackageRef = z.infer<typeof TemplatePackageRefSchema>;\n\n/**\n * Template Requirements Schema\n * Declares custom components and host capabilities required by this template.\n */\nexport const TemplateRequirementsSchema = z.object({\n requiredComponents: z.array(z.string()).default([]),\n requiredCapabilities: z.array(z.string()).default([]),\n});\n\nexport type TemplateRequirements = z.infer<typeof TemplateRequirementsSchema>;\n\n/**\n * Template Record Schema v1\n * Represents a reusable page template with full metadata, safe thumbnail,\n * component/capability requirements, and snapshot document / package reference.\n */\nexport const TemplateRecordSchema = z.object({\n id: z.string().min(1, 'Template ID must be a non-empty string'),\n name: z.string().min(1, 'Template name must be a non-empty string'),\n description: z.string().optional().default(''),\n category: z.string().optional().default('general'),\n tags: z.array(z.string()).optional().default([]),\n thumbnail: SafeThumbnailSchema.optional(),\n author: z.string().optional().default(''),\n version: z.string().optional().default('1.0.0'),\n document: PageDocumentSchema.optional(),\n packageReference: TemplatePackageRefSchema.optional(),\n requirements: TemplateRequirementsSchema.default({\n requiredComponents: [],\n requiredCapabilities: [],\n }),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n custom: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type TemplateRecord = z.infer<typeof TemplateRecordSchema>;\n\n/**\n * Type guard for TemplateRecord\n */\nexport function isTemplateRecord(value: unknown): value is TemplateRecord {\n return TemplateRecordSchema.safeParse(value).success;\n}\n\n/**\n * Type guard for SafeThumbnail\n */\nexport function isSafeThumbnail(value: unknown): value is SafeThumbnail {\n return SafeThumbnailSchema.safeParse(value).success;\n}\n\n","{\n \"schema\": \"stora.page\",\n \"version\": \"1.0.0\",\n \"metadata\": {\n \"title\": \"Welcome to KUBUILD\",\n \"description\": \"A starter template built with KUBUILD portable web builder\",\n \"author\": \"KUBUILD Team\",\n \"tags\": [\"landing-page\", \"starter\", \"portable\"],\n \"category\": \"landing\",\n \"version\": \"1.0.0\",\n \"createdAt\": \"2026-08-22T00:00:00.000Z\",\n \"updatedAt\": \"2026-08-22T00:00:00.000Z\"\n },\n \"document\": {\n \"id\": \"root-page\",\n \"type\": \"page\",\n \"props\": {\n \"title\": \"KUBUILD Starter Page\"\n },\n \"styles\": {\n \"base\": {\n \"backgroundColor\": \"#ffffff\",\n \"fontFamily\": \"Inter, sans-serif\",\n \"color\": \"#111827\",\n \"minHeight\": \"100vh\"\n }\n },\n \"children\": [\n {\n \"id\": \"hero-section\",\n \"type\": \"section\",\n \"props\": {},\n \"styles\": {\n \"base\": {\n \"paddingTop\": \"64px\",\n \"paddingBottom\": \"64px\",\n \"paddingLeft\": \"24px\",\n \"paddingRight\": \"24px\",\n \"backgroundColor\": \"#f8fafc\"\n }\n },\n \"children\": [\n {\n \"id\": \"hero-container\",\n \"type\": \"container\",\n \"props\": {\n \"maxWidth\": \"1200px\"\n },\n \"styles\": {\n \"base\": {\n \"margin\": \"0 auto\",\n \"display\": \"flex\",\n \"flexDirection\": \"column\",\n \"alignItems\": \"center\",\n \"textAlign\": \"center\",\n \"gap\": \"24px\"\n }\n },\n \"children\": [\n {\n \"id\": \"hero-heading\",\n \"type\": \"heading\",\n \"props\": {\n \"text\": \"Build Once, Render Anywhere\",\n \"level\": 1\n },\n \"styles\": {\n \"base\": {\n \"fontSize\": \"48px\",\n \"fontWeight\": \"800\",\n \"color\": \"#0f172a\",\n \"lineHeight\": \"1.2\"\n },\n \"mobile\": {\n \"fontSize\": \"32px\"\n }\n },\n \"children\": []\n },\n {\n \"id\": \"hero-text\",\n \"type\": \"text\",\n \"props\": {\n \"content\": \"KUBUILD is an open, portable web page builder engine designed for modern web applications.\"\n },\n \"styles\": {\n \"base\": {\n \"fontSize\": \"18px\",\n \"color\": \"#475569\",\n \"maxWidth\": \"680px\",\n \"lineHeight\": \"1.6\"\n }\n },\n \"children\": []\n },\n {\n \"id\": \"hero-image\",\n \"type\": \"image\",\n \"props\": {\n \"src\": \"https://picsum.photos/200/300\",\n \"asset\": {\n \"type\": \"asset\",\n \"assetId\": \"asset_hero_graphic\",\n \"filename\": \"hero.webp\",\n \"mimeType\": \"image/webp\"\n },\n \"alt\": \"KUBUILD Platform Graphic\",\n \"width\": 640,\n \"height\": 360\n },\n \"styles\": {\n \"base\": {\n \"borderRadius\": \"12px\",\n \"maxWidth\": \"100%\",\n \"height\": \"auto\",\n \"boxShadow\": \"0 20px 25px -5px rgba(0, 0, 0, 0.1)\"\n }\n },\n \"children\": []\n },\n {\n \"id\": \"hero-button\",\n \"type\": \"button\",\n \"props\": {\n \"label\": \"Get Started\",\n \"action\": {\n \"type\": \"navigate\",\n \"payload\": {\n \"url\": \"/docs\"\n }\n }\n },\n \"styles\": {\n \"base\": {\n \"backgroundColor\": \"#2563eb\",\n \"color\": \"#ffffff\",\n \"paddingTop\": \"12px\",\n \"paddingBottom\": \"12px\",\n \"paddingLeft\": \"28px\",\n \"paddingRight\": \"28px\",\n \"borderRadius\": \"8px\",\n \"fontWeight\": \"600\",\n \"fontSize\": \"16px\",\n \"cursor\": \"pointer\",\n \"border\": \"none\"\n }\n },\n \"children\": []\n }\n ]\n }\n ]\n }\n ]\n }\n}\n","import starterPageData from './fixtures/starter-page.json';\nimport { PageDocument } from './document';\n\nexport const starterPageFixture: PageDocument = starterPageData as unknown as PageDocument;\n","/**\n * Standard JSON Schema Draft-07 representation of stora.page Document v1\n * Aligned 1:1 with TypeScript PageDocument type definition.\n */\nexport const PAGE_DOCUMENT_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/page.json',\n title: 'StoraPageDocument',\n description: 'Portable Web Page Document v1 schema definition for KUBUILD',\n type: 'object',\n required: ['schema', 'version', 'document'],\n additionalProperties: false,\n properties: {\n schema: {\n type: 'string',\n const: 'stora.page',\n description: 'Identifies the document type format',\n },\n version: {\n type: 'string',\n pattern: '^\\\\d+(\\\\.\\\\d+)*$',\n description: 'Schema version of the document',\n default: '1.0.0',\n },\n metadata: {\n $ref: '#/definitions/documentMetadata',\n },\n document: {\n $ref: '#/definitions/rootPageNode',\n },\n },\n definitions: {\n styleValue: {\n type: ['string', 'number', 'boolean', 'null'],\n description: 'A CSS property or design token value',\n },\n styleDefinition: {\n type: 'object',\n additionalProperties: {\n $ref: '#/definitions/styleValue',\n },\n description: 'Key-value map of style properties',\n },\n responsiveStyles: {\n type: 'object',\n properties: {\n base: { $ref: '#/definitions/styleDefinition' },\n desktop: { $ref: '#/definitions/styleDefinition' },\n tablet: { $ref: '#/definitions/styleDefinition' },\n mobile: { $ref: '#/definitions/styleDefinition' },\n },\n additionalProperties: {\n $ref: '#/definitions/styleDefinition',\n },\n },\n assetReference: {\n type: 'object',\n required: ['type', 'assetId'],\n properties: {\n type: {\n type: 'string',\n const: 'asset',\n },\n assetId: {\n type: 'string',\n minLength: 1,\n },\n filename: {\n type: 'string',\n },\n mimeType: {\n type: 'string',\n },\n fallbackUrl: {\n type: 'string',\n format: 'uri',\n },\n },\n additionalProperties: false,\n },\n variableBinding: {\n type: 'object',\n required: ['type', 'key'],\n properties: {\n type: {\n type: 'string',\n const: 'variable',\n },\n key: {\n type: 'string',\n minLength: 1,\n },\n fallback: {},\n },\n additionalProperties: false,\n },\n actionBinding: {\n type: 'object',\n required: ['type'],\n properties: {\n type: {\n type: 'string',\n minLength: 1,\n },\n payload: {\n type: 'object',\n },\n },\n additionalProperties: false,\n },\n animationConfig: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n default: 'none',\n description: 'Scroll entrance animation type (e.g. fade, fade-up, zoom-in, slide-left)',\n },\n duration: {\n type: 'number',\n minimum: 0,\n default: 600,\n description: 'Animation duration in milliseconds',\n },\n delay: {\n type: 'number',\n minimum: 0,\n default: 0,\n description: 'Animation delay in milliseconds',\n },\n easing: {\n type: 'string',\n default: 'ease-out',\n description: 'CSS animation easing / transition timing function',\n },\n once: {\n type: 'boolean',\n default: true,\n description: 'Whether scroll animation plays only once when entering viewport',\n },\n hoverEffect: {\n type: 'string',\n default: 'none',\n description: 'Hover micro-interaction effect (e.g. lift, scale, glow, tilt)',\n },\n loopEffect: {\n type: 'string',\n default: 'none',\n description: 'Continuous loop animation effect (e.g. pulse, bounce, spin, float)',\n },\n },\n additionalProperties: false,\n },\n node: {\n type: 'object',\n required: ['id', 'type'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique deterministic node identifier',\n },\n type: {\n type: 'string',\n minLength: 1,\n description: 'Component type identifier',\n },\n props: {\n type: 'object',\n description: 'Component props payload and bindings',\n default: {},\n },\n styles: {\n $ref: '#/definitions/responsiveStyles',\n },\n animation: {\n $ref: '#/definitions/animationConfig',\n },\n children: {\n type: 'array',\n items: {\n $ref: '#/definitions/node',\n },\n default: [],\n },\n },\n additionalProperties: false,\n },\n rootPageNode: {\n allOf: [\n { $ref: '#/definitions/node' },\n {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n const: 'page',\n description: 'The root node type must be \"page\"',\n },\n },\n },\n ],\n },\n documentMetadata: {\n type: 'object',\n required: ['title'],\n properties: {\n title: {\n type: 'string',\n minLength: 1,\n default: 'Untitled Page',\n },\n description: {\n type: 'string',\n default: '',\n },\n author: {\n type: 'string',\n default: '',\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n },\n updatedAt: {\n type: 'string',\n format: 'date-time',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n },\n category: {\n type: 'string',\n default: 'general',\n },\n version: {\n type: 'string',\n default: '1.0.0',\n },\n custom: {\n type: 'object',\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getPageDocumentJsonSchema() {\n return PAGE_DOCUMENT_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of stora.page Package Manifest v1\n * Aligned 1:1 with TypeScript Manifest type definition.\n */\nexport const MANIFEST_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/manifest.json',\n title: 'StoraPackageManifest',\n description: 'Portable Package Manifest v1 schema definition for KUBUILD (.stora)',\n type: 'object',\n required: ['schemaVersion', 'packageVersion', 'builderCompatibility', 'requiredComponents', 'requiredCapabilities', 'assets'],\n additionalProperties: false,\n properties: {\n schema: {\n type: 'string',\n const: 'stora.page',\n description: 'Schema identifier',\n default: 'stora.page',\n },\n schemaVersion: {\n type: 'string',\n pattern: '^\\\\d+(\\\\.\\\\d+)*$',\n description: 'Document schema version',\n default: '1.0.0',\n },\n packageVersion: {\n type: 'string',\n pattern: '^\\\\d+(\\\\.\\\\d+)*$',\n description: 'Package version',\n default: '1.0.0',\n },\n builderCompatibility: {\n type: 'string',\n description: 'Minimum or range of builder versions compatible with this package',\n default: '>=0.1.0',\n },\n requiredComponents: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of custom component types required by the page',\n default: [],\n },\n requiredCapabilities: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of capabilities required by components in the page',\n default: [],\n },\n assets: {\n type: 'array',\n items: { $ref: '#/definitions/manifestAssetItem' },\n description: 'Inventory of local assets packaged within the archive',\n default: [],\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n description: 'ISO timestamp when the package was created',\n },\n },\n definitions: {\n manifestAssetItem: {\n type: 'object',\n required: ['id', 'path', 'mimeType', 'size'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique asset identifier',\n },\n path: {\n type: 'string',\n minLength: 1,\n description: 'Relative archive path to asset file (e.g. assets/hero.png)',\n },\n mimeType: {\n type: 'string',\n minLength: 1,\n description: 'MIME type of the asset',\n },\n size: {\n type: 'number',\n minimum: 0,\n description: 'Asset size in bytes',\n },\n checksum: {\n type: 'string',\n description: 'SHA-256 or algorithm-prefixed checksum (e.g. sha256:...)',\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getManifestJsonSchema() {\n return MANIFEST_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of Template Record v1\n * Aligned 1:1 with TypeScript TemplateRecord type definition.\n */\nexport const TEMPLATE_RECORD_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/template.json',\n title: 'StoraTemplateRecord',\n description: 'Reusable Page Template Record v1 schema definition for KUBUILD',\n type: 'object',\n required: ['id', 'name'],\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique template identifier',\n },\n name: {\n type: 'string',\n minLength: 1,\n description: 'Human-readable name of the template',\n },\n description: {\n type: 'string',\n default: '',\n description: 'Detailed description of the template purpose and contents',\n },\n category: {\n type: 'string',\n default: 'general',\n description: 'Template category grouping',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n description: 'Search and filter tags',\n },\n thumbnail: {\n oneOf: [\n { $ref: '#/definitions/assetReference' },\n { $ref: '#/definitions/safeThumbnailObject' },\n { type: 'string', minLength: 1 },\n ],\n description: 'Safe preview image asset reference or URL',\n },\n author: {\n type: 'string',\n default: '',\n description: 'Template creator or team',\n },\n version: {\n type: 'string',\n default: '1.0.0',\n description: 'Semantic version of the template',\n },\n document: {\n $ref: 'https://schema.stora.page/v1/page.json#',\n description: 'Embedded PageDocument snapshot (optional if packageReference provided)',\n },\n packageReference: {\n $ref: '#/definitions/templatePackageRef',\n description: 'External package/archive reference (optional if document provided)',\n },\n requirements: {\n $ref: '#/definitions/templateRequirements',\n description: 'Component and capability requirements for this template',\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n description: 'ISO creation timestamp',\n },\n updatedAt: {\n type: 'string',\n format: 'date-time',\n description: 'ISO last updated timestamp',\n },\n custom: {\n type: 'object',\n description: 'Custom host-specific serializable metadata',\n },\n },\n definitions: {\n assetReference: {\n type: 'object',\n required: ['type', 'assetId'],\n properties: {\n type: {\n type: 'string',\n const: 'asset',\n },\n assetId: {\n type: 'string',\n minLength: 1,\n },\n filename: {\n type: 'string',\n },\n mimeType: {\n type: 'string',\n },\n fallbackUrl: {\n type: 'string',\n format: 'uri',\n },\n },\n additionalProperties: false,\n },\n safeThumbnailObject: {\n type: 'object',\n required: ['url'],\n properties: {\n url: {\n type: 'string',\n minLength: 1,\n },\n alt: {\n type: 'string',\n },\n width: {\n type: 'number',\n minimum: 1,\n },\n height: {\n type: 'number',\n minimum: 1,\n },\n },\n additionalProperties: false,\n },\n templatePackageRef: {\n type: 'object',\n properties: {\n path: {\n type: 'string',\n },\n url: {\n type: 'string',\n },\n checksum: {\n type: 'string',\n },\n format: {\n type: 'string',\n enum: ['stora', 'json'],\n default: 'stora',\n },\n },\n additionalProperties: false,\n },\n templateRequirements: {\n type: 'object',\n properties: {\n requiredComponents: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n },\n requiredCapabilities: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getTemplateRecordJsonSchema() {\n return TEMPLATE_RECORD_JSON_SCHEMA_V1;\n}\n\n"],"mappings":";AAAA,SAAS,SAAS;AAEX,IAAM,cAAc;AACpB,IAAM,yBAAyB;AAM/B,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,QAAQ,OAAO;AAAA,EACvB,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,0BAA0B;AAAA,EACrD,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACzC,CAAC;AAQM,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,8BAA8B;AAAA,EACrD,UAAU,EAAE,QAAQ,EAAE,SAAS;AACjC,CAAC;AAQM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,6BAA6B;AAAA,EACrD,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACtD,CAAC;AAaD,IAAM,gCAAgC;AAE/B,IAAM,mBAAmB,EAAE,MAAM;AAAA,EACtC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,8BAA8B,KAAK,KAAK,GAAG;AAAA,IACvE,SAAS;AAAA,EACX,CAAC;AAAA,EACD,EAAE,OAAO;AAAA,EACT,EAAE,QAAQ;AAAA,EACV,EAAE,KAAK;AAAA,EACP,EAAE,UAAU;AACd,CAAC;AACM,IAAM,wBAAwB,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB;AAQnE,IAAM,0BAA0B,EAAE,OAAO,EAAE,OAAO,GAAG,qBAAqB;AAQ1E,IAAM,yBAAyB,EACnC,OAAO;AAAA,EACN,MAAM,sBAAsB,SAAS;AAAA,EACrC,SAAS,sBAAsB,SAAS;AAAA,EACxC,QAAQ,sBAAsB,SAAS;AAAA,EACvC,QAAQ,sBAAsB,SAAS;AAAA,EACvC,QAAQ,wBAAwB,SAAS;AAC3C,CAAC,EACA,YAAY,EACZ,QAAQ,CAAC,CAAC;AASN,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,MAAM,EACH,OAAO,EACP,OAAO,CAAC,UAAU,CAAC,8BAA8B,KAAK,KAAK,GAAG;AAAA,IAC7D,SAAS;AAAA,EACX,CAAC,EACA,SAAS,EACT,QAAQ,MAAM;AAAA,EACjB,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,+BAA+B,EAAE,SAAS,EAAE,QAAQ,GAAG;AAAA,EACnF,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,4BAA4B,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,EAC3E,QAAQ,EACL,OAAO,EACP,OAAO,CAAC,UAAU,CAAC,8BAA8B,KAAK,KAAK,GAAG;AAAA,IAC7D,SAAS;AAAA,EACX,CAAC,EACA,SAAS,EACT,QAAQ,UAAU;AAAA,EACrB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EACzC,aAAa,EACV,OAAO,EACP,OAAO,CAAC,UAAU,CAAC,8BAA8B,KAAK,KAAK,GAAG;AAAA,IAC7D,SAAS;AAAA,EACX,CAAC,EACA,SAAS,EACT,QAAQ,MAAM;AAAA,EACjB,YAAY,EACT,OAAO,EACP,OAAO,CAAC,UAAU,CAAC,8BAA8B,KAAK,KAAK,GAAG;AAAA,IAC7D,SAAS;AAAA,EACX,CAAC,EACA,SAAS,EACT,QAAQ,MAAM;AACnB,CAAC;AAIM,IAAM,2BAA4C;AAAA,EACvD,MAAM;AAAA,EACN,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA,EACb,YAAY;AACd;AAmBO,IAAM,aAA8B,EAAE;AAAA,EAAK,MAChD,EAAE,OAAO;AAAA,IACP,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,oCAAoC;AAAA,IAC1D,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,sCAAsC;AAAA,IAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC9D,QAAQ,uBAAuB,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,IACpD,WAAW,sBAAsB,SAAS;AAAA,IAC1C,UAAU,EAAE,MAAM,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EACrD,CAAC;AACH;AAQO,IAAM,qBAA8C,WAAW;AAAA,EACpE,CAAC,SAA+B,KAAK,SAAS;AAAA,EAC9C;AAAA,IACE,SAAS;AAAA,IACT,MAAM,CAAC,MAAM;AAAA,EACf;AACF;AAOO,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB,EAAE,QAAQ,eAAe;AAAA,EACrE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,EAC7C,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,EACxC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC/C,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,EACjD,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,OAAO;AAAA,EAC9C,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACrD,CAAC;AAYM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,QAAQ,EAAE,QAAQ,WAAW;AAAA,EAC7B,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,4BAA4B,EAAE,QAAQ,sBAAsB;AAAA,EACvF,UAAU,uBAAuB,SAAS;AAAA,EAC1C,UAAU;AACZ,CAAC;AASM,SAAS,iBAAiB,OAAyC;AACxE,SAAO,qBAAqB,UAAU,KAAK,EAAE;AAC/C;AAEO,SAAS,kBAAkB,OAA0C;AAC1E,SAAO,sBAAsB,UAAU,KAAK,EAAE;AAChD;AAEO,SAAS,gBAAgB,OAAwC;AACtE,SAAO,oBAAoB,UAAU,KAAK,EAAE;AAC9C;AAEO,SAAS,kBAAkB,OAA0C;AAC1E,SAAO,sBAAsB,UAAU,KAAK,EAAE;AAChD;AAMO,SAAS,4BAA4B,QAAgB,YAAqC;AAC/F,QAAM,cAAc,OAAO,YAAY,EAAE,QAAQ,gBAAgB,GAAG;AACpE,SAAO,GAAG,WAAW,IAAI,UAAU;AACrC;AAKO,SAAS,eAAe,MAAsB;AACnD,QAAM,MAAgB,CAAC,KAAK,EAAE;AAC9B,MAAI,KAAK,YAAY,MAAM,QAAQ,KAAK,QAAQ,GAAG;AACjD,eAAW,SAAS,KAAK,UAAU;AACjC,UAAI,KAAK,GAAG,eAAe,KAAK,CAAC;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;AAKO,SAAS,yBAAyB,MAAwD;AAC/F,QAAM,SAAS,eAAe,IAAI;AAClC,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,aAAa,oBAAI,IAAY;AAEnC,aAAW,MAAM,QAAQ;AACvB,QAAI,KAAK,IAAI,EAAE,GAAG;AAChB,iBAAW,IAAI,EAAE;AAAA,IACnB,OAAO;AACL,WAAK,IAAI,EAAE;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,WAAW,SAAS;AAAA,IAC3B,cAAc,MAAM,KAAK,UAAU;AAAA,EACrC;AACF;;;AC3RA,SAAS,KAAAA,UAAS;AAGX,IAAM,0BAA0BC,GAAE,OAAO;AAAA,EAC9C,IAAIA,GAAE,OAAO,EAAE,IAAI,GAAG,0BAA0B;AAAA,EAChD,MAAMA,GAAE,OAAO,EAAE,IAAI,GAAG,oCAAoC;AAAA,EAC5D,UAAUA,GAAE,OAAO,EAAE,IAAI,GAAG,2BAA2B;AAAA,EACvD,MAAMA,GAAE,OAAO,EAAE,YAAY,iCAAiC;AAAA,EAC9D,UAAUA,GAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAIM,IAAM,iBAAiBA,GAAE,OAAO;AAAA,EACrC,QAAQA,GAAE,QAAQ,WAAW,EAAE,QAAQ,WAAW;AAAA,EAClD,eAAeA,GAAE,OAAO,EAAE,IAAI,GAAG,gCAAgC,EAAE,QAAQ,OAAO;AAAA,EAClF,gBAAgBA,GAAE,OAAO,EAAE,IAAI,GAAG,iCAAiC,EAAE,QAAQ,OAAO;AAAA,EACpF,sBAAsBA,GAAE,OAAO,EAAE,QAAQ,SAAS;AAAA,EAClD,oBAAoBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAClD,sBAAsBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACpD,QAAQA,GAAE,MAAM,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AAAA,EACnD,WAAWA,GAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAIM,SAAS,WAAW,OAAmC;AAC5D,SAAO,eAAe,UAAU,KAAK,EAAE;AACzC;;;AC5BA,SAAS,KAAAC,UAAS;AAQlB,IAAM,wBAAwB;AAKvB,SAAS,mBAAmB,KAAsB;AACvD,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,QAAQ,WAAW,EAAG,QAAO;AACjC,MAAI,sBAAsB,KAAK,OAAO,EAAG,QAAO;AAChD,SAAO;AACT;AAKO,IAAM,yBAAyBC,GAAE,OAAO,EAAE,IAAI,GAAG,+BAA+B,EAAE;AAAA,EACvF,CAAC,QAAQ,mBAAmB,GAAG;AAAA,EAC/B,EAAE,SAAS,uDAAuD;AACpE;AAKO,IAAM,4BAA4BA,GAAE,OAAO;AAAA,EAChD,KAAK;AAAA,EACL,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACzC,CAAC;AAOM,IAAM,sBAAsBA,GAAE,MAAM;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAQM,IAAM,2BAA2BA,GAAE,OAAO;AAAA,EAC/C,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,KAAK,uBAAuB,SAAS;AAAA,EACrC,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQA,GAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAQ,OAAO;AACnD,CAAC;AAQM,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EACjD,oBAAoBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAClD,sBAAsBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AASM,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EAC3C,IAAIA,GAAE,OAAO,EAAE,IAAI,GAAG,wCAAwC;AAAA,EAC9D,MAAMA,GAAE,OAAO,EAAE,IAAI,GAAG,0CAA0C;AAAA,EAClE,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,EAC7C,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,EACjD,MAAMA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC/C,WAAW,oBAAoB,SAAS;AAAA,EACxC,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,EACxC,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,OAAO;AAAA,EAC9C,UAAU,mBAAmB,SAAS;AAAA,EACtC,kBAAkB,yBAAyB,SAAS;AAAA,EACpD,cAAc,2BAA2B,QAAQ;AAAA,IAC/C,oBAAoB,CAAC;AAAA,IACrB,sBAAsB,CAAC;AAAA,EACzB,CAAC;AAAA,EACD,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,QAAQA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAAE,SAAS;AACrD,CAAC;AAOM,SAAS,iBAAiB,OAAyC;AACxE,SAAO,qBAAqB,UAAU,KAAK,EAAE;AAC/C;AAKO,SAAS,gBAAgB,OAAwC;AACtE,SAAO,oBAAoB,UAAU,KAAK,EAAE;AAC9C;;;ACnHA;AAAA,EACE,QAAU;AAAA,EACV,SAAW;AAAA,EACX,UAAY;AAAA,IACV,OAAS;AAAA,IACT,aAAe;AAAA,IACf,QAAU;AAAA,IACV,MAAQ,CAAC,gBAAgB,WAAW,UAAU;AAAA,IAC9C,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,IACb,WAAa;AAAA,EACf;AAAA,EACA,UAAY;AAAA,IACV,IAAM;AAAA,IACN,MAAQ;AAAA,IACR,OAAS;AAAA,MACP,OAAS;AAAA,IACX;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,QACN,iBAAmB;AAAA,QACnB,YAAc;AAAA,QACd,OAAS;AAAA,QACT,WAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV;AAAA,QACE,IAAM;AAAA,QACN,MAAQ;AAAA,QACR,OAAS,CAAC;AAAA,QACV,QAAU;AAAA,UACR,MAAQ;AAAA,YACN,YAAc;AAAA,YACd,eAAiB;AAAA,YACjB,aAAe;AAAA,YACf,cAAgB;AAAA,YAChB,iBAAmB;AAAA,UACrB;AAAA,QACF;AAAA,QACA,UAAY;AAAA,UACV;AAAA,YACE,IAAM;AAAA,YACN,MAAQ;AAAA,YACR,OAAS;AAAA,cACP,UAAY;AAAA,YACd;AAAA,YACA,QAAU;AAAA,cACR,MAAQ;AAAA,gBACN,QAAU;AAAA,gBACV,SAAW;AAAA,gBACX,eAAiB;AAAA,gBACjB,YAAc;AAAA,gBACd,WAAa;AAAA,gBACb,KAAO;AAAA,cACT;AAAA,YACF;AAAA,YACA,UAAY;AAAA,cACV;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP,MAAQ;AAAA,kBACR,OAAS;AAAA,gBACX;AAAA,gBACA,QAAU;AAAA,kBACR,MAAQ;AAAA,oBACN,UAAY;AAAA,oBACZ,YAAc;AAAA,oBACd,OAAS;AAAA,oBACT,YAAc;AAAA,kBAChB;AAAA,kBACA,QAAU;AAAA,oBACR,UAAY;AAAA,kBACd;AAAA,gBACF;AAAA,gBACA,UAAY,CAAC;AAAA,cACf;AAAA,cACA;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP,SAAW;AAAA,gBACb;AAAA,gBACA,QAAU;AAAA,kBACR,MAAQ;AAAA,oBACN,UAAY;AAAA,oBACZ,OAAS;AAAA,oBACT,UAAY;AAAA,oBACZ,YAAc;AAAA,kBAChB;AAAA,gBACF;AAAA,gBACA,UAAY,CAAC;AAAA,cACf;AAAA,cACA;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP,KAAO;AAAA,kBACP,OAAS;AAAA,oBACP,MAAQ;AAAA,oBACR,SAAW;AAAA,oBACX,UAAY;AAAA,oBACZ,UAAY;AAAA,kBACd;AAAA,kBACA,KAAO;AAAA,kBACP,OAAS;AAAA,kBACT,QAAU;AAAA,gBACZ;AAAA,gBACA,QAAU;AAAA,kBACR,MAAQ;AAAA,oBACN,cAAgB;AAAA,oBAChB,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,WAAa;AAAA,kBACf;AAAA,gBACF;AAAA,gBACA,UAAY,CAAC;AAAA,cACf;AAAA,cACA;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP,OAAS;AAAA,kBACT,QAAU;AAAA,oBACR,MAAQ;AAAA,oBACR,SAAW;AAAA,sBACT,KAAO;AAAA,oBACT;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,QAAU;AAAA,kBACR,MAAQ;AAAA,oBACN,iBAAmB;AAAA,oBACnB,OAAS;AAAA,oBACT,YAAc;AAAA,oBACd,eAAiB;AAAA,oBACjB,aAAe;AAAA,oBACf,cAAgB;AAAA,oBAChB,cAAgB;AAAA,oBAChB,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,QAAU;AAAA,kBACZ;AAAA,gBACF;AAAA,gBACA,UAAY,CAAC;AAAA,cACf;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACxJO,IAAM,qBAAmC;;;ACCzC,IAAM,+BAA+B;AAAA,EAC1C,SAAS;AAAA,EACT,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU,CAAC,UAAU,WAAW,UAAU;AAAA,EAC1C,sBAAsB;AAAA,EACtB,YAAY;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,YAAY;AAAA,MACV,MAAM,CAAC,UAAU,UAAU,WAAW,MAAM;AAAA,MAC5C,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,sBAAsB;AAAA,QACpB,MAAM;AAAA,MACR;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,YAAY;AAAA,QACV,MAAM,EAAE,MAAM,gCAAgC;AAAA,QAC9C,SAAS,EAAE,MAAM,gCAAgC;AAAA,QACjD,QAAQ,EAAE,MAAM,gCAAgC;AAAA,QAChD,QAAQ,EAAE,MAAM,gCAAgC;AAAA,MAClD;AAAA,MACA,sBAAsB;AAAA,QACpB,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,UAAU,CAAC,QAAQ,SAAS;AAAA,MAC5B,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,QACb;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,UAAU,CAAC,QAAQ,KAAK;AAAA,MACxB,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,QACA,KAAK;AAAA,UACH,MAAM;AAAA,UACN,WAAW;AAAA,QACb;AAAA,QACA,UAAU,CAAC;AAAA,MACb;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,UAAU,CAAC,MAAM;AAAA,MACjB,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,WAAW;AAAA,QACb;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,YAAY;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU,CAAC,MAAM,MAAM;AAAA,MACvB,YAAY;AAAA,QACV,IAAI;AAAA,UACF,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,QACf;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,QACf;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS,CAAC;AAAA,QACZ;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,WAAW;AAAA,UACT,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,UACA,SAAS,CAAC;AAAA,QACZ;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,cAAc;AAAA,MACZ,OAAO;AAAA,QACL,EAAE,MAAM,qBAAqB;AAAA,QAC7B;AAAA,UACE,MAAM;AAAA,UACN,YAAY;AAAA,YACV,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU,CAAC,OAAO;AAAA,MAClB,YAAY;AAAA,QACV,OAAO;AAAA,UACL,MAAM;AAAA,UACN,WAAW;AAAA,UACX,SAAS;AAAA,QACX;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,WAAW;AAAA,UACT,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,QACA,WAAW;AAAA,UACT,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,SAAS;AAAA,UACxB,SAAS,CAAC;AAAA,QACZ;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF;AAEO,SAAS,4BAA4B;AAC1C,SAAO;AACT;AAMO,IAAM,0BAA0B;AAAA,EACrC,SAAS;AAAA,EACT,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU,CAAC,iBAAiB,kBAAkB,wBAAwB,sBAAsB,wBAAwB,QAAQ;AAAA,EAC5H,sBAAsB;AAAA,EACtB,YAAY;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,aAAa;AAAA,MACb,SAAS,CAAC;AAAA,IACZ;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,aAAa;AAAA,MACb,SAAS,CAAC;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,kCAAkC;AAAA,MACjD,aAAa;AAAA,MACb,SAAS,CAAC;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,UAAU,CAAC,MAAM,QAAQ,YAAY,MAAM;AAAA,MAC3C,YAAY;AAAA,QACV,IAAI;AAAA,UACF,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,QACf;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,QACf;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF;AAEO,SAAS,wBAAwB;AACtC,SAAO;AACT;AAMO,IAAM,iCAAiC;AAAA,EAC5C,SAAS;AAAA,EACT,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU,CAAC,MAAM,MAAM;AAAA,EACvB,sBAAsB;AAAA,EACtB,YAAY;AAAA,IACV,IAAI;AAAA,MACF,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,SAAS,CAAC;AAAA,MACV,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACT,OAAO;AAAA,QACL,EAAE,MAAM,+BAA+B;AAAA,QACvC,EAAE,MAAM,oCAAoC;AAAA,QAC5C,EAAE,MAAM,UAAU,WAAW,EAAE;AAAA,MACjC;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,UAAU,CAAC,QAAQ,SAAS;AAAA,MAC5B,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,QACb;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,UAAU,CAAC,KAAK;AAAA,MAChB,YAAY;AAAA,QACV,KAAK;AAAA,UACH,MAAM;AAAA,UACN,WAAW;AAAA,QACb;AAAA,QACA,KAAK;AAAA,UACH,MAAM;AAAA,QACR;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,QACR;AAAA,QACA,KAAK;AAAA,UACH,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,MAAM,CAAC,SAAS,MAAM;AAAA,UACtB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,YAAY;AAAA,QACV,oBAAoB;AAAA,UAClB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,SAAS;AAAA,UACxB,SAAS,CAAC;AAAA,QACZ;AAAA,QACA,sBAAsB;AAAA,UACpB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,SAAS;AAAA,UACxB,SAAS,CAAC;AAAA,QACZ;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF;AAEO,SAAS,8BAA8B;AAC5C,SAAO;AACT;","names":["z","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/document.ts","../src/actions.ts","../src/form.ts","../src/manifest.ts","../src/template.ts","../src/fixtures/starter-page.json","../src/fixtures.ts","../src/json-schema.ts"],"sourcesContent":["import { z } from 'zod';\nimport { ActionPipeline, ActionPipelineSchema } from './actions';\nimport { FormConfig, FormConfigSchema } from './form';\n\nexport const SCHEMA_NAME = 'stora.page' as const;\nexport const CURRENT_SCHEMA_VERSION = '1.0.0' as const;\n\n/**\n * Asset Reference Schema\n * Represents a reference to an asset stored either locally within the .stora package or hosted externally.\n */\nexport const AssetReferenceSchema = z.object({\n type: z.literal('asset'),\n assetId: z.string().min(1, 'Asset ID cannot be empty'),\n filename: z.string().optional(),\n mimeType: z.string().optional(),\n fallbackUrl: z.string().url().optional(),\n});\n\nexport type AssetReference = z.infer<typeof AssetReferenceSchema>;\n\n/**\n * Variable Binding Schema\n * Represents a dynamic runtime variable replacement (e.g. {{ site.name }}).\n */\nexport const VariableBindingSchema = z.object({\n type: z.literal('variable'),\n key: z.string().min(1, 'Variable key cannot be empty'),\n fallback: z.unknown().optional(),\n});\n\nexport type VariableBinding = z.infer<typeof VariableBindingSchema>;\n\n/**\n * Action Binding Schema\n * Represents an interactive action triggerable by UI components (e.g. navigation, modal, custom event).\n */\nexport const ActionBindingSchema = z.object({\n type: z.string().min(1, 'Action type cannot be empty'),\n payload: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type ActionBinding = z.infer<typeof ActionBindingSchema>;\n\n/**\n * Style Definition Schema\n * Key-value mapping of CSS properties or design tokens.\n *\n * Values are restricted to safe, serializable primitives (string, number,\n * boolean, null) — no functions, objects, or arrays — and string values are\n * screened against known CSS/HTML injection vectors (e.g. `url(javascript:...)`,\n * legacy IE `expression()`, `@import`, embedded `<script>` tags).\n */\nconst DANGEROUS_STYLE_VALUE_PATTERN = /javascript:|expression\\(|@import|<script|vbscript:|data:text\\/html/i;\n\nexport const StyleValueSchema = z.union([\n z.string().refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Style value contains a disallowed or unsafe pattern',\n }),\n z.number(),\n z.boolean(),\n z.null(),\n z.undefined(),\n]);\nexport const StyleDefinitionSchema = z.record(z.string(), StyleValueSchema);\nexport type StyleDefinition = Record<string, string | number | boolean | null | undefined>;\n\n/**\n * Pseudo-state style definitions keyed by CSS pseudo-class selector\n * (e.g. `:hover`, `:focus`, `:active`). Each entry is a style layer applied\n * on top of the resolved breakpoint styles when the state is active.\n */\nexport const PseudoStateStylesSchema = z.record(z.string(), StyleDefinitionSchema);\nexport type PseudoStateStyles = Record<string, StyleDefinition>;\n\n/**\n * Responsive Styles Schema\n * Breakpoint-specific style definitions: base (all viewports), desktop, tablet, and mobile.\n * Optionally carries `states` — pseudo-class style layers (e.g. `:hover`).\n */\nexport const ResponsiveStylesSchema = z\n .object({\n base: StyleDefinitionSchema.optional(),\n desktop: StyleDefinitionSchema.optional(),\n tablet: StyleDefinitionSchema.optional(),\n mobile: StyleDefinitionSchema.optional(),\n states: PseudoStateStylesSchema.optional(),\n })\n .passthrough()\n .default({});\n\nexport type ResponsiveStyles = z.infer<typeof ResponsiveStylesSchema>;\n\n/**\n * Animation Configuration Schema\n * Defines scroll entrance animations (AOS), duration, delay, easing curve,\n * trigger behavior (once), hover micro-interactions, and continuous loop effects.\n */\nexport const AnimationConfigSchema = z.object({\n type: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Animation type contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('none'),\n duration: z.number().min(0, 'Duration must be non-negative').optional().default(600),\n delay: z.number().min(0, 'Delay must be non-negative').optional().default(0),\n easing: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Animation easing contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('ease-out'),\n once: z.boolean().optional().default(true),\n hoverEffect: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Hover effect contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('none'),\n loopEffect: z\n .string()\n .refine((value) => !DANGEROUS_STYLE_VALUE_PATTERN.test(value), {\n message: 'Loop effect contains a disallowed or unsafe pattern',\n })\n .optional()\n .default('none'),\n});\n\nexport type AnimationConfig = z.infer<typeof AnimationConfigSchema>;\n\nexport const DEFAULT_ANIMATION_CONFIG: AnimationConfig = {\n type: 'none',\n duration: 600,\n delay: 0,\n easing: 'ease-out',\n once: true,\n hoverEffect: 'none',\n loopEffect: 'none',\n};\n\n/**\n * Recursive Node Type Definition\n */\nexport type Node = {\n id: string;\n type: string;\n props?: Record<string, unknown>;\n styles?: ResponsiveStyles;\n animation?: AnimationConfig;\n actions?: ActionPipeline[];\n formConfig?: FormConfig;\n children?: Node[];\n};\n\n/**\n * Recursive Node Schema\n * Represents any element/node in the document tree.\n * Node IDs are deterministic, independent of React keys, and unique across the document.\n */\nexport const NodeSchema: z.ZodType<Node> = z.lazy(() =>\n z.object({\n id: z.string().min(1, 'Node ID must be a non-empty string'),\n type: z.string().min(1, 'Node type must be a non-empty string'),\n props: z.record(z.string(), z.unknown()).optional().default({}),\n styles: ResponsiveStylesSchema.optional().default({}),\n animation: AnimationConfigSchema.optional(),\n actions: z.array(ActionPipelineSchema).optional(),\n formConfig: FormConfigSchema.optional(),\n children: z.array(NodeSchema).optional().default([]),\n }),\n);\n\nexport type RootPageNode = Node & { type: 'page' };\n\n/**\n * Root Page Node Schema\n * The root node of a PageDocument must be of type 'page'.\n */\nexport const RootPageNodeSchema: z.ZodType<RootPageNode> = NodeSchema.refine(\n (node): node is RootPageNode => node.type === 'page',\n {\n message: 'Root node must have type \"page\"',\n path: ['type'],\n },\n);\n\n\n/**\n * Document Metadata Schema\n * Pure serializable metadata for the document.\n */\nexport const DocumentMetadataSchema = z.object({\n title: z.string().min(1, 'Title is required').default('Untitled Page'),\n description: z.string().optional().default(''),\n author: z.string().optional().default(''),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n tags: z.array(z.string()).optional().default([]),\n category: z.string().optional().default('general'),\n version: z.string().optional().default('1.0.0'),\n custom: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type DocumentMetadata = z.infer<typeof DocumentMetadataSchema>;\n\n/**\n * Page Document Schema v1\n * Root portable document structure:\n * - schema: strictly \"stora.page\"\n * - version: schema version string (e.g. \"1.0.0\")\n * - metadata: serializable metadata\n * - document: root page node\n */\nexport const PageDocumentSchema = z.object({\n schema: z.literal(SCHEMA_NAME),\n version: z.string().min(1, 'Schema version is required').default(CURRENT_SCHEMA_VERSION),\n metadata: DocumentMetadataSchema.optional(),\n document: RootPageNodeSchema,\n});\n\nexport type PageDocument = z.infer<typeof PageDocumentSchema>;\n\n\n\n/**\n * Type guards\n */\nexport function isAssetReference(value: unknown): value is AssetReference {\n return AssetReferenceSchema.safeParse(value).success;\n}\n\nexport function isVariableBinding(value: unknown): value is VariableBinding {\n return VariableBindingSchema.safeParse(value).success;\n}\n\nexport function isActionBinding(value: unknown): value is ActionBinding {\n return ActionBindingSchema.safeParse(value).success;\n}\n\nexport function isAnimationConfig(value: unknown): value is AnimationConfig {\n return AnimationConfigSchema.safeParse(value).success;\n}\n\n/**\n * Deterministic Node ID Generator\n * Generates predictable IDs based on prefix and an index/identifier (not bound to React keys).\n */\nexport function generateDeterministicNodeId(prefix: string, indexOrKey: number | string): string {\n const cleanPrefix = prefix.toLowerCase().replace(/[^a-z0-9_-]/g, '-');\n return `${cleanPrefix}_${indexOrKey}`;\n}\n\n/**\n * Collect all Node IDs in a node tree\n */\nexport function collectNodeIds(node: Node): string[] {\n const ids: string[] = [node.id];\n if (node.children && Array.isArray(node.children)) {\n for (const child of node.children) {\n ids.push(...collectNodeIds(child));\n }\n }\n return ids;\n}\n\n/**\n * Validate Node ID uniqueness across a node tree or document\n */\nexport function validateNodeIdUniqueness(node: Node): { valid: boolean; duplicateIds: string[] } {\n const allIds = collectNodeIds(node);\n const seen = new Set<string>();\n const duplicates = new Set<string>();\n\n for (const id of allIds) {\n if (seen.has(id)) {\n duplicates.add(id);\n } else {\n seen.add(id);\n }\n }\n\n return {\n valid: duplicates.size === 0,\n duplicateIds: Array.from(duplicates),\n };\n}\n","import { z } from 'zod';\n\n/**\n * Action Trigger Types\n * Events in the DOM or component lifecycle that can trigger an action pipeline.\n */\nexport const ActionTriggerTypeSchema = z.enum([\n 'click',\n 'submit',\n 'change',\n 'blur',\n 'focus',\n 'load',\n]);\n\nexport type ActionTriggerType = z.infer<typeof ActionTriggerTypeSchema>;\nexport type ActionTrigger = ActionTriggerType;\nexport const ActionTriggerSchema = ActionTriggerTypeSchema;\n\n/**\n * Action Step Types\n * Discrete operations executed sequentially or conditionally within an action pipeline.\n */\nexport const ActionStepTypeSchema = z.enum([\n 'api_request',\n 'navigate',\n 'set_state',\n 'reset_form',\n 'show_toast',\n 'open_modal',\n 'close_modal',\n 'copy_clipboard',\n 'custom_event',\n]);\n\nexport type ActionStepType = z.infer<typeof ActionStepTypeSchema>;\n\n/**\n * Condition Operators for branch & conditional step execution.\n */\nexport const ConditionOperatorSchema = z.enum([\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'is_truthy',\n 'is_falsy',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'regex',\n]);\n\nexport type ConditionOperator = z.infer<typeof ConditionOperatorSchema>;\n\n/**\n * Action Step Condition Schema\n * Evaluated before running a step. If condition fails, step is skipped.\n */\nexport const ActionStepConditionSchema = z.object({\n field: z.string().min(1, 'Condition field cannot be empty'),\n operator: ConditionOperatorSchema,\n value: z.unknown().optional(),\n});\n\nexport type ActionStepCondition = z.infer<typeof ActionStepConditionSchema>;\n\n/**\n * Security: Pattern matching dangerous URL protocols and script injection vectors.\n */\nconst DANGEROUS_URL_PATTERN = /(javascript:|vbscript:|data:text\\/html)/i;\nconst DANGEROUS_SCRIPT_PATTERN = /<\\s*script/i;\n\nexport function isSafeActionUrl(url: string): boolean {\n if (!url || typeof url !== 'string') return false;\n const trimmed = url.trim();\n if (DANGEROUS_URL_PATTERN.test(trimmed)) return false;\n if (DANGEROUS_SCRIPT_PATTERN.test(trimmed)) return false;\n return true;\n}\n\nconst SafeUrlStringSchema = z\n .string()\n .min(1, 'URL cannot be empty')\n .refine(isSafeActionUrl, {\n message: 'URL contains disallowed or unsafe protocol/script pattern',\n });\n\n/**\n * Safe identifier for custom events (alphanumeric, dashes, colons, underscores).\n */\nconst SafeEventNameSchema = z\n .string()\n .min(1, 'Event name cannot be empty')\n .regex(/^[a-zA-Z0-9_\\-:]+$/, {\n message: 'Event name must contain only alphanumeric characters, dashes, colons, or underscores',\n });\n\n/**\n * 1. API Request Step Payload Schema\n */\nexport const ApiRequestStepPayloadSchema = z.object({\n url: SafeUrlStringSchema,\n method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS']).default('GET'),\n headers: z.record(z.string(), z.string()).optional(),\n queryParams: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),\n body: z.union([z.string(), z.record(z.string(), z.unknown()), z.array(z.unknown())]).optional(),\n bodyFormat: z.enum(['json', 'form-data', 'formData', 'urlencoded', 'url-encoded', 'raw', 'text']).optional(),\n bodyType: z.enum(['json', 'form-data', 'formData', 'urlencoded', 'url-encoded', 'raw', 'text']).optional(),\n timeout: z.number().positive('Timeout must be greater than 0 ms').optional(),\n responseMapping: z.record(z.string(), z.string()).optional(),\n});\n\nexport type ApiRequestStepPayload = z.infer<typeof ApiRequestStepPayloadSchema>;\n\n/**\n * 2. Navigate Step Payload Schema\n */\nexport const NavigateStepPayloadSchema = z.object({\n url: SafeUrlStringSchema,\n target: z.enum(['_self', '_blank', '_parent', '_top']).optional().default('_self'),\n replace: z.boolean().optional(),\n scroll: z.boolean().optional(),\n behavior: z.enum(['smooth', 'auto']).optional(),\n});\n\nexport type NavigateStepPayload = z.infer<typeof NavigateStepPayloadSchema>;\n\n/**\n * 3. Set State Step Payload Schema\n */\nexport const SetStateStepPayloadSchema = z.object({\n key: z.string().min(1, 'State key cannot be empty'),\n value: z.unknown(),\n scope: z.enum(['runtime', 'document', 'session', 'local']).optional().default('runtime'),\n});\n\nexport type SetStateStepPayload = z.infer<typeof SetStateStepPayloadSchema>;\n\n/**\n * 4. Reset Form Step Payload Schema\n */\nexport const ResetFormStepPayloadSchema = z.object({\n formId: z.string().optional(),\n});\n\nexport type ResetFormStepPayload = z.infer<typeof ResetFormStepPayloadSchema>;\n\n/**\n * 5. Show Toast Step Payload Schema\n */\nexport const ShowToastStepPayloadSchema = z.object({\n message: z.string().min(1, 'Toast message cannot be empty'),\n type: z.enum(['success', 'error', 'warning', 'info']).optional().default('info'),\n variant: z.enum(['success', 'error', 'warning', 'info']).optional(),\n title: z.string().optional(),\n duration: z.number().nonnegative('Duration must be >= 0 ms').optional(),\n position: z\n .enum(['top-right', 'top-left', 'bottom-right', 'bottom-left', 'top-center', 'bottom-center'])\n .optional(),\n});\n\nexport type ShowToastStepPayload = z.infer<typeof ShowToastStepPayloadSchema>;\n\n/**\n * 6. Open Modal Step Payload Schema\n */\nexport const OpenModalStepPayloadSchema = z\n .object({\n modalId: z.string().optional(),\n modalNodeId: z.string().optional(),\n })\n .refine((data) => Boolean(data.modalId || data.modalNodeId), {\n message: 'Modal ID or Modal Node ID cannot be empty',\n });\n\nexport type OpenModalStepPayload = z.infer<typeof OpenModalStepPayloadSchema>;\n\n/**\n * 7. Close Modal Step Payload Schema\n */\nexport const CloseModalStepPayloadSchema = z.object({\n modalId: z.string().optional(),\n modalNodeId: z.string().optional(),\n});\n\nexport type CloseModalStepPayload = z.infer<typeof CloseModalStepPayloadSchema>;\n\n/**\n * 8. Copy Clipboard Step Payload Schema\n */\nexport const CopyClipboardStepPayloadSchema = z.object({\n text: z.string().optional(),\n value: z.unknown().optional(),\n notify: z.boolean().optional(),\n toastMessage: z.string().optional(),\n});\n\nexport type CopyClipboardStepPayload = z.infer<typeof CopyClipboardStepPayloadSchema>;\n\n/**\n * 9. Custom Event Step Payload Schema\n */\nexport const CustomEventStepPayloadSchema = z.object({\n eventName: SafeEventNameSchema,\n detail: z.record(z.string(), z.unknown()).optional(),\n bubbles: z.boolean().optional().default(true),\n cancelable: z.boolean().optional().default(true),\n});\n\nexport type CustomEventStepPayload = z.infer<typeof CustomEventStepPayloadSchema>;\n\n/**\n * Dictionary of Step Payload Schemas by Step Type\n */\nexport const StepPayloadSchemas = {\n api_request: ApiRequestStepPayloadSchema,\n navigate: NavigateStepPayloadSchema,\n set_state: SetStateStepPayloadSchema,\n reset_form: ResetFormStepPayloadSchema,\n show_toast: ShowToastStepPayloadSchema,\n open_modal: OpenModalStepPayloadSchema,\n close_modal: CloseModalStepPayloadSchema,\n copy_clipboard: CopyClipboardStepPayloadSchema,\n custom_event: CustomEventStepPayloadSchema,\n} as const;\n\n/**\n * Action Step Interface\n * Recursive definition allowing branching (onSuccess, onError).\n */\nexport interface ActionStep {\n id: string;\n type: ActionStepType;\n label?: string;\n payload?: Record<string, unknown>;\n condition?: ActionStepCondition;\n timeout?: number;\n continueOnError?: boolean;\n onSuccess?: ActionStep[];\n onError?: ActionStep[];\n}\n\n/**\n * Action Step Schema\n * Validates individual steps in an action pipeline, supporting recursive branching.\n */\nexport const ActionStepSchema: z.ZodType<ActionStep> = z.lazy(() =>\n z.object({\n id: z.string().min(1, 'Step ID cannot be empty'),\n type: ActionStepTypeSchema,\n label: z.string().optional(),\n payload: z.record(z.string(), z.unknown()).optional().default({}),\n condition: ActionStepConditionSchema.optional(),\n timeout: z.number().positive().optional(),\n continueOnError: z.boolean().optional(),\n onSuccess: z.array(ActionStepSchema).optional(),\n onError: z.array(ActionStepSchema).optional(),\n })\n);\n\n/**\n * Action Pipeline Schema\n * Defines an event trigger and an ordered sequence of action steps to execute.\n */\nexport const ActionPipelineSchema = z.object({\n id: z.string().min(1, 'Pipeline ID cannot be empty'),\n trigger: ActionTriggerTypeSchema,\n label: z.string().optional(),\n debounceMs: z.number().nonnegative('Debounce ms must be >= 0').optional(),\n preventDuplicate: z.boolean().optional(),\n enabled: z.boolean().optional().default(true),\n steps: z.array(ActionStepSchema).min(1, 'Action pipeline must contain at least one step'),\n});\n\nexport type ActionPipeline = z.infer<typeof ActionPipelineSchema>;\n\n/**\n * Type Guards\n */\nexport function isActionTriggerType(value: unknown): value is ActionTriggerType {\n return ActionTriggerTypeSchema.safeParse(value).success;\n}\n\nexport function isActionStepType(value: unknown): value is ActionStepType {\n return ActionStepTypeSchema.safeParse(value).success;\n}\n\nexport function isConditionOperator(value: unknown): value is ConditionOperator {\n return ConditionOperatorSchema.safeParse(value).success;\n}\n\nexport function isActionStepCondition(value: unknown): value is ActionStepCondition {\n return ActionStepConditionSchema.safeParse(value).success;\n}\n\nexport function isActionStep(value: unknown): value is ActionStep {\n return ActionStepSchema.safeParse(value).success;\n}\n\nexport function isActionPipeline(value: unknown): value is ActionPipeline {\n return ActionPipelineSchema.safeParse(value).success;\n}\n\n/**\n * Validates a step's payload specifically according to its step type.\n */\nexport function validateActionStepPayload(\n type: ActionStepType,\n payload: unknown\n): { success: boolean; data?: unknown; error?: z.ZodError } {\n const schema = StepPayloadSchemas[type];\n if (!schema) {\n return {\n success: false,\n error: new z.ZodError([\n {\n code: z.ZodIssueCode.custom,\n message: `Unknown step type: ${type}`,\n path: ['type'],\n },\n ]),\n };\n }\n const result = schema.safeParse(payload);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n}\n\n/**\n * Sanitization Utilities\n */\n\n/**\n * Sanitizes a URL string by checking if it contains dangerous protocols or scripts.\n * Returns the trimmed URL if safe, or a fallback string (default empty string `\"\"`).\n */\nexport function sanitizeActionUrl(url: unknown, fallback: string = ''): string {\n if (typeof url !== 'string') return fallback;\n const trimmed = url.trim();\n if (!isSafeActionUrl(trimmed)) {\n return fallback;\n }\n return trimmed;\n}\n\n/**\n * Sanitizes a general string value against script tags and dangerous HTML/protocols.\n */\nexport function sanitizeActionString(value: unknown, fallback: string = ''): string {\n if (typeof value !== 'string') return fallback;\n if (DANGEROUS_SCRIPT_PATTERN.test(value)) {\n return value.replace(/<\\s*script[^>]*>[\\s\\S]*?<\\s*\\/\\s*script\\s*>/gi, '').replace(/<\\s*script[^>]*>/gi, '');\n }\n return value;\n}\n\n/**\n * Recursively sanitizes any arbitrary value (string, object, array, primitive) in an action payload.\n */\nexport function sanitizeActionValue(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (DANGEROUS_URL_PATTERN.test(trimmed)) {\n return '';\n }\n return sanitizeActionString(value);\n }\n if (Array.isArray(value)) {\n return value.map((item) => sanitizeActionValue(item));\n }\n if (typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n if (/^(url|href|src|endpoint|targetUrl)$/i.test(k) && typeof v === 'string') {\n result[k] = sanitizeActionUrl(v);\n } else {\n result[k] = sanitizeActionValue(v);\n }\n }\n return result;\n }\n return value;\n}\n\n/**\n * Sanitizes an action step payload object, cleaning dangerous URLs and injection strings recursively.\n */\nexport function sanitizeActionPayload(payload: Record<string, unknown> | undefined): Record<string, unknown> {\n if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {\n return {};\n }\n return sanitizeActionValue(payload) as Record<string, unknown>;\n}\n\n/**\n * Recursively sanitizes an ActionStep, including its payload, condition, onSuccess, and onError branches.\n */\nexport function sanitizeActionStep(step: ActionStep): ActionStep {\n const sanitized: ActionStep = {\n ...step,\n label: step.label ? sanitizeActionString(step.label) : step.label,\n payload: sanitizeActionPayload(step.payload),\n };\n\n if (step.condition && step.condition.value !== undefined) {\n sanitized.condition = {\n ...step.condition,\n value: sanitizeActionValue(step.condition.value),\n };\n }\n\n if (step.onSuccess && Array.isArray(step.onSuccess)) {\n sanitized.onSuccess = step.onSuccess.map((s) => sanitizeActionStep(s));\n }\n\n if (step.onError && Array.isArray(step.onError)) {\n sanitized.onError = step.onError.map((s) => sanitizeActionStep(s));\n }\n\n return sanitized;\n}\n\n/**\n * Recursively sanitizes an ActionPipeline and all its nested steps.\n */\nexport function sanitizeActionPipeline(pipeline: ActionPipeline): ActionPipeline {\n return {\n ...pipeline,\n label: pipeline.label ? sanitizeActionString(pipeline.label) : pipeline.label,\n steps: Array.isArray(pipeline.steps) ? pipeline.steps.map((s) => sanitizeActionStep(s)) : [],\n };\n}\n\n","import { z } from 'zod';\n\n/**\n * Validation Rule Types\n * Supported validation primitives for form inputs in KUBUILD.\n */\nexport const ValidationRuleTypeSchema = z.enum([\n 'required',\n 'email',\n 'url',\n 'min_length',\n 'max_length',\n 'numeric_min',\n 'numeric_max',\n 'pattern',\n 'match_field',\n 'custom_regex',\n]);\n\nexport type ValidationRuleType = z.infer<typeof ValidationRuleTypeSchema>;\n\n/**\n * Validation Trigger Timing\n * Controls when field validation is evaluated.\n */\nexport const ValidateOnEventSchema = z.enum(['blur', 'change', 'submit']);\nexport type ValidateOnEvent = z.infer<typeof ValidateOnEventSchema>;\n\n/**\n * Validation Rule Schema\n * Defines an individual validation condition and its custom error message.\n */\nexport const ValidationRuleSchema = z.object({\n type: ValidationRuleTypeSchema,\n value: z.unknown().optional(),\n message: z.string().min(1, 'Validation error message cannot be empty'),\n});\n\nexport type ValidationRule = z.infer<typeof ValidationRuleSchema>;\n\n/**\n * Form Field Binding Schema\n * Connects an input component to the form state runtime with validation rules and initial values.\n */\nexport const FormFieldBindingSchema = z.object({\n name: z.string().min(1, 'Field name cannot be empty'),\n label: z.string().optional(),\n defaultValue: z.unknown().optional(),\n rules: z.array(ValidationRuleSchema).optional().default([]),\n validateOn: ValidateOnEventSchema.optional().default('blur'),\n transform: z.enum(['trim', 'lowercase', 'uppercase', 'number']).optional(),\n disabled: z.boolean().optional(),\n required: z.boolean().optional(),\n});\n\nexport type FormFieldBinding = z.infer<typeof FormFieldBindingSchema>;\n\n/**\n * Form Container Configuration Schema\n * Configuration for form boundaries, submission behavior, and error focus.\n */\nexport const FormConfigSchema = z.object({\n formId: z.string().min(1, 'Form ID cannot be empty'),\n resetOnSubmit: z.boolean().optional().default(false),\n scrollToFirstError: z.boolean().optional().default(true),\n validateOn: ValidateOnEventSchema.optional().default('blur'),\n initialValues: z.record(z.string(), z.unknown()).optional(),\n rules: z.array(ValidationRuleSchema).optional(),\n});\n\nexport type FormConfig = z.infer<typeof FormConfigSchema>;\n\n/**\n * Type Guards\n */\nexport function isValidationRuleType(value: unknown): value is ValidationRuleType {\n return ValidationRuleTypeSchema.safeParse(value).success;\n}\n\nexport function isValidationRule(value: unknown): value is ValidationRule {\n return ValidationRuleSchema.safeParse(value).success;\n}\n\nexport function isValidateOnEvent(value: unknown): value is ValidateOnEvent {\n return ValidateOnEventSchema.safeParse(value).success;\n}\n\nexport function isFormFieldBinding(value: unknown): value is FormFieldBinding {\n return FormFieldBindingSchema.safeParse(value).success;\n}\n\nexport function isFormConfig(value: unknown): value is FormConfig {\n return FormConfigSchema.safeParse(value).success;\n}\n","import { z } from 'zod';\nimport { SCHEMA_NAME } from './document';\n\nexport const ManifestAssetItemSchema = z.object({\n id: z.string().min(1, 'Asset ID cannot be empty'),\n path: z.string().min(1, 'Asset archive path cannot be empty'),\n mimeType: z.string().min(1, 'MIME type cannot be empty'),\n size: z.number().nonnegative('Asset size must be non-negative'),\n checksum: z.string().optional(),\n});\n\nexport type ManifestAssetItem = z.infer<typeof ManifestAssetItemSchema>;\n\nexport const ManifestSchema = z.object({\n schema: z.literal(SCHEMA_NAME).default(SCHEMA_NAME),\n schemaVersion: z.string().min(1, 'Schema version cannot be empty').default('1.0.0'),\n packageVersion: z.string().min(1, 'Package version cannot be empty').default('1.0.0'),\n builderCompatibility: z.string().default('>=0.1.0'),\n requiredComponents: z.array(z.string()).default([]),\n requiredCapabilities: z.array(z.string()).default([]),\n assets: z.array(ManifestAssetItemSchema).default([]),\n createdAt: z.string().optional(),\n});\n\nexport type Manifest = z.infer<typeof ManifestSchema>;\n\nexport function isManifest(value: unknown): value is Manifest {\n return ManifestSchema.safeParse(value).success;\n}\n","import { z } from 'zod';\nimport { AssetReferenceSchema, PageDocumentSchema, type AssetReference, type PageDocument } from './document';\n\n/**\n * Regex for screening dangerous URI schemes and payloads in thumbnail URLs.\n * Rejects javascript:, vbscript:, data: URIs that are not images (e.g. data:text/html),\n * and embedded <script> tags.\n */\nconst DANGEROUS_URI_PATTERN = /^(javascript:|vbscript:|data:(?!image\\/))|<script/i;\n\n/**\n * Validates a string as a safe URL or safe asset path.\n */\nexport function isSafeThumbnailUrl(url: string): boolean {\n if (!url || typeof url !== 'string') return false;\n const trimmed = url.trim();\n if (trimmed.length === 0) return false;\n if (DANGEROUS_URI_PATTERN.test(trimmed)) return false;\n return true;\n}\n\n/**\n * Safe Thumbnail URL String Schema\n */\nexport const SafeThumbnailUrlSchema = z.string().min(1, 'Thumbnail URL cannot be empty').refine(\n (url) => isSafeThumbnailUrl(url),\n { message: 'Thumbnail URL contains an unsafe protocol or payload' }\n);\n\n/**\n * Safe Thumbnail Object Schema\n */\nexport const SafeThumbnailObjectSchema = z.object({\n url: SafeThumbnailUrlSchema,\n alt: z.string().optional(),\n width: z.number().positive().optional(),\n height: z.number().positive().optional(),\n});\n\nexport type SafeThumbnailObject = z.infer<typeof SafeThumbnailObjectSchema>;\n\n/**\n * Safe Thumbnail Schema (AssetReference | safe URL string | safe thumbnail object)\n */\nexport const SafeThumbnailSchema = z.union([\n AssetReferenceSchema,\n SafeThumbnailObjectSchema,\n SafeThumbnailUrlSchema,\n]);\n\nexport type SafeThumbnail = AssetReference | SafeThumbnailObject | string;\n\n/**\n * Template Package Reference Schema\n * Points to an external or archived .stora / JSON package file.\n */\nexport const TemplatePackageRefSchema = z.object({\n path: z.string().optional(),\n url: SafeThumbnailUrlSchema.optional(),\n checksum: z.string().optional(),\n format: z.enum(['stora', 'json']).default('stora'),\n});\n\nexport type TemplatePackageRef = z.infer<typeof TemplatePackageRefSchema>;\n\n/**\n * Template Requirements Schema\n * Declares custom components and host capabilities required by this template.\n */\nexport const TemplateRequirementsSchema = z.object({\n requiredComponents: z.array(z.string()).default([]),\n requiredCapabilities: z.array(z.string()).default([]),\n});\n\nexport type TemplateRequirements = z.infer<typeof TemplateRequirementsSchema>;\n\n/**\n * Template Record Schema v1\n * Represents a reusable page template with full metadata, safe thumbnail,\n * component/capability requirements, and snapshot document / package reference.\n */\nexport const TemplateRecordSchema = z.object({\n id: z.string().min(1, 'Template ID must be a non-empty string'),\n name: z.string().min(1, 'Template name must be a non-empty string'),\n description: z.string().optional().default(''),\n category: z.string().optional().default('general'),\n tags: z.array(z.string()).optional().default([]),\n thumbnail: SafeThumbnailSchema.optional(),\n author: z.string().optional().default(''),\n version: z.string().optional().default('1.0.0'),\n document: PageDocumentSchema.optional(),\n packageReference: TemplatePackageRefSchema.optional(),\n requirements: TemplateRequirementsSchema.default({\n requiredComponents: [],\n requiredCapabilities: [],\n }),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n custom: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type TemplateRecord = z.infer<typeof TemplateRecordSchema>;\n\n/**\n * Type guard for TemplateRecord\n */\nexport function isTemplateRecord(value: unknown): value is TemplateRecord {\n return TemplateRecordSchema.safeParse(value).success;\n}\n\n/**\n * Type guard for SafeThumbnail\n */\nexport function isSafeThumbnail(value: unknown): value is SafeThumbnail {\n return SafeThumbnailSchema.safeParse(value).success;\n}\n\n","{\n \"schema\": \"stora.page\",\n \"version\": \"1.0.0\",\n \"metadata\": {\n \"title\": \"Welcome to KUBUILD\",\n \"description\": \"A starter template built with KUBUILD portable web builder\",\n \"author\": \"KUBUILD Team\",\n \"tags\": [\"landing-page\", \"starter\", \"portable\"],\n \"category\": \"landing\",\n \"version\": \"1.0.0\",\n \"createdAt\": \"2026-08-22T00:00:00.000Z\",\n \"updatedAt\": \"2026-08-22T00:00:00.000Z\"\n },\n \"document\": {\n \"id\": \"root-page\",\n \"type\": \"page\",\n \"props\": {\n \"title\": \"KUBUILD Starter Page\"\n },\n \"styles\": {\n \"base\": {\n \"backgroundColor\": \"#ffffff\",\n \"fontFamily\": \"Inter, sans-serif\",\n \"color\": \"#111827\",\n \"minHeight\": \"100vh\"\n }\n },\n \"children\": [\n {\n \"id\": \"hero-section\",\n \"type\": \"section\",\n \"props\": {},\n \"styles\": {\n \"base\": {\n \"paddingTop\": \"64px\",\n \"paddingBottom\": \"64px\",\n \"paddingLeft\": \"24px\",\n \"paddingRight\": \"24px\",\n \"backgroundColor\": \"#f8fafc\"\n }\n },\n \"children\": [\n {\n \"id\": \"hero-container\",\n \"type\": \"container\",\n \"props\": {\n \"maxWidth\": \"1200px\"\n },\n \"styles\": {\n \"base\": {\n \"margin\": \"0 auto\",\n \"display\": \"flex\",\n \"flexDirection\": \"column\",\n \"alignItems\": \"center\",\n \"textAlign\": \"center\",\n \"gap\": \"24px\"\n }\n },\n \"children\": [\n {\n \"id\": \"hero-heading\",\n \"type\": \"heading\",\n \"props\": {\n \"text\": \"Build Once, Render Anywhere\",\n \"level\": 1\n },\n \"styles\": {\n \"base\": {\n \"fontSize\": \"48px\",\n \"fontWeight\": \"800\",\n \"color\": \"#0f172a\",\n \"lineHeight\": \"1.2\"\n },\n \"mobile\": {\n \"fontSize\": \"32px\"\n }\n },\n \"children\": []\n },\n {\n \"id\": \"hero-text\",\n \"type\": \"text\",\n \"props\": {\n \"content\": \"KUBUILD is an open, portable web page builder engine designed for modern web applications.\"\n },\n \"styles\": {\n \"base\": {\n \"fontSize\": \"18px\",\n \"color\": \"#475569\",\n \"maxWidth\": \"680px\",\n \"lineHeight\": \"1.6\"\n }\n },\n \"children\": []\n },\n {\n \"id\": \"hero-image\",\n \"type\": \"image\",\n \"props\": {\n \"src\": \"https://picsum.photos/200/300\",\n \"asset\": {\n \"type\": \"asset\",\n \"assetId\": \"asset_hero_graphic\",\n \"filename\": \"hero.webp\",\n \"mimeType\": \"image/webp\"\n },\n \"alt\": \"KUBUILD Platform Graphic\",\n \"width\": 640,\n \"height\": 360\n },\n \"styles\": {\n \"base\": {\n \"borderRadius\": \"12px\",\n \"maxWidth\": \"100%\",\n \"height\": \"auto\",\n \"boxShadow\": \"0 20px 25px -5px rgba(0, 0, 0, 0.1)\"\n }\n },\n \"children\": []\n },\n {\n \"id\": \"hero-button\",\n \"type\": \"button\",\n \"props\": {\n \"label\": \"Get Started\",\n \"action\": {\n \"type\": \"navigate\",\n \"payload\": {\n \"url\": \"/docs\"\n }\n }\n },\n \"styles\": {\n \"base\": {\n \"backgroundColor\": \"#2563eb\",\n \"color\": \"#ffffff\",\n \"paddingTop\": \"12px\",\n \"paddingBottom\": \"12px\",\n \"paddingLeft\": \"28px\",\n \"paddingRight\": \"28px\",\n \"borderRadius\": \"8px\",\n \"fontWeight\": \"600\",\n \"fontSize\": \"16px\",\n \"cursor\": \"pointer\",\n \"border\": \"none\"\n }\n },\n \"children\": []\n }\n ]\n }\n ]\n }\n ]\n }\n}\n","import starterPageData from './fixtures/starter-page.json';\nimport { PageDocument } from './document';\n\nexport const starterPageFixture: PageDocument = starterPageData as unknown as PageDocument;\n","/**\n * Standard JSON Schema Draft-07 representation of stora.page Document v1\n * Aligned 1:1 with TypeScript PageDocument type definition.\n */\nexport const PAGE_DOCUMENT_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/page.json',\n title: 'StoraPageDocument',\n description: 'Portable Web Page Document v1 schema definition for KUBUILD',\n type: 'object',\n required: ['schema', 'version', 'document'],\n additionalProperties: false,\n properties: {\n schema: {\n type: 'string',\n const: 'stora.page',\n description: 'Identifies the document type format',\n },\n version: {\n type: 'string',\n pattern: '^\\\\d+(\\\\.\\\\d+)*$',\n description: 'Schema version of the document',\n default: '1.0.0',\n },\n metadata: {\n $ref: '#/definitions/documentMetadata',\n },\n document: {\n $ref: '#/definitions/rootPageNode',\n },\n },\n definitions: {\n styleValue: {\n type: ['string', 'number', 'boolean', 'null'],\n description: 'A CSS property or design token value',\n },\n styleDefinition: {\n type: 'object',\n additionalProperties: {\n $ref: '#/definitions/styleValue',\n },\n description: 'Key-value map of style properties',\n },\n responsiveStyles: {\n type: 'object',\n properties: {\n base: { $ref: '#/definitions/styleDefinition' },\n desktop: { $ref: '#/definitions/styleDefinition' },\n tablet: { $ref: '#/definitions/styleDefinition' },\n mobile: { $ref: '#/definitions/styleDefinition' },\n },\n additionalProperties: {\n $ref: '#/definitions/styleDefinition',\n },\n },\n assetReference: {\n type: 'object',\n required: ['type', 'assetId'],\n properties: {\n type: {\n type: 'string',\n const: 'asset',\n },\n assetId: {\n type: 'string',\n minLength: 1,\n },\n filename: {\n type: 'string',\n },\n mimeType: {\n type: 'string',\n },\n fallbackUrl: {\n type: 'string',\n format: 'uri',\n },\n },\n additionalProperties: false,\n },\n variableBinding: {\n type: 'object',\n required: ['type', 'key'],\n properties: {\n type: {\n type: 'string',\n const: 'variable',\n },\n key: {\n type: 'string',\n minLength: 1,\n },\n fallback: {},\n },\n additionalProperties: false,\n },\n actionBinding: {\n type: 'object',\n required: ['type'],\n properties: {\n type: {\n type: 'string',\n minLength: 1,\n },\n payload: {\n type: 'object',\n },\n },\n additionalProperties: false,\n },\n animationConfig: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n default: 'none',\n description: 'Scroll entrance animation type (e.g. fade, fade-up, zoom-in, slide-left)',\n },\n duration: {\n type: 'number',\n minimum: 0,\n default: 600,\n description: 'Animation duration in milliseconds',\n },\n delay: {\n type: 'number',\n minimum: 0,\n default: 0,\n description: 'Animation delay in milliseconds',\n },\n easing: {\n type: 'string',\n default: 'ease-out',\n description: 'CSS animation easing / transition timing function',\n },\n once: {\n type: 'boolean',\n default: true,\n description: 'Whether scroll animation plays only once when entering viewport',\n },\n hoverEffect: {\n type: 'string',\n default: 'none',\n description: 'Hover micro-interaction effect (e.g. lift, scale, glow, tilt)',\n },\n loopEffect: {\n type: 'string',\n default: 'none',\n description: 'Continuous loop animation effect (e.g. pulse, bounce, spin, float)',\n },\n },\n additionalProperties: false,\n },\n actionStep: {\n type: 'object',\n required: ['id', 'type'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n },\n type: {\n type: 'string',\n enum: [\n 'api_request',\n 'navigate',\n 'set_state',\n 'reset_form',\n 'show_toast',\n 'open_modal',\n 'close_modal',\n 'copy_clipboard',\n 'custom_event',\n ],\n },\n label: { type: 'string' },\n payload: { type: 'object' },\n condition: {\n type: 'object',\n required: ['field', 'operator'],\n properties: {\n field: { type: 'string', minLength: 1 },\n operator: {\n type: 'string',\n enum: [\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'is_truthy',\n 'is_falsy',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'regex',\n ],\n },\n value: {},\n },\n additionalProperties: false,\n },\n timeout: { type: 'number', minimum: 1 },\n continueOnError: { type: 'boolean' },\n onSuccess: {\n type: 'array',\n items: { $ref: '#/definitions/actionStep' },\n },\n onError: {\n type: 'array',\n items: { $ref: '#/definitions/actionStep' },\n },\n },\n additionalProperties: false,\n },\n actionPipeline: {\n type: 'object',\n required: ['id', 'trigger', 'steps'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n },\n trigger: {\n type: 'string',\n enum: ['click', 'submit', 'change', 'blur', 'focus', 'load'],\n },\n label: { type: 'string' },\n debounceMs: { type: 'number', minimum: 0 },\n preventDuplicate: { type: 'boolean' },\n enabled: { type: 'boolean', default: true },\n steps: {\n type: 'array',\n items: { $ref: '#/definitions/actionStep' },\n minItems: 1,\n },\n },\n additionalProperties: false,\n },\n formConfig: {\n type: 'object',\n required: ['formId'],\n properties: {\n formId: {\n type: 'string',\n minLength: 1,\n },\n resetOnSubmit: { type: 'boolean', default: false },\n scrollToFirstError: { type: 'boolean', default: true },\n validateOn: {\n type: 'string',\n enum: ['blur', 'change', 'submit'],\n default: 'blur',\n },\n initialValues: { type: 'object' },\n },\n additionalProperties: false,\n },\n node: {\n type: 'object',\n required: ['id', 'type'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique deterministic node identifier',\n },\n type: {\n type: 'string',\n minLength: 1,\n description: 'Component type identifier',\n },\n props: {\n type: 'object',\n description: 'Component props payload and bindings',\n default: {},\n },\n styles: {\n $ref: '#/definitions/responsiveStyles',\n },\n animation: {\n $ref: '#/definitions/animationConfig',\n },\n actions: {\n type: 'array',\n items: {\n $ref: '#/definitions/actionPipeline',\n },\n description: 'Multi-step action pipelines bound to component events',\n },\n formConfig: {\n $ref: '#/definitions/formConfig',\n description: 'Form container configuration and behavior',\n },\n children: {\n type: 'array',\n items: {\n $ref: '#/definitions/node',\n },\n default: [],\n },\n },\n additionalProperties: false,\n },\n rootPageNode: {\n allOf: [\n { $ref: '#/definitions/node' },\n {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n const: 'page',\n description: 'The root node type must be \"page\"',\n },\n },\n },\n ],\n },\n documentMetadata: {\n type: 'object',\n required: ['title'],\n properties: {\n title: {\n type: 'string',\n minLength: 1,\n default: 'Untitled Page',\n },\n description: {\n type: 'string',\n default: '',\n },\n author: {\n type: 'string',\n default: '',\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n },\n updatedAt: {\n type: 'string',\n format: 'date-time',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n },\n category: {\n type: 'string',\n default: 'general',\n },\n version: {\n type: 'string',\n default: '1.0.0',\n },\n custom: {\n type: 'object',\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getPageDocumentJsonSchema() {\n return PAGE_DOCUMENT_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of stora.page Package Manifest v1\n * Aligned 1:1 with TypeScript Manifest type definition.\n */\nexport const MANIFEST_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/manifest.json',\n title: 'StoraPackageManifest',\n description: 'Portable Package Manifest v1 schema definition for KUBUILD (.stora)',\n type: 'object',\n required: ['schemaVersion', 'packageVersion', 'builderCompatibility', 'requiredComponents', 'requiredCapabilities', 'assets'],\n additionalProperties: false,\n properties: {\n schema: {\n type: 'string',\n const: 'stora.page',\n description: 'Schema identifier',\n default: 'stora.page',\n },\n schemaVersion: {\n type: 'string',\n pattern: '^\\\\d+(\\\\.\\\\d+)*$',\n description: 'Document schema version',\n default: '1.0.0',\n },\n packageVersion: {\n type: 'string',\n pattern: '^\\\\d+(\\\\.\\\\d+)*$',\n description: 'Package version',\n default: '1.0.0',\n },\n builderCompatibility: {\n type: 'string',\n description: 'Minimum or range of builder versions compatible with this package',\n default: '>=0.1.0',\n },\n requiredComponents: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of custom component types required by the page',\n default: [],\n },\n requiredCapabilities: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of capabilities required by components in the page',\n default: [],\n },\n assets: {\n type: 'array',\n items: { $ref: '#/definitions/manifestAssetItem' },\n description: 'Inventory of local assets packaged within the archive',\n default: [],\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n description: 'ISO timestamp when the package was created',\n },\n },\n definitions: {\n manifestAssetItem: {\n type: 'object',\n required: ['id', 'path', 'mimeType', 'size'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique asset identifier',\n },\n path: {\n type: 'string',\n minLength: 1,\n description: 'Relative archive path to asset file (e.g. assets/hero.png)',\n },\n mimeType: {\n type: 'string',\n minLength: 1,\n description: 'MIME type of the asset',\n },\n size: {\n type: 'number',\n minimum: 0,\n description: 'Asset size in bytes',\n },\n checksum: {\n type: 'string',\n description: 'SHA-256 or algorithm-prefixed checksum (e.g. sha256:...)',\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getManifestJsonSchema() {\n return MANIFEST_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of Template Record v1\n * Aligned 1:1 with TypeScript TemplateRecord type definition.\n */\nexport const TEMPLATE_RECORD_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/template.json',\n title: 'StoraTemplateRecord',\n description: 'Reusable Page Template Record v1 schema definition for KUBUILD',\n type: 'object',\n required: ['id', 'name'],\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique template identifier',\n },\n name: {\n type: 'string',\n minLength: 1,\n description: 'Human-readable name of the template',\n },\n description: {\n type: 'string',\n default: '',\n description: 'Detailed description of the template purpose and contents',\n },\n category: {\n type: 'string',\n default: 'general',\n description: 'Template category grouping',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n description: 'Search and filter tags',\n },\n thumbnail: {\n oneOf: [\n { $ref: '#/definitions/assetReference' },\n { $ref: '#/definitions/safeThumbnailObject' },\n { type: 'string', minLength: 1 },\n ],\n description: 'Safe preview image asset reference or URL',\n },\n author: {\n type: 'string',\n default: '',\n description: 'Template creator or team',\n },\n version: {\n type: 'string',\n default: '1.0.0',\n description: 'Semantic version of the template',\n },\n document: {\n $ref: 'https://schema.stora.page/v1/page.json#',\n description: 'Embedded PageDocument snapshot (optional if packageReference provided)',\n },\n packageReference: {\n $ref: '#/definitions/templatePackageRef',\n description: 'External package/archive reference (optional if document provided)',\n },\n requirements: {\n $ref: '#/definitions/templateRequirements',\n description: 'Component and capability requirements for this template',\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n description: 'ISO creation timestamp',\n },\n updatedAt: {\n type: 'string',\n format: 'date-time',\n description: 'ISO last updated timestamp',\n },\n custom: {\n type: 'object',\n description: 'Custom host-specific serializable metadata',\n },\n },\n definitions: {\n assetReference: {\n type: 'object',\n required: ['type', 'assetId'],\n properties: {\n type: {\n type: 'string',\n const: 'asset',\n },\n assetId: {\n type: 'string',\n minLength: 1,\n },\n filename: {\n type: 'string',\n },\n mimeType: {\n type: 'string',\n },\n fallbackUrl: {\n type: 'string',\n format: 'uri',\n },\n },\n additionalProperties: false,\n },\n safeThumbnailObject: {\n type: 'object',\n required: ['url'],\n properties: {\n url: {\n type: 'string',\n minLength: 1,\n },\n alt: {\n type: 'string',\n },\n width: {\n type: 'number',\n minimum: 1,\n },\n height: {\n type: 'number',\n minimum: 1,\n },\n },\n additionalProperties: false,\n },\n templatePackageRef: {\n type: 'object',\n properties: {\n path: {\n type: 'string',\n },\n url: {\n type: 'string',\n },\n checksum: {\n type: 'string',\n },\n format: {\n type: 'string',\n enum: ['stora', 'json'],\n default: 'stora',\n },\n },\n additionalProperties: false,\n },\n templateRequirements: {\n type: 'object',\n properties: {\n requiredComponents: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n },\n requiredCapabilities: {\n type: 'array',\n items: { type: 'string' },\n default: [],\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getTemplateRecordJsonSchema() {\n return TEMPLATE_RECORD_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of Action Pipeline\n * Aligned 1:1 with TypeScript ActionPipeline type definition.\n */\nexport const ACTION_PIPELINE_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/action-pipeline.json',\n title: 'StoraActionPipeline',\n description: 'Action Pipeline schema definition for KUBUILD event workflows',\n type: 'object',\n required: ['id', 'trigger', 'steps'],\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n description: 'Unique pipeline identifier',\n },\n trigger: {\n type: 'string',\n enum: ['click', 'submit', 'change', 'blur', 'focus', 'load'],\n description: 'DOM or component event that triggers the action pipeline',\n },\n label: {\n type: 'string',\n description: 'Human readable label for the action pipeline',\n },\n debounceMs: {\n type: 'number',\n minimum: 0,\n description: 'Debounce duration in milliseconds',\n },\n preventDuplicate: {\n type: 'boolean',\n description: 'Prevent concurrent duplicate pipeline executions',\n },\n enabled: {\n type: 'boolean',\n default: true,\n description: 'Whether the pipeline is currently active',\n },\n steps: {\n type: 'array',\n items: { $ref: '#/definitions/actionStep' },\n minItems: 1,\n description: 'Ordered sequence of action steps to execute',\n },\n },\n definitions: {\n actionStep: {\n type: 'object',\n required: ['id', 'type'],\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n },\n type: {\n type: 'string',\n enum: [\n 'api_request',\n 'navigate',\n 'set_state',\n 'reset_form',\n 'show_toast',\n 'open_modal',\n 'close_modal',\n 'copy_clipboard',\n 'custom_event',\n ],\n },\n label: { type: 'string' },\n payload: { type: 'object' },\n condition: {\n type: 'object',\n required: ['field', 'operator'],\n properties: {\n field: { type: 'string', minLength: 1 },\n operator: {\n type: 'string',\n enum: [\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'is_truthy',\n 'is_falsy',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'regex',\n ],\n },\n value: {},\n },\n additionalProperties: false,\n },\n timeout: { type: 'number', minimum: 1 },\n continueOnError: { type: 'boolean' },\n onSuccess: {\n type: 'array',\n items: { $ref: '#/definitions/actionStep' },\n },\n onError: {\n type: 'array',\n items: { $ref: '#/definitions/actionStep' },\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getActionPipelineJsonSchema() {\n return ACTION_PIPELINE_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of Form Config\n * Aligned 1:1 with TypeScript FormConfig type definition.\n */\nexport const FORM_CONFIG_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/form-config.json',\n title: 'StoraFormConfig',\n description: 'Form container configuration and behavior definition for KUBUILD',\n type: 'object',\n required: ['formId'],\n additionalProperties: false,\n properties: {\n formId: {\n type: 'string',\n minLength: 1,\n description: 'Unique identifier for the form boundary',\n },\n resetOnSubmit: {\n type: 'boolean',\n default: false,\n description: 'Whether to reset form field values after successful submission',\n },\n scrollToFirstError: {\n type: 'boolean',\n default: true,\n description: 'Auto-scroll viewport to the first invalid input on validation failure',\n },\n validateOn: {\n type: 'string',\n enum: ['blur', 'change', 'submit'],\n default: 'blur',\n description: 'Default trigger event for field validation evaluation',\n },\n initialValues: {\n type: 'object',\n description: 'Initial state values populated in form fields',\n },\n },\n} as const;\n\nexport function getFormConfigJsonSchema() {\n return FORM_CONFIG_JSON_SCHEMA_V1;\n}\n\n/**\n * Standard JSON Schema Draft-07 representation of Form Field Binding\n * Aligned 1:1 with TypeScript FormFieldBinding type definition.\n */\nexport const FORM_FIELD_BINDING_JSON_SCHEMA_V1 = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: 'https://schema.stora.page/v1/form-field-binding.json',\n title: 'StoraFormFieldBinding',\n description: 'Form field binding definition connecting input elements to form state runtime',\n type: 'object',\n required: ['name'],\n additionalProperties: false,\n properties: {\n name: {\n type: 'string',\n minLength: 1,\n description: 'Field state property key',\n },\n label: {\n type: 'string',\n description: 'Display label for the field',\n },\n defaultValue: {\n description: 'Initial default value if not overridden by form initialValues',\n },\n rules: {\n type: 'array',\n items: { $ref: '#/definitions/validationRule' },\n default: [],\n description: 'Validation rules applied to the field value',\n },\n validateOn: {\n type: 'string',\n enum: ['blur', 'change', 'submit'],\n default: 'blur',\n description: 'Field-specific validation trigger timing',\n },\n transform: {\n type: 'string',\n enum: ['trim', 'lowercase', 'uppercase', 'number'],\n description: 'Value transformation applied prior to validation and state storage',\n },\n disabled: {\n type: 'boolean',\n description: 'Whether the field is disabled',\n },\n required: {\n type: 'boolean',\n description: 'Whether the field is required (shorthand rule)',\n },\n },\n definitions: {\n validationRule: {\n type: 'object',\n required: ['type', 'message'],\n properties: {\n type: {\n type: 'string',\n enum: [\n 'required',\n 'email',\n 'url',\n 'min_length',\n 'max_length',\n 'numeric_min',\n 'numeric_max',\n 'pattern',\n 'match_field',\n 'custom_regex',\n ],\n },\n value: {},\n message: {\n type: 'string',\n minLength: 1,\n },\n },\n additionalProperties: false,\n },\n },\n} as const;\n\nexport function getFormFieldBindingJsonSchema() {\n return FORM_FIELD_BINDING_JSON_SCHEMA_V1;\n}\n\n\n"],"mappings":"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","names":["z","z","z","z","z","z","z"]}
|