@kubuild/schema 0.7.0 → 0.8.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 +24 -0
- package/dist/actions.d.ts +5 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/breakpoints.d.ts +35 -0
- package/dist/breakpoints.d.ts.map +1 -0
- package/dist/builtin-components.d.ts +17 -0
- package/dist/builtin-components.d.ts.map +1 -0
- package/dist/canonical-props.d.ts +39 -0
- package/dist/canonical-props.d.ts.map +1 -0
- package/dist/chunk-MT3M7D67.js +1041 -0
- package/dist/chunk-MT3M7D67.js.map +1 -0
- package/dist/chunk-PECTZDCI.js +1038 -0
- package/dist/chunk-PECTZDCI.js.map +1 -0
- package/dist/document.d.ts +21 -1
- package/dist/document.d.ts.map +1 -1
- package/dist/index.cjs +437 -126
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +316 -819
- package/dist/index.js.map +1 -1
- package/dist/json-schema.d.ts +74 -6
- package/dist/json-schema.d.ts.map +1 -1
- package/dist/template.d.ts +6 -0
- package/dist/template.d.ts.map +1 -1
- package/dist/theme.d.ts +80 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/types.cjs +19 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.ts +331 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.cjs +715 -0
- package/dist/validate.cjs.map +1 -0
- package/dist/validate.d.ts +16 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +53 -0
- package/dist/validate.js.map +1 -0
- package/package.json +22 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/document.ts","../src/actions.ts","../src/tracking.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';\nimport { TrackingConfig, TrackingConfigSchema } from './tracking';\n\nexport const SCHEMA_NAME = 'stora.page' as const;\nexport const CURRENT_SCHEMA_VERSION = '1.1.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]);\n\nexport type StyleValue = z.infer<typeof StyleValueSchema>;\n\n/**\n * Standard CSS style definition supporting Flexbox (STORA-101), Sizing constraints (STORA-101),\n * Effects & rounded corners (STORA-101), CSS Grid (STORA-110), and arbitrary CSS properties/tokens.\n */\nexport interface StyleDefinition extends Record<string, StyleValue> {\n // Display\n display?: string;\n\n // Flexbox / Auto Layout (STORA-101)\n flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse' | (string & {});\n flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse' | (string & {});\n justifyContent?:\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\n | 'start'\n | 'end'\n | 'left'\n | 'right'\n | (string & {});\n alignItems?:\n | 'stretch'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'start'\n | 'end'\n | 'self-start'\n | 'self-end'\n | (string & {});\n alignContent?:\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\n | 'stretch'\n | 'start'\n | 'end'\n | (string & {});\n gap?: string | number;\n rowGap?: string | number;\n columnGap?: string | number;\n flexGrow?: number | string;\n flexShrink?: number | string;\n flexBasis?: string | number;\n alignSelf?:\n | 'auto'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'stretch'\n | (string & {});\n\n // Sizing constraints (STORA-101)\n width?: string | number;\n height?: string | number;\n minWidth?: string | number;\n maxWidth?: string | number;\n minHeight?: string | number;\n maxHeight?: string | number;\n\n // Replaced-element fitting — how an image/video fills its own box. Portable and\n // per-breakpoint overridable like any other style property.\n objectFit?: 'fill' | 'contain' | 'cover' | 'none' | 'scale-down' | (string & {});\n objectPosition?: string;\n\n // Effects & Rounded Corners (STORA-101)\n borderRadius?: string | number;\n borderTopLeftRadius?: string | number;\n borderTopRightRadius?: string | number;\n borderBottomRightRadius?: string | number;\n borderBottomLeftRadius?: string | number;\n backdropFilter?: string;\n filter?: string;\n boxShadow?: string;\n\n // Background & Image Styling\n backgroundColor?: string;\n backgroundImage?: string;\n backgroundSize?: 'cover' | 'contain' | 'auto' | (string & {});\n backgroundPosition?: string;\n backgroundRepeat?: 'no-repeat' | 'repeat' | 'repeat-x' | 'repeat-y' | (string & {});\n backgroundAttachment?: 'scroll' | 'fixed' | 'local' | (string & {});\n\n // CSS Grid (STORA-110)\n gridTemplateColumns?: string;\n gridTemplateRows?: string;\n gridAutoFlow?: string;\n gridAutoColumns?: string;\n gridAutoRows?: string;\n gridColumn?: string | number;\n gridRow?: string | number;\n gridColumnStart?: string | number;\n gridColumnEnd?: string | number;\n gridRowStart?: string | number;\n gridRowEnd?: string | number;\n colSpan?: number | string;\n rowSpan?: number | string;\n justifySelf?: string;\n}\n\nexport const StyleDefinitionSchema: z.ZodType<StyleDefinition> = z.record(z.string(), StyleValueSchema);\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 tracking: TrackingConfigSchema.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 * - tracking: optional dynamic pixel & CAPI tracking configuration\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 tracking: TrackingConfigSchema.optional(),\n document: RootPageNodeSchema,\n});\n\nexport type PageDocument = z.infer<typeof PageDocumentSchema>;\n\nexport const PROJECT_SCHEMA_NAME = 'stora.project' as const;\nexport const CURRENT_PROJECT_SCHEMA_VERSION = '1.0.0' as const;\n\n/**\n * Node type used as the in-tree placeholder left behind when a subtree is detached\n * into its own artboard. It carries no children — the real content lives in the\n * artboard named by `props.artboardId`.\n */\nexport const ARTBOARD_REFERENCE_NODE_TYPE = 'artboard-reference' as const;\n\n/**\n * Artboard Type Schema\n * - 'page': a routable page surface (has a slug)\n * - 'component': a detached surface rendered as an overlay/portal at runtime\n * (modal, drawer, collapsible, or any block the author detached), reached by `triggerId`\n */\nexport const ArtboardTypeSchema = z.enum(['page', 'component']);\n\nexport type ArtboardType = z.infer<typeof ArtboardTypeSchema>;\n\n/**\n * Artboard Schema\n * One top-level surface on the builder canvas. Each artboard embeds a complete\n * PageDocument so that every existing document command, tree utility, validator,\n * and history engine keeps operating on exactly the shape it already understands.\n *\n * Component artboards always wrap their detached node as the sole child of a\n * synthetic `type: 'page'` root, so the root-type constraint never has to be relaxed.\n */\nexport const ArtboardSchema = z.object({\n id: z.string().min(1, 'Artboard ID is required'),\n name: z.string().min(1, 'Artboard name is required'),\n artboardType: ArtboardTypeSchema,\n /** Route for page artboards (e.g. \"/about\"). */\n slug: z.string().optional(),\n /**\n * For component artboards: the id that `open_modal` / `close_modal` actions target.\n * Mirrors the detached node's own `props.modalId` so ModalManager keeps working unchanged.\n */\n triggerId: z.string().optional(),\n /**\n * Viewport/breakpoint this artboard is currently authored at. Declared inline\n * (rather than imported) because viewport is otherwise an editor/renderer concept.\n */\n viewport: z.enum(['desktop', 'tablet', 'mobile']).optional(),\n /** Persisted artboard width in px, matching the canvas ViewportResizer's `width`. */\n width: z.number().positive().optional(),\n /**\n * Free position on the builder's infinite canvas, in unscaled canvas px. Absent means\n * \"not placed yet\" — the canvas then falls back to laying the artboard out in a row.\n */\n position: z\n .object({\n x: z.number(),\n y: z.number(),\n })\n .optional(),\n document: PageDocumentSchema,\n});\n\nexport type Artboard = z.infer<typeof ArtboardSchema>;\n\n/**\n * Project Document Schema\n * Root portable structure holding many artboards:\n * - schema: strictly \"stora.project\" (distinct from the single-page \"stora.page\")\n * - version: project schema version string\n * - metadata: serializable metadata\n * - artboards: one or more page/component surfaces\n * - activeArtboardId: which artboard the editor should open\n */\nexport const ProjectDocumentSchema = z.object({\n schema: z.literal(PROJECT_SCHEMA_NAME),\n version: z.string().min(1, 'Schema version is required').default(CURRENT_PROJECT_SCHEMA_VERSION),\n metadata: DocumentMetadataSchema.optional(),\n tracking: TrackingConfigSchema.optional(),\n artboards: z.array(ArtboardSchema).min(1, 'A project needs at least one artboard'),\n activeArtboardId: z.string().optional(),\n});\n\nexport type ProjectDocument = z.infer<typeof ProjectDocumentSchema>;\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\nexport function isProjectDocument(value: unknown): value is ProjectDocument {\n return ProjectDocumentSchema.safeParse(value).success;\n}\n\n/**\n * Cheap structural sniff used by the loader to route a raw payload to either the\n * project pipeline or the legacy single-page pipeline, before any parsing happens.\n * Intentionally does not validate — a malformed project must still be routed to the\n * project parser so its own errors surface, rather than being silently treated as a page.\n */\nexport function looksLikeProjectDocument(value: unknown): boolean {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as { schema?: unknown; artboards?: unknown };\n return candidate.schema === PROJECT_SCHEMA_NAME || Array.isArray(candidate.artboards);\n}\n\n/**\n * Node type guard for the in-tree placeholder that points at a detached artboard.\n */\nexport function isArtboardReferenceNode(node: Node): boolean {\n return node.type === ARTBOARD_REFERENCE_NODE_TYPE;\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 { TrackEventStepPayload, TrackEventStepPayloadSchema } from './tracking';\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 'toggle_modal',\n 'copy_clipboard',\n 'custom_event',\n 'track_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 toggle: z.boolean().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 * 7b. Toggle Modal Step Payload Schema\n * Flips a modal/drawer/collapsible between open and closed. The renderer's\n * `toggle_modal` runner resolves the target from the first non-empty of\n * `modalId`, `modalNodeId`, `targetNodeId`, `nodeId`.\n */\nexport const ToggleModalStepPayloadSchema = z\n .object({\n modalId: z.string().optional(),\n modalNodeId: z.string().optional(),\n targetNodeId: z.string().optional(),\n nodeId: z.string().optional(),\n })\n .refine(\n (data) =>\n [data.modalId, data.modalNodeId, data.targetNodeId, data.nodeId].some(\n (id) => typeof id === 'string' && id.trim().length > 0,\n ),\n {\n message: 'Modal ID or Modal Node ID cannot be empty',\n },\n );\n\nexport type ToggleModalStepPayload = z.infer<typeof ToggleModalStepPayloadSchema>;\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 toggle_modal: ToggleModalStepPayloadSchema,\n copy_clipboard: CopyClipboardStepPayloadSchema,\n custom_event: CustomEventStepPayloadSchema,\n track_event: TrackEventStepPayloadSchema,\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 * Supported Tracking Providers\n */\nexport const TrackingProviderTypeSchema = z.enum([\n 'meta',\n 'google',\n 'gtm',\n 'tiktok',\n 'custom',\n]);\n\nexport type TrackingProviderType = z.infer<typeof TrackingProviderTypeSchema>;\n\n/*\n * SECURITY MODEL\n * --------------\n * The portable document only stores PUBLIC identifiers (pixel / measurement / container ids),\n * feature flags, test event codes and an opaque `credentialId`. Secrets (Meta CAPI access\n * token, TikTok Events API token, GA4 Measurement Protocol API secret, custom webhook URL +\n * headers) are owned by the host and resolved on the server at dispatch time via\n * `credentialId`. Unknown keys — including the secret fields that `<= 1.0.0` documents\n * carried — are stripped when a document is parsed.\n */\n\n/**\n * Metadata-only descriptor of a tracking credential saved by the host (account/workspace).\n *\n * This is what the editor receives to render a credential picker. It NEVER carries secret\n * material (access tokens, API secrets, webhook URLs/headers) — those stay on the host and\n * are resolved server-side from `id` (see `TrackingSecretResolver` in `@kubuild/core`).\n */\nexport interface PixelCredentialOption {\n /** Opaque host id, stored in the document as `providers.<provider>.credentialId`. */\n id: string;\n /** Human-readable label shown in the picker. */\n name: string;\n provider: TrackingProviderType | (string & {});\n /** Public Meta / TikTok pixel id, if the credential has one. */\n pixelId?: string;\n /** Public GA4 measurement id, if the credential has one. */\n measurementId?: string;\n /** Public GTM container id, if the credential has one. */\n containerId?: string;\n /** True when the host holds a server-side secret for this credential. */\n hasSecret?: boolean;\n isActive?: boolean;\n}\n\n/**\n * Event Delivery Channels:\n * - 'both': Fires client browser pixel and dispatches to the server relay (with deduplication event_id)\n * - 'client_only': Only fires in the browser via client-side pixel scripts\n * - 'server_only': Only sends to the host server relay (no browser pixel call)\n */\nexport const TrackingDeliverySchema = z.enum(['both', 'client_only', 'server_only']);\nexport type TrackingDelivery = z.infer<typeof TrackingDeliverySchema>;\n\n/**\n * Meta (Facebook) Pixel & Conversions API (CAPI) Configuration\n */\nexport const MetaTrackingProviderConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Host credential id; the server resolves the CAPI access token from it. */\n credentialId: z.string().optional(),\n /** Meta Pixel ID (e.g. 123456789012345) — public */\n pixelId: z.string().optional().default(''),\n /** Enable Server-Side Conversions API (delivered through the host relay) */\n capiEnabled: z.boolean().optional().default(false),\n /** Test Event Code from Meta Events Manager (e.g. \"TEST12345\") — not a secret */\n testEventCode: z.string().optional().default(''),\n});\n\nexport type MetaTrackingProviderConfig = z.infer<typeof MetaTrackingProviderConfigSchema>;\n\n/**\n * Google Analytics 4 (GA4) & Measurement Protocol Configuration\n */\nexport const GoogleTrackingProviderConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Host credential id; the server resolves the Measurement Protocol API secret from it. */\n credentialId: z.string().optional(),\n /** GA4 Measurement ID (e.g. \"G-XXXXXXXXXX\") — public */\n measurementId: z.string().optional().default(''),\n});\n\nexport type GoogleTrackingProviderConfig = z.infer<typeof GoogleTrackingProviderConfigSchema>;\n\n/**\n * Google Tag Manager (GTM) Configuration.\n * Client-side only: `track_event` with provider 'gtm' (or 'all') pushes to `window.dataLayer`.\n */\nexport const GtmTrackingProviderConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Optional linked account/workspace credential ID */\n credentialId: z.string().optional(),\n /** GTM Container ID (e.g. \"GTM-XXXXXXX\") — public */\n containerId: z.string().optional().default(''),\n});\n\nexport type GtmTrackingProviderConfig = z.infer<typeof GtmTrackingProviderConfigSchema>;\n\n/**\n * TikTok Pixel & Events API Configuration\n */\nexport const TikTokTrackingProviderConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Host credential id; the server resolves the Events API access token from it. */\n credentialId: z.string().optional(),\n /** TikTok Pixel ID (e.g. \"C1234567890\") — public */\n pixelId: z.string().optional().default(''),\n /** Enable TikTok Events API (server-side, delivered through the host relay) */\n eventsApiEnabled: z.boolean().optional().default(false),\n /** Test Event Code from TikTok Event Manager — not a secret */\n testEventCode: z.string().optional().default(''),\n});\n\nexport type TikTokTrackingProviderConfig = z.infer<typeof TikTokTrackingProviderConfigSchema>;\n\n/**\n * Custom Webhook Configuration.\n * The destination URL and any auth headers are host secrets resolved from `credentialId`.\n */\nexport const CustomTrackingProviderConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Host credential id; the server resolves the webhook `endpointUrl` + `headers` from it. */\n credentialId: z.string().optional(),\n});\n\nexport type CustomTrackingProviderConfig = z.infer<typeof CustomTrackingProviderConfigSchema>;\n\n/**\n * Provider keys that `<= 1.0.0` documents stored but that are now host-owned\n * (secrets and server destinations). Used by migration and by import/export\n * sanitization to strip them defensively.\n */\nexport const LEGACY_TRACKING_SECRET_KEYS: Readonly<Record<TrackingProviderType, readonly string[]>> =\n Object.freeze({\n meta: ['capiAccessToken', 'serverRelayUrl'],\n google: ['measurementProtocolSecret', 'serverRelayUrl'],\n gtm: ['serverRelayUrl'],\n tiktok: ['accessToken', 'serverRelayUrl'],\n custom: ['endpointUrl', 'headers'],\n });\n\n/**\n * Global Tracking Configuration Schema\n * Attached to Document / Project. Contains no secrets.\n */\nexport const TrackingConfigSchema = z.object({\n /** Master toggle: dynamically enables or disables all tracking operations */\n enabled: z.boolean().default(true),\n /** When enabled, events are logged to console and can bypass live API calls for safe debugging */\n debugMode: z.boolean().optional().default(false),\n /** Automatically trigger PageView event upon page load */\n autoPageView: z.boolean().optional().default(true),\n /** Default delivery method when not explicitly overridden in an action step */\n defaultDelivery: TrackingDeliverySchema.optional().default('both'),\n /** Provider-specific settings */\n providers: z\n .object({\n meta: MetaTrackingProviderConfigSchema.optional(),\n google: GoogleTrackingProviderConfigSchema.optional(),\n gtm: GtmTrackingProviderConfigSchema.optional(),\n tiktok: TikTokTrackingProviderConfigSchema.optional(),\n custom: CustomTrackingProviderConfigSchema.optional(),\n })\n .optional()\n .default({}),\n});\n\nexport type TrackingConfig = z.infer<typeof TrackingConfigSchema>;\n\n/* ------------------------------------------------------------------------------------------\n * Host-side secrets — NEVER part of the document. Exported so hosts / relays can validate\n * what their secret store returns.\n * ---------------------------------------------------------------------------------------- */\n\n/** Meta Conversions API secret material. */\nexport const MetaTrackingSecretsSchema = z.object({\n /** System User access token for the Meta Graph API. */\n capiAccessToken: z.string().min(1),\n});\nexport type MetaTrackingSecrets = z.infer<typeof MetaTrackingSecretsSchema>;\n\n/** GA4 Measurement Protocol secret material. */\nexport const GoogleTrackingSecretsSchema = z.object({\n /** Measurement Protocol `api_secret`. */\n measurementProtocolSecret: z.string().min(1),\n});\nexport type GoogleTrackingSecrets = z.infer<typeof GoogleTrackingSecretsSchema>;\n\n/** TikTok Events API secret material. */\nexport const TikTokTrackingSecretsSchema = z.object({\n /** Long-term Events API access token. */\n accessToken: z.string().min(1),\n});\nexport type TikTokTrackingSecrets = z.infer<typeof TikTokTrackingSecretsSchema>;\n\n/** Custom webhook destination + auth headers (both are host secrets). */\nexport const CustomTrackingSecretsSchema = z.object({\n endpointUrl: z.string().url(),\n headers: z.record(z.string(), z.string()).optional(),\n});\nexport type CustomTrackingSecrets = z.infer<typeof CustomTrackingSecretsSchema>;\n\n/** Secret material keyed by provider. GTM is client-only and has no secret. */\nexport interface TrackingProviderSecretsMap {\n meta: MetaTrackingSecrets;\n google: GoogleTrackingSecrets;\n tiktok: TikTokTrackingSecrets;\n custom: CustomTrackingSecrets;\n}\n\n/** Providers that support server-side delivery (and therefore have secrets). */\nexport type ServerTrackingProviderType = keyof TrackingProviderSecretsMap;\n\n/** Secret material for a single provider, as returned by a host secret resolver. */\nexport type TrackingProviderSecrets = TrackingProviderSecretsMap[ServerTrackingProviderType];\n\n/**\n * Standard Event Names commonly used across Meta, Google, and TikTok.\n */\nexport const StandardTrackingEventSchema = z.enum([\n 'PageView',\n 'ViewContent',\n 'AddToCart',\n 'InitiateCheckout',\n 'Purchase',\n 'Lead',\n 'Contact',\n 'CompleteRegistration',\n 'Subscribe',\n 'Search',\n 'SubmitApplication',\n 'Schedule',\n]);\n\nexport type StandardTrackingEvent = z.infer<typeof StandardTrackingEventSchema>;\n\n/**\n * Target provider of a `track_event` step. 'gtm' pushes to `window.dataLayer` (client only).\n */\nexport const TrackEventProviderSchema = z.enum(['all', 'meta', 'google', 'gtm', 'tiktok', 'custom']);\nexport type TrackEventProvider = z.infer<typeof TrackEventProviderSchema>;\n\n/**\n * Track Event Step Payload Schema (for Action Pipelines)\n */\nexport const TrackEventStepPayloadSchema = z.object({\n /** Event name: e.g. \"Purchase\", \"Lead\", or custom string */\n eventName: z.string().min(1, 'Event name cannot be empty'),\n /** Standard event vs custom event identifier */\n eventType: z.enum(['standard', 'custom']).optional().default('standard'),\n /**\n * Target provider: 'all' or a specific provider.\n * 'gtm' pushes the event to `window.dataLayer` (client-side only).\n */\n provider: TrackEventProviderSchema.optional().default('all'),\n /** Delivery channel: 'both', 'client_only', or 'server_only' */\n delivery: TrackingDeliverySchema.optional().default('both'),\n /**\n * Deduplication Event ID.\n * If omitted, a unique ID is automatically generated so Meta/TikTok CAPI\n * deduplicates cleanly with the browser pixel.\n */\n eventId: z.string().optional(),\n /**\n * Event parameters/properties (e.g. currency, value, content_name, order_id).\n * Supports runtime variable interpolation (e.g. {{ form.price }} or {{ variables.currency }}).\n */\n params: z.record(z.string(), z.unknown()).optional().default({}),\n /**\n * User Data for advanced matching and server CAPI (e.g. email, phone, firstName, lastName).\n * Supports runtime variable interpolation (e.g. {{ form.email }}).\n */\n userData: z.record(z.string(), z.unknown()).optional().default({}),\n /** Step-level active toggle */\n enabled: z.boolean().optional().default(true),\n});\n\nexport type TrackEventStepPayload = z.infer<typeof TrackEventStepPayloadSchema>;\n\n/* ------------------------------------------------------------------------------------------\n * Relay protocol (browser -> host server). Versioned and language-agnostic: any backend\n * (Node, PHP, Go, Python, ...) can implement it — see the JSON Schema export.\n * ---------------------------------------------------------------------------------------- */\n\nexport const TRACKING_RELAY_PROTOCOL_VERSION = 1 as const;\n\n/** Normalized server tracking event, as sent from the browser to the host relay. */\nexport const ServerTrackingEventSchema = z.object({\n eventName: z.string().min(1).max(256),\n eventType: z.enum(['standard', 'custom']).optional(),\n eventId: z.string().max(256).optional(),\n /** Unix epoch seconds. */\n eventTime: z.number().int().nonnegative().optional(),\n eventSourceUrl: z.string().max(4096).optional(),\n actionSource: z.enum(['website', 'app', 'system_generated']).optional(),\n params: z.record(z.string(), z.unknown()).optional(),\n /** Raw (unhashed) user data; the relay hashes PII per provider spec before forwarding. */\n userData: z.record(z.string(), z.unknown()).optional(),\n customData: z.record(z.string(), z.unknown()).optional(),\n});\nexport type ServerTrackingEventInput = z.infer<typeof ServerTrackingEventSchema>;\n\n/**\n * Body the renderer POSTs to the host relay (`RenderContext.tracking.relayUrl`).\n * The relay MUST load the tracking config itself (trusted) — never from this body.\n */\nexport const TrackingRelayRequestSchema = z.object({\n version: z.literal(TRACKING_RELAY_PROTOCOL_VERSION),\n event: ServerTrackingEventSchema,\n provider: TrackEventProviderSchema.optional().default('all'),\n /** Optional hint only; the relay uses the credentialId from its trusted config. */\n credentialId: z.string().max(256).optional(),\n /** Host document/page id so the relay can look up the trusted tracking config. */\n documentId: z.string().max(256).optional(),\n});\nexport type TrackingRelayRequest = z.infer<typeof TrackingRelayRequestSchema>;\n\n/** Per-provider outcome returned by the relay (provider response bodies are not echoed). */\nexport const TrackingRelayProviderResultSchema = z.object({\n provider: z.string(),\n success: z.boolean(),\n status: z.number().int().optional(),\n skipped: z.boolean().optional(),\n reason: z.string().optional(),\n error: z.string().optional(),\n});\nexport type TrackingRelayProviderResult = z.infer<typeof TrackingRelayProviderResultSchema>;\n\nexport const TrackingRelayErrorCodeSchema = z.enum([\n 'INVALID_REQUEST',\n 'UNSUPPORTED_VERSION',\n 'FORBIDDEN_ORIGIN',\n 'METHOD_NOT_ALLOWED',\n 'CONFIG_NOT_FOUND',\n 'INTERNAL_ERROR',\n]);\nexport type TrackingRelayErrorCode = z.infer<typeof TrackingRelayErrorCodeSchema>;\n\nexport const TrackingRelayResponseSchema = z.object({\n version: z.literal(TRACKING_RELAY_PROTOCOL_VERSION),\n success: z.boolean(),\n eventId: z.string().optional(),\n skipped: z.boolean().optional(),\n reason: z.string().optional(),\n results: z.record(z.string(), TrackingRelayProviderResultSchema).optional(),\n error: z\n .object({\n code: TrackingRelayErrorCodeSchema,\n message: z.string(),\n })\n .optional(),\n});\nexport type TrackingRelayResponse = z.infer<typeof TrackingRelayResponseSchema>;\n\n/**\n * Type guards\n */\nexport function isTrackingConfig(value: unknown): value is TrackingConfig {\n return TrackingConfigSchema.safeParse(value).success;\n}\n\nexport function isTrackEventStepPayload(value: unknown): value is TrackEventStepPayload {\n return TrackEventStepPayloadSchema.safeParse(value).success;\n}\n\nexport function isTrackingRelayRequest(value: unknown): value is TrackingRelayRequest {\n return TrackingRelayRequestSchema.safeParse(value).success;\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.1.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","import { z } from 'zod';\nimport {\n TrackingRelayRequestSchema,\n TrackingRelayResponseSchema,\n MetaTrackingSecretsSchema,\n GoogleTrackingSecretsSchema,\n TikTokTrackingSecretsSchema,\n CustomTrackingSecretsSchema,\n} from './tracking';\n\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.1.0',\n },\n metadata: {\n $ref: '#/definitions/documentMetadata',\n },\n document: {\n $ref: '#/definitions/rootPageNode',\n },\n tracking: {\n $ref: '#/definitions/trackingConfig',\n },\n },\n definitions: {\n trackingConfig: {\n type: 'object',\n description:\n 'Tracking configuration. Contains only public ids, flags and opaque credential ids — secrets are host-owned.',\n properties: {\n enabled: { type: 'boolean', default: true },\n debugMode: { type: 'boolean', default: false },\n autoPageView: { type: 'boolean', default: true },\n defaultDelivery: { type: 'string', enum: ['both', 'client_only', 'server_only'], default: 'both' },\n providers: {\n type: 'object',\n properties: {\n meta: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n pixelId: { type: 'string' },\n capiEnabled: { type: 'boolean' },\n testEventCode: { type: 'string' },\n },\n additionalProperties: false,\n },\n google: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n measurementId: { type: 'string' },\n },\n additionalProperties: false,\n },\n gtm: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n containerId: { type: 'string' },\n },\n additionalProperties: false,\n },\n tiktok: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n pixelId: { type: 'string' },\n eventsApiEnabled: { type: 'boolean' },\n testEventCode: { type: 'string' },\n },\n additionalProperties: false,\n },\n custom: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n },\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 'toggle_modal',\n 'copy_clipboard',\n 'custom_event',\n 'track_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 'toggle_modal',\n 'copy_clipboard',\n 'custom_event',\n 'track_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 * Tracking relay protocol v1 (browser -> host server).\n * Generated from the Zod schemas so they never drift. Publish these to non-JS backends\n * (PHP, Go, Python, ...) so they can implement a compatible relay endpoint.\n * ---------------------------------------------------------------------------------------- */\n\ntype JsonSchemaObject = Record<string, unknown>;\n\nfunction toDraft7(schema: z.ZodType, id: string, title: string, io: 'input' | 'output'): JsonSchemaObject {\n return {\n ...(z.toJSONSchema(schema, { target: 'draft-7', io }) as JsonSchemaObject),\n $id: id,\n title,\n };\n}\n\nlet trackingRelayRequestJsonSchema: JsonSchemaObject | undefined;\nlet trackingRelayResponseJsonSchema: JsonSchemaObject | undefined;\nlet trackingProviderSecretsJsonSchema: JsonSchemaObject | undefined;\n\n/** JSON Schema (Draft-07) of the body POSTed to a tracking relay (`TrackingRelayRequestSchema`). */\nexport function getTrackingRelayRequestJsonSchema(): JsonSchemaObject {\n trackingRelayRequestJsonSchema ??= toDraft7(\n TrackingRelayRequestSchema,\n 'https://schema.stora.page/v1/tracking-relay-request.json',\n 'StoraTrackingRelayRequest',\n 'input',\n );\n return trackingRelayRequestJsonSchema;\n}\n\n/** JSON Schema (Draft-07) of the JSON a tracking relay responds with (`TrackingRelayResponseSchema`). */\nexport function getTrackingRelayResponseJsonSchema(): JsonSchemaObject {\n trackingRelayResponseJsonSchema ??= toDraft7(\n TrackingRelayResponseSchema,\n 'https://schema.stora.page/v1/tracking-relay-response.json',\n 'StoraTrackingRelayResponse',\n 'output',\n );\n return trackingRelayResponseJsonSchema;\n}\n\n/**\n * JSON Schema (Draft-07) of host-side provider secrets, keyed by provider. Useful for hosts\n * validating their secret store. Never embedded in a document.\n */\nexport function getTrackingProviderSecretsJsonSchema(): JsonSchemaObject {\n trackingProviderSecretsJsonSchema ??= toDraft7(\n z.object({\n meta: MetaTrackingSecretsSchema.optional(),\n google: GoogleTrackingSecretsSchema.optional(),\n tiktok: TikTokTrackingSecretsSchema.optional(),\n custom: CustomTrackingSecretsSchema.optional(),\n }),\n 'https://schema.stora.page/v1/tracking-provider-secrets.json',\n 'StoraTrackingProviderSecrets',\n 'input',\n );\n return trackingProviderSecretsJsonSchema;\n}\n\n\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/breakpoints.ts","../src/fixtures/starter-page.json","../src/fixtures.ts","../src/json-schema.ts","../src/builtin-components.ts","../src/canonical-props.ts"],"sourcesContent":["/**\n * Single source of truth for responsive breakpoints (STORA-541).\n *\n * Every consumer that maps a screen width to a `ResponsiveStyles` layer — the editor's\n * viewport switcher/resizer, the runtime renderer's `@media` output, the preview adapter\n * and the static code generator — must read these values instead of hard-coding numbers.\n *\n * Ranges are disjoint and mirror the editor's per-viewport preview exactly: a viewport's\n * effective style is `base` merged with *that one* layer (tablet does not cascade into\n * mobile, desktop does not leak into tablet/mobile).\n *\n * mobile : width < 768px\n * tablet : 768 <= width < 1024px\n * desktop : 1024 <= width\n *\n * 768/1024 were chosen over the older 640/1024 code-generator values because they match\n * the published docs, the editor's existing width→viewport logic and its default tablet\n * preview width (768px), so what users see in the editor is what ships.\n */\n\n/** Viewport layers that carry breakpoint overrides (`base` applies everywhere). */\nexport type BreakpointName = 'desktop' | 'tablet' | 'mobile';\n\nexport interface BreakpointRange {\n /** Inclusive lower bound in CSS px. */\n readonly minWidth: number;\n /** Inclusive upper bound in CSS px, or `null` for unbounded. */\n readonly maxWidth: number | null;\n}\n\nexport const BREAKPOINTS: Readonly<Record<BreakpointName, BreakpointRange>> = Object.freeze({\n mobile: Object.freeze({ minWidth: 0, maxWidth: 767 }),\n tablet: Object.freeze({ minWidth: 768, maxWidth: 1023 }),\n desktop: Object.freeze({ minWidth: 1024, maxWidth: null }),\n});\n\n/** Order used for emitting CSS and iterating layers (widest first). */\nexport const BREAKPOINT_ORDER: readonly BreakpointName[] = Object.freeze([\n 'desktop',\n 'tablet',\n 'mobile',\n]);\n\n/**\n * Upper bounds are emitted as `maxWidth + 0.98px` (e.g. `767.98px`) so fractional\n * viewport widths (zoomed / high-DPI browsers) never fall in a gap between ranges.\n */\nfunction formatMaxWidth(maxWidth: number): string {\n return `${maxWidth + 0.98}px`;\n}\n\n/** CSS media query (without the `@media` keyword) for each breakpoint layer. */\nexport const BREAKPOINT_MEDIA_QUERIES: Readonly<Record<BreakpointName, string>> = Object.freeze({\n desktop: `(min-width: ${BREAKPOINTS.desktop.minWidth}px)`,\n tablet: `(min-width: ${BREAKPOINTS.tablet.minWidth}px) and (max-width: ${formatMaxWidth(\n BREAKPOINTS.tablet.maxWidth as number,\n )})`,\n mobile: `(max-width: ${formatMaxWidth(BREAKPOINTS.mobile.maxWidth as number)})`,\n});\n\n/** Resolve which breakpoint layer applies at a given viewport width in CSS px. */\nexport function getBreakpointForWidth(width: number): BreakpointName {\n if (width < BREAKPOINTS.tablet.minWidth) return 'mobile';\n if (width < BREAKPOINTS.desktop.minWidth) return 'tablet';\n return 'desktop';\n}\n","{\n \"schema\": \"stora.page\",\n \"version\": \"1.2.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 \"as\": \"p\",\n \"text\": \"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 },\n \"actions\": [\n {\n \"id\": \"hero-button-click\",\n \"trigger\": \"click\",\n \"enabled\": true,\n \"steps\": [\n {\n \"id\": \"hero-button-navigate\",\n \"type\": \"navigate\",\n \"payload\": {\n \"url\": \"/docs\"\n }\n }\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","import { z } from 'zod';\nimport {\n TrackingRelayRequestSchema,\n TrackingRelayResponseSchema,\n MetaTrackingSecretsSchema,\n GoogleTrackingSecretsSchema,\n TikTokTrackingSecretsSchema,\n CustomTrackingSecretsSchema,\n} from './tracking';\n\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.2.0',\n },\n metadata: {\n $ref: '#/definitions/documentMetadata',\n },\n document: {\n $ref: '#/definitions/rootPageNode',\n },\n tracking: {\n $ref: '#/definitions/trackingConfig',\n },\n theme: {\n $ref: '#/definitions/theme',\n },\n },\n definitions: {\n themeTokenMap: {\n type: 'object',\n propertyNames: { pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$' },\n additionalProperties: {\n type: ['string', 'number'],\n maxLength: 512,\n pattern: '^[^;{}<>\\\\\\\\]*$',\n },\n description: 'Design tokens keyed by name. Values must not contain ; { } < > or backslashes.',\n },\n theme: {\n type: 'object',\n description:\n 'Document design tokens, emitted as CSS custom properties (--kb-color-*, --kb-font-*, --kb-radius-*, --kb-space-*) and referenced from styles as var(--kb-color-<key>).',\n properties: {\n colors: { $ref: '#/definitions/themeTokenMap' },\n fonts: { $ref: '#/definitions/themeTokenMap' },\n radii: { $ref: '#/definitions/themeTokenMap' },\n spacing: { $ref: '#/definitions/themeTokenMap' },\n },\n additionalProperties: false,\n },\n trackingConfig: {\n type: 'object',\n description:\n 'Tracking configuration. Contains only public ids, flags and opaque credential ids — secrets are host-owned.',\n properties: {\n enabled: { type: 'boolean', default: true },\n debugMode: { type: 'boolean', default: false },\n autoPageView: { type: 'boolean', default: true },\n defaultDelivery: { type: 'string', enum: ['both', 'client_only', 'server_only'], default: 'both' },\n providers: {\n type: 'object',\n properties: {\n meta: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n pixelId: { type: 'string' },\n capiEnabled: { type: 'boolean' },\n testEventCode: { type: 'string' },\n },\n additionalProperties: false,\n },\n google: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n measurementId: { type: 'string' },\n },\n additionalProperties: false,\n },\n gtm: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n containerId: { type: 'string' },\n },\n additionalProperties: false,\n },\n tiktok: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n pixelId: { type: 'string' },\n eventsApiEnabled: { type: 'boolean' },\n testEventCode: { type: 'string' },\n },\n additionalProperties: false,\n },\n custom: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n credentialId: { type: 'string' },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n },\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 'toggle_modal',\n 'copy_clipboard',\n 'custom_event',\n 'track_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', 'expire'],\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', 'expire'],\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 'toggle_modal',\n 'copy_clipboard',\n 'custom_event',\n 'track_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 * Tracking relay protocol v1 (browser -> host server).\n * Generated from the Zod schemas so they never drift. Publish these to non-JS backends\n * (PHP, Go, Python, ...) so they can implement a compatible relay endpoint.\n * ---------------------------------------------------------------------------------------- */\n\ntype JsonSchemaObject = Record<string, unknown>;\n\nfunction toDraft7(schema: z.ZodType, id: string, title: string, io: 'input' | 'output'): JsonSchemaObject {\n return {\n ...(z.toJSONSchema(schema, { target: 'draft-7', io }) as JsonSchemaObject),\n $id: id,\n title,\n };\n}\n\nlet trackingRelayRequestJsonSchema: JsonSchemaObject | undefined;\nlet trackingRelayResponseJsonSchema: JsonSchemaObject | undefined;\nlet trackingProviderSecretsJsonSchema: JsonSchemaObject | undefined;\n\n/** JSON Schema (Draft-07) of the body POSTed to a tracking relay (`TrackingRelayRequestSchema`). */\nexport function getTrackingRelayRequestJsonSchema(): JsonSchemaObject {\n trackingRelayRequestJsonSchema ??= toDraft7(\n TrackingRelayRequestSchema,\n 'https://schema.stora.page/v1/tracking-relay-request.json',\n 'StoraTrackingRelayRequest',\n 'input',\n );\n return trackingRelayRequestJsonSchema;\n}\n\n/** JSON Schema (Draft-07) of the JSON a tracking relay responds with (`TrackingRelayResponseSchema`). */\nexport function getTrackingRelayResponseJsonSchema(): JsonSchemaObject {\n trackingRelayResponseJsonSchema ??= toDraft7(\n TrackingRelayResponseSchema,\n 'https://schema.stora.page/v1/tracking-relay-response.json',\n 'StoraTrackingRelayResponse',\n 'output',\n );\n return trackingRelayResponseJsonSchema;\n}\n\n/**\n * JSON Schema (Draft-07) of host-side provider secrets, keyed by provider. Useful for hosts\n * validating their secret store. Never embedded in a document.\n */\nexport function getTrackingProviderSecretsJsonSchema(): JsonSchemaObject {\n trackingProviderSecretsJsonSchema ??= toDraft7(\n z.object({\n meta: MetaTrackingSecretsSchema.optional(),\n google: GoogleTrackingSecretsSchema.optional(),\n tiktok: TikTokTrackingSecretsSchema.optional(),\n custom: CustomTrackingSecretsSchema.optional(),\n }),\n 'https://schema.stora.page/v1/tracking-provider-secrets.json',\n 'StoraTrackingProviderSecrets',\n 'input',\n );\n return trackingProviderSecretsJsonSchema;\n}\n\n\n","/**\n * Canonical list of built-in component type names shipped by `@kubuild/components`'\n * `createDefaultComponentRegistry()`.\n *\n * It lives in `@kubuild/schema` (the bottom of the dependency graph) so that\n * `@kubuild/core` can use it — e.g. to tell built-in from custom components in\n * `extractTemplateRequirements` — without depending on `@kubuild/components`, which\n * would invert the `schema → core → components` direction. `@kubuild/components`\n * derives its `CoreComponentType` union from this list and a test there asserts the\n * default registry registers exactly these types, so the two cannot drift apart.\n *\n * When adding a built-in component definition, add its type here as well.\n */\nexport const BUILTIN_COMPONENT_TYPES = [\n // layout\n 'page',\n 'section',\n 'container',\n 'columns',\n 'flex',\n 'grid',\n // typography\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n // media\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n // form\n 'button',\n 'button-submit',\n 'form',\n 'input',\n 'textarea',\n 'select',\n 'checkbox',\n 'switch',\n 'radio-group',\n 'radio',\n 'radio-item',\n 'file-upload',\n // data\n 'collection',\n 'list',\n 'list-item',\n 'table',\n 'table-row',\n 'table-cell',\n // interactive\n 'modal',\n 'drawer',\n 'collapsible',\n // conversion (Epic 60)\n 'countdown',\n 'accordion',\n 'accordion-item',\n 'tabs',\n 'tab-panel',\n 'carousel',\n 'rating',\n 'divider',\n 'spacer',\n] as const;\n\nexport type BuiltinComponentType = (typeof BUILTIN_COMPONENT_TYPES)[number];\n\nexport function isBuiltinComponentType(type: unknown): type is BuiltinComponentType {\n return typeof type === 'string' && (BUILTIN_COMPONENT_TYPES as readonly string[]).includes(type);\n}\n","/**\n * Canonical prop names for text-bearing components (STORA-550).\n *\n * Historically the renderer accepted several names for the same visible text\n * (`text` / `content`, `text` / `label`, `quote` / `text`, ...). Each component now has\n * exactly one canonical name; the others are deprecated aliases that\n * - the `1.1.0 -> 1.2.0` document migration moves onto the canonical name, and\n * - the renderer still reads (for one minor version) while emitting a\n * `DEPRECATED_PROP` diagnostic.\n *\n * Pure data, no zod — safe to import from any layer.\n */\nexport interface CanonicalTextPropRule {\n /** The one prop name authors, templates and the editor should write. */\n canonical: string;\n /** Deprecated names still read for backwards compatibility. */\n aliases: readonly string[];\n /**\n * Order in which the pre-1.2.0 renderer resolved the visible value (first defined\n * wins). The migration uses this so a migrated document renders exactly as before.\n */\n legacyReadOrder: readonly string[];\n}\n\nexport const CANONICAL_TEXT_PROPS: Readonly<Record<string, CanonicalTextPropRule>> = Object.freeze({\n heading: { canonical: 'text', aliases: ['content'], legacyReadOrder: ['text', 'content'] },\n text: { canonical: 'text', aliases: ['content'], legacyReadOrder: ['text', 'content'] },\n paragraph: { canonical: 'text', aliases: ['content'], legacyReadOrder: ['text', 'content'] },\n link: {\n canonical: 'text',\n aliases: ['label', 'content'],\n legacyReadOrder: ['text', 'label', 'content'],\n },\n badge: { canonical: 'text', aliases: ['label'], legacyReadOrder: ['text', 'label'] },\n blockquote: { canonical: 'text', aliases: ['quote'], legacyReadOrder: ['quote', 'text'] },\n button: {\n canonical: 'label',\n aliases: ['text', 'content'],\n legacyReadOrder: ['label', 'text', 'content'],\n },\n});\n\n/** Returns the canonical text prop rule for a component type, if it has one. */\nexport function getCanonicalTextPropRule(componentType: string): CanonicalTextPropRule | undefined {\n return Object.prototype.hasOwnProperty.call(CANONICAL_TEXT_PROPS, componentType)\n ? CANONICAL_TEXT_PROPS[componentType]\n : undefined;\n}\n\nexport interface DeprecatedPropUsage {\n /** Alias prop present on the node. */\n propName: string;\n /** Canonical prop name that should be used instead. */\n canonicalName: string;\n /** True when the canonical prop is absent, i.e. the alias is what actually renders. */\n inEffect: boolean;\n}\n\n/**\n * Lists deprecated alias props present on a node's props (does not mutate).\n */\nexport function findDeprecatedPropAliases(\n componentType: string,\n props: Record<string, unknown> | undefined,\n): DeprecatedPropUsage[] {\n const rule = getCanonicalTextPropRule(componentType);\n if (!rule || !props) return [];\n const canonicalPresent = props[rule.canonical] !== undefined;\n let aliasInEffect = canonicalPresent;\n const usages: DeprecatedPropUsage[] = [];\n for (const alias of rule.aliases) {\n if (props[alias] === undefined) continue;\n usages.push({ propName: alias, canonicalName: rule.canonical, inEffect: !aliasInEffect });\n aliasInEffect = true;\n }\n return usages;\n}\n"],"mappings":"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","names":[]}
|