olova 2.0.64 → 2.0.67

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../compiler/parse.ts","../compiler/html-parser.ts","../compiler/dom-generator.ts","../compiler/compile.ts"],"names":["isWhitespace","findTagEnd","parseAttributes","tagEnd","tag","statement","childExpr","id"],"mappings":"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","file":"compiler.js","sourcesContent":["export type StyleBlock = {\n content: string;\n attrs: Record<string, string | true>;\n};\n\nexport type ParsedOlovaFile = {\n script: string;\n template: string;\n styles: StyleBlock[];\n};\n\ntype TagMatch = {\n fullStart: number;\n openEnd: number;\n closeStart: number;\n closeEnd: number;\n inner: string;\n attrs: Record<string, string | true>;\n};\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction skipQuoted(source: string, start: number, quote: string): number {\n let index = start + 1;\n while (index < source.length) {\n if (source[index] === \"\\\\\" && index + 1 < source.length) {\n index += 2;\n continue;\n }\n\n if (source[index] === quote) {\n return index + 1;\n }\n\n index += 1;\n }\n\n return source.length;\n}\n\nfunction findTagEnd(source: string, start: number): number {\n let index = start;\n while (index < source.length) {\n const char = source[index];\n if (char === '\"' || char === \"'\") {\n index = skipQuoted(source, index, char);\n continue;\n }\n\n if (char === \">\") {\n return index;\n }\n\n index += 1;\n }\n\n return -1;\n}\n\nfunction parseAttributes(source: string): Record<string, string | true> {\n const attrs: Record<string, string | true> = {};\n const attrRegex =\n /([:@A-Za-z_][-A-Za-z0-9_:.@]*)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s>]+)))?/g;\n\n let match: RegExpExecArray | null;\n while ((match = attrRegex.exec(source)) !== null) {\n const [, name, doubleQuoted, singleQuoted, bare] = match;\n const value = doubleQuoted ?? singleQuoted ?? bare ?? true;\n attrs[name] = value;\n }\n\n return attrs;\n}\n\nfunction readOpeningTag(\n source: string,\n start: number,\n): { tag: string; openEnd: number; attrs: Record<string, string | true> } | null {\n if (source[start] !== \"<\") {\n return null;\n }\n\n const tagEnd = findTagEnd(source, start + 1);\n if (tagEnd < 0) {\n return null;\n }\n\n const raw = source.slice(start + 1, tagEnd).trim();\n if (!raw || raw.startsWith(\"/\") || raw.startsWith(\"!\")) {\n return null;\n }\n\n let splitIndex = 0;\n while (splitIndex < raw.length && !isWhitespace(raw[splitIndex]) && raw[splitIndex] !== \"/\") {\n splitIndex += 1;\n }\n\n const tag = raw.slice(0, splitIndex);\n const attrsSource = raw.slice(splitIndex).replace(/\\/\\s*$/, \"\").trim();\n return {\n tag,\n openEnd: tagEnd + 1,\n attrs: parseAttributes(attrsSource),\n };\n}\n\nfunction findMatchingTag(\n source: string,\n start: number,\n tagName: string,\n): TagMatch | null {\n const opening = readOpeningTag(source, start);\n if (!opening || opening.tag.toLowerCase() !== tagName.toLowerCase()) {\n return null;\n }\n\n const selfClosing = /\\/\\s*>$/.test(source.slice(start, opening.openEnd));\n if (selfClosing) {\n return {\n fullStart: start,\n openEnd: opening.openEnd,\n closeStart: opening.openEnd,\n closeEnd: opening.openEnd,\n inner: \"\",\n attrs: opening.attrs,\n };\n }\n\n let depth = 1;\n let index = opening.openEnd;\n\n while (index < source.length) {\n const next = source.indexOf(\"<\", index);\n if (next < 0) {\n break;\n }\n\n if (source.startsWith(\"<!--\", next)) {\n const commentEnd = source.indexOf(\"-->\", next + 4);\n index = commentEnd >= 0 ? commentEnd + 3 : source.length;\n continue;\n }\n\n if (source[next + 1] === \"/\") {\n const closeEnd = findTagEnd(source, next + 2);\n if (closeEnd < 0) {\n break;\n }\n\n const closeTag = source.slice(next + 2, closeEnd).trim();\n if (closeTag.toLowerCase() === tagName.toLowerCase()) {\n depth -= 1;\n if (depth === 0) {\n return {\n fullStart: start,\n openEnd: opening.openEnd,\n closeStart: next,\n closeEnd: closeEnd + 1,\n inner: source.slice(opening.openEnd, next),\n attrs: opening.attrs,\n };\n }\n }\n\n index = closeEnd + 1;\n continue;\n }\n\n const nested = readOpeningTag(source, next);\n if (!nested) {\n index = next + 1;\n continue;\n }\n\n if (nested.tag.toLowerCase() === tagName.toLowerCase()) {\n const nestedSelfClosing = /\\/\\s*>$/.test(source.slice(next, nested.openEnd));\n if (!nestedSelfClosing) {\n depth += 1;\n }\n }\n\n index = nested.openEnd;\n }\n\n return null;\n}\n\nfunction collectTopLevelBlocks(source: string, tagName: string): TagMatch[] {\n const blocks: TagMatch[] = [];\n let index = 0;\n\n while (index < source.length) {\n const next = source.indexOf(`<${tagName}`, index);\n if (next < 0) {\n break;\n }\n\n const previous = next > 0 ? source[next - 1] : \"\";\n if (previous && /[A-Za-z0-9_:-]/.test(previous)) {\n index = next + tagName.length + 1;\n continue;\n }\n\n const block = findMatchingTag(source, next, tagName);\n if (!block) {\n index = next + tagName.length + 1;\n continue;\n }\n\n blocks.push(block);\n index = block.closeEnd;\n }\n\n return blocks;\n}\n\nfunction removeRanges(source: string, ranges: Array<{ start: number; end: number }>): string {\n if (ranges.length === 0) {\n return source.trim();\n }\n\n const ordered = [...ranges].sort((a, b) => a.start - b.start);\n let cursor = 0;\n let output = \"\";\n\n for (const range of ordered) {\n output += source.slice(cursor, range.start);\n cursor = range.end;\n }\n\n output += source.slice(cursor);\n return output.trim();\n}\n\nexport function parseOlovaFile(source: string): ParsedOlovaFile {\n const scriptBlock = collectTopLevelBlocks(source, \"script\")[0] ?? null;\n const styleBlocks = collectTopLevelBlocks(source, \"style\");\n\n const ranges = styleBlocks.map((block) => ({\n start: block.fullStart,\n end: block.closeEnd,\n }));\n\n if (scriptBlock) {\n ranges.push({ start: scriptBlock.fullStart, end: scriptBlock.closeEnd });\n }\n\n return {\n script: scriptBlock?.inner.trim() ?? \"\",\n template: removeRanges(source, ranges),\n styles: styleBlocks.map((block) => ({\n content: block.inner.trim(),\n attrs: block.attrs,\n })),\n };\n}\n","export type ASTNode = ASTElement | ASTText | ASTComment;\r\n\r\nexport interface ASTElement {\r\n type: \"element\";\r\n tag: string;\r\n attrs: Record<string, string | true>;\r\n children: ASTNode[];\r\n isSelfClosing: boolean;\r\n}\r\n\r\nexport interface ASTText {\r\n type: \"text\";\r\n content: string;\r\n}\r\n\r\nexport interface ASTComment {\n type: \"comment\";\n content: string;\n}\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction findTagEnd(source: string, start: number): number {\n let index = start;\n while (index < source.length) {\n const char = source[index];\n if (char === '\"' || char === \"'\") {\n const quoted = readQuotedValue(source, index, char);\n index = quoted.end;\n continue;\n }\n\n if (char === \"{\") {\n const braced = readBraceValue(source, index);\n index = braced.end;\n continue;\n }\n\n if (char === \">\") {\n return index;\n }\n\n index += 1;\n }\n\n return -1;\n}\n\nfunction readQuotedValue(\n source: string,\n start: number,\n quote: string,\n): { value: string; end: number } {\n let index = start + 1;\n let value = \"\";\n\n while (index < source.length) {\n const char = source[index];\n if (char === \"\\\\\" && index + 1 < source.length) {\n value += source.slice(index, index + 2);\n index += 2;\n continue;\n }\n\n if (char === quote) {\n return { value, end: index + 1 };\n }\n\n value += char;\n index += 1;\n }\n\n return { value, end: source.length };\n}\n\nfunction readBraceValue(\n source: string,\n start: number,\n): { value: string; end: number } {\n let index = start + 1;\n let depth = 1;\n let value = \"{\";\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n while (index < source.length && depth > 0) {\n const char = source[index];\n const prev = source[index - 1];\n value += char;\n\n if (quote) {\n if (char === quote && prev !== \"\\\\\") {\n quote = null;\n }\n index += 1;\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n index += 1;\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n } else if (char === \"}\") {\n depth -= 1;\n }\n\n index += 1;\n }\n\n return { value, end: index };\n}\n\nfunction parseAttributes(source: string): Record<string, string | true> {\n const attrs: Record<string, string | true> = {};\n let index = 0;\n\n while (index < source.length) {\n while (index < source.length && isWhitespace(source[index])) {\n index += 1;\n }\n\n if (index >= source.length) {\n break;\n }\n\n let nameEnd = index;\n while (\n nameEnd < source.length &&\n !isWhitespace(source[nameEnd]) &&\n source[nameEnd] !== \"=\"\n ) {\n nameEnd += 1;\n }\n\n const name = source.slice(index, nameEnd).trim();\n index = nameEnd;\n\n if (!name) {\n index += 1;\n continue;\n }\n\n while (index < source.length && isWhitespace(source[index])) {\n index += 1;\n }\n\n if (source[index] !== \"=\") {\n attrs[name] = true;\n continue;\n }\n\n index += 1;\n while (index < source.length && isWhitespace(source[index])) {\n index += 1;\n }\n\n if (index >= source.length) {\n attrs[name] = true;\n break;\n }\n\n const start = index;\n const char = source[index];\n\n if (char === '\"' || char === \"'\") {\n const quoted = readQuotedValue(source, index, char);\n attrs[name] = quoted.value;\n index = quoted.end;\n continue;\n }\n\n if (char === \"{\") {\n const braced = readBraceValue(source, index);\n attrs[name] = braced.value;\n index = braced.end;\n continue;\n }\n\n while (index < source.length && !isWhitespace(source[index])) {\n index += 1;\n }\n attrs[name] = source.slice(start, index);\n }\n\n return attrs;\n}\n\nexport function parseHTML(html: string): ASTNode[] {\n const root: ASTNode[] = [];\r\n const stack: { node: ASTElement | null; children: ASTNode[] }[] = [\r\n { node: null, children: root },\r\n ];\r\n\r\n let i = 0;\r\n\r\n while (i < html.length) {\r\n const textStart = i;\r\n const tagStart = html.indexOf(\"<\", i);\r\n\r\n if (tagStart === -1) {\r\n if (textStart < html.length) {\r\n stack[stack.length - 1].children.push({\r\n type: \"text\",\r\n content: html.slice(textStart),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n if (tagStart > textStart) {\r\n stack[stack.length - 1].children.push({\r\n type: \"text\",\r\n content: html.slice(textStart, tagStart),\r\n });\r\n }\r\n\r\n i = tagStart;\r\n\r\n if (html.startsWith(\"<!--\", i)) {\r\n const commentEnd = html.indexOf(\"-->\", i + 4);\r\n if (commentEnd === -1) {\r\n stack[stack.length - 1].children.push({\r\n type: \"comment\",\r\n content: html.slice(i + 4),\r\n });\r\n break;\r\n }\r\n stack[stack.length - 1].children.push({\r\n type: \"comment\",\r\n content: html.slice(i + 4, commentEnd),\r\n });\r\n i = commentEnd + 3;\r\n continue;\r\n }\r\n\r\n if (html.startsWith(\"</\", i)) {\r\n const tagEnd = html.indexOf(\">\", i + 2);\r\n if (tagEnd === -1) {\r\n i += 2;\r\n continue;\r\n }\r\n const tag = html\r\n .slice(i + 2, tagEnd)\r\n .trim()\r\n .toLowerCase();\r\n\r\n let closeIdx = stack.length - 1;\r\n while (closeIdx > 0 && stack[closeIdx].node?.tag.toLowerCase() !== tag) {\r\n closeIdx--;\r\n }\r\n if (closeIdx > 0) {\r\n stack.length = closeIdx;\r\n }\r\n i = tagEnd + 1;\r\n continue;\r\n }\r\n\r\n const tagEnd = findTagEnd(html, i + 1);\n if (tagEnd === -1) {\n stack[stack.length - 1].children.push({ type: \"text\", content: \"<\" });\n i++;\n continue;\n }\n\n const rawTag = html.slice(i + 1, tagEnd).trim();\n let tagNameEnd = 0;\n while (\n tagNameEnd < rawTag.length &&\n !isWhitespace(rawTag[tagNameEnd]) &&\n rawTag[tagNameEnd] !== \"/\"\n ) {\n tagNameEnd += 1;\n }\n\n const tag = rawTag.slice(0, tagNameEnd);\n if (!tag) {\n stack[stack.length - 1].children.push({ type: \"text\", content: \"<\" });\n i++;\n continue;\n }\n\n const attrsStr = rawTag.slice(tagNameEnd).replace(/\\/\\s*$/, \"\").trim();\n const selfClose = /\\/\\s*$/.test(rawTag);\n\n const attrs = parseAttributes(attrsStr);\n\r\n const isSelfClosing =\r\n !!selfClose ||\n /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/i.test(\n tag,\n );\n\r\n const element: ASTElement = {\r\n type: \"element\",\n tag,\n attrs,\n children: [],\n isSelfClosing,\n };\r\n\r\n stack[stack.length - 1].children.push(element);\r\n\r\n if (!isSelfClosing) {\r\n stack.push({ node: element, children: element.children });\r\n }\r\n\r\n i = tagEnd + 1;\n }\n\r\n return root;\r\n}\r\n","import { ASTNode, parseHTML } from \"./html-parser\";\n\nexport type TransformContext = {\n text: number;\n attr: number;\n event: number;\n comp: number;\n slot: number;\n};\n\ntype BuildContext = {\n statements: string[];\n nodes: string[];\n localCount: number;\n};\n\ntype TextFragment =\n | { type: \"static\"; value: string }\n | { type: \"dynamic\"; tokenType: string; id: string };\n\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n\nfunction splitTextFragments(text: string): TextFragment[] {\n const parts: TextFragment[] = [];\n const tokenRe = /__O_(TEXT|HTML|SLOT|COMP|IF)_([a-zA-Z0-9_]+)__/g;\n\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = tokenRe.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push({ type: \"static\", value: text.slice(lastIndex, match.index) });\n }\n parts.push({ type: \"dynamic\", tokenType: match[1], id: match[2] });\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < text.length) {\n parts.push({ type: \"static\", value: text.slice(lastIndex) });\n }\n\n return parts;\n}\n\nfunction isSvgContext(tag: string, inSvg: boolean): boolean {\n if (tag === \"foreignObject\") {\n return false;\n }\n\n return inSvg || tag === \"svg\";\n}\n\nfunction processNode(\n node: ASTNode,\n parentVar: string,\n stateNames: Set<string>,\n transformExpr: (\n expr: string,\n stateNames: Set<string>,\n ) => { code: string; containsJsx: boolean },\n counters: TransformContext,\n buildCtx: BuildContext,\n componentNames: Set<string>,\n inSvg = false,\n) {\n if (node.type === \"comment\") {\n return;\n }\n\n if (node.type === \"text\") {\n const parts = splitTextFragments(node.content);\n for (const part of parts) {\n if (part.type === \"static\") {\n if (!part.value) continue;\n const varName = `_t${buildCtx.localCount++}`;\n buildCtx.statements.push(\n `const ${varName} = document.createTextNode(${JSON.stringify(part.value)});`,\n );\n buildCtx.statements.push(`${parentVar}.appendChild(${varName});`);\n } else {\n const varName = `_d${buildCtx.localCount++}`;\n buildCtx.statements.push(\n `const ${varName} = document.createTextNode('');`,\n );\n buildCtx.nodes.push(`'${part.id}': ${varName}`);\n buildCtx.statements.push(`${parentVar}.appendChild(${varName});`);\n }\n }\n return;\n }\n\n if (node.type === \"element\") {\n const tag = node.tag;\n const varName = `_el${buildCtx.localCount++}`;\n const useSvgNamespace = isSvgContext(tag, inSvg);\n buildCtx.statements.push(\n useSvgNamespace\n ? `const ${varName} = document.createElementNS(${JSON.stringify(SVG_NAMESPACE)}, \"${tag}\");`\n : `const ${varName} = document.createElement(\"${tag}\");`,\n );\n\n for (const [attr, val] of Object.entries(node.attrs)) {\n if (attr.startsWith(\"data-o-on-\")) {\n if (typeof val === \"string\") {\n buildCtx.nodes.push(`'${val}': ${varName}`);\n }\n } else if (typeof val === \"string\" && val.includes(\"__O_ATTR_\")) {\n const match = val.match(/__O_ATTR_([a-zA-Z0-9_]+)__/);\n if (match) {\n buildCtx.nodes.push(`'${match[1]}': ${varName}`);\n }\n } else {\n if (val === true) {\n buildCtx.statements.push(`${varName}.setAttribute(\"${attr}\", \"\");`);\n } else {\n buildCtx.statements.push(\n `${varName}.setAttribute(\"${attr}\", ${JSON.stringify(val)});`,\n );\n }\n }\n }\n\n for (const child of node.children) {\n processNode(\n child,\n varName,\n stateNames,\n transformExpr,\n counters,\n buildCtx,\n componentNames,\n useSvgNamespace,\n );\n }\n\n buildCtx.statements.push(`${parentVar}.appendChild(${varName});`);\n }\n}\n\nexport function generateBuildFunction(\n html: string,\n stateNames: Set<string>,\n transformExpr: (\n expr: string,\n stateNames: Set<string>,\n ) => { code: string; containsJsx: boolean },\n counters: TransformContext,\n componentNames: Set<string>,\n): string {\n const ast = parseHTML(html);\n\n const buildCtx: BuildContext = {\n statements: [],\n nodes: [],\n localCount: 0,\n };\n\n buildCtx.statements.push(\"const _f = document.createDocumentFragment();\");\n\n for (const child of ast) {\n processNode(\n child,\n \"_f\",\n stateNames,\n transformExpr,\n counters,\n buildCtx,\n componentNames,\n );\n }\n\n return `function() {\n ${buildCtx.statements.join(\"\\n \")}\n return { fragment: _f, nodes: { ${buildCtx.nodes.join(\", \")} } };\n }`;\n}\r\n","import { parse } from \"@babel/parser\";\r\nimport generatorModule from \"@babel/generator\";\r\nimport traverseModule from \"@babel/traverse\";\nimport type { NodePath } from \"@babel/traverse\";\nimport * as t from \"@babel/types\";\nimport ts from \"typescript\";\nimport {\n parseOlovaFile,\n type ParsedOlovaFile,\n type StyleBlock,\n} from \"./parse\";\nimport { parseHTML, type ASTElement, type ASTNode } from \"./html-parser\";\nimport { generateBuildFunction } from \"./dom-generator\";\r\n\r\nconst generate =\r\n (generatorModule as unknown as { default?: typeof generatorModule })\r\n .default ?? generatorModule;\r\nconst traverse =\n (traverseModule as unknown as { default?: typeof traverseModule }).default ??\n traverseModule;\n\nconst CORE_KNOWN_IMPORTS = new Set([\n \"Signal\",\n \"computed\",\n \"createApp\",\n \"defineComponent\",\n \"derived\",\n \"effect\",\n \"getContext\",\n \"global\",\n \"hasContext\",\n \"mount\",\n \"setContext\",\n \"state\",\n]);\n\r\ntype CompileResult = {\n code: string;\n css?: string;\n map?: unknown;\n};\n\ntype CompileErrorLike = Error & {\n loc?: {\n line?: number;\n column?: number;\n index?: number;\n start?: {\n line: number;\n column: number;\n index?: number;\n };\n };\n frame?: string;\n};\n\r\ntype TextBinding = { id: string; expr: string };\r\ntype HtmlBinding = { id: string; expr: string };\r\ntype AttrBinding = { id: string; attr: string; expr: string };\r\ntype EventBinding = { id: string; event: string; expr: string };\r\ntype SlotBinding = { id: string; name: string };\r\ntype SlotFactoryDef = {\r\n varName: string;\r\n name: string;\r\n descriptor: TemplateTransformResult;\r\n};\r\ntype ComponentBinding = {\r\n id: string;\r\n component: string;\r\n propsExpr: string;\r\n slotFactories: SlotFactoryDef[];\r\n};\r\ntype IfBinding = {\r\n id: string;\r\n expr: string;\r\n trueBranch: TemplateTransformResult;\r\n falseBranch?: TemplateTransformResult;\r\n};\r\n\r\ntype TemplateTransformResult = {\r\n html: string;\r\n textBindings: TextBinding[];\r\n htmlBindings: HtmlBinding[];\r\n attrBindings: AttrBinding[];\r\n eventBindings: EventBinding[];\r\n slotBindings: SlotBinding[];\r\n componentBindings: ComponentBinding[];\r\n ifBindings: IfBinding[];\r\n buildFnStr?: string;\r\n};\r\n\r\ntype TransformContext = {\r\n text: number;\r\n attr: number;\r\n event: number;\r\n comp: number;\r\n slot: number;\r\n if: number;\r\n};\r\n\r\nfunction escapeTemplate(source: string): string {\n return source.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\");\n}\n\nfunction indexToLocation(source: string, index: number): {\n line: number;\n column: number;\n index: number;\n} {\n const safeIndex = Math.max(0, Math.min(index, source.length));\n const lines = source.slice(0, safeIndex).split(\"\\n\");\n return {\n line: lines.length,\n column: lines[lines.length - 1]?.length ?? 0,\n index: safeIndex,\n };\n}\n\nfunction createCodeFrame(\n source: string,\n line: number,\n column: number,\n contextLines = 2,\n): string {\n const lines = source.split(\"\\n\");\n const start = Math.max(0, line - 1 - contextLines);\n const end = Math.min(lines.length, line + contextLines);\n return lines\n .slice(start, end)\n .map((content, offset) => {\n const lineNumber = start + offset + 1;\n const prefix = `${String(lineNumber).padStart(4, \" \")} | `;\n if (lineNumber !== line) {\n return `${prefix}${content}`;\n }\n return `${prefix}${content}\\n | ${\" \".repeat(Math.max(column, 0))}^`;\n })\n .join(\"\\n\");\n}\n\nfunction createCompileError(\n message: string,\n source: string,\n index: number,\n): CompileErrorLike {\n const loc = indexToLocation(source, index);\n const error = new Error(message) as CompileErrorLike;\n error.loc = { start: loc };\n error.frame = createCodeFrame(source, loc.line, loc.column);\n return error;\n}\n\nfunction normalizeCompileError(\n error: unknown,\n source: string,\n filename = \"component.olova\",\n): never {\n const compileError =\n (error instanceof Error ? error : new Error(String(error))) as CompileErrorLike;\n const start = compileError.loc?.start ?? compileError.loc;\n const line = start?.line;\n const column = start?.column;\n const locationSuffix =\n line === undefined || column === undefined\n ? \"\"\n : ` (${filename}:${line}:${column + 1})`;\n compileError.message = `[olova] ${compileError.message.replace(/^\\[olova\\]\\s*/, \"\")}${locationSuffix}`;\n if (line !== undefined && column !== undefined && !compileError.frame) {\n compileError.frame = createCodeFrame(source, line, column);\n }\n throw compileError;\n}\n\r\nfunction parseModule(code: string): t.File {\n return parse(code, {\n sourceType: \"module\",\n plugins: [\"typescript\", \"jsx\"],\n });\n}\n\nfunction transpileTypeScript(code: string, filename = \"component.ts\"): CompileResult {\n const result = ts.transpileModule(code, {\n fileName: filename,\n compilerOptions: {\n target: ts.ScriptTarget.ES2022,\n module: ts.ModuleKind.ESNext,\n jsx: ts.JsxEmit.Preserve,\n importsNotUsedAsValues: ts.ImportsNotUsedAsValues.Remove,\n verbatimModuleSyntax: false,\n sourceMap: true,\n inlineSources: true,\n },\n });\n\n return {\n code: result.outputText.trim(),\n map: result.sourceMapText ? JSON.parse(result.sourceMapText) : null,\n };\n}\n\nfunction compileModuleScript(script: string, filename = \"module.olova.ts\"): CompileResult {\n const ast = parseModule(script || \"\");\n return transpileTypeScript(\n ast.program.body.map((node) => generate(node).code).join(\"\\n\"),\n filename,\n );\n}\n\r\nfunction isModuleOnlyScript(script: string): boolean {\r\n if (!script.trim()) {\r\n return false;\r\n }\r\n\r\n const ast = parseModule(script);\r\n return ast.program.body.every(\r\n (node) =>\r\n t.isImportDeclaration(node) ||\r\n t.isExportNamedDeclaration(node) ||\r\n t.isExportAllDeclaration(node) ||\r\n t.isExportDefaultDeclaration(node),\r\n );\r\n}\r\n\r\nfunction isStateInit(node: t.Node | null | undefined): boolean {\n return !!(\r\n node &&\r\n t.isCallExpression(node) &&\r\n ((t.isIdentifier(node.callee) && node.callee.name === \"state\") ||\r\n (t.isMemberExpression(node.callee) &&\r\n t.isIdentifier(node.callee.object) &&\r\n node.callee.object.name === \"__olovaGlobal\" &&\r\n t.isIdentifier(node.callee.property) &&\r\n (node.callee.property.name === \"state\" ||\r\n node.callee.property.name === \"get\")))\r\n );\r\n}\r\n\r\nfunction isComputedInit(node: t.Node | null | undefined): boolean {\n return !!(\n node &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee) &&\n (node.callee.name === \"computed\" || node.callee.name === \"derived\")\n );\n}\n\nfunction appendHmrStateKey(\n node: t.Node | null | undefined,\n key: string,\n): void {\n if (!node) {\n return;\n }\n\n if (t.isCallExpression(node) && t.isIdentifier(node.callee) && node.callee.name === \"state\") {\n const existingKey = node.arguments[1];\n if (!existingKey || !t.isStringLiteral(existingKey)) {\n node.arguments = [node.arguments[0] ?? t.identifier(\"undefined\"), t.stringLiteral(key)];\n }\n return;\n }\n\n if (t.isConditionalExpression(node)) {\n appendHmrStateKey(node.consequent, `${key}:then`);\n appendHmrStateKey(node.alternate, `${key}:else`);\n return;\n }\n\n if (t.isLogicalExpression(node)) {\n appendHmrStateKey(node.left, `${key}:left`);\n appendHmrStateKey(node.right, `${key}:right`);\n }\n}\n\r\nfunction containsStateInit(node: t.Node | null | undefined): boolean {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n if (isStateInit(node)) {\r\n return true;\r\n }\r\n\r\n if (t.isConditionalExpression(node)) {\r\n return (\r\n containsStateInit(node.consequent) || containsStateInit(node.alternate)\r\n );\r\n }\r\n\r\n if (t.isLogicalExpression(node)) {\r\n return containsStateInit(node.left) || containsStateInit(node.right);\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction containsSignalInit(node: t.Node | null | undefined): boolean {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n if (isStateInit(node) || isComputedInit(node)) {\r\n return true;\r\n }\r\n\r\n if (t.isConditionalExpression(node)) {\r\n return (\r\n containsSignalInit(node.consequent) || containsSignalInit(node.alternate)\r\n );\r\n }\r\n\r\n if (t.isLogicalExpression(node)) {\r\n return containsSignalInit(node.left) || containsSignalInit(node.right);\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isGlobalStateCall(node: t.CallExpression): boolean {\r\n return (\r\n t.isMemberExpression(node.callee) &&\r\n t.isIdentifier(node.callee.object) &&\r\n (node.callee.object.name === \"global\" ||\r\n node.callee.object.name === \"__olovaGlobal\") &&\r\n t.isIdentifier(node.callee.property) &&\r\n node.callee.property.name === \"state\"\r\n );\r\n}\r\n\r\nfunction shouldSkipIdentifierTransform(path: NodePath<t.Identifier>): boolean {\r\n if (\r\n path.parentPath?.isVariableDeclarator() &&\r\n path.parentPath.node.id === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isAssignmentExpression() &&\r\n path.parentPath.node.left === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n if (path.parentPath?.isUpdateExpression()) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isCallExpression() &&\r\n t.isIdentifier(path.parentPath.node.callee) &&\r\n path.parentPath.node.callee.name === \"setContext\" &&\r\n path.parentPath.node.arguments.includes(path.node as t.Expression)\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isMemberExpression() &&\r\n path.parentPath.node.property === path.node &&\r\n !path.parentPath.node.computed\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isMemberExpression() &&\r\n path.parentPath.node.object === path.node &&\r\n t.isIdentifier(path.parentPath.node.property) &&\r\n (path.parentPath.node.property.name === \"value\" ||\r\n path.parentPath.node.property.name === \"notify\")\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isImportSpecifier() ||\r\n path.parentPath?.isExportSpecifier()\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isObjectProperty() &&\r\n path.parentPath.node.key === path.node &&\r\n !path.parentPath.node.computed &&\r\n !(path.parentPath.node as t.ObjectProperty).shorthand\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isFunctionDeclaration() &&\r\n path.parentPath.node.id === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isClassDeclaration() &&\r\n path.parentPath.node.id === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction addNestedMutationNotify(ast: t.File, stateNames: Set<string>): void {\r\n traverse(ast, {\r\n AssignmentExpression(path: NodePath<t.AssignmentExpression>) {\r\n const left = path.node.left;\r\n if (!t.isMemberExpression(left)) {\r\n return;\r\n }\r\n\r\n let root: t.MemberExpression = left;\r\n while (t.isMemberExpression(root.object)) {\r\n root = root.object as t.MemberExpression;\r\n }\r\n\r\n if (!t.isIdentifier(root.object)) {\r\n return;\r\n }\r\n\r\n if (!t.isIdentifier(root.property) || root.property.name !== \"value\") {\r\n return;\r\n }\r\n\r\n const stateName = root.object.name;\r\n if (!stateNames.has(stateName)) {\r\n return;\r\n }\r\n\r\n if (left === root) {\r\n return;\r\n }\r\n\r\n if (path.parentPath?.isSequenceExpression()) {\r\n return;\r\n }\r\n\r\n path.replaceWith(\r\n t.sequenceExpression([\r\n path.node,\r\n t.callExpression(\r\n t.memberExpression(t.identifier(stateName), t.identifier(\"notify\")),\r\n [],\r\n ),\r\n ]),\r\n );\r\n path.skip();\r\n },\r\n });\r\n}\r\n\r\nfunction collectScriptInfo(script: string): {\n importsCode: string;\n scriptBodyCode: string;\n stateNames: Set<string>;\n allSignalNames: Set<string>;\n componentNames: Set<string>;\n jsxFunctionNames: Set<string>;\n} {\n const ast = parseModule(script || \"\");\n const stateNames = new Set<string>();\n const allSignalNames = new Set<string>();\n const componentNames = new Set<string>();\n const jsxFunctionNames = new Set<string>();\n let needsGlobalRuntime = false;\n\r\n for (const node of ast.program.body) {\r\n if (!t.isImportDeclaration(node)) {\r\n continue;\r\n }\r\n\r\n for (const specifier of node.specifiers) {\r\n componentNames.add(specifier.local.name);\r\n }\r\n }\r\n\r\n const rewrittenBody: t.Statement[] = [];\n for (const node of ast.program.body) {\n if (\n t.isImportDeclaration(node) &&\n t.isStringLiteral(node.source) &&\n (node.source.value === \"olova/global\" || node.source.value === \"olova/core\")\n ) {\n if (node.source.value === \"olova/global\") {\n needsGlobalRuntime = true;\n const declarators: t.VariableDeclarator[] = [];\n\n for (const specifier of node.specifiers) {\n if (!t.isImportSpecifier(specifier)) {\n throw new Error(\n \"[olova] Use named imports with 'olova/global' (e.g. import { user } from 'olova/global').\",\n );\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n\n declarators.push(\n t.variableDeclarator(\n t.identifier(specifier.local.name),\n t.callExpression(\n t.memberExpression(\n t.identifier(\"__olovaGlobal\"),\n t.identifier(\"get\"),\n ),\n [t.stringLiteral(imported)],\n ),\n ),\n );\n }\n\n if (declarators.length > 0) {\n rewrittenBody.push(t.variableDeclaration(\"const\", declarators));\n }\n continue;\n }\n\n const keptSpecifiers: t.ImportDeclaration[\"specifiers\"] = [];\n const globalDeclarators: t.VariableDeclarator[] = [];\n\n for (const specifier of node.specifiers) {\n if (!t.isImportSpecifier(specifier)) {\n keptSpecifiers.push(specifier);\n continue;\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n\n if (CORE_KNOWN_IMPORTS.has(imported)) {\n keptSpecifiers.push(specifier);\n continue;\n }\n\n needsGlobalRuntime = true;\n globalDeclarators.push(\n t.variableDeclarator(\n t.identifier(specifier.local.name),\n t.callExpression(\n t.memberExpression(\n t.identifier(\"__olovaGlobal\"),\n t.identifier(\"get\"),\n ),\n [t.stringLiteral(imported)],\n ),\n ),\n );\n }\n\n if (keptSpecifiers.length > 0) {\n rewrittenBody.push(\n t.importDeclaration(keptSpecifiers, t.stringLiteral(\"olova/core\")),\n );\n }\n\n if (globalDeclarators.length > 0) {\n rewrittenBody.push(t.variableDeclaration(\"const\", globalDeclarators));\n }\n\n continue;\n }\n\n rewrittenBody.push(node);\n }\r\n ast.program.body = rewrittenBody;\r\n\r\n traverse(ast, {\r\n CallExpression(path: NodePath<t.CallExpression>) {\r\n if (!isGlobalStateCall(path.node)) {\r\n return;\r\n }\r\n\r\n needsGlobalRuntime = true;\r\n path.node.callee = t.memberExpression(\r\n t.identifier(\"__olovaGlobal\"),\r\n t.identifier(\"state\"),\r\n );\r\n\r\n if (\r\n path.parentPath &&\r\n path.parentPath.isVariableDeclarator() &&\r\n t.isIdentifier(path.parentPath.node.id)\r\n ) {\r\n const firstArg = path.node.arguments[0];\r\n const alreadyNamed =\r\n !!firstArg &&\r\n t.isStringLiteral(firstArg as t.Expression) &&\r\n (firstArg as t.StringLiteral).value.length > 0;\r\n\r\n if (!alreadyNamed) {\r\n path.node.arguments = [\r\n t.stringLiteral(path.parentPath.node.id.name),\r\n ...path.node.arguments,\r\n ];\r\n }\r\n }\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n VariableDeclarator(path: NodePath<t.VariableDeclarator>) {\r\n if (!t.isIdentifier(path.node.id)) {\r\n return;\r\n }\r\n\r\n if (containsStateInit(path.node.init)) {\n stateNames.add(path.node.id.name);\n appendHmrStateKey(path.node.init, path.node.id.name);\n }\n\r\n if (containsSignalInit(path.node.init)) {\r\n allSignalNames.add(path.node.id.name);\r\n }\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n AssignmentExpression(path: NodePath<t.AssignmentExpression>) {\r\n if (!t.isIdentifier(path.node.left)) {\r\n return;\r\n }\r\n\r\n const name = path.node.left.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (!binding || !t.isVariableDeclarator(binding.path.node)) {\r\n return;\r\n }\r\n\r\n if (\r\n !t.isIdentifier(binding.path.node.id) ||\r\n !containsStateInit(binding.path.node.init)\r\n ) {\r\n return;\r\n }\r\n\r\n path.node.left = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n UpdateExpression(path: NodePath<t.UpdateExpression>) {\r\n if (!t.isIdentifier(path.node.argument)) {\r\n return;\r\n }\r\n\r\n const name = path.node.argument.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (!binding || !t.isVariableDeclarator(binding.path.node)) {\r\n return;\r\n }\r\n\r\n if (\r\n !t.isIdentifier(binding.path.node.id) ||\r\n !containsStateInit(binding.path.node.init)\r\n ) {\r\n return;\r\n }\r\n\r\n path.node.argument = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n Identifier(path: NodePath<t.Identifier>) {\r\n const name = path.node.name;\r\n if (!allSignalNames.has(name)) {\r\n return;\r\n }\r\n\r\n if (shouldSkipIdentifierTransform(path)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (!binding || !t.isVariableDeclarator(binding.path.node)) {\r\n return;\r\n }\r\n\r\n if (\r\n !t.isIdentifier(binding.path.node.id) ||\r\n !containsSignalInit(binding.path.node.init)\r\n ) {\r\n return;\r\n }\r\n\r\n path.replaceWith(\r\n t.memberExpression(t.identifier(name), t.identifier(\"value\")),\r\n );\r\n path.skip();\r\n },\r\n });\r\n\r\n addNestedMutationNotify(ast, stateNames);\n\n const nodeContainsJsx = (node: t.Node | null | undefined): boolean => {\n if (!node) {\n return false;\n }\n\n let found = false;\n traverse(parseModule(`(${generate(node).code})`), {\n JSXElement() {\n found = true;\n },\n JSXFragment() {\n found = true;\n },\n });\n return found;\n };\n\n traverse(ast, {\n FunctionDeclaration(path: NodePath<t.FunctionDeclaration>) {\n if (path.node.id && nodeContainsJsx(path.node.body)) {\n jsxFunctionNames.add(path.node.id.name);\n }\n },\n VariableDeclarator(path: NodePath<t.VariableDeclarator>) {\n if (\n t.isIdentifier(path.node.id) &&\n nodeContainsJsx(path.node.init)\n ) {\n jsxFunctionNames.add(path.node.id.name);\n }\n },\n });\n\n traverse(ast, {\n JSXElement(path: NodePath<t.JSXElement>) {\n const transformed = transformExpression(\n generate(path.node).code,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n );\n const parsed = parseModule(`(${transformed.code})`);\n const statement = parsed.program.body[0];\n if (statement && t.isExpressionStatement(statement)) {\n path.replaceWith(statement.expression);\n path.skip();\n }\n },\n JSXFragment(path: NodePath<t.JSXFragment>) {\n const transformed = transformExpression(\n generate(path.node).code,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n );\n const parsed = parseModule(`(${transformed.code})`);\n const statement = parsed.program.body[0];\n if (statement && t.isExpressionStatement(statement)) {\n path.replaceWith(statement.expression);\n path.skip();\n }\n },\n });\n\n if (needsGlobalRuntime) {\n ast.program.body.unshift(\r\n t.importDeclaration(\r\n [\r\n t.importSpecifier(\r\n t.identifier(\"__olovaGlobal\"),\r\n t.identifier(\"global\"),\r\n ),\r\n ],\r\n t.stringLiteral(\"olova/global\"),\r\n ),\r\n );\r\n }\r\n\r\n const importNodes = ast.program.body.filter(\r\n (node): node is t.ImportDeclaration => t.isImportDeclaration(node),\r\n );\r\n const bodyNodes = ast.program.body.filter(\r\n (node) => !t.isImportDeclaration(node),\r\n );\r\n\r\n const importsCode = importNodes.map((node) => generate(node).code).join(\"\\n\");\r\n const scriptBodyCode = bodyNodes\r\n .map((node) => generate(node).code)\r\n .join(\"\\n\");\r\n\r\n return {\r\n importsCode,\r\n scriptBodyCode,\r\n stateNames,\n allSignalNames,\n componentNames,\n jsxFunctionNames,\n };\n}\n\r\ntype TransformedExpression = {\r\n code: string;\r\n containsJsx: boolean;\r\n};\r\n\r\nfunction transformExpression(\n expr: string,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n jsxFunctionNames: Set<string> = new Set<string>(),\n scopeId?: string,\n): TransformedExpression {\n const ast = parseModule(`(${expr})`);\n let containsJsx = false;\n const jsxScopeAttr = createScopeAttr(scopeId);\n\r\n traverse(ast, {\r\n AssignmentExpression(path: NodePath<t.AssignmentExpression>) {\r\n if (!t.isIdentifier(path.node.left)) {\r\n return;\r\n }\r\n\r\n const name = path.node.left.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (binding) {\r\n return;\r\n }\r\n\r\n path.node.left = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n UpdateExpression(path: NodePath<t.UpdateExpression>) {\r\n if (!t.isIdentifier(path.node.argument)) {\r\n return;\r\n }\r\n\r\n const name = path.node.argument.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (binding) {\r\n return;\r\n }\r\n\r\n path.node.argument = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n Identifier(path: NodePath<t.Identifier>) {\r\n const name = path.node.name;\r\n if (!allSignalNames.has(name)) {\r\n return;\r\n }\r\n\r\n if (shouldSkipIdentifierTransform(path)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (binding) {\r\n return;\r\n }\r\n\r\n path.replaceWith(\r\n t.memberExpression(t.identifier(name), t.identifier(\"value\")),\r\n );\r\n path.skip();\r\n },\r\n });\r\n\r\n addNestedMutationNotify(ast, stateNames);\r\n\r\n const toStringCall = (input: t.Expression): t.CallExpression =>\n t.callExpression(t.identifier(\"__olovaToString\"), [input]);\n const escapeCall = (input: t.Expression): t.CallExpression =>\n t.callExpression(t.identifier(\"__olovaEscape\"), [input]);\n\n const expressionContainsJsx = (input: t.Node): boolean => {\n let found = false;\n traverse(parseModule(`(${generate(input).code})`), {\n JSXElement() {\n found = true;\n },\n JSXFragment() {\n found = true;\n },\n });\n return found;\n };\n\n const expressionProducesHtml = (input: t.Node | null | undefined): boolean => {\n if (!input) {\n return false;\n }\n\n if (expressionContainsJsx(input)) {\n return true;\n }\n\n let found = false;\n traverse(parseModule(`(${generate(input).code})`), {\n CallExpression(path) {\n if (\n t.isIdentifier(path.node.callee) &&\n jsxFunctionNames.has(path.node.callee.name)\n ) {\n found = true;\n path.stop();\n return;\n }\n\n if (\n t.isMemberExpression(path.node.callee) &&\n t.isIdentifier(path.node.callee.property) &&\n (path.node.callee.property.name === \"map\" ||\n path.node.callee.property.name === \"flatMap\")\n ) {\n const [firstArg] = path.node.arguments;\n if (\n (t.isIdentifier(firstArg) && jsxFunctionNames.has(firstArg.name)) ||\n nodeContainsRenderableFunction(firstArg, jsxFunctionNames)\n ) {\n found = true;\n path.stop();\n }\n }\n },\n });\n\n return found;\n };\n\n const nodeContainsRenderableFunction = (\n node: t.Node | null | undefined,\n knownJsxFunctions: Set<string>,\n ): boolean => {\n if (!node) {\n return false;\n }\n\n if (t.isArrowFunctionExpression(node) || t.isFunctionExpression(node)) {\n return (\n expressionContainsJsx(node.body) || expressionProducesHtml(node.body)\n );\n }\n\n if (t.isIdentifier(node)) {\n return knownJsxFunctions.has(node.name);\n }\n\n return false;\n };\n\r\n const concatExpressions = (parts: t.Expression[]): t.Expression => {\r\n if (parts.length === 0) {\r\n return t.stringLiteral(\"\");\r\n }\r\n\r\n return parts\r\n .slice(1)\r\n .reduce<t.Expression>(\r\n (acc, current) => t.binaryExpression(\"+\", acc, current),\r\n parts[0],\r\n );\r\n };\r\n\r\n const jsxNameToString = (\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n ): string => {\n if (t.isJSXIdentifier(name)) {\r\n return name.name;\r\n }\r\n\r\n if (t.isJSXNamespacedName(name)) {\r\n return `${name.namespace.name}:${name.name.name}`;\r\n }\r\n\r\n const walkMember = (\r\n node: t.JSXIdentifier | t.JSXMemberExpression,\r\n ): string => {\r\n if (t.isJSXIdentifier(node)) {\r\n return node.name;\r\n }\r\n\r\n return `${walkMember(node.object)}.${node.property.name}`;\r\n };\r\n\n return walkMember(name);\n };\n\n const transformEmbeddedJsxExpression = (\n input: t.Expression,\n ): { expression: t.Expression; containsJsx: boolean } => {\n const wrapped = parseModule(`(${generate(input).code})`);\n let containsNestedJsx = false;\n\n traverse(wrapped, {\n JSXElement(path) {\n containsNestedJsx = true;\n path.replaceWith(jsxElementToExpression(path.node));\n path.skip();\n },\n JSXFragment(path) {\n containsNestedJsx = true;\n path.replaceWith(jsxFragmentToExpression(path.node));\n path.skip();\n },\n });\n\n const statement = wrapped.program.body[0];\n if (!statement || !t.isExpressionStatement(statement)) {\n return { expression: input, containsJsx: containsNestedJsx };\n }\n\n return {\n expression: statement.expression,\n containsJsx: containsNestedJsx,\n };\n };\n\n const jsxAttrToExpression = (\n attr: t.JSXAttribute | t.JSXSpreadAttribute,\n ): t.Expression => {\n if (t.isJSXSpreadAttribute(attr)) {\n const transformed = transformEmbeddedJsxExpression(\n attr.argument as t.Expression,\n );\n return t.callExpression(t.identifier(\"__olovaSpreadAttrs\"), [\n transformed.expression,\n ]);\n }\n\n const name = jsxNameToString(attr.name);\n if (name === \"key\") {\n return t.stringLiteral(\"\");\n }\n\n const normalizedName = name === \"className\" ? \"class\" : name;\n const eventMatch = name.match(/^(?:on:|on)([A-Za-z]+)$/);\n if (!attr.value) {\n return t.stringLiteral(` ${normalizedName}`);\n }\n\n if (t.isStringLiteral(attr.value)) {\n return t.stringLiteral(` ${normalizedName}=\"${attr.value.value}\"`);\n }\n\n if (t.isJSXExpressionContainer(attr.value)) {\n const transformed = transformEmbeddedJsxExpression(\n (attr.value.expression as t.Expression) ?? t.stringLiteral(\"\"),\n );\n\n if (eventMatch) {\n return t.callExpression(t.identifier(\"__olovaRegisterJsxEvent\"), [\n t.stringLiteral(eventMatch[1].toLowerCase()),\n transformed.expression,\n ]);\n }\n\n const valueExpression =\n normalizedName === \"class\"\n ? t.callExpression(t.identifier(\"__olovaNormalizeClassValue\"), [\n transformed.expression,\n ])\n : transformed.expression;\n\n return concatExpressions([\n t.stringLiteral(` ${normalizedName}=\"`),\n escapeCall(valueExpression),\n t.stringLiteral('\"'),\n ]);\n }\n\r\n return t.stringLiteral(\"\");\r\n };\r\n\r\n const jsxChildToExpression = (\r\n child:\r\n | t.JSXText\r\n | t.JSXExpressionContainer\r\n | t.JSXElement\r\n | t.JSXFragment\r\n | t.JSXSpreadChild,\r\n ): t.Expression => {\r\n if (t.isJSXText(child)) {\r\n return t.stringLiteral(child.value);\r\n }\r\n\r\n if (t.isJSXExpressionContainer(child)) {\n if (t.isJSXEmptyExpression(child.expression)) {\n return t.stringLiteral(\"\");\n }\n\n const rawExpression = child.expression as t.Expression;\n const transformed = transformEmbeddedJsxExpression(rawExpression);\n return transformed.containsJsx || expressionProducesHtml(rawExpression)\n ? toStringCall(transformed.expression)\n : escapeCall(transformed.expression);\n }\n\n if (t.isJSXSpreadChild(child)) {\n const transformed = transformEmbeddedJsxExpression(child.expression);\n return transformed.containsJsx || expressionProducesHtml(child.expression)\n ? toStringCall(transformed.expression)\n : escapeCall(transformed.expression);\n }\n\r\n if (t.isJSXElement(child)) {\r\n return jsxElementToExpression(child);\r\n }\r\n\r\n return jsxFragmentToExpression(child);\r\n };\r\n\r\n const jsxFragmentToExpression = (fragment: t.JSXFragment): t.Expression => {\r\n const parts = fragment.children.map((child) => jsxChildToExpression(child));\r\n return concatExpressions(parts);\r\n };\r\n\r\n const jsxElementToExpression = (element: t.JSXElement): t.Expression => {\n const opening = element.openingElement;\n const tag = jsxNameToString(opening.name);\n\n if (tag === \"For\") {\n let eachExpr: t.Expression = t.arrayExpression([]);\n for (const attr of opening.attributes) {\n if (\n t.isJSXAttribute(attr) &&\n jsxNameToString(attr.name) === \"each\" &&\n attr.value &&\n t.isJSXExpressionContainer(attr.value) &&\n !t.isJSXEmptyExpression(attr.value.expression)\n ) {\n eachExpr = transformEmbeddedJsxExpression(\n attr.value.expression as t.Expression,\n ).expression;\n }\n }\n\n const childRenderer = element.children.find(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression),\n );\n if (!childRenderer) {\n return t.stringLiteral(\"\");\n }\n\n return t.callExpression(t.identifier(\"__olovaFor\"), [\n eachExpr,\n transformEmbeddedJsxExpression(\n childRenderer.expression as t.Expression,\n ).expression,\n ]);\n }\n\n if (tag === \"Show\") {\n let whenExpr: t.Expression = t.booleanLiteral(false);\n let fallbackExpr: t.Expression = t.stringLiteral(\"\");\n for (const attr of opening.attributes) {\n if (!t.isJSXAttribute(attr)) {\n continue;\n }\n\n const attrName = jsxNameToString(attr.name);\n if (\n attrName === \"when\" &&\n attr.value &&\n t.isJSXExpressionContainer(attr.value) &&\n !t.isJSXEmptyExpression(attr.value.expression)\n ) {\n whenExpr = transformEmbeddedJsxExpression(\n attr.value.expression as t.Expression,\n ).expression;\n }\n\n if (\n attrName === \"fallback\" &&\n attr.value &&\n t.isJSXExpressionContainer(attr.value) &&\n !t.isJSXEmptyExpression(attr.value.expression)\n ) {\n fallbackExpr = transformEmbeddedJsxExpression(\n attr.value.expression as t.Expression,\n ).expression;\n }\n }\n\n const childExpr = concatExpressions(\n element.children\n .map((child) => jsxChildToExpression(child))\n .filter(Boolean),\n );\n\n return t.callExpression(t.identifier(\"__olovaShow\"), [\n whenExpr,\n t.arrowFunctionExpression(\n [t.identifier(\"__value\")],\n childExpr,\n ),\n fallbackExpr,\n ]);\n }\n\n const attrExpr = concatExpressions(\n [\n ...(jsxScopeAttr ? [t.stringLiteral(` ${jsxScopeAttr}`)] : []),\n ...opening.attributes.map((attr) => jsxAttrToExpression(attr)),\n ],\n );\n const childExpr = concatExpressions(\r\n element.children\r\n .map((child) => jsxChildToExpression(child))\r\n .filter(Boolean),\r\n );\r\n\r\n if (opening.selfClosing) {\r\n return concatExpressions([\r\n t.stringLiteral(`<${tag}`),\r\n attrExpr,\r\n t.stringLiteral(\"/>\"),\r\n ]);\r\n }\r\n\r\n return concatExpressions([\r\n t.stringLiteral(`<${tag}`),\r\n attrExpr,\r\n t.stringLiteral(\">\"),\r\n childExpr,\r\n t.stringLiteral(`</${tag}>`),\r\n ]);\r\n };\r\n\r\n traverse(ast, {\n JSXElement(path) {\n containsJsx = true;\n path.replaceWith(jsxElementToExpression(path.node));\n path.skip();\n },\r\n JSXFragment(path) {\r\n containsJsx = true;\r\n path.replaceWith(jsxFragmentToExpression(path.node));\r\n path.skip();\r\n },\r\n });\r\n\r\n const statement = ast.program.body[0];\n if (!statement || !t.isExpressionStatement(statement)) {\n return { code: expr.trim(), containsJsx };\n }\n\n containsJsx = containsJsx || expressionProducesHtml(statement.expression);\n\n return { code: generate(statement.expression).code, containsJsx };\n}\n\r\nfunction jsxToTemplateHtml(node: t.Node): string {\r\n if (t.isJSXElement(node)) {\r\n const opening = node.openingElement;\r\n let tag = \"\";\r\n if (t.isJSXIdentifier(opening.name)) {\r\n tag = opening.name.name;\r\n } else if (t.isJSXMemberExpression(opening.name)) {\r\n const walk = (n: t.JSXIdentifier | t.JSXMemberExpression): string =>\r\n t.isJSXIdentifier(n) ? n.name : `${walk(n.object)}.${n.property.name}`;\r\n tag = walk(opening.name);\r\n } else if (t.isJSXNamespacedName(opening.name)) {\r\n tag = `${opening.name.namespace.name}:${opening.name.name.name}`;\r\n }\r\n\r\n let attrsStr = \"\";\r\n for (const attr of opening.attributes) {\r\n if (t.isJSXSpreadAttribute(attr)) {\r\n attrsStr += ` {...${generate(attr.argument).code}}`;\r\n } else {\r\n let attrName = \"\";\r\n if (t.isJSXIdentifier(attr.name)) attrName = attr.name.name;\r\n else attrName = `${attr.name.namespace.name}:${attr.name.name.name}`;\r\n\r\n if (!attr.value) attrsStr += ` ${attrName}`;\r\n else if (t.isStringLiteral(attr.value))\r\n attrsStr += ` ${attrName}=\"${attr.value.value}\"`;\r\n else if (t.isJSXExpressionContainer(attr.value)) {\r\n if (!t.isJSXEmptyExpression(attr.value.expression)) {\r\n attrsStr += ` ${attrName}={${generate(attr.value.expression).code}}`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const childrenStr = node.children.map(jsxToTemplateHtml).join(\"\");\r\n if (opening.selfClosing) {\r\n return `<${tag}${attrsStr} />`;\r\n }\r\n return `<${tag}${attrsStr}>${childrenStr}</${tag}>`;\r\n }\r\n if (t.isJSXText(node)) {\r\n return node.value;\r\n }\r\n if (t.isJSXExpressionContainer(node)) {\r\n if (t.isJSXEmptyExpression(node.expression)) return \"\";\r\n return `{${generate(node.expression).code}}`;\r\n }\r\n if (t.isJSXFragment(node)) {\r\n return node.children.map(jsxToTemplateHtml).join(\"\");\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction replaceTemplateExpressions(\n input: string,\n replacer: (expression: string) => string,\n): string {\n let output = \"\";\r\n let index = 0;\r\n\r\n while (index < input.length) {\n const start = input.indexOf(\"{\", index);\n if (start < 0) {\n output += input.slice(index);\n break;\n }\n\n let prevIndex = start - 1;\n while (prevIndex >= 0 && /\\s/.test(input[prevIndex])) {\n prevIndex -= 1;\n }\n\n if (prevIndex >= 0 && input[prevIndex] === \"=\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\n\n if (start > 0 && input[start - 1] === \"$\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\r\n\r\n output += input.slice(index, start);\r\n\r\n let depth = 1;\r\n let cursor = start + 1;\r\n let quote: \"'\" | '\"' | \"`\" | null = null;\r\n\r\n while (cursor < input.length && depth > 0) {\r\n const char = input[cursor];\r\n const prev = input[cursor - 1];\r\n\r\n if (quote) {\r\n if (char === quote && prev !== \"\\\\\") {\r\n quote = null;\r\n }\r\n cursor += 1;\r\n continue;\r\n }\r\n\r\n if (char === \"'\" || char === '\"' || char === \"`\") {\r\n quote = char;\r\n cursor += 1;\r\n continue;\r\n }\r\n\r\n if (char === \"{\") {\r\n depth += 1;\r\n } else if (char === \"}\") {\r\n depth -= 1;\r\n }\r\n\r\n cursor += 1;\r\n }\r\n\r\n if (depth !== 0) {\r\n throw createCompileError(\"[olova] Unclosed template expression block.\", input, start);\n }\n\r\n const expression = input.slice(start + 1, cursor - 1);\r\n output += replacer(expression);\r\n index = cursor;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseProps(\n attrSource: string,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n): string {\n const props: Array<string> = [];\r\n const propRe =\r\n /([:@A-Za-z_][-A-Za-z0-9_:]*)(?:=(\"[^\"]*\"|'[^']*'|\\{[^}]*\\}))?/g;\r\n\r\n for (const match of attrSource.matchAll(propRe)) {\r\n const key = match[1];\r\n const rawValue = match[2];\r\n\r\n if (key === \"slot\") {\r\n continue;\r\n }\r\n\r\n if (!rawValue) {\r\n props.push(`${JSON.stringify(key)}: true`);\r\n continue;\r\n }\r\n\r\n if (rawValue.startsWith(\"{\") && rawValue.endsWith(\"}\")) {\r\n const expr = rawValue.slice(1, -1);\r\n props.push(\r\n `${JSON.stringify(key)}: (${transformExpression(expr, stateNames, allSignalNames).code})`,\r\n );\r\n continue;\r\n }\r\n\r\n const quote = rawValue[0];\r\n const literal = rawValue.slice(1, -1);\r\n if (quote === '\"' || quote === \"'\") {\r\n props.push(`${JSON.stringify(key)}: ${JSON.stringify(literal)}`);\r\n }\r\n }\r\n\r\n return props.length === 0 ? \"{}\" : `{ ${props.join(\", \")} }`;\n}\n\nfunction parsePropsFromAttrs(\n attrs: Record<string, string | true>,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n jsxFunctionNames: Set<string>,\n): string {\n const props: Array<string> = [];\n\n for (const [key, rawValue] of Object.entries(attrs)) {\n if (key === \"slot\" || key === \"key\") {\n continue;\n }\n\n const propName = key === \"className\" ? \"class\" : key;\n\n if (rawValue === true) {\n props.push(`${JSON.stringify(propName)}: true`);\n continue;\n }\n\n if (rawValue.startsWith(\"{\") && rawValue.endsWith(\"}\")) {\n const expr = rawValue.slice(1, -1);\n const valueExpr = transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n ).code;\n props.push(\n `${JSON.stringify(propName)}: (${propName === \"class\" ? `__olovaNormalizeClassValue(${valueExpr})` : valueExpr})`,\n );\n continue;\n }\n\n props.push(`${JSON.stringify(propName)}: ${JSON.stringify(rawValue)}`);\n }\n\n return props.length === 0 ? \"{}\" : `{ ${props.join(\", \")} }`;\n}\n\r\nfunction findMatchingComponentClose(\r\n source: string,\r\n name: string,\r\n afterStartTag: number,\r\n): { closeStart: number; closeEnd: number } | null {\r\n const tagRe = new RegExp(`<\\\\/?${name}\\\\b[^>]*>`, \"g\");\r\n tagRe.lastIndex = afterStartTag;\r\n\r\n let depth = 0;\r\n let match = tagRe.exec(source);\r\n while (match) {\r\n const rawTag = match[0];\r\n const isClose = rawTag.startsWith(\"</\");\r\n const selfClosing = /\\/>\\s*$/.test(rawTag);\r\n\r\n if (isClose) {\r\n if (depth === 0) {\r\n return {\r\n closeStart: match.index,\r\n closeEnd: match.index + rawTag.length,\r\n };\r\n }\r\n\r\n depth -= 1;\r\n } else if (!selfClosing) {\r\n depth += 1;\r\n }\r\n\r\n match = tagRe.exec(source);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction extractNamedSlotTemplates(\r\n childrenSource: string,\r\n stateNames: Set<string>,\r\n allSignalNames: Set<string>,\r\n componentNames: Set<string>,\r\n counters: TransformContext,\r\n): Map<string, TemplateTransformResult> {\r\n const slots = new Map<string, TemplateTransformResult>();\r\n const slotTemplateRe =\r\n /<template\\s+slot=(\"([^\"]+)\"|'([^']+)')\\s*>([\\s\\S]*?)<\\/template>/g;\r\n\r\n let remainder = childrenSource;\r\n let match = slotTemplateRe.exec(childrenSource);\r\n while (match) {\r\n const full = match[0];\r\n const name = match[2] || match[3] || \"default\";\r\n const body = match[4] ?? \"\";\r\n slots.set(\r\n name,\r\n transformTemplate(\n body,\n stateNames,\n allSignalNames,\n new Set<string>(),\n componentNames,\n counters,\n ),\n );\r\n remainder = remainder.replace(full, \"\");\r\n match = slotTemplateRe.exec(childrenSource);\r\n }\r\n\r\n if (remainder.trim()) {\r\n slots.set(\r\n \"default\",\r\n transformTemplate(\n remainder,\n stateNames,\n allSignalNames,\n new Set<string>(),\n componentNames,\n counters,\n ),\n );\r\n }\r\n\r\n return slots;\r\n}\r\n\r\nfunction transformTemplate(\n template: string,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n jsxFunctionNames: Set<string>,\n componentNames: Set<string>,\n counters: TransformContext,\n scopeId?: string,\n): TemplateTransformResult {\n let html = template;\n const textBindings: TextBinding[] = [];\n const htmlBindings: HtmlBinding[] = [];\n const attrBindings: AttrBinding[] = [];\n const eventBindings: EventBinding[] = [];\r\n const slotBindings: SlotBinding[] = [];\r\n const componentBindings: ComponentBinding[] = [];\n const ifBindings: IfBinding[] = [];\n\r\n // PASS 1: Extract JSX conditionals BEFORE slot/event/attr regex passes\r\n html = replaceTemplateExpressions(html, (expr: string) => {\n try {\r\n const ast = parseModule(`(${expr})`);\r\n const exprNode = ast.program.body[0];\r\n if (t.isExpressionStatement(exprNode)) {\r\n const node = exprNode.expression;\r\n const containsJsxNode = (n: t.Node): boolean => {\r\n let found = false;\r\n traverse(parseModule(`(${generate(n).code})`), {\r\n JSXElement() { found = true; },\r\n JSXFragment() { found = true; },\r\n });\r\n return found;\r\n };\r\n\r\n if (t.isLogicalExpression(node) && node.operator === \"&&\") {\r\n if (containsJsxNode(node.right)) {\r\n const id = `i${counters.if++}`;\r\n const condition = generate(node.left).code;\r\n const trueBranchHtml = jsxToTemplateHtml(node.right);\r\n ifBindings.push({\r\n id,\r\n expr: transformExpression(\n condition,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n ).code,\n trueBranch: transformTemplate(\n trueBranchHtml,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\r\n return `__O_IF_${id}__`;\r\n }\r\n } else if (t.isConditionalExpression(node)) {\r\n if (containsJsxNode(node.consequent) || containsJsxNode(node.alternate)) {\r\n const id = `i${counters.if++}`;\r\n const condition = generate(node.test).code;\r\n const trueBranchHtml = containsJsxNode(node.consequent)\r\n ? jsxToTemplateHtml(node.consequent)\r\n : `{${generate(node.consequent).code}}`;\r\n const falseBranchHtml = containsJsxNode(node.alternate)\r\n ? jsxToTemplateHtml(node.alternate)\r\n : `{${generate(node.alternate).code}}`;\r\n ifBindings.push({\r\n id,\r\n expr: transformExpression(\n condition,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n ).code,\n trueBranch: transformTemplate(\n trueBranchHtml,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n falseBranch: transformTemplate(\n falseBranchHtml,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\r\n return `__O_IF_${id}__`;\r\n }\r\n }\r\n }\r\n } catch {\r\n // ignore parse errors\r\n }\r\n\r\n return `{${expr}}`;\n });\n\n const rawExpressions: Array<{ id: string; expression: string }> = [];\n html = replaceTemplateExpressions(html, (expr: string) => {\n const id = `raw_${rawExpressions.length}`;\n rawExpressions.push({ id, expression: expr });\n return `__O_RAW_EXPR_${id}__`;\n });\n\r\n const renderTextContent = (content: string): string => {\n return content.replace(\n /__O_RAW_EXPR_([a-zA-Z0-9_]+)__/g,\n (_full, exprId: string) => {\n const found = rawExpressions.find((entry) => entry.id === exprId);\n const expr = found ? found.expression : \"\";\n const transformed = transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n );\n if (transformed.containsJsx) {\n const id = `h${counters.text++}`;\n htmlBindings.push({\n id,\n expr: `__olovaDangerouslySetHtml(${transformed.code})`,\n });\n return `__O_HTML_${id}__`;\n }\n\n const id = `t${counters.text++}`;\n textBindings.push({ id, expr: transformed.code });\n return `__O_TEXT_${id}__`;\n },\n );\n };\n\n const renderAttrs = (element: ASTElement): string => {\n let output = \"\";\n const scopeAttr = createScopeAttr(scopeId);\n\n if (scopeAttr) {\n output += ` ${scopeAttr}`;\n }\n\n for (const [attrName, rawValue] of Object.entries(element.attrs)) {\n if (attrName === \"key\") {\n continue;\n }\n\n const normalizedAttrName = attrName === \"className\" ? \"class\" : attrName;\n if (rawValue === true) {\n output += ` ${normalizedAttrName}`;\n continue;\n }\n\n if (rawValue.startsWith(\"{\") && rawValue.endsWith(\"}\")) {\n const expr = rawValue.slice(1, -1);\n const eventMatch = normalizedAttrName.match(/^(?:on:|on)([A-Za-z]+)$/);\n if (eventMatch) {\n const id = `e${counters.event++}`;\n const event = eventMatch[1].toLowerCase();\n eventBindings.push({\n id,\n event,\n expr: transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n ).code,\n });\n output += ` data-o-on-${event}=\"${id}\"`;\n continue;\n }\n\n const id = `a${counters.attr++}`;\n attrBindings.push({\n id,\n attr: normalizedAttrName,\n expr:\n normalizedAttrName === \"class\"\n ? `__olovaNormalizeClassValue(${transformExpression(expr, stateNames, allSignalNames, jsxFunctionNames).code})`\n : transformExpression(expr, stateNames, allSignalNames, jsxFunctionNames).code,\n });\n output += ` ${normalizedAttrName}=\"__O_ATTR_${id}__\"`;\n continue;\n }\n\n output += ` ${normalizedAttrName}=\"${rawValue.replace(/\"/g, \"&quot;\")}\"`;\n }\n\n return output;\n };\n\n const serializeRawNodes = (nodes: ASTNode[]): string =>\n nodes\n .map((node) => {\n if (node.type === \"comment\") {\n return `<!--${node.content}-->`;\n }\n\n if (node.type === \"text\") {\n return node.content;\n }\n\n const attrs = Object.entries(node.attrs)\n .map(([name, value]) => {\n if (value === true) {\n return ` ${name}`;\n }\n\n return ` ${name}=\"${String(value).replace(/\"/g, \"&quot;\")}\"`;\n })\n .join(\"\");\n const children = serializeRawNodes(node.children);\n if (node.isSelfClosing) {\n return `<${node.tag}${attrs} />`;\n }\n\n return `<${node.tag}${attrs}>${children}</${node.tag}>`;\n })\n .join(\"\");\n\n const renderNodes = (nodes: ASTNode[]): string =>\n nodes\n .map((node) => {\n if (node.type === \"comment\") {\n return `<!--${node.content}-->`;\n }\n\n if (node.type === \"text\") {\n return renderTextContent(node.content);\n }\n\n if (node.tag === \"slot\") {\n const id = `s${counters.slot++}`;\n const slotName =\n typeof node.attrs.name === \"string\" ? node.attrs.name : \"default\";\n slotBindings.push({ id, name: slotName });\n return `__O_SLOT_${id}__`;\n }\n\n if (componentNames.has(node.tag)) {\n const id = `c${counters.comp++}`;\n const namedSlotNodes = new Map<string, ASTNode[]>();\n const defaultNodes: ASTNode[] = [];\n\n for (const child of node.children) {\n if (\n child.type === \"element\" &&\n child.tag === \"template\" &&\n typeof child.attrs.slot === \"string\"\n ) {\n namedSlotNodes.set(child.attrs.slot, child.children);\n continue;\n }\n\n defaultNodes.push(child);\n }\n\n const slotFactories: SlotFactoryDef[] = [];\n if (defaultNodes.length > 0) {\n slotFactories.push({\n varName: `__slot_${id}_default`,\n name: \"default\",\n descriptor: transformTemplate(\n serializeRawNodes(defaultNodes),\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\n }\n\n for (const [slotName, slotChildren] of namedSlotNodes.entries()) {\n slotFactories.push({\n varName: `__slot_${id}_${slotName.replace(/[^A-Za-z0-9_$]/g, \"_\")}`,\n name: slotName,\n descriptor: transformTemplate(\n serializeRawNodes(slotChildren),\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\n }\n\n componentBindings.push({\n id,\n component: node.tag,\n propsExpr: parsePropsFromAttrs(\n node.attrs,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n ),\n slotFactories,\n });\n return `__O_COMP_${id}__`;\n }\n\n const attrs = renderAttrs(node);\n const children = renderNodes(node.children);\n if (node.isSelfClosing) {\n return `<${node.tag}${attrs} />`;\n }\n\n return `<${node.tag}${attrs}>${children}</${node.tag}>`;\n })\n .join(\"\");\n\n html = renderNodes(parseHTML(html));\n\r\n const resolveExpr = (expr: string) =>\n transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n );\n const buildFnStr = generateBuildFunction(\r\n escapeTemplate(html),\r\n stateNames,\r\n resolveExpr,\r\n counters,\r\n componentNames,\r\n );\r\n\r\n return {\r\n html: escapeTemplate(html),\r\n textBindings,\r\n htmlBindings,\r\n attrBindings,\r\n eventBindings,\r\n slotBindings,\r\n componentBindings,\r\n ifBindings,\r\n buildFnStr,\r\n };\r\n}\r\n\r\nfunction indentBlock(code: string, spaces = 2): string {\r\n const pad = \" \".repeat(spaces);\r\n if (!code.trim()) {\r\n return \"\";\r\n }\r\n\r\n return code\r\n .split(\"\\n\")\r\n .map((line) => `${pad}${line}`)\r\n .join(\"\\n\");\r\n}\r\n\r\nfunction renderDescriptorLiteral(\r\n descriptor: TemplateTransformResult,\r\n indent = \" \",\r\n): string {\r\n const slotFactoryDecls = descriptor.componentBindings.flatMap((binding) =>\r\n binding.slotFactories.map(\r\n (slot) =>\r\n `${indent}const ${slot.varName} = () => (${renderDescriptorLiteral(slot.descriptor, indent + \" \")});`,\r\n ),\r\n );\r\n\r\n const componentBindingsCode = descriptor.componentBindings\r\n .map((binding) => {\r\n const slotsObject =\r\n binding.slotFactories.length === 0\r\n ? \"{}\"\r\n : `{ ${binding.slotFactories.map((slot) => `${JSON.stringify(slot.name)}: ${slot.varName}`).join(\", \")} }`;\r\n\r\n return `${indent} { id: ${JSON.stringify(binding.id)}, getComponent: () => ${binding.component}, getProps: () => (${binding.propsExpr}), getSlots: () => (${slotsObject}) }`;\r\n })\r\n .join(\",\\n\");\r\n\r\n const buildLines = descriptor.buildFnStr\r\n ? `${indent}build: ${descriptor.buildFnStr.replace(/\\n /g, \"\\n\" + indent)},`\r\n : \"\";\r\n\r\n const objectLiteral = `{\r\n${buildLines}\r\n${indent}textBindings: [\r\n${descriptor.textBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}htmlBindings: [\r\n${descriptor.htmlBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}attrBindings: [\r\n${descriptor.attrBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, attr: ${JSON.stringify(binding.attr)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}eventBindings: [\r\n${descriptor.eventBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, event: ${JSON.stringify(binding.event)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}slotBindings: [\r\n${descriptor.slotBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, name: ${JSON.stringify(binding.name)} }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}componentBindings: [\r\n${componentBindingsCode}\r\n${indent}],\r\n${indent}ifBindings: [\r\n${descriptor.ifBindings\r\n .map((binding) => {\r\n const trueFactory = `() => (${renderDescriptorLiteral(binding.trueBranch, indent + \" \")})`;\r\n const falseFactory = binding.falseBranch\r\n ? `() => (${renderDescriptorLiteral(binding.falseBranch, indent + \" \")})`\r\n : \"undefined\";\r\n return `${indent} { id: ${JSON.stringify(binding.id)}, get: () => (${binding.expr}), trueBranch: ${trueFactory}, falseBranch: ${falseFactory} }`;\r\n })\r\n .join(\",\\n\")}\r\n${indent}]\r\n${indent}}`;\r\n\r\n if (slotFactoryDecls.length === 0) {\r\n return objectLiteral;\r\n }\r\n\r\n const outerIndent = indent.length >= 2 ? indent.slice(2) : \"\";\r\n return `(() => {\\n${slotFactoryDecls.join(\"\\n\")}\\n${indent}return ${objectLiteral};\\n${outerIndent}})()`;\r\n}\r\n\r\nfunction collectImportLines(importsCode: string): string[] {\r\n return importsCode\r\n .split(\"\\n\")\r\n .map((line) => line.trim())\r\n .filter(Boolean);\r\n}\r\n\r\nfunction uniqueLines(lines: string[]): string[] {\n const seen = new Set<string>();\n const output: string[] = [];\n\r\n for (const line of lines) {\r\n if (seen.has(line)) {\r\n continue;\r\n }\r\n\r\n seen.add(line);\r\n output.push(line);\r\n }\r\n\n return output;\n}\n\nfunction extractTemplateExpressions(input: string): {\n output: string;\n expressions: Array<{ id: string; expression: string }>;\n} {\n const expressions: Array<{ id: string; expression: string }> = [];\n let output = \"\";\n let index = 0;\n let count = 0;\n\n while (index < input.length) {\n const start = input.indexOf(\"{\", index);\n if (start < 0) {\n output += input.slice(index);\n break;\n }\n\n let prevIndex = start - 1;\n while (prevIndex >= 0 && /\\s/.test(input[prevIndex])) {\n prevIndex -= 1;\n }\n\n if (prevIndex >= 0 && input[prevIndex] === \"=\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\n\n if (start > 0 && input[start - 1] === \"$\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\n\n output += input.slice(index, start);\n\n let depth = 1;\n let cursor = start + 1;\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n while (cursor < input.length && depth > 0) {\n const char = input[cursor];\n const prev = input[cursor - 1];\n\n if (quote) {\n if (char === quote && prev !== \"\\\\\") {\n quote = null;\n }\n cursor += 1;\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n cursor += 1;\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n } else if (char === \"}\") {\n depth -= 1;\n }\n\n cursor += 1;\n }\n\n if (depth !== 0) {\n throw createCompileError(\"[olova] Unclosed template expression block.\", input, start);\n }\n\n const id = `x${count++}`;\n expressions.push({\n id,\n expression: input.slice(start + 1, cursor - 1),\n });\n output += `__O_EXPR_${id}__`;\n index = cursor;\n }\n\n return { output, expressions };\n}\n\nfunction mergeImportLines(lines: string[]): string {\n const merged = new Map<\n string,\n {\n defaultImport?: string;\n namespaceImport?: string;\n namedImports: Map<string, string>;\n sideEffectOnly: boolean;\n }\n >();\n\n for (const line of uniqueLines(lines)) {\n const ast = parseModule(line);\n\n for (const node of ast.program.body) {\n if (!t.isImportDeclaration(node)) {\n continue;\n }\n\n const source = node.source.value;\n const entry =\n merged.get(source) ??\n {\n namedImports: new Map<string, string>(),\n sideEffectOnly: true,\n };\n\n if (node.specifiers.length > 0) {\n entry.sideEffectOnly = false;\n }\n\n for (const specifier of node.specifiers) {\n if (t.isImportDefaultSpecifier(specifier)) {\n entry.defaultImport ??= specifier.local.name;\n continue;\n }\n\n if (t.isImportNamespaceSpecifier(specifier)) {\n entry.namespaceImport ??= specifier.local.name;\n continue;\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n\n if (!entry.namedImports.has(imported)) {\n entry.namedImports.set(imported, specifier.local.name);\n }\n }\n\n merged.set(source, entry);\n }\n }\n\n const output: string[] = [];\n\n for (const [source, entry] of merged.entries()) {\n if (entry.sideEffectOnly) {\n output.push(generate(t.importDeclaration([], t.stringLiteral(source))).code);\n continue;\n }\n\n const specifiers: t.ImportDeclaration[\"specifiers\"] = [];\n\n if (entry.defaultImport) {\n specifiers.push(t.importDefaultSpecifier(t.identifier(entry.defaultImport)));\n }\n\n if (entry.namespaceImport) {\n specifiers.push(\n t.importNamespaceSpecifier(t.identifier(entry.namespaceImport)),\n );\n }\n\n for (const [imported, local] of entry.namedImports.entries()) {\n specifiers.push(\n t.importSpecifier(\n t.identifier(local),\n t.identifier(imported),\n ),\n );\n }\n\n output.push(\n generate(t.importDeclaration(specifiers, t.stringLiteral(source))).code,\n );\n }\n\n return output.join(\"\\n\");\n}\n\r\nfunction buildComponentCode(\n parsed: ParsedOlovaFile,\n options?: { exportName?: string; scopeId?: string; hmrId?: string; dev?: boolean },\n): { importsCode: string; code: string } {\n const scriptInfo = collectScriptInfo(parsed.script);\r\n const counters: TransformContext = {\r\n text: 0,\r\n attr: 0,\r\n event: 0,\r\n comp: 0,\r\n slot: 0,\r\n if: 0,\r\n };\r\n\r\n const transformed = transformTemplate(\n parsed.template,\n scriptInfo.stateNames,\n scriptInfo.allSignalNames,\n scriptInfo.jsxFunctionNames,\n scriptInfo.componentNames,\n counters,\n options?.scopeId,\n );\n\r\n const exportHead = options?.exportName\n ? `export const ${options.exportName} = __defineComponent((__props, __slots) => {`\n : `const __olovaComponent = __defineComponent((__props, __slots) => {`;\n const exportTail = options?.exportName\n ? `}, ${JSON.stringify(options?.hmrId)});`\n : `}, ${JSON.stringify(options?.hmrId)});\\nexport default __olovaComponent;`;\n const hmrCode =\n options?.dev && !options?.exportName && options?.hmrId\n ? `\nif (import.meta.hot) {\n import.meta.hot.accept((nextModule) => {\n if (nextModule?.default) {\n __replaceComponent(__olovaComponent, nextModule.default);\n }\n });\n}\n`\n : \"\";\n\n const code = `\n${exportHead}\n const props = __props;\n const slots = __slots;\n const __olovaGlobalObj = globalThis;\n const __olovaJsxHandlers =\n __olovaGlobalObj.__olovaJsxHandlers ?? (__olovaGlobalObj.__olovaJsxHandlers = new Map());\n const __olovaNextJsxEventId = () => {\n __olovaGlobalObj.__olovaJsxEventId = (__olovaGlobalObj.__olovaJsxEventId ?? 0) + 1;\n return String(__olovaGlobalObj.__olovaJsxEventId);\n };\n if (typeof __olovaGlobalObj.__olovaDispatchJsxEvent !== 'function') {\n __olovaGlobalObj.__olovaDispatchJsxEvent = (event, element) => {\n const key = element?.getAttribute?.('data-o-jsx-' + event.type);\n if (!key) {\n return;\n }\n\n const handler = __olovaJsxHandlers.get(key);\n if (typeof handler === 'function') {\n handler(event);\n }\n };\n }\n const __olovaRegisterJsxEvent = (eventName, handler) => {\n if (typeof handler !== 'function') {\n return '';\n }\n\n const id = __olovaNextJsxEventId();\n __olovaJsxHandlers.set(id, handler);\n return ' data-o-jsx-' + eventName + '=\"' + id + '\" on' + eventName + '=\"window.__olovaDispatchJsxEvent(event, this)\"';\n };\n const __olovaToString = (value) =>\n Array.isArray(value)\n ? value.map(__olovaToString).join('')\n : value == null || value === false || value === true\n ? ''\n : String(value);\n const __olovaDangerouslySetHtml = (value) => ({ __dangerousHtml: true, value: __olovaToString(value) });\n const __olovaNormalizeClassValue = (value) => {\n if (value == null || value === false) {\n return '';\n }\n if (Array.isArray(value)) {\n return value.map(__olovaNormalizeClassValue).filter(Boolean).join(' ');\n }\n if (typeof value === 'object') {\n return Object.entries(value)\n .filter(([, enabled]) => !!enabled)\n .map(([key]) => key)\n .join(' ');\n }\n return String(value);\n };\n const __olovaEscape = (value) =>\n __olovaToString(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\\\"/g, '&quot;')\r\n .replace(/'/g, '&#39;');\r\n const __olovaSpreadAttrs = (input) => {\r\n if (input == null || input === false) {\r\n return '';\r\n }\r\n if (Array.isArray(input)) {\r\n return input.map(__olovaSpreadAttrs).join('');\r\n }\r\n if (typeof input !== 'object') {\r\n return '';\r\n }\r\n\r\n return Object.entries(input).reduce((acc, [key, value]) => {\n if (value == null || value === false) {\n return acc;\n }\n const attrKey = key === 'className' ? 'class' : key;\n const normalizedValue = attrKey === 'class'\n ? __olovaNormalizeClassValue(value)\n : value;\n if (attrKey === 'key') {\n return acc;\n }\n if (normalizedValue == null || normalizedValue === false || normalizedValue === '') {\n return acc;\n }\n if (normalizedValue === true) {\n return acc + ' ' + attrKey;\n }\n return acc + ' ' + attrKey + '=\"' + __olovaEscape(normalizedValue) + '\"';\n }, '');\n };\n const __olovaFor = (each, render) => {\n if (!Array.isArray(each) || typeof render !== 'function') {\n return '';\n }\n return each.map((item, index) => render(item, index));\n };\n const __olovaShow = (when, render, fallback = '') => {\n if (!when) {\n return fallback;\n }\n return typeof render === 'function' ? render(when) : render;\n };\n${indentBlock(scriptInfo.scriptBodyCode, 2)}\n\n return ${renderDescriptorLiteral(transformed, \" \")};\n${exportTail}\n${hmrCode}\n`;\n\n return { importsCode: scriptInfo.importsCode, code };\n}\n\r\nexport interface CompileOptions {\n filename?: string;\n dev?: boolean;\n exportName?: string;\n}\n\nfunction hashScopeSeed(input: string): string {\n let hash = 2166136261;\n for (let index = 0; index < input.length; index += 1) {\n hash ^= input.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n\n return Math.abs(hash >>> 0).toString(36);\n}\n\nfunction createScopeAttr(scopeId?: string): string | null {\n return scopeId ? `data-o-scope-${scopeId}` : null;\n}\n\nfunction scopeSelectorList(selectorList: string, scopeAttr: string): string {\n const applyScopeToSegment = (segment: string): string => {\n const trimmed = segment.trim();\n if (!trimmed) {\n return trimmed;\n }\n\n if (trimmed.includes(scopeAttr)) {\n return trimmed;\n }\n\n const globalPattern = /:global\\(([^()]+)\\)/g;\n const localCandidate = trimmed.replace(globalPattern, \"\").trim();\n const normalized = trimmed.replace(globalPattern, \"$1\");\n\n if (!localCandidate) {\n return normalized;\n }\n\n if (normalized === \":root\") {\n return `[${scopeAttr}]`;\n }\n\n const pseudoIndex = normalized.search(/(?<!:):(?!:)/);\n if (pseudoIndex === -1) {\n return `${normalized}[${scopeAttr}]`;\n }\n\n return `${normalized.slice(0, pseudoIndex)}[${scopeAttr}]${normalized.slice(pseudoIndex)}`;\n };\n\n return selectorList\n .split(\",\")\n .map((selector) => selector.trim())\n .filter(Boolean)\n .map((selector) => {\n if (selector.startsWith(\"@\") || selector.includes(scopeAttr)) {\n return selector;\n }\n\n return selector\n .split(/(\\s+|[>+~])/)\n .map((part) => {\n if (!part || /^(\\s+|[>+~])$/.test(part)) {\n return part;\n }\n\n return applyScopeToSegment(part);\n })\n .join(\"\");\n })\n .join(\", \");\n}\n\nfunction scopeCss(css: string, scopeAttr: string): string {\n let output = \"\";\n let index = 0;\n\n while (index < css.length) {\n const open = css.indexOf(\"{\", index);\n if (open < 0) {\n output += css.slice(index);\n break;\n }\n\n const selector = css.slice(index, open).trim();\n let depth = 1;\n let cursor = open + 1;\n while (cursor < css.length && depth > 0) {\n if (css[cursor] === \"{\") {\n depth += 1;\n } else if (css[cursor] === \"}\") {\n depth -= 1;\n }\n cursor += 1;\n }\n\n const body = css.slice(open + 1, cursor - 1);\n if (/^@(?:media|supports|container|layer)\\b/i.test(selector)) {\n output += `${selector} {${scopeCss(body, scopeAttr)}}`;\n } else if (/^@(?:keyframes|-webkit-keyframes)\\b/i.test(selector)) {\n output += `${selector} {${body}}`;\n } else {\n output += `${scopeSelectorList(selector, scopeAttr)} {${body}}`;\n }\n\n index = cursor;\n }\n\n return output;\n}\n\nfunction collectCss(blocks: StyleBlock[], scopeId?: string): string {\n const scopeAttr = createScopeAttr(scopeId);\n return blocks\n .map((block) => {\n const content = block.content.trim();\n if (!content) {\n return \"\";\n }\n\n if (!(\"global\" in block.attrs) && scopeAttr) {\n return scopeCss(content, scopeAttr);\n }\n\n return content;\n })\n .filter(Boolean)\n .join(\"\\n\\n\");\n}\n\nexport function compileOlovaScriptModule(\n source: string,\n options?: CompileOptions,\n): CompileResult {\n try {\n const scriptInfo = collectScriptInfo(source);\n return transpileTypeScript(\n [scriptInfo.importsCode, scriptInfo.scriptBodyCode].filter(Boolean).join(\"\\n\"),\n options?.filename ?? \"module.ts\",\n );\n } catch (error) {\n return normalizeCompileError(error, source, options?.filename ?? \"module.ts\");\n }\n}\n\nexport function compileOlova(source: string, options?: CompileOptions): CompileResult {\n try {\n const parsed = parseOlovaFile(source);\n\n // Allow .olova files to act as pure module barrels (imports/exports only).\n if (!parsed.template.trim() && isModuleOnlyScript(parsed.script)) {\n return {\n ...compileModuleScript(parsed.script, options?.filename ?? \"module.olova.ts\"),\n css: collectCss(parsed.styles),\n };\n }\n\n const scopeId = parsed.styles.some((style) => !(\"global\" in style.attrs))\n ? hashScopeSeed(`${options?.filename ?? \"component.olova\"}:${options?.exportName ?? \"default\"}`)\n : undefined;\n const compiled = buildComponentCode(parsed, {\n scopeId,\n hmrId: options?.filename ?? \"component.olova\",\n dev: options?.dev,\n });\n const runtimeImport = options?.dev\n ? `import { defineComponent as __defineComponent, replaceComponent as __replaceComponent } from 'olova/runtime';`\n : `import { defineComponent as __defineComponent } from 'olova/runtime';`;\n const result = transpileTypeScript(`\n${runtimeImport}\n${compiled.importsCode}\n${compiled.code}\n`, options?.filename ?? \"component.olova.ts\");\n return {\n ...result,\n css: collectCss(parsed.styles, scopeId),\n };\n } catch (error) {\n return normalizeCompileError(\n error,\n source,\n options?.filename ?? \"component.olova\",\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../compiler/parse.ts","../compiler/html-parser.ts","../compiler/dom-generator.ts","../compiler/compile.ts"],"names":["isWhitespace","findTagEnd","parseAttributes","tagEnd","tag","statement","childExpr","id"],"mappings":"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","file":"compiler.js","sourcesContent":["export type StyleBlock = {\n content: string;\n attrs: Record<string, string | true>;\n};\n\nexport type ParsedOlovaFile = {\n script: string;\n template: string;\n styles: StyleBlock[];\n};\n\ntype TagMatch = {\n fullStart: number;\n openEnd: number;\n closeStart: number;\n closeEnd: number;\n inner: string;\n attrs: Record<string, string | true>;\n};\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction skipQuoted(source: string, start: number, quote: string): number {\n let index = start + 1;\n while (index < source.length) {\n if (source[index] === \"\\\\\" && index + 1 < source.length) {\n index += 2;\n continue;\n }\n\n if (source[index] === quote) {\n return index + 1;\n }\n\n index += 1;\n }\n\n return source.length;\n}\n\nfunction findTagEnd(source: string, start: number): number {\n let index = start;\n while (index < source.length) {\n const char = source[index];\n if (char === '\"' || char === \"'\") {\n index = skipQuoted(source, index, char);\n continue;\n }\n\n if (char === \">\") {\n return index;\n }\n\n index += 1;\n }\n\n return -1;\n}\n\nfunction parseAttributes(source: string): Record<string, string | true> {\n const attrs: Record<string, string | true> = {};\n const attrRegex =\n /([:@A-Za-z_][-A-Za-z0-9_:.@]*)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s>]+)))?/g;\n\n let match: RegExpExecArray | null;\n while ((match = attrRegex.exec(source)) !== null) {\n const [, name, doubleQuoted, singleQuoted, bare] = match;\n const value = doubleQuoted ?? singleQuoted ?? bare ?? true;\n attrs[name] = value;\n }\n\n return attrs;\n}\n\nfunction readOpeningTag(\n source: string,\n start: number,\n): { tag: string; openEnd: number; attrs: Record<string, string | true> } | null {\n if (source[start] !== \"<\") {\n return null;\n }\n\n const tagEnd = findTagEnd(source, start + 1);\n if (tagEnd < 0) {\n return null;\n }\n\n const raw = source.slice(start + 1, tagEnd).trim();\n if (!raw || raw.startsWith(\"/\") || raw.startsWith(\"!\")) {\n return null;\n }\n\n let splitIndex = 0;\n while (splitIndex < raw.length && !isWhitespace(raw[splitIndex]) && raw[splitIndex] !== \"/\") {\n splitIndex += 1;\n }\n\n const tag = raw.slice(0, splitIndex);\n const attrsSource = raw.slice(splitIndex).replace(/\\/\\s*$/, \"\").trim();\n return {\n tag,\n openEnd: tagEnd + 1,\n attrs: parseAttributes(attrsSource),\n };\n}\n\nfunction findMatchingTag(\n source: string,\n start: number,\n tagName: string,\n): TagMatch | null {\n const opening = readOpeningTag(source, start);\n if (!opening || opening.tag.toLowerCase() !== tagName.toLowerCase()) {\n return null;\n }\n\n const selfClosing = /\\/\\s*>$/.test(source.slice(start, opening.openEnd));\n if (selfClosing) {\n return {\n fullStart: start,\n openEnd: opening.openEnd,\n closeStart: opening.openEnd,\n closeEnd: opening.openEnd,\n inner: \"\",\n attrs: opening.attrs,\n };\n }\n\n let depth = 1;\n let index = opening.openEnd;\n\n while (index < source.length) {\n const next = source.indexOf(\"<\", index);\n if (next < 0) {\n break;\n }\n\n if (source.startsWith(\"<!--\", next)) {\n const commentEnd = source.indexOf(\"-->\", next + 4);\n index = commentEnd >= 0 ? commentEnd + 3 : source.length;\n continue;\n }\n\n if (source[next + 1] === \"/\") {\n const closeEnd = findTagEnd(source, next + 2);\n if (closeEnd < 0) {\n break;\n }\n\n const closeTag = source.slice(next + 2, closeEnd).trim();\n if (closeTag.toLowerCase() === tagName.toLowerCase()) {\n depth -= 1;\n if (depth === 0) {\n return {\n fullStart: start,\n openEnd: opening.openEnd,\n closeStart: next,\n closeEnd: closeEnd + 1,\n inner: source.slice(opening.openEnd, next),\n attrs: opening.attrs,\n };\n }\n }\n\n index = closeEnd + 1;\n continue;\n }\n\n const nested = readOpeningTag(source, next);\n if (!nested) {\n index = next + 1;\n continue;\n }\n\n if (nested.tag.toLowerCase() === tagName.toLowerCase()) {\n const nestedSelfClosing = /\\/\\s*>$/.test(source.slice(next, nested.openEnd));\n if (!nestedSelfClosing) {\n depth += 1;\n }\n }\n\n index = nested.openEnd;\n }\n\n return null;\n}\n\nfunction collectTopLevelBlocks(source: string, tagName: string): TagMatch[] {\n const blocks: TagMatch[] = [];\n let index = 0;\n\n while (index < source.length) {\n const next = source.indexOf(`<${tagName}`, index);\n if (next < 0) {\n break;\n }\n\n const previous = next > 0 ? source[next - 1] : \"\";\n if (previous && /[A-Za-z0-9_:-]/.test(previous)) {\n index = next + tagName.length + 1;\n continue;\n }\n\n const block = findMatchingTag(source, next, tagName);\n if (!block) {\n index = next + tagName.length + 1;\n continue;\n }\n\n blocks.push(block);\n index = block.closeEnd;\n }\n\n return blocks;\n}\n\nfunction removeRanges(source: string, ranges: Array<{ start: number; end: number }>): string {\n if (ranges.length === 0) {\n return source.trim();\n }\n\n const ordered = [...ranges].sort((a, b) => a.start - b.start);\n let cursor = 0;\n let output = \"\";\n\n for (const range of ordered) {\n output += source.slice(cursor, range.start);\n cursor = range.end;\n }\n\n output += source.slice(cursor);\n return output.trim();\n}\n\nexport function parseOlovaFile(source: string): ParsedOlovaFile {\n const scriptBlock = collectTopLevelBlocks(source, \"script\")[0] ?? null;\n const styleBlocks = collectTopLevelBlocks(source, \"style\");\n\n const ranges = styleBlocks.map((block) => ({\n start: block.fullStart,\n end: block.closeEnd,\n }));\n\n if (scriptBlock) {\n ranges.push({ start: scriptBlock.fullStart, end: scriptBlock.closeEnd });\n }\n\n return {\n script: scriptBlock?.inner.trim() ?? \"\",\n template: removeRanges(source, ranges),\n styles: styleBlocks.map((block) => ({\n content: block.inner.trim(),\n attrs: block.attrs,\n })),\n };\n}\n","export type ASTNode = ASTElement | ASTText | ASTComment;\r\n\r\nexport interface ASTElement {\r\n type: \"element\";\r\n tag: string;\r\n attrs: Record<string, string | true>;\r\n children: ASTNode[];\r\n isSelfClosing: boolean;\r\n}\r\n\r\nexport interface ASTText {\r\n type: \"text\";\r\n content: string;\r\n}\r\n\r\nexport interface ASTComment {\n type: \"comment\";\n content: string;\n}\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction findTagEnd(source: string, start: number): number {\n let index = start;\n while (index < source.length) {\n const char = source[index];\n if (char === '\"' || char === \"'\") {\n const quoted = readQuotedValue(source, index, char);\n index = quoted.end;\n continue;\n }\n\n if (char === \"{\") {\n const braced = readBraceValue(source, index);\n index = braced.end;\n continue;\n }\n\n if (char === \">\") {\n return index;\n }\n\n index += 1;\n }\n\n return -1;\n}\n\nfunction readQuotedValue(\n source: string,\n start: number,\n quote: string,\n): { value: string; end: number } {\n let index = start + 1;\n let value = \"\";\n\n while (index < source.length) {\n const char = source[index];\n if (char === \"\\\\\" && index + 1 < source.length) {\n value += source.slice(index, index + 2);\n index += 2;\n continue;\n }\n\n if (char === quote) {\n return { value, end: index + 1 };\n }\n\n value += char;\n index += 1;\n }\n\n return { value, end: source.length };\n}\n\nfunction readBraceValue(\n source: string,\n start: number,\n): { value: string; end: number } {\n let index = start + 1;\n let depth = 1;\n let value = \"{\";\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n while (index < source.length && depth > 0) {\n const char = source[index];\n const prev = source[index - 1];\n value += char;\n\n if (quote) {\n if (char === quote && prev !== \"\\\\\") {\n quote = null;\n }\n index += 1;\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n index += 1;\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n } else if (char === \"}\") {\n depth -= 1;\n }\n\n index += 1;\n }\n\n return { value, end: index };\n}\n\nfunction parseAttributes(source: string): Record<string, string | true> {\n const attrs: Record<string, string | true> = {};\n let index = 0;\n\n while (index < source.length) {\n while (index < source.length && isWhitespace(source[index])) {\n index += 1;\n }\n\n if (index >= source.length) {\n break;\n }\n\n let nameEnd = index;\n while (\n nameEnd < source.length &&\n !isWhitespace(source[nameEnd]) &&\n source[nameEnd] !== \"=\"\n ) {\n nameEnd += 1;\n }\n\n const name = source.slice(index, nameEnd).trim();\n index = nameEnd;\n\n if (!name) {\n index += 1;\n continue;\n }\n\n while (index < source.length && isWhitespace(source[index])) {\n index += 1;\n }\n\n if (source[index] !== \"=\") {\n attrs[name] = true;\n continue;\n }\n\n index += 1;\n while (index < source.length && isWhitespace(source[index])) {\n index += 1;\n }\n\n if (index >= source.length) {\n attrs[name] = true;\n break;\n }\n\n const start = index;\n const char = source[index];\n\n if (char === '\"' || char === \"'\") {\n const quoted = readQuotedValue(source, index, char);\n attrs[name] = quoted.value;\n index = quoted.end;\n continue;\n }\n\n if (char === \"{\") {\n const braced = readBraceValue(source, index);\n attrs[name] = braced.value;\n index = braced.end;\n continue;\n }\n\n while (index < source.length && !isWhitespace(source[index])) {\n index += 1;\n }\n attrs[name] = source.slice(start, index);\n }\n\n return attrs;\n}\n\nexport function parseHTML(html: string): ASTNode[] {\n const root: ASTNode[] = [];\r\n const stack: { node: ASTElement | null; children: ASTNode[] }[] = [\r\n { node: null, children: root },\r\n ];\r\n\r\n let i = 0;\r\n\r\n while (i < html.length) {\r\n const textStart = i;\r\n const tagStart = html.indexOf(\"<\", i);\r\n\r\n if (tagStart === -1) {\r\n if (textStart < html.length) {\r\n stack[stack.length - 1].children.push({\r\n type: \"text\",\r\n content: html.slice(textStart),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n if (tagStart > textStart) {\r\n stack[stack.length - 1].children.push({\r\n type: \"text\",\r\n content: html.slice(textStart, tagStart),\r\n });\r\n }\r\n\r\n i = tagStart;\r\n\r\n if (html.startsWith(\"<!--\", i)) {\r\n const commentEnd = html.indexOf(\"-->\", i + 4);\r\n if (commentEnd === -1) {\r\n stack[stack.length - 1].children.push({\r\n type: \"comment\",\r\n content: html.slice(i + 4),\r\n });\r\n break;\r\n }\r\n stack[stack.length - 1].children.push({\r\n type: \"comment\",\r\n content: html.slice(i + 4, commentEnd),\r\n });\r\n i = commentEnd + 3;\r\n continue;\r\n }\r\n\r\n if (html.startsWith(\"</\", i)) {\r\n const tagEnd = html.indexOf(\">\", i + 2);\r\n if (tagEnd === -1) {\r\n i += 2;\r\n continue;\r\n }\r\n const tag = html\r\n .slice(i + 2, tagEnd)\r\n .trim()\r\n .toLowerCase();\r\n\r\n let closeIdx = stack.length - 1;\r\n while (closeIdx > 0 && stack[closeIdx].node?.tag.toLowerCase() !== tag) {\r\n closeIdx--;\r\n }\r\n if (closeIdx > 0) {\r\n stack.length = closeIdx;\r\n }\r\n i = tagEnd + 1;\r\n continue;\r\n }\r\n\r\n const tagEnd = findTagEnd(html, i + 1);\n if (tagEnd === -1) {\n stack[stack.length - 1].children.push({ type: \"text\", content: \"<\" });\n i++;\n continue;\n }\n\n const rawTag = html.slice(i + 1, tagEnd).trim();\n let tagNameEnd = 0;\n while (\n tagNameEnd < rawTag.length &&\n !isWhitespace(rawTag[tagNameEnd]) &&\n rawTag[tagNameEnd] !== \"/\"\n ) {\n tagNameEnd += 1;\n }\n\n const tag = rawTag.slice(0, tagNameEnd);\n if (!tag) {\n stack[stack.length - 1].children.push({ type: \"text\", content: \"<\" });\n i++;\n continue;\n }\n\n const attrsStr = rawTag.slice(tagNameEnd).replace(/\\/\\s*$/, \"\").trim();\n const selfClose = /\\/\\s*$/.test(rawTag);\n\n const attrs = parseAttributes(attrsStr);\n\r\n const isNativeVoidTag =\n tag === tag.toLowerCase() &&\n /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/.test(\n tag,\n );\n\n const isSelfClosing = !!selfClose || isNativeVoidTag;\n\r\n const element: ASTElement = {\r\n type: \"element\",\n tag,\n attrs,\n children: [],\n isSelfClosing,\n };\r\n\r\n stack[stack.length - 1].children.push(element);\r\n\r\n if (!isSelfClosing) {\r\n stack.push({ node: element, children: element.children });\r\n }\r\n\r\n i = tagEnd + 1;\n }\n\r\n return root;\r\n}\r\n","import { ASTNode, parseHTML } from \"./html-parser\";\n\nexport type TransformContext = {\n text: number;\n attr: number;\n event: number;\n comp: number;\n slot: number;\n};\n\ntype BuildContext = {\n statements: string[];\n nodes: string[];\n localCount: number;\n};\n\ntype TextFragment =\n | { type: \"static\"; value: string }\n | { type: \"dynamic\"; tokenType: string; id: string };\n\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n\nfunction splitTextFragments(text: string): TextFragment[] {\n const parts: TextFragment[] = [];\n const tokenRe = /__O_(TEXT|HTML|SLOT|COMP|IF)_([a-zA-Z0-9_]+)__/g;\n\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = tokenRe.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push({ type: \"static\", value: text.slice(lastIndex, match.index) });\n }\n parts.push({ type: \"dynamic\", tokenType: match[1], id: match[2] });\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < text.length) {\n parts.push({ type: \"static\", value: text.slice(lastIndex) });\n }\n\n return parts;\n}\n\nfunction isSvgContext(tag: string, inSvg: boolean): boolean {\n if (tag === \"foreignObject\") {\n return false;\n }\n\n return inSvg || tag === \"svg\";\n}\n\nfunction processNode(\n node: ASTNode,\n parentVar: string,\n stateNames: Set<string>,\n transformExpr: (\n expr: string,\n stateNames: Set<string>,\n ) => { code: string; containsJsx: boolean },\n counters: TransformContext,\n buildCtx: BuildContext,\n componentNames: Set<string>,\n inSvg = false,\n) {\n if (node.type === \"comment\") {\n return;\n }\n\n if (node.type === \"text\") {\n const parts = splitTextFragments(node.content);\n for (const part of parts) {\n if (part.type === \"static\") {\n if (!part.value) continue;\n const varName = `_t${buildCtx.localCount++}`;\n buildCtx.statements.push(\n `const ${varName} = document.createTextNode(${JSON.stringify(part.value)});`,\n );\n buildCtx.statements.push(`${parentVar}.appendChild(${varName});`);\n } else {\n const varName = `_d${buildCtx.localCount++}`;\n buildCtx.statements.push(\n `const ${varName} = document.createTextNode('');`,\n );\n buildCtx.nodes.push(`'${part.id}': ${varName}`);\n buildCtx.statements.push(`${parentVar}.appendChild(${varName});`);\n }\n }\n return;\n }\n\n if (node.type === \"element\") {\n const tag = node.tag;\n const varName = `_el${buildCtx.localCount++}`;\n const useSvgNamespace = isSvgContext(tag, inSvg);\n buildCtx.statements.push(\n useSvgNamespace\n ? `const ${varName} = document.createElementNS(${JSON.stringify(SVG_NAMESPACE)}, \"${tag}\");`\n : `const ${varName} = document.createElement(\"${tag}\");`,\n );\n\n for (const [attr, val] of Object.entries(node.attrs)) {\n if (attr.startsWith(\"data-o-on-\")) {\n if (typeof val === \"string\") {\n buildCtx.nodes.push(`'${val}': ${varName}`);\n }\n } else if (typeof val === \"string\" && val.includes(\"__O_ATTR_\")) {\n const match = val.match(/__O_ATTR_([a-zA-Z0-9_]+)__/);\n if (match) {\n buildCtx.nodes.push(`'${match[1]}': ${varName}`);\n }\n } else {\n if (val === true) {\n buildCtx.statements.push(`${varName}.setAttribute(\"${attr}\", \"\");`);\n } else {\n buildCtx.statements.push(\n `${varName}.setAttribute(\"${attr}\", ${JSON.stringify(val)});`,\n );\n }\n }\n }\n\n for (const child of node.children) {\n processNode(\n child,\n varName,\n stateNames,\n transformExpr,\n counters,\n buildCtx,\n componentNames,\n useSvgNamespace,\n );\n }\n\n buildCtx.statements.push(`${parentVar}.appendChild(${varName});`);\n }\n}\n\nexport function generateBuildFunction(\n html: string,\n stateNames: Set<string>,\n transformExpr: (\n expr: string,\n stateNames: Set<string>,\n ) => { code: string; containsJsx: boolean },\n counters: TransformContext,\n componentNames: Set<string>,\n): string {\n const ast = parseHTML(html);\n\n const buildCtx: BuildContext = {\n statements: [],\n nodes: [],\n localCount: 0,\n };\n\n buildCtx.statements.push(\"const _f = document.createDocumentFragment();\");\n\n for (const child of ast) {\n processNode(\n child,\n \"_f\",\n stateNames,\n transformExpr,\n counters,\n buildCtx,\n componentNames,\n );\n }\n\n return `function() {\n ${buildCtx.statements.join(\"\\n \")}\n return { fragment: _f, nodes: { ${buildCtx.nodes.join(\", \")} } };\n }`;\n}\r\n","import { parse } from \"@babel/parser\";\r\nimport generatorModule from \"@babel/generator\";\r\nimport traverseModule from \"@babel/traverse\";\nimport type { NodePath } from \"@babel/traverse\";\nimport * as t from \"@babel/types\";\nimport ts from \"typescript\";\nimport {\n parseOlovaFile,\n type ParsedOlovaFile,\n type StyleBlock,\n} from \"./parse\";\nimport { parseHTML, type ASTElement, type ASTNode } from \"./html-parser\";\nimport { generateBuildFunction } from \"./dom-generator\";\r\n\r\nconst generate =\r\n (generatorModule as unknown as { default?: typeof generatorModule })\r\n .default ?? generatorModule;\r\nconst traverse =\n (traverseModule as unknown as { default?: typeof traverseModule }).default ??\n traverseModule;\n\nconst CORE_KNOWN_IMPORTS = new Set([\n \"Signal\",\n \"computed\",\n \"createApp\",\n \"defineComponent\",\n \"derived\",\n \"effect\",\n \"getContext\",\n \"global\",\n \"hasContext\",\n \"mount\",\n \"setContext\",\n \"state\",\n]);\n\r\ntype CompileResult = {\n code: string;\n css?: string;\n map?: unknown;\n};\n\ntype CompileErrorLike = Error & {\n loc?: {\n line?: number;\n column?: number;\n index?: number;\n start?: {\n line: number;\n column: number;\n index?: number;\n };\n };\n frame?: string;\n};\n\r\ntype TextBinding = { id: string; expr: string };\r\ntype HtmlBinding = { id: string; expr: string };\r\ntype AttrBinding = { id: string; attr: string; expr: string };\r\ntype EventBinding = { id: string; event: string; expr: string };\r\ntype SlotBinding = { id: string; name: string };\r\ntype SlotFactoryDef = {\r\n varName: string;\r\n name: string;\r\n descriptor: TemplateTransformResult;\r\n};\r\ntype ComponentBinding = {\r\n id: string;\r\n component: string;\r\n propsExpr: string;\r\n slotFactories: SlotFactoryDef[];\r\n};\r\ntype IfBinding = {\r\n id: string;\r\n expr: string;\r\n trueBranch: TemplateTransformResult;\r\n falseBranch?: TemplateTransformResult;\r\n};\r\n\r\ntype TemplateTransformResult = {\r\n html: string;\r\n textBindings: TextBinding[];\r\n htmlBindings: HtmlBinding[];\r\n attrBindings: AttrBinding[];\r\n eventBindings: EventBinding[];\r\n slotBindings: SlotBinding[];\r\n componentBindings: ComponentBinding[];\r\n ifBindings: IfBinding[];\r\n buildFnStr?: string;\r\n};\r\n\r\ntype TransformContext = {\r\n text: number;\r\n attr: number;\r\n event: number;\r\n comp: number;\r\n slot: number;\r\n if: number;\r\n};\r\n\r\nfunction escapeTemplate(source: string): string {\n return source.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\");\n}\n\nfunction indexToLocation(source: string, index: number): {\n line: number;\n column: number;\n index: number;\n} {\n const safeIndex = Math.max(0, Math.min(index, source.length));\n const lines = source.slice(0, safeIndex).split(\"\\n\");\n return {\n line: lines.length,\n column: lines[lines.length - 1]?.length ?? 0,\n index: safeIndex,\n };\n}\n\nfunction createCodeFrame(\n source: string,\n line: number,\n column: number,\n contextLines = 2,\n): string {\n const lines = source.split(\"\\n\");\n const start = Math.max(0, line - 1 - contextLines);\n const end = Math.min(lines.length, line + contextLines);\n return lines\n .slice(start, end)\n .map((content, offset) => {\n const lineNumber = start + offset + 1;\n const prefix = `${String(lineNumber).padStart(4, \" \")} | `;\n if (lineNumber !== line) {\n return `${prefix}${content}`;\n }\n return `${prefix}${content}\\n | ${\" \".repeat(Math.max(column, 0))}^`;\n })\n .join(\"\\n\");\n}\n\nfunction createCompileError(\n message: string,\n source: string,\n index: number,\n): CompileErrorLike {\n const loc = indexToLocation(source, index);\n const error = new Error(message) as CompileErrorLike;\n error.loc = { start: loc };\n error.frame = createCodeFrame(source, loc.line, loc.column);\n return error;\n}\n\nfunction normalizeCompileError(\n error: unknown,\n source: string,\n filename = \"component.olova\",\n): never {\n const compileError =\n (error instanceof Error ? error : new Error(String(error))) as CompileErrorLike;\n const start = compileError.loc?.start ?? compileError.loc;\n const line = start?.line;\n const column = start?.column;\n const locationSuffix =\n line === undefined || column === undefined\n ? \"\"\n : ` (${filename}:${line}:${column + 1})`;\n compileError.message = `[olova] ${compileError.message.replace(/^\\[olova\\]\\s*/, \"\")}${locationSuffix}`;\n if (line !== undefined && column !== undefined && !compileError.frame) {\n compileError.frame = createCodeFrame(source, line, column);\n }\n throw compileError;\n}\n\r\nfunction parseModule(code: string): t.File {\n return parse(code, {\n sourceType: \"module\",\n plugins: [\"typescript\", \"jsx\"],\n });\n}\n\nfunction transpileTypeScript(code: string, filename = \"component.ts\"): CompileResult {\n const result = ts.transpileModule(code, {\n fileName: filename,\n compilerOptions: {\n target: ts.ScriptTarget.ES2022,\n module: ts.ModuleKind.ESNext,\n jsx: ts.JsxEmit.Preserve,\n importsNotUsedAsValues: ts.ImportsNotUsedAsValues.Remove,\n verbatimModuleSyntax: false,\n sourceMap: true,\n inlineSources: true,\n },\n });\n\n return {\n code: result.outputText.trim(),\n map: result.sourceMapText ? JSON.parse(result.sourceMapText) : null,\n };\n}\n\nfunction compileModuleScript(script: string, filename = \"module.olova.ts\"): CompileResult {\n const ast = parseModule(script || \"\");\n return transpileTypeScript(\n ast.program.body.map((node) => generate(node).code).join(\"\\n\"),\n filename,\n );\n}\n\r\nfunction isModuleOnlyScript(script: string): boolean {\r\n if (!script.trim()) {\r\n return false;\r\n }\r\n\r\n const ast = parseModule(script);\r\n return ast.program.body.every(\r\n (node) =>\r\n t.isImportDeclaration(node) ||\r\n t.isExportNamedDeclaration(node) ||\r\n t.isExportAllDeclaration(node) ||\r\n t.isExportDefaultDeclaration(node),\r\n );\r\n}\r\n\r\nfunction isStateInit(node: t.Node | null | undefined): boolean {\n return !!(\r\n node &&\r\n t.isCallExpression(node) &&\r\n ((t.isIdentifier(node.callee) && node.callee.name === \"state\") ||\r\n (t.isMemberExpression(node.callee) &&\r\n t.isIdentifier(node.callee.object) &&\r\n node.callee.object.name === \"__olovaGlobal\" &&\r\n t.isIdentifier(node.callee.property) &&\r\n (node.callee.property.name === \"state\" ||\r\n node.callee.property.name === \"get\")))\r\n );\r\n}\r\n\r\nfunction isComputedInit(node: t.Node | null | undefined): boolean {\n return !!(\n node &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee) &&\n (node.callee.name === \"computed\" || node.callee.name === \"derived\")\n );\n}\n\nfunction appendHmrStateKey(\n node: t.Node | null | undefined,\n key: string,\n): void {\n if (!node) {\n return;\n }\n\n if (t.isCallExpression(node) && t.isIdentifier(node.callee) && node.callee.name === \"state\") {\n const existingKey = node.arguments[1];\n if (!existingKey || !t.isStringLiteral(existingKey)) {\n node.arguments = [node.arguments[0] ?? t.identifier(\"undefined\"), t.stringLiteral(key)];\n }\n return;\n }\n\n if (t.isConditionalExpression(node)) {\n appendHmrStateKey(node.consequent, `${key}:then`);\n appendHmrStateKey(node.alternate, `${key}:else`);\n return;\n }\n\n if (t.isLogicalExpression(node)) {\n appendHmrStateKey(node.left, `${key}:left`);\n appendHmrStateKey(node.right, `${key}:right`);\n }\n}\n\r\nfunction containsStateInit(node: t.Node | null | undefined): boolean {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n if (isStateInit(node)) {\r\n return true;\r\n }\r\n\r\n if (t.isConditionalExpression(node)) {\r\n return (\r\n containsStateInit(node.consequent) || containsStateInit(node.alternate)\r\n );\r\n }\r\n\r\n if (t.isLogicalExpression(node)) {\r\n return containsStateInit(node.left) || containsStateInit(node.right);\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction containsSignalInit(node: t.Node | null | undefined): boolean {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n if (isStateInit(node) || isComputedInit(node)) {\r\n return true;\r\n }\r\n\r\n if (t.isConditionalExpression(node)) {\r\n return (\r\n containsSignalInit(node.consequent) || containsSignalInit(node.alternate)\r\n );\r\n }\r\n\r\n if (t.isLogicalExpression(node)) {\r\n return containsSignalInit(node.left) || containsSignalInit(node.right);\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isGlobalStateCall(node: t.CallExpression): boolean {\r\n return (\r\n t.isMemberExpression(node.callee) &&\r\n t.isIdentifier(node.callee.object) &&\r\n (node.callee.object.name === \"global\" ||\r\n node.callee.object.name === \"__olovaGlobal\") &&\r\n t.isIdentifier(node.callee.property) &&\r\n node.callee.property.name === \"state\"\r\n );\r\n}\r\n\r\nfunction shouldSkipIdentifierTransform(path: NodePath<t.Identifier>): boolean {\r\n if (\r\n path.parentPath?.isVariableDeclarator() &&\r\n path.parentPath.node.id === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isAssignmentExpression() &&\r\n path.parentPath.node.left === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n if (path.parentPath?.isUpdateExpression()) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isCallExpression() &&\r\n t.isIdentifier(path.parentPath.node.callee) &&\r\n path.parentPath.node.callee.name === \"setContext\" &&\r\n path.parentPath.node.arguments.includes(path.node as t.Expression)\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isMemberExpression() &&\r\n path.parentPath.node.property === path.node &&\r\n !path.parentPath.node.computed\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isMemberExpression() &&\r\n path.parentPath.node.object === path.node &&\r\n t.isIdentifier(path.parentPath.node.property) &&\r\n (path.parentPath.node.property.name === \"value\" ||\r\n path.parentPath.node.property.name === \"notify\")\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isImportSpecifier() ||\r\n path.parentPath?.isExportSpecifier()\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isObjectProperty() &&\r\n path.parentPath.node.key === path.node &&\r\n !path.parentPath.node.computed &&\r\n !(path.parentPath.node as t.ObjectProperty).shorthand\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isFunctionDeclaration() &&\r\n path.parentPath.node.id === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n path.parentPath?.isClassDeclaration() &&\r\n path.parentPath.node.id === path.node\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction addNestedMutationNotify(ast: t.File, stateNames: Set<string>): void {\r\n traverse(ast, {\r\n AssignmentExpression(path: NodePath<t.AssignmentExpression>) {\r\n const left = path.node.left;\r\n if (!t.isMemberExpression(left)) {\r\n return;\r\n }\r\n\r\n let root: t.MemberExpression = left;\r\n while (t.isMemberExpression(root.object)) {\r\n root = root.object as t.MemberExpression;\r\n }\r\n\r\n if (!t.isIdentifier(root.object)) {\r\n return;\r\n }\r\n\r\n if (!t.isIdentifier(root.property) || root.property.name !== \"value\") {\r\n return;\r\n }\r\n\r\n const stateName = root.object.name;\r\n if (!stateNames.has(stateName)) {\r\n return;\r\n }\r\n\r\n if (left === root) {\r\n return;\r\n }\r\n\r\n if (path.parentPath?.isSequenceExpression()) {\r\n return;\r\n }\r\n\r\n path.replaceWith(\r\n t.sequenceExpression([\r\n path.node,\r\n t.callExpression(\r\n t.memberExpression(t.identifier(stateName), t.identifier(\"notify\")),\r\n [],\r\n ),\r\n ]),\r\n );\r\n path.skip();\r\n },\r\n });\r\n}\r\n\r\nfunction collectScriptInfo(script: string): {\n importsCode: string;\n scriptBodyCode: string;\n stateNames: Set<string>;\n allSignalNames: Set<string>;\n componentNames: Set<string>;\n jsxFunctionNames: Set<string>;\n} {\n const ast = parseModule(script || \"\");\n const stateNames = new Set<string>();\n const allSignalNames = new Set<string>();\n const componentNames = new Set<string>();\n const jsxFunctionNames = new Set<string>();\n let needsGlobalRuntime = false;\n\r\n for (const node of ast.program.body) {\r\n if (!t.isImportDeclaration(node)) {\r\n continue;\r\n }\r\n\r\n for (const specifier of node.specifiers) {\r\n componentNames.add(specifier.local.name);\r\n }\r\n }\r\n\r\n const rewrittenBody: t.Statement[] = [];\n for (const node of ast.program.body) {\n if (\n t.isImportDeclaration(node) &&\n t.isStringLiteral(node.source) &&\n (node.source.value === \"olova/global\" || node.source.value === \"olova/core\")\n ) {\n if (node.source.value === \"olova/global\") {\n needsGlobalRuntime = true;\n const declarators: t.VariableDeclarator[] = [];\n\n for (const specifier of node.specifiers) {\n if (!t.isImportSpecifier(specifier)) {\n throw new Error(\n \"[olova] Use named imports with 'olova/global' (e.g. import { user } from 'olova/global').\",\n );\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n\n declarators.push(\n t.variableDeclarator(\n t.identifier(specifier.local.name),\n t.callExpression(\n t.memberExpression(\n t.identifier(\"__olovaGlobal\"),\n t.identifier(\"get\"),\n ),\n [t.stringLiteral(imported)],\n ),\n ),\n );\n }\n\n if (declarators.length > 0) {\n rewrittenBody.push(t.variableDeclaration(\"const\", declarators));\n }\n continue;\n }\n\n const keptSpecifiers: t.ImportDeclaration[\"specifiers\"] = [];\n const globalDeclarators: t.VariableDeclarator[] = [];\n\n for (const specifier of node.specifiers) {\n if (!t.isImportSpecifier(specifier)) {\n keptSpecifiers.push(specifier);\n continue;\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n\n if (CORE_KNOWN_IMPORTS.has(imported)) {\n keptSpecifiers.push(specifier);\n continue;\n }\n\n needsGlobalRuntime = true;\n globalDeclarators.push(\n t.variableDeclarator(\n t.identifier(specifier.local.name),\n t.callExpression(\n t.memberExpression(\n t.identifier(\"__olovaGlobal\"),\n t.identifier(\"get\"),\n ),\n [t.stringLiteral(imported)],\n ),\n ),\n );\n }\n\n if (keptSpecifiers.length > 0) {\n rewrittenBody.push(\n t.importDeclaration(keptSpecifiers, t.stringLiteral(\"olova/core\")),\n );\n }\n\n if (globalDeclarators.length > 0) {\n rewrittenBody.push(t.variableDeclaration(\"const\", globalDeclarators));\n }\n\n continue;\n }\n\n rewrittenBody.push(node);\n }\r\n ast.program.body = rewrittenBody;\r\n\r\n traverse(ast, {\r\n CallExpression(path: NodePath<t.CallExpression>) {\r\n if (!isGlobalStateCall(path.node)) {\r\n return;\r\n }\r\n\r\n needsGlobalRuntime = true;\r\n path.node.callee = t.memberExpression(\r\n t.identifier(\"__olovaGlobal\"),\r\n t.identifier(\"state\"),\r\n );\r\n\r\n if (\r\n path.parentPath &&\r\n path.parentPath.isVariableDeclarator() &&\r\n t.isIdentifier(path.parentPath.node.id)\r\n ) {\r\n const firstArg = path.node.arguments[0];\r\n const alreadyNamed =\r\n !!firstArg &&\r\n t.isStringLiteral(firstArg as t.Expression) &&\r\n (firstArg as t.StringLiteral).value.length > 0;\r\n\r\n if (!alreadyNamed) {\r\n path.node.arguments = [\r\n t.stringLiteral(path.parentPath.node.id.name),\r\n ...path.node.arguments,\r\n ];\r\n }\r\n }\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n VariableDeclarator(path: NodePath<t.VariableDeclarator>) {\r\n if (!t.isIdentifier(path.node.id)) {\r\n return;\r\n }\r\n\r\n if (containsStateInit(path.node.init)) {\n stateNames.add(path.node.id.name);\n appendHmrStateKey(path.node.init, path.node.id.name);\n }\n\r\n if (containsSignalInit(path.node.init)) {\r\n allSignalNames.add(path.node.id.name);\r\n }\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n AssignmentExpression(path: NodePath<t.AssignmentExpression>) {\r\n if (!t.isIdentifier(path.node.left)) {\r\n return;\r\n }\r\n\r\n const name = path.node.left.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (!binding || !t.isVariableDeclarator(binding.path.node)) {\r\n return;\r\n }\r\n\r\n if (\r\n !t.isIdentifier(binding.path.node.id) ||\r\n !containsStateInit(binding.path.node.init)\r\n ) {\r\n return;\r\n }\r\n\r\n path.node.left = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n UpdateExpression(path: NodePath<t.UpdateExpression>) {\r\n if (!t.isIdentifier(path.node.argument)) {\r\n return;\r\n }\r\n\r\n const name = path.node.argument.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (!binding || !t.isVariableDeclarator(binding.path.node)) {\r\n return;\r\n }\r\n\r\n if (\r\n !t.isIdentifier(binding.path.node.id) ||\r\n !containsStateInit(binding.path.node.init)\r\n ) {\r\n return;\r\n }\r\n\r\n path.node.argument = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n Identifier(path: NodePath<t.Identifier>) {\r\n const name = path.node.name;\r\n if (!allSignalNames.has(name)) {\r\n return;\r\n }\r\n\r\n if (shouldSkipIdentifierTransform(path)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (!binding || !t.isVariableDeclarator(binding.path.node)) {\r\n return;\r\n }\r\n\r\n if (\r\n !t.isIdentifier(binding.path.node.id) ||\r\n !containsSignalInit(binding.path.node.init)\r\n ) {\r\n return;\r\n }\r\n\r\n path.replaceWith(\r\n t.memberExpression(t.identifier(name), t.identifier(\"value\")),\r\n );\r\n path.skip();\r\n },\r\n });\r\n\r\n addNestedMutationNotify(ast, stateNames);\n\n const nodeContainsJsx = (node: t.Node | null | undefined): boolean => {\n if (!node) {\n return false;\n }\n\n let found = false;\n traverse(parseModule(`(${generate(node).code})`), {\n JSXElement() {\n found = true;\n },\n JSXFragment() {\n found = true;\n },\n });\n return found;\n };\n\n traverse(ast, {\n FunctionDeclaration(path: NodePath<t.FunctionDeclaration>) {\n if (path.node.id && nodeContainsJsx(path.node.body)) {\n jsxFunctionNames.add(path.node.id.name);\n }\n },\n VariableDeclarator(path: NodePath<t.VariableDeclarator>) {\n if (\n t.isIdentifier(path.node.id) &&\n nodeContainsJsx(path.node.init)\n ) {\n jsxFunctionNames.add(path.node.id.name);\n }\n },\n });\n\n traverse(ast, {\n JSXElement(path: NodePath<t.JSXElement>) {\n const transformed = transformExpression(\n generate(path.node).code,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n );\n const parsed = parseModule(`(${transformed.code})`);\n const statement = parsed.program.body[0];\n if (statement && t.isExpressionStatement(statement)) {\n path.replaceWith(statement.expression);\n path.skip();\n }\n },\n JSXFragment(path: NodePath<t.JSXFragment>) {\n const transformed = transformExpression(\n generate(path.node).code,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n );\n const parsed = parseModule(`(${transformed.code})`);\n const statement = parsed.program.body[0];\n if (statement && t.isExpressionStatement(statement)) {\n path.replaceWith(statement.expression);\n path.skip();\n }\n },\n });\n\n if (needsGlobalRuntime) {\n ast.program.body.unshift(\r\n t.importDeclaration(\r\n [\r\n t.importSpecifier(\r\n t.identifier(\"__olovaGlobal\"),\r\n t.identifier(\"global\"),\r\n ),\r\n ],\r\n t.stringLiteral(\"olova/global\"),\r\n ),\r\n );\r\n }\r\n\r\n const importNodes = ast.program.body.filter(\r\n (node): node is t.ImportDeclaration => t.isImportDeclaration(node),\r\n );\r\n const bodyNodes = ast.program.body.filter(\r\n (node) => !t.isImportDeclaration(node),\r\n );\r\n\r\n const importsCode = importNodes.map((node) => generate(node).code).join(\"\\n\");\r\n const scriptBodyCode = bodyNodes\r\n .map((node) => generate(node).code)\r\n .join(\"\\n\");\r\n\r\n return {\r\n importsCode,\r\n scriptBodyCode,\r\n stateNames,\n allSignalNames,\n componentNames,\n jsxFunctionNames,\n };\n}\n\r\ntype TransformedExpression = {\r\n code: string;\r\n containsJsx: boolean;\r\n};\r\n\r\nfunction transformExpression(\n expr: string,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n jsxFunctionNames: Set<string> = new Set<string>(),\n scopeId?: string,\n): TransformedExpression {\n const ast = parseModule(`(${expr})`);\n let containsJsx = false;\n const jsxScopeAttr = createScopeAttr(scopeId);\n\r\n traverse(ast, {\r\n AssignmentExpression(path: NodePath<t.AssignmentExpression>) {\r\n if (!t.isIdentifier(path.node.left)) {\r\n return;\r\n }\r\n\r\n const name = path.node.left.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (binding) {\r\n return;\r\n }\r\n\r\n path.node.left = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n UpdateExpression(path: NodePath<t.UpdateExpression>) {\r\n if (!t.isIdentifier(path.node.argument)) {\r\n return;\r\n }\r\n\r\n const name = path.node.argument.name;\r\n if (!stateNames.has(name)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (binding) {\r\n return;\r\n }\r\n\r\n path.node.argument = t.memberExpression(\r\n t.identifier(name),\r\n t.identifier(\"value\"),\r\n );\r\n },\r\n });\r\n\r\n traverse(ast, {\r\n Identifier(path: NodePath<t.Identifier>) {\r\n const name = path.node.name;\r\n if (!allSignalNames.has(name)) {\r\n return;\r\n }\r\n\r\n if (shouldSkipIdentifierTransform(path)) {\r\n return;\r\n }\r\n\r\n const binding = path.scope.getBinding(name);\r\n if (binding) {\r\n return;\r\n }\r\n\r\n path.replaceWith(\r\n t.memberExpression(t.identifier(name), t.identifier(\"value\")),\r\n );\r\n path.skip();\r\n },\r\n });\r\n\r\n addNestedMutationNotify(ast, stateNames);\r\n\r\n const toStringCall = (input: t.Expression): t.CallExpression =>\n t.callExpression(t.identifier(\"__olovaToString\"), [input]);\n const escapeCall = (input: t.Expression): t.CallExpression =>\n t.callExpression(t.identifier(\"__olovaEscape\"), [input]);\n\n const expressionContainsJsx = (input: t.Node): boolean => {\n let found = false;\n traverse(parseModule(`(${generate(input).code})`), {\n JSXElement() {\n found = true;\n },\n JSXFragment() {\n found = true;\n },\n });\n return found;\n };\n\n const expressionProducesHtml = (input: t.Node | null | undefined): boolean => {\n if (!input) {\n return false;\n }\n\n if (expressionContainsJsx(input)) {\n return true;\n }\n\n let found = false;\n traverse(parseModule(`(${generate(input).code})`), {\n CallExpression(path) {\n if (\n t.isIdentifier(path.node.callee) &&\n jsxFunctionNames.has(path.node.callee.name)\n ) {\n found = true;\n path.stop();\n return;\n }\n\n if (\n t.isMemberExpression(path.node.callee) &&\n t.isIdentifier(path.node.callee.property) &&\n (path.node.callee.property.name === \"map\" ||\n path.node.callee.property.name === \"flatMap\")\n ) {\n const [firstArg] = path.node.arguments;\n if (\n (t.isIdentifier(firstArg) && jsxFunctionNames.has(firstArg.name)) ||\n nodeContainsRenderableFunction(firstArg, jsxFunctionNames)\n ) {\n found = true;\n path.stop();\n }\n }\n },\n });\n\n return found;\n };\n\n const nodeContainsRenderableFunction = (\n node: t.Node | null | undefined,\n knownJsxFunctions: Set<string>,\n ): boolean => {\n if (!node) {\n return false;\n }\n\n if (t.isArrowFunctionExpression(node) || t.isFunctionExpression(node)) {\n return (\n expressionContainsJsx(node.body) || expressionProducesHtml(node.body)\n );\n }\n\n if (t.isIdentifier(node)) {\n return knownJsxFunctions.has(node.name);\n }\n\n return false;\n };\n\r\n const concatExpressions = (parts: t.Expression[]): t.Expression => {\r\n if (parts.length === 0) {\r\n return t.stringLiteral(\"\");\r\n }\r\n\r\n return parts\r\n .slice(1)\r\n .reduce<t.Expression>(\r\n (acc, current) => t.binaryExpression(\"+\", acc, current),\r\n parts[0],\r\n );\r\n };\r\n\r\n const jsxNameToString = (\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n ): string => {\n if (t.isJSXIdentifier(name)) {\r\n return name.name;\r\n }\r\n\r\n if (t.isJSXNamespacedName(name)) {\r\n return `${name.namespace.name}:${name.name.name}`;\r\n }\r\n\r\n const walkMember = (\r\n node: t.JSXIdentifier | t.JSXMemberExpression,\r\n ): string => {\r\n if (t.isJSXIdentifier(node)) {\r\n return node.name;\r\n }\r\n\r\n return `${walkMember(node.object)}.${node.property.name}`;\r\n };\r\n\n return walkMember(name);\n };\n\n const transformEmbeddedJsxExpression = (\n input: t.Expression,\n ): { expression: t.Expression; containsJsx: boolean } => {\n const wrapped = parseModule(`(${generate(input).code})`);\n let containsNestedJsx = false;\n\n traverse(wrapped, {\n JSXElement(path) {\n containsNestedJsx = true;\n path.replaceWith(jsxElementToExpression(path.node));\n path.skip();\n },\n JSXFragment(path) {\n containsNestedJsx = true;\n path.replaceWith(jsxFragmentToExpression(path.node));\n path.skip();\n },\n });\n\n const statement = wrapped.program.body[0];\n if (!statement || !t.isExpressionStatement(statement)) {\n return { expression: input, containsJsx: containsNestedJsx };\n }\n\n return {\n expression: statement.expression,\n containsJsx: containsNestedJsx,\n };\n };\n\n const jsxAttrToExpression = (\n attr: t.JSXAttribute | t.JSXSpreadAttribute,\n ): t.Expression => {\n if (t.isJSXSpreadAttribute(attr)) {\n const transformed = transformEmbeddedJsxExpression(\n attr.argument as t.Expression,\n );\n return t.callExpression(t.identifier(\"__olovaSpreadAttrs\"), [\n transformed.expression,\n ]);\n }\n\n const name = jsxNameToString(attr.name);\n if (name === \"key\") {\n return t.stringLiteral(\"\");\n }\n\n const normalizedName = name === \"className\" ? \"class\" : name;\n const eventMatch = name.match(/^(?:on:|on)([A-Za-z]+)$/);\n if (!attr.value) {\n return t.stringLiteral(` ${normalizedName}`);\n }\n\n if (t.isStringLiteral(attr.value)) {\n return t.stringLiteral(` ${normalizedName}=\"${attr.value.value}\"`);\n }\n\n if (t.isJSXExpressionContainer(attr.value)) {\n const transformed = transformEmbeddedJsxExpression(\n (attr.value.expression as t.Expression) ?? t.stringLiteral(\"\"),\n );\n\n if (eventMatch) {\n return t.callExpression(t.identifier(\"__olovaRegisterJsxEvent\"), [\n t.stringLiteral(eventMatch[1].toLowerCase()),\n transformed.expression,\n ]);\n }\n\n const valueExpression =\n normalizedName === \"class\"\n ? t.callExpression(t.identifier(\"__olovaNormalizeClassValue\"), [\n transformed.expression,\n ])\n : transformed.expression;\n\n return concatExpressions([\n t.stringLiteral(` ${normalizedName}=\"`),\n escapeCall(valueExpression),\n t.stringLiteral('\"'),\n ]);\n }\n\r\n return t.stringLiteral(\"\");\r\n };\r\n\r\n const jsxChildToExpression = (\r\n child:\r\n | t.JSXText\r\n | t.JSXExpressionContainer\r\n | t.JSXElement\r\n | t.JSXFragment\r\n | t.JSXSpreadChild,\r\n ): t.Expression => {\r\n if (t.isJSXText(child)) {\r\n return t.stringLiteral(child.value);\r\n }\r\n\r\n if (t.isJSXExpressionContainer(child)) {\n if (t.isJSXEmptyExpression(child.expression)) {\n return t.stringLiteral(\"\");\n }\n\n const rawExpression = child.expression as t.Expression;\n const transformed = transformEmbeddedJsxExpression(rawExpression);\n return transformed.containsJsx || expressionProducesHtml(rawExpression)\n ? toStringCall(transformed.expression)\n : escapeCall(transformed.expression);\n }\n\n if (t.isJSXSpreadChild(child)) {\n const transformed = transformEmbeddedJsxExpression(child.expression);\n return transformed.containsJsx || expressionProducesHtml(child.expression)\n ? toStringCall(transformed.expression)\n : escapeCall(transformed.expression);\n }\n\r\n if (t.isJSXElement(child)) {\r\n return jsxElementToExpression(child);\r\n }\r\n\r\n return jsxFragmentToExpression(child);\r\n };\r\n\r\n const jsxFragmentToExpression = (fragment: t.JSXFragment): t.Expression => {\r\n const parts = fragment.children.map((child) => jsxChildToExpression(child));\r\n return concatExpressions(parts);\r\n };\r\n\r\n const jsxElementToExpression = (element: t.JSXElement): t.Expression => {\n const opening = element.openingElement;\n const tag = jsxNameToString(opening.name);\n\n if (tag === \"For\") {\n let eachExpr: t.Expression = t.arrayExpression([]);\n for (const attr of opening.attributes) {\n if (\n t.isJSXAttribute(attr) &&\n jsxNameToString(attr.name) === \"each\" &&\n attr.value &&\n t.isJSXExpressionContainer(attr.value) &&\n !t.isJSXEmptyExpression(attr.value.expression)\n ) {\n eachExpr = transformEmbeddedJsxExpression(\n attr.value.expression as t.Expression,\n ).expression;\n }\n }\n\n const childRenderer = element.children.find(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression),\n );\n if (!childRenderer) {\n return t.stringLiteral(\"\");\n }\n\n return t.callExpression(t.identifier(\"__olovaFor\"), [\n eachExpr,\n transformEmbeddedJsxExpression(\n childRenderer.expression as t.Expression,\n ).expression,\n ]);\n }\n\n if (tag === \"Show\") {\n let whenExpr: t.Expression = t.booleanLiteral(false);\n let fallbackExpr: t.Expression = t.stringLiteral(\"\");\n for (const attr of opening.attributes) {\n if (!t.isJSXAttribute(attr)) {\n continue;\n }\n\n const attrName = jsxNameToString(attr.name);\n if (\n attrName === \"when\" &&\n attr.value &&\n t.isJSXExpressionContainer(attr.value) &&\n !t.isJSXEmptyExpression(attr.value.expression)\n ) {\n whenExpr = transformEmbeddedJsxExpression(\n attr.value.expression as t.Expression,\n ).expression;\n }\n\n if (\n attrName === \"fallback\" &&\n attr.value &&\n t.isJSXExpressionContainer(attr.value) &&\n !t.isJSXEmptyExpression(attr.value.expression)\n ) {\n fallbackExpr = transformEmbeddedJsxExpression(\n attr.value.expression as t.Expression,\n ).expression;\n }\n }\n\n const childExpr = concatExpressions(\n element.children\n .map((child) => jsxChildToExpression(child))\n .filter(Boolean),\n );\n\n return t.callExpression(t.identifier(\"__olovaShow\"), [\n whenExpr,\n t.arrowFunctionExpression(\n [t.identifier(\"__value\")],\n childExpr,\n ),\n fallbackExpr,\n ]);\n }\n\n const attrExpr = concatExpressions(\n [\n ...(jsxScopeAttr ? [t.stringLiteral(` ${jsxScopeAttr}`)] : []),\n ...opening.attributes.map((attr) => jsxAttrToExpression(attr)),\n ],\n );\n const childExpr = concatExpressions(\r\n element.children\r\n .map((child) => jsxChildToExpression(child))\r\n .filter(Boolean),\r\n );\r\n\r\n if (opening.selfClosing) {\r\n return concatExpressions([\r\n t.stringLiteral(`<${tag}`),\r\n attrExpr,\r\n t.stringLiteral(\"/>\"),\r\n ]);\r\n }\r\n\r\n return concatExpressions([\r\n t.stringLiteral(`<${tag}`),\r\n attrExpr,\r\n t.stringLiteral(\">\"),\r\n childExpr,\r\n t.stringLiteral(`</${tag}>`),\r\n ]);\r\n };\r\n\r\n traverse(ast, {\n JSXElement(path) {\n containsJsx = true;\n path.replaceWith(jsxElementToExpression(path.node));\n path.skip();\n },\r\n JSXFragment(path) {\r\n containsJsx = true;\r\n path.replaceWith(jsxFragmentToExpression(path.node));\r\n path.skip();\r\n },\r\n });\r\n\r\n const statement = ast.program.body[0];\n if (!statement || !t.isExpressionStatement(statement)) {\n return { code: expr.trim(), containsJsx };\n }\n\n containsJsx = containsJsx || expressionProducesHtml(statement.expression);\n\n return { code: generate(statement.expression).code, containsJsx };\n}\n\r\nfunction jsxToTemplateHtml(node: t.Node): string {\r\n if (t.isJSXElement(node)) {\r\n const opening = node.openingElement;\r\n let tag = \"\";\r\n if (t.isJSXIdentifier(opening.name)) {\r\n tag = opening.name.name;\r\n } else if (t.isJSXMemberExpression(opening.name)) {\r\n const walk = (n: t.JSXIdentifier | t.JSXMemberExpression): string =>\r\n t.isJSXIdentifier(n) ? n.name : `${walk(n.object)}.${n.property.name}`;\r\n tag = walk(opening.name);\r\n } else if (t.isJSXNamespacedName(opening.name)) {\r\n tag = `${opening.name.namespace.name}:${opening.name.name.name}`;\r\n }\r\n\r\n let attrsStr = \"\";\r\n for (const attr of opening.attributes) {\r\n if (t.isJSXSpreadAttribute(attr)) {\r\n attrsStr += ` {...${generate(attr.argument).code}}`;\r\n } else {\r\n let attrName = \"\";\r\n if (t.isJSXIdentifier(attr.name)) attrName = attr.name.name;\r\n else attrName = `${attr.name.namespace.name}:${attr.name.name.name}`;\r\n\r\n if (!attr.value) attrsStr += ` ${attrName}`;\r\n else if (t.isStringLiteral(attr.value))\r\n attrsStr += ` ${attrName}=\"${attr.value.value}\"`;\r\n else if (t.isJSXExpressionContainer(attr.value)) {\r\n if (!t.isJSXEmptyExpression(attr.value.expression)) {\r\n attrsStr += ` ${attrName}={${generate(attr.value.expression).code}}`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const childrenStr = node.children.map(jsxToTemplateHtml).join(\"\");\r\n if (opening.selfClosing) {\r\n return `<${tag}${attrsStr} />`;\r\n }\r\n return `<${tag}${attrsStr}>${childrenStr}</${tag}>`;\r\n }\r\n if (t.isJSXText(node)) {\r\n return node.value;\r\n }\r\n if (t.isJSXExpressionContainer(node)) {\r\n if (t.isJSXEmptyExpression(node.expression)) return \"\";\r\n return `{${generate(node.expression).code}}`;\r\n }\r\n if (t.isJSXFragment(node)) {\r\n return node.children.map(jsxToTemplateHtml).join(\"\");\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction replaceTemplateExpressions(\n input: string,\n replacer: (expression: string) => string,\n): string {\n let output = \"\";\r\n let index = 0;\r\n\r\n while (index < input.length) {\n const start = input.indexOf(\"{\", index);\n if (start < 0) {\n output += input.slice(index);\n break;\n }\n\n let prevIndex = start - 1;\n while (prevIndex >= 0 && /\\s/.test(input[prevIndex])) {\n prevIndex -= 1;\n }\n\n if (prevIndex >= 0 && input[prevIndex] === \"=\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\n\n if (start > 0 && input[start - 1] === \"$\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\r\n\r\n output += input.slice(index, start);\r\n\r\n let depth = 1;\r\n let cursor = start + 1;\r\n let quote: \"'\" | '\"' | \"`\" | null = null;\r\n\r\n while (cursor < input.length && depth > 0) {\r\n const char = input[cursor];\r\n const prev = input[cursor - 1];\r\n\r\n if (quote) {\r\n if (char === quote && prev !== \"\\\\\") {\r\n quote = null;\r\n }\r\n cursor += 1;\r\n continue;\r\n }\r\n\r\n if (char === \"'\" || char === '\"' || char === \"`\") {\r\n quote = char;\r\n cursor += 1;\r\n continue;\r\n }\r\n\r\n if (char === \"{\") {\r\n depth += 1;\r\n } else if (char === \"}\") {\r\n depth -= 1;\r\n }\r\n\r\n cursor += 1;\r\n }\r\n\r\n if (depth !== 0) {\r\n throw createCompileError(\"[olova] Unclosed template expression block.\", input, start);\n }\n\r\n const expression = input.slice(start + 1, cursor - 1);\r\n output += replacer(expression);\r\n index = cursor;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseProps(\n attrSource: string,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n): string {\n const props: Array<string> = [];\r\n const propRe =\r\n /([:@A-Za-z_][-A-Za-z0-9_:]*)(?:=(\"[^\"]*\"|'[^']*'|\\{[^}]*\\}))?/g;\r\n\r\n for (const match of attrSource.matchAll(propRe)) {\r\n const key = match[1];\r\n const rawValue = match[2];\r\n\r\n if (key === \"slot\") {\r\n continue;\r\n }\r\n\r\n if (!rawValue) {\r\n props.push(`${JSON.stringify(key)}: true`);\r\n continue;\r\n }\r\n\r\n if (rawValue.startsWith(\"{\") && rawValue.endsWith(\"}\")) {\r\n const expr = rawValue.slice(1, -1);\r\n props.push(\r\n `${JSON.stringify(key)}: (${transformExpression(expr, stateNames, allSignalNames).code})`,\r\n );\r\n continue;\r\n }\r\n\r\n const quote = rawValue[0];\r\n const literal = rawValue.slice(1, -1);\r\n if (quote === '\"' || quote === \"'\") {\r\n props.push(`${JSON.stringify(key)}: ${JSON.stringify(literal)}`);\r\n }\r\n }\r\n\r\n return props.length === 0 ? \"{}\" : `{ ${props.join(\", \")} }`;\n}\n\nfunction parsePropsFromAttrs(\n attrs: Record<string, string | true>,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n jsxFunctionNames: Set<string>,\n): string {\n const props: Array<string> = [];\n\n for (const [key, rawValue] of Object.entries(attrs)) {\n if (key === \"slot\" || key === \"key\") {\n continue;\n }\n\n const propName = key === \"className\" ? \"class\" : key;\n\n if (rawValue === true) {\n props.push(`${JSON.stringify(propName)}: true`);\n continue;\n }\n\n if (rawValue.startsWith(\"{\") && rawValue.endsWith(\"}\")) {\n const expr = rawValue.slice(1, -1);\n const valueExpr = transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n ).code;\n props.push(\n `${JSON.stringify(propName)}: (${propName === \"class\" ? `__olovaNormalizeClassValue(${valueExpr})` : valueExpr})`,\n );\n continue;\n }\n\n props.push(`${JSON.stringify(propName)}: ${JSON.stringify(rawValue)}`);\n }\n\n return props.length === 0 ? \"{}\" : `{ ${props.join(\", \")} }`;\n}\n\r\nfunction findMatchingComponentClose(\r\n source: string,\r\n name: string,\r\n afterStartTag: number,\r\n): { closeStart: number; closeEnd: number } | null {\r\n const tagRe = new RegExp(`<\\\\/?${name}\\\\b[^>]*>`, \"g\");\r\n tagRe.lastIndex = afterStartTag;\r\n\r\n let depth = 0;\r\n let match = tagRe.exec(source);\r\n while (match) {\r\n const rawTag = match[0];\r\n const isClose = rawTag.startsWith(\"</\");\r\n const selfClosing = /\\/>\\s*$/.test(rawTag);\r\n\r\n if (isClose) {\r\n if (depth === 0) {\r\n return {\r\n closeStart: match.index,\r\n closeEnd: match.index + rawTag.length,\r\n };\r\n }\r\n\r\n depth -= 1;\r\n } else if (!selfClosing) {\r\n depth += 1;\r\n }\r\n\r\n match = tagRe.exec(source);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction extractNamedSlotTemplates(\r\n childrenSource: string,\r\n stateNames: Set<string>,\r\n allSignalNames: Set<string>,\r\n componentNames: Set<string>,\r\n counters: TransformContext,\r\n): Map<string, TemplateTransformResult> {\r\n const slots = new Map<string, TemplateTransformResult>();\r\n const slotTemplateRe =\r\n /<template\\s+slot=(\"([^\"]+)\"|'([^']+)')\\s*>([\\s\\S]*?)<\\/template>/g;\r\n\r\n let remainder = childrenSource;\r\n let match = slotTemplateRe.exec(childrenSource);\r\n while (match) {\r\n const full = match[0];\r\n const name = match[2] || match[3] || \"default\";\r\n const body = match[4] ?? \"\";\r\n slots.set(\r\n name,\r\n transformTemplate(\n body,\n stateNames,\n allSignalNames,\n new Set<string>(),\n componentNames,\n counters,\n ),\n );\r\n remainder = remainder.replace(full, \"\");\r\n match = slotTemplateRe.exec(childrenSource);\r\n }\r\n\r\n if (remainder.trim()) {\r\n slots.set(\r\n \"default\",\r\n transformTemplate(\n remainder,\n stateNames,\n allSignalNames,\n new Set<string>(),\n componentNames,\n counters,\n ),\n );\r\n }\r\n\r\n return slots;\r\n}\r\n\r\nfunction transformTemplate(\n template: string,\n stateNames: Set<string>,\n allSignalNames: Set<string>,\n jsxFunctionNames: Set<string>,\n componentNames: Set<string>,\n counters: TransformContext,\n scopeId?: string,\n): TemplateTransformResult {\n let html = template;\n const textBindings: TextBinding[] = [];\n const htmlBindings: HtmlBinding[] = [];\n const attrBindings: AttrBinding[] = [];\n const eventBindings: EventBinding[] = [];\r\n const slotBindings: SlotBinding[] = [];\r\n const componentBindings: ComponentBinding[] = [];\n const ifBindings: IfBinding[] = [];\n\r\n // PASS 1: Extract JSX conditionals BEFORE slot/event/attr regex passes\r\n html = replaceTemplateExpressions(html, (expr: string) => {\n try {\r\n const ast = parseModule(`(${expr})`);\r\n const exprNode = ast.program.body[0];\r\n if (t.isExpressionStatement(exprNode)) {\r\n const node = exprNode.expression;\r\n const containsJsxNode = (n: t.Node): boolean => {\r\n let found = false;\r\n traverse(parseModule(`(${generate(n).code})`), {\r\n JSXElement() { found = true; },\r\n JSXFragment() { found = true; },\r\n });\r\n return found;\r\n };\r\n\r\n if (t.isLogicalExpression(node) && node.operator === \"&&\") {\r\n if (containsJsxNode(node.right)) {\r\n const id = `i${counters.if++}`;\r\n const condition = generate(node.left).code;\r\n const trueBranchHtml = jsxToTemplateHtml(node.right);\r\n ifBindings.push({\r\n id,\r\n expr: transformExpression(\n condition,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n ).code,\n trueBranch: transformTemplate(\n trueBranchHtml,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\r\n return `__O_IF_${id}__`;\r\n }\r\n } else if (t.isConditionalExpression(node)) {\r\n if (containsJsxNode(node.consequent) || containsJsxNode(node.alternate)) {\r\n const id = `i${counters.if++}`;\r\n const condition = generate(node.test).code;\r\n const trueBranchHtml = containsJsxNode(node.consequent)\r\n ? jsxToTemplateHtml(node.consequent)\r\n : `{${generate(node.consequent).code}}`;\r\n const falseBranchHtml = containsJsxNode(node.alternate)\r\n ? jsxToTemplateHtml(node.alternate)\r\n : `{${generate(node.alternate).code}}`;\r\n ifBindings.push({\r\n id,\r\n expr: transformExpression(\n condition,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n ).code,\n trueBranch: transformTemplate(\n trueBranchHtml,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n falseBranch: transformTemplate(\n falseBranchHtml,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\r\n return `__O_IF_${id}__`;\r\n }\r\n }\r\n }\r\n } catch {\r\n // ignore parse errors\r\n }\r\n\r\n return `{${expr}}`;\n });\n\n const rawExpressions: Array<{ id: string; expression: string }> = [];\n html = replaceTemplateExpressions(html, (expr: string) => {\n const id = `raw_${rawExpressions.length}`;\n rawExpressions.push({ id, expression: expr });\n return `__O_RAW_EXPR_${id}__`;\n });\n\r\n const renderTextContent = (content: string): string => {\n return content.replace(\n /__O_RAW_EXPR_([a-zA-Z0-9_]+)__/g,\n (_full, exprId: string) => {\n const found = rawExpressions.find((entry) => entry.id === exprId);\n const expr = found ? found.expression : \"\";\n const transformed = transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n );\n if (transformed.containsJsx) {\n const id = `h${counters.text++}`;\n htmlBindings.push({\n id,\n expr: `__olovaDangerouslySetHtml(${transformed.code})`,\n });\n return `__O_HTML_${id}__`;\n }\n\n const id = `t${counters.text++}`;\n textBindings.push({ id, expr: transformed.code });\n return `__O_TEXT_${id}__`;\n },\n );\n };\n\n const renderAttrs = (element: ASTElement): string => {\n let output = \"\";\n const scopeAttr = createScopeAttr(scopeId);\n\n if (scopeAttr) {\n output += ` ${scopeAttr}`;\n }\n\n for (const [attrName, rawValue] of Object.entries(element.attrs)) {\n if (attrName === \"key\") {\n continue;\n }\n\n const normalizedAttrName = attrName === \"className\" ? \"class\" : attrName;\n if (rawValue === true) {\n output += ` ${normalizedAttrName}`;\n continue;\n }\n\n if (rawValue.startsWith(\"{\") && rawValue.endsWith(\"}\")) {\n const expr = rawValue.slice(1, -1);\n const eventMatch = normalizedAttrName.match(/^(?:on:|on)([A-Za-z]+)$/);\n if (eventMatch) {\n const id = `e${counters.event++}`;\n const event = eventMatch[1].toLowerCase();\n eventBindings.push({\n id,\n event,\n expr: transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n ).code,\n });\n output += ` data-o-on-${event}=\"${id}\"`;\n continue;\n }\n\n const id = `a${counters.attr++}`;\n attrBindings.push({\n id,\n attr: normalizedAttrName,\n expr:\n normalizedAttrName === \"class\"\n ? `__olovaNormalizeClassValue(${transformExpression(expr, stateNames, allSignalNames, jsxFunctionNames).code})`\n : transformExpression(expr, stateNames, allSignalNames, jsxFunctionNames).code,\n });\n output += ` ${normalizedAttrName}=\"__O_ATTR_${id}__\"`;\n continue;\n }\n\n output += ` ${normalizedAttrName}=\"${rawValue.replace(/\"/g, \"&quot;\")}\"`;\n }\n\n return output;\n };\n\n const serializeRawNodes = (nodes: ASTNode[]): string =>\n nodes\n .map((node) => {\n if (node.type === \"comment\") {\n return `<!--${node.content}-->`;\n }\n\n if (node.type === \"text\") {\n return node.content;\n }\n\n const attrs = Object.entries(node.attrs)\n .map(([name, value]) => {\n if (value === true) {\n return ` ${name}`;\n }\n\n return ` ${name}=\"${String(value).replace(/\"/g, \"&quot;\")}\"`;\n })\n .join(\"\");\n const children = serializeRawNodes(node.children);\n if (node.isSelfClosing) {\n return `<${node.tag}${attrs} />`;\n }\n\n return `<${node.tag}${attrs}>${children}</${node.tag}>`;\n })\n .join(\"\");\n\n const renderNodes = (nodes: ASTNode[]): string =>\n nodes\n .map((node) => {\n if (node.type === \"comment\") {\n return `<!--${node.content}-->`;\n }\n\n if (node.type === \"text\") {\n return renderTextContent(node.content);\n }\n\n if (node.tag === \"slot\") {\n const id = `s${counters.slot++}`;\n const slotName =\n typeof node.attrs.name === \"string\" ? node.attrs.name : \"default\";\n slotBindings.push({ id, name: slotName });\n return `__O_SLOT_${id}__`;\n }\n\n if (componentNames.has(node.tag)) {\n const id = `c${counters.comp++}`;\n const namedSlotNodes = new Map<string, ASTNode[]>();\n const defaultNodes: ASTNode[] = [];\n\n for (const child of node.children) {\n if (\n child.type === \"element\" &&\n child.tag === \"template\" &&\n typeof child.attrs.slot === \"string\"\n ) {\n namedSlotNodes.set(child.attrs.slot, child.children);\n continue;\n }\n\n defaultNodes.push(child);\n }\n\n const slotFactories: SlotFactoryDef[] = [];\n if (defaultNodes.length > 0) {\n slotFactories.push({\n varName: `__slot_${id}_default`,\n name: \"default\",\n descriptor: transformTemplate(\n serializeRawNodes(defaultNodes),\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\n }\n\n for (const [slotName, slotChildren] of namedSlotNodes.entries()) {\n slotFactories.push({\n varName: `__slot_${id}_${slotName.replace(/[^A-Za-z0-9_$]/g, \"_\")}`,\n name: slotName,\n descriptor: transformTemplate(\n serializeRawNodes(slotChildren),\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n componentNames,\n counters,\n scopeId,\n ),\n });\n }\n\n componentBindings.push({\n id,\n component: node.tag,\n propsExpr: parsePropsFromAttrs(\n node.attrs,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n ),\n slotFactories,\n });\n return `__O_COMP_${id}__`;\n }\n\n const attrs = renderAttrs(node);\n const children = renderNodes(node.children);\n if (node.isSelfClosing) {\n return `<${node.tag}${attrs} />`;\n }\n\n return `<${node.tag}${attrs}>${children}</${node.tag}>`;\n })\n .join(\"\");\n\n html = renderNodes(parseHTML(html));\n\r\n const resolveExpr = (expr: string) =>\n transformExpression(\n expr,\n stateNames,\n allSignalNames,\n jsxFunctionNames,\n scopeId,\n );\n const buildFnStr = generateBuildFunction(\r\n escapeTemplate(html),\r\n stateNames,\r\n resolveExpr,\r\n counters,\r\n componentNames,\r\n );\r\n\r\n return {\r\n html: escapeTemplate(html),\r\n textBindings,\r\n htmlBindings,\r\n attrBindings,\r\n eventBindings,\r\n slotBindings,\r\n componentBindings,\r\n ifBindings,\r\n buildFnStr,\r\n };\r\n}\r\n\r\nfunction indentBlock(code: string, spaces = 2): string {\r\n const pad = \" \".repeat(spaces);\r\n if (!code.trim()) {\r\n return \"\";\r\n }\r\n\r\n return code\r\n .split(\"\\n\")\r\n .map((line) => `${pad}${line}`)\r\n .join(\"\\n\");\r\n}\r\n\r\nfunction renderDescriptorLiteral(\r\n descriptor: TemplateTransformResult,\r\n indent = \" \",\r\n): string {\r\n const slotFactoryDecls = descriptor.componentBindings.flatMap((binding) =>\r\n binding.slotFactories.map(\r\n (slot) =>\r\n `${indent}const ${slot.varName} = () => (${renderDescriptorLiteral(slot.descriptor, indent + \" \")});`,\r\n ),\r\n );\r\n\r\n const componentBindingsCode = descriptor.componentBindings\r\n .map((binding) => {\r\n const slotsObject =\r\n binding.slotFactories.length === 0\r\n ? \"{}\"\r\n : `{ ${binding.slotFactories.map((slot) => `${JSON.stringify(slot.name)}: ${slot.varName}`).join(\", \")} }`;\r\n\r\n return `${indent} { id: ${JSON.stringify(binding.id)}, getComponent: () => ${binding.component}, getProps: () => (${binding.propsExpr}), getSlots: () => (${slotsObject}) }`;\r\n })\r\n .join(\",\\n\");\r\n\r\n const buildLines = descriptor.buildFnStr\r\n ? `${indent}build: ${descriptor.buildFnStr.replace(/\\n /g, \"\\n\" + indent)},`\r\n : \"\";\r\n\r\n const objectLiteral = `{\r\n${buildLines}\r\n${indent}textBindings: [\r\n${descriptor.textBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}htmlBindings: [\r\n${descriptor.htmlBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}attrBindings: [\r\n${descriptor.attrBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, attr: ${JSON.stringify(binding.attr)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}eventBindings: [\r\n${descriptor.eventBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, event: ${JSON.stringify(binding.event)}, get: () => (${binding.expr}) }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}slotBindings: [\r\n${descriptor.slotBindings.map((binding) => `${indent} { id: ${JSON.stringify(binding.id)}, name: ${JSON.stringify(binding.name)} }`).join(\",\\n\")}\r\n${indent}],\r\n${indent}componentBindings: [\r\n${componentBindingsCode}\r\n${indent}],\r\n${indent}ifBindings: [\r\n${descriptor.ifBindings\r\n .map((binding) => {\r\n const trueFactory = `() => (${renderDescriptorLiteral(binding.trueBranch, indent + \" \")})`;\r\n const falseFactory = binding.falseBranch\r\n ? `() => (${renderDescriptorLiteral(binding.falseBranch, indent + \" \")})`\r\n : \"undefined\";\r\n return `${indent} { id: ${JSON.stringify(binding.id)}, get: () => (${binding.expr}), trueBranch: ${trueFactory}, falseBranch: ${falseFactory} }`;\r\n })\r\n .join(\",\\n\")}\r\n${indent}]\r\n${indent}}`;\r\n\r\n if (slotFactoryDecls.length === 0) {\r\n return objectLiteral;\r\n }\r\n\r\n const outerIndent = indent.length >= 2 ? indent.slice(2) : \"\";\r\n return `(() => {\\n${slotFactoryDecls.join(\"\\n\")}\\n${indent}return ${objectLiteral};\\n${outerIndent}})()`;\r\n}\r\n\r\nfunction collectImportLines(importsCode: string): string[] {\r\n return importsCode\r\n .split(\"\\n\")\r\n .map((line) => line.trim())\r\n .filter(Boolean);\r\n}\r\n\r\nfunction uniqueLines(lines: string[]): string[] {\n const seen = new Set<string>();\n const output: string[] = [];\n\r\n for (const line of lines) {\r\n if (seen.has(line)) {\r\n continue;\r\n }\r\n\r\n seen.add(line);\r\n output.push(line);\r\n }\r\n\n return output;\n}\n\nfunction extractTemplateExpressions(input: string): {\n output: string;\n expressions: Array<{ id: string; expression: string }>;\n} {\n const expressions: Array<{ id: string; expression: string }> = [];\n let output = \"\";\n let index = 0;\n let count = 0;\n\n while (index < input.length) {\n const start = input.indexOf(\"{\", index);\n if (start < 0) {\n output += input.slice(index);\n break;\n }\n\n let prevIndex = start - 1;\n while (prevIndex >= 0 && /\\s/.test(input[prevIndex])) {\n prevIndex -= 1;\n }\n\n if (prevIndex >= 0 && input[prevIndex] === \"=\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\n\n if (start > 0 && input[start - 1] === \"$\") {\n output += input.slice(index, start + 1);\n index = start + 1;\n continue;\n }\n\n output += input.slice(index, start);\n\n let depth = 1;\n let cursor = start + 1;\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n while (cursor < input.length && depth > 0) {\n const char = input[cursor];\n const prev = input[cursor - 1];\n\n if (quote) {\n if (char === quote && prev !== \"\\\\\") {\n quote = null;\n }\n cursor += 1;\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n cursor += 1;\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n } else if (char === \"}\") {\n depth -= 1;\n }\n\n cursor += 1;\n }\n\n if (depth !== 0) {\n throw createCompileError(\"[olova] Unclosed template expression block.\", input, start);\n }\n\n const id = `x${count++}`;\n expressions.push({\n id,\n expression: input.slice(start + 1, cursor - 1),\n });\n output += `__O_EXPR_${id}__`;\n index = cursor;\n }\n\n return { output, expressions };\n}\n\nfunction mergeImportLines(lines: string[]): string {\n const merged = new Map<\n string,\n {\n defaultImport?: string;\n namespaceImport?: string;\n namedImports: Map<string, string>;\n sideEffectOnly: boolean;\n }\n >();\n\n for (const line of uniqueLines(lines)) {\n const ast = parseModule(line);\n\n for (const node of ast.program.body) {\n if (!t.isImportDeclaration(node)) {\n continue;\n }\n\n const source = node.source.value;\n const entry =\n merged.get(source) ??\n {\n namedImports: new Map<string, string>(),\n sideEffectOnly: true,\n };\n\n if (node.specifiers.length > 0) {\n entry.sideEffectOnly = false;\n }\n\n for (const specifier of node.specifiers) {\n if (t.isImportDefaultSpecifier(specifier)) {\n entry.defaultImport ??= specifier.local.name;\n continue;\n }\n\n if (t.isImportNamespaceSpecifier(specifier)) {\n entry.namespaceImport ??= specifier.local.name;\n continue;\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n\n if (!entry.namedImports.has(imported)) {\n entry.namedImports.set(imported, specifier.local.name);\n }\n }\n\n merged.set(source, entry);\n }\n }\n\n const output: string[] = [];\n\n for (const [source, entry] of merged.entries()) {\n if (entry.sideEffectOnly) {\n output.push(generate(t.importDeclaration([], t.stringLiteral(source))).code);\n continue;\n }\n\n const specifiers: t.ImportDeclaration[\"specifiers\"] = [];\n\n if (entry.defaultImport) {\n specifiers.push(t.importDefaultSpecifier(t.identifier(entry.defaultImport)));\n }\n\n if (entry.namespaceImport) {\n specifiers.push(\n t.importNamespaceSpecifier(t.identifier(entry.namespaceImport)),\n );\n }\n\n for (const [imported, local] of entry.namedImports.entries()) {\n specifiers.push(\n t.importSpecifier(\n t.identifier(local),\n t.identifier(imported),\n ),\n );\n }\n\n output.push(\n generate(t.importDeclaration(specifiers, t.stringLiteral(source))).code,\n );\n }\n\n return output.join(\"\\n\");\n}\n\r\nfunction buildComponentCode(\n parsed: ParsedOlovaFile,\n options?: { exportName?: string; scopeId?: string; hmrId?: string; dev?: boolean },\n): { importsCode: string; code: string } {\n const scriptInfo = collectScriptInfo(parsed.script);\r\n const counters: TransformContext = {\r\n text: 0,\r\n attr: 0,\r\n event: 0,\r\n comp: 0,\r\n slot: 0,\r\n if: 0,\r\n };\r\n\r\n const transformed = transformTemplate(\n parsed.template,\n scriptInfo.stateNames,\n scriptInfo.allSignalNames,\n scriptInfo.jsxFunctionNames,\n scriptInfo.componentNames,\n counters,\n options?.scopeId,\n );\n\r\n const exportHead = options?.exportName\n ? `export const ${options.exportName} = __defineComponent((__props, __slots) => {`\n : `const __olovaComponent = __defineComponent((__props, __slots) => {`;\n const exportTail = options?.exportName\n ? `}, ${JSON.stringify(options?.hmrId)});`\n : `}, ${JSON.stringify(options?.hmrId)});\\nexport default __olovaComponent;`;\n const hmrCode =\n options?.dev && !options?.exportName && options?.hmrId\n ? `\nif (import.meta.hot) {\n import.meta.hot.accept((nextModule) => {\n if (nextModule?.default) {\n __replaceComponent(__olovaComponent, nextModule.default);\n }\n });\n}\n`\n : \"\";\n\n const code = `\n${exportHead}\n const props = __props;\n const slots = __slots;\n const __olovaGlobalObj = globalThis;\n const __olovaJsxHandlers =\n __olovaGlobalObj.__olovaJsxHandlers ?? (__olovaGlobalObj.__olovaJsxHandlers = new Map());\n const __olovaNextJsxEventId = () => {\n __olovaGlobalObj.__olovaJsxEventId = (__olovaGlobalObj.__olovaJsxEventId ?? 0) + 1;\n return String(__olovaGlobalObj.__olovaJsxEventId);\n };\n if (typeof __olovaGlobalObj.__olovaDispatchJsxEvent !== 'function') {\n __olovaGlobalObj.__olovaDispatchJsxEvent = (event, element) => {\n const key = element?.getAttribute?.('data-o-jsx-' + event.type);\n if (!key) {\n return;\n }\n\n const handler = __olovaJsxHandlers.get(key);\n if (typeof handler === 'function') {\n handler(event);\n }\n };\n }\n const __olovaRegisterJsxEvent = (eventName, handler) => {\n if (typeof handler !== 'function') {\n return '';\n }\n\n const id = __olovaNextJsxEventId();\n __olovaJsxHandlers.set(id, handler);\n return ' data-o-jsx-' + eventName + '=\"' + id + '\" on' + eventName + '=\"window.__olovaDispatchJsxEvent(event, this)\"';\n };\n const __olovaToString = (value) =>\n Array.isArray(value)\n ? value.map(__olovaToString).join('')\n : value == null || value === false || value === true\n ? ''\n : String(value);\n const __olovaDangerouslySetHtml = (value) => ({ __dangerousHtml: true, value: __olovaToString(value) });\n const __olovaNormalizeClassValue = (value) => {\n if (value == null || value === false) {\n return '';\n }\n if (Array.isArray(value)) {\n return value.map(__olovaNormalizeClassValue).filter(Boolean).join(' ');\n }\n if (typeof value === 'object') {\n return Object.entries(value)\n .filter(([, enabled]) => !!enabled)\n .map(([key]) => key)\n .join(' ');\n }\n return String(value);\n };\n const __olovaEscape = (value) =>\n __olovaToString(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\\\"/g, '&quot;')\r\n .replace(/'/g, '&#39;');\r\n const __olovaSpreadAttrs = (input) => {\r\n if (input == null || input === false) {\r\n return '';\r\n }\r\n if (Array.isArray(input)) {\r\n return input.map(__olovaSpreadAttrs).join('');\r\n }\r\n if (typeof input !== 'object') {\r\n return '';\r\n }\r\n\r\n return Object.entries(input).reduce((acc, [key, value]) => {\n if (value == null || value === false) {\n return acc;\n }\n const attrKey = key === 'className' ? 'class' : key;\n const normalizedValue = attrKey === 'class'\n ? __olovaNormalizeClassValue(value)\n : value;\n if (attrKey === 'key') {\n return acc;\n }\n if (normalizedValue == null || normalizedValue === false || normalizedValue === '') {\n return acc;\n }\n if (normalizedValue === true) {\n return acc + ' ' + attrKey;\n }\n return acc + ' ' + attrKey + '=\"' + __olovaEscape(normalizedValue) + '\"';\n }, '');\n };\n const __olovaFor = (each, render) => {\n if (!Array.isArray(each) || typeof render !== 'function') {\n return '';\n }\n return each.map((item, index) => render(item, index));\n };\n const __olovaShow = (when, render, fallback = '') => {\n if (!when) {\n return fallback;\n }\n return typeof render === 'function' ? render(when) : render;\n };\n${indentBlock(scriptInfo.scriptBodyCode, 2)}\n\n return ${renderDescriptorLiteral(transformed, \" \")};\n${exportTail}\n${hmrCode}\n`;\n\n return { importsCode: scriptInfo.importsCode, code };\n}\n\r\nexport interface CompileOptions {\n filename?: string;\n dev?: boolean;\n exportName?: string;\n}\n\nfunction hashScopeSeed(input: string): string {\n let hash = 2166136261;\n for (let index = 0; index < input.length; index += 1) {\n hash ^= input.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n\n return Math.abs(hash >>> 0).toString(36);\n}\n\nfunction createScopeAttr(scopeId?: string): string | null {\n return scopeId ? `data-o-scope-${scopeId}` : null;\n}\n\nfunction scopeSelectorList(selectorList: string, scopeAttr: string): string {\n const applyScopeToSegment = (segment: string): string => {\n const trimmed = segment.trim();\n if (!trimmed) {\n return trimmed;\n }\n\n if (trimmed.includes(scopeAttr)) {\n return trimmed;\n }\n\n const globalPattern = /:global\\(([^()]+)\\)/g;\n const localCandidate = trimmed.replace(globalPattern, \"\").trim();\n const normalized = trimmed.replace(globalPattern, \"$1\");\n\n if (!localCandidate) {\n return normalized;\n }\n\n if (normalized === \":root\") {\n return `[${scopeAttr}]`;\n }\n\n const pseudoIndex = normalized.search(/(?<!:):(?!:)/);\n if (pseudoIndex === -1) {\n return `${normalized}[${scopeAttr}]`;\n }\n\n return `${normalized.slice(0, pseudoIndex)}[${scopeAttr}]${normalized.slice(pseudoIndex)}`;\n };\n\n return selectorList\n .split(\",\")\n .map((selector) => selector.trim())\n .filter(Boolean)\n .map((selector) => {\n if (selector.startsWith(\"@\") || selector.includes(scopeAttr)) {\n return selector;\n }\n\n return selector\n .split(/(\\s+|[>+~])/)\n .map((part) => {\n if (!part || /^(\\s+|[>+~])$/.test(part)) {\n return part;\n }\n\n return applyScopeToSegment(part);\n })\n .join(\"\");\n })\n .join(\", \");\n}\n\nfunction scopeCss(css: string, scopeAttr: string): string {\n let output = \"\";\n let index = 0;\n\n while (index < css.length) {\n const open = css.indexOf(\"{\", index);\n if (open < 0) {\n output += css.slice(index);\n break;\n }\n\n const selector = css.slice(index, open).trim();\n let depth = 1;\n let cursor = open + 1;\n while (cursor < css.length && depth > 0) {\n if (css[cursor] === \"{\") {\n depth += 1;\n } else if (css[cursor] === \"}\") {\n depth -= 1;\n }\n cursor += 1;\n }\n\n const body = css.slice(open + 1, cursor - 1);\n if (/^@(?:media|supports|container|layer)\\b/i.test(selector)) {\n output += `${selector} {${scopeCss(body, scopeAttr)}}`;\n } else if (/^@(?:keyframes|-webkit-keyframes)\\b/i.test(selector)) {\n output += `${selector} {${body}}`;\n } else {\n output += `${scopeSelectorList(selector, scopeAttr)} {${body}}`;\n }\n\n index = cursor;\n }\n\n return output;\n}\n\nfunction collectCss(blocks: StyleBlock[], scopeId?: string): string {\n const scopeAttr = createScopeAttr(scopeId);\n return blocks\n .map((block) => {\n const content = block.content.trim();\n if (!content) {\n return \"\";\n }\n\n if (!(\"global\" in block.attrs) && scopeAttr) {\n return scopeCss(content, scopeAttr);\n }\n\n return content;\n })\n .filter(Boolean)\n .join(\"\\n\\n\");\n}\n\nexport function compileOlovaScriptModule(\n source: string,\n options?: CompileOptions,\n): CompileResult {\n try {\n const scriptInfo = collectScriptInfo(source);\n return transpileTypeScript(\n [scriptInfo.importsCode, scriptInfo.scriptBodyCode].filter(Boolean).join(\"\\n\"),\n options?.filename ?? \"module.ts\",\n );\n } catch (error) {\n return normalizeCompileError(error, source, options?.filename ?? \"module.ts\");\n }\n}\n\nexport function compileOlova(source: string, options?: CompileOptions): CompileResult {\n try {\n const parsed = parseOlovaFile(source);\n\n // Allow .olova files to act as pure module barrels (imports/exports only).\n if (!parsed.template.trim() && isModuleOnlyScript(parsed.script)) {\n return {\n ...compileModuleScript(parsed.script, options?.filename ?? \"module.olova.ts\"),\n css: collectCss(parsed.styles),\n };\n }\n\n const scopeId = parsed.styles.some((style) => !(\"global\" in style.attrs))\n ? hashScopeSeed(`${options?.filename ?? \"component.olova\"}:${options?.exportName ?? \"default\"}`)\n : undefined;\n const compiled = buildComponentCode(parsed, {\n scopeId,\n hmrId: options?.filename ?? \"component.olova\",\n dev: options?.dev,\n });\n const runtimeImport = options?.dev\n ? `import { defineComponent as __defineComponent, replaceComponent as __replaceComponent } from 'olova/runtime';`\n : `import { defineComponent as __defineComponent } from 'olova/runtime';`;\n const result = transpileTypeScript(`\n${runtimeImport}\n${compiled.importsCode}\n${compiled.code}\n`, options?.filename ?? \"component.olova.ts\");\n return {\n ...result,\n css: collectCss(parsed.styles, scopeId),\n };\n } catch (error) {\n return normalizeCompileError(\n error,\n source,\n options?.filename ?? \"component.olova\",\n );\n }\n}\n"]}