@kaskad/schema 0.0.9 → 0.0.10
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.
|
@@ -10,6 +10,17 @@ function isObject(value) {
|
|
|
10
10
|
return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Set);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
function unfoldAwaitComputationSchema(schema) {
|
|
14
|
+
return {
|
|
15
|
+
computationType: 'await',
|
|
16
|
+
source: schema.await,
|
|
17
|
+
pending: unfoldNodeSchema(schema.pending ?? null, { type: 'componentSchema' }, []),
|
|
18
|
+
then: unfoldNodeSchema(schema.then, { type: 'componentSchema' }, []),
|
|
19
|
+
error: unfoldNodeSchema(schema.error ?? null, { type: 'componentSchema' }, []),
|
|
20
|
+
[Symbol.for('type')]: 'ComputationSchema',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
13
24
|
const SimpleTypes = ['unknown', 'string', 'number', 'boolean', 'component', 'componentSchema'];
|
|
14
25
|
function parseValueType(type) {
|
|
15
26
|
type = type.replaceAll(' ', '');
|
|
@@ -442,6 +453,10 @@ function unfoldComputationSchema(schema) {
|
|
|
442
453
|
if (isObject(schema) && 'for' in schema && !('computationType' in schema)) {
|
|
443
454
|
return unfoldForWithNewSyntax(schema);
|
|
444
455
|
}
|
|
456
|
+
// Check for await syntax (before computationType check)
|
|
457
|
+
if (isObject(schema) && 'await' in schema && !('computationType' in schema)) {
|
|
458
|
+
return unfoldAwaitComputationSchema(schema);
|
|
459
|
+
}
|
|
445
460
|
if (!isObject(schema) || !('computationType' in schema)) {
|
|
446
461
|
return null;
|
|
447
462
|
}
|
|
@@ -454,6 +469,7 @@ function unfoldComputationSchema(schema) {
|
|
|
454
469
|
template: (schema) => unfoldImportComputationSchema(schema),
|
|
455
470
|
if: (schema) => unfoldIfComputationSchema(schema),
|
|
456
471
|
switch: (schema) => unfoldSwitch(schema),
|
|
472
|
+
await: (schema) => unfoldAwaitComputationSchema(schema),
|
|
457
473
|
};
|
|
458
474
|
const unfolder = computationUnfolders[schema['computationType']];
|
|
459
475
|
if (unfolder) {
|
|
@@ -634,6 +650,24 @@ function toFullNotation(nodeSchema, valueType) {
|
|
|
634
650
|
rawNode._binding = nodeSchema._binding;
|
|
635
651
|
return rawNode;
|
|
636
652
|
}
|
|
653
|
+
// detect 'await' short notation
|
|
654
|
+
if ('await' in nodeSchema) {
|
|
655
|
+
if ('if' in nodeSchema) {
|
|
656
|
+
throw new Error('"await" and "if" cannot be used on the same node.');
|
|
657
|
+
}
|
|
658
|
+
if ('for' in nodeSchema) {
|
|
659
|
+
throw new Error('"await" and "for" cannot be used on the same node.');
|
|
660
|
+
}
|
|
661
|
+
const schema = nodeSchema;
|
|
662
|
+
rawNode._computation = {
|
|
663
|
+
computationType: 'await',
|
|
664
|
+
await: schema['await'],
|
|
665
|
+
pending: schema['pending'] ?? null,
|
|
666
|
+
then: schema['then'] ?? null,
|
|
667
|
+
error: schema['error'] ?? null,
|
|
668
|
+
};
|
|
669
|
+
return rawNode;
|
|
670
|
+
}
|
|
637
671
|
// detect 'if' short notation
|
|
638
672
|
// TODO: change to _if to isolate keyword)
|
|
639
673
|
if ('if' in nodeSchema) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-schema.mjs","sources":["../../../../libs/schema/src/lib/types/raw-schemas.ts","../../../../libs/schema/src/lib/util/is-object.ts","../../../../libs/schema/src/lib/unfolding/parse-value-type.ts","../../../../libs/schema/src/lib/unfolding/parse-property-key-shorthand.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-for.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-for-new-syntax.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-if.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-import.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-interpolation.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-computation-schema.ts","../../../../libs/schema/src/lib/unfolding/parse-binding-shorthand.ts","../../../../libs/schema/src/lib/unfolding/unfold-flat-wrapper-notation.ts","../../../../libs/schema/src/lib/unfolding/to-full-notation.ts","../../../../libs/schema/src/lib/unfolding/value/throw-unfold-value-error.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-boolean.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-number.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-string.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-unknown.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-array.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-map.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-object.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-command.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/validate-props.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-component-schema.ts","../../../../libs/schema/src/lib/unfolding/unfold-property.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-component.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-set.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-shape.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-variant-shape.ts","../../../../libs/schema/src/lib/unfolding/value/unfold-node-value.ts","../../../../libs/schema/src/lib/unfolding/unfold-node-schema.ts","../../../../libs/schema/src/lib/load/schema-component-extractor.ts","../../../../libs/schema/src/lib/load/template-registry.ts","../../../../libs/schema/src/lib/load/load-schema.ts","../../../../libs/schema/src/lib/load/register-declared-type.ts","../../../../libs/schema/src/lib/load/load-templates.ts","../../../../libs/schema/src/lib/util/unfold-component-definitions.ts","../../../../libs/schema/src/kaskad-schema.ts"],"sourcesContent":["// Recipe types used for unfolding\n// These types represent the raw input format before normalization\n\nexport type FormulaComputationRecipe = {\n formula: string;\n};\n\nexport type ForComputationRecipe = {\n items: unknown[];\n as?: {\n item: unknown;\n index: unknown;\n first?: unknown;\n last?: unknown;\n };\n yield: unknown;\n};\n\nexport type IfComputationRecipe = Record<'if' | 'then' | 'else', unknown> | ({ if: unknown } & Record<string, unknown>);\n\nexport type SwitchComputationRecipe = {\n computationType: 'switch';\n source: unknown;\n cases: { equals: unknown; then: unknown }[];\n default: unknown;\n};\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Set);\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport {\n CommandValueType,\n NodeType,\n ObjectValueType,\n ShapeValueType,\n ValueType,\n VariantShapeValueType,\n} from '@kaskad/types';\n\nconst SimpleTypes: NodeType[] = ['unknown', 'string', 'number', 'boolean', 'component', 'componentSchema'];\n\nexport function parseValueType(type: string): ValueType {\n type = type.replaceAll(' ', '');\n\n if (type.startsWith('(') && type.endsWith(')')) {\n return createCommandType(type.slice(1, -1));\n }\n\n // Check for map type first (but not just '{}')\n if (type.endsWith('{}') && type !== '{}') {\n const rest = type.slice(0, -2);\n return {\n type: 'map',\n item: parseValueType(rest),\n };\n }\n\n // Check for set type\n if (type.endsWith('#')) {\n const rest = type.slice(0, -1);\n return {\n type: 'set',\n item: parseValueType(rest),\n };\n }\n\n if (type.endsWith('[]')) {\n const rest = type.slice(0, -2);\n return {\n type: 'array',\n item: parseValueType(rest),\n };\n }\n\n // Check for object type after map/array to handle {} and complex object types\n if (type.startsWith('{') && type.endsWith('}')) {\n return createObjectType(type.slice(1, -1));\n }\n\n return createSimpleType(type as NodeType);\n}\n\nfunction createObjectType(type: string): ObjectValueType {\n const fieldsPairs = splitTypesByComma(type);\n\n const fields = fieldsPairs.reduce<Record<string, ValueType>>((acc, str) => {\n if (!str) return acc; // Handle empty object case\n\n const colonIndex = str.indexOf(':');\n const errorPrefix = `Invalid object field definition: \"${str}\"`;\n\n if (colonIndex === -1) {\n throw new Error(`${errorPrefix} - expected format \"fieldName:type\"`);\n }\n\n const fieldKey = str.substring(0, colonIndex);\n const fieldType = str.substring(colonIndex + 1);\n\n if (!fieldKey) {\n throw new Error(`${errorPrefix} - field name cannot be empty`);\n }\n\n if (!fieldType) {\n throw new Error(`${errorPrefix} - field type cannot be empty`);\n }\n\n acc[fieldKey] = parseValueType(fieldType);\n return acc;\n }, {});\n\n return {\n type: 'object',\n fields,\n } satisfies ObjectValueType;\n}\n\nfunction createCommandType(type: string): CommandValueType {\n const args = splitTypesByComma(type).filter(Boolean);\n\n return {\n type: 'command',\n args: args.map(parseValueType),\n } satisfies CommandValueType;\n}\n\nfunction createSimpleType(type: NodeType): ValueType {\n if (SimpleTypes.includes(type)) {\n return { type } as ValueType;\n }\n\n if (type in DefinitionStore.getInstance().shapes) {\n return {\n type: 'shape',\n shapeType: type,\n } as ShapeValueType;\n }\n\n if (type in DefinitionStore.getInstance().variantShapes) {\n return {\n type: 'variantShape',\n shapeType: type,\n } as VariantShapeValueType;\n }\n\n throw new Error(`Unknown type '${type}'`);\n}\n\nfunction splitTypesByComma(str: string): string[] {\n const pairs: string[] = [];\n\n let braceCount = 0;\n let part = '';\n\n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n\n if (char === '{') {\n braceCount++;\n part += char;\n continue;\n }\n\n if (char === '}') {\n braceCount--;\n part += char;\n continue;\n }\n\n if (char === ',' && braceCount === 0) {\n pairs.push(part);\n part = '';\n } else {\n part += char;\n }\n }\n\n pairs.push(part);\n\n return pairs;\n}\n","import { NodeType, ValueType } from '@kaskad/types';\n\nimport { parseValueType } from './parse-value-type';\n\nexport function parsePropertyKeyShorthand(shorthand: string): [string, ValueType] {\n const [key, type] = shorthand.split('@') as [string, NodeType];\n if (!type) {\n throw new Error(`Invalid node key expression \"${key}\". Expected type for key \"${key}\"`);\n }\n return [key, parseValueType(type)];\n}\n","import { ComputationSchema, ForComputationSchema } from '@kaskad/types';\n\nimport { ForComputationRecipe } from '../../types/raw-schemas';\nimport { isObject } from '../../util/is-object';\nimport { parsePropertyKeyShorthand } from '../parse-property-key-shorthand';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\nexport function unfoldForComputationSchema(schema: unknown): ComputationSchema | null {\n if (!isObject(schema) || !('computationType' in schema)) {\n return null;\n }\n let rawDimensions = schema['dimensions'] as ForComputationRecipe[];\n if (rawDimensions) {\n if (!Array.isArray(rawDimensions)) {\n throw new Error(`Invalid dimensions schema \"${JSON.stringify(rawDimensions)}\". It must be an array.`);\n }\n } else {\n // schema can be a flat object if only one dimension is defined\n rawDimensions = [schema as ForComputationRecipe];\n }\n\n const dimensions = rawDimensions.map((dimension) => {\n const { item = 'item', index = 'index', first = null, last = null } = dimension.as || {};\n\n const itemsKey = Object.keys(dimension).find((key) => key.startsWith('items')) as keyof typeof dimension;\n\n const [items, itemsType] = parsePropertyKeyShorthand(itemsKey ?? '');\n if (items !== 'items') {\n throw new Error(`Computation \"for\" requires \"items\" field: ${JSON.stringify(schema)}`);\n }\n\n const itemsArr = dimension[itemsKey];\n\n return {\n items: unfoldNodeSchema(itemsArr, itemsType, []),\n itemsType,\n item: unfoldNodeSchema(item, { type: 'string' }, []),\n index: unfoldNodeSchema(index, { type: 'string' }, []),\n first: unfoldNodeSchema(first, { type: 'string' }, []),\n last: unfoldNodeSchema(last, { type: 'string' }, []),\n trackBy: unfoldNodeSchema(null, { type: 'unknown' }, []),\n };\n });\n\n const normalizedYield = unfoldNodeSchema(schema['yield'], { type: 'unknown' }, []);\n\n const result: ForComputationSchema = {\n computationType: 'for',\n dimensions,\n yield: normalizedYield,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n return result;\n}\n","import { ComputationSchema, ForComputationSchema } from '@kaskad/types';\n\nimport { isObject } from '../../util/is-object';\nimport { parseValueType } from '../parse-value-type';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\ninterface ParsedForSpec {\n itemName: string;\n itemType: string;\n itemsExpr: unknown;\n metadata: {\n index?: string;\n first?: string;\n last?: string;\n };\n trackBy: string | null;\n}\n\n/**\n * Parses metadata object from the `with` clause\n * Example: \"index: $i, first: $isFirst, last: $isLast\"\n */\nfunction parseMetadata(str: string): { index?: string; first?: string; last?: string } {\n const result: { index?: string; first?: string; last?: string } = {};\n const trimmed = str.trim();\n\n if (!trimmed) {\n throw new Error('Empty metadata block. Omit \"with\" clause if no metadata is needed.');\n }\n\n const pairs = trimmed.split(',').map((s) => s.trim());\n\n for (const pair of pairs) {\n const colonIndex = pair.indexOf(':');\n if (colonIndex === -1) {\n throw new Error(`Invalid metadata pair: \"${pair}\". Expected format: \"key: $value\"`);\n }\n\n const key = pair.slice(0, colonIndex).trim();\n const value = pair.slice(colonIndex + 1).trim();\n\n if (!['index', 'first', 'last'].includes(key)) {\n throw new Error(`Invalid metadata key: \"${key}\". Only \"index\", \"first\", and \"last\" are allowed.`);\n }\n\n if (!value || !value.startsWith('$')) {\n throw new Error(`Invalid metadata value: \"${value}\". Must be a variable starting with $.`);\n }\n\n result[key as 'index' | 'first' | 'last'] = value.slice(1); // Remove $\n }\n\n return result;\n}\n\n/**\n * Parses a single for-loop specification\n * Example: \"$row@Row of $rows with { index: $i, first: $isFirst } trackBy $row.id\"\n */\nfunction parseForSpec(spec: string): ParsedForSpec {\n const trimmed = spec.trim();\n\n // First, extract trackBy if present at the end\n // trackBy uses $variable or $variable.property syntax (e.g., \"$item\" or \"$item.id\")\n let trackBy: string | null = null;\n let specWithoutTrackBy = trimmed;\n\n const trackByMatch = trimmed.match(/\\s+trackBy\\s+(\\$\\w+(?:\\.\\w+)*)$/);\n if (trackByMatch) {\n const trackByValue = trackByMatch[1].trim();\n specWithoutTrackBy = trimmed.slice(0, trackByMatch.index).trim();\n\n // Parse the $variable.property syntax\n const pathMatch = trackByValue.match(/^\\$(\\w+)((?:\\.\\w+)*)$/);\n if (!pathMatch) {\n throw new Error(`Invalid trackBy syntax: ${trackByValue}. Expected format: $variable or $variable.property`);\n }\n\n const variableName = pathMatch[1]; // e.g., \"item\"\n const propertyPath = pathMatch[2]; // e.g., \".id\" or \"\"\n\n // We'll validate against itemName after parsing the main pattern\n // Store both parts temporarily - validation happens after we know itemName\n trackBy = `${variableName}${propertyPath}`;\n }\n\n // Pattern: $item@Type of $items with { metadata }\n // ^^^^^ ^^^^ ^^^^^^ ^^^^^^^^^^^^^^^\n // name type expr metadata (optional)\n // Note: Type can include dots for namespaced types like \"app.table.Row\"\n const pattern = /^\\$(\\w+)@([\\w.[\\]{}:,\\s]+)\\s+of\\s+(.+?)(?:\\s+with\\s*\\{([^}]+)})?$/;\n const match = specWithoutTrackBy.match(pattern);\n\n if (!match) {\n throw new Error(\n `Invalid for-loop syntax: \"${spec}\". Expected format: \"$item@Type of $items\" or \"$item@Type of $items with { index: $i }\"`,\n );\n }\n\n const [, itemName, typeStr, itemsExpr, metadataStr] = match;\n\n // Validate and process trackBy\n // null = no trackBy specified (use index)\n // \"\" = trackBy $var (use item value directly for primitives)\n // \"id\" or \"user.id\" = trackBy $var.property (use property path)\n let processedTrackBy: string | null = null;\n if (trackBy !== null) {\n // trackBy is in format \"variableName\" or \"variableName.property.path\"\n const parts = trackBy.split('.');\n const variableName = parts[0];\n\n // Validate that trackBy references the loop variable\n if (variableName !== itemName) {\n throw new Error(`trackBy must reference loop variable $${itemName}, got $${variableName}`);\n }\n\n // Extract the property path (everything after the variable name)\n // If parts.length === 1, it's just the variable (primitive array) -> \"\" (use item value)\n // If parts.length > 1, it's a property path -> \"id\" or \"user.id\"\n processedTrackBy = parts.length > 1 ? parts.slice(1).join('.') : '';\n }\n\n return {\n itemName,\n itemType: typeStr.trim(),\n itemsExpr,\n metadata: metadataStr ? parseMetadata(metadataStr) : {},\n trackBy: processedTrackBy,\n };\n}\n\n/**\n * Unfolds the new for-loop syntax into a ForComputationSchema\n * Supports: for: \"$item@Type of $items\" or for: [\"$item1@Type1 of $items1\", \"$item2@Type2 of $items2\"]\n */\nexport function unfoldForWithNewSyntax(schema: unknown): ComputationSchema | null {\n if (!isObject(schema) || !('for' in schema)) {\n return null;\n }\n\n const forSpec = schema['for'];\n const specs = Array.isArray(forSpec) ? forSpec : [forSpec];\n\n if (specs.length === 0) {\n throw new Error('For-loop requires at least one dimension');\n }\n\n const dimensions = specs.map((spec) => {\n if (typeof spec !== 'string') {\n throw new Error(`Invalid for-loop spec: ${JSON.stringify(spec)}. Must be a string.`);\n }\n\n const parsed = parseForSpec(spec);\n\n // Parse the type annotation\n // The type can be either:\n // 1. An item type (e.g., \"string\") - we need to wrap in array\n // 2. Already an array type (e.g., \"string[]\") - use as-is\n const parsedType = parseValueType(parsed.itemType);\n const itemsType = parsedType.type === 'array' ? parsedType : { type: 'array' as const, item: parsedType };\n\n return {\n items: unfoldNodeSchema(parsed.itemsExpr, itemsType, []),\n itemsType,\n item: unfoldNodeSchema(parsed.itemName, { type: 'string' }, []),\n index: unfoldNodeSchema(parsed.metadata.index || 'index', { type: 'string' }, []),\n first: unfoldNodeSchema(parsed.metadata.first || null, { type: 'string' }, []),\n last: unfoldNodeSchema(parsed.metadata.last || null, { type: 'string' }, []),\n // trackBy: null = use index, property path (e.g., \"id\") = extract from item\n trackBy: unfoldNodeSchema(parsed.trackBy, { type: 'string' }, []),\n };\n });\n\n // Extract yield: either explicit 'yield' property or all other properties (inline yield)\n let yieldSchema: unknown;\n if ('yield' in schema) {\n yieldSchema = schema['yield'];\n } else {\n // Inline yield: all properties except 'for'\n const { for: _, ...rest } = schema as Record<string, unknown>;\n yieldSchema = rest;\n }\n\n const normalizedYield = unfoldNodeSchema(yieldSchema, { type: 'componentSchema' }, []);\n\n const result: ForComputationSchema = {\n computationType: 'for',\n dimensions,\n yield: normalizedYield,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n\n return result;\n}\n","import { ComputationSchema, IfComputationSchema } from '@kaskad/types';\n\nimport { IfComputationRecipe } from '../../types/raw-schemas';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\nexport function unfoldIfComputationSchema(schema: IfComputationRecipe): ComputationSchema {\n if (schema.if === undefined) {\n throw new Error('If computation requires the \"if\" field.');\n }\n\n const result: IfComputationSchema = {\n computationType: 'if',\n if: unfoldNodeSchema(schema.if, { type: 'boolean' }, []),\n then: createBranch(schema.then),\n else: createBranch(schema.else),\n [Symbol.for('type')]: 'ComputationSchema',\n };\n return result;\n}\n\nfunction createBranch(schema: unknown = null) {\n return unfoldNodeSchema(schema, { type: 'componentSchema' }, []);\n}\n","import { ComponentRef, TemplateComputationSchema } from '@kaskad/types';\n\nimport { Defer } from '../../types/component-schema';\nimport { isObject } from '../../util/is-object';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\ntype TemplateFullRawSchema = {\n readonly computationType: 'template';\n readonly path: string;\n readonly ref?: ComponentRef;\n readonly _defer?: Defer;\n} & Record<string, unknown>;\n\nexport function unfoldImportComputationSchema(schema: unknown): TemplateComputationSchema | null {\n if (!isObject(schema) || !('computationType' in schema)) {\n return null;\n }\n\n const { path, ref, computationType, _defer, ...contractVariables } = schema as TemplateFullRawSchema;\n if (!path) {\n throw new Error(`Import resolver requires a path field.`);\n }\n\n const defer = _defer\n ? {\n placeholder: unfoldNodeSchema(_defer.placeholder || null, { type: 'component' }, []),\n error: unfoldNodeSchema(_defer.error || null, { type: 'component' }, []),\n }\n : null;\n\n return {\n computationType,\n path,\n defer,\n ref,\n contractVariables,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n}\n","import { ComputationSchema, FormulaComputationSchema } from '@kaskad/types';\n\nexport function unfoldInterpolationComputationSchema(schema: string): ComputationSchema | null {\n const args = stringToFuncArgs(schema);\n return { computationType: 'formula', formula: `concat(${args})` } as FormulaComputationSchema;\n}\n\nexport function replaceInterpolationsInFormula(formula: string): string {\n // Replace {{}} inside single-quoted string literals\n let result = formula.replace(/'([^']*\\{\\{.*?\\}\\}[^']*)'/g, (_, content) => {\n return `concat(${stringToFuncArgs(content)})`;\n });\n // Replace {{}} inside double-quoted string literals\n result = result.replace(/\"([^\"]*\\{\\{.*?\\}\\}[^\"]*)\"/g, (_, content) => {\n return `concat(${stringToFuncArgs(content)})`;\n });\n // Strip bare {{}} delimiters (expression is already valid formula syntax)\n result = result.replace(/\\{\\{(.*?)\\}\\}/g, (_, expr) => expr.trim());\n return result;\n}\n\nfunction stringToFuncArgs(str: string): string {\n const result: string[] = [];\n let currentIndex = 0;\n\n while (currentIndex < str.length) {\n const startBrace = str.indexOf('{{', currentIndex);\n\n if (startBrace === -1) {\n const remaining = str.slice(currentIndex);\n if (remaining) result.push(`'${remaining}'`);\n break;\n }\n\n const before = str.slice(currentIndex, startBrace);\n if (before) result.push(`'${before}'`);\n\n const endBrace = str.indexOf('}}', startBrace);\n if (!endBrace) {\n result.push(str);\n break;\n }\n\n const template = str.slice(startBrace + 2, endBrace).trim();\n if (template) result.push(template);\n\n currentIndex = endBrace + 2;\n }\n return '[' + result.join(', ') + ']';\n}\n","import {\n ComponentSchemaNodeSchema,\n ComputationSchema,\n FormulaComputationSchema,\n SwitchComputationSchema,\n} from '@kaskad/types';\n\nimport { FormulaComputationRecipe, IfComputationRecipe, SwitchComputationRecipe } from '../../types/raw-schemas';\nimport { isObject } from '../../util/is-object';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\nimport { unfoldForComputationSchema as unfoldFor } from './unfold-for';\nimport { unfoldForWithNewSyntax } from './unfold-for-new-syntax';\nimport { unfoldIfComputationSchema as unfoldIf } from './unfold-if';\nimport { unfoldImportComputationSchema as unfoldTemplate } from './unfold-import';\nimport { replaceInterpolationsInFormula, unfoldInterpolationComputationSchema } from './unfold-interpolation';\n\nconst unfoldFormula = (schema: FormulaComputationRecipe): ComputationSchema => {\n const result: FormulaComputationSchema = {\n computationType: 'formula',\n formula: schema.formula,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n return result;\n};\n\nconst unfoldSwitch = (schema: SwitchComputationRecipe): SwitchComputationSchema => {\n return {\n computationType: 'switch',\n source: unfoldNodeSchema(schema.source, { type: 'unknown' }, []),\n cases: schema.cases.map((c) => {\n return {\n equals: c.equals,\n then: unfoldNodeSchema(c.then, { type: 'componentSchema' }) as ComponentSchemaNodeSchema,\n };\n }),\n default: unfoldNodeSchema(schema.default, { type: 'componentSchema' }) as ComponentSchemaNodeSchema,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n};\n\nexport function unfoldComputationSchema(schema: unknown): ComputationSchema | null {\n if (typeof schema === 'string') {\n if (schema.startsWith('=> ')) {\n let formula = schema.slice(3);\n if (formula.includes('{{')) {\n formula = replaceInterpolationsInFormula(formula);\n }\n return { computationType: 'formula', formula } as FormulaComputationSchema;\n }\n\n if (schema.includes('{{') && schema.includes('}}')) {\n return unfoldInterpolationComputationSchema(schema);\n }\n }\n\n // Check for new for-loop syntax (before computationType check)\n if (isObject(schema) && 'for' in schema && !('computationType' in schema)) {\n return unfoldForWithNewSyntax(schema);\n }\n\n if (!isObject(schema) || !('computationType' in schema)) {\n return null;\n }\n\n if (isUnfoldedComputationSchema(schema)) {\n return schema;\n }\n\n const computationUnfolders: Record<string, (schema: unknown) => ComputationSchema | null> = {\n formula: (schema) => unfoldFormula(schema as FormulaComputationRecipe),\n for: (schema) => unfoldFor(schema),\n template: (schema) => unfoldTemplate(schema),\n if: (schema) => unfoldIf(schema as IfComputationRecipe),\n switch: (schema) => unfoldSwitch(schema as SwitchComputationRecipe),\n };\n\n const unfolder = computationUnfolders[schema['computationType'] as string];\n if (unfolder) {\n return unfolder(schema);\n }\n\n const ct = isObject(schema) && 'computationType' in schema ? ` \"${schema['computationType']}\"` : '';\n throw new Error(`Unknown computation type${ct}`);\n}\n\nfunction isUnfoldedComputationSchema(schema: unknown): schema is ComputationSchema {\n return isObject(schema) && Symbol.for('type') in schema;\n}\n","import { BindingSchema } from '@kaskad/types';\n\nconst MIRROR_PATTERN = /^<=>\\s*(\\S+)$/;\nconst SELECTION_PATTERN = /^<#>\\s*(\\S+)->\\((\\$\\w+),\\s*(\\$\\w+)\\)$/;\nconst OBJECT_PATTERN = /^<\\{\\}>\\s*(\\S+)->\\((\\$\\w+),\\s*(\\$\\w+)\\)$/;\nconst ARRAY_PATTERN = /^<\\[\\]>\\s*(\\S+)->\\((\\$\\w+)\\)$/;\n\nexport function parseBindingShorthand(value: string): BindingSchema | null {\n let match: RegExpMatchArray | null;\n\n match = value.match(MIRROR_PATTERN);\n if (match) {\n return { bindingType: 'mirror', selector: match[1] };\n }\n\n match = value.match(SELECTION_PATTERN);\n if (match) {\n return {\n bindingType: 'selection',\n componentSelector: match[1],\n mapping: { key: match[2], selected: match[3] },\n };\n }\n\n match = value.match(OBJECT_PATTERN);\n if (match) {\n return {\n bindingType: 'object',\n componentSelector: match[1],\n mapping: { key: match[2], value: match[3] },\n };\n }\n\n match = value.match(ARRAY_PATTERN);\n if (match) {\n return {\n bindingType: 'array',\n componentSelector: match[1],\n mapping: { value: match[2] },\n };\n }\n\n return null;\n}\n\nexport function isBindingShorthand(value: string): boolean {\n return value.startsWith('<=>') || value.startsWith('<#>') || value.startsWith('<{}>') || value.startsWith('<[]>');\n}\n","import { DefinitionStore } from '@kaskad/definition';\n\nimport { ComponentRecipe, TemplateRecipe } from '../types/component-schema';\nimport { isObject } from '../util/is-object';\nimport { RawNode } from './to-full-notation';\n\ntype WrapperEntity = [string, Record<string, unknown>];\n\ntype ComposedSchema =\n | ComponentRecipe\n | RawNode\n | {\n computationType: string;\n [x: string]: unknown;\n };\n\nexport const WrapperPrefix = '+';\nexport const PathSymbol = '/';\n\nexport function unfoldFlatWrappers(wrappers: WrapperEntity[], schema: ComposedSchema, resultingNode: RawNode): RawNode {\n const composed = wrappers\n .reverse()\n .reduce<ComposedSchema>((composed, wrapper) => unfoldWrapper(wrapper, composed), schema);\n\n if ('computationType' in composed) {\n resultingNode._computation = composed;\n } else {\n resultingNode._value = composed;\n }\n\n return resultingNode;\n}\n\nfunction unfoldWrapper(wrapper: WrapperEntity, schema: ComposedSchema): ComposedSchema {\n const [componentType, props] = wrapper;\n\n if (componentType.includes(PathSymbol)) {\n return {\n computationType: 'template',\n path: componentType,\n ...props,\n slot: schema,\n };\n }\n\n const slot = getComponentSlot(componentType);\n\n return {\n componentType,\n ...props,\n [slot]: {\n ...schema,\n },\n };\n}\n\nfunction getComponentSlot(wrapperType: string): string {\n const props = DefinitionStore.getInstance().getComputedComponentContract(wrapperType);\n\n const componentSlots = Object.entries(props)\n .filter(([, prop]) => prop.valueType.type === 'component')\n .map(([key]) => key);\n\n if (!componentSlots.length) {\n throw new Error(`No component slot found for wrapper: \"${wrapperType}\"`);\n }\n\n if (componentSlots.length > 1) {\n const defaultSlot = DefinitionStore.getInstance().getComponent(wrapperType)?.defaultSlot;\n if (!defaultSlot) {\n throw new Error(`Multiple component slots found for wrapper: \"${wrapperType}\". Please specify a default slot.`);\n }\n return defaultSlot;\n }\n\n return componentSlots[0];\n}\n\nexport function extractWrappers(\n schema: ComponentRecipe | TemplateRecipe,\n): [WrapperEntity[], ComponentRecipe | TemplateRecipe] {\n const wrappers: WrapperEntity[] = [];\n\n const shallow = { ...schema };\n\n for (const key in shallow) {\n if (key.startsWith(WrapperPrefix)) {\n const wrapperType = key.slice(1);\n const wrapperProps = shallow[key] || {};\n\n if (!isObject(wrapperProps)) {\n throw new Error(`Properties for wrapper \"${wrapperType}\" must be an object`);\n }\n\n wrappers.push([wrapperType, wrapperProps]);\n delete shallow[key];\n }\n }\n\n return [wrappers, shallow];\n}\n\nexport function hasWrappers(schema: ComponentRecipe | TemplateRecipe): boolean {\n return Object.keys(schema).some((key) => key.startsWith(WrapperPrefix));\n}\n","import { BindingSchema, ValueType } from '@kaskad/types';\n\nimport { ComponentRecipe, TemplateRecipe } from '../types/component-schema';\nimport { isBindingShorthand, parseBindingShorthand } from './parse-binding-shorthand';\nimport { extractWrappers, hasWrappers, unfoldFlatWrappers } from './unfold-flat-wrapper-notation';\n\nexport type RawNode = {\n _valueType: ValueType;\n _value: unknown;\n _computation: unknown;\n _binding: unknown;\n};\n\nexport function toFullNotation(nodeSchema: unknown, valueType: ValueType): RawNode {\n const rawNode: RawNode = {\n _valueType: valueType,\n _value: null,\n _computation: null,\n _binding: null,\n };\n\n if (nodeSchema === null) {\n rawNode._value = null;\n return rawNode;\n }\n\n if (typeof nodeSchema === 'string') {\n if (nodeSchema.includes('{{') && nodeSchema.includes('}}')) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if (nodeSchema === '=>') {\n rawNode._value = '=>';\n return rawNode;\n }\n\n if (nodeSchema.startsWith('=> ')) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if (isBindingShorthand(nodeSchema)) {\n const binding = parseBindingShorthand(nodeSchema);\n if (binding) {\n rawNode._binding = binding;\n return rawNode;\n }\n }\n }\n\n if (Array.isArray(nodeSchema) && valueType.type === 'string') {\n const desugared = desugarStringArray(nodeSchema);\n return toFullNotation(desugared, valueType);\n }\n\n if (typeof nodeSchema !== 'object') {\n rawNode._value = nodeSchema;\n return rawNode;\n }\n\n if ('computationType' in nodeSchema) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if ('bindingType' in nodeSchema) {\n rawNode._binding = nodeSchema as BindingSchema;\n return rawNode;\n }\n\n const isFullNotation = ['_valueType', '_value', '_computation', '_binding'].some((key) => key in nodeSchema);\n if (isFullNotation) {\n if ('_value' in nodeSchema) rawNode._value = nodeSchema._value;\n if ('_computation' in nodeSchema) rawNode._computation = nodeSchema._computation;\n if ('_binding' in nodeSchema) rawNode._binding = nodeSchema._binding as BindingSchema;\n return rawNode;\n }\n\n // detect 'if' short notation\n // TODO: change to _if to isolate keyword)\n if ('if' in nodeSchema) {\n if ('for' in nodeSchema) {\n throw new Error('\"if\" and \"for\" cannot be used on the same node. Nest them on separate levels.');\n }\n const computation: Record<string, unknown> = {\n computationType: 'if',\n if: nodeSchema.if,\n then: null,\n else: null,\n };\n\n if (!('then' in nodeSchema) && !('else' in nodeSchema)) {\n const { if: _, ...thenSchema } = nodeSchema;\n computation['then'] = thenSchema;\n } else {\n if ('then' in nodeSchema) {\n computation['then'] = nodeSchema['then'];\n }\n if ('else' in nodeSchema) {\n computation['else'] = nodeSchema['else'];\n }\n }\n\n rawNode._computation = computation;\n return rawNode;\n }\n\n // detect new 'for' syntax\n if ('for' in nodeSchema) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if ('templateUrl' in nodeSchema) {\n const schema = nodeSchema as TemplateRecipe;\n if (hasWrappers(schema)) {\n const [wrappers, cleanedSchema] = extractWrappers(schema);\n return unfoldFlatWrappers(wrappers, toFullNotation(cleanedSchema, valueType), rawNode);\n }\n\n const { templateUrl: path, ...rest } = nodeSchema;\n rawNode._computation = { computationType: 'template', path, ...rest };\n\n return rawNode;\n }\n\n if (hasWrappers(nodeSchema as ComponentRecipe)) {\n const [wrappers, cleanedSchema] = extractWrappers(nodeSchema as ComponentRecipe);\n return unfoldFlatWrappers(wrappers, toFullNotation(cleanedSchema, valueType), rawNode);\n }\n\n rawNode._value = nodeSchema;\n return rawNode;\n}\n\nfunction desugarStringArray(items: unknown[]): string {\n if (items.length === 0) return '';\n if (items.length === 1) return items[0] as string;\n\n for (const item of items) {\n if (typeof item !== 'string') {\n throw new Error(`styleClass array items must be strings, got ${typeof item}: ${JSON.stringify(item)}`);\n }\n }\n\n const strings = items as string[];\n const hasFormula = strings.some((s) => s.startsWith('=> '));\n\n if (!hasFormula) return strings.join(' ');\n\n const parts = strings.map((s) => (s.startsWith('=> ') ? s.slice(3) : `'${s}'`));\n return `=> concat([${parts.join(', ')}], ' ')`;\n}\n","import { ValueType } from '@kaskad/types';\n\nimport { UnfoldCtx } from './unfold-node-value';\n\nexport function throwUnfoldError(ctx: UnfoldCtx): never {\n const expected = formatValueType(ctx.valueType);\n const actual = formatActualValue(ctx.rawValue);\n const path = ctx.nodePath.length ? ` at path \"${ctx.nodePath.join('.')}\"` : '';\n\n throw new Error(`Type mismatch${path}: expected ${expected}, got ${actual}`);\n}\n\nfunction formatValueType(vt: ValueType): string {\n switch (vt.type) {\n case 'array':\n return `${formatValueType(vt.item)}[]`;\n case 'map':\n return `${formatValueType(vt.item)}{}`;\n case 'set':\n return `Set<${formatValueType(vt.item)}>`;\n case 'shape':\n case 'variantShape':\n return vt.shapeType;\n default:\n return vt.type;\n }\n}\n\nexport function formatActualValue(v: unknown): string {\n if (v === null) return 'null';\n if (v === undefined) return 'undefined';\n\n if (Array.isArray(v)) return `array (length ${v.length})`;\n\n switch (typeof v) {\n case 'string':\n return v.length > 30 ? `string (\"${v.slice(0, 30)}...\")` : `string (\"${v}\")`;\n case 'number':\n case 'boolean':\n return `${typeof v} (${v})`;\n case 'object': {\n const keys = Object.keys(v);\n return keys.length <= 5 ? `object { ${keys.join(', ')} }` : `object (${keys.length} keys)`;\n }\n default:\n return typeof v;\n }\n}\n","import { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport const unfoldBoolean = (ctx: UnfoldCtx) => {\n if (typeof ctx.rawValue !== 'boolean') {\n throwUnfoldError(ctx);\n }\n return ctx.rawValue;\n};\n","import { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldNumber(ctx: UnfoldCtx) {\n if (!isValidNumber(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n return ctx.rawValue;\n}\n\nfunction isValidNumber(value: unknown) {\n return typeof value === 'number' && !isNaN(value);\n}\n","import { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldString(ctx: UnfoldCtx) {\n if (typeof ctx.rawValue !== 'string') {\n throwUnfoldError(ctx);\n }\n return ctx.rawValue;\n}\n","import { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldUnknown(ctx: UnfoldCtx) {\n return ctx.rawValue;\n}\n","import { ArrayValueType } from '@kaskad/types';\n\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldArray(ctx: UnfoldCtx<ArrayValueType>) {\n if (!Array.isArray(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n return ctx.rawValue.map((item, index) => unfoldNodeSchema(item, ctx.valueType.item, [...ctx.nodePath, index]));\n}\n","import { MapValueType, NodeSchema } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldMap(ctx: UnfoldCtx<MapValueType>) {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n return Object.entries(ctx.rawValue).reduce<Record<string, NodeSchema>>((structure, [key, child]) => {\n structure[key] = unfoldNodeSchema(child, ctx.valueType.item, [...ctx.nodePath, key]);\n return structure;\n }, {});\n}\n","import { NodeSchema, ObjectValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldObject(ctx: UnfoldCtx<ObjectValueType>) {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n const rawObject = ctx.rawValue as Record<string, unknown>;\n\n return Object.entries(ctx.valueType.fields).reduce<Record<string, NodeSchema>>(\n (structure, [fieldKey, fieldValueType]) => {\n const fieldValue = fieldKey in rawObject ? rawObject[fieldKey] : null;\n structure[fieldKey] = unfoldNodeSchema(fieldValue, fieldValueType, [...ctx.nodePath, fieldKey]);\n return structure;\n },\n {},\n );\n}\n","import { AnyFn, CommandValue, CommandValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldCommand(ctx: UnfoldCtx<CommandValueType>): CommandValue {\n const rawValue = ctx.rawValue;\n\n if (typeof rawValue === 'string') {\n return { runnerType: 'js', target: rawValue, owner: null };\n }\n\n if (isObject(rawValue) && 'runnerType' in rawValue && 'target' in rawValue) {\n if (typeof rawValue['runnerType'] !== 'string') {\n throw new Error(`Command schema is invalid. Field \"runnerType\" must be string.`);\n }\n if (!rawValue['target']) {\n throw new Error(`Command schema is invalid. Field \"target\" must be defined.`);\n }\n return rawValue as CommandValue;\n }\n\n if (typeof rawValue === 'function') {\n return { runnerType: 'inline', target: rawValue as AnyFn, owner: null };\n }\n\n throwUnfoldError(ctx);\n}\n","import { Delimiters } from '@kaskad/config';\nimport { DefinitionStore } from '@kaskad/definition';\n\nimport { ComponentRecipe } from '../../../types/component-schema';\n\nexport function validateProps(rawSchema: ComponentRecipe) {\n const componentDefinitionProps = DefinitionStore.getInstance().getComputedComponentContract(rawSchema.componentType);\n const ignoredSchemaProps = new Set([\n 'componentType',\n 'onNodeChange',\n 'ref',\n 'contract',\n 'defaultSlot',\n 'context',\n 'types',\n 'importTypes',\n ]);\n\n const invalidProps = Object.keys(rawSchema).filter(\n (prop) => !componentDefinitionProps[prop] && !ignoredSchemaProps.has(prop) && !prop.startsWith(Delimiters.Variable),\n );\n\n if (invalidProps.length) {\n throw new Error(\n `Component schema \"${rawSchema.componentType}\" contains unknown properties: ${invalidProps.join(', ')}`,\n );\n }\n}\n","import { ComponentSchemaValueType } from '@kaskad/types';\n\nimport { ComponentRecipe } from '../../../types/component-schema';\nimport { isObject } from '../../../util/is-object';\nimport { UnfoldCtx } from '../unfold-node-value';\nimport { validateProps } from './validate-props';\n\nexport function unfoldComponentSchema(ctx: UnfoldCtx<ComponentSchemaValueType>) {\n if (!isObject(ctx.rawValue)) {\n throw new Error('Unfolded component schema type');\n }\n const componentRawSchema = ctx.rawValue as ComponentRecipe;\n\n if (!componentRawSchema.componentType) {\n componentRawSchema.componentType = 'browser.Element';\n }\n\n validateProps(componentRawSchema);\n\n return componentRawSchema;\n}\n","import { NodeSchema, ValueType } from '@kaskad/types';\n\nimport { isObject } from '../util/is-object';\nimport { parsePropertyKeyShorthand } from './parse-property-key-shorthand';\nimport { toFullNotation } from './to-full-notation';\nimport { isUnfoldedNodeSchema, unfoldNodeSchema } from './unfold-node-schema';\n\nexport function unfoldProperty(keyEx: string, rawSchema: unknown): [string, NodeSchema] {\n if (isUnfoldedNodeSchema(rawSchema)) {\n return [keyEx, rawSchema];\n }\n if (keyEx.includes('@')) {\n const [key, valueType] = parsePropertyKeyShorthand(keyEx);\n const nodeSchema = unfoldNodeSchema(toFullNotation(rawSchema, valueType), valueType, [key]);\n return [key, nodeSchema];\n }\n\n if (isObject(rawSchema) && '_valueType' in rawSchema) {\n const valueType = rawSchema['_valueType'] as ValueType; // TODO: check if valueType is valid\n const nodeSchema = unfoldNodeSchema(rawSchema, valueType, [keyEx]);\n return [keyEx, nodeSchema];\n }\n\n throw new Error(\n `Invalid schema notation for key \"${keyEx}\": expected object with type annotation or componentType, got ${typeof rawSchema}`,\n );\n}\n","import { Delimiters } from '@kaskad/config';\nimport { DefinitionStore } from '@kaskad/definition';\nimport { ComponentNodeValue, NodeChangeHandlerSchema, NodeSchema } from '@kaskad/types';\n\nimport { ComponentRecipe } from '../../../types/component-schema';\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { unfoldProperty } from '../../unfold-property';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\nimport { validateProps } from './validate-props';\n\nexport function unfoldComponent(ctx: UnfoldCtx): ComponentNodeValue {\n if (typeof ctx.rawValue === 'string' && ctx.rawValue.startsWith('csid-')) {\n return ctx.rawValue;\n }\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n const componentRawSchema = ctx.rawValue as ComponentRecipe;\n\n if (!componentRawSchema.componentType) {\n componentRawSchema.componentType = 'browser.Element';\n }\n\n validateProps(componentRawSchema);\n\n const properties = DefinitionStore.getInstance().getComputedComponentContract(componentRawSchema.componentType);\n\n const props = new Map<string, NodeSchema>();\n for (const [key, baseSchema] of Object.entries(properties)) {\n if (!(key in componentRawSchema)) {\n props.set(key, baseSchema);\n continue;\n }\n\n const unfoldedRawSchema = unfoldNodeSchema(componentRawSchema[key], baseSchema.valueType, [...ctx.nodePath, key]);\n\n const node = {\n valueType: baseSchema.valueType,\n value: unfoldedRawSchema.value ?? baseSchema.value,\n computation: unfoldedRawSchema.computation || baseSchema.computation,\n binding: unfoldedRawSchema.binding || baseSchema.binding,\n } as NodeSchema;\n\n props.set(key, node);\n }\n\n const variables = new Map<string, NodeSchema>();\n for (const [keyEx, schema] of Object.entries(componentRawSchema)) {\n if (!keyEx.startsWith(Delimiters.Variable)) {\n continue;\n }\n\n const variableKeyEx = keyEx.slice(Delimiters.Variable.length);\n const [key, unfolded] = unfoldProperty(variableKeyEx, schema);\n variables.set(key, unfolded);\n }\n\n const rawHandlers = componentRawSchema.onNodeChange || [];\n const onNodeChange: NodeChangeHandlerSchema[] = rawHandlers.map((handler) => {\n if (!handler.selector) {\n throw new Error(`onNodeChange handler \"${JSON.stringify(handler)}\" is missing required selector.`);\n }\n if (!handler.command) {\n throw new Error(`onNodeChange handler \"${JSON.stringify(handler)}\" is missing required command.`);\n }\n\n return {\n selector: handler.selector,\n command: unfoldNodeSchema(handler.command, { type: 'command' }, ctx.nodePath),\n };\n });\n\n return {\n componentType: componentRawSchema.componentType,\n ref: componentRawSchema.ref || '',\n props,\n variables,\n onNodeChange,\n };\n}\n","import { SetValueType } from '@kaskad/types';\n\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldSet(ctx: UnfoldCtx<SetValueType>) {\n const items =\n ctx.rawValue instanceof Set ? Array.from(ctx.rawValue) : Array.isArray(ctx.rawValue) ? ctx.rawValue : [];\n\n return items.map((item, index) => unfoldNodeSchema(item, ctx.valueType.item, [...ctx.nodePath, index]));\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport { ShapeValue, ShapeValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\nimport { unfoldObject } from './unfold-object';\n\nexport function unfoldShape(ctx: UnfoldCtx<ShapeValueType>): ShapeValue {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n const rawValue = ctx.rawValue as Record<string, unknown>;\n const objectValueType = DefinitionStore.getInstance().getShape(ctx.valueType.shapeType);\n return unfoldObject({ rawValue, valueType: objectValueType, nodePath: ctx.nodePath });\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport { NodeSchema, VariantShapeValue, VariantShapeValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nfunction unfoldShortValidatorSyntax(rawValue: Record<string, unknown>) {\n if ('validatorType' in rawValue) {\n return rawValue;\n }\n\n const entries = Object.entries(rawValue);\n const validatorEntries = entries.filter(([key]) => key !== 'message' && key !== 'disabled');\n\n if (validatorEntries.length === 0) {\n throw new Error(\n `Validator must have at least one validator type specified. Raw value: ${JSON.stringify(rawValue)}`,\n );\n }\n if (validatorEntries.length > 1) {\n throw new Error(`Validator can only have one validator type specified. Raw value: ${JSON.stringify(rawValue)}`);\n }\n\n const [validatorType, param] = validatorEntries[0];\n\n const validator = {\n validatorType,\n params: {},\n message: rawValue['message'] || '',\n disabled: !!rawValue['disabled'],\n };\n\n if (isObject(param)) {\n validator.params = param;\n } else {\n validator.params = { [validatorType]: param };\n }\n\n return validator;\n}\n\nexport function unfoldVariantShape(ctx: UnfoldCtx<VariantShapeValueType>): VariantShapeValue {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n let rawValue = ctx.rawValue as Record<string, unknown>;\n\n if ('kind' in rawValue && 'fields' in rawValue) {\n const kindKey = `${ctx.valueType.shapeType}Type`;\n const kind = rawValue['kind'] as string;\n const fields = rawValue['fields'] as Record<string, unknown>;\n\n return {\n ...fields,\n [kindKey]: kind,\n } as VariantShapeValue;\n }\n\n const kindKey = `${ctx.valueType.shapeType}Type`;\n\n if (kindKey === 'validatorType') {\n rawValue = unfoldShortValidatorSyntax(rawValue);\n }\n\n const kind = rawValue[kindKey] as string;\n\n if (!kind) {\n throw new Error(`Missing the kind field \"${kindKey}\" in ${ctx.valueType.shapeType} variant shape`);\n }\n\n const objectValueType = DefinitionStore.getInstance().getVariantShape(ctx.valueType.shapeType, kind);\n\n const objectNode = unfoldNodeSchema(rawValue, objectValueType, ctx.nodePath);\n return {\n ...(objectNode.value as Record<string, NodeSchema>),\n [kindKey]: kind,\n };\n}\n","import { NodePath, NodeSchema, ValueType } from '@kaskad/types';\n\nimport {\n unfoldArray,\n unfoldBoolean,\n unfoldCommand,\n unfoldComponent,\n unfoldComponentSchema,\n unfoldMap,\n unfoldNumber,\n unfoldObject,\n unfoldString,\n unfoldUnknown,\n} from './handlers';\nimport { unfoldSet } from './handlers/unfold-set';\nimport { unfoldShape } from './handlers/unfold-shape';\nimport { unfoldVariantShape } from './handlers/unfold-variant-shape';\nimport { formatActualValue } from './throw-unfold-value-error';\n\nexport type UnfoldCtx<T extends ValueType = ValueType> = {\n rawValue: unknown;\n valueType: T;\n nodePath: NodePath;\n};\n\nexport type Handler = (ctx: UnfoldCtx) => NodeSchema['value'];\n\nconst handlers: Record<ValueType['type'], unknown> = {\n unknown: unfoldUnknown,\n number: unfoldNumber,\n string: unfoldString,\n boolean: unfoldBoolean,\n array: unfoldArray,\n map: unfoldMap,\n set: unfoldSet,\n object: unfoldObject,\n shape: unfoldShape,\n variantShape: unfoldVariantShape,\n command: unfoldCommand,\n componentSchema: unfoldComponentSchema,\n component: unfoldComponent,\n};\n\nexport function unfoldValue(ctx: UnfoldCtx) {\n const handler = handlers[ctx.valueType.type] as Handler;\n if (!handler) {\n throw new Error(\n `Cannot unfold value (${formatActualValue(ctx.rawValue)}). Unknown value type \"${ctx.valueType.type}\"`,\n );\n }\n if (ctx.rawValue === undefined || ctx.rawValue === null) {\n return null;\n }\n return handler(ctx);\n}\n","import { BindingSchema, NodePath, NodeSchema, NodeSchemaBase, ValueType } from '@kaskad/types';\n\nimport { isObject } from '../util/is-object';\nimport { unfoldComputationSchema } from './computation/unfold-computation-schema';\nimport { toFullNotation } from './to-full-notation';\nimport { unfoldValue } from './value/unfold-node-value';\n\nexport function unfoldNodeSchema(rawSchema: unknown, valueType: ValueType, nodePath: NodePath = []): NodeSchema {\n if (isUnfoldedNodeSchema(rawSchema)) {\n return rawSchema;\n }\n\n const node: NodeSchemaBase = {\n valueType,\n value: null,\n computation: null,\n binding: null,\n [Symbol.for('type')]: 'NodeSchema',\n };\n\n const nodeSchema = toFullNotation(rawSchema, valueType);\n\n if ('_binding' in nodeSchema) {\n node.binding = nodeSchema['_binding'] as BindingSchema;\n }\n if ('_computation' in nodeSchema) {\n node.computation = unfoldComputationSchema(nodeSchema._computation);\n }\n if ('_value' in nodeSchema) {\n node.value = unfoldValue({\n rawValue: nodeSchema._value,\n valueType,\n nodePath,\n });\n }\n\n return node as NodeSchema;\n}\n\nexport function isUnfoldedNodeSchema(nodeSchema: unknown): nodeSchema is NodeSchema {\n return isObject(nodeSchema) && ['valueType', 'value', 'computation', 'binding'].every((key) => key in nodeSchema);\n}\n","import {\n ArrayNodeSchema,\n ComponentNodeSchema,\n ComponentSchemaNodeSchema,\n isForComputation,\n isIfComputation,\n isSwitchComputation,\n isTemplateComputation,\n NodeSchema,\n ObjectNodeSchema,\n} from '@kaskad/types';\n\nimport { isObject } from '../util/is-object';\n\nexport function extractComponentTypes(schema: NodeSchema, types: Set<string> = new Set()): Set<string> {\n extractFromValue(schema, types);\n extractFromComputations(schema, types);\n\n return types;\n}\n\nfunction extractFromValue(schema: NodeSchema, types: Set<string>) {\n if (!schema.value) {\n return types;\n }\n\n const type = schema.valueType.type;\n\n if (type === 'component') {\n const componentSchema = schema as ComponentNodeSchema;\n if (!isObject(componentSchema.value)) {\n return types;\n }\n\n types.add(componentSchema.value.componentType);\n\n for (const prop of componentSchema.value.props.values()) {\n extractComponentTypes(prop, types);\n }\n for (const variable of componentSchema.value.variables.values()) {\n extractComponentTypes(variable, types);\n }\n }\n\n if (type === 'componentSchema' || type === 'unknown') {\n const componentSchema = schema as ComponentSchemaNodeSchema;\n\n if (isObject(componentSchema.value) && 'componentType' in componentSchema.value) {\n extractFromRawComponentSchema(componentSchema.value, types);\n }\n }\n\n if (type === 'array') {\n const arraySchema = schema as ArrayNodeSchema;\n for (const item of arraySchema.value || []) {\n extractComponentTypes(item, types);\n }\n }\n\n if (type === 'object' || type === 'map') {\n const objectSchema = schema as ObjectNodeSchema;\n for (const prop of Object.values(objectSchema.value || {})) {\n extractComponentTypes(prop, types);\n }\n }\n\n return types;\n}\n\nfunction extractFromComputations(schema: NodeSchema, types: Set<string>) {\n if (!schema.computation) {\n return types;\n }\n\n if (isSwitchComputation(schema.computation)) {\n for (const caseItem of schema.computation.cases) {\n extractComponentTypes(caseItem.then, types);\n }\n extractComponentTypes(schema.computation.default, types);\n }\n\n if (isIfComputation(schema.computation)) {\n extractComponentTypes(schema.computation.then, types);\n extractComponentTypes(schema.computation.else, types);\n }\n\n if (isForComputation(schema.computation)) {\n extractComponentTypes(schema.computation.yield as NodeSchema, types);\n }\n\n if (isTemplateComputation(schema.computation)) {\n if (schema.computation.defer) {\n if (schema.computation.defer.placeholder) {\n extractComponentTypes(schema.computation.defer.placeholder, types);\n }\n if (schema.computation.defer.error) {\n extractComponentTypes(schema.computation.defer.error, types);\n }\n }\n\n for (const variable of Object.values(schema.computation.contractVariables)) {\n if (isObject(variable) || Array.isArray(variable)) {\n extractFromRawComponentSchema(variable, types);\n }\n }\n }\n\n return types;\n}\n\nfunction extractFromRawComponentSchema(schema: Record<string, unknown> | unknown[], types: Set<string>): Set<string> {\n if (Array.isArray(schema)) {\n for (const item of schema) {\n if (isObject(item) || Array.isArray(item)) {\n extractFromRawComponentSchema(item, types);\n }\n }\n return types;\n }\n\n if (isObject(schema)) {\n for (const [key, value] of Object.entries(schema)) {\n if (key === 'componentType' && typeof value === 'string') {\n types.add(value);\n }\n if (isObject(value) || Array.isArray(value)) {\n extractFromRawComponentSchema(value, types);\n }\n }\n }\n\n return types;\n}\n","import { TemplateRecipeDefinition } from '../types/template-raw-definition';\n\ninterface TemplateEntry {\n recipe: TemplateRecipeDefinition;\n ownComponentTypes: Set<string>;\n dependencies: Set<string>;\n}\n\nexport const templateRegistry = {\n entries: new Map<string, TemplateEntry>(),\n\n get(url: string): TemplateEntry | undefined {\n return this.entries.get(url);\n },\n\n getAggregatedComponentTypes(url: string): Set<string> {\n const aggregated = new Set<string>();\n const visited = new Set<string>();\n\n const collect = (currentUrl: string) => {\n if (visited.has(currentUrl)) return;\n visited.add(currentUrl);\n\n const entry = this.entries.get(currentUrl);\n if (!entry) return;\n\n // Add own component types\n for (const type of entry.ownComponentTypes) {\n aggregated.add(type);\n }\n\n // Recursively collect from dependencies\n for (const depUrl of entry.dependencies) {\n collect(depUrl);\n }\n };\n\n collect(url);\n return aggregated;\n },\n\n getAllComponentTypes(): Set<string> {\n const allTypes = new Set<string>();\n\n for (const entry of this.entries.values()) {\n for (const type of entry.ownComponentTypes) {\n allTypes.add(type);\n }\n }\n\n return allTypes;\n },\n\n set(url: string, recipe: TemplateRecipeDefinition, ownComponentTypes: Set<string>, dependencies?: Set<string>) {\n this.entries.set(url, {\n recipe,\n ownComponentTypes,\n dependencies: dependencies || new Set(),\n });\n },\n\n has(url: string): boolean {\n return this.entries.has(url);\n },\n\n reset() {\n this.entries.clear();\n },\n};\n","import { parse } from 'yaml';\n\nimport { TemplateRecipeDefinition } from '../types/template-raw-definition';\n\nexport const withBaseTemplateUrl = (url: string) => `/recipes/${url}.yml`;\n\nexport async function loadRecipe(url: string): Promise<TemplateRecipeDefinition> {\n const response = await fetch(withBaseTemplateUrl(url));\n\n if (response.status === 404) {\n throw new Error(`Schema not found: ${url}`);\n }\n\n const text = await response.text();\n try {\n return parse(text);\n } catch (e) {\n throw new Error(`Failed to parse YAML: ${url}`, { cause: e });\n }\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport { ObjectValueType, ValueType } from '@kaskad/types';\n\nimport { parseValueType } from '../unfolding/parse-value-type';\n\nexport function registerDeclaredType(name: string, definition: string | Record<string, string>): void {\n let properties: Record<string, ValueType>;\n\n if (typeof definition === 'string') {\n const parsed = parseValueType(definition);\n if (parsed.type !== 'object') {\n throw new Error(`Type \"${name}\" must be an object type, got \"${parsed.type}\"`);\n }\n properties = (parsed as ObjectValueType).fields;\n } else {\n properties = {};\n for (const [propName, propType] of Object.entries(definition)) {\n properties[propName] = parseValueType(propType);\n }\n }\n\n const store = DefinitionStore.getInstance();\n const existing = store.shapes[name];\n\n if (existing && !isEqualType(existing.properties, properties)) {\n throw new Error(`Type \"${name}\" is already defined with a different shape`);\n }\n\n store.setShape(name, properties);\n}\n\nfunction isEqualType(a: Record<string, ValueType>, b: Record<string, ValueType>): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n","import { log } from '@kaskad/config';\n\nimport { ComponentRecipe, TemplateRecipe } from '../types/component-schema';\nimport { TemplateRecipeDefinition } from '../types/template-raw-definition';\nimport { PathSymbol, WrapperPrefix } from '../unfolding/unfold-flat-wrapper-notation';\nimport { unfoldNodeSchema } from '../unfolding/unfold-node-schema';\nimport { isObject } from '../util/is-object';\nimport { loadRecipe } from './load-schema';\nimport { registerDeclaredType } from './register-declared-type';\nimport { extractComponentTypes } from './schema-component-extractor';\nimport { templateRegistry } from './template-registry';\n\nconst reservedKeys = new Set(['importTypes', 'types', 'contract', 'defaultSlot']);\n\nfunction isTypeOnlyTemplate(template: Record<string, unknown>): boolean {\n const contentKeys = Object.keys(template).filter((k) => !reservedKeys.has(k));\n return contentKeys.length > 0 && contentKeys.every((k) => k.includes('.'));\n}\n\nexport async function loadTemplates(recipe: TemplateRecipe | ComponentRecipe) {\n // Pass 1: Recursively load all templates and register types immediately\n const allTemplates = new Map<string, TemplateRecipeDefinition>();\n await collectAllTemplates(recipe, allTemplates);\n\n // Register types from the root recipe (after all dependencies are loaded)\n const rootTypes = (recipe as TemplateRecipeDefinition).types;\n if (rootTypes) {\n for (const [key, value] of Object.entries(rootTypes)) {\n if (typeof value === 'string' || isObject(value)) {\n registerDeclaredType(key, value as string | Record<string, string>);\n }\n }\n }\n\n // Pass 2: Unfold and register all templates (types are already registered)\n for (const [url, template] of allTemplates) {\n try {\n const {\n types: _types,\n importTypes: _importTypes,\n contract: _contract,\n defaultSlot: _defaultSlot,\n ...rootRawSchema\n } = template;\n\n // Skip unfolding for type-only templates (all keys are namespaced)\n if (isTypeOnlyTemplate(template)) {\n templateRegistry.set(url, template, new Set(), extractUrls(template));\n continue;\n }\n\n const schema = unfoldNodeSchema(rootRawSchema, { type: 'component' });\n const componentTypes = extractComponentTypes(schema);\n const dependencies = extractUrls(template);\n templateRegistry.set(url, template, componentTypes, dependencies);\n } catch (e) {\n log.error(`Failed to resolve template: ${url}`, e);\n throw new Error(`Failed to resolve template: ${url}`, { cause: e });\n }\n }\n}\n\nasync function collectAllTemplates(\n recipe: TemplateRecipe | ComponentRecipe,\n collected: Map<string, TemplateRecipeDefinition>,\n): Promise<void> {\n const urls = extractUrls(recipe);\n const newUrls = Array.from(urls).filter((url) => !templateRegistry.has(url) && !collected.has(url));\n\n if (newUrls.length === 0) return;\n\n const templates = await Promise.all(newUrls.map((url) => loadRecipe(url)));\n\n // Register types immediately after loading (before recursive collection)\n const pending = new Map<string, string | Record<string, string>>();\n\n for (const template of templates) {\n const isTypeOnlyFile = isTypeOnlyTemplate(template);\n const typesToRegister = isTypeOnlyFile ? template : (template.types ?? {});\n\n for (const [key, value] of Object.entries(typesToRegister)) {\n if (key === 'importTypes') continue;\n\n if (isTypeOnlyFile && !key.includes('.')) {\n throw new Error(`Invalid key \"${key}\" in type-only file. Type names must be namespaced (e.g., \"app.MyType\")`);\n }\n\n if (typeof value !== 'string' && !isObject(value)) {\n throw new Error(`Invalid type definition for \"${key}\". Expected string or object, got ${typeof value}`);\n }\n\n pending.set(key, value as string | Record<string, string>);\n }\n }\n\n // Register with retries to handle forward references between types\n let lastSize = -1;\n while (pending.size > 0 && pending.size !== lastSize) {\n lastSize = pending.size;\n for (const [key, value] of pending) {\n try {\n registerDeclaredType(key, value);\n pending.delete(key);\n } catch {\n // Will retry after other types are registered\n }\n }\n }\n\n for (const [key, value] of pending) {\n try {\n registerDeclaredType(key, value);\n } catch (e) {\n throw new Error(`Failed to register type \"${key}\"`, { cause: e });\n }\n }\n\n for (let i = 0; i < newUrls.length; i++) {\n collected.set(newUrls[i], templates[i]);\n }\n\n // Recursively collect from loaded templates\n await Promise.all(templates.map((t) => collectAllTemplates(t, collected)));\n}\n\nfunction extractUrls(value: unknown, urls: Set<string> = new Set()): Set<string> {\n if (value == null) return urls;\n\n if (Array.isArray(value)) {\n value.forEach((item) => extractUrls(item, urls));\n return urls;\n }\n\n if (!isObject(value)) return urls;\n\n if ('_defer' in value) return urls;\n\n for (const [key, val] of Object.entries(value)) {\n if (key.startsWith(WrapperPrefix) && key.includes(PathSymbol)) {\n urls.add(key.slice(1));\n }\n\n if (key === 'importTypes') {\n if (!Array.isArray(val)) {\n throw new Error(`\"importTypes\" must be an array, got ${typeof val}`);\n }\n for (const url of val) {\n if (typeof url !== 'string') {\n throw new Error(`\"importTypes\" entries must be strings, got ${typeof url}`);\n }\n urls.add(url);\n }\n continue;\n }\n\n if (typeof val !== 'string') {\n extractUrls(val, urls);\n continue;\n }\n\n if (key === 'templateUrl') {\n urls.add(val);\n }\n\n extractUrls(val, urls);\n }\n\n return urls;\n}\n","import { ComponentDefinition } from '@kaskad/definition';\nimport { NodeSchema } from '@kaskad/types';\n\nimport { ComponentRawDefinition } from '../types/component-definition';\nimport { unfoldProperty } from '../unfolding/unfold-property';\n\nexport function unfoldComponentDefinition(rawDefinition: ComponentRawDefinition): ComponentDefinition {\n const properties: Record<string, NodeSchema> = {};\n\n for (const entry of Object.entries(rawDefinition.properties)) {\n const [key, prop] = unfoldProperty(...entry);\n properties[key] = prop;\n }\n\n return {\n traits: rawDefinition.traits,\n properties,\n defaultSlot: rawDefinition.defaultSlot,\n };\n}\n\nexport function unfoldComponentDefinitions(\n rawDefinitions: Record<string, ComponentRawDefinition>,\n): Record<string, ComponentDefinition> {\n const result: Record<string, ComponentDefinition> = {};\n\n for (const [componentType, rawDefinition] of Object.entries(rawDefinitions)) {\n result[componentType] = unfoldComponentDefinition(rawDefinition);\n }\n\n return result;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["unfoldFor","unfoldTemplate","unfoldIf"],"mappings":";;;;;AAAA;AACA;;ACDM,SAAU,QAAQ,CAAC,KAAc,EAAA;IACrC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC;AACxG;;ACQA,MAAM,WAAW,GAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;AAEpG,SAAU,cAAc,CAAC,IAAY,EAAA;IACzC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AAE/B,IAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9C,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;;IAI7C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO;AACL,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;SAC3B;;;AAIH,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO;AACL,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;SAC3B;;AAGH,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;SAC3B;;;AAIH,IAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9C,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAG5C,IAAA,OAAO,gBAAgB,CAAC,IAAgB,CAAC;AAC3C;AAEA,SAAS,gBAAgB,CAAC,IAAY,EAAA;AACpC,IAAA,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAE3C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAA4B,CAAC,GAAG,EAAE,GAAG,KAAI;AACxE,QAAA,IAAI,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC;QAErB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,QAAA,MAAM,WAAW,GAAG,CAAA,kCAAA,EAAqC,GAAG,GAAG;AAE/D,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,CAAA,mCAAA,CAAqC,CAAC;;QAGtE,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,CAAA,6BAAA,CAA+B,CAAC;;QAGhE,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,CAAA,6BAAA,CAA+B,CAAC;;QAGhE,GAAG,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AACzC,QAAA,OAAO,GAAG;KACX,EAAE,EAAE,CAAC;IAEN,OAAO;AACL,QAAA,IAAI,EAAE,QAAQ;QACd,MAAM;KACmB;AAC7B;AAEA,SAAS,iBAAiB,CAAC,IAAY,EAAA;IACrC,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAEpD,OAAO;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;KACJ;AAC9B;AAEA,SAAS,gBAAgB,CAAC,IAAc,EAAA;AACtC,IAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,EAAE,IAAI,EAAe;;IAG9B,IAAI,IAAI,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAChD,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,SAAS,EAAE,IAAI;SACE;;IAGrB,IAAI,IAAI,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE;QACvD,OAAO;AACL,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,SAAS,EAAE,IAAI;SACS;;AAG5B,IAAA,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAA,CAAA,CAAG,CAAC;AAC3C;AAEA,SAAS,iBAAiB,CAAC,GAAW,EAAA;IACpC,MAAM,KAAK,GAAa,EAAE;IAE1B,IAAI,UAAU,GAAG,CAAC;IAClB,IAAI,IAAI,GAAG,EAAE;AAEb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AAEnB,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,YAAA,UAAU,EAAE;YACZ,IAAI,IAAI,IAAI;YACZ;;AAGF,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,YAAA,UAAU,EAAE;YACZ,IAAI,IAAI,IAAI;YACZ;;QAGF,IAAI,IAAI,KAAK,GAAG,IAAI,UAAU,KAAK,CAAC,EAAE;AACpC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI,GAAG,EAAE;;aACJ;YACL,IAAI,IAAI,IAAI;;;AAIhB,IAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAEhB,IAAA,OAAO,KAAK;AACd;;AClJM,SAAU,yBAAyB,CAAC,SAAiB,EAAA;AACzD,IAAA,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAuB;IAC9D,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,GAAG,CAAA,0BAAA,EAA6B,GAAG,CAAA,CAAA,CAAG,CAAC;;IAEzF,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;AACpC;;ACHM,SAAU,0BAA0B,CAAC,MAAe,EAAA;AACxD,IAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC,EAAE;AACvD,QAAA,OAAO,IAAI;;AAEb,IAAA,IAAI,aAAa,GAAG,MAAM,CAAC,YAAY,CAA2B;IAClE,IAAI,aAAa,EAAE;QACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,uBAAA,CAAyB,CAAC;;;SAElG;;AAEL,QAAA,aAAa,GAAG,CAAC,MAA8B,CAAC;;IAGlD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;QACjD,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE;QAExF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAA2B;AAExG,QAAA,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,yBAAyB,CAAC,QAAQ,IAAI,EAAE,CAAC;AACpE,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0CAAA,EAA6C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;;AAGxF,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEpC,OAAO;YACL,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC;YAChD,SAAS;AACT,YAAA,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACpD,YAAA,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACtD,YAAA,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACtD,YAAA,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACpD,YAAA,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACzD;AACH,KAAC,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAElF,IAAA,MAAM,MAAM,GAAyB;AACnC,QAAA,eAAe,EAAE,KAAK;QACtB,UAAU;AACV,QAAA,KAAK,EAAE,eAAe;QACtB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB;KAC1C;AACD,IAAA,OAAO,MAAM;AACf;;ACnCA;;;AAGG;AACH,SAAS,aAAa,CAAC,GAAW,EAAA;IAChC,MAAM,MAAM,GAAsD,EAAE;AACpE,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE;IAE1B,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;;IAGvF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAErD,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACpC,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAA,iCAAA,CAAmC,CAAC;;AAGrF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AAE/C,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAA,iDAAA,CAAmD,CAAC;;QAGnG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAA,sCAAA,CAAwC,CAAC;;AAG5F,QAAA,MAAM,CAAC,GAAiC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAG7D,IAAA,OAAO,MAAM;AACf;AAEA;;;AAGG;AACH,SAAS,YAAY,CAAC,IAAY,EAAA;AAChC,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;;;IAI3B,IAAI,OAAO,GAAkB,IAAI;IACjC,IAAI,kBAAkB,GAAG,OAAO;IAEhC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC;IACrE,IAAI,YAAY,EAAE;QAChB,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3C,QAAA,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;;QAGhE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAC7D,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,CAAA,kDAAA,CAAoD,CAAC;;QAG9G,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;;AAIlC,QAAA,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAG,YAAY,EAAE;;;;;;IAO5C,MAAM,OAAO,GAAG,mEAAmE;IACnF,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC;IAE/C,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,CAAA,uFAAA,CAAyF,CAC3H;;AAGH,IAAA,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,KAAK;;;;;IAM3D,IAAI,gBAAgB,GAAkB,IAAI;AAC1C,IAAA,IAAI,OAAO,KAAK,IAAI,EAAE;;QAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;;AAG7B,QAAA,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,CAAA,sCAAA,EAAyC,QAAQ,CAAA,OAAA,EAAU,YAAY,CAAA,CAAE,CAAC;;;;;QAM5F,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;;IAGrE,OAAO;QACL,QAAQ;AACR,QAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;QACxB,SAAS;AACT,QAAA,QAAQ,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE;AACvD,QAAA,OAAO,EAAE,gBAAgB;KAC1B;AACH;AAEA;;;AAGG;AACG,SAAU,sBAAsB,CAAC,MAAe,EAAA;AACpD,IAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE;AAC3C,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC;AAE1D,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,QAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;IAG7D,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACpC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,mBAAA,CAAqB,CAAC;;AAGtF,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;;;;;QAMjC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,GAAG,UAAU,GAAG,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,UAAU,EAAE;QAEzG,OAAO;YACL,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC;YACxD,SAAS;AACT,YAAA,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC/D,YAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACjF,YAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC9E,YAAA,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;;AAE5E,YAAA,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SAClE;AACH,KAAC,CAAC;;AAGF,IAAA,IAAI,WAAoB;AACxB,IAAA,IAAI,OAAO,IAAI,MAAM,EAAE;AACrB,QAAA,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;;SACxB;;QAEL,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAiC;QAC7D,WAAW,GAAG,IAAI;;AAGpB,IAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;AAEtF,IAAA,MAAM,MAAM,GAAyB;AACnC,QAAA,eAAe,EAAE,KAAK;QACtB,UAAU;AACV,QAAA,KAAK,EAAE,eAAe;QACtB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB;KAC1C;AAED,IAAA,OAAO,MAAM;AACf;;AC5LM,SAAU,yBAAyB,CAAC,MAA2B,EAAA;AACnE,IAAA,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;;AAG5D,IAAA,MAAM,MAAM,GAAwB;AAClC,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACxD,QAAA,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB;KAC1C;AACD,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,YAAY,CAAC,MAAA,GAAkB,IAAI,EAAA;AAC1C,IAAA,OAAO,gBAAgB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;AAClE;;ACTM,SAAU,6BAA6B,CAAC,MAAe,EAAA;AAC3D,IAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC,EAAE;AACvD,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,GAAG,MAA+B;IACpG,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sCAAA,CAAwC,CAAC;;IAG3D,MAAM,KAAK,GAAG;AACZ,UAAE;AACE,YAAA,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACpF,YAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACzE;UACD,IAAI;IAER,OAAO;QACL,eAAe;QACf,IAAI;QACJ,KAAK;QACL,GAAG;QACH,iBAAiB;QACjB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB;KAC1C;AACH;;ACpCM,SAAU,oCAAoC,CAAC,MAAc,EAAA;AACjE,IAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,CAAG,EAA8B;AAC/F;AAEM,SAAU,8BAA8B,CAAC,OAAe,EAAA;;AAE5D,IAAA,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;AACxE,QAAA,OAAO,UAAU,gBAAgB,CAAC,OAAO,CAAC,GAAG;AAC/C,KAAC,CAAC;;AAEF,IAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;AACnE,QAAA,OAAO,UAAU,gBAAgB,CAAC,OAAO,CAAC,GAAG;AAC/C,KAAC,CAAC;;AAEF,IAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AACnE,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,gBAAgB,CAAC,GAAW,EAAA;IACnC,MAAM,MAAM,GAAa,EAAE;IAC3B,IAAI,YAAY,GAAG,CAAC;AAEpB,IAAA,OAAO,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;AAElD,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;AACzC,YAAA,IAAI,SAAS;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA,CAAA,CAAG,CAAC;YAC5C;;QAGF,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC;AAClD,QAAA,IAAI,MAAM;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAA,CAAA,CAAG,CAAC;QAEtC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB;;AAGF,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;AAC3D,QAAA,IAAI,QAAQ;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEnC,QAAA,YAAY,GAAG,QAAQ,GAAG,CAAC;;IAE7B,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;AACtC;;ACjCA,MAAM,aAAa,GAAG,CAAC,MAAgC,KAAuB;AAC5E,IAAA,MAAM,MAAM,GAA6B;AACvC,QAAA,eAAe,EAAE,SAAS;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB;KAC1C;AACD,IAAA,OAAO,MAAM;AACf,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,MAA+B,KAA6B;IAChF,OAAO;AACL,QAAA,eAAe,EAAE,QAAQ;AACzB,QAAA,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAChE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YAC5B,OAAO;gBACL,MAAM,EAAE,CAAC,CAAC,MAAM;AAChB,gBAAA,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAA8B;aACzF;AACH,SAAC,CAAC;AACF,QAAA,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAA8B;QACnG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB;KAC1C;AACH,CAAC;AAEK,SAAU,uBAAuB,CAAC,MAAe,EAAA;AACrD,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC5B,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,OAAO,GAAG,8BAA8B,CAAC,OAAO,CAAC;;AAEnD,YAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAA8B;;AAG5E,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClD,YAAA,OAAO,oCAAoC,CAAC,MAAM,CAAC;;;;AAKvD,IAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,MAAM,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC,EAAE;AACzE,QAAA,OAAO,sBAAsB,CAAC,MAAM,CAAC;;AAGvC,IAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC,EAAE;AACvD,QAAA,OAAO,IAAI;;AAGb,IAAA,IAAI,2BAA2B,CAAC,MAAM,CAAC,EAAE;AACvC,QAAA,OAAO,MAAM;;AAGf,IAAA,MAAM,oBAAoB,GAAkE;QAC1F,OAAO,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,MAAkC,CAAC;QACtE,GAAG,EAAE,CAAC,MAAM,KAAKA,0BAAS,CAAC,MAAM,CAAC;QAClC,QAAQ,EAAE,CAAC,MAAM,KAAKC,6BAAc,CAAC,MAAM,CAAC;QAC5C,EAAE,EAAE,CAAC,MAAM,KAAKC,yBAAQ,CAAC,MAA6B,CAAC;QACvD,MAAM,EAAE,CAAC,MAAM,KAAK,YAAY,CAAC,MAAiC,CAAC;KACpE;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAW,CAAC;IAC1E,IAAI,QAAQ,EAAE;AACZ,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC;;IAGzB,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,iBAAiB,IAAI,MAAM,GAAG,CAAA,EAAA,EAAK,MAAM,CAAC,iBAAiB,CAAC,GAAG,GAAG,EAAE;AACnG,IAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,CAAA,CAAE,CAAC;AAClD;AAEA,SAAS,2BAA2B,CAAC,MAAe,EAAA;AAClD,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM;AACzD;;ACrFA,MAAM,cAAc,GAAG,eAAe;AACtC,MAAM,iBAAiB,GAAG,uCAAuC;AACjE,MAAM,cAAc,GAAG,0CAA0C;AACjE,MAAM,aAAa,GAAG,+BAA+B;AAE/C,SAAU,qBAAqB,CAAC,KAAa,EAAA;AACjD,IAAA,IAAI,KAA8B;AAElC,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;IACnC,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;;AAGtD,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACtC,IAAI,KAAK,EAAE;QACT,OAAO;AACL,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3B,YAAA,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;SAC/C;;AAGH,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;IACnC,IAAI,KAAK,EAAE;QACT,OAAO;AACL,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3B,YAAA,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;SAC5C;;AAGH,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;IAClC,IAAI,KAAK,EAAE;QACT,OAAO;AACL,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7B;;AAGH,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,kBAAkB,CAAC,KAAa,EAAA;IAC9C,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACnH;;AC/BO,MAAM,aAAa,GAAG;AACtB,MAAM,UAAU,GAAG;SAEV,kBAAkB,CAAC,QAAyB,EAAE,MAAsB,EAAE,aAAsB,EAAA;IAC1G,MAAM,QAAQ,GAAG;AACd,SAAA,OAAO;AACP,SAAA,MAAM,CAAiB,CAAC,QAAQ,EAAE,OAAO,KAAK,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;AAE1F,IAAA,IAAI,iBAAiB,IAAI,QAAQ,EAAE;AACjC,QAAA,aAAa,CAAC,YAAY,GAAG,QAAQ;;SAChC;AACL,QAAA,aAAa,CAAC,MAAM,GAAG,QAAQ;;AAGjC,IAAA,OAAO,aAAa;AACtB;AAEA,SAAS,aAAa,CAAC,OAAsB,EAAE,MAAsB,EAAA;AACnE,IAAA,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,OAAO;AAEtC,IAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QACtC,OAAO;AACL,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,GAAG,KAAK;AACR,YAAA,IAAI,EAAE,MAAM;SACb;;AAGH,IAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC;IAE5C,OAAO;QACL,aAAa;AACb,QAAA,GAAG,KAAK;QACR,CAAC,IAAI,GAAG;AACN,YAAA,GAAG,MAAM;AACV,SAAA;KACF;AACH;AAEA,SAAS,gBAAgB,CAAC,WAAmB,EAAA;IAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC;AAErF,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;AACxC,SAAA,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW;SACxD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAEtB,IAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1B,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,WAAW,CAAA,CAAA,CAAG,CAAC;;AAG1E,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW;QACxF,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,WAAW,CAAA,iCAAA,CAAmC,CAAC;;AAEjH,QAAA,OAAO,WAAW;;AAGpB,IAAA,OAAO,cAAc,CAAC,CAAC,CAAC;AAC1B;AAEM,SAAU,eAAe,CAC7B,MAAwC,EAAA;IAExC,MAAM,QAAQ,GAAoB,EAAE;AAEpC,IAAA,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE;AAE7B,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;AAEvC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,CAAA,mBAAA,CAAqB,CAAC;;YAG9E,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAC1C,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC;;;AAIvB,IAAA,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC5B;AAEM,SAAU,WAAW,CAAC,MAAwC,EAAA;IAClE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACzE;;AC3FM,SAAU,cAAc,CAAC,UAAmB,EAAE,SAAoB,EAAA;AACtE,IAAA,MAAM,OAAO,GAAY;AACvB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,QAAQ,EAAE,IAAI;KACf;AAED,IAAA,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI;AACrB,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1D,YAAA,OAAO,CAAC,YAAY,GAAG,UAAU;AACjC,YAAA,OAAO,OAAO;;AAGhB,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,YAAA,OAAO,CAAC,MAAM,GAAG,IAAI;AACrB,YAAA,OAAO,OAAO;;AAGhB,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,OAAO,CAAC,YAAY,GAAG,UAAU;AACjC,YAAA,OAAO,OAAO;;AAGhB,QAAA,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE;AAClC,YAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC;YACjD,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,QAAQ,GAAG,OAAO;AAC1B,gBAAA,OAAO,OAAO;;;;AAKpB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC5D,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC;AAChD,QAAA,OAAO,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC;;AAG7C,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,OAAO,CAAC,MAAM,GAAG,UAAU;AAC3B,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,iBAAiB,IAAI,UAAU,EAAE;AACnC,QAAA,OAAO,CAAC,YAAY,GAAG,UAAU;AACjC,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,aAAa,IAAI,UAAU,EAAE;AAC/B,QAAA,OAAO,CAAC,QAAQ,GAAG,UAA2B;AAC9C,QAAA,OAAO,OAAO;;IAGhB,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC;IAC5G,IAAI,cAAc,EAAE;QAClB,IAAI,QAAQ,IAAI,UAAU;AAAE,YAAA,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;QAC9D,IAAI,cAAc,IAAI,UAAU;AAAE,YAAA,OAAO,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY;QAChF,IAAI,UAAU,IAAI,UAAU;AAAE,YAAA,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAyB;AACrF,QAAA,OAAO,OAAO;;;;AAKhB,IAAA,IAAI,IAAI,IAAI,UAAU,EAAE;AACtB,QAAA,IAAI,KAAK,IAAI,UAAU,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC;;AAElG,QAAA,MAAM,WAAW,GAA4B;AAC3C,YAAA,eAAe,EAAE,IAAI;YACrB,EAAE,EAAE,UAAU,CAAC,EAAE;AACjB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;SACX;AAED,QAAA,IAAI,EAAE,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,UAAU,CAAC,EAAE;YACtD,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU;AAC3C,YAAA,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU;;aAC3B;AACL,YAAA,IAAI,MAAM,IAAI,UAAU,EAAE;gBACxB,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;;AAE1C,YAAA,IAAI,MAAM,IAAI,UAAU,EAAE;gBACxB,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;;;AAI5C,QAAA,OAAO,CAAC,YAAY,GAAG,WAAW;AAClC,QAAA,OAAO,OAAO;;;AAIhB,IAAA,IAAI,KAAK,IAAI,UAAU,EAAE;AACvB,QAAA,OAAO,CAAC,YAAY,GAAG,UAAU;AACjC,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,aAAa,IAAI,UAAU,EAAE;QAC/B,MAAM,MAAM,GAAG,UAA4B;AAC3C,QAAA,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;AACzD,YAAA,OAAO,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;;QAGxF,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU;AACjD,QAAA,OAAO,CAAC,YAAY,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;AAErE,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,WAAW,CAAC,UAA6B,CAAC,EAAE;QAC9C,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC,UAA6B,CAAC;AAChF,QAAA,OAAO,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;;AAGxF,IAAA,OAAO,CAAC,MAAM,GAAG,UAAU;AAC3B,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,kBAAkB,CAAC,KAAgB,EAAA;AAC1C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;AACjC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC,CAAC,CAAW;AAEjD,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,4CAAA,EAA+C,OAAO,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;;;IAI1G,MAAM,OAAO,GAAG,KAAiB;AACjC,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE3D,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAEzC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;IAC/E,OAAO,CAAA,WAAA,EAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAChD;;ACrJM,SAAU,gBAAgB,CAAC,GAAc,EAAA;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAA,UAAA,EAAa,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;IAE9E,MAAM,IAAI,KAAK,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAA,WAAA,EAAc,QAAQ,CAAA,MAAA,EAAS,MAAM,CAAA,CAAE,CAAC;AAC9E;AAEA,SAAS,eAAe,CAAC,EAAa,EAAA;AACpC,IAAA,QAAQ,EAAE,CAAC,IAAI;AACb,QAAA,KAAK,OAAO;YACV,OAAO,CAAA,EAAG,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACxC,QAAA,KAAK,KAAK;YACR,OAAO,CAAA,EAAG,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACxC,QAAA,KAAK,KAAK;YACR,OAAO,CAAA,IAAA,EAAO,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC3C,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,cAAc;YACjB,OAAO,EAAE,CAAC,SAAS;AACrB,QAAA;YACE,OAAO,EAAE,CAAC,IAAI;;AAEpB;AAEM,SAAU,iBAAiB,CAAC,CAAU,EAAA;IAC1C,IAAI,CAAC,KAAK,IAAI;AAAE,QAAA,OAAO,MAAM;IAC7B,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,WAAW;AAEvC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAA,cAAA,EAAiB,CAAC,CAAC,MAAM,GAAG;IAEzD,QAAQ,OAAO,CAAC;AACd,QAAA,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,GAAG,CAAA,SAAA,EAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,KAAA,CAAO,GAAG,CAAA,SAAA,EAAY,CAAC,CAAA,EAAA,CAAI;AAC9E,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,GAAG,OAAO,CAAC,CAAA,EAAA,EAAK,CAAC,GAAG;QAC7B,KAAK,QAAQ,EAAE;YACb,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,GAAG,WAAW,IAAI,CAAC,MAAM,CAAA,MAAA,CAAQ;;AAE5F,QAAA;YACE,OAAO,OAAO,CAAC;;AAErB;;AC5CO,MAAM,aAAa,GAAG,CAAC,GAAc,KAAI;AAC9C,IAAA,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;QACrC,gBAAgB,CAAC,GAAG,CAAC;;IAEvB,OAAO,GAAG,CAAC,QAAQ;AACrB,CAAC;;ACLK,SAAU,YAAY,CAAC,GAAc,EAAA;IACzC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAChC,gBAAgB,CAAC,GAAG,CAAC;;IAEvB,OAAO,GAAG,CAAC,QAAQ;AACrB;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACnD;;ACTM,SAAU,YAAY,CAAC,GAAc,EAAA;AACzC,IAAA,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACpC,gBAAgB,CAAC,GAAG,CAAC;;IAEvB,OAAO,GAAG,CAAC,QAAQ;AACrB;;ACNM,SAAU,aAAa,CAAC,GAAc,EAAA;IAC1C,OAAO,GAAG,CAAC,QAAQ;AACrB;;ACEM,SAAU,WAAW,CAAC,GAA8B,EAAA;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAChC,gBAAgB,CAAC,GAAG,CAAC;;AAGvB,IAAA,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAChH;;ACLM,SAAU,SAAS,CAAC,GAA4B,EAAA;IACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC3B,gBAAgB,CAAC,GAAG,CAAC;;IAEvB,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAA6B,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QACjG,SAAS,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACpF,QAAA,OAAO,SAAS;KACjB,EAAE,EAAE,CAAC;AACR;;ACRM,SAAU,YAAY,CAAC,GAA+B,EAAA;IAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC3B,gBAAgB,CAAC,GAAG,CAAC;;AAGvB,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAmC;IAEzD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAChD,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAI;AACxC,QAAA,MAAM,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI;AACrE,QAAA,SAAS,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/F,QAAA,OAAO,SAAS;KACjB,EACD,EAAE,CACH;AACH;;AChBM,SAAU,aAAa,CAAC,GAAgC,EAAA;AAC5D,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAE7B,IAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,QAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;;AAG5D,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE;QAC1E,IAAI,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;AAC9C,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,6DAAA,CAA+D,CAAC;;AAElF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0DAAA,CAA4D,CAAC;;AAE/E,QAAA,OAAO,QAAwB;;AAGjC,IAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,QAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAiB,EAAE,KAAK,EAAE,IAAI,EAAE;;IAGzE,gBAAgB,CAAC,GAAG,CAAC;AACvB;;ACvBM,SAAU,aAAa,CAAC,SAA0B,EAAA;AACtD,IAAA,MAAM,wBAAwB,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,4BAA4B,CAAC,SAAS,CAAC,aAAa,CAAC;AACpH,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;QACjC,eAAe;QACf,cAAc;QACd,KAAK;QACL,UAAU;QACV,aAAa;QACb,SAAS;QACT,OAAO;QACP,aAAa;AACd,KAAA,CAAC;AAEF,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAChD,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CACpH;AAED,IAAA,IAAI,YAAY,CAAC,MAAM,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,kBAAA,EAAqB,SAAS,CAAC,aAAa,CAAA,+BAAA,EAAkC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CACxG;;AAEL;;ACpBM,SAAU,qBAAqB,CAAC,GAAwC,EAAA;IAC5E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;;AAEnD,IAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,QAA2B;AAE1D,IAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;AACrC,QAAA,kBAAkB,CAAC,aAAa,GAAG,iBAAiB;;IAGtD,aAAa,CAAC,kBAAkB,CAAC;AAEjC,IAAA,OAAO,kBAAkB;AAC3B;;ACbM,SAAU,cAAc,CAAC,KAAa,EAAE,SAAkB,EAAA;AAC9D,IAAA,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE;AACnC,QAAA,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;;AAE3B,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC;AACzD,QAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3F,QAAA,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;;IAG1B,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,IAAI,SAAS,EAAE;QACpD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAc,CAAC;AACvD,QAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;;IAG5B,MAAM,IAAI,KAAK,CACb,CAAA,iCAAA,EAAoC,KAAK,iEAAiE,OAAO,SAAS,CAAA,CAAE,CAC7H;AACH;;ACdM,SAAU,eAAe,CAAC,GAAc,EAAA;AAC5C,IAAA,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACxE,OAAO,GAAG,CAAC,QAAQ;;IAErB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC3B,gBAAgB,CAAC,GAAG,CAAC;;AAGvB,IAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,QAA2B;AAE1D,IAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;AACrC,QAAA,kBAAkB,CAAC,aAAa,GAAG,iBAAiB;;IAGtD,aAAa,CAAC,kBAAkB,CAAC;AAEjC,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,aAAa,CAAC;AAE/G,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB;AAC3C,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC1D,QAAA,IAAI,EAAE,GAAG,IAAI,kBAAkB,CAAC,EAAE;AAChC,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;YAC1B;;QAGF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAEjH,QAAA,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,UAAU,CAAC,SAAS;AAC/B,YAAA,KAAK,EAAE,iBAAiB,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;AAClD,YAAA,WAAW,EAAE,iBAAiB,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW;AACpE,YAAA,OAAO,EAAE,iBAAiB,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO;SAC3C;AAEf,QAAA,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;;AAGtB,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB;AAC/C,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;QAChE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC1C;;AAGF,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7D,QAAA,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC;AAC7D,QAAA,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAG9B,IAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,YAAY,IAAI,EAAE;IACzD,MAAM,YAAY,GAA8B,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC1E,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,+BAAA,CAAiC,CAAC;;AAEpG,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,8BAAA,CAAgC,CAAC;;QAGnG,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,YAAA,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC;SAC9E;AACH,KAAC,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,kBAAkB,CAAC,aAAa;AAC/C,QAAA,GAAG,EAAE,kBAAkB,CAAC,GAAG,IAAI,EAAE;QACjC,KAAK;QACL,SAAS;QACT,YAAY;KACb;AACH;;AC7EM,SAAU,SAAS,CAAC,GAA4B,EAAA;AACpD,IAAA,MAAM,KAAK,GACT,GAAG,CAAC,QAAQ,YAAY,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE;AAE1G,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACzG;;ACFM,SAAU,WAAW,CAAC,GAA8B,EAAA;IACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC3B,gBAAgB,CAAC,GAAG,CAAC;;AAGvB,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAmC;AACxD,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AACvF,IAAA,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvF;;ACRA,SAAS,0BAA0B,CAAC,QAAiC,EAAA;AACnE,IAAA,IAAI,eAAe,IAAI,QAAQ,EAAE;AAC/B,QAAA,OAAO,QAAQ;;IAGjB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU,CAAC;AAE3F,IAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,sEAAA,EAAyE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,CAAE,CACpG;;AAEH,IAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,iEAAA,EAAoE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,CAAE,CAAC;;IAGjH,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAElD,IAAA,MAAM,SAAS,GAAG;QAChB,aAAa;AACb,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AAClC,QAAA,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;KACjC;AAED,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,QAAA,SAAS,CAAC,MAAM,GAAG,KAAK;;SACnB;QACL,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,KAAK,EAAE;;AAG/C,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,kBAAkB,CAAC,GAAqC,EAAA;IACtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC3B,gBAAgB,CAAC,GAAG,CAAC;;AAGvB,IAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAmC;IAEtD,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE;QAC9C,MAAM,OAAO,GAAG,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAA,IAAA,CAAM;AAChD,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAW;AACvC,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAA4B;QAE5D,OAAO;AACL,YAAA,GAAG,MAAM;YACT,CAAC,OAAO,GAAG,IAAI;SACK;;IAGxB,MAAM,OAAO,GAAG,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAA,IAAA,CAAM;AAEhD,IAAA,IAAI,OAAO,KAAK,eAAe,EAAE;AAC/B,QAAA,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC;;AAGjD,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAW;IAExC,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,OAAO,CAAA,KAAA,EAAQ,GAAG,CAAC,SAAS,CAAC,SAAS,CAAA,cAAA,CAAgB,CAAC;;AAGpG,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC;AAEpG,IAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC;IAC5E,OAAO;QACL,GAAI,UAAU,CAAC,KAAoC;QACnD,CAAC,OAAO,GAAG,IAAI;KAChB;AACH;;ACrDA,MAAM,QAAQ,GAAuC;AACnD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,SAAS,EAAE,eAAe;CAC3B;AAEK,SAAU,WAAW,CAAC,GAAc,EAAA;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAY;IACvD,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CACb,wBAAwB,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA,uBAAA,EAA0B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAA,CAAA,CAAG,CACvG;;AAEH,IAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE;AACvD,QAAA,OAAO,IAAI;;AAEb,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC;AACrB;;AC/CM,SAAU,gBAAgB,CAAC,SAAkB,EAAE,SAAoB,EAAE,WAAqB,EAAE,EAAA;AAChG,IAAA,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE;AACnC,QAAA,OAAO,SAAS;;AAGlB,IAAA,MAAM,IAAI,GAAmB;QAC3B,SAAS;AACT,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,OAAO,EAAE,IAAI;QACb,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,YAAY;KACnC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC;AAEvD,IAAA,IAAI,UAAU,IAAI,UAAU,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,UAAU,CAAkB;;AAExD,IAAA,IAAI,cAAc,IAAI,UAAU,EAAE;QAChC,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC,UAAU,CAAC,YAAY,CAAC;;AAErE,IAAA,IAAI,QAAQ,IAAI,UAAU,EAAE;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACvB,QAAQ,EAAE,UAAU,CAAC,MAAM;YAC3B,SAAS;YACT,QAAQ;AACT,SAAA,CAAC;;AAGJ,IAAA,OAAO,IAAkB;AAC3B;AAEM,SAAU,oBAAoB,CAAC,UAAmB,EAAA;IACtD,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC;AACnH;;AC3BM,SAAU,qBAAqB,CAAC,MAAkB,EAAE,KAAA,GAAqB,IAAI,GAAG,EAAE,EAAA;AACtF,IAAA,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/B,IAAA,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC;AAEtC,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,gBAAgB,CAAC,MAAkB,EAAE,KAAkB,EAAA;AAC9D,IAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,QAAA,OAAO,KAAK;;AAGd,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI;AAElC,IAAA,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,MAAM,eAAe,GAAG,MAA6B;QACrD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK;;QAGd,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC;AAE9C,QAAA,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;AACvD,YAAA,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;;AAEpC,QAAA,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;AAC/D,YAAA,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC;;;IAI1C,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,SAAS,EAAE;QACpD,MAAM,eAAe,GAAG,MAAmC;AAE3D,QAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,eAAe,IAAI,eAAe,CAAC,KAAK,EAAE;AAC/E,YAAA,6BAA6B,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;;;AAI/D,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,MAAM,WAAW,GAAG,MAAyB;QAC7C,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE;AAC1C,YAAA,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;;;IAItC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;QACvC,MAAM,YAAY,GAAG,MAA0B;AAC/C,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;AAC1D,YAAA,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;;;AAItC,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,uBAAuB,CAAC,MAAkB,EAAE,KAAkB,EAAA;AACrE,IAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACvB,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;QAC3C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;AAC/C,YAAA,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;;QAE7C,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;;AAG1D,IAAA,IAAI,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;QACvC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;QACrD,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;;AAGvD,IAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;QACxC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,KAAmB,EAAE,KAAK,CAAC;;AAGtE,IAAA,IAAI,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC7C,QAAA,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;YAC5B,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE;gBACxC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;;YAEpE,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE;gBAClC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;;;AAIhE,QAAA,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;AAC1E,YAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACjD,gBAAA,6BAA6B,CAAC,QAAQ,EAAE,KAAK,CAAC;;;;AAKpD,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,6BAA6B,CAAC,MAA2C,EAAE,KAAkB,EAAA;AACpG,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AACzB,YAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACzC,gBAAA,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC;;;AAG9C,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACjD,IAAI,GAAG,KAAK,eAAe,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxD,gBAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAElB,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,gBAAA,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC;;;;AAKjD,IAAA,OAAO,KAAK;AACd;;AC5HO,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,IAAI,GAAG,EAAyB;AAEzC,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;KAC7B;AAED,IAAA,2BAA2B,CAAC,GAAW,EAAA;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU;AAEjC,QAAA,MAAM,OAAO,GAAG,CAAC,UAAkB,KAAI;AACrC,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE;AAC7B,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1C,YAAA,IAAI,CAAC,KAAK;gBAAE;;AAGZ,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;AAC1C,gBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAItB,YAAA,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE;gBACvC,OAAO,CAAC,MAAM,CAAC;;AAEnB,SAAC;QAED,OAAO,CAAC,GAAG,CAAC;AACZ,QAAA,OAAO,UAAU;KAClB;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU;QAElC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACzC,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;AAC1C,gBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAItB,QAAA,OAAO,QAAQ;KAChB;AAED,IAAA,GAAG,CAAC,GAAW,EAAE,MAAgC,EAAE,iBAA8B,EAAE,YAA0B,EAAA;AAC3G,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,MAAM;YACN,iBAAiB;AACjB,YAAA,YAAY,EAAE,YAAY,IAAI,IAAI,GAAG,EAAE;AACxC,SAAA,CAAC;KACH;AAED,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;KAC7B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;KACrB;;;AC/DI,MAAM,mBAAmB,GAAG,CAAC,GAAW,KAAK,CAAA,SAAA,EAAY,GAAG,CAAA,IAAA;AAE5D,eAAe,UAAU,CAAC,GAAW,EAAA;IAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAEtD,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAA,CAAE,CAAC;;AAG7C,IAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,IAAA,IAAI;AACF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC;;IAClB,OAAO,CAAC,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,GAAG,CAAA,CAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;AAEjE;;ACdM,SAAU,oBAAoB,CAAC,IAAY,EAAE,UAA2C,EAAA;AAC5F,IAAA,IAAI,UAAqC;AAEzC,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;AACzC,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,CAAA,MAAA,EAAS,IAAI,CAAA,+BAAA,EAAkC,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;;AAEhF,QAAA,UAAU,GAAI,MAA0B,CAAC,MAAM;;SAC1C;QACL,UAAU,GAAG,EAAE;AACf,QAAA,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7D,UAAU,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;;;AAInD,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAEnC,IAAA,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;AAC7D,QAAA,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAA,2CAAA,CAA6C,CAAC;;AAG7E,IAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;AAClC;AAEA,SAAS,WAAW,CAAC,CAA4B,EAAE,CAA4B,EAAA;AAC7E,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD;;ACrBA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAEjF,SAAS,kBAAkB,CAAC,QAAiC,EAAA;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5E;AAEO,eAAe,aAAa,CAAC,MAAwC,EAAA;;AAE1E,IAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoC;AAChE,IAAA,MAAM,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC;;AAG/C,IAAA,MAAM,SAAS,GAAI,MAAmC,CAAC,KAAK;IAC5D,IAAI,SAAS,EAAE;AACb,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAChD,gBAAA,oBAAoB,CAAC,GAAG,EAAE,KAAwC,CAAC;;;;;IAMzE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;AAC1C,QAAA,IAAI;YACF,MAAM,EACJ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,YAAY,EACzB,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,YAAY,EACzB,GAAG,aAAa,EACjB,GAAG,QAAQ;;AAGZ,YAAA,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE;AAChC,gBAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACrE;;AAGF,YAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACrE,YAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACpD,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;YAC1C,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC;;QACjE,OAAO,CAAC,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAE,EAAE,CAAC,CAAC;AAClD,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;;AAGzE;AAEA,eAAe,mBAAmB,CAChC,MAAwC,EACxC,SAAgD,EAAA;AAEhD,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;AAChC,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnG,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE;IAE1B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;;AAG1E,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2C;AAElE,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,QAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AACnD,QAAA,MAAM,eAAe,GAAG,cAAc,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;AAE1E,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1D,IAAI,GAAG,KAAK,aAAa;gBAAE;YAE3B,IAAI,cAAc,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxC,gBAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAA,uEAAA,CAAyE,CAAC;;YAG/G,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACjD,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,GAAG,qCAAqC,OAAO,KAAK,CAAA,CAAE,CAAC;;AAGzG,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAwC,CAAC;;;;AAK9D,IAAA,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAA,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpD,QAAA,QAAQ,GAAG,OAAO,CAAC,IAAI;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;AAClC,YAAA,IAAI;AACF,gBAAA,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;AAChC,gBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;;AACnB,YAAA,MAAM;;;;;IAMZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;AAClC,QAAA,IAAI;AACF,YAAA,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;;QAChC,OAAO,CAAC,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,GAAG,CAAA,CAAA,CAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;;AAIrE,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAA,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;;IAIzC,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E;AAEA,SAAS,WAAW,CAAC,KAAc,EAAE,IAAA,GAAoB,IAAI,GAAG,EAAE,EAAA;IAChE,IAAI,KAAK,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI;AAE9B,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,QAAA,OAAO,IAAI;;AAGb,IAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;IAEjC,IAAI,QAAQ,IAAI,KAAK;AAAE,QAAA,OAAO,IAAI;AAElC,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9C,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC7D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAGxB,QAAA,IAAI,GAAG,KAAK,aAAa,EAAE;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,GAAG,CAAA,CAAE,CAAC;;AAEtE,YAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACrB,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,CAAA,2CAAA,EAA8C,OAAO,GAAG,CAAA,CAAE,CAAC;;AAE7E,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;YAEf;;AAGF,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;YACtB;;AAGF,QAAA,IAAI,GAAG,KAAK,aAAa,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;AAGf,QAAA,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;;AAGxB,IAAA,OAAO,IAAI;AACb;;AClKM,SAAU,yBAAyB,CAAC,aAAqC,EAAA;IAC7E,MAAM,UAAU,GAA+B,EAAE;AAEjD,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;QAC5D,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;AAC5C,QAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI;;IAGxB,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,UAAU;QACV,WAAW,EAAE,aAAa,CAAC,WAAW;KACvC;AACH;AAEM,SAAU,0BAA0B,CACxC,cAAsD,EAAA;IAEtD,MAAM,MAAM,GAAwC,EAAE;AAEtD,IAAA,KAAK,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QAC3E,MAAM,CAAC,aAAa,CAAC,GAAG,yBAAyB,CAAC,aAAa,CAAC;;AAGlE,IAAA,OAAO,MAAM;AACf;;AC/BA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"kaskad-schema.mjs","sources":["../../../../libs/schema/src/lib/types/raw-schemas.ts","../../../../libs/schema/src/lib/util/is-object.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-await.ts","../../../../libs/schema/src/lib/unfolding/parse-value-type.ts","../../../../libs/schema/src/lib/unfolding/parse-property-key-shorthand.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-for.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-for-new-syntax.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-if.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-import.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-interpolation.ts","../../../../libs/schema/src/lib/unfolding/computation/unfold-computation-schema.ts","../../../../libs/schema/src/lib/unfolding/parse-binding-shorthand.ts","../../../../libs/schema/src/lib/unfolding/unfold-flat-wrapper-notation.ts","../../../../libs/schema/src/lib/unfolding/to-full-notation.ts","../../../../libs/schema/src/lib/unfolding/value/throw-unfold-value-error.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-boolean.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-number.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-string.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-unknown.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-array.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-map.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-object.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-command.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/validate-props.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-component-schema.ts","../../../../libs/schema/src/lib/unfolding/unfold-property.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-component.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-set.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-shape.ts","../../../../libs/schema/src/lib/unfolding/value/handlers/unfold-variant-shape.ts","../../../../libs/schema/src/lib/unfolding/value/unfold-node-value.ts","../../../../libs/schema/src/lib/unfolding/unfold-node-schema.ts","../../../../libs/schema/src/lib/load/schema-component-extractor.ts","../../../../libs/schema/src/lib/load/template-registry.ts","../../../../libs/schema/src/lib/load/load-schema.ts","../../../../libs/schema/src/lib/load/register-declared-type.ts","../../../../libs/schema/src/lib/load/load-templates.ts","../../../../libs/schema/src/lib/util/unfold-component-definitions.ts","../../../../libs/schema/src/kaskad-schema.ts"],"sourcesContent":["// Recipe types used for unfolding\n// These types represent the raw input format before normalization\n\nexport type FormulaComputationRecipe = {\n formula: string;\n};\n\nexport type ForComputationRecipe = {\n items: unknown[];\n as?: {\n item: unknown;\n index: unknown;\n first?: unknown;\n last?: unknown;\n };\n yield: unknown;\n};\n\nexport type IfComputationRecipe = Record<'if' | 'then' | 'else', unknown> | ({ if: unknown } & Record<string, unknown>);\n\nexport type SwitchComputationRecipe = {\n computationType: 'switch';\n source: unknown;\n cases: { equals: unknown; then: unknown }[];\n default: unknown;\n};\n\nexport type AwaitComputationRecipe = {\n await: string;\n pending?: unknown;\n then: unknown;\n error?: unknown;\n};\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Set);\n}\n","import { AwaitComputationSchema } from '@kaskad/types';\n\nimport { AwaitComputationRecipe } from '../../types/raw-schemas';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\nexport function unfoldAwaitComputationSchema(schema: AwaitComputationRecipe): AwaitComputationSchema {\n return {\n computationType: 'await',\n source: schema.await,\n pending: unfoldNodeSchema(schema.pending ?? null, { type: 'componentSchema' }, []),\n then: unfoldNodeSchema(schema.then, { type: 'componentSchema' }, []),\n error: unfoldNodeSchema(schema.error ?? null, { type: 'componentSchema' }, []),\n [Symbol.for('type')]: 'ComputationSchema',\n };\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport {\n CommandValueType,\n NodeType,\n ObjectValueType,\n ShapeValueType,\n ValueType,\n VariantShapeValueType,\n} from '@kaskad/types';\n\nconst SimpleTypes: NodeType[] = ['unknown', 'string', 'number', 'boolean', 'component', 'componentSchema'];\n\nexport function parseValueType(type: string): ValueType {\n type = type.replaceAll(' ', '');\n\n if (type.startsWith('(') && type.endsWith(')')) {\n return createCommandType(type.slice(1, -1));\n }\n\n // Check for map type first (but not just '{}')\n if (type.endsWith('{}') && type !== '{}') {\n const rest = type.slice(0, -2);\n return {\n type: 'map',\n item: parseValueType(rest),\n };\n }\n\n // Check for set type\n if (type.endsWith('#')) {\n const rest = type.slice(0, -1);\n return {\n type: 'set',\n item: parseValueType(rest),\n };\n }\n\n if (type.endsWith('[]')) {\n const rest = type.slice(0, -2);\n return {\n type: 'array',\n item: parseValueType(rest),\n };\n }\n\n // Check for object type after map/array to handle {} and complex object types\n if (type.startsWith('{') && type.endsWith('}')) {\n return createObjectType(type.slice(1, -1));\n }\n\n return createSimpleType(type as NodeType);\n}\n\nfunction createObjectType(type: string): ObjectValueType {\n const fieldsPairs = splitTypesByComma(type);\n\n const fields = fieldsPairs.reduce<Record<string, ValueType>>((acc, str) => {\n if (!str) return acc; // Handle empty object case\n\n const colonIndex = str.indexOf(':');\n const errorPrefix = `Invalid object field definition: \"${str}\"`;\n\n if (colonIndex === -1) {\n throw new Error(`${errorPrefix} - expected format \"fieldName:type\"`);\n }\n\n const fieldKey = str.substring(0, colonIndex);\n const fieldType = str.substring(colonIndex + 1);\n\n if (!fieldKey) {\n throw new Error(`${errorPrefix} - field name cannot be empty`);\n }\n\n if (!fieldType) {\n throw new Error(`${errorPrefix} - field type cannot be empty`);\n }\n\n acc[fieldKey] = parseValueType(fieldType);\n return acc;\n }, {});\n\n return {\n type: 'object',\n fields,\n } satisfies ObjectValueType;\n}\n\nfunction createCommandType(type: string): CommandValueType {\n const args = splitTypesByComma(type).filter(Boolean);\n\n return {\n type: 'command',\n args: args.map(parseValueType),\n } satisfies CommandValueType;\n}\n\nfunction createSimpleType(type: NodeType): ValueType {\n if (SimpleTypes.includes(type)) {\n return { type } as ValueType;\n }\n\n if (type in DefinitionStore.getInstance().shapes) {\n return {\n type: 'shape',\n shapeType: type,\n } as ShapeValueType;\n }\n\n if (type in DefinitionStore.getInstance().variantShapes) {\n return {\n type: 'variantShape',\n shapeType: type,\n } as VariantShapeValueType;\n }\n\n throw new Error(`Unknown type '${type}'`);\n}\n\nfunction splitTypesByComma(str: string): string[] {\n const pairs: string[] = [];\n\n let braceCount = 0;\n let part = '';\n\n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n\n if (char === '{') {\n braceCount++;\n part += char;\n continue;\n }\n\n if (char === '}') {\n braceCount--;\n part += char;\n continue;\n }\n\n if (char === ',' && braceCount === 0) {\n pairs.push(part);\n part = '';\n } else {\n part += char;\n }\n }\n\n pairs.push(part);\n\n return pairs;\n}\n","import { NodeType, ValueType } from '@kaskad/types';\n\nimport { parseValueType } from './parse-value-type';\n\nexport function parsePropertyKeyShorthand(shorthand: string): [string, ValueType] {\n const [key, type] = shorthand.split('@') as [string, NodeType];\n if (!type) {\n throw new Error(`Invalid node key expression \"${key}\". Expected type for key \"${key}\"`);\n }\n return [key, parseValueType(type)];\n}\n","import { ComputationSchema, ForComputationSchema } from '@kaskad/types';\n\nimport { ForComputationRecipe } from '../../types/raw-schemas';\nimport { isObject } from '../../util/is-object';\nimport { parsePropertyKeyShorthand } from '../parse-property-key-shorthand';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\nexport function unfoldForComputationSchema(schema: unknown): ComputationSchema | null {\n if (!isObject(schema) || !('computationType' in schema)) {\n return null;\n }\n let rawDimensions = schema['dimensions'] as ForComputationRecipe[];\n if (rawDimensions) {\n if (!Array.isArray(rawDimensions)) {\n throw new Error(`Invalid dimensions schema \"${JSON.stringify(rawDimensions)}\". It must be an array.`);\n }\n } else {\n // schema can be a flat object if only one dimension is defined\n rawDimensions = [schema as ForComputationRecipe];\n }\n\n const dimensions = rawDimensions.map((dimension) => {\n const { item = 'item', index = 'index', first = null, last = null } = dimension.as || {};\n\n const itemsKey = Object.keys(dimension).find((key) => key.startsWith('items')) as keyof typeof dimension;\n\n const [items, itemsType] = parsePropertyKeyShorthand(itemsKey ?? '');\n if (items !== 'items') {\n throw new Error(`Computation \"for\" requires \"items\" field: ${JSON.stringify(schema)}`);\n }\n\n const itemsArr = dimension[itemsKey];\n\n return {\n items: unfoldNodeSchema(itemsArr, itemsType, []),\n itemsType,\n item: unfoldNodeSchema(item, { type: 'string' }, []),\n index: unfoldNodeSchema(index, { type: 'string' }, []),\n first: unfoldNodeSchema(first, { type: 'string' }, []),\n last: unfoldNodeSchema(last, { type: 'string' }, []),\n trackBy: unfoldNodeSchema(null, { type: 'unknown' }, []),\n };\n });\n\n const normalizedYield = unfoldNodeSchema(schema['yield'], { type: 'unknown' }, []);\n\n const result: ForComputationSchema = {\n computationType: 'for',\n dimensions,\n yield: normalizedYield,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n return result;\n}\n","import { ComputationSchema, ForComputationSchema } from '@kaskad/types';\n\nimport { isObject } from '../../util/is-object';\nimport { parseValueType } from '../parse-value-type';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\ninterface ParsedForSpec {\n itemName: string;\n itemType: string;\n itemsExpr: unknown;\n metadata: {\n index?: string;\n first?: string;\n last?: string;\n };\n trackBy: string | null;\n}\n\n/**\n * Parses metadata object from the `with` clause\n * Example: \"index: $i, first: $isFirst, last: $isLast\"\n */\nfunction parseMetadata(str: string): { index?: string; first?: string; last?: string } {\n const result: { index?: string; first?: string; last?: string } = {};\n const trimmed = str.trim();\n\n if (!trimmed) {\n throw new Error('Empty metadata block. Omit \"with\" clause if no metadata is needed.');\n }\n\n const pairs = trimmed.split(',').map((s) => s.trim());\n\n for (const pair of pairs) {\n const colonIndex = pair.indexOf(':');\n if (colonIndex === -1) {\n throw new Error(`Invalid metadata pair: \"${pair}\". Expected format: \"key: $value\"`);\n }\n\n const key = pair.slice(0, colonIndex).trim();\n const value = pair.slice(colonIndex + 1).trim();\n\n if (!['index', 'first', 'last'].includes(key)) {\n throw new Error(`Invalid metadata key: \"${key}\". Only \"index\", \"first\", and \"last\" are allowed.`);\n }\n\n if (!value || !value.startsWith('$')) {\n throw new Error(`Invalid metadata value: \"${value}\". Must be a variable starting with $.`);\n }\n\n result[key as 'index' | 'first' | 'last'] = value.slice(1); // Remove $\n }\n\n return result;\n}\n\n/**\n * Parses a single for-loop specification\n * Example: \"$row@Row of $rows with { index: $i, first: $isFirst } trackBy $row.id\"\n */\nfunction parseForSpec(spec: string): ParsedForSpec {\n const trimmed = spec.trim();\n\n // First, extract trackBy if present at the end\n // trackBy uses $variable or $variable.property syntax (e.g., \"$item\" or \"$item.id\")\n let trackBy: string | null = null;\n let specWithoutTrackBy = trimmed;\n\n const trackByMatch = trimmed.match(/\\s+trackBy\\s+(\\$\\w+(?:\\.\\w+)*)$/);\n if (trackByMatch) {\n const trackByValue = trackByMatch[1].trim();\n specWithoutTrackBy = trimmed.slice(0, trackByMatch.index).trim();\n\n // Parse the $variable.property syntax\n const pathMatch = trackByValue.match(/^\\$(\\w+)((?:\\.\\w+)*)$/);\n if (!pathMatch) {\n throw new Error(`Invalid trackBy syntax: ${trackByValue}. Expected format: $variable or $variable.property`);\n }\n\n const variableName = pathMatch[1]; // e.g., \"item\"\n const propertyPath = pathMatch[2]; // e.g., \".id\" or \"\"\n\n // We'll validate against itemName after parsing the main pattern\n // Store both parts temporarily - validation happens after we know itemName\n trackBy = `${variableName}${propertyPath}`;\n }\n\n // Pattern: $item@Type of $items with { metadata }\n // ^^^^^ ^^^^ ^^^^^^ ^^^^^^^^^^^^^^^\n // name type expr metadata (optional)\n // Note: Type can include dots for namespaced types like \"app.table.Row\"\n const pattern = /^\\$(\\w+)@([\\w.[\\]{}:,\\s]+)\\s+of\\s+(.+?)(?:\\s+with\\s*\\{([^}]+)})?$/;\n const match = specWithoutTrackBy.match(pattern);\n\n if (!match) {\n throw new Error(\n `Invalid for-loop syntax: \"${spec}\". Expected format: \"$item@Type of $items\" or \"$item@Type of $items with { index: $i }\"`,\n );\n }\n\n const [, itemName, typeStr, itemsExpr, metadataStr] = match;\n\n // Validate and process trackBy\n // null = no trackBy specified (use index)\n // \"\" = trackBy $var (use item value directly for primitives)\n // \"id\" or \"user.id\" = trackBy $var.property (use property path)\n let processedTrackBy: string | null = null;\n if (trackBy !== null) {\n // trackBy is in format \"variableName\" or \"variableName.property.path\"\n const parts = trackBy.split('.');\n const variableName = parts[0];\n\n // Validate that trackBy references the loop variable\n if (variableName !== itemName) {\n throw new Error(`trackBy must reference loop variable $${itemName}, got $${variableName}`);\n }\n\n // Extract the property path (everything after the variable name)\n // If parts.length === 1, it's just the variable (primitive array) -> \"\" (use item value)\n // If parts.length > 1, it's a property path -> \"id\" or \"user.id\"\n processedTrackBy = parts.length > 1 ? parts.slice(1).join('.') : '';\n }\n\n return {\n itemName,\n itemType: typeStr.trim(),\n itemsExpr,\n metadata: metadataStr ? parseMetadata(metadataStr) : {},\n trackBy: processedTrackBy,\n };\n}\n\n/**\n * Unfolds the new for-loop syntax into a ForComputationSchema\n * Supports: for: \"$item@Type of $items\" or for: [\"$item1@Type1 of $items1\", \"$item2@Type2 of $items2\"]\n */\nexport function unfoldForWithNewSyntax(schema: unknown): ComputationSchema | null {\n if (!isObject(schema) || !('for' in schema)) {\n return null;\n }\n\n const forSpec = schema['for'];\n const specs = Array.isArray(forSpec) ? forSpec : [forSpec];\n\n if (specs.length === 0) {\n throw new Error('For-loop requires at least one dimension');\n }\n\n const dimensions = specs.map((spec) => {\n if (typeof spec !== 'string') {\n throw new Error(`Invalid for-loop spec: ${JSON.stringify(spec)}. Must be a string.`);\n }\n\n const parsed = parseForSpec(spec);\n\n // Parse the type annotation\n // The type can be either:\n // 1. An item type (e.g., \"string\") - we need to wrap in array\n // 2. Already an array type (e.g., \"string[]\") - use as-is\n const parsedType = parseValueType(parsed.itemType);\n const itemsType = parsedType.type === 'array' ? parsedType : { type: 'array' as const, item: parsedType };\n\n return {\n items: unfoldNodeSchema(parsed.itemsExpr, itemsType, []),\n itemsType,\n item: unfoldNodeSchema(parsed.itemName, { type: 'string' }, []),\n index: unfoldNodeSchema(parsed.metadata.index || 'index', { type: 'string' }, []),\n first: unfoldNodeSchema(parsed.metadata.first || null, { type: 'string' }, []),\n last: unfoldNodeSchema(parsed.metadata.last || null, { type: 'string' }, []),\n // trackBy: null = use index, property path (e.g., \"id\") = extract from item\n trackBy: unfoldNodeSchema(parsed.trackBy, { type: 'string' }, []),\n };\n });\n\n // Extract yield: either explicit 'yield' property or all other properties (inline yield)\n let yieldSchema: unknown;\n if ('yield' in schema) {\n yieldSchema = schema['yield'];\n } else {\n // Inline yield: all properties except 'for'\n const { for: _, ...rest } = schema as Record<string, unknown>;\n yieldSchema = rest;\n }\n\n const normalizedYield = unfoldNodeSchema(yieldSchema, { type: 'componentSchema' }, []);\n\n const result: ForComputationSchema = {\n computationType: 'for',\n dimensions,\n yield: normalizedYield,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n\n return result;\n}\n","import { ComputationSchema, IfComputationSchema } from '@kaskad/types';\n\nimport { IfComputationRecipe } from '../../types/raw-schemas';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\nexport function unfoldIfComputationSchema(schema: IfComputationRecipe): ComputationSchema {\n if (schema.if === undefined) {\n throw new Error('If computation requires the \"if\" field.');\n }\n\n const result: IfComputationSchema = {\n computationType: 'if',\n if: unfoldNodeSchema(schema.if, { type: 'boolean' }, []),\n then: createBranch(schema.then),\n else: createBranch(schema.else),\n [Symbol.for('type')]: 'ComputationSchema',\n };\n return result;\n}\n\nfunction createBranch(schema: unknown = null) {\n return unfoldNodeSchema(schema, { type: 'componentSchema' }, []);\n}\n","import { ComponentRef, TemplateComputationSchema } from '@kaskad/types';\n\nimport { Defer } from '../../types/component-schema';\nimport { isObject } from '../../util/is-object';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\n\ntype TemplateFullRawSchema = {\n readonly computationType: 'template';\n readonly path: string;\n readonly ref?: ComponentRef;\n readonly _defer?: Defer;\n} & Record<string, unknown>;\n\nexport function unfoldImportComputationSchema(schema: unknown): TemplateComputationSchema | null {\n if (!isObject(schema) || !('computationType' in schema)) {\n return null;\n }\n\n const { path, ref, computationType, _defer, ...contractVariables } = schema as TemplateFullRawSchema;\n if (!path) {\n throw new Error(`Import resolver requires a path field.`);\n }\n\n const defer = _defer\n ? {\n placeholder: unfoldNodeSchema(_defer.placeholder || null, { type: 'component' }, []),\n error: unfoldNodeSchema(_defer.error || null, { type: 'component' }, []),\n }\n : null;\n\n return {\n computationType,\n path,\n defer,\n ref,\n contractVariables,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n}\n","import { ComputationSchema, FormulaComputationSchema } from '@kaskad/types';\n\nexport function unfoldInterpolationComputationSchema(schema: string): ComputationSchema | null {\n const args = stringToFuncArgs(schema);\n return { computationType: 'formula', formula: `concat(${args})` } as FormulaComputationSchema;\n}\n\nexport function replaceInterpolationsInFormula(formula: string): string {\n // Replace {{}} inside single-quoted string literals\n let result = formula.replace(/'([^']*\\{\\{.*?\\}\\}[^']*)'/g, (_, content) => {\n return `concat(${stringToFuncArgs(content)})`;\n });\n // Replace {{}} inside double-quoted string literals\n result = result.replace(/\"([^\"]*\\{\\{.*?\\}\\}[^\"]*)\"/g, (_, content) => {\n return `concat(${stringToFuncArgs(content)})`;\n });\n // Strip bare {{}} delimiters (expression is already valid formula syntax)\n result = result.replace(/\\{\\{(.*?)\\}\\}/g, (_, expr) => expr.trim());\n return result;\n}\n\nfunction stringToFuncArgs(str: string): string {\n const result: string[] = [];\n let currentIndex = 0;\n\n while (currentIndex < str.length) {\n const startBrace = str.indexOf('{{', currentIndex);\n\n if (startBrace === -1) {\n const remaining = str.slice(currentIndex);\n if (remaining) result.push(`'${remaining}'`);\n break;\n }\n\n const before = str.slice(currentIndex, startBrace);\n if (before) result.push(`'${before}'`);\n\n const endBrace = str.indexOf('}}', startBrace);\n if (!endBrace) {\n result.push(str);\n break;\n }\n\n const template = str.slice(startBrace + 2, endBrace).trim();\n if (template) result.push(template);\n\n currentIndex = endBrace + 2;\n }\n return '[' + result.join(', ') + ']';\n}\n","import {\n ComponentSchemaNodeSchema,\n ComputationSchema,\n FormulaComputationSchema,\n SwitchComputationSchema,\n} from '@kaskad/types';\n\nimport {\n AwaitComputationRecipe,\n FormulaComputationRecipe,\n IfComputationRecipe,\n SwitchComputationRecipe,\n} from '../../types/raw-schemas';\nimport { isObject } from '../../util/is-object';\nimport { unfoldNodeSchema } from '../unfold-node-schema';\nimport { unfoldAwaitComputationSchema as unfoldAwait } from './unfold-await';\nimport { unfoldForComputationSchema as unfoldFor } from './unfold-for';\nimport { unfoldForWithNewSyntax } from './unfold-for-new-syntax';\nimport { unfoldIfComputationSchema as unfoldIf } from './unfold-if';\nimport { unfoldImportComputationSchema as unfoldTemplate } from './unfold-import';\nimport { replaceInterpolationsInFormula, unfoldInterpolationComputationSchema } from './unfold-interpolation';\n\nconst unfoldFormula = (schema: FormulaComputationRecipe): ComputationSchema => {\n const result: FormulaComputationSchema = {\n computationType: 'formula',\n formula: schema.formula,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n return result;\n};\n\nconst unfoldSwitch = (schema: SwitchComputationRecipe): SwitchComputationSchema => {\n return {\n computationType: 'switch',\n source: unfoldNodeSchema(schema.source, { type: 'unknown' }, []),\n cases: schema.cases.map((c) => {\n return {\n equals: c.equals,\n then: unfoldNodeSchema(c.then, { type: 'componentSchema' }) as ComponentSchemaNodeSchema,\n };\n }),\n default: unfoldNodeSchema(schema.default, { type: 'componentSchema' }) as ComponentSchemaNodeSchema,\n [Symbol.for('type')]: 'ComputationSchema',\n };\n};\n\nexport function unfoldComputationSchema(schema: unknown): ComputationSchema | null {\n if (typeof schema === 'string') {\n if (schema.startsWith('=> ')) {\n let formula = schema.slice(3);\n if (formula.includes('{{')) {\n formula = replaceInterpolationsInFormula(formula);\n }\n return { computationType: 'formula', formula } as FormulaComputationSchema;\n }\n\n if (schema.includes('{{') && schema.includes('}}')) {\n return unfoldInterpolationComputationSchema(schema);\n }\n }\n\n // Check for new for-loop syntax (before computationType check)\n if (isObject(schema) && 'for' in schema && !('computationType' in schema)) {\n return unfoldForWithNewSyntax(schema);\n }\n\n // Check for await syntax (before computationType check)\n if (isObject(schema) && 'await' in schema && !('computationType' in schema)) {\n return unfoldAwait(schema as AwaitComputationRecipe);\n }\n\n if (!isObject(schema) || !('computationType' in schema)) {\n return null;\n }\n\n if (isUnfoldedComputationSchema(schema)) {\n return schema;\n }\n\n const computationUnfolders: Record<string, (schema: unknown) => ComputationSchema | null> = {\n formula: (schema) => unfoldFormula(schema as FormulaComputationRecipe),\n for: (schema) => unfoldFor(schema),\n template: (schema) => unfoldTemplate(schema),\n if: (schema) => unfoldIf(schema as IfComputationRecipe),\n switch: (schema) => unfoldSwitch(schema as SwitchComputationRecipe),\n await: (schema) => unfoldAwait(schema as AwaitComputationRecipe),\n };\n\n const unfolder = computationUnfolders[schema['computationType'] as string];\n if (unfolder) {\n return unfolder(schema);\n }\n\n const ct = isObject(schema) && 'computationType' in schema ? ` \"${schema['computationType']}\"` : '';\n throw new Error(`Unknown computation type${ct}`);\n}\n\nfunction isUnfoldedComputationSchema(schema: unknown): schema is ComputationSchema {\n return isObject(schema) && Symbol.for('type') in schema;\n}\n","import { BindingSchema } from '@kaskad/types';\n\nconst MIRROR_PATTERN = /^<=>\\s*(\\S+)$/;\nconst SELECTION_PATTERN = /^<#>\\s*(\\S+)->\\((\\$\\w+),\\s*(\\$\\w+)\\)$/;\nconst OBJECT_PATTERN = /^<\\{\\}>\\s*(\\S+)->\\((\\$\\w+),\\s*(\\$\\w+)\\)$/;\nconst ARRAY_PATTERN = /^<\\[\\]>\\s*(\\S+)->\\((\\$\\w+)\\)$/;\n\nexport function parseBindingShorthand(value: string): BindingSchema | null {\n let match: RegExpMatchArray | null;\n\n match = value.match(MIRROR_PATTERN);\n if (match) {\n return { bindingType: 'mirror', selector: match[1] };\n }\n\n match = value.match(SELECTION_PATTERN);\n if (match) {\n return {\n bindingType: 'selection',\n componentSelector: match[1],\n mapping: { key: match[2], selected: match[3] },\n };\n }\n\n match = value.match(OBJECT_PATTERN);\n if (match) {\n return {\n bindingType: 'object',\n componentSelector: match[1],\n mapping: { key: match[2], value: match[3] },\n };\n }\n\n match = value.match(ARRAY_PATTERN);\n if (match) {\n return {\n bindingType: 'array',\n componentSelector: match[1],\n mapping: { value: match[2] },\n };\n }\n\n return null;\n}\n\nexport function isBindingShorthand(value: string): boolean {\n return value.startsWith('<=>') || value.startsWith('<#>') || value.startsWith('<{}>') || value.startsWith('<[]>');\n}\n","import { DefinitionStore } from '@kaskad/definition';\n\nimport { ComponentRecipe, TemplateRecipe } from '../types/component-schema';\nimport { isObject } from '../util/is-object';\nimport { RawNode } from './to-full-notation';\n\ntype WrapperEntity = [string, Record<string, unknown>];\n\ntype ComposedSchema =\n | ComponentRecipe\n | RawNode\n | {\n computationType: string;\n [x: string]: unknown;\n };\n\nexport const WrapperPrefix = '+';\nexport const PathSymbol = '/';\n\nexport function unfoldFlatWrappers(wrappers: WrapperEntity[], schema: ComposedSchema, resultingNode: RawNode): RawNode {\n const composed = wrappers\n .reverse()\n .reduce<ComposedSchema>((composed, wrapper) => unfoldWrapper(wrapper, composed), schema);\n\n if ('computationType' in composed) {\n resultingNode._computation = composed;\n } else {\n resultingNode._value = composed;\n }\n\n return resultingNode;\n}\n\nfunction unfoldWrapper(wrapper: WrapperEntity, schema: ComposedSchema): ComposedSchema {\n const [componentType, props] = wrapper;\n\n if (componentType.includes(PathSymbol)) {\n return {\n computationType: 'template',\n path: componentType,\n ...props,\n slot: schema,\n };\n }\n\n const slot = getComponentSlot(componentType);\n\n return {\n componentType,\n ...props,\n [slot]: {\n ...schema,\n },\n };\n}\n\nfunction getComponentSlot(wrapperType: string): string {\n const props = DefinitionStore.getInstance().getComputedComponentContract(wrapperType);\n\n const componentSlots = Object.entries(props)\n .filter(([, prop]) => prop.valueType.type === 'component')\n .map(([key]) => key);\n\n if (!componentSlots.length) {\n throw new Error(`No component slot found for wrapper: \"${wrapperType}\"`);\n }\n\n if (componentSlots.length > 1) {\n const defaultSlot = DefinitionStore.getInstance().getComponent(wrapperType)?.defaultSlot;\n if (!defaultSlot) {\n throw new Error(`Multiple component slots found for wrapper: \"${wrapperType}\". Please specify a default slot.`);\n }\n return defaultSlot;\n }\n\n return componentSlots[0];\n}\n\nexport function extractWrappers(\n schema: ComponentRecipe | TemplateRecipe,\n): [WrapperEntity[], ComponentRecipe | TemplateRecipe] {\n const wrappers: WrapperEntity[] = [];\n\n const shallow = { ...schema };\n\n for (const key in shallow) {\n if (key.startsWith(WrapperPrefix)) {\n const wrapperType = key.slice(1);\n const wrapperProps = shallow[key] || {};\n\n if (!isObject(wrapperProps)) {\n throw new Error(`Properties for wrapper \"${wrapperType}\" must be an object`);\n }\n\n wrappers.push([wrapperType, wrapperProps]);\n delete shallow[key];\n }\n }\n\n return [wrappers, shallow];\n}\n\nexport function hasWrappers(schema: ComponentRecipe | TemplateRecipe): boolean {\n return Object.keys(schema).some((key) => key.startsWith(WrapperPrefix));\n}\n","import { BindingSchema, ValueType } from '@kaskad/types';\n\nimport { ComponentRecipe, TemplateRecipe } from '../types/component-schema';\nimport { isBindingShorthand, parseBindingShorthand } from './parse-binding-shorthand';\nimport { extractWrappers, hasWrappers, unfoldFlatWrappers } from './unfold-flat-wrapper-notation';\n\nexport type RawNode = {\n _valueType: ValueType;\n _value: unknown;\n _computation: unknown;\n _binding: unknown;\n};\n\nexport function toFullNotation(nodeSchema: unknown, valueType: ValueType): RawNode {\n const rawNode: RawNode = {\n _valueType: valueType,\n _value: null,\n _computation: null,\n _binding: null,\n };\n\n if (nodeSchema === null) {\n rawNode._value = null;\n return rawNode;\n }\n\n if (typeof nodeSchema === 'string') {\n if (nodeSchema.includes('{{') && nodeSchema.includes('}}')) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if (nodeSchema === '=>') {\n rawNode._value = '=>';\n return rawNode;\n }\n\n if (nodeSchema.startsWith('=> ')) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if (isBindingShorthand(nodeSchema)) {\n const binding = parseBindingShorthand(nodeSchema);\n if (binding) {\n rawNode._binding = binding;\n return rawNode;\n }\n }\n }\n\n if (Array.isArray(nodeSchema) && valueType.type === 'string') {\n const desugared = desugarStringArray(nodeSchema);\n return toFullNotation(desugared, valueType);\n }\n\n if (typeof nodeSchema !== 'object') {\n rawNode._value = nodeSchema;\n return rawNode;\n }\n\n if ('computationType' in nodeSchema) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if ('bindingType' in nodeSchema) {\n rawNode._binding = nodeSchema as BindingSchema;\n return rawNode;\n }\n\n const isFullNotation = ['_valueType', '_value', '_computation', '_binding'].some((key) => key in nodeSchema);\n if (isFullNotation) {\n if ('_value' in nodeSchema) rawNode._value = nodeSchema._value;\n if ('_computation' in nodeSchema) rawNode._computation = nodeSchema._computation;\n if ('_binding' in nodeSchema) rawNode._binding = nodeSchema._binding as BindingSchema;\n return rawNode;\n }\n\n // detect 'await' short notation\n if ('await' in nodeSchema) {\n if ('if' in nodeSchema) {\n throw new Error('\"await\" and \"if\" cannot be used on the same node.');\n }\n if ('for' in nodeSchema) {\n throw new Error('\"await\" and \"for\" cannot be used on the same node.');\n }\n const schema = nodeSchema as Record<string, unknown>;\n rawNode._computation = {\n computationType: 'await',\n await: schema['await'],\n pending: schema['pending'] ?? null,\n then: schema['then'] ?? null,\n error: schema['error'] ?? null,\n };\n return rawNode;\n }\n\n // detect 'if' short notation\n // TODO: change to _if to isolate keyword)\n if ('if' in nodeSchema) {\n if ('for' in nodeSchema) {\n throw new Error('\"if\" and \"for\" cannot be used on the same node. Nest them on separate levels.');\n }\n const computation: Record<string, unknown> = {\n computationType: 'if',\n if: nodeSchema.if,\n then: null,\n else: null,\n };\n\n if (!('then' in nodeSchema) && !('else' in nodeSchema)) {\n const { if: _, ...thenSchema } = nodeSchema;\n computation['then'] = thenSchema;\n } else {\n if ('then' in nodeSchema) {\n computation['then'] = nodeSchema['then'];\n }\n if ('else' in nodeSchema) {\n computation['else'] = nodeSchema['else'];\n }\n }\n\n rawNode._computation = computation;\n return rawNode;\n }\n\n // detect new 'for' syntax\n if ('for' in nodeSchema) {\n rawNode._computation = nodeSchema;\n return rawNode;\n }\n\n if ('templateUrl' in nodeSchema) {\n const schema = nodeSchema as TemplateRecipe;\n if (hasWrappers(schema)) {\n const [wrappers, cleanedSchema] = extractWrappers(schema);\n return unfoldFlatWrappers(wrappers, toFullNotation(cleanedSchema, valueType), rawNode);\n }\n\n const { templateUrl: path, ...rest } = nodeSchema;\n rawNode._computation = { computationType: 'template', path, ...rest };\n\n return rawNode;\n }\n\n if (hasWrappers(nodeSchema as ComponentRecipe)) {\n const [wrappers, cleanedSchema] = extractWrappers(nodeSchema as ComponentRecipe);\n return unfoldFlatWrappers(wrappers, toFullNotation(cleanedSchema, valueType), rawNode);\n }\n\n rawNode._value = nodeSchema;\n return rawNode;\n}\n\nfunction desugarStringArray(items: unknown[]): string {\n if (items.length === 0) return '';\n if (items.length === 1) return items[0] as string;\n\n for (const item of items) {\n if (typeof item !== 'string') {\n throw new Error(`styleClass array items must be strings, got ${typeof item}: ${JSON.stringify(item)}`);\n }\n }\n\n const strings = items as string[];\n const hasFormula = strings.some((s) => s.startsWith('=> '));\n\n if (!hasFormula) return strings.join(' ');\n\n const parts = strings.map((s) => (s.startsWith('=> ') ? s.slice(3) : `'${s}'`));\n return `=> concat([${parts.join(', ')}], ' ')`;\n}\n","import { ValueType } from '@kaskad/types';\n\nimport { UnfoldCtx } from './unfold-node-value';\n\nexport function throwUnfoldError(ctx: UnfoldCtx): never {\n const expected = formatValueType(ctx.valueType);\n const actual = formatActualValue(ctx.rawValue);\n const path = ctx.nodePath.length ? ` at path \"${ctx.nodePath.join('.')}\"` : '';\n\n throw new Error(`Type mismatch${path}: expected ${expected}, got ${actual}`);\n}\n\nfunction formatValueType(vt: ValueType): string {\n switch (vt.type) {\n case 'array':\n return `${formatValueType(vt.item)}[]`;\n case 'map':\n return `${formatValueType(vt.item)}{}`;\n case 'set':\n return `Set<${formatValueType(vt.item)}>`;\n case 'shape':\n case 'variantShape':\n return vt.shapeType;\n default:\n return vt.type;\n }\n}\n\nexport function formatActualValue(v: unknown): string {\n if (v === null) return 'null';\n if (v === undefined) return 'undefined';\n\n if (Array.isArray(v)) return `array (length ${v.length})`;\n\n switch (typeof v) {\n case 'string':\n return v.length > 30 ? `string (\"${v.slice(0, 30)}...\")` : `string (\"${v}\")`;\n case 'number':\n case 'boolean':\n return `${typeof v} (${v})`;\n case 'object': {\n const keys = Object.keys(v);\n return keys.length <= 5 ? `object { ${keys.join(', ')} }` : `object (${keys.length} keys)`;\n }\n default:\n return typeof v;\n }\n}\n","import { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport const unfoldBoolean = (ctx: UnfoldCtx) => {\n if (typeof ctx.rawValue !== 'boolean') {\n throwUnfoldError(ctx);\n }\n return ctx.rawValue;\n};\n","import { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldNumber(ctx: UnfoldCtx) {\n if (!isValidNumber(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n return ctx.rawValue;\n}\n\nfunction isValidNumber(value: unknown) {\n return typeof value === 'number' && !isNaN(value);\n}\n","import { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldString(ctx: UnfoldCtx) {\n if (typeof ctx.rawValue !== 'string') {\n throwUnfoldError(ctx);\n }\n return ctx.rawValue;\n}\n","import { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldUnknown(ctx: UnfoldCtx) {\n return ctx.rawValue;\n}\n","import { ArrayValueType } from '@kaskad/types';\n\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldArray(ctx: UnfoldCtx<ArrayValueType>) {\n if (!Array.isArray(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n return ctx.rawValue.map((item, index) => unfoldNodeSchema(item, ctx.valueType.item, [...ctx.nodePath, index]));\n}\n","import { MapValueType, NodeSchema } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldMap(ctx: UnfoldCtx<MapValueType>) {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n return Object.entries(ctx.rawValue).reduce<Record<string, NodeSchema>>((structure, [key, child]) => {\n structure[key] = unfoldNodeSchema(child, ctx.valueType.item, [...ctx.nodePath, key]);\n return structure;\n }, {});\n}\n","import { NodeSchema, ObjectValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldObject(ctx: UnfoldCtx<ObjectValueType>) {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n const rawObject = ctx.rawValue as Record<string, unknown>;\n\n return Object.entries(ctx.valueType.fields).reduce<Record<string, NodeSchema>>(\n (structure, [fieldKey, fieldValueType]) => {\n const fieldValue = fieldKey in rawObject ? rawObject[fieldKey] : null;\n structure[fieldKey] = unfoldNodeSchema(fieldValue, fieldValueType, [...ctx.nodePath, fieldKey]);\n return structure;\n },\n {},\n );\n}\n","import { AnyFn, CommandValue, CommandValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldCommand(ctx: UnfoldCtx<CommandValueType>): CommandValue {\n const rawValue = ctx.rawValue;\n\n if (typeof rawValue === 'string') {\n return { runnerType: 'js', target: rawValue, owner: null };\n }\n\n if (isObject(rawValue) && 'runnerType' in rawValue && 'target' in rawValue) {\n if (typeof rawValue['runnerType'] !== 'string') {\n throw new Error(`Command schema is invalid. Field \"runnerType\" must be string.`);\n }\n if (!rawValue['target']) {\n throw new Error(`Command schema is invalid. Field \"target\" must be defined.`);\n }\n return rawValue as CommandValue;\n }\n\n if (typeof rawValue === 'function') {\n return { runnerType: 'inline', target: rawValue as AnyFn, owner: null };\n }\n\n throwUnfoldError(ctx);\n}\n","import { Delimiters } from '@kaskad/config';\nimport { DefinitionStore } from '@kaskad/definition';\n\nimport { ComponentRecipe } from '../../../types/component-schema';\n\nexport function validateProps(rawSchema: ComponentRecipe) {\n const componentDefinitionProps = DefinitionStore.getInstance().getComputedComponentContract(rawSchema.componentType);\n const ignoredSchemaProps = new Set([\n 'componentType',\n 'onNodeChange',\n 'ref',\n 'contract',\n 'defaultSlot',\n 'context',\n 'types',\n 'importTypes',\n ]);\n\n const invalidProps = Object.keys(rawSchema).filter(\n (prop) => !componentDefinitionProps[prop] && !ignoredSchemaProps.has(prop) && !prop.startsWith(Delimiters.Variable),\n );\n\n if (invalidProps.length) {\n throw new Error(\n `Component schema \"${rawSchema.componentType}\" contains unknown properties: ${invalidProps.join(', ')}`,\n );\n }\n}\n","import { ComponentSchemaValueType } from '@kaskad/types';\n\nimport { ComponentRecipe } from '../../../types/component-schema';\nimport { isObject } from '../../../util/is-object';\nimport { UnfoldCtx } from '../unfold-node-value';\nimport { validateProps } from './validate-props';\n\nexport function unfoldComponentSchema(ctx: UnfoldCtx<ComponentSchemaValueType>) {\n if (!isObject(ctx.rawValue)) {\n throw new Error('Unfolded component schema type');\n }\n const componentRawSchema = ctx.rawValue as ComponentRecipe;\n\n if (!componentRawSchema.componentType) {\n componentRawSchema.componentType = 'browser.Element';\n }\n\n validateProps(componentRawSchema);\n\n return componentRawSchema;\n}\n","import { NodeSchema, ValueType } from '@kaskad/types';\n\nimport { isObject } from '../util/is-object';\nimport { parsePropertyKeyShorthand } from './parse-property-key-shorthand';\nimport { toFullNotation } from './to-full-notation';\nimport { isUnfoldedNodeSchema, unfoldNodeSchema } from './unfold-node-schema';\n\nexport function unfoldProperty(keyEx: string, rawSchema: unknown): [string, NodeSchema] {\n if (isUnfoldedNodeSchema(rawSchema)) {\n return [keyEx, rawSchema];\n }\n if (keyEx.includes('@')) {\n const [key, valueType] = parsePropertyKeyShorthand(keyEx);\n const nodeSchema = unfoldNodeSchema(toFullNotation(rawSchema, valueType), valueType, [key]);\n return [key, nodeSchema];\n }\n\n if (isObject(rawSchema) && '_valueType' in rawSchema) {\n const valueType = rawSchema['_valueType'] as ValueType; // TODO: check if valueType is valid\n const nodeSchema = unfoldNodeSchema(rawSchema, valueType, [keyEx]);\n return [keyEx, nodeSchema];\n }\n\n throw new Error(\n `Invalid schema notation for key \"${keyEx}\": expected object with type annotation or componentType, got ${typeof rawSchema}`,\n );\n}\n","import { Delimiters } from '@kaskad/config';\nimport { DefinitionStore } from '@kaskad/definition';\nimport { ComponentNodeValue, NodeChangeHandlerSchema, NodeSchema } from '@kaskad/types';\n\nimport { ComponentRecipe } from '../../../types/component-schema';\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { unfoldProperty } from '../../unfold-property';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\nimport { validateProps } from './validate-props';\n\nexport function unfoldComponent(ctx: UnfoldCtx): ComponentNodeValue {\n if (typeof ctx.rawValue === 'string' && ctx.rawValue.startsWith('csid-')) {\n return ctx.rawValue;\n }\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n const componentRawSchema = ctx.rawValue as ComponentRecipe;\n\n if (!componentRawSchema.componentType) {\n componentRawSchema.componentType = 'browser.Element';\n }\n\n validateProps(componentRawSchema);\n\n const properties = DefinitionStore.getInstance().getComputedComponentContract(componentRawSchema.componentType);\n\n const props = new Map<string, NodeSchema>();\n for (const [key, baseSchema] of Object.entries(properties)) {\n if (!(key in componentRawSchema)) {\n props.set(key, baseSchema);\n continue;\n }\n\n const unfoldedRawSchema = unfoldNodeSchema(componentRawSchema[key], baseSchema.valueType, [...ctx.nodePath, key]);\n\n const node = {\n valueType: baseSchema.valueType,\n value: unfoldedRawSchema.value ?? baseSchema.value,\n computation: unfoldedRawSchema.computation || baseSchema.computation,\n binding: unfoldedRawSchema.binding || baseSchema.binding,\n } as NodeSchema;\n\n props.set(key, node);\n }\n\n const variables = new Map<string, NodeSchema>();\n for (const [keyEx, schema] of Object.entries(componentRawSchema)) {\n if (!keyEx.startsWith(Delimiters.Variable)) {\n continue;\n }\n\n const variableKeyEx = keyEx.slice(Delimiters.Variable.length);\n const [key, unfolded] = unfoldProperty(variableKeyEx, schema);\n variables.set(key, unfolded);\n }\n\n const rawHandlers = componentRawSchema.onNodeChange || [];\n const onNodeChange: NodeChangeHandlerSchema[] = rawHandlers.map((handler) => {\n if (!handler.selector) {\n throw new Error(`onNodeChange handler \"${JSON.stringify(handler)}\" is missing required selector.`);\n }\n if (!handler.command) {\n throw new Error(`onNodeChange handler \"${JSON.stringify(handler)}\" is missing required command.`);\n }\n\n return {\n selector: handler.selector,\n command: unfoldNodeSchema(handler.command, { type: 'command' }, ctx.nodePath),\n };\n });\n\n return {\n componentType: componentRawSchema.componentType,\n ref: componentRawSchema.ref || '',\n props,\n variables,\n onNodeChange,\n };\n}\n","import { SetValueType } from '@kaskad/types';\n\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nexport function unfoldSet(ctx: UnfoldCtx<SetValueType>) {\n const items =\n ctx.rawValue instanceof Set ? Array.from(ctx.rawValue) : Array.isArray(ctx.rawValue) ? ctx.rawValue : [];\n\n return items.map((item, index) => unfoldNodeSchema(item, ctx.valueType.item, [...ctx.nodePath, index]));\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport { ShapeValue, ShapeValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\nimport { unfoldObject } from './unfold-object';\n\nexport function unfoldShape(ctx: UnfoldCtx<ShapeValueType>): ShapeValue {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n const rawValue = ctx.rawValue as Record<string, unknown>;\n const objectValueType = DefinitionStore.getInstance().getShape(ctx.valueType.shapeType);\n return unfoldObject({ rawValue, valueType: objectValueType, nodePath: ctx.nodePath });\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport { NodeSchema, VariantShapeValue, VariantShapeValueType } from '@kaskad/types';\n\nimport { isObject } from '../../../util/is-object';\nimport { unfoldNodeSchema } from '../../unfold-node-schema';\nimport { throwUnfoldError } from '../throw-unfold-value-error';\nimport { UnfoldCtx } from '../unfold-node-value';\n\nfunction unfoldShortValidatorSyntax(rawValue: Record<string, unknown>) {\n if ('validatorType' in rawValue) {\n return rawValue;\n }\n\n const entries = Object.entries(rawValue);\n const validatorEntries = entries.filter(([key]) => key !== 'message' && key !== 'disabled');\n\n if (validatorEntries.length === 0) {\n throw new Error(\n `Validator must have at least one validator type specified. Raw value: ${JSON.stringify(rawValue)}`,\n );\n }\n if (validatorEntries.length > 1) {\n throw new Error(`Validator can only have one validator type specified. Raw value: ${JSON.stringify(rawValue)}`);\n }\n\n const [validatorType, param] = validatorEntries[0];\n\n const validator = {\n validatorType,\n params: {},\n message: rawValue['message'] || '',\n disabled: !!rawValue['disabled'],\n };\n\n if (isObject(param)) {\n validator.params = param;\n } else {\n validator.params = { [validatorType]: param };\n }\n\n return validator;\n}\n\nexport function unfoldVariantShape(ctx: UnfoldCtx<VariantShapeValueType>): VariantShapeValue {\n if (!isObject(ctx.rawValue)) {\n throwUnfoldError(ctx);\n }\n\n let rawValue = ctx.rawValue as Record<string, unknown>;\n\n if ('kind' in rawValue && 'fields' in rawValue) {\n const kindKey = `${ctx.valueType.shapeType}Type`;\n const kind = rawValue['kind'] as string;\n const fields = rawValue['fields'] as Record<string, unknown>;\n\n return {\n ...fields,\n [kindKey]: kind,\n } as VariantShapeValue;\n }\n\n const kindKey = `${ctx.valueType.shapeType}Type`;\n\n if (kindKey === 'validatorType') {\n rawValue = unfoldShortValidatorSyntax(rawValue);\n }\n\n const kind = rawValue[kindKey] as string;\n\n if (!kind) {\n throw new Error(`Missing the kind field \"${kindKey}\" in ${ctx.valueType.shapeType} variant shape`);\n }\n\n const objectValueType = DefinitionStore.getInstance().getVariantShape(ctx.valueType.shapeType, kind);\n\n const objectNode = unfoldNodeSchema(rawValue, objectValueType, ctx.nodePath);\n return {\n ...(objectNode.value as Record<string, NodeSchema>),\n [kindKey]: kind,\n };\n}\n","import { NodePath, NodeSchema, ValueType } from '@kaskad/types';\n\nimport {\n unfoldArray,\n unfoldBoolean,\n unfoldCommand,\n unfoldComponent,\n unfoldComponentSchema,\n unfoldMap,\n unfoldNumber,\n unfoldObject,\n unfoldString,\n unfoldUnknown,\n} from './handlers';\nimport { unfoldSet } from './handlers/unfold-set';\nimport { unfoldShape } from './handlers/unfold-shape';\nimport { unfoldVariantShape } from './handlers/unfold-variant-shape';\nimport { formatActualValue } from './throw-unfold-value-error';\n\nexport type UnfoldCtx<T extends ValueType = ValueType> = {\n rawValue: unknown;\n valueType: T;\n nodePath: NodePath;\n};\n\nexport type Handler = (ctx: UnfoldCtx) => NodeSchema['value'];\n\nconst handlers: Record<ValueType['type'], unknown> = {\n unknown: unfoldUnknown,\n number: unfoldNumber,\n string: unfoldString,\n boolean: unfoldBoolean,\n array: unfoldArray,\n map: unfoldMap,\n set: unfoldSet,\n object: unfoldObject,\n shape: unfoldShape,\n variantShape: unfoldVariantShape,\n command: unfoldCommand,\n componentSchema: unfoldComponentSchema,\n component: unfoldComponent,\n};\n\nexport function unfoldValue(ctx: UnfoldCtx) {\n const handler = handlers[ctx.valueType.type] as Handler;\n if (!handler) {\n throw new Error(\n `Cannot unfold value (${formatActualValue(ctx.rawValue)}). Unknown value type \"${ctx.valueType.type}\"`,\n );\n }\n if (ctx.rawValue === undefined || ctx.rawValue === null) {\n return null;\n }\n return handler(ctx);\n}\n","import { BindingSchema, NodePath, NodeSchema, NodeSchemaBase, ValueType } from '@kaskad/types';\n\nimport { isObject } from '../util/is-object';\nimport { unfoldComputationSchema } from './computation/unfold-computation-schema';\nimport { toFullNotation } from './to-full-notation';\nimport { unfoldValue } from './value/unfold-node-value';\n\nexport function unfoldNodeSchema(rawSchema: unknown, valueType: ValueType, nodePath: NodePath = []): NodeSchema {\n if (isUnfoldedNodeSchema(rawSchema)) {\n return rawSchema;\n }\n\n const node: NodeSchemaBase = {\n valueType,\n value: null,\n computation: null,\n binding: null,\n [Symbol.for('type')]: 'NodeSchema',\n };\n\n const nodeSchema = toFullNotation(rawSchema, valueType);\n\n if ('_binding' in nodeSchema) {\n node.binding = nodeSchema['_binding'] as BindingSchema;\n }\n if ('_computation' in nodeSchema) {\n node.computation = unfoldComputationSchema(nodeSchema._computation);\n }\n if ('_value' in nodeSchema) {\n node.value = unfoldValue({\n rawValue: nodeSchema._value,\n valueType,\n nodePath,\n });\n }\n\n return node as NodeSchema;\n}\n\nexport function isUnfoldedNodeSchema(nodeSchema: unknown): nodeSchema is NodeSchema {\n return isObject(nodeSchema) && ['valueType', 'value', 'computation', 'binding'].every((key) => key in nodeSchema);\n}\n","import {\n ArrayNodeSchema,\n ComponentNodeSchema,\n ComponentSchemaNodeSchema,\n isForComputation,\n isIfComputation,\n isSwitchComputation,\n isTemplateComputation,\n NodeSchema,\n ObjectNodeSchema,\n} from '@kaskad/types';\n\nimport { isObject } from '../util/is-object';\n\nexport function extractComponentTypes(schema: NodeSchema, types: Set<string> = new Set()): Set<string> {\n extractFromValue(schema, types);\n extractFromComputations(schema, types);\n\n return types;\n}\n\nfunction extractFromValue(schema: NodeSchema, types: Set<string>) {\n if (!schema.value) {\n return types;\n }\n\n const type = schema.valueType.type;\n\n if (type === 'component') {\n const componentSchema = schema as ComponentNodeSchema;\n if (!isObject(componentSchema.value)) {\n return types;\n }\n\n types.add(componentSchema.value.componentType);\n\n for (const prop of componentSchema.value.props.values()) {\n extractComponentTypes(prop, types);\n }\n for (const variable of componentSchema.value.variables.values()) {\n extractComponentTypes(variable, types);\n }\n }\n\n if (type === 'componentSchema' || type === 'unknown') {\n const componentSchema = schema as ComponentSchemaNodeSchema;\n\n if (isObject(componentSchema.value) && 'componentType' in componentSchema.value) {\n extractFromRawComponentSchema(componentSchema.value, types);\n }\n }\n\n if (type === 'array') {\n const arraySchema = schema as ArrayNodeSchema;\n for (const item of arraySchema.value || []) {\n extractComponentTypes(item, types);\n }\n }\n\n if (type === 'object' || type === 'map') {\n const objectSchema = schema as ObjectNodeSchema;\n for (const prop of Object.values(objectSchema.value || {})) {\n extractComponentTypes(prop, types);\n }\n }\n\n return types;\n}\n\nfunction extractFromComputations(schema: NodeSchema, types: Set<string>) {\n if (!schema.computation) {\n return types;\n }\n\n if (isSwitchComputation(schema.computation)) {\n for (const caseItem of schema.computation.cases) {\n extractComponentTypes(caseItem.then, types);\n }\n extractComponentTypes(schema.computation.default, types);\n }\n\n if (isIfComputation(schema.computation)) {\n extractComponentTypes(schema.computation.then, types);\n extractComponentTypes(schema.computation.else, types);\n }\n\n if (isForComputation(schema.computation)) {\n extractComponentTypes(schema.computation.yield as NodeSchema, types);\n }\n\n if (isTemplateComputation(schema.computation)) {\n if (schema.computation.defer) {\n if (schema.computation.defer.placeholder) {\n extractComponentTypes(schema.computation.defer.placeholder, types);\n }\n if (schema.computation.defer.error) {\n extractComponentTypes(schema.computation.defer.error, types);\n }\n }\n\n for (const variable of Object.values(schema.computation.contractVariables)) {\n if (isObject(variable) || Array.isArray(variable)) {\n extractFromRawComponentSchema(variable, types);\n }\n }\n }\n\n return types;\n}\n\nfunction extractFromRawComponentSchema(schema: Record<string, unknown> | unknown[], types: Set<string>): Set<string> {\n if (Array.isArray(schema)) {\n for (const item of schema) {\n if (isObject(item) || Array.isArray(item)) {\n extractFromRawComponentSchema(item, types);\n }\n }\n return types;\n }\n\n if (isObject(schema)) {\n for (const [key, value] of Object.entries(schema)) {\n if (key === 'componentType' && typeof value === 'string') {\n types.add(value);\n }\n if (isObject(value) || Array.isArray(value)) {\n extractFromRawComponentSchema(value, types);\n }\n }\n }\n\n return types;\n}\n","import { TemplateRecipeDefinition } from '../types/template-raw-definition';\n\ninterface TemplateEntry {\n recipe: TemplateRecipeDefinition;\n ownComponentTypes: Set<string>;\n dependencies: Set<string>;\n}\n\nexport const templateRegistry = {\n entries: new Map<string, TemplateEntry>(),\n\n get(url: string): TemplateEntry | undefined {\n return this.entries.get(url);\n },\n\n getAggregatedComponentTypes(url: string): Set<string> {\n const aggregated = new Set<string>();\n const visited = new Set<string>();\n\n const collect = (currentUrl: string) => {\n if (visited.has(currentUrl)) return;\n visited.add(currentUrl);\n\n const entry = this.entries.get(currentUrl);\n if (!entry) return;\n\n // Add own component types\n for (const type of entry.ownComponentTypes) {\n aggregated.add(type);\n }\n\n // Recursively collect from dependencies\n for (const depUrl of entry.dependencies) {\n collect(depUrl);\n }\n };\n\n collect(url);\n return aggregated;\n },\n\n getAllComponentTypes(): Set<string> {\n const allTypes = new Set<string>();\n\n for (const entry of this.entries.values()) {\n for (const type of entry.ownComponentTypes) {\n allTypes.add(type);\n }\n }\n\n return allTypes;\n },\n\n set(url: string, recipe: TemplateRecipeDefinition, ownComponentTypes: Set<string>, dependencies?: Set<string>) {\n this.entries.set(url, {\n recipe,\n ownComponentTypes,\n dependencies: dependencies || new Set(),\n });\n },\n\n has(url: string): boolean {\n return this.entries.has(url);\n },\n\n reset() {\n this.entries.clear();\n },\n};\n","import { parse } from 'yaml';\n\nimport { TemplateRecipeDefinition } from '../types/template-raw-definition';\n\nexport const withBaseTemplateUrl = (url: string) => `/recipes/${url}.yml`;\n\nexport async function loadRecipe(url: string): Promise<TemplateRecipeDefinition> {\n const response = await fetch(withBaseTemplateUrl(url));\n\n if (response.status === 404) {\n throw new Error(`Schema not found: ${url}`);\n }\n\n const text = await response.text();\n try {\n return parse(text);\n } catch (e) {\n throw new Error(`Failed to parse YAML: ${url}`, { cause: e });\n }\n}\n","import { DefinitionStore } from '@kaskad/definition';\nimport { ObjectValueType, ValueType } from '@kaskad/types';\n\nimport { parseValueType } from '../unfolding/parse-value-type';\n\nexport function registerDeclaredType(name: string, definition: string | Record<string, string>): void {\n let properties: Record<string, ValueType>;\n\n if (typeof definition === 'string') {\n const parsed = parseValueType(definition);\n if (parsed.type !== 'object') {\n throw new Error(`Type \"${name}\" must be an object type, got \"${parsed.type}\"`);\n }\n properties = (parsed as ObjectValueType).fields;\n } else {\n properties = {};\n for (const [propName, propType] of Object.entries(definition)) {\n properties[propName] = parseValueType(propType);\n }\n }\n\n const store = DefinitionStore.getInstance();\n const existing = store.shapes[name];\n\n if (existing && !isEqualType(existing.properties, properties)) {\n throw new Error(`Type \"${name}\" is already defined with a different shape`);\n }\n\n store.setShape(name, properties);\n}\n\nfunction isEqualType(a: Record<string, ValueType>, b: Record<string, ValueType>): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n","import { log } from '@kaskad/config';\n\nimport { ComponentRecipe, TemplateRecipe } from '../types/component-schema';\nimport { TemplateRecipeDefinition } from '../types/template-raw-definition';\nimport { PathSymbol, WrapperPrefix } from '../unfolding/unfold-flat-wrapper-notation';\nimport { unfoldNodeSchema } from '../unfolding/unfold-node-schema';\nimport { isObject } from '../util/is-object';\nimport { loadRecipe } from './load-schema';\nimport { registerDeclaredType } from './register-declared-type';\nimport { extractComponentTypes } from './schema-component-extractor';\nimport { templateRegistry } from './template-registry';\n\nconst reservedKeys = new Set(['importTypes', 'types', 'contract', 'defaultSlot']);\n\nfunction isTypeOnlyTemplate(template: Record<string, unknown>): boolean {\n const contentKeys = Object.keys(template).filter((k) => !reservedKeys.has(k));\n return contentKeys.length > 0 && contentKeys.every((k) => k.includes('.'));\n}\n\nexport async function loadTemplates(recipe: TemplateRecipe | ComponentRecipe) {\n // Pass 1: Recursively load all templates and register types immediately\n const allTemplates = new Map<string, TemplateRecipeDefinition>();\n await collectAllTemplates(recipe, allTemplates);\n\n // Register types from the root recipe (after all dependencies are loaded)\n const rootTypes = (recipe as TemplateRecipeDefinition).types;\n if (rootTypes) {\n for (const [key, value] of Object.entries(rootTypes)) {\n if (typeof value === 'string' || isObject(value)) {\n registerDeclaredType(key, value as string | Record<string, string>);\n }\n }\n }\n\n // Pass 2: Unfold and register all templates (types are already registered)\n for (const [url, template] of allTemplates) {\n try {\n const {\n types: _types,\n importTypes: _importTypes,\n contract: _contract,\n defaultSlot: _defaultSlot,\n ...rootRawSchema\n } = template;\n\n // Skip unfolding for type-only templates (all keys are namespaced)\n if (isTypeOnlyTemplate(template)) {\n templateRegistry.set(url, template, new Set(), extractUrls(template));\n continue;\n }\n\n const schema = unfoldNodeSchema(rootRawSchema, { type: 'component' });\n const componentTypes = extractComponentTypes(schema);\n const dependencies = extractUrls(template);\n templateRegistry.set(url, template, componentTypes, dependencies);\n } catch (e) {\n log.error(`Failed to resolve template: ${url}`, e);\n throw new Error(`Failed to resolve template: ${url}`, { cause: e });\n }\n }\n}\n\nasync function collectAllTemplates(\n recipe: TemplateRecipe | ComponentRecipe,\n collected: Map<string, TemplateRecipeDefinition>,\n): Promise<void> {\n const urls = extractUrls(recipe);\n const newUrls = Array.from(urls).filter((url) => !templateRegistry.has(url) && !collected.has(url));\n\n if (newUrls.length === 0) return;\n\n const templates = await Promise.all(newUrls.map((url) => loadRecipe(url)));\n\n // Register types immediately after loading (before recursive collection)\n const pending = new Map<string, string | Record<string, string>>();\n\n for (const template of templates) {\n const isTypeOnlyFile = isTypeOnlyTemplate(template);\n const typesToRegister = isTypeOnlyFile ? template : (template.types ?? {});\n\n for (const [key, value] of Object.entries(typesToRegister)) {\n if (key === 'importTypes') continue;\n\n if (isTypeOnlyFile && !key.includes('.')) {\n throw new Error(`Invalid key \"${key}\" in type-only file. Type names must be namespaced (e.g., \"app.MyType\")`);\n }\n\n if (typeof value !== 'string' && !isObject(value)) {\n throw new Error(`Invalid type definition for \"${key}\". Expected string or object, got ${typeof value}`);\n }\n\n pending.set(key, value as string | Record<string, string>);\n }\n }\n\n // Register with retries to handle forward references between types\n let lastSize = -1;\n while (pending.size > 0 && pending.size !== lastSize) {\n lastSize = pending.size;\n for (const [key, value] of pending) {\n try {\n registerDeclaredType(key, value);\n pending.delete(key);\n } catch {\n // Will retry after other types are registered\n }\n }\n }\n\n for (const [key, value] of pending) {\n try {\n registerDeclaredType(key, value);\n } catch (e) {\n throw new Error(`Failed to register type \"${key}\"`, { cause: e });\n }\n }\n\n for (let i = 0; i < newUrls.length; i++) {\n collected.set(newUrls[i], templates[i]);\n }\n\n // Recursively collect from loaded templates\n await Promise.all(templates.map((t) => collectAllTemplates(t, collected)));\n}\n\nfunction extractUrls(value: unknown, urls: Set<string> = new Set()): Set<string> {\n if (value == null) return urls;\n\n if (Array.isArray(value)) {\n value.forEach((item) => extractUrls(item, urls));\n return urls;\n }\n\n if (!isObject(value)) return urls;\n\n if ('_defer' in value) return urls;\n\n for (const [key, val] of Object.entries(value)) {\n if (key.startsWith(WrapperPrefix) && key.includes(PathSymbol)) {\n urls.add(key.slice(1));\n }\n\n if (key === 'importTypes') {\n if (!Array.isArray(val)) {\n throw new Error(`\"importTypes\" must be an array, got ${typeof val}`);\n }\n for (const url of val) {\n if (typeof url !== 'string') {\n throw new Error(`\"importTypes\" entries must be strings, got ${typeof url}`);\n }\n urls.add(url);\n }\n continue;\n }\n\n if (typeof val !== 'string') {\n extractUrls(val, urls);\n continue;\n }\n\n if (key === 'templateUrl') {\n urls.add(val);\n }\n\n extractUrls(val, urls);\n }\n\n return urls;\n}\n","import { ComponentDefinition } from '@kaskad/definition';\nimport { NodeSchema } from '@kaskad/types';\n\nimport { ComponentRawDefinition } from '../types/component-definition';\nimport { unfoldProperty } from '../unfolding/unfold-property';\n\nexport function unfoldComponentDefinition(rawDefinition: ComponentRawDefinition): ComponentDefinition {\n const properties: Record<string, NodeSchema> = {};\n\n for (const entry of Object.entries(rawDefinition.properties)) {\n const [key, prop] = unfoldProperty(...entry);\n properties[key] = prop;\n }\n\n return {\n traits: rawDefinition.traits,\n properties,\n defaultSlot: rawDefinition.defaultSlot,\n };\n}\n\nexport function unfoldComponentDefinitions(\n rawDefinitions: Record<string, ComponentRawDefinition>,\n): Record<string, ComponentDefinition> {\n const result: Record<string, ComponentDefinition> = {};\n\n for (const [componentType, rawDefinition] of Object.entries(rawDefinitions)) {\n result[componentType] = unfoldComponentDefinition(rawDefinition);\n }\n\n return result;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["unfoldAwait","unfoldFor","unfoldTemplate","unfoldIf"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaskad/schema",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@kaskad/types": "0.0.
|
|
6
|
-
"@kaskad/definition": "0.0.
|
|
7
|
-
"@kaskad/config": "0.0.
|
|
5
|
+
"@kaskad/types": "0.0.10",
|
|
6
|
+
"@kaskad/definition": "0.0.10",
|
|
7
|
+
"@kaskad/config": "0.0.10",
|
|
8
8
|
"yaml": "^2.0.0",
|
|
9
9
|
"@angular/core": "^21.0.0"
|
|
10
10
|
},
|
package/types/kaskad-schema.d.ts
CHANGED
|
@@ -52,6 +52,12 @@ type SwitchComputationRecipe = {
|
|
|
52
52
|
}[];
|
|
53
53
|
default: unknown;
|
|
54
54
|
};
|
|
55
|
+
type AwaitComputationRecipe = {
|
|
56
|
+
await: string;
|
|
57
|
+
pending?: unknown;
|
|
58
|
+
then: unknown;
|
|
59
|
+
error?: unknown;
|
|
60
|
+
};
|
|
55
61
|
|
|
56
62
|
type ComponentRawDefinition = {
|
|
57
63
|
readonly traits?: string[];
|
|
@@ -122,4 +128,4 @@ declare function unfoldComponentDefinitions(rawDefinitions: Record<string, Compo
|
|
|
122
128
|
declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
123
129
|
|
|
124
130
|
export { PathSymbol, WrapperPrefix, extractComponentTypes, extractWrappers, hasWrappers, isObject, isUnfoldedNodeSchema, loadRecipe, loadTemplates, parseValueType, registerDeclaredType, templateRegistry, toFullNotation, unfoldComponentDefinition, unfoldComponentDefinitions, unfoldFlatWrappers, unfoldNodeSchema, unfoldProperty, withBaseTemplateUrl };
|
|
125
|
-
export type { ComponentRawDefinition, ComponentRecipe, Defer, ForComputationRecipe, FormulaComputationRecipe, IfComputationRecipe, NodeChangeHandlerRecipe, RawNode, SwitchComputationRecipe, TemplateRecipe, TemplateRecipeDefinition };
|
|
131
|
+
export type { AwaitComputationRecipe, ComponentRawDefinition, ComponentRecipe, Defer, ForComputationRecipe, FormulaComputationRecipe, IfComputationRecipe, NodeChangeHandlerRecipe, RawNode, SwitchComputationRecipe, TemplateRecipe, TemplateRecipeDefinition };
|