@llui/vite-plugin 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +14 -59
- package/dist/transform.js.map +1 -1
- package/package.json +1 -1
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript'\nimport { collectDeps } from './collect-deps.js'\nimport {\n resolveLocalConstInitializer,\n resolveAccessorBody,\n isMemoCallWithArrowArg,\n} from './accessor-resolver.js'\nimport {\n extractMsgSchema,\n extractEffectSchema,\n isRichField,\n type MsgField,\n type MsgSchema,\n} from './msg-schema.js'\nimport { extractMsgAnnotations, type MessageAnnotations } from './msg-annotations.js'\nimport { extractStateSchema, type StateType } from './state-schema.js'\nimport { computeSchemaHash } from './schema-hash.js'\nimport { tagDispatchHandlers, injectScopeVariantRegistrations } from './binding-descriptors.js'\nimport { compilerCache } from './compiler-cache.js'\n\nfunction createMaskLiteral(f: ts.NodeFactory, mask: number): ts.Expression {\n if (mask >= 0) return f.createNumericLiteral(mask)\n // -1 (0xFFFFFFFF | 0) — emit as bitwise OR: 0xFFFFFFFF | 0\n return f.createBinaryExpression(\n f.createNumericLiteral(0xffffffff),\n ts.SyntaxKind.BarToken,\n f.createNumericLiteral(0),\n )\n}\n\n// HTML element helper names that the compiler can transform\nconst ELEMENT_HELPERS = new Set([\n 'a',\n 'abbr',\n 'article',\n 'aside',\n 'b',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'code',\n 'dd',\n 'details',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'nav',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'pre',\n 'progress',\n 'section',\n 'select',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'video',\n])\n\nconst PROP_KEYS = new Set([\n 'value',\n 'checked',\n 'selected',\n 'disabled',\n 'readOnly',\n 'multiple',\n 'indeterminate',\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'textContent',\n])\n\ntype BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style'\n\n/**\n * A `value` at a reactive-prop position — classified for the compiler.\n *\n * Element-helper props (`{ disabled: X, class: X, title: X, ... }`) and the\n * driver accessor of structural primitives (`each.items`, `branch.on`,\n * `show.when`) accept any callable that takes the state and returns a\n * value. The compiler must distinguish recognized shapes from values it\n * can't safely classify (imports, parameters, opaque expressions) — the\n * latter must bail to the runtime helper, never to a static assignment.\n *\n * Bailing is load-bearing: emitting `__e.disabled = identifier` statically\n * when the runtime value happens to be a function silently binds the\n * function ref to the boolean DOM property and never re-runs.\n */\ntype ResolvedReactiveBinding =\n | {\n kind: 'arrow'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n | {\n kind: 'fn-decl'\n accessor: ts.FunctionDeclaration\n valueForBinding: ts.Expression\n }\n | {\n kind: 'memo-call'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n\ntype ResolvedReactiveValue =\n | ResolvedReactiveBinding\n | { kind: 'static-literal' }\n | { kind: 'bail' }\n | null\n\nfunction isStaticPrimitiveLiteral(expr: ts.Expression): boolean {\n return (\n ts.isStringLiteral(expr) ||\n ts.isNumericLiteral(expr) ||\n ts.isNoSubstitutionTemplateLiteral(expr) ||\n expr.kind === ts.SyntaxKind.TrueKeyword ||\n expr.kind === ts.SyntaxKind.FalseKeyword ||\n expr.kind === ts.SyntaxKind.NullKeyword\n )\n}\n\n/**\n * Classify a reactive-prop value. See `ResolvedReactiveValue` for the\n * contract. Returns `null` only when the value is none of the recognized\n * shapes (caller can fall back to its own branches — currently only\n * `tryTransformElementCall` does this for `isPerItemFieldAccess` /\n * `isHoistedPerItem`).\n */\nfunction classifyReactiveValue(value: ts.Expression): ResolvedReactiveValue {\n // Inline arrow / function expression at the call site\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n return { kind: 'arrow', accessor: value, valueForBinding: value }\n }\n\n // Inline `memo(arrow)` at the call site\n if (isMemoCallWithArrowArg(value)) {\n return {\n kind: 'memo-call',\n accessor: value.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n\n // Identifier — resolve and classify the resolved declaration\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (!resolved) {\n // Imported / parameter / unbound — can't prove it's a primitive,\n // can't prove it's a function. Caller must bail to runtime.\n return { kind: 'bail' }\n }\n if (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved)) {\n return { kind: 'arrow', accessor: resolved, valueForBinding: value }\n }\n if (ts.isFunctionDeclaration(resolved)) {\n return { kind: 'fn-decl', accessor: resolved, valueForBinding: value }\n }\n if (isMemoCallWithArrowArg(resolved)) {\n return {\n kind: 'memo-call',\n accessor: resolved.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n if (isStaticPrimitiveLiteral(resolved)) {\n return { kind: 'static-literal' }\n }\n // Resolved to something else (object/array/expression) — conservative\n // bail. We don't know if the runtime value is a function; the runtime\n // element helper handles both cases correctly.\n return { kind: 'bail' }\n }\n\n // Static literals at the call site\n if (isStaticPrimitiveLiteral(value)) {\n return { kind: 'static-literal' }\n }\n\n // CallExpression — caller decides (per-item, etc.)\n return null\n}\n\nfunction classifyKind(key: string): BindingKind {\n if (key === 'class' || key === 'className') return 'class'\n if (key.startsWith('style.')) return 'style'\n if (PROP_KEYS.has(key)) return 'prop'\n return 'attr'\n}\n\nfunction resolveKey(key: string, kind: BindingKind): string {\n if (kind === 'class') return 'class'\n if (kind === 'style') return key.slice(6)\n if (kind === 'prop') return key\n if (key === 'className') return 'class'\n return key\n}\n\n/**\n * Transform a source file containing @llui/dom imports.\n * Returns the transformed source or null if no transformation needed.\n */\nexport interface TransformEdit {\n start: number\n end: number\n replacement: string\n}\n\n/**\n * Pre-resolved external type sources from the cross-file resolver.\n * When the plugin's vite hook detects that `State` / `Msg` / `Effect`\n * for a `component<...>()` call are imported (not declared in the\n * current file), it walks the imports and re-exports to find the\n * declaring file, then passes the source + local name here. Each\n * extractor below uses the resolved source instead of falling back to\n * the file-local search (which would miss the type entirely).\n */\nexport interface ExternalTypeSources {\n state?: { source: string; typeName: string }\n msg?: { source: string; typeName: string }\n effect?: { source: string; typeName: string }\n}\n\n/**\n * Schemas already extracted by the plugin's async hook before invoking\n * the sync transform. Used for cases the file-local sync extractors\n * can't handle on their own:\n * - The Msg/Effect/State alias lives in another file (cross-file\n * resolution, see `cross-file-resolver.ts`).\n * - The Msg/Effect alias is a *composition* — a union mixing inline\n * `{ type: 'literal' }` members with TypeReferences pointing at\n * other (often imported) Msg unions.\n *\n * When provided, transformLlui uses these instead of running its own\n * file-local extractors. When omitted (the test path that constructs\n * a single-source string), the file-local extractors run as before.\n */\nexport interface PreExtractedSchemas {\n msgSchema?: ReturnType<typeof extractMsgSchema>\n msgAnnotations?: ReturnType<typeof extractMsgAnnotations>\n stateSchema?: ReturnType<typeof extractStateSchema>\n effectSchema?: ReturnType<typeof extractEffectSchema>\n}\n\nexport function transformLlui(\n source: string,\n _filename: string,\n devMode = false,\n emitAgentMetadata = false,\n mcpPort: number | null = 5200,\n verbose = false,\n typeSources?: ExternalTypeSources,\n preExtracted?: PreExtractedSchemas,\n): { output: string; edits: TransformEdit[] } | null {\n let sourceFile = ts.createSourceFile('input.ts', source, ts.ScriptTarget.Latest, true)\n\n // Find the @llui/dom import\n const imp = findLluiImport(sourceFile)\n if (!imp) return null\n const lluiImport = imp\n\n // Collect imported element helper names (local → original)\n const importedHelpers = getImportedHelpers(lluiImport)\n if (importedHelpers.size === 0 && !hasReactiveAccessors(sourceFile)) return null\n\n // Connect-pattern pass: detects `*.connect(get, sendFn, …)` call\n // sites and inserts a runtime `__registerScopeVariants([...])`\n // adjacent to each, with the variants statically extracted from the\n // sendFn's body. Handles the dispatch-translation case at the\n // syntactic level — handler propagation via `tagSend` covers the\n // rest. Runs FIRST so its `collectLocalFns` resolver still sees raw\n // arrow initializers in const declarations (the universal tagger\n // below replaces those initializers with `Object.assign(...)`\n // wrappers).\n //\n // Universal handler-tagger pass: walks every arrow/function\n // expression and wraps any whose body contains literal\n // `send({type:'X'})` / `dispatch({type:'X'})` calls with\n // `Object.assign(arrow, {__lluiVariants: ['X']})`. The runtime\n // (`@llui/dom` `elements.ts` / `el-split.ts`) reads the tag from\n // event-handler bindings only — so tags placed on functions in\n // non-handler positions are runtime-inert. This deliberately covers\n // three patterns at once:\n // • Inline event handlers (`onClick: () => send(...)`)\n // • Const-bound translators (`const sendMenu = (m) => dispatch(...)`)\n // • Positional-arg helpers (`navButton(label, () => dispatch(...))`)\n //\n // Both passes gated on dev/agent-metadata so production bundles\n // without agent integration don't pay the per-handler `Object.assign`\n // cost.\n let scopeRegistrationsInjected = false\n if (devMode || emitAgentMetadata) {\n const injection = injectScopeVariantRegistrations(sourceFile, ts.factory)\n sourceFile = injection.sf\n scopeRegistrationsInjected = injection.injected\n sourceFile = tagDispatchHandlers(sourceFile, ts.factory)\n }\n\n // Pass 2 pre-scan: collect all state access paths\n // Only use precise masks in files that define a component() — the __dirty\n // function is generated per-component, so bit assignments in other files\n // won't match. Files without component() get FULL_MASK on all bindings.\n const fileHasComponent = hasComponentDef(sourceFile, lluiImport)\n const { lo: fieldBits, hi: fieldBitsHi } = fileHasComponent\n ? collectDeps(source)\n : { lo: new Map<string, number>(), hi: new Map<string, number>() }\n\n if (verbose && fileHasComponent) {\n const pairs = [...fieldBits.entries()]\n .map(([path, bit]) => `${path}=${bit === -1 ? 'FULL' : bit}`)\n .join(', ')\n console.info(\n `[llui] ${_filename}: ${fieldBits.size} reactive path${fieldBits.size === 1 ? '' : 's'}` +\n (pairs.length > 0 ? ` — ${pairs}` : ''),\n )\n }\n\n // Identifier names bound to the View<S,M> helpers parameter of a `view` callback.\n // When the user writes `h.text(...)` / `h.show(...)` / `h.each(...)`, the\n // compiler treats the call as if it were a bare import call.\n const viewHelperNames = collectViewHelperNames(sourceFile, lluiImport)\n // Destructured aliases: `view: (_, { show, text: t }) => [...]` → { show→show, t→text }.\n const viewHelperAliases = collectViewHelperAliases(sourceFile, lluiImport, viewHelperNames)\n\n // Track which helpers were compiled vs bailed out\n const compiledHelpers = new Set<string>()\n const bailedHelpers = new Set<string>()\n let usesElTemplate = false\n let usesElSplit = false\n let usesMemo = false\n let usesApplyBinding = false\n let usesCloneStaticTemplate = false\n\n const f = ts.factory\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n\n // Collect source positions of transformed nodes for source mapping\n const edits: TransformEdit[] = []\n\n function visitor(node: ts.Node): ts.Node {\n // Synthetic nodes (created by ts.factory) don't have real positions\n const hasPos = node.pos >= 0 && node.end >= 0\n const origStart = hasPos ? node.getStart(sourceFile) : -1\n const origEnd = hasPos ? node.getEnd() : -1\n\n // Pass 0: each() optimizations — dedup item() selectors + auto-wrap items in memo\n if (\n ts.isCallExpression(node) &&\n isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n ) {\n let current: ts.CallExpression = node\n let changed = false\n const memoWrapped = tryWrapEachItemsWithMemo(current, fieldBits, f)\n if (memoWrapped) {\n current = memoWrapped\n changed = true\n usesMemo = true\n }\n const deduped = tryDeduplicateItemSelectors(current, f, printer, sourceFile)\n if (deduped) {\n current = deduped\n changed = true\n }\n // Inject __mask for Phase 1 gating\n const masked = tryInjectStructuralMask(\n current,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (masked) {\n current = masked\n changed = true\n }\n if (changed) {\n const result = ts.visitEachChild(current, visitor, undefined!)\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n // Row factory: try after children are transformed\n if (ts.isCallExpression(result)) {\n try {\n const rf = tryEmitRowFactory(result, f, source)\n if (rf) return rf\n } catch (err) {\n const line = ts.getLineAndCharacterOfPosition(sourceFile, result.getStart())\n console.warn(\n `[llui] Row factory failed in ${_filename}:${line.line + 1} — ${(err as Error).message}`,\n )\n }\n }\n return result\n }\n }\n\n // Pass 1: Transform element helper calls to elSplit or elTemplate\n if (ts.isCallExpression(node)) {\n const transformed = tryTransformElementCall(\n node,\n importedHelpers,\n fieldBits,\n compiledHelpers,\n bailedHelpers,\n f,\n fieldBitsHi,\n )\n if (transformed) {\n if (ts.isIdentifier(transformed.expression)) {\n if (transformed.expression.text === 'elTemplate') usesElTemplate = true\n else if (transformed.expression.text === 'elSplit') usesElSplit = true\n else if (transformed.expression.text === '__cloneStaticTemplate')\n usesCloneStaticTemplate = true\n }\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(transformed, visitor, undefined!)\n }\n\n // Pass 2: Inject mask into text() calls\n const textTransformed = tryInjectTextMask(\n node,\n lluiImport,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (textTransformed) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return textTransformed\n }\n\n // Inject __mask into each()/branch()/show() options for Phase 1 gating\n const structuralMasked = tryInjectStructuralMask(\n node,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (structuralMasked) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(structuralMasked, visitor, undefined!)\n }\n }\n\n // Pass 2: Inject __dirty, __update, and __msgSchema into component() calls\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n let result = tryInjectDirty(node, fieldBits, f, fieldBitsHi)\n if (result) usesApplyBinding = true\n\n // Extract schema data once — used both for devMode injections and the\n // unconditional __schemaHash (spec §7.4: hash ships in prod too).\n //\n // Resolution priority for each schema:\n // 1. preExtracted.* — used when the plugin's async hook has already\n // done cross-file + composition extraction (the production path).\n // 2. typeSources.* — file-local extraction against an alternate\n // source file (legacy path; covers cross-file but not composition).\n // 3. file-local — the test path: extract from `source` itself.\n //\n // When `preExtracted` is provided, treat it as authoritative even\n // when the value is `null` (the resolver was run and found\n // nothing) — falling back to local extraction would mask the\n // resolver's \"not extractable\" verdict.\n const msgSchema =\n preExtracted?.msgSchema !== undefined\n ? preExtracted.msgSchema\n : extractMsgSchema(\n typeSources?.msg?.source ?? source,\n typeSources?.msg?.typeName ?? 'Msg',\n )\n const msgAnnotations =\n preExtracted?.msgAnnotations !== undefined\n ? preExtracted.msgAnnotations\n : extractMsgAnnotations(\n typeSources?.msg?.source ?? source,\n typeSources?.msg?.typeName ?? 'Msg',\n )\n const stateSchema =\n preExtracted?.stateSchema !== undefined\n ? preExtracted.stateSchema\n : extractStateSchema(\n typeSources?.state?.source ?? source,\n typeSources?.state?.typeName ?? 'State',\n )\n\n const shouldEmitAgentMetadata = devMode || emitAgentMetadata\n if (shouldEmitAgentMetadata) {\n if (msgSchema) {\n result = injectMsgSchema(result ?? node, msgSchema, f)\n }\n if (msgAnnotations && hasNonDefaultAnnotation(msgAnnotations)) {\n result = injectMsgAnnotations(result ?? node, msgAnnotations, f)\n }\n if (stateSchema) {\n result = injectStateSchema(result ?? node, stateSchema.fields, f)\n }\n const effectSchema =\n preExtracted?.effectSchema !== undefined\n ? preExtracted.effectSchema\n : extractEffectSchema(\n typeSources?.effect?.source ?? source,\n typeSources?.effect?.typeName ?? 'Effect',\n )\n if (effectSchema) {\n result = injectEffectSchema(result ?? node, effectSchema, f)\n }\n // Note: binding descriptors are no longer emitted on the\n // component def. They're now collected at runtime by walking\n // event-handler arrows that the `tagEventHandlerSends` pass\n // wrapped with `__lluiVariants` metadata. See\n // `binding-descriptors.ts` (compiler) and the matching\n // `@llui/dom binding-descriptors.ts` (runtime registry).\n\n // Populate compiler cache — preSource and msgMaskMap are known now;\n // postSource is filled in after the full output is assembled.\n const cachedComponentName = extractComponentNameFromConfig(node)\n if (cachedComponentName) {\n const preSource = extractViewBody(source) ?? ''\n const msgMaskMap: Record<string, number> = {}\n for (const [path, bit] of fieldBits) {\n msgMaskMap[path] = bit\n }\n compilerCache.set(cachedComponentName, {\n preSource,\n postSource: '',\n msgMaskMap,\n bindingSources: [],\n })\n }\n }\n if (devMode) {\n result = injectComponentMeta(result ?? node, node, sourceFile, _filename, f)\n }\n\n // __schemaHash is always emitted (not dev-gated) — runtime uses it to\n // gate hello-frame re-sends during hot-reload in prod builds too.\n const schemaHash = computeSchemaHash({\n msgSchema: msgSchema ?? null,\n stateSchema: stateSchema ?? null,\n msgAnnotations,\n })\n result = injectSchemaHash(result ?? node, schemaHash, f)\n\n if (result) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(result, visitor, undefined!)\n }\n }\n\n return ts.visitEachChild(node, visitor, undefined!)\n }\n\n let transformed = ts.visitNode(sourceFile, visitor) as ts.SourceFile\n\n // Pass 3: Clean up imports — use the old cleanupImports approach\n // which operates on the transformed SourceFile safely\n const safeToRemove = new Set([...compiledHelpers].filter((h) => !bailedHelpers.has(h)))\n transformed = cleanupImports(\n transformed,\n lluiImport,\n importedHelpers,\n safeToRemove,\n usesElSplit,\n usesElTemplate,\n usesMemo,\n usesApplyBinding,\n usesCloneStaticTemplate,\n scopeRegistrationsInjected,\n f,\n )\n\n if (edits.length === 0) return null\n\n // Find component declarations for HMR and agent metadata\n const componentDecls =\n devMode || emitAgentMetadata ? findComponentDeclarations(sourceFile, lluiImport) : []\n\n // Build per-statement edits by comparing original vs transformed.\n // Only emit edits for statements that actually changed.\n // Untouched code keeps its original positions → accurate source maps.\n const finalEdits: TransformEdit[] = []\n const origStmts = sourceFile.statements\n const xfStmts = transformed.statements\n\n for (let i = 0; i < origStmts.length && i < xfStmts.length; i++) {\n const origStart = origStmts[i]!.getStart(sourceFile)\n const origEnd = origStmts[i]!.getEnd()\n const origText = source.slice(origStart, origEnd)\n\n let xfText: string\n try {\n xfText = printer.printNode(ts.EmitHint.Unspecified, xfStmts[i]!, transformed)\n } catch {\n // Synthetic nodes may fail to print individually — fall back to full reprint\n const { top: _top, bottom: _bottom } = devMode\n ? generateDevCode(componentDecls, mcpPort)\n : { top: '', bottom: '' }\n let output =\n (_top ? _top + '\\n' : '') + printer.printFile(transformed) + (_bottom ? '\\n' + _bottom : '')\n if (devMode || emitAgentMetadata) {\n output = appendCompilerCacheProps(output, componentDecls)\n }\n return { output, edits: [{ start: 0, end: source.length, replacement: output }] }\n }\n\n // Compare ignoring trailing semicolons and whitespace (printer adds them)\n const origNorm = origText.trim().replace(/;$/, '')\n const xfNorm = xfText.trim().replace(/;$/, '')\n if (origNorm !== xfNorm) {\n // Match the original style: if the original didn't end with a semicolon,\n // strip the one the printer added\n const origHasSemi = origText.trimEnd().endsWith(';')\n const replacement = origHasSemi ? xfText : xfText.replace(/;(\\s*)$/, '$1')\n finalEdits.push({ start: origStart, end: origEnd, replacement })\n }\n }\n\n // Dev setup: enable* must run BEFORE user's mountApp (top of file),\n // but import.meta.hot.accept needs to reference user's component vars\n // (bottom of file). So split the injection.\n if (devMode) {\n const { top, bottom } = generateDevCode(componentDecls, mcpPort)\n if (top) finalEdits.push({ start: 0, end: 0, replacement: top + '\\n' })\n if (bottom)\n finalEdits.push({ start: source.length, end: source.length, replacement: '\\n' + bottom })\n }\n\n if (finalEdits.length === 0) return null\n\n // Build the full output by applying edits (for backward compat)\n const sorted = [...finalEdits].sort((a, b) => b.start - a.start)\n let output = source\n for (const edit of sorted) {\n output = output.slice(0, edit.start) + edit.replacement + output.slice(edit.end)\n }\n\n // After output is assembled, update postSource in cache and emit non-enumerable props\n if ((devMode || emitAgentMetadata) && componentDecls.length > 0) {\n const cacheProps = appendCompilerCacheProps(output, componentDecls)\n if (cacheProps !== output) {\n output = cacheProps\n }\n }\n\n return { output, edits: finalEdits }\n}\n\n// ── HMR ──────────────────────────────────────────────────────────\n\nfunction generateDevCode(\n components: Array<{ varName: string; componentName: string }>,\n mcpPort: number | null,\n): { top: string; bottom: string } {\n if (components.length === 0) {\n return {\n top: '',\n bottom: `if (import.meta.hot) {\\n import.meta.hot.accept()\\n}`,\n }\n }\n\n const relayImport = mcpPort !== null ? ', startRelay as __startRelay' : ''\n const relayCall = mcpPort !== null ? `\\n__startRelay(${mcpPort})` : ''\n\n const top = `\nimport { enableHmr as __enableHmr, replaceComponent as __replaceComponent } from '@llui/dom/hmr'\nimport { enableDevTools as __enableDevTools${relayImport} } from '@llui/dom/devtools'\n__enableHmr()\n__enableDevTools()${relayCall}\n`.trim()\n\n const replaceCalls = components\n .map(({ varName, componentName }) => ` __replaceComponent(\"${componentName}\", ${varName})`)\n .join('\\n')\n\n // HMR auto-connect: when the Vite plugin detects that @llui/mcp's\n // active marker file exists or appears, it sends `llui:mcp-ready`\n // with the MCP bridge port. We forward that to __lluiConnect so the\n // browser connects automatically — no console gymnastics, no retry\n // spam, regardless of whether MCP or Vite started first.\n const mcpHmrHandler =\n mcpPort !== null\n ? `\n import.meta.hot.on('llui:mcp-ready', (data) => {\n if (typeof globalThis.__lluiConnect === 'function') {\n globalThis.__lluiConnect(data?.port)\n }\n })`\n : ''\n\n const bottom = `\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n${replaceCalls}\n })${mcpHmrHandler}\n}\n`.trim()\n\n return { top, bottom }\n}\n\n/** Find all component() calls and extract the variable name and component name */\nfunction findComponentDeclarations(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n): Array<{ varName: string; componentName: string }> {\n const result: Array<{ varName: string; componentName: string }> = []\n\n function visit(node: ts.Node): void {\n // Match: const Foo = component({ name: 'Foo', ... })\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.initializer &&\n ts.isCallExpression(node.initializer) &&\n isComponentCall(node.initializer, lluiImport)\n ) {\n const varName = node.name.text\n const config = node.initializer.arguments[0]\n if (config && ts.isObjectLiteralExpression(config)) {\n for (const prop of config.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n result.push({ varName, componentName: prop.initializer.text })\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sf)\n return result\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nfunction findLluiImport(sf: ts.SourceFile): ts.ImportDeclaration | null {\n for (const stmt of sf.statements) {\n if (\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom'\n ) {\n return stmt\n }\n }\n return null\n}\n\nfunction getImportedHelpers(imp: ts.ImportDeclaration): Map<string, string> {\n const map = new Map<string, string>()\n const clause = imp.importClause\n if (!clause || !clause.namedBindings || !ts.isNamedImports(clause.namedBindings)) return map\n\n for (const spec of clause.namedBindings.elements) {\n const original = (spec.propertyName ?? spec.name).text\n const local = spec.name.text\n if (ELEMENT_HELPERS.has(original)) {\n map.set(local, original)\n }\n }\n return map\n}\n\nfunction hasReactiveAccessors(sf: ts.SourceFile): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (node.expression.text === 'text' || node.expression.text === 'component') {\n found = true\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\nfunction hasComponentDef(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n found = true\n return\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\n/**\n * Scan for `component({ view: (h) => ... })` arrow functions and collect\n * the identifier name used as the View-bundle parameter. When the user\n * writes `h.show(...)` / `h.text(...)` inside the view, the compiler treats\n * it the same as bare `show(...)` / `text(...)` for mask injection.\n */\nfunction collectViewHelperNames(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): Set<string> {\n const names = new Set<string>()\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isIdentifier(first.name)) {\n names.add(first.name.text)\n }\n }\n }\n }\n }\n }\n // Also: any function parameter annotated as `View<...>` — covers extracted\n // view-functions like `function repoPage(h: View<State, Msg>, ...)`.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isIdentifier(node.name)\n ) {\n names.add(node.name.text)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return names\n}\n\nfunction isViewTypeReference(t: ts.TypeNode): boolean {\n return ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName) && t.typeName.text === 'View'\n}\n\n/**\n * Scan for `component({ view: ({ show, each, text, ... }) => ... })`\n * destructured parameters and return a map from the locally-bound name to\n * the primitive name it aliases. This lets users write the bare `show(...)` /\n * `text(...)` forms without importing them, while the compiler still\n * applies mask injection etc.\n *\n * view: ({ show, text: t }) => [...]\n * // returns { show → \"show\", t → \"text\" }\n */\nconst VIEW_HELPER_PRIMITIVES = new Set([\n 'show',\n 'branch',\n 'scope',\n 'each',\n 'text',\n 'memo',\n 'sample',\n 'selector',\n 'ctx',\n 'slice',\n 'send',\n])\n\nfunction collectViewHelperAliases(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n helperNames: Set<string>,\n): Map<string, string> {\n const aliases = new Map<string, string>()\n function addFromBindingPattern(pattern: ts.ObjectBindingPattern): void {\n for (const elem of pattern.elements) {\n // { show } → propertyName=undefined, name=show\n // { show: mySh } → propertyName=show, name=mySh\n const sourceName =\n elem.propertyName && ts.isIdentifier(elem.propertyName)\n ? elem.propertyName.text\n : ts.isIdentifier(elem.name)\n ? elem.name.text\n : null\n const localName = ts.isIdentifier(elem.name) ? elem.name.text : null\n if (sourceName && localName && VIEW_HELPER_PRIMITIVES.has(sourceName)) {\n aliases.set(localName, sourceName)\n }\n }\n }\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isObjectBindingPattern(first.name)) {\n addFromBindingPattern(first.name)\n }\n }\n }\n }\n }\n }\n // Also: function parameters like `(…, { show, text }: View<State, Msg>) => …`\n // on extracted helpers — allow the same destructuring ergonomics.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isObjectBindingPattern(node.name)\n ) {\n addFromBindingPattern(node.name)\n }\n // Also: `const { show, text } = h` assignments where `h` is a known\n // helper binding — lets helpers destructure once at the top of the\n // function body.\n if (\n ts.isVariableDeclaration(node) &&\n ts.isObjectBindingPattern(node.name) &&\n node.initializer &&\n ts.isIdentifier(node.initializer) &&\n helperNames.has(node.initializer.text)\n ) {\n addFromBindingPattern(node.name)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return aliases\n}\n\nfunction isComponentCall(node: ts.CallExpression, lluiImport: ts.ImportDeclaration): boolean {\n if (!ts.isIdentifier(node.expression)) return false\n const name = node.expression.text\n if (name !== 'component') return false\n // Verify it's from the llui import\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return false\n return clause.namedBindings.elements.some(\n (s) => s.name.text === 'component' || (s.propertyName && s.propertyName.text === 'component'),\n )\n}\n\nfunction emitStaticProp(\n staticProps: ts.Statement[],\n f: ts.NodeFactory,\n kind: BindingKind,\n resolvedKey: string,\n value: ts.Expression,\n): void {\n switch (kind) {\n case 'class':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'className'),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'prop':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), resolvedKey),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'style':\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'style'),\n 'setProperty',\n ),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n break\n default: // attr\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'setAttribute'),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n }\n}\n\n// ── Pass 1: Element → elSplit ────────────────────────────────────\n\nfunction tryTransformElementCall(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n compiled: Set<string>,\n bailed: Set<string>,\n f: ts.NodeFactory,\n fieldBitsHi: Map<string, number> = new Map(),\n): ts.CallExpression | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const originalName = helpers.get(localName)\n if (!originalName) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // Normalize to props=undefined, children=firstArg so downstream logic works.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) {\n bailed.add(localName)\n return null\n }\n // Bail on spread assignments (`...parts.root`) — the compiler cannot\n // statically classify spread contents, and silently dropping them would\n // break consumers (e.g. @llui/components parts spreading). Fall back to\n // the runtime element helper so spreads are applied normally.\n if (\n propsArg &&\n ts.isObjectLiteralExpression(propsArg) &&\n propsArg.properties.some((p) => ts.isSpreadAssignment(p))\n ) {\n bailed.add(localName)\n return null\n }\n\n const tag = f.createStringLiteral(originalName)\n\n // Classify props\n const staticProps: ts.Statement[] = []\n const events: ts.ArrayLiteralExpression[] = []\n const bindings: ts.ArrayLiteralExpression[] = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n // Handle both PropertyAssignment (key: value) and ShorthandPropertyAssignment ({ id })\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) continue\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name // The identifier itself is the value\n } else {\n continue\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n const eventName = key.slice(2).toLowerCase()\n events.push(f.createArrayLiteralExpression([f.createStringLiteral(eventName), value]))\n continue\n }\n\n // Per-item shapes — handled before the general classifier because\n // they appear inside `each().render` callbacks where `item` is a\n // closed-over per-row accessor (zero-arg). The resolver above can't\n // see them; they're shape-matched syntactically.\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Classify the value at a reactive-prop position:\n // - inline arrow / fn-expr at the call site\n // - inline `memo(arrow)` at the call site\n // - Identifier referencing a const-bound arrow/fn-expr in scope\n // - Identifier referencing a hoisted function declaration in scope\n // - Identifier referencing `const x = memo(arrow)` in scope\n // - Identifier referencing a static primitive literal\n // - Anything else (imports, parameters, opaque expressions) — bail\n // to runtime; the runtime helper handles `typeof v === 'function'`\n // correctly for both function and primitive values.\n const classified = classifyReactiveValue(value)\n if (classified === null) {\n // Unknown shape (a CallExpression that isn't memo/per-item, etc.)\n // — historically bailed to runtime. Preserve that.\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'bail') {\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'static-literal') {\n // Fall through to emitStaticProp (`__e.disabled = X`). Safe because\n // we proved X is a primitive.\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n emitStaticProp(staticProps, f, kind, resolvedKey, value)\n continue\n }\n // 'arrow' | 'fn-decl' | 'memo-call' — emit as a binding tuple. Mask is\n // analyzed from the resolved accessor body (or the inner arrow inside\n // a memo() call); the value emitted into the binding tuple is what the\n // runtime calls as `accessor(state)` — for inline arrows we keep the\n // arrow itself (preserves the historical inlining behavior), for\n // identifier-bound forms we keep the identifier so consumers see\n // a single canonical reference (and `memo()` proxies aren't rebuilt\n // per render).\n {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n classified.accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n\n // Zero-mask constant folding only applies to inline arrows whose body\n // we can safely call at compile time. For identifier-bound forms\n // (`accessor !== value`) we skip the fold — calling the identifier's\n // declaration at compile time would be unsafe (different scope) and\n // calling the identifier in the emitted output would defeat the point.\n if (\n classified.kind === 'arrow' &&\n classified.accessor === value &&\n mask === 0 &&\n maskHi === 0 &&\n !readsState\n ) {\n emitStaticProp(\n staticProps,\n f,\n kind,\n resolvedKey,\n f.createCallExpression(classified.accessor, undefined, []),\n )\n continue\n }\n\n const effectiveMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n // Emit a 5-tuple only when the accessor reads a high-word\n // prefix (positions 31..61). For the common ≤31-prefix case\n // the emit stays byte-identical to the pre-multi-word baseline,\n // and stale runtime bundles ignore the 5th slot.\n const tupleEls = [\n createMaskLiteral(f, effectiveMask),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n classified.valueForBinding,\n ]\n if (maskHi !== 0) tupleEls.push(createMaskLiteral(f, maskHi))\n bindings.push(f.createArrayLiteralExpression(tupleEls))\n }\n }\n }\n\n // Build elSplit args\n const staticFn =\n staticProps.length > 0\n ? f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(staticProps, true),\n )\n : f.createNull()\n\n const eventsArr = events.length > 0 ? f.createArrayLiteralExpression(events) : f.createNull()\n\n const bindingsArr =\n bindings.length > 0 ? f.createArrayLiteralExpression(bindings) : f.createNull()\n\n const children = usesChildrenOnlyOverload\n ? node.arguments[0]!\n : (node.arguments[1] ?? f.createNull())\n\n compiled.add(localName)\n\n // Subtree collapse: if children contain nested element helpers,\n // collapse the entire tree into a single elTemplate() call\n const analyzed = analyzeSubtree(node, helpers, fieldBits, [], fieldBitsHi)\n if (analyzed && hasNestedElements(analyzed)) {\n // Mark all descendant helpers as compiled for import cleanup\n collectUsedHelpers(analyzed, compiled)\n const templateCall = emitSubtreeTemplate(analyzed, fieldBits, f)\n return templateCall\n }\n\n // Static subtree prerendering: if no events, no bindings, and children\n // are all static text, emit a <template> clone\n if (events.length === 0 && bindings.length === 0 && isStaticChildren(children)) {\n const html = buildStaticHTML(originalName, staticProps, children, f)\n if (html) {\n return emitTemplateClone(html, f) as ts.CallExpression\n }\n }\n\n const call = f.createCallExpression(f.createIdentifier('elSplit'), undefined, [\n tag,\n staticFn,\n eventsArr,\n bindingsArr,\n children,\n ])\n ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false)\n return call\n}\n\n// ── Pass 2: Mask injection ───────────────────────────────────────\n\n/**\n * Match a call expression against a primitive name across all three binding\n * forms:\n * - bare imported identifier: `name(...)` where `name` was imported from @llui/dom\n * - destructured alias: `name(...)` where `name` is bound via\n * `view: (_, { name }) => ...` (or `{ name: alias }`)\n * - member call: `<h>.name(...)` where `<h>` is the 2nd view parameter\n *\n * The compiler treats all three identically for mask injection / each()\n * optimization purposes.\n */\nfunction isHelperCall(\n expr: ts.Expression,\n name: string,\n helperNames: Set<string>,\n aliases?: Map<string, string>,\n): boolean {\n if (ts.isIdentifier(expr)) {\n if (expr.text === name) return true\n if (aliases && aliases.get(expr.text) === name) return true\n return false\n }\n if (\n ts.isPropertyAccessExpression(expr) &&\n ts.isIdentifier(expr.expression) &&\n helperNames.has(expr.expression.text) &&\n ts.isIdentifier(expr.name) &&\n expr.name.text === name\n ) {\n return true\n }\n return false\n}\n\nfunction tryInjectTextMask(\n node: ts.CallExpression,\n lluiImport: ts.ImportDeclaration,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (!isHelperCall(node.expression, 'text', viewHelperNames, viewHelperAliases)) {\n return null\n }\n\n // For a bare identifier `text`, verify it actually resolves to the @llui/dom\n // import (otherwise a user-defined `text` in scope would be rewritten).\n // Destructured-alias and member-expression forms are already provenance-safe.\n if (ts.isIdentifier(node.expression) && !viewHelperAliases.has(node.expression.text)) {\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return null\n const hasText = clause.namedBindings.elements.some(\n (s) => s.name.text === 'text' || s.propertyName?.text === 'text',\n )\n if (!hasText) return null\n }\n\n const firstArg = node.arguments[0]\n if (!firstArg) return null\n // Don't inject if mask already provided\n if (node.arguments.length >= 2) return null\n // Resolve the accessor body — accepts inline arrows, `memo(arrow)`, or\n // identifier references to a const-bound arrow / `memo(...)` / function\n // declaration in scope. Anything else (static strings, opaque imports,\n // parameters) leaves the call as-is — the runtime falls back to\n // FULL_MASK, which is correct but slower.\n const accessor = resolveAccessorBody(firstArg)\n if (!accessor) return null\n\n const { mask } = computeAccessorMask(accessor, fieldBits)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n firstArg,\n createMaskLiteral(f, mask === 0 ? 0xffffffff | 0 : mask),\n ])\n}\n\n/**\n * Inject `__mask` into the options object of each()/branch()/show() calls.\n *\n * Analyzes the driving accessor (`items` for each, `on` for branch, `when`\n * for show) and computes the bitmask of state fields it reads. The runtime\n * uses this to skip Phase 1 reconciliation when irrelevant state changed\n * (e.g., each() that reads `rows` is skipped when only `selected` changed).\n */\nfunction tryInjectStructuralMask(\n node: ts.CallExpression,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (fieldBits.size === 0) return null\n\n // Match each(), branch(), scope(), show() — bare, aliased, or member-call\n const isEach = isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n const isBranch = isHelperCall(node.expression, 'branch', viewHelperNames, viewHelperAliases)\n const isScope = isHelperCall(node.expression, 'scope', viewHelperNames, viewHelperAliases)\n const isShow = isHelperCall(node.expression, 'show', viewHelperNames, viewHelperAliases)\n if (!isEach && !isBranch && !isScope && !isShow) return null\n\n const optsArg = node.arguments[0]\n if (!optsArg || !ts.isObjectLiteralExpression(optsArg)) return null\n\n // Already has __mask\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n return null\n }\n }\n\n // Find the driving accessor property: items / on / when\n // each → 'items', branch/scope → 'on', show → 'when'\n const driverProp = isEach ? 'items' : isBranch || isScope ? 'on' : 'when'\n let driverAccessor: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration | null =\n null\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n // Same shape contract as `text()`'s first arg: inline arrow, inline\n // `memo(arrow)`, or identifier referencing a const-bound arrow /\n // memo / function declaration. Anything else leaves the call\n // unchanged — runtime falls back to FULL_MASK.\n driverAccessor = resolveAccessorBody(prop.initializer)\n break\n }\n }\n\n if (!driverAccessor) return null\n\n const { mask } = computeAccessorMask(driverAccessor, fieldBits)\n if (mask === 0 || mask === (0xffffffff | 0)) return null // no benefit\n\n // Inject __mask into the options object\n const maskProp = f.createPropertyAssignment('__mask', createMaskLiteral(f, mask))\n const newProps = [...optsArg.properties, maskProp]\n const newOpts = f.createObjectLiteralExpression(newProps, optsArg.properties.hasTrailingComma)\n return f.createCallExpression(node.expression, node.typeArguments, [\n newOpts,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction tryInjectDirty(\n node: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n fieldBitsHi: Map<string, number> = new Map(),\n): ts.CallExpression | null {\n if (fieldBits.size === 0 && fieldBitsHi.size === 0) return null\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n\n // Check if __dirty already exists\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__dirty'\n ) {\n return null\n }\n }\n\n // Build __dirty: (o, n) => (Object.is(o.field, n.field) ? 0 : bit) | ...\n // Compare at top-level field (depth 1) — nested path changes within a\n // field must trigger the bit even if the specific sub-path isn't tracked.\n // e.g., route.page tracked but route.data changes → must fire.\n const topLevelBits = new Map<string, number>()\n for (const [path, bit] of fieldBits) {\n const topField = path.split('.')[0]!\n topLevelBits.set(topField, (topLevelBits.get(topField) ?? 0) | bit)\n }\n // Parallel high-word map: top-level fields whose paths fall at bit\n // positions 31..61 contribute here instead of (or in addition to)\n // `topLevelBits`. A field with sub-paths split across both words —\n // e.g., `user.name` at position 30 and `user.email` at position 31 —\n // ends up in both maps under the same top-level key.\n const topLevelBitsHi = new Map<string, number>()\n for (const [path, bit] of fieldBitsHi) {\n const topField = path.split('.')[0]!\n topLevelBitsHi.set(topField, (topLevelBitsHi.get(topField) ?? 0) | bit)\n }\n\n const comparisons: ts.Expression[] = []\n for (const [field, bit] of topLevelBits) {\n const oAccess = buildAccess(f, 'o', [field])\n const nAccess = buildAccess(f, 'n', [field])\n\n comparisons.push(\n f.createParenthesizedExpression(\n f.createConditionalExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Object'), 'is'),\n undefined,\n [oAccess, nAccess],\n ),\n f.createToken(ts.SyntaxKind.QuestionToken),\n f.createNumericLiteral(0),\n f.createToken(ts.SyntaxKind.ColonToken),\n createMaskLiteral(f, bit),\n ),\n ),\n )\n }\n\n let dirtyBody: ts.Expression = comparisons[0]!\n for (let i = 1; i < comparisons.length; i++) {\n dirtyBody = f.createBinaryExpression(dirtyBody, ts.SyntaxKind.BarToken, comparisons[i]!)\n }\n\n // Fallback: if no tracked bit fired but the state reference changed, some\n // untracked field must have changed — return FULL_MASK so bindings whose\n // accessors came from external modules (spread parts) still fire.\n // tracked || (Object.is(o, n) ? 0 : FULL_MASK)\n const fallback = f.createParenthesizedExpression(\n f.createConditionalExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Object'), 'is'),\n undefined,\n [f.createIdentifier('o'), f.createIdentifier('n')],\n ),\n f.createToken(ts.SyntaxKind.QuestionToken),\n f.createNumericLiteral(0),\n f.createToken(ts.SyntaxKind.ColonToken),\n createMaskLiteral(f, -1),\n ),\n )\n dirtyBody = f.createBinaryExpression(\n f.createParenthesizedExpression(dirtyBody),\n ts.SyntaxKind.BarBarToken,\n fallback,\n )\n\n const dirtyFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'o'),\n f.createParameterDeclaration(undefined, undefined, 'n'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n dirtyBody,\n )\n\n const dirtyProp = f.createPropertyAssignment('__dirty', dirtyFn)\n\n // __maskLegend: maps each top-level state field to the bit(s) that fire when\n // it changes. Lets introspection tools decode runtime dirty masks to field names.\n const legendProps: ts.PropertyAssignment[] = []\n for (const [field, bit] of topLevelBits) {\n // Use string literal — state field names declared via string keys\n // (e.g. `{ \"weird-key\": ... }`) would otherwise emit as bare\n // identifiers and break the printed output.\n legendProps.push(\n f.createPropertyAssignment(f.createStringLiteral(field), createMaskLiteral(f, bit)),\n )\n }\n const legendProp = f.createPropertyAssignment(\n '__maskLegend',\n f.createObjectLiteralExpression(legendProps, false),\n )\n\n // Structural mask — used by both __update and __handlers\n const structuralMask = computeStructuralMask(configArg, fieldBits)\n const phase2Mask = computePhase2Mask(configArg, fieldBits)\n\n const updateBody = buildUpdateBody(f, structuralMask, phase2Mask)\n // `dHi` is the high-word dirty mask, appended as the trailing\n // positional arg so stale 5-param compiled bundles continue to gate\n // correctly: the runtime calls `__update(s, d, b, bl, p, dHi)`,\n // old bundles' 5-param arrow ignores the extra arg (for ≤31-prefix\n // components dHi is always 0 anyway). New bundles use it for\n // precise two-word Phase 1 gating.\n const updateFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 's'),\n f.createParameterDeclaration(undefined, undefined, 'd'),\n f.createParameterDeclaration(undefined, undefined, 'b'),\n f.createParameterDeclaration(undefined, undefined, 'bl'),\n f.createParameterDeclaration(undefined, undefined, 'p'),\n f.createParameterDeclaration(\n undefined,\n undefined,\n 'dHi',\n undefined,\n undefined,\n f.createNumericLiteral(0),\n ),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n updateBody,\n )\n const updateProp = f.createPropertyAssignment('__update', updateFn)\n\n // __handlers: per-message-type specialized update functions.\n // Analyzes the update() switch/case and generates direct handlers\n // that bypass the generic Phase 1/2 pipeline for single-message updates.\n const handlersProp = tryBuildHandlers(configArg, topLevelBits, topLevelBitsHi, structuralMask, f)\n\n // Both `__update` and `__handlers` carry two-word gates now —\n // `__update`'s Phase 1 block loop uses `(mask & d) | (maskHi & dHi)`\n // with `dHi` as the trailing parameter (defaults to 0 for backward\n // compat with old 5-arg call sites), and `__handlers` passes\n // `caseDirtyHi` to `_handleMsg` which gates blocks against both\n // words. Safe to emit for any prefix count.\n // `__dirty` emission was removed in 2026-05: `__prefixes` is strictly\n // more precise (per-prefix rather than per-top-level-field), supports\n // 62 paths via two-word masks, and the runtime throws if it sees a\n // hand-authored `__dirty`. `legendProp` (`__maskLegend`) is still\n // emitted for the agent layer's introspection — it surfaces the\n // top-level-field-to-bit mapping for `whyDidUpdate` / dispatch\n // tracing without depending on `__dirty` at runtime.\n void dirtyFn\n void dirtyProp\n const extraProps: ts.ObjectLiteralElementLike[] = [legendProp, updateProp]\n if (handlersProp) extraProps.push(handlersProp)\n\n // __prefixes: opt-in path-keyed reactivity (see\n // docs/proposals/unified-composition-model.md). One closure per\n // distinct path that an accessor reads, hoisted into a stable array;\n // the array position IS the bit position used by the path's bindings.\n // The runtime prefers __prefixes when present and computes the\n // combinedDirty mask by reference-comparing `prefix(prev)` vs\n // `prefix(next)` for each entry — strictly more precise than the\n // top-level-conflated __dirty (which always co-fires bindings sharing\n // a top-level field even when only one sub-path actually mutated).\n //\n // Emit `__prefixes` whenever any reactive paths are present. For\n // components with ≤31 paths, the runtime's\n // `computeDirtyFromPrefixes` returns a single `number`; for\n // 32..61-path components it returns a `[lo, hi]` tuple that the\n // runtime fans out into `combinedDirty` + `combinedDirtyHi`. The\n // binding-level mask gating is still single-word at the compiler\n // emit layer today, so high-position bindings still re-evaluate\n // every cycle — but the dirty computation itself is now precise,\n // which lets memo()'d aggregates short-circuit correctly.\n const prefixesProp = buildPrefixesProp(fieldBits, fieldBitsHi, f)\n if (prefixesProp) extraProps.push(prefixesProp)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, ...extraProps], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n/**\n * Analyze update() switch/case and generate per-message-type handlers.\n *\n * Each handler receives (inst, msg) and returns [newState, effects].\n * The handler calls update() to get the new state, then directly invokes\n * the appropriate runtime primitives (reconcileItems, __directUpdate, etc.)\n * instead of going through the generic Phase 1/2 pipeline.\n *\n * Conservative: only generates handlers for cases where the field\n * modifications are statically determinable. Complex cases are skipped.\n */\nfunction tryBuildHandlers(\n configArg: ts.ObjectLiteralExpression,\n topLevelBits: Map<string, number>,\n topLevelBitsHi: Map<string, number>,\n structuralMask: number,\n f: ts.NodeFactory,\n): ts.PropertyAssignment | null {\n if (topLevelBits.size === 0 && topLevelBitsHi.size === 0) return null\n\n // Find the update function in the component config\n let updateFn: ts.ArrowFunction | ts.FunctionExpression | null = null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'update'\n ) {\n if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) {\n updateFn = prop.initializer\n }\n break\n }\n }\n if (!updateFn) return null\n\n // Find the switch statement in the update body\n const body = ts.isBlock(updateFn.body) ? updateFn.body : null\n if (!body) return null\n\n let switchStmt: ts.SwitchStatement | null = null\n for (const stmt of body.statements) {\n if (ts.isSwitchStatement(stmt)) {\n switchStmt = stmt\n break\n }\n }\n if (!switchStmt) return null\n\n // Check the switch discriminant is msg.type pattern\n const stateParam = updateFn.parameters[0]?.name\n const msgParam = updateFn.parameters[1]?.name\n if (!stateParam || !msgParam || !ts.isIdentifier(stateParam) || !ts.isIdentifier(msgParam))\n return null\n const stateName = stateParam.text\n const _msgName = msgParam.text\n\n // Analyze each case clause\n const handlers: ts.PropertyAssignment[] = []\n\n for (const clause of switchStmt.caseBlock.clauses) {\n if (!ts.isCaseClause(clause)) continue\n\n // Extract the case label — must be a string literal like 'select'\n if (!ts.isStringLiteral(clause.expression)) continue\n const msgType = clause.expression.text\n\n // Collect ALL return [newState, effects] statements recursively from the\n // case body. Multiple returns (from if/else branches) must all be analyzed\n // so the handler's dirty mask covers every possible modified field.\n const returnExprs: ts.ArrayLiteralExpression[] = []\n const collectReturns = (node: ts.Node): void => {\n if (\n ts.isReturnStatement(node) &&\n node.expression &&\n ts.isArrayLiteralExpression(node.expression) &&\n node.expression.elements.length >= 2\n ) {\n returnExprs.push(node.expression)\n return\n }\n // Don't descend into nested functions — their returns are unrelated.\n if (\n ts.isFunctionDeclaration(node) ||\n ts.isFunctionExpression(node) ||\n ts.isArrowFunction(node) ||\n ts.isMethodDeclaration(node)\n ) {\n return\n }\n ts.forEachChild(node, collectReturns)\n }\n for (const stmt of clause.statements) {\n collectReturns(stmt)\n }\n if (returnExprs.length === 0) continue\n\n // Union modified fields across all return paths.\n const allModified = new Set<string>()\n let bailOut = false\n for (const returnExpr of returnExprs) {\n const stateExpr = returnExpr.elements[0]!\n const fields = analyzeModifiedFields(stateExpr, stateName, topLevelBits, topLevelBitsHi)\n if (!fields) {\n bailOut = true\n break\n }\n for (const f of fields) allModified.add(f)\n }\n if (bailOut) continue // at least one return path was too complex\n\n const modifiedFields = Array.from(allModified)\n\n // Compute the dirty mask for this case across both words. Fields\n // tracked in `topLevelBitsHi` contribute to `caseDirtyHi`; fields\n // tracked nowhere (`undefined` lookup in both) fall back to\n // FULL_MASK in the low word — same conservative behavior as\n // before, just preserved per-word now.\n let caseDirty = 0\n let caseDirtyHi = 0\n for (const field of modifiedFields) {\n const lo = topLevelBits.get(field)\n const hi = topLevelBitsHi.get(field)\n if (lo === undefined && hi === undefined) {\n caseDirty |= 0xffffffff | 0\n } else {\n if (lo !== undefined) caseDirty |= lo\n if (hi !== undefined) caseDirtyHi |= hi\n }\n }\n\n // Detect array operation pattern for structural block optimization\n const arrayOp = detectArrayOp(clause, stateName, modifiedFields, structuralMask, caseDirty)\n\n const handler = buildCaseHandler(f, caseDirty, caseDirtyHi, arrayOp)\n handlers.push(f.createPropertyAssignment(f.createStringLiteral(msgType), handler))\n }\n\n if (handlers.length === 0) return null\n\n return f.createPropertyAssignment('__handlers', f.createObjectLiteralExpression(handlers, true))\n}\n\ntype ArrayOp =\n | 'none'\n | 'clear'\n | 'mutate'\n | 'remove'\n | 'general'\n | { type: 'strided'; stride: number } // for (i = 0; i < len; i += stride) pattern\n\n/**\n * Detect the array operation pattern in a case body.\n * - 'none': no array field modified (e.g., only `selected` changes)\n * - 'clear': array set to empty literal `[]`\n * - 'mutate': array created via `.slice()` then mutated in place (same keys)\n * - 'general': unknown pattern, use generic reconcile\n */\nfunction detectArrayOp(\n clause: ts.CaseClause,\n stateName: string,\n modifiedFields: string[],\n _structuralMask?: number,\n _caseDirty?: number,\n): ArrayOp {\n // No fields modified → no Phase 1 needed (no bindings can care if no\n // state field changed). Safe to return 'none' here because it's a\n // tautology: every binding mask ANDed with zero is zero.\n if (modifiedFields.length === 0) return 'none'\n\n // The specialized methods (`reconcileClear`, `reconcileItems`,\n // `reconcileRemove`, `reconcileChanged`) only exist on `each` blocks.\n // Non-each blocks (`show`, `branch`, `scope`) leave them undefined,\n // so a method other than 0 (general reconcile) silently no-ops on\n // those blocks at runtime. If the case modifies fields BEYOND the\n // array op (e.g. `{ ...state, open: true, name: '', tags: [] }`),\n // any show/branch block whose mask intersects the case's dirty bits\n // would be selected for reconcile but then skipped by the no-op\n // method invocation — its `when`/`on` accessor never re-evaluates,\n // and the component appears structurally inert after mount.\n //\n // Conservative correctness: only emit a non-general method when the\n // array op is the SOLE field modification. With one modified field,\n // the only blocks selected by mask gating are ones that read that\n // single field — and the optimization is well-defined for that\n // narrow case (each blocks operating on the array). Multi-field\n // cases fall through to `'general'` (method=0), so every selected\n // block runs the standard `reconcile` path. We trade a niche\n // optimization (small benefit even when applicable) for guaranteed\n // structural reconciliation across the framework's primitive set.\n //\n // Sister of show-helper-reconcile.test.ts, which fixed the same\n // class of bug on the method=-1 path. Same architectural principle:\n // the compiler can't see every block in the view, so optimizations\n // that route around `reconcile` must be ironclad. When in doubt,\n // emit method=0 and let `_handleMsg`'s per-block mask gate filter.\n //\n // Previously: if `(structuralMask & caseDirty) === 0`, return 'none'\n // on the theory that no structural block's mask could intersect this\n // case's dirty bits. That optimization was UNSAFE: `computeStructuralMask`\n // only walks the view function's lexical AST and does not descend into\n // helper function calls. A view like\n //\n // view: () => [\n // ...show({ when: s => s.mode === 'signin', render: () => [signinFormBody()] }),\n // ]\n //\n // where `signinFormBody()` is a helper that internally does\n // ...show({ when: s => s.errors.email !== undefined, ... })\n //\n // produces a `structuralMask` that covers `mode` but MISSES\n // `errors.email`. At runtime the inner show block is still registered\n // in `inst.structuralBlocks`, and it legitimately needs to reconcile\n // when `errors` changes — but the compiler was emitting `method = -1`\n // (skip blocks entirely) for cases that only touch `errors`, and the\n // error paragraphs would never mount.\n if (modifiedFields.length !== 1) return 'general'\n const onlyField = modifiedFields[0]!\n\n // Look at the return expression's array field values\n for (const stmt of clause.statements) {\n const returnExpr = findReturnArray(stmt)\n if (!returnExpr) continue\n\n const stateExpr = returnExpr.elements[0]\n if (!stateExpr || !ts.isObjectLiteralExpression(stateExpr)) continue\n\n for (const prop of stateExpr.properties) {\n const name =\n ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)\n ? prop.name.text\n : ts.isShorthandPropertyAssignment(prop)\n ? prop.name.text\n : null\n if (!name) continue\n // The optimization only applies when the array op is on the\n // single tracked field. A `field: []` on a different field\n // (one not in modifiedFields, e.g. an untracked field) would\n // still no-op safely on each blocks via the mask gate, but to\n // keep the analysis tight we require an exact match.\n if (name !== onlyField) continue\n\n // Check for empty array literal: `field: []`\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isArrayLiteralExpression(prop.initializer) &&\n prop.initializer.elements.length === 0\n ) {\n return 'clear'\n }\n\n // Check for shorthand `field` where field was assigned via `.slice()` earlier\n // This catches: `const rows = state.rows.slice(); rows[i] = ...; return { ...state, rows }`\n if (ts.isShorthandPropertyAssignment(prop)) {\n const varName = prop.name.text\n if (hasSliceAssignment(clause, stateName, varName)) {\n // Check for strided for-loop: for (let i = 0; i < arr.length; i += STRIDE)\n const stride = detectStrideLoop(clause, varName)\n if (stride > 1) return { type: 'strided', stride }\n return 'mutate'\n }\n }\n\n // Check for property assignment with filter: `field: state.field.filter(...)`\n if (ts.isPropertyAssignment(prop) && ts.isCallExpression(prop.initializer)) {\n const call = prop.initializer\n if (\n ts.isPropertyAccessExpression(call.expression) &&\n call.expression.name.text === 'filter'\n ) {\n return 'remove'\n }\n }\n }\n }\n\n return 'general'\n}\n\nfunction findReturnArray(stmt: ts.Statement): ts.ArrayLiteralExpression | null {\n if (ts.isReturnStatement(stmt) && stmt.expression && ts.isArrayLiteralExpression(stmt.expression))\n return stmt.expression\n if (ts.isBlock(stmt)) {\n for (const inner of stmt.statements) {\n const result = findReturnArray(inner)\n if (result) return result\n }\n }\n return null\n}\n\n/**\n * Detect a strided for-loop: `for (let i = 0; i < arr.length; i += STRIDE)`\n * where `arr` is the named variable. Returns the stride or 0 if not found.\n */\nfunction detectStrideLoop(clause: ts.CaseClause, _arrName: string): number {\n function walk(node: ts.Node): number {\n if (ts.isForStatement(node) && node.incrementor) {\n // Check incrementor: i += STRIDE\n const inc = node.incrementor\n if (\n ts.isBinaryExpression(inc) &&\n inc.operatorToken.kind === ts.SyntaxKind.PlusEqualsToken &&\n ts.isNumericLiteral(inc.right)\n ) {\n const stride = parseInt(inc.right.text, 10)\n if (stride > 1) return stride\n }\n }\n return ts.forEachChild(node, walk) ?? 0\n }\n for (const stmt of clause.statements) {\n const result = walk(stmt)\n if (result > 0) return result\n }\n return 0\n}\n\nfunction hasSliceAssignment(clause: ts.CaseClause, stateName: string, varName: string): boolean {\n function walk(node: ts.Node): boolean {\n // Look for: const varName = stateName.field.slice()\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === varName &&\n node.initializer\n ) {\n const init = node.initializer\n if (\n ts.isCallExpression(init) &&\n ts.isPropertyAccessExpression(init.expression) &&\n init.expression.name.text === 'slice'\n ) {\n return true\n }\n }\n return ts.forEachChild(node, walk) ?? false\n }\n for (const stmt of clause.statements) {\n if (walk(stmt)) return true\n }\n return false\n}\n\n/**\n * Analyze which top-level state fields are modified in a return expression.\n * Returns the set of field names, or null if too complex to determine.\n */\nfunction analyzeModifiedFields(\n stateExpr: ts.Expression,\n stateName: string,\n topLevelBits: Map<string, number>,\n topLevelBitsHi: Map<string, number> = new Map(),\n): string[] | null {\n // Recognize fields tracked in EITHER the low-word or high-word map.\n // 32..61-prefix components have their overflow paths in\n // `topLevelBitsHi`; the case handler's `caseDirty` / `caseDirtyHi`\n // logic depends on us recognizing those fields here.\n const isTracked = (name: string): boolean => topLevelBits.has(name) || topLevelBitsHi.has(name)\n // Pattern: { ...state, field1: ..., field2: ... } or { field1: ..., field2: ... }\n if (ts.isObjectLiteralExpression(stateExpr)) {\n const modified: string[] = []\n for (const prop of stateExpr.properties) {\n if (ts.isSpreadAssignment(prop)) {\n // Only `...state` is safe to ignore — re-spreading state back into\n // state doesn't change any field's identity. ANY other spread\n // (e.g. `...msg.props`, `...someObj`) can overwrite arbitrary\n // top-level fields with new references, and we cannot know which\n // ones statically. Bail out so the generic Phase 2 path runs\n // `__dirty` at runtime and produces a correct mask.\n if (ts.isIdentifier(prop.expression) && prop.expression.text === stateName) {\n continue\n }\n return null\n }\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {\n const fieldName = prop.name.text\n if (isTracked(fieldName)) {\n modified.push(fieldName)\n }\n }\n // Handle shorthand: { ...state, rows } where rows is a local variable\n if (ts.isShorthandPropertyAssignment(prop)) {\n const fieldName = prop.name.text\n if (isTracked(fieldName)) {\n modified.push(fieldName)\n }\n }\n }\n return modified.length > 0 ? modified : null\n }\n\n // Pattern: state (no change — early return)\n if (ts.isIdentifier(stateExpr) && stateExpr.text === stateName) {\n return [] // no fields modified\n }\n\n return null // too complex\n}\n\n/**\n * Build a handler function for a specific message type case.\n *\n * Generated: (inst, msg) => {\n * const [s, e] = inst.def.update(inst.state, msg)\n * inst.state = s\n * const bl = inst.structuralBlocks, b = inst.allBindings, p = b.length\n * // Phase 1: gated by caseDirty\n * for (let i = 0; i < bl.length; i++) {\n * if (bl[i].mask & caseDirty) bl[i].reconcile(s, caseDirty)\n * }\n * // Phase 2\n * __runPhase2(s, caseDirty, b, p)\n * return [s, e]\n * }\n */\n/**\n * Build a handler that delegates to __handleMsg(inst, msg, dirty, method).\n * method: 0=reconcile, 1=reconcileItems, 2=reconcileClear, 3=reconcileRemove, -1=skip blocks\n */\nfunction buildCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n caseDirtyHi: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const method =\n typeof arrayOp === 'object' && arrayOp.type === 'strided'\n ? 10 + arrayOp.stride // reconcileChanged with stride\n : arrayOp === 'none'\n ? -1\n : arrayOp === 'mutate'\n ? 1\n : arrayOp === 'clear'\n ? 2\n : arrayOp === 'remove'\n ? 3\n : 0 // general\n\n // (inst, msg) => __handleMsg(inst, msg, dirty, method, [dirtyHi])\n const args: ts.Expression[] = [\n f.createIdentifier('inst'),\n f.createIdentifier('msg'),\n createMaskLiteral(f, caseDirty),\n method >= 0\n ? f.createNumericLiteral(method)\n : f.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, f.createNumericLiteral(1)),\n ]\n // Emit the 5th positional arg only when the case touches a high-word\n // field. Stale runtime bundles' _handleMsg signatures ignored that\n // slot anyway; new ones (defaulted to 0) make it explicit when needed.\n if (caseDirtyHi !== 0) args.push(createMaskLiteral(f, caseDirtyHi))\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createCallExpression(f.createIdentifier('__handleMsg'), undefined, args),\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction _deadCode_legacyCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const stmts: ts.Statement[] = []\n\n // const [s, e] = inst.def.update(inst.state, msg)\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n f.createArrayBindingPattern([\n f.createBindingElement(undefined, undefined, 's'),\n f.createBindingElement(undefined, undefined, 'e'),\n ]),\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'def'),\n 'update',\n ),\n undefined,\n [\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n f.createIdentifier('msg'),\n ],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // inst.state = s\n stmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('s'),\n ),\n ),\n )\n\n // Phase 1 + Phase 2, specialized by array operation pattern\n if (caseDirty !== 0) {\n // Determine the reconcile method based on array operation\n const reconcileMethod =\n arrayOp === 'clear'\n ? 'reconcileClear'\n : arrayOp === 'mutate'\n ? 'reconcileItems'\n : arrayOp === 'remove'\n ? 'reconcileRemove'\n : 'reconcile'\n\n if (arrayOp === 'none') {\n // No structural changes — skip Phase 1, only run Phase 2\n // (e.g., select: only selector binding needs updating)\n } else {\n // Phase 1: call specialized reconciler on matching blocks\n // const bl = inst.structuralBlocks\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bl',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'structuralBlocks'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // for (let i = 0; i < bl.length; i++) { if (bl[i].mask & dirty) bl[i].METHOD(s, dirty) }\n const blockEl = f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n )\n const reconcileArgs =\n reconcileMethod === 'reconcileClear'\n ? []\n : [\n f.createIdentifier('s'),\n ...(reconcileMethod === 'reconcile' ? [createMaskLiteral(f, caseDirty)] : []),\n ]\n\n stmts.push(\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(blockEl, 'mask'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, caseDirty),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n // Use specialized method if available, fall back to reconcile\n // bl[i].reconcileItems?.(s) ?? bl[i].reconcile(s, dirty)\n // Simplified: just call the method — it exists on each() blocks\n f.createPropertyAccessExpression(blockEl, reconcileMethod),\n undefined,\n reconcileArgs as ts.Expression[],\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n )\n }\n\n // Phase 2: compact + update bindings\n // const b = inst.allBindings, p = b.length\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'b',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'allBindings'),\n ),\n f.createVariableDeclaration(\n 'p',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // __runPhase2(s, caseDirty, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n createMaskLiteral(f, caseDirty),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n }\n\n // return [s, e]\n stmts.push(\n f.createReturnStatement(\n f.createArrayLiteralExpression([f.createIdentifier('s'), f.createIdentifier('e')]),\n ),\n )\n\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n}\n\n// ── Row Factory ─────────────────────────────────────────────────\n\n/**\n * Transform an eligible each() render to use a row factory — shared update\n * function with zero per-row closures for bindings.\n *\n * Runs AFTER the element transform pass has converted tr/td/text() calls\n * into elTemplate() calls, so we can analyze the template structure.\n */\nfunction tryEmitRowFactory(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n _originalSource: string,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n const body = ts.isBlock(renderFn.body) ? renderFn.body : null\n if (!body) return null\n\n // Find the elTemplate call in the transformed render body\n let templateCall: ts.CallExpression | null = null\n let templateVarName: string | null = null\n\n for (const stmt of body.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (\n ts.isIdentifier(decl.name) &&\n decl.initializer &&\n ts.isCallExpression(decl.initializer)\n ) {\n if (\n ts.isIdentifier(decl.initializer.expression) &&\n decl.initializer.expression.text === 'elTemplate'\n ) {\n if (templateCall) return null // multiple templates — bail\n templateCall = decl.initializer\n templateVarName = decl.name.text\n }\n }\n }\n }\n // Check for nested structural primitives — bail\n if (containsStructuralCall(stmt)) return null\n // Bail on selector.bind() — row factory + selector causes V8 deopt\n // even without per-row disposers (selector fn declarations per render)\n if (_containsSelectorBind(stmt)) return null\n }\n\n if (!templateCall || templateCall.arguments.length < 2) return null\n\n // Extract HTML string\n const htmlArg = templateCall.arguments[0]\n if (!htmlArg || !ts.isStringLiteral(htmlArg)) return null\n const html = htmlArg.text\n\n // Extract patch function\n const patchFn = templateCall.arguments[1]\n if (!patchFn || (!ts.isArrowFunction(patchFn) && !ts.isFunctionExpression(patchFn))) return null\n const patchBody = ts.isBlock(patchFn.body) ? patchFn.body : null\n if (!patchBody) return null\n\n const rootParam = patchFn.parameters[0]\n const bindParam = patchFn.parameters[1]\n if (!rootParam || !bindParam) return null\n const rootName = ts.isIdentifier(rootParam.name) ? rootParam.name.text : null\n const bindName = ts.isIdentifier(bindParam.name) ? bindParam.name.text : null\n if (!rootName || !bindName) return null\n\n // Extract bindings from patch function\n interface RowBinding {\n nodeInitializer: ts.Expression // the node path expression (e.g., root.firstChild)\n kind: string\n key: string | undefined\n accessor: ts.Expression\n }\n const bindings: RowBinding[] = []\n const nodeVarInitializers = new Map<string, ts.Expression>()\n\n for (const stmt of patchBody.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.initializer) {\n nodeVarInitializers.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n if (ts.isExpressionStatement(stmt) && ts.isCallExpression(stmt.expression)) {\n const call = stmt.expression\n if (\n ts.isIdentifier(call.expression) &&\n call.expression.text === bindName &&\n call.arguments.length >= 5\n ) {\n const nodeArg = call.arguments[0]!\n const maskArg = call.arguments[1]!\n const kindArg = call.arguments[2]!\n const keyArg = call.arguments[3]!\n const accessorArg = call.arguments[4]!\n\n // Must be per-item (mask -1)\n if (ts.isPrefixUnaryExpression(maskArg) && maskArg.operator === ts.SyntaxKind.MinusToken) {\n // -1 → per-item ✓\n } else if (ts.isBinaryExpression(maskArg)) {\n // -1 | 0 or 4294967295 | 0 → per-item ✓\n } else {\n return null // state-level binding — bail\n }\n\n const kind = ts.isStringLiteral(kindArg) ? kindArg.text : ''\n const key = ts.isStringLiteral(keyArg) ? keyArg.text : undefined\n\n // Resolve node path — recursively expand variable references to get\n // the full path from root, then create fresh factory nodes\n function resolveNodePath(expr: ts.Expression): ts.Expression {\n if (ts.isIdentifier(expr)) {\n if (expr.text === rootName) return f.createIdentifier(rootName)\n const init = nodeVarInitializers.get(expr.text)\n if (init) return resolveNodePath(init)\n return f.createIdentifier(expr.text)\n }\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n resolveNodePath(expr.expression),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n resolveNodePath(expr.expression),\n expr.argumentExpression,\n )\n }\n return expr\n }\n const nodeInit = resolveNodePath(nodeArg)\n\n // Clone accessor to strip source position — prevents mixed-position errors\n const clonedAccessor = ts.isIdentifier(accessorArg)\n ? f.createIdentifier(accessorArg.text)\n : accessorArg\n bindings.push({ nodeInitializer: nodeInit, kind, key, accessor: clonedAccessor })\n }\n }\n }\n\n if (bindings.length === 0) return null\n\n // Build map of __a{N} → __s{N} for rewriting accessor references.\n // After dedup, `__a{N} = acc(__s{N})`. In the row factory, __a{N} declarations\n // are eliminated, so all references must be rewritten to __s{N}.\n const accToSelector = new Map<string, string>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (!ts.isIdentifier(decl.name) || !decl.name.text.startsWith('__a')) continue\n if (!decl.initializer || !ts.isCallExpression(decl.initializer)) continue\n const callArg0 = decl.initializer.arguments[0]\n if (callArg0 && ts.isIdentifier(callArg0) && callArg0.text.startsWith('__s')) {\n accToSelector.set(decl.name.text, callArg0.text)\n }\n }\n }\n\n // Rewrite binding accessors: __a{N} → __s{N}\n for (const b of bindings) {\n if (ts.isIdentifier(b.accessor) && accToSelector.has(b.accessor.text)) {\n b.accessor = f.createIdentifier(accToSelector.get(b.accessor.text)!)\n }\n }\n\n // Collect __s{N} selector definitions — needed by __rowUpd and render init.\n // These are currently scoped to the render body; we'll hoist them into the\n // __rowUpd IIFE so they're accessible.\n const selectorDefs = new Map<string, ts.Expression>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text.startsWith('__s') && decl.initializer) {\n selectorDefs.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n // === Generate the row factory ===\n\n // 1. __tpl: IIFE that creates + caches the template element\n const tplInit = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createIdentifier('document'),\n 'createElement',\n ),\n undefined,\n [f.createStringLiteral('template')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('t'), 'innerHTML'),\n ts.SyntaxKind.EqualsToken,\n f.createStringLiteral(html),\n ),\n ),\n f.createReturnStatement(f.createIdentifier('t')),\n ],\n true,\n ),\n ),\n ),\n undefined,\n [],\n )\n\n // 2. __rowUpd: (e) => { const t = e.current; for each binding: check + write }\n const updStmts: ts.Statement[] = []\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const vId = f.createIdentifier(`v${i}`)\n const cachedProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n const nodeProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n\n // const v{i} = accessor(t)\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n vId,\n undefined,\n undefined,\n f.createCallExpression(b.accessor, undefined, [f.createIdentifier('t')]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // DOM write expression\n const domWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n\n // if (v{i} !== e['_v{i}']) { e['_v{i}'] = v{i}; DOM_WRITE }\n updStmts.push(\n f.createIfStatement(\n f.createBinaryExpression(vId, ts.SyntaxKind.ExclamationEqualsEqualsToken, cachedProp),\n f.createBlock(\n [\n f.createExpressionStatement(\n f.createBinaryExpression(cachedProp, ts.SyntaxKind.EqualsToken, vId),\n ),\n f.createExpressionStatement(domWrite),\n ],\n true,\n ),\n ),\n )\n }\n\n // Wrap __rowUpd in IIFE that declares selectors (they're scoped to the\n // render body but __rowUpd lives on the options object outside render).\n const rawUpdFn = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 'e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(updStmts, true),\n )\n\n // Build: (() => { const __s0 = ...; const __s1 = ...; return (e) => { ... } })()\n const selectorDecls: ts.Statement[] = []\n for (const [name, init] of selectorDefs) {\n selectorDecls.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n selectorDecls.push(f.createReturnStatement(rawUpdFn))\n\n const rowUpdFn = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(selectorDecls, true),\n ),\n ),\n undefined,\n [],\n )\n\n // 3. New render callback: ({ entry: e, __tpl, __rowUpd }) => { ... }\n const renderStmts: ts.Statement[] = []\n\n // Declare selectors at the top of render body (they're used for initial values)\n for (const [name, init] of selectorDefs) {\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // const r = __tpl.content.firstElementChild.cloneNode(true)\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'r',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__tpl'), 'content'),\n 'firstElementChild',\n ),\n 'cloneNode',\n ),\n undefined,\n [f.createTrue()],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // For each binding: store node ref, compute initial, apply\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const nProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n const vProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n\n // Rewrite node path: replace root param name with 'r'\n const rewrittenPath = rewriteRoot(b.nodeInitializer, rootName, 'r', f)\n\n // e['_n{i}'] = rewrittenPath\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(nProp, ts.SyntaxKind.EqualsToken, rewrittenPath),\n ),\n )\n\n // e['_v{i}'] = accessor(e.current)\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n vProp,\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(b.accessor, undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ]),\n ),\n ),\n )\n\n // DOM write: e['_n{i}'].nodeValue = e['_v{i}']\n const initWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n renderStmts.push(f.createExpressionStatement(initWrite))\n }\n\n // e.__rowUpdate = __rowUpd\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('e'), '__rowUpdate'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('__rowUpd'),\n ),\n ),\n )\n\n // Rewrite a statement: replace __a{N}() → __s{N}(e.current),\n // replace template var → r, strip positions via deep clone.\n function rewriteStmt(stmt: ts.Statement): ts.Statement {\n function visit(node: ts.Node): ts.Node {\n // Rewrite __a{N}() → __s{N}(e.current)\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n accToSelector.has(node.expression.text) &&\n node.arguments.length === 0\n ) {\n const selectorName = accToSelector.get(node.expression.text)!\n return f.createCallExpression(f.createIdentifier(selectorName), undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ])\n }\n // Rewrite template variable → r\n if (ts.isIdentifier(node) && templateVarName && node.text === templateVarName) {\n return f.createIdentifier('r')\n }\n // Clone identifiers to strip positions\n if (ts.isIdentifier(node)) {\n return f.createIdentifier(node.text)\n }\n return ts.visitEachChild(node, visit, undefined!)\n }\n return ts.visitEachChild(stmt, visit, undefined!) as ts.Statement\n }\n\n // Preserve non-template, non-compiler-generated, non-return statements.\n for (const stmt of body.statements) {\n if (ts.isReturnStatement(stmt)) continue\n\n if (ts.isVariableStatement(stmt)) {\n // Skip template declaration\n const isTemplate = stmt.declarationList.declarations.some(\n (d) => ts.isIdentifier(d.name) && d.name.text === templateVarName,\n )\n if (isTemplate) continue\n // Skip __a{N} and __s{N} declarations (compiler-generated acc/selector)\n const isCompilerOnly = stmt.declarationList.declarations.every(\n (d) =>\n ts.isIdentifier(d.name) &&\n (d.name.text.startsWith('__a') || d.name.text.startsWith('__s')),\n )\n if (isCompilerOnly) continue\n }\n\n // Rewrite and include\n renderStmts.push(rewriteStmt(stmt))\n }\n\n // return [r]\n renderStmts.push(\n f.createReturnStatement(f.createArrayLiteralExpression([f.createIdentifier('r')])),\n )\n\n const newRenderFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(\n undefined,\n undefined,\n f.createObjectBindingPattern([\n f.createBindingElement(undefined, 'entry', 'e'),\n f.createBindingElement(undefined, undefined, '__tpl'),\n f.createBindingElement(undefined, undefined, '__rowUpd'),\n ]),\n ),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(renderStmts, true),\n )\n\n // 4. Build new each options. To avoid mixed-position AST issues, we keep\n // original properties unchanged and only ADD __tpl, __rowUpd, and replace render.\n // The trick: return the original node structure but with the render property\n // swapped. Use ts.factory.updateObjectLiteralExpression which preserves positions.\n const updatedProps = arg.properties.map(\n (p): ts.ObjectLiteralElementLike =>\n p === renderProp ? f.createPropertyAssignment('render', newRenderFn) : p,\n )\n updatedProps.push(f.createPropertyAssignment('__tpl', tplInit))\n updatedProps.push(f.createPropertyAssignment('__rowUpd', rowUpdFn))\n\n const newOpts = f.updateObjectLiteralExpression(arg, updatedProps)\n\n return f.updateCallExpression(eachCall, eachCall.expression, eachCall.typeArguments, [\n newOpts,\n ...eachCall.arguments.slice(1),\n ])\n}\n\nfunction _containsSelectorBind(node: ts.Node): boolean {\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === 'bind'\n ) {\n return true\n }\n return ts.forEachChild(node, _containsSelectorBind) ?? false\n}\n\nfunction containsStructuralCall(node: ts.Node): boolean {\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (['each', 'branch', 'scope', 'show', 'child', 'foreign'].includes(node.expression.text))\n return true\n }\n return ts.forEachChild(node, containsStructuralCall) ?? false\n}\n\n/** Rewrite property access chains replacing oldRoot identifier with newRoot */\nfunction rewriteRoot(\n expr: ts.Expression,\n oldRoot: string,\n newRoot: string,\n f: ts.NodeFactory,\n): ts.Expression {\n if (ts.isIdentifier(expr) && expr.text === oldRoot) return f.createIdentifier(newRoot)\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.argumentExpression,\n )\n }\n return expr\n}\n\n/** Parse a statement string into a fresh AST node (no source positions) */\nfunction _parseStmt(code: string): ts.Statement | null {\n const sf = ts.createSourceFile('__gen.ts', code, ts.ScriptTarget.Latest, false)\n return (sf.statements[0] as ts.Statement | undefined) ?? null\n}\n\n/**\n * Compute the OR of all structural block masks found in the view function.\n * Returns FULL_MASK if any structural block uses FULL_MASK or if no blocks found.\n */\nfunction computeStructuralMask(\n configArg: ts.ObjectLiteralExpression,\n fieldBits: Map<string, number>,\n): number {\n const viewProp = configArg.properties.find(\n (p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === 'view',\n )\n if (!viewProp || !ts.isPropertyAssignment(viewProp)) return 0xffffffff | 0\n\n let mask = 0\n let foundStructural = false\n\n function walk(node: ts.Node): void {\n if (ts.isCallExpression(node)) {\n const name = ts.isIdentifier(node.expression) ? node.expression.text : ''\n if (['each', 'branch', 'scope', 'show'].includes(name) && node.arguments[0]) {\n foundStructural = true\n const opts = node.arguments[0]\n if (ts.isObjectLiteralExpression(opts)) {\n // Check for __mask property (already injected by tryInjectStructuralMask)\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n if (ts.isNumericLiteral(prop.initializer)) {\n mask |= parseInt(prop.initializer.text, 10)\n return\n }\n if (ts.isPrefixUnaryExpression(prop.initializer)) {\n // Handle negative literals like -1\n mask = 0xffffffff | 0\n return\n }\n }\n }\n // No __mask found — use driving accessor mask\n const driverProp = name === 'each' ? 'items' : name === 'branch' ? 'on' : 'when'\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n if (\n ts.isArrowFunction(prop.initializer) ||\n ts.isFunctionExpression(prop.initializer)\n ) {\n const { mask: m } = computeAccessorMask(prop.initializer, fieldBits)\n mask |= m || 0xffffffff | 0\n }\n break\n }\n }\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n walk(viewProp.initializer)\n return foundStructural ? mask || 0xffffffff | 0 : 0\n}\n\n/**\n * Compute the OR of all component-level binding masks from text() calls\n * and element bindings in the view. Returns 0 if no component-level bindings.\n */\nfunction computePhase2Mask(\n _configArg: ts.ObjectLiteralExpression,\n _fieldBits: Map<string, number>,\n): number {\n // For now, return FULL_MASK — a future pass can analyze all binding sites\n // in the view to compute the precise aggregate. The key optimization is\n // already in Phase 1 gating: when structuralMask doesn't intersect dirty,\n // the entire reconciliation is skipped.\n return 0xffffffff | 0\n}\n\n/**\n * Build the __update function body:\n * {\n * // Phase 1 — structural reconciliation (gated by structuralMask)\n * if (d & structuralMask) {\n * for (let i = 0; i < bl.length; i++) {\n * const bk = bl[i]\n * if (!bk || (bk.mask & d) === 0) continue\n * bk.reconcile(s, d)\n * }\n * // Compact dead bindings\n * if (b.length > p || (p > 0 && b[0].dead)) {\n * let w = 0\n * for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n * b.length = w\n * p = Math.min(w, p)\n * }\n * }\n * // Phase 2 — binding updates\n * if (d !== 0) {\n * for (let i = 0; i < p; i++) {\n * const bn = b[i]\n * if (bn.dead || (bn.mask & d) === 0) continue\n * const v = bn.accessor(s)\n * const l = bn.lastValue\n * if (v === l || (v !== v && l !== l)) continue\n * bn.lastValue = v\n * __runPhase2(s, d, b, p)\n * }\n * }\n * }\n */\nfunction buildUpdateBody(f: ts.NodeFactory, structuralMask: number, _phase2Mask: number): ts.Block {\n const stmts: ts.Statement[] = []\n\n // Phase 1: structural block reconciliation, gated by aggregate mask\n if (structuralMask !== 0) {\n const phase1Stmts: ts.Statement[] = []\n\n // for (let i = 0; i < bl.length; i++) {\n // const bk = bl[i];\n // if (!bk || !((bk.mask & d) | (bk.maskHi & dHi))) continue;\n // bk.reconcile(s, d, dHi)\n // }\n // Two-word gate matches the runtime's `genericUpdate`: bits 0..30\n // in `d`, bits 31..61 in `dHi`. For ≤31-prefix components both\n // `bk.maskHi` and `dHi` are 0, so V8's inline cache collapses the\n // OR back to the single-word check. >31-prefix components use the\n // high word for precise gating.\n //\n // Re-read bl.length each iteration and null-check bk — a branch's\n // reconcile may dispose the old scope, whose disposers splice child\n // structural blocks out of this shared array mid-iteration.\n const blockLoop = f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bk',\n undefined,\n undefined,\n f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createIdentifier('bk'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'mask'),\n ts.SyntaxKind.AmpersandToken,\n f.createIdentifier('d'),\n ),\n ),\n ts.SyntaxKind.BarToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'maskHi'),\n ts.SyntaxKind.AmpersandToken,\n f.createIdentifier('dHi'),\n ),\n ),\n ),\n ),\n ),\n ),\n f.createContinueStatement(),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'reconcile'),\n undefined,\n [f.createIdentifier('s'), f.createIdentifier('d'), f.createIdentifier('dHi')],\n ),\n ),\n ],\n true,\n ),\n )\n phase1Stmts.push(blockLoop)\n\n // Compaction: if (b.length > p || (p > 0 && b[0].dead)) { ... }\n const compactBody = f.createBlock(\n [\n // let w = 0\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('w', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n ),\n // for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('r', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('r'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('r'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n 'dead',\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createPostfixUnaryExpression(\n f.createIdentifier('w'),\n ts.SyntaxKind.PlusPlusToken,\n ),\n ),\n ts.SyntaxKind.EqualsToken,\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n // b.length = w\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('w'),\n ),\n ),\n // p = Math.min(w, p)\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Math'), 'min'),\n undefined,\n [f.createIdentifier('w'), f.createIdentifier('p')],\n ),\n ),\n ),\n ],\n true,\n )\n\n const compactCondition = f.createBinaryExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.GreaterThanToken,\n f.createIdentifier('p'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.GreaterThanToken,\n f.createNumericLiteral(0),\n ),\n ts.SyntaxKind.AmpersandAmpersandToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(f.createIdentifier('b'), f.createNumericLiteral(0)),\n 'dead',\n ),\n ),\n ),\n )\n phase1Stmts.push(f.createIfStatement(compactCondition, compactBody))\n\n // Wrap Phase 1 in mask gate\n if (structuralMask !== (0xffffffff | 0)) {\n stmts.push(\n f.createIfStatement(\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createIdentifier('d'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, structuralMask),\n ),\n ),\n ts.SyntaxKind.ExclamationEqualsEqualsToken,\n f.createNumericLiteral(0),\n ),\n f.createBlock(phase1Stmts, true),\n ),\n )\n } else {\n stmts.push(...phase1Stmts)\n }\n }\n\n // Phase 2: delegate to shared runtime — __runPhase2(s, d, dHi, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n f.createIdentifier('d'),\n f.createIdentifier('dHi'),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n\n return f.createBlock(stmts, true)\n}\n\n/**\n * Build the `__prefixes` property assignment from path → bit maps.\n *\n * Emits one arrow `(s) => s.<path>` per distinct path. Array index =\n * the path's bit position: positions 0..30 come from `fieldBits` (low\n * word), positions 31..61 from `fieldBitsHi` (high word). The runtime\n * walks this array and reference-compares `prefix(prev)` vs\n * `prefix(next)` per entry, fanning bits into a `(lo, hi)` pair when\n * the array length exceeds 31.\n *\n * Returns null if no paths are present.\n */\nfunction buildPrefixesProp(\n fieldBits: Map<string, number>,\n fieldBitsHi: Map<string, number>,\n f: ts.NodeFactory,\n): ts.PropertyAssignment | null {\n if (fieldBits.size === 0 && fieldBitsHi.size === 0) return null\n // Sort paths by bit value within each word. Bits are powers of two\n // inside their word (1, 2, 4, …, 1<<30), so sorting numerically gives\n // ascending bit position. FULL_MASK (-1) entries from past-61\n // overflow shouldn't drive a prefix entry — defensively skip them.\n const orderedLo = [...fieldBits.entries()]\n .filter(([, bit]) => bit > 0)\n .sort(([, a], [, b]) => a - b)\n const orderedHi = [...fieldBitsHi.entries()].sort(([, a], [, b]) => a - b)\n const buildArrow = (path: string): ts.ArrowFunction => {\n const parts = path.split('.')\n const body = buildAccess(f, 's', parts)\n return f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 's')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n body,\n )\n }\n const arrows = [\n ...orderedLo.map(([path]) => buildArrow(path)),\n ...orderedHi.map(([path]) => buildArrow(path)),\n ]\n return f.createPropertyAssignment('__prefixes', f.createArrayLiteralExpression(arrows, false))\n}\n\nfunction buildAccess(f: ts.NodeFactory, root: string, parts: string[]): ts.Expression {\n let expr: ts.Expression = f.createIdentifier(root)\n for (const part of parts) {\n // Use optional chaining for nested paths\n if (parts.length > 1) {\n expr = f.createPropertyAccessChain(expr, f.createToken(ts.SyntaxKind.QuestionDotToken), part)\n } else {\n expr = f.createPropertyAccessExpression(expr, part)\n }\n }\n return expr\n}\n\n// ── Pass 3: Import cleanup ───────────────────────────────────────\n\nfunction cleanupImports(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n _helpers: Map<string, string>,\n compiled: Set<string>,\n usesElSplit: boolean,\n usesElTemplate: boolean,\n usesMemo: boolean,\n usesApplyBinding: boolean,\n usesCloneStaticTemplate: boolean,\n usesRegisterScopeVariants: boolean,\n f: ts.NodeFactory,\n): ts.SourceFile {\n if (\n compiled.size === 0 &&\n !usesElTemplate &&\n !usesElSplit &&\n !usesMemo &&\n !usesApplyBinding &&\n !usesCloneStaticTemplate &&\n !usesRegisterScopeVariants\n )\n return sf\n\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return sf\n\n const remaining = clause.namedBindings.elements.filter((spec) => !compiled.has(spec.name.text))\n\n const hasElSplit = clause.namedBindings.elements.some((s) => s.name.text === 'elSplit')\n if (!hasElSplit && usesElSplit) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elSplit')))\n }\n\n const hasElTemplate = clause.namedBindings.elements.some((s) => s.name.text === 'elTemplate')\n if (!hasElTemplate && usesElTemplate) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elTemplate')))\n }\n\n const hasCloneStaticTemplate = clause.namedBindings.elements.some(\n (s) => s.name.text === '__cloneStaticTemplate',\n )\n if (!hasCloneStaticTemplate && usesCloneStaticTemplate) {\n remaining.push(\n f.createImportSpecifier(false, undefined, f.createIdentifier('__cloneStaticTemplate')),\n )\n }\n\n const hasMemo = clause.namedBindings.elements.some((s) => s.name.text === 'memo')\n if (!hasMemo && usesMemo) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('memo')))\n }\n\n if (usesApplyBinding) {\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__runPhase2')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__runPhase2')))\n }\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__handleMsg')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__handleMsg')))\n }\n }\n\n // The connect-pattern injector (binding-descriptors.ts) emits\n // `__registerScopeVariants([...])` calls; ensure the runtime\n // helper is imported when at least one was inserted.\n const hasRegisterScopeVariants = clause.namedBindings.elements.some(\n (s) => s.name.text === '__registerScopeVariants',\n )\n if (!hasRegisterScopeVariants && usesRegisterScopeVariants) {\n remaining.push(\n f.createImportSpecifier(false, undefined, f.createIdentifier('__registerScopeVariants')),\n )\n }\n\n const newBindings = f.createNamedImports(remaining)\n const newClause = f.createImportClause(false, undefined, newBindings)\n const newImportDecl = f.createImportDeclaration(undefined, newClause, lluiImport.moduleSpecifier)\n\n let replaced = false\n const statements = sf.statements.map((stmt) => {\n if (\n !replaced &&\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom' &&\n !stmt.importClause?.isTypeOnly\n ) {\n replaced = true\n return newImportDecl\n }\n return stmt\n })\n\n return f.updateSourceFile(sf, statements as unknown as ts.Statement[])\n}\n\n// ── __msgSchema injection ────────────────────────────────────────\n\nfunction injectStateSchema(\n node: ts.CallExpression,\n fields: Record<string, StateType>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__stateSchema'\n ) {\n return node\n }\n }\n\n const schemaProp = f.createPropertyAssignment(\n '__stateSchema',\n stateTypeToLiteral({ kind: 'object', fields }, f),\n )\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction stateTypeToLiteral(t: StateType, f: ts.NodeFactory): ts.Expression {\n if (typeof t === 'string') return f.createStringLiteral(t)\n if (t.kind === 'enum') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('enum')),\n f.createPropertyAssignment(\n 'values',\n f.createArrayLiteralExpression(t.values.map((v) => f.createStringLiteral(v))),\n ),\n ])\n }\n if (t.kind === 'array') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('array')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'optional') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('optional')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'union') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('union')),\n f.createPropertyAssignment(\n 'of',\n f.createArrayLiteralExpression(t.of.map((m) => stateTypeToLiteral(m, f))),\n ),\n ])\n }\n // object\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(t.fields)) {\n fieldProps.push(f.createPropertyAssignment(f.createStringLiteral(k), stateTypeToLiteral(v, f)))\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('object')),\n f.createPropertyAssignment('fields', f.createObjectLiteralExpression(fieldProps, true)),\n ])\n}\n\nfunction injectComponentMeta(\n nodeWithMaybeEdits: ts.CallExpression,\n originalNode: ts.CallExpression,\n sourceFile: ts.SourceFile,\n filename: string,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = nodeWithMaybeEdits.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return nodeWithMaybeEdits\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__componentMeta'\n ) {\n return nodeWithMaybeEdits\n }\n }\n\n // Line number from the original (real-position) node\n const pos = originalNode.pos >= 0 ? originalNode.getStart(sourceFile) : 0\n const { line } = sourceFile.getLineAndCharacterOfPosition(pos)\n\n const meta = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('file', f.createStringLiteral(filename)),\n f.createPropertyAssignment('line', f.createNumericLiteral(line + 1)),\n ],\n false,\n )\n\n const metaProp = f.createPropertyAssignment('__componentMeta', meta)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, metaProp], true)\n\n return f.createCallExpression(nodeWithMaybeEdits.expression, nodeWithMaybeEdits.typeArguments, [\n newConfig,\n ...nodeWithMaybeEdits.arguments.slice(1),\n ])\n}\n\nfunction injectMsgSchema(\n node: ts.CallExpression,\n schema: MsgSchema,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__msgSchema'\n ) {\n return node\n }\n }\n\n // Build the schema object literal\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, descriptor] of Object.entries(fields)) {\n // Always wrap user-derived keys with createStringLiteral — bare\n // strings get printed as identifiers, which breaks fields named\n // with reserved words ('delete'), hyphens, or other non-id chars.\n fieldProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(field),\n buildFieldDescriptorExpr(descriptor, f),\n ),\n )\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__msgSchema', schemaObj)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n/**\n * Emit the AST for a single field descriptor. Bare forms (`'string'`,\n * `{enum: [...]}`) print as their compact form; rich descriptors emit\n * an object literal carrying `type`, `optional`, `priority`, and `hint`\n * properties as set.\n */\nfunction buildFieldDescriptorExpr(descriptor: MsgField, f: ts.NodeFactory): ts.Expression {\n if (typeof descriptor === 'string') {\n return f.createStringLiteral(descriptor)\n }\n if (isRichField(descriptor)) {\n const props: ts.PropertyAssignment[] = []\n // `type` is the bare type; recurse to emit either a string or the\n // enum object.\n props.push(f.createPropertyAssignment('type', buildFieldDescriptorExpr(descriptor.type, f)))\n if (descriptor.optional) {\n props.push(f.createPropertyAssignment('optional', f.createTrue()))\n }\n if (descriptor.priority) {\n props.push(f.createPropertyAssignment('priority', f.createStringLiteral(descriptor.priority)))\n }\n if (descriptor.hint !== undefined) {\n props.push(f.createPropertyAssignment('hint', f.createStringLiteral(descriptor.hint)))\n }\n if (descriptor.validates !== undefined) {\n props.push(\n f.createPropertyAssignment('validates', f.createStringLiteral(descriptor.validates)),\n )\n }\n return f.createObjectLiteralExpression(props)\n }\n // The remaining cases are bare type-shape variants emitted by\n // `resolveFieldType`: enum, object, array, discriminated-union.\n // Discriminate by which key is present so we never confuse an inline\n // object literal ({enum: [...]}) with a deeply-nested shape descriptor.\n if ('enum' in descriptor) {\n // Mixed-typed enum values (string/number/boolean). Each enum entry\n // emits with its native literal kind so JSON round-trips preserve\n // the type information — `1` stays a number, not stringified.\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment(\n 'enum',\n f.createArrayLiteralExpression(descriptor.enum.map((v) => emitEnumValue(v, f))),\n ),\n ])\n }\n if ('kind' in descriptor && descriptor.kind === 'object') {\n // Nested object shape — recurse per field. Fields may themselves\n // be rich descriptors (optional, etc.), so route each through the\n // same builder.\n const shapeProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(descriptor.shape)) {\n shapeProps.push(\n f.createPropertyAssignment(f.createStringLiteral(k), buildFieldDescriptorExpr(v, f)),\n )\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('object')),\n f.createPropertyAssignment('shape', f.createObjectLiteralExpression(shapeProps)),\n ])\n }\n if ('kind' in descriptor && descriptor.kind === 'discriminated-union') {\n // Inner-union variants are themselves field maps (per branch),\n // recursed through the same builder. Symmetric with how the\n // top-level Msg union's variants are represented.\n const variantProps: ts.PropertyAssignment[] = []\n for (const [discValue, fields] of Object.entries(descriptor.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(fields)) {\n fieldProps.push(\n f.createPropertyAssignment(f.createStringLiteral(k), buildFieldDescriptorExpr(v, f)),\n )\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(discValue),\n f.createObjectLiteralExpression(fieldProps, true),\n ),\n )\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('discriminated-union')),\n f.createPropertyAssignment('discriminant', f.createStringLiteral(descriptor.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ])\n }\n // Array — `{kind: 'array', element: <bare type>}`.\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('array')),\n f.createPropertyAssignment('element', buildFieldDescriptorExpr(descriptor.element, f)),\n ])\n}\n\n/**\n * Emit a single enum value as the right TS literal kind. Numbers as\n * numeric literals, booleans as keyword expressions, strings as string\n * literals — preserves the type at the wire (JSON round-trips correctly).\n */\nfunction emitEnumValue(v: string | number | boolean, f: ts.NodeFactory): ts.Expression {\n if (typeof v === 'string') return f.createStringLiteral(v)\n if (typeof v === 'number') return f.createNumericLiteral(v)\n return v ? f.createTrue() : f.createFalse()\n}\n\nfunction hasNonDefaultAnnotation(a: Record<string, MessageAnnotations>): boolean {\n for (const v of Object.values(a)) {\n if (v.intent !== null) return true\n if (v.alwaysAffordable) return true\n if (v.requiresConfirm) return true\n if (v.dispatchMode !== 'shared') return true\n if (v.routeGate != null) return true\n }\n return false\n}\n\nfunction annotationsToObjectLiteral(\n a: Record<string, MessageAnnotations>,\n): ts.ObjectLiteralExpression {\n const props: ts.PropertyAssignment[] = []\n for (const [variant, ann] of Object.entries(a)) {\n props.push(\n ts.factory.createPropertyAssignment(\n // Wrap with createStringLiteral — the printer treats bare strings\n // as identifiers, which produces invalid JS for discriminants\n // containing characters like '/' (e.g. 'Router/RouteChanged'),\n // reserved words ('delete'), or hyphens.\n ts.factory.createStringLiteral(variant),\n ts.factory.createObjectLiteralExpression(\n [\n ts.factory.createPropertyAssignment(\n 'intent',\n ann.intent === null\n ? ts.factory.createNull()\n : ts.factory.createStringLiteral(ann.intent),\n ),\n ts.factory.createPropertyAssignment(\n 'alwaysAffordable',\n ann.alwaysAffordable ? ts.factory.createTrue() : ts.factory.createFalse(),\n ),\n ts.factory.createPropertyAssignment(\n 'requiresConfirm',\n ann.requiresConfirm ? ts.factory.createTrue() : ts.factory.createFalse(),\n ),\n ts.factory.createPropertyAssignment(\n 'dispatchMode',\n ts.factory.createStringLiteral(ann.dispatchMode),\n ),\n // Only emit `routeGate` when non-null. The runtime treats\n // missing as the no-gate default (\"variant follows its\n // dispatchMode-driven affordance behavior\") — keeping the\n // wire shape minimal for the common case of un-gated Msgs.\n // Use loose `!= null` so test fixtures that omit the\n // field entirely also fall through to the no-emit path.\n ...(ann.routeGate != null\n ? [\n ts.factory.createPropertyAssignment(\n 'routeGate',\n ts.factory.createStringLiteral(ann.routeGate),\n ),\n ]\n : []),\n ],\n true,\n ),\n ),\n )\n }\n return ts.factory.createObjectLiteralExpression(props, true)\n}\n\nfunction injectMsgAnnotations(\n node: ts.CallExpression,\n annotations: Record<string, MessageAnnotations>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__msgAnnotations'\n ) {\n return node\n }\n }\n\n const annotationsProp = f.createPropertyAssignment(\n '__msgAnnotations',\n annotationsToObjectLiteral(annotations),\n )\n\n const newConfig = f.createObjectLiteralExpression(\n [...configArg.properties, annotationsProp],\n true,\n )\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction injectSchemaHash(\n node: ts.CallExpression,\n hash: string,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__schemaHash'\n ) {\n return node\n }\n }\n\n const hashProp = f.createPropertyAssignment('__schemaHash', f.createStringLiteral(hash))\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, hashProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction injectEffectSchema(\n node: ts.CallExpression,\n schema: MsgSchema,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__effectSchema'\n ) {\n return node\n }\n }\n\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, descriptor] of Object.entries(fields)) {\n // Effects share the same descriptor pipeline as messages — they\n // can carry @should/optional annotations too, even though typical\n // Effect unions don't need them. Reusing the helper keeps both\n // schemas's wire formats consistent.\n fieldProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(field),\n buildFieldDescriptorExpr(descriptor, f),\n ),\n )\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__effectSchema', schemaObj)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n// ── Per-item accessor detection ──────────────────────────────────\n\n// ── Item selector deduplication ──────────────────────────────────\n\n/**\n * In each() render callbacks, deduplicate repeated item(selector) calls.\n *\n * Before: item((r) => r.id) appears 4 times → 4 selector closures + 4 accessor closures\n * After: const __s0 = (r) => r.id; const __a0 = item(__s0); → 1 selector + 1 accessor\n */\nfunction tryDeduplicateItemSelectors(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n printer: ts.Printer,\n sourceFile: ts.SourceFile,\n): ts.CallExpression | null {\n // each() takes a single object literal argument\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find the render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n\n // Get the item parameter name from the options bag: ({ item, ... }) => ...\n const renderParam = renderFn.parameters[0]\n if (!renderParam) return null\n\n let itemName: string | null = null\n if (ts.isIdentifier(renderParam.name)) {\n // Old style: (item) => ... or (item, index) => ...\n itemName = renderParam.name.text\n } else if (ts.isObjectBindingPattern(renderParam.name)) {\n // New style: ({ item, send, ... }) => ...\n for (const el of renderParam.name.elements) {\n if (ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'item') {\n itemName = 'item'\n break\n }\n }\n }\n if (!itemName) return null\n\n // Collect all item(selector) calls AND item.FIELD property-access expressions.\n // Both forms produce the same accessor; they dedup together via the field-name key.\n type Occurrence =\n | { kind: 'call'; node: ts.CallExpression; selector: ts.Expression; key: string }\n | { kind: 'access'; node: ts.PropertyAccessExpression; field: string; key: string }\n\n const occurrences: Occurrence[] = []\n\n // Try to extract a simple field name from an arrow selector: (t) => t.FIELD → \"FIELD\"\n function extractSimpleField(sel: ts.ArrowFunction | ts.FunctionExpression): string | null {\n if (sel.parameters.length !== 1) return null\n const paramName = sel.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return null\n const body = ts.isArrowFunction(sel) ? sel.body : null\n if (!body) return null\n const expr = ts.isBlock(body) ? null : body\n if (!expr || !ts.isPropertyAccessExpression(expr)) return null\n if (!ts.isIdentifier(expr.expression) || expr.expression.text !== paramName.text) return null\n if (!ts.isIdentifier(expr.name)) return null\n return expr.name.text\n }\n\n function collectItemCalls(node: ts.Node): void {\n // item(selector) calls\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n node.arguments.length === 1\n ) {\n const sel = node.arguments[0]!\n if (ts.isArrowFunction(sel) || ts.isFunctionExpression(sel)) {\n const field = extractSimpleField(sel)\n const key =\n field !== null\n ? `field:${field}`\n : `expr:${printer.printNode(ts.EmitHint.Expression, sel, sourceFile)}`\n occurrences.push({ kind: 'call', node, selector: sel, key })\n }\n }\n // item.FIELD property access — but NOT when it's the callee of a call expression\n // where we want the original to stay (e.g. item.id() we still replace, because the\n // accessor itself becomes __a0 and we keep the trailing ()).\n else if (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n ts.isIdentifier(node.name)\n ) {\n const field = node.name.text\n occurrences.push({ kind: 'access', node, field, key: `field:${field}` })\n }\n ts.forEachChild(node, collectItemCalls)\n }\n collectItemCalls(renderFn.body)\n\n if (occurrences.length < 2) return null // nothing to deduplicate\n\n // Group by normalized key (field:name or expr:text)\n const groups = new Map<string, Occurrence[]>()\n for (const occ of occurrences) {\n const existing = groups.get(occ.key)\n if (existing) existing.push(occ)\n else groups.set(occ.key, [occ])\n }\n\n // Hoist ALL occurrences (even unique ones) so compiled code uses `acc()` (plain\n // function) instead of `item(fn)` (Proxy-wrapped) or `item.FIELD` (Proxy.get trap).\n // Unique accesses get their own __a* var; duplicates share one.\n const allGroups = [...groups.entries()]\n if (allGroups.length === 0) return null\n\n // Build hoisted declarations and replacement map\n const hoistedStmts: ts.Statement[] = []\n const replacements = new Map<ts.Node, ts.Identifier>()\n let sIdx = 0\n\n for (const [key, occs] of allGroups) {\n const selVar = `__s${sIdx}`\n const accVar = `__a${sIdx}`\n sIdx++\n\n // Build the selector expression.\n // For field:FIELD, synthesize (t) => t.FIELD (or reuse an existing call's selector).\n // For expr:..., reuse the existing selector expression.\n let selector: ts.Expression\n const callOccurrence = occs.find((o) => o.kind === 'call')\n if (callOccurrence && callOccurrence.kind === 'call') {\n selector = callOccurrence.selector\n } else {\n // All occurrences are property-access form — synthesize (t) => t.FIELD\n const firstAccess = occs[0]!\n if (firstAccess.kind !== 'access') throw new Error('unreachable')\n selector = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 't')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createPropertyAccessExpression(f.createIdentifier('t'), firstAccess.field),\n )\n }\n\n // const __s0 = (r) => r.id\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(selVar, undefined, undefined, selector)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n // const __a0 = acc(__s0) — use the plain-function `acc` instead of `item` (which\n // is a Proxy). Adds `acc` to the destructure binding below if not already present.\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n accVar,\n undefined,\n undefined,\n f.createCallExpression(f.createIdentifier('acc'), undefined, [\n f.createIdentifier(selVar),\n ]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // Map all occurrences to the cached accessor identifier\n void key // silence unused\n for (const occ of occs) {\n replacements.set(occ.node, f.createIdentifier(accVar))\n }\n }\n\n // Rewrite the render function body to replace item(sel)/item.field with cached refs\n function replaceVisitor(node: ts.Node): ts.Node {\n if (replacements.has(node)) {\n return replacements.get(node)!\n }\n return ts.visitEachChild(node, replaceVisitor, undefined!)\n }\n\n const newBody = ts.visitNode(renderFn.body, replaceVisitor)!\n\n // Prepend hoisted declarations to the body\n let finalBody: ts.ConciseBody\n if (ts.isBlock(newBody)) {\n finalBody = f.createBlock([...hoistedStmts, ...(newBody as ts.Block).statements], true)\n } else {\n // Arrow with expression body → convert to block with return\n finalBody = f.createBlock(\n [...hoistedStmts, f.createReturnStatement(newBody as ts.Expression)],\n true,\n )\n }\n\n // Ensure `acc` is in the destructure binding pattern of the render param.\n // Hoisted code references it; if user didn't destructure it, add it.\n const newParameters = renderFn.parameters.map((p, idx) => {\n if (idx !== 0) return p\n if (!ts.isObjectBindingPattern(p.name)) return p\n const hasAcc = p.name.elements.some(\n (el) => ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'acc',\n )\n if (hasAcc) return p\n const newBinding = f.createObjectBindingPattern([\n ...p.name.elements,\n f.createBindingElement(undefined, undefined, f.createIdentifier('acc')),\n ])\n return f.createParameterDeclaration(\n p.modifiers,\n p.dotDotDotToken,\n newBinding,\n p.questionToken,\n p.type,\n p.initializer,\n )\n })\n\n // Build new render function\n const newRenderFn = ts.isArrowFunction(renderFn)\n ? f.createArrowFunction(\n renderFn.modifiers,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n finalBody,\n )\n : f.createFunctionExpression(\n renderFn.modifiers,\n renderFn.asteriskToken,\n renderFn.name,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n finalBody as ts.Block,\n )\n\n // Rebuild the each() call with the new render property\n const newProps = arg.properties.map((prop) =>\n prop === renderProp ? f.createPropertyAssignment('render', newRenderFn) : prop,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Auto-memoize each() items accessor ──────────────────────────\n\nconst ALLOCATING_METHODS = new Set([\n 'filter',\n 'map',\n 'slice',\n 'sort',\n 'reverse',\n 'concat',\n 'flat',\n 'flatMap',\n 'reduce',\n])\n\n/**\n * Detect whether an expression body contains array-allocating operations\n * that would produce a new array on every call.\n */\nfunction accessorAllocatesArray(body: ts.ConciseBody | ts.Expression): boolean {\n let found = false\n function walk(n: ts.Node): void {\n if (found) return\n // .method() on something — check the method name\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.name) &&\n ALLOCATING_METHODS.has(n.expression.name.text)\n ) {\n found = true\n return\n }\n // Spread in array literal: [...x, y]\n if (ts.isArrayLiteralExpression(n) && n.elements.some((el) => ts.isSpreadElement(el))) {\n found = true\n return\n }\n // Array.from(...)\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.expression) &&\n n.expression.expression.text === 'Array' &&\n ts.isIdentifier(n.expression.name) &&\n n.expression.name.text === 'from'\n ) {\n found = true\n return\n }\n ts.forEachChild(n, walk)\n }\n walk(body)\n return found\n}\n\n/**\n * Wrap `each({ items: (s) => s.x.filter(...) })` in `memo()` with a bitmask,\n * so the filter is only re-run when its dependencies change. For items accessors\n * that don't allocate (e.g. `(s) => s.items`), each's built-in same-ref fast\n * path already suffices — no wrap needed.\n *\n * Returns null if no wrapping was applied.\n */\nfunction tryWrapEachItemsWithMemo(\n eachCall: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n let itemsProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'items') {\n itemsProp = prop\n break\n }\n }\n if (!itemsProp) return null\n\n const accessor = itemsProp.initializer\n if (!ts.isArrowFunction(accessor) && !ts.isFunctionExpression(accessor)) return null\n\n // Don't wrap if it's already wrapped (call expression like memo(...) or similar)\n // We only wrap raw arrow functions.\n\n // Skip if the body doesn't allocate — each's own ref check handles those.\n const body = ts.isArrowFunction(accessor) ? accessor.body : accessor.body\n if (!accessorAllocatesArray(body)) return null\n\n const { mask, readsState } = computeAccessorMask(accessor, fieldBits)\n if (mask === 0 && !readsState) return null // constant, nothing to memoize\n const finalMask = mask === 0 && readsState ? 0xffffffff | 0 : mask\n\n // Wrap: memo(accessor, mask)\n const wrapped = f.createCallExpression(f.createIdentifier('memo'), undefined, [\n accessor,\n createMaskLiteral(f, finalMask),\n ])\n\n const newProps = arg.properties.map((p) =>\n p === itemsProp ? f.createPropertyAssignment('items', wrapped) : p,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Subtree collapse: nested elements → elTemplate ──────────────\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\ninterface AnalyzedNode {\n tag: string\n localName: string\n /** Static HTML attributes (class, id, etc.) */\n staticAttrs: Array<[string, string]>\n /** Event handlers: [eventName, handlerExpression] */\n events: Array<[string, ts.Expression]>\n /** Reactive bindings: [mask, maskHi, kind, key, accessor]. `maskHi` is\n * 0 for low-word-only bindings (the common case) and a non-zero\n * high-word mask when the accessor reads a prefix at bit position\n * 31..61. Emit serializes maskHi as a 5th tuple slot only when\n * non-zero — see `__bind` / elSplit's tuple-length detection. */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Children: analyzed elements, static text, or reactive text */\n children: AnalyzedChild[]\n /** Path from template root as childNodes indices */\n path: number[]\n}\n\ntype AnalyzedChild =\n | { type: 'element'; node: AnalyzedNode }\n | { type: 'staticText'; value: string }\n | {\n type: 'reactiveText'\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }\n\n/**\n * Try to analyze an element call and all its descendants as a collapsible subtree.\n * Returns null if any part of the tree is not eligible for collapse.\n */\nfunction analyzeSubtree(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n path: number[],\n fieldBitsHi: Map<string, number> = new Map(),\n): AnalyzedNode | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const tag = helpers.get(localName)\n if (!tag) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // In that case, treat it as no props + children=firstArg.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n const childrenArg = usesChildrenOnlyOverload ? firstArg : node.arguments[1]\n\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) return null\n\n const staticAttrs: Array<[string, string]> = []\n const events: Array<[string, ts.Expression]> = []\n const bindings: Array<[number, number, string, string, ts.Expression]> = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) return null\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name\n } else {\n return null\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n events.push([key.slice(2).toLowerCase(), value])\n continue\n }\n\n // Resolve identifier → local const arrow initializer (see elSplit\n // path for the full rationale).\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n value,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n if (mask === 0 && maskHi === 0 && !readsState) {\n // Constant fold — treat as static if we can extract a string\n const staticVal = tryExtractStaticString(value)\n if (staticVal !== null) {\n const attrKey = kind === 'class' ? 'class' : resolvedKey\n staticAttrs.push([attrKey, staticVal])\n continue\n }\n }\n const finalMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n bindings.push([finalMask, maskHi, kind, resolvedKey, value])\n continue\n }\n\n // Per-item accessor call\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Per-item property access: item.field (or hoisted __a0/__a1/…)\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Static literal prop\n if (ts.isStringLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (ts.isNumericLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (value.kind === ts.SyntaxKind.TrueKeyword) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, ''])\n continue\n }\n\n // Non-literal prop — can't collapse\n return null\n }\n }\n\n // Analyze children\n const children: AnalyzedChild[] = []\n\n if (childrenArg && ts.isArrayLiteralExpression(childrenArg)) {\n let childIdx = 0\n for (const child of childrenArg.elements) {\n // String literal child — static text node\n if (ts.isStringLiteral(child) || ts.isNoSubstitutionTemplateLiteral(child)) {\n children.push({ type: 'staticText', value: child.text })\n childIdx++\n continue\n }\n\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (child.arguments.length >= 1 && ts.isStringLiteral(child.arguments[0]!)) {\n children.push({ type: 'staticText', value: child.arguments[0]!.text })\n childIdx++ // static text creates a text node in the template DOM\n continue\n }\n // Reactive text — accessor is first arg\n const accessor = child.arguments[0]!\n if (ts.isArrowFunction(accessor) || ts.isFunctionExpression(accessor)) {\n const { mask, maskHi, readsState } = computeAccessorMask(\n accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n children.push({\n type: 'reactiveText',\n accessor,\n mask: mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask,\n maskHi,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text: text(item(t => t.label))\n if (ts.isCallExpression(accessor) && isPerItemCall(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text via property access: text(item.label)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup.\n if (isPerItemFieldAccess(accessor) || isHoistedPerItem(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++\n continue\n }\n return null // unsupported text() form\n }\n\n // Element helper call — recurse\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n helpers.has(child.expression.text)\n ) {\n const childNode = analyzeSubtree(\n child,\n helpers,\n fieldBits,\n [...path, childIdx],\n fieldBitsHi,\n )\n if (!childNode) return null\n children.push({ type: 'element', node: childNode })\n childIdx++\n continue\n }\n\n // Anything else (each, branch, show, arbitrary expressions) — bail\n return null\n }\n\n // Note: mixed static + reactive text in the same parent is now supported\n // because reactive text uses <!--$--> comment placeholders that break\n // text-node merging at parse time.\n } else if (childrenArg && childrenArg.kind !== ts.SyntaxKind.NullKeyword) {\n // Non-array children (e.g., spread, variable) — bail\n return null\n }\n\n return { tag, localName, staticAttrs, events, bindings, children, path }\n}\n\nfunction tryExtractStaticString(accessor: ts.ArrowFunction | ts.FunctionExpression): string | null {\n const body = ts.isArrowFunction(accessor) ? accessor.body : null\n if (body && ts.isStringLiteral(body)) return body.text\n return null\n}\n\n/**\n * Check if a subtree has any nested element children (worth collapsing).\n */\nfunction hasNestedElements(node: AnalyzedNode): boolean {\n return node.children.some((c) => c.type === 'element')\n}\n\n/**\n * Collect all local helper names used in the subtree for import cleanup.\n */\nfunction collectUsedHelpers(node: AnalyzedNode, out: Set<string>): void {\n out.add(node.localName)\n for (const child of node.children) {\n if (child.type === 'element') collectUsedHelpers(child.node, out)\n }\n}\n\n/**\n * Build the static HTML string from an analyzed subtree.\n */\nfunction buildTemplateHTML(node: AnalyzedNode): string {\n let html = `<${node.tag}`\n for (const [key, value] of node.staticAttrs) {\n html += ` ${key}=\"${escapeAttr(value)}\"`\n }\n html += '>'\n\n if (VOID_ELEMENTS.has(node.tag)) return html\n\n for (let ci = 0; ci < node.children.length; ci++) {\n const child = node.children[ci]!\n if (child.type === 'staticText') {\n html += escapeHTML(child.value)\n } else if (child.type === 'element') {\n html += buildTemplateHTML(child.node)\n } else if (child.type === 'reactiveText') {\n // When the reactive text is not adjacent to another text-type child,\n // we can use a literal text node placeholder instead of a comment.\n // The cloned text node is reused in the patch function — no\n // createTextNode + replaceChild needed. This saves 2 DOM operations\n // per text binding per row.\n //\n // When adjacent text WOULD cause HTML-parser merging (two text nodes\n // collapse into one), we fall back to the comment placeholder.\n const prev = ci > 0 ? node.children[ci - 1]! : null\n const next = ci < node.children.length - 1 ? node.children[ci + 1]! : null\n const adjText =\n prev?.type === 'staticText' ||\n prev?.type === 'reactiveText' ||\n next?.type === 'staticText' ||\n next?.type === 'reactiveText'\n if (adjText) {\n html += '<!--$-->'\n } else {\n // Space character becomes a Text node in the cloned template.\n // Mark the child so the patch codegen knows to skip replaceChild.\n html += ' '\n ;(child as { inlineText?: boolean }).inlineText = true\n }\n }\n }\n\n html += `</${node.tag}>`\n return html\n}\n\ninterface PatchOp {\n /** Variable name for this node (e.g., __n0) */\n varName: string\n /** Expression to walk to this node from root */\n walkExpr: ts.Expression\n /** Event listeners to attach */\n events: Array<[string, ts.Expression]>\n /** Bindings to register via __bind: [mask, maskHi, kind, key, accessor] */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Reactive text children — reference existing placeholder text nodes */\n reactiveTexts: Array<{\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }>\n}\n\n/**\n * Collect all patch operations from an analyzed subtree.\n */\nfunction collectPatchOps(\n node: AnalyzedNode,\n f: ts.NodeFactory,\n rootExpr: ts.Expression,\n ops: PatchOp[],\n counter: { n: number; t: number },\n): void {\n const hasDynamic =\n node.events.length > 0 ||\n node.bindings.length > 0 ||\n node.children.some((c) => c.type === 'reactiveText')\n\n let nodeExpr = rootExpr\n\n if (hasDynamic) {\n const varName = `__n${counter.n++}`\n // Build walk expression: root.childNodes[i].childNodes[j]...\n nodeExpr = f.createIdentifier(varName)\n ops.push({\n varName,\n walkExpr: buildWalkExpr(node.path, f),\n events: node.events,\n bindings: node.bindings,\n reactiveTexts: node.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Recurse into element children\n for (const child of node.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, nodeExpr, ops, counter)\n }\n }\n}\n\nfunction buildWalkExpr(path: number[], f: ts.NodeFactory): ts.Expression {\n let expr: ts.Expression = f.createIdentifier('root')\n for (const idx of path) {\n // Use firstChild + nextSibling chain instead of childNodes[n]\n // firstChild/nextSibling are direct pointer lookups, childNodes is a live NodeList\n expr = f.createPropertyAccessExpression(expr, 'firstChild')\n for (let i = 0; i < idx; i++) {\n expr = f.createPropertyAccessExpression(expr, 'nextSibling')\n }\n }\n return expr\n}\n\n/**\n * Emit elTemplate(htmlString, (root, __bind) => { ... }) call.\n */\nfunction emitSubtreeTemplate(\n analyzed: AnalyzedNode,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const html = buildTemplateHTML(analyzed)\n const ops: PatchOp[] = []\n const counter = { n: 0, t: 0 }\n\n // Collect root-level patches\n const rootHasDynamic =\n analyzed.events.length > 0 ||\n analyzed.bindings.length > 0 ||\n analyzed.children.some((c) => c.type === 'reactiveText')\n\n if (rootHasDynamic) {\n ops.push({\n varName: '', // use 'root' directly\n walkExpr: f.createIdentifier('root'),\n events: analyzed.events,\n bindings: analyzed.bindings,\n reactiveTexts: analyzed.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Collect child patches\n for (const child of analyzed.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, f.createIdentifier('root'), ops, counter)\n }\n }\n\n // Collect delegatable events: group by event type across all ops\n // Events on child nodes with the same type are delegated to the root\n const delegatableEvents = new Map<string, Array<{ nodeVar: string; handler: ts.Expression }>>()\n for (const op of ops) {\n for (const [eventName, handler] of op.events) {\n if (!op.varName) {\n // Root-level events — can't delegate further up\n continue\n }\n const list = delegatableEvents.get(eventName)\n if (list) list.push({ nodeVar: op.varName, handler })\n else delegatableEvents.set(eventName, [{ nodeVar: op.varName, handler }])\n }\n }\n\n // Build patch function body\n const stmts: ts.Statement[] = []\n\n for (const op of ops) {\n const nodeRef = op.varName ? f.createIdentifier(op.varName) : f.createIdentifier('root')\n\n // Variable declaration for walking to node\n if (op.varName) {\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(op.varName, undefined, undefined, op.walkExpr)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // Non-delegatable events (root-level or single-use event types)\n for (const [eventName, handler] of op.events) {\n const delegated = delegatableEvents.get(eventName)\n if (op.varName && delegated && delegated.length >= 2) continue // handled below\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(nodeRef, 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), handler],\n ),\n ),\n )\n }\n\n // Reactive text children — walk to placeholder, create text node, bind\n for (const rt of op.reactiveTexts) {\n const tVar = `__t${counter.t++}`\n const isInline = !!(rt as { inlineText?: boolean }).inlineText\n\n if (isInline) {\n // Inline text placeholder: the template HTML has a space character\n // that cloneNode already created as a Text node. Walk to it and\n // bind directly — no createTextNode, no replaceChild.\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(tVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n } else {\n // Comment placeholder: create a new text node and replace the comment.\n const cVar = `__c${counter.t - 1}`\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(cVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n tVar,\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__dom'), 'createTextNode'),\n undefined,\n [f.createStringLiteral('')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(cVar), 'parentNode'),\n 'replaceChild',\n ),\n undefined,\n [f.createIdentifier(tVar), f.createIdentifier(cVar)],\n ),\n ),\n )\n }\n // __bind(__t0, mask, 'text', undefined, accessor, [maskHi])\n const rtArgs: ts.Expression[] = [\n f.createIdentifier(tVar),\n createMaskLiteral(f, rt.mask),\n f.createStringLiteral('text'),\n f.createIdentifier('undefined'),\n rt.accessor,\n ]\n // Only pass the 6th positional arg when the accessor reads a\n // high-word prefix. Keeps the emit byte-identical to the\n // pre-multi-word baseline for the common case.\n if (rt.maskHi !== 0) rtArgs.push(createMaskLiteral(f, rt.maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, rtArgs),\n ),\n )\n }\n\n // Reactive bindings — __bind(node, mask, kind, key, accessor, [maskHi])\n for (const [mask, maskHi, kind, key, accessor] of op.bindings) {\n const args: ts.Expression[] = [\n nodeRef,\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n key ? f.createStringLiteral(key) : f.createIdentifier('undefined'),\n accessor,\n ]\n if (maskHi !== 0) args.push(createMaskLiteral(f, maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, args),\n ),\n )\n }\n }\n\n // Emit delegated event listeners on root\n for (const [eventName, entries] of delegatableEvents) {\n if (entries.length < 2) continue\n // root.onclick = (e) => { if (n1.contains(e.target)) { h1(); return } if (n2.contains(e.target)) { h2(); return } }\n const eParam = f.createIdentifier('__e')\n const eTarget = f.createPropertyAccessExpression(eParam, 'target')\n\n const ifStmts: ts.Statement[] = []\n for (const { nodeVar, handler } of entries) {\n // if (nodeVar.contains(e.target)) { handler(e); return }\n ifStmts.push(\n f.createIfStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier(nodeVar), 'contains'),\n undefined,\n [eTarget],\n ),\n f.createBlock(\n [\n f.createExpressionStatement(f.createCallExpression(handler, undefined, [eParam])),\n f.createReturnStatement(),\n ],\n true,\n ),\n ),\n )\n }\n\n const delegateHandler = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(ifStmts, true),\n )\n\n // root.addEventListener(eventName, handler)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('root'), 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), delegateHandler],\n ),\n ),\n )\n }\n\n // (root, __bind, __dom) => { ... }\n const patchFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'root'),\n f.createParameterDeclaration(undefined, undefined, '__bind'),\n f.createParameterDeclaration(undefined, undefined, '__dom'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n\n const call = f.createCallExpression(f.createIdentifier('elTemplate'), undefined, [\n f.createStringLiteral(html),\n patchFn,\n ])\n\n return call\n}\n\n// ── Static subtree detection ─────────────────────────────────────\n\nfunction isStaticChildren(children: ts.Expression): boolean {\n if (children.kind === ts.SyntaxKind.NullKeyword) return true\n if (!ts.isArrayLiteralExpression(children)) return false\n return children.elements.every((child) => {\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n return child.arguments.length === 1 && ts.isStringLiteral(child.arguments[0]!)\n }\n // Another elSplit or element helper that was already determined static\n // For now, only handle text() children\n return false\n })\n}\n\nfunction buildStaticHTML(\n tag: string,\n staticProps: ts.Statement[],\n children: ts.Expression,\n _f: ts.NodeFactory,\n): string | null {\n // Extract static attributes from staticFn statements\n let attrs = ''\n for (const stmt of staticProps) {\n if (!ts.isExpressionStatement(stmt)) return null\n const expr = stmt.expression\n // __e.className = 'value'\n if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {\n const prop = expr.left.name.text\n if (prop === 'className' && ts.isStringLiteral(expr.right)) {\n attrs += ` class=\"${escapeAttr(expr.right.text)}\"`\n }\n }\n // __e.setAttribute('key', 'value')\n if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {\n if (expr.expression.name.text === 'setAttribute' && expr.arguments.length === 2) {\n const key = expr.arguments[0]\n const val = expr.arguments[1]\n if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {\n attrs += ` ${key.text}=\"${escapeAttr(val.text)}\"`\n } else {\n return null // non-literal attribute\n }\n }\n }\n }\n\n // Extract text children\n let inner = ''\n if (ts.isArrayLiteralExpression(children)) {\n for (const child of children.elements) {\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (ts.isStringLiteral(child.arguments[0]!)) {\n inner += escapeHTML(child.arguments[0]!.text)\n } else {\n return null\n }\n } else {\n return null\n }\n }\n }\n\n return `<${tag}${attrs}>${inner}</${tag}>`\n}\n\nfunction escapeHTML(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nfunction escapeAttr(s: string): string {\n return s.replace(/&/g, '&').replace(/\"/g, '"')\n}\n\nfunction emitTemplateClone(html: string, f: ts.NodeFactory): ts.Expression {\n // Emits: __cloneStaticTemplate(\"<html>\")\n //\n // The helper lives in `@llui/dom` and threads through `ctx.dom` so SSR\n // under jsdom/linkedom works without touching globalThis. The import\n // cleanup pass (see cleanupImports) auto-injects the import when this\n // emission fires.\n return f.createCallExpression(f.createIdentifier('__cloneStaticTemplate'), undefined, [\n f.createStringLiteral(html),\n ])\n}\n\nfunction isPerItemCall(node: ts.CallExpression): boolean {\n // Matches: item(t => t.field) or item(t => expr)\n // where item is an identifier (the scoped accessor from each() render)\n if (!ts.isIdentifier(node.expression)) return false\n // Check that the first argument is an arrow function (the selector)\n if (node.arguments.length !== 1) return false\n const arg = node.arguments[0]!\n return ts.isArrowFunction(arg) || ts.isFunctionExpression(arg)\n}\n\n// Matches: item.FIELD — the item-proxy shorthand equivalent of item(t => t.FIELD).\n// Lifetime-checked: the `item` identifier must resolve to a parameter of an\n// `each({ render })` callback. Without this check, plain\n// `arr.map((item) => item.field)` outside each() would be rewritten as a\n// per-item binding and crash at runtime with \"accessor is not a function\"\n// because `item.field` evaluates to a bare value (not a function) when\n// treated as an accessor.\nfunction isPerItemFieldAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n if (!ts.isPropertyAccessExpression(node)) return false\n if (!ts.isIdentifier(node.expression)) return false\n if (node.expression.text !== 'item') return false\n if (!ts.isIdentifier(node.name)) return false\n return isItemBoundToEachRender(node)\n}\n\n/**\n * Walks up from a node and returns true iff the nearest enclosing function\n * that binds an `item` parameter is the `render` property of an `each()`\n * call. Handles both positional (`(item) => …`) and destructured\n * (`({ item, index }) => …`) parameter bindings.\n */\nfunction isItemBoundToEachRender(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n if (functionParamsBindItem(current)) {\n return isEachRenderCallback(current)\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction functionParamsBindItem(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n for (const param of fn.parameters) {\n if (bindingNameBindsItem(param.name)) return true\n }\n return false\n}\n\nfunction bindingNameBindsItem(name: ts.BindingName): boolean {\n if (ts.isIdentifier(name)) return name.text === 'item'\n if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el) && bindingNameBindsItem(el.name)) return true\n }\n }\n return false\n}\n\nfunction isEachRenderCallback(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n const parent = fn.parent\n if (!parent || !ts.isPropertyAssignment(parent)) return false\n if (!ts.isIdentifier(parent.name) || parent.name.text !== 'render') return false\n const objLit = parent.parent\n if (!objLit || !ts.isObjectLiteralExpression(objLit)) return false\n const call = objLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression) || call.expression.text !== 'each') return false\n return true\n}\n\n// Matches the hoisted identifiers produced by tryDeduplicateItemSelectors: __a0, __a1, …\n// These represent already-cached per-item accessors.\nfunction isHoistedPerItem(node: ts.Node): node is ts.Identifier {\n if (!ts.isIdentifier(node)) return false\n return /^__a\\d+$/.test(node.text)\n}\n\n// ── Mask computation ─────────────────────────────────────────────\n\n// Returns { mask, readsState }\n// mask = 0 + readsState = false → constant (can fold to static)\n// mask = 0 + readsState = true → unresolvable state access (FULL_MASK)\n// mask > 0 → precise mask\n// See `NON_DELEGATION_HELPERS` in collect-deps.ts — same set of names\n// that aren't followed when scanning for `helper(s)` delegation calls.\nconst NON_DELEGATION_HELPERS = new Set(['sample', 'item', 'memo', 'text', 'unsafeHtml'])\n\nfunction computeAccessorMask(\n accessor: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration,\n fieldBits: Map<string, number>,\n visited: Set<ts.Node> = new Set(),\n fieldBitsHi?: Map<string, number>,\n): { mask: number; maskHi: number; readsState: boolean } {\n if (visited.has(accessor)) return { mask: 0, maskHi: 0, readsState: false }\n visited.add(accessor)\n\n if (accessor.parameters.length === 0)\n return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n const paramName = accessor.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n // FunctionDeclaration always has a body (we never resolve overloads here);\n // ArrowFunction's body may be a single expression. Both shapes are walked\n // identically by ts.forEachChild, so no special-casing is needed below.\n if (!accessor.body) return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n const stateParam = paramName.text\n let mask = 0\n let maskHi = 0\n let readsState = false\n\n // `inNestedFn` gates only the delegation-recursion. Property-access\n // path extraction happens everywhere — inner-arrow callbacks like\n // `s.items.filter((i) => i.includes(s.filter))` close over our\n // state, and their `s.filter` reads contribute to the mask.\n function walk(node: ts.Node, inNestedFn: boolean): void {\n // `node.parent` can be undefined for synthetic nodes produced by\n // earlier AST-transform passes (the row-factory rewrite and the\n // per-item heuristic both build new sub-trees whose inner nodes\n // have no parent pointers). Guard every parent access below —\n // crashing the whole build on a perfectly valid reactive accessor\n // like `text((_s) => \\`$${item.x.toLocaleString()}\\`)` was how\n // this bug first surfaced in the persistent-layout example work.\n const parent = node.parent\n if (ts.isIdentifier(node) && node.text === stateParam && (!parent || !ts.isParameter(parent))) {\n readsState = true\n }\n if (ts.isPropertyAccessExpression(node)) {\n // When there's no parent we can't tell if this is the top of a\n // chain, so we resolve from here. That's still correct for mask\n // accounting: `resolveChain` on an inner PAE produces a prefix\n // of the outer chain, which maps to the same `fieldBits` bit\n // via the prefix-match loop below. Worst case we resolve the\n // same chain twice (`|=` is idempotent); best case we'd have\n // resolved once from the real top. Correctness unchanged.\n if (!parent || !ts.isPropertyAccessExpression(parent)) {\n const chain = resolveChain(node, stateParam)\n if (chain) {\n const bit = fieldBits.get(chain)\n const bitHi = fieldBitsHi?.get(chain)\n if (bit !== undefined) {\n mask |= bit\n } else if (bitHi !== undefined) {\n maskHi |= bitHi\n } else {\n // Match paths that overlap our chain in either direction:\n // - `path` extends `chain` — fieldBits has finer-grained paths\n // than we're reading (e.g. chain='user', fieldBits has\n // 'user.email').\n // - `chain` extends `path` — we're reading deeper than what\n // fieldBits tracks (e.g. chain='items.filter' from\n // `s.items.filter(...)`, fieldBits has 'items'). Both ends\n // must mask in: a change to `items` invalidates anything\n // downstream of it.\n for (const [path, b] of fieldBits) {\n if (path === chain || path.startsWith(chain + '.') || chain.startsWith(path + '.')) {\n mask |= b\n }\n }\n if (fieldBitsHi) {\n for (const [path, b] of fieldBitsHi) {\n if (\n path === chain ||\n path.startsWith(chain + '.') ||\n chain.startsWith(path + '.')\n ) {\n maskHi |= b\n }\n }\n }\n }\n }\n }\n }\n // Delegation: `helper(s)` where `s` matches our state param.\n // Recurse into the helper's body so its state-path reads\n // contribute to our mask. Only at top level — inside a nested\n // function body, `s` may be shadowed and the call isn't\n // unambiguously handing our state in.\n if (!inNestedFn && ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n const calleeName = node.expression.text\n if (!NON_DELEGATION_HELPERS.has(calleeName)) {\n const arg0 = node.arguments[0]\n if (arg0 && ts.isIdentifier(arg0) && arg0.text === stateParam) {\n const resolved = resolveAccessorBody(node.expression)\n if (resolved) {\n const inner = computeAccessorMask(resolved, fieldBits, visited, fieldBitsHi)\n mask |= inner.mask\n maskHi |= inner.maskHi\n if (inner.readsState) readsState = true\n }\n }\n }\n }\n const enteringNested =\n ts.isArrowFunction(node) || ts.isFunctionExpression(node) || ts.isFunctionDeclaration(node)\n ts.forEachChild(node, (child) => walk(child, inNestedFn || enteringNested))\n }\n\n walk(accessor.body, false)\n\n if (mask === 0 && maskHi === 0 && readsState) {\n return { mask: 0xffffffff | 0, maskHi: 0, readsState: true }\n }\n return { mask, maskHi, readsState }\n}\n\nfunction resolveChain(node: ts.PropertyAccessExpression, paramName: string): string | null {\n const parts: string[] = []\n let current: ts.Expression = node\n\n while (ts.isPropertyAccessExpression(current)) {\n parts.unshift(current.name.text)\n current = current.expression\n }\n\n if (!ts.isIdentifier(current) || current.text !== paramName) return null\n if (parts.length > 2) return parts.slice(0, 2).join('.')\n return parts.join('.')\n}\n\n// ── 'use client' directive ───────────────────────────────────────\n\nexport interface UseClientTransformResult {\n output: string\n warnings: string[]\n}\n\n/**\n * If `source` begins with a `'use client'` directive, generate a stub\n * replacement for the SSR build. Every `export const X = <expr>` becomes\n * `export const X = __clientOnlyStub('X')`, every `export function X`\n * becomes a stub, and `export default <expr>` becomes a default stub.\n * Returns `null` if the directive is absent (caller should fall through\n * to the normal compiler pass).\n *\n * The client build is expected to skip this path entirely — Vite passes\n * `{ ssr: false }` there, and the plugin checks that before invoking\n * this function.\n *\n * Shapes this v1 does NOT handle (emits a warning + leaves them out of\n * the stub output):\n *\n * - `export function foo() {}` and `export class Foo {}` — rewritten\n * as stubs but the caller may be surprised that `foo` and `Foo` are\n * ComponentDef-shaped objects during SSR.\n * - `export { a, b } from './other.js'` — re-export forms are not\n * detected; they pass through and will still pull `./other` into\n * the SSR graph.\n * - `export * from './other.js'` — same as above.\n * - `export type ...` — type exports are erased by TS so nothing to\n * stub; left untouched.\n */\nexport function transformUseClientSsr(\n source: string,\n _filename: string,\n): UseClientTransformResult | null {\n const sourceFile = ts.createSourceFile('input.ts', source, ts.ScriptTarget.Latest, true)\n\n // Find the first non-comment, non-directive-whitespace statement.\n // 'use client' should be the literal first statement in the file.\n const first = sourceFile.statements[0]\n if (!first) return null\n if (!ts.isExpressionStatement(first)) return null\n if (!ts.isStringLiteral(first.expression)) return null\n if (first.expression.text !== 'use client') return null\n\n const warnings: string[] = []\n const namedExports: string[] = []\n let hasDefaultExport = false\n\n for (const stmt of sourceFile.statements) {\n // The `'use client'` directive itself — skip.\n if (stmt === first) continue\n\n // `export const NAME = ...` and `export let NAME = ...`\n if (\n ts.isVariableStatement(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)\n ) {\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name)) {\n namedExports.push(decl.name.text)\n } else {\n warnings.push(\n '[llui/use-client] destructured `export const { ... }` is not supported; each binding would have to be stubbed individually. Refactor to one `export const` per value.',\n )\n }\n }\n continue\n }\n\n // `export function NAME() {}`\n if (\n ts.isFunctionDeclaration(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) &&\n stmt.name\n ) {\n namedExports.push(stmt.name.text)\n continue\n }\n\n // `export class NAME {}`\n if (\n ts.isClassDeclaration(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) &&\n stmt.name\n ) {\n namedExports.push(stmt.name.text)\n continue\n }\n\n // `export default ...`\n if (\n ts.isExportAssignment(stmt) ||\n (ts.isFunctionDeclaration(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword))\n ) {\n hasDefaultExport = true\n continue\n }\n\n // `export { a, b }` / `export { a } from './x.js'` / `export * from './x.js'`\n if (ts.isExportDeclaration(stmt)) {\n if (stmt.moduleSpecifier) {\n warnings.push(\n \"[llui/use-client] `export ... from '...'` re-export forms still pull the source module into the SSR graph and bypass stubbing. Either drop the re-export or move the 'use client' directive to the source module.\",\n )\n } else if (stmt.exportClause && ts.isNamedExports(stmt.exportClause)) {\n for (const spec of stmt.exportClause.elements) {\n namedExports.push((spec.name ?? spec.propertyName!).text)\n }\n }\n continue\n }\n\n // Type-only statements are erased at runtime — nothing to stub.\n if (ts.isTypeAliasDeclaration(stmt) || ts.isInterfaceDeclaration(stmt)) continue\n\n // Imports, `import type`, enum declarations, plain (non-export)\n // variable statements — dropped from the stub output.\n }\n\n // Build the generated module source.\n const lines: string[] = [\"import { __clientOnlyStub } from '@llui/dom'\", '']\n for (const name of namedExports) {\n lines.push(`export const ${name} = __clientOnlyStub(${JSON.stringify(name)})`)\n }\n if (hasDefaultExport) {\n lines.push('export default __clientOnlyStub(\"default\")')\n }\n\n return {\n output: lines.join('\\n') + '\\n',\n warnings,\n }\n}\n\n/**\n * Check whether `source`'s first statement is a `'use client'` directive.\n * Cheap string scan so the caller can decide which transform to run\n * without parsing the whole file twice.\n */\nexport function hasUseClientDirective(source: string): boolean {\n // Skip leading whitespace and block/line comments; look for the\n // first token. A full parse is overkill here — users who write\n // `'use client'` in any other position (inside a function, after\n // imports) aren't using the directive as React/Vercel define it.\n let i = 0\n const len = source.length\n while (i < len) {\n const ch = source[i]!\n if (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n i++\n continue\n }\n if (source.startsWith('//', i)) {\n const nl = source.indexOf('\\n', i)\n if (nl === -1) return false\n i = nl + 1\n continue\n }\n if (source.startsWith('/*', i)) {\n const end = source.indexOf('*/', i + 2)\n if (end === -1) return false\n i = end + 2\n continue\n }\n break\n }\n return source.startsWith(\"'use client'\", i) || source.startsWith('\"use client\"', i)\n}\n\n// ── Compiler cache helpers ────────────────────────────────────────\n\n/**\n * Extract the view function body (the value of the `view:` property) from\n * a component() config object literal. Uses a regex heuristic — good enough\n * for round-tripping source for dev/agent tools.\n */\nexport function extractViewBody(code: string): string | null {\n const match =\n /\\bview\\s*:\\s*([\\s\\S]*?)(?=,\\s*(?:onEffect|update|init|name|onMsg)\\s*:|}\\s*\\))/m.exec(code)\n return match?.[1]?.trim() ?? null\n}\n\n/**\n * Extract the component `name:` string literal from a component() call's\n * first argument object literal in the source text.\n */\nexport function extractComponentNameFromConfig(node: ts.CallExpression): string | null {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n return prop.initializer.text\n }\n }\n return null\n}\n\n/**\n * Generate Object.defineProperty calls for __preSource, __postSource,\n * __msgMaskMap, and __bindingSources on a component variable. These are\n * non-enumerable so they don't appear in JSON.stringify(componentDef) but are\n * visible to devtools.\n */\nexport function generateCompilerCacheProps(varName: string, componentName: string): string {\n const entry = compilerCache.get(componentName)\n if (!entry) return ''\n return (\n `\\nObject.defineProperty(${varName}, '__preSource', { value: ${JSON.stringify(entry.preSource)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__postSource', { value: ${JSON.stringify(entry.postSource)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__msgMaskMap', { value: ${JSON.stringify(entry.msgMaskMap)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__bindingSources', { value: ${JSON.stringify(entry.bindingSources)}, enumerable: false, configurable: true })`\n )\n}\n\n/**\n * After the full output string is assembled, update each cached component's\n * postSource (extract view body from the transformed output), then append\n * Object.defineProperty calls for all four compiler-cache properties.\n */\nexport function appendCompilerCacheProps(\n output: string,\n componentDecls: Array<{ varName: string; componentName: string }>,\n): string {\n let result = output\n for (const { varName, componentName } of componentDecls) {\n const existing = compilerCache.get(componentName)\n if (!existing) continue\n // Update the cache entry with the post-transform view body\n const postSource = extractViewBody(output) ?? ''\n compilerCache.set(componentName, { ...existing, postSource })\n // Append non-enumerable property definitions\n result += generateCompilerCacheProps(varName, componentName)\n }\n return result\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript'\nimport { collectDeps } from './collect-deps.js'\nimport {\n resolveLocalConstInitializer,\n resolveAccessorBody,\n isMemoCallWithArrowArg,\n} from './accessor-resolver.js'\nimport {\n extractMsgSchema,\n extractEffectSchema,\n isRichField,\n type MsgField,\n type MsgSchema,\n} from './msg-schema.js'\nimport { extractMsgAnnotations, type MessageAnnotations } from './msg-annotations.js'\nimport { extractStateSchema, type StateType } from './state-schema.js'\nimport { computeSchemaHash } from './schema-hash.js'\nimport { tagDispatchHandlers, injectScopeVariantRegistrations } from './binding-descriptors.js'\nimport { compilerCache } from './compiler-cache.js'\n\nfunction createMaskLiteral(f: ts.NodeFactory, mask: number): ts.Expression {\n if (mask >= 0) return f.createNumericLiteral(mask)\n // -1 (0xFFFFFFFF | 0) — emit as bitwise OR: 0xFFFFFFFF | 0\n return f.createBinaryExpression(\n f.createNumericLiteral(0xffffffff),\n ts.SyntaxKind.BarToken,\n f.createNumericLiteral(0),\n )\n}\n\n// HTML element helper names that the compiler can transform\nconst ELEMENT_HELPERS = new Set([\n 'a',\n 'abbr',\n 'article',\n 'aside',\n 'b',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'code',\n 'dd',\n 'details',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'nav',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'pre',\n 'progress',\n 'section',\n 'select',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'video',\n])\n\nconst PROP_KEYS = new Set([\n 'value',\n 'checked',\n 'selected',\n 'disabled',\n 'readOnly',\n 'multiple',\n 'indeterminate',\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'textContent',\n])\n\ntype BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style'\n\n/**\n * A `value` at a reactive-prop position — classified for the compiler.\n *\n * Element-helper props (`{ disabled: X, class: X, title: X, ... }`) and the\n * driver accessor of structural primitives (`each.items`, `branch.on`,\n * `show.when`) accept any callable that takes the state and returns a\n * value. The compiler must distinguish recognized shapes from values it\n * can't safely classify (imports, parameters, opaque expressions) — the\n * latter must bail to the runtime helper, never to a static assignment.\n *\n * Bailing is load-bearing: emitting `__e.disabled = identifier` statically\n * when the runtime value happens to be a function silently binds the\n * function ref to the boolean DOM property and never re-runs.\n */\ntype ResolvedReactiveBinding =\n | {\n kind: 'arrow'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n | {\n kind: 'fn-decl'\n accessor: ts.FunctionDeclaration\n valueForBinding: ts.Expression\n }\n | {\n kind: 'memo-call'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n\ntype ResolvedReactiveValue =\n | ResolvedReactiveBinding\n | { kind: 'static-literal' }\n | { kind: 'bail' }\n | null\n\nfunction isStaticPrimitiveLiteral(expr: ts.Expression): boolean {\n return (\n ts.isStringLiteral(expr) ||\n ts.isNumericLiteral(expr) ||\n ts.isNoSubstitutionTemplateLiteral(expr) ||\n expr.kind === ts.SyntaxKind.TrueKeyword ||\n expr.kind === ts.SyntaxKind.FalseKeyword ||\n expr.kind === ts.SyntaxKind.NullKeyword\n )\n}\n\n/**\n * Classify a reactive-prop value. See `ResolvedReactiveValue` for the\n * contract. Returns `null` only when the value is none of the recognized\n * shapes (caller can fall back to its own branches — currently only\n * `tryTransformElementCall` does this for `isPerItemFieldAccess` /\n * `isHoistedPerItem`).\n */\nfunction classifyReactiveValue(value: ts.Expression): ResolvedReactiveValue {\n // Inline arrow / function expression at the call site\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n return { kind: 'arrow', accessor: value, valueForBinding: value }\n }\n\n // Inline `memo(arrow)` at the call site\n if (isMemoCallWithArrowArg(value)) {\n return {\n kind: 'memo-call',\n accessor: value.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n\n // Identifier — resolve and classify the resolved declaration\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (!resolved) {\n // Imported / parameter / unbound — can't prove it's a primitive,\n // can't prove it's a function. Caller must bail to runtime.\n return { kind: 'bail' }\n }\n if (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved)) {\n return { kind: 'arrow', accessor: resolved, valueForBinding: value }\n }\n if (ts.isFunctionDeclaration(resolved)) {\n return { kind: 'fn-decl', accessor: resolved, valueForBinding: value }\n }\n if (isMemoCallWithArrowArg(resolved)) {\n return {\n kind: 'memo-call',\n accessor: resolved.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n if (isStaticPrimitiveLiteral(resolved)) {\n return { kind: 'static-literal' }\n }\n // Resolved to something else (object/array/expression) — conservative\n // bail. We don't know if the runtime value is a function; the runtime\n // element helper handles both cases correctly.\n return { kind: 'bail' }\n }\n\n // Static literals at the call site\n if (isStaticPrimitiveLiteral(value)) {\n return { kind: 'static-literal' }\n }\n\n // CallExpression — caller decides (per-item, etc.)\n return null\n}\n\nfunction classifyKind(key: string): BindingKind {\n if (key === 'class' || key === 'className') return 'class'\n if (key.startsWith('style.')) return 'style'\n if (PROP_KEYS.has(key)) return 'prop'\n return 'attr'\n}\n\nfunction resolveKey(key: string, kind: BindingKind): string {\n if (kind === 'class') return 'class'\n if (kind === 'style') return key.slice(6)\n if (kind === 'prop') return key\n if (key === 'className') return 'class'\n return key\n}\n\n/**\n * Transform a source file containing @llui/dom imports.\n * Returns the transformed source or null if no transformation needed.\n */\nexport interface TransformEdit {\n start: number\n end: number\n replacement: string\n}\n\n/**\n * Pre-resolved external type sources from the cross-file resolver.\n * When the plugin's vite hook detects that `State` / `Msg` / `Effect`\n * for a `component<...>()` call are imported (not declared in the\n * current file), it walks the imports and re-exports to find the\n * declaring file, then passes the source + local name here. Each\n * extractor below uses the resolved source instead of falling back to\n * the file-local search (which would miss the type entirely).\n */\nexport interface ExternalTypeSources {\n state?: { source: string; typeName: string }\n msg?: { source: string; typeName: string }\n effect?: { source: string; typeName: string }\n}\n\n/**\n * Schemas already extracted by the plugin's async hook before invoking\n * the sync transform. Used for cases the file-local sync extractors\n * can't handle on their own:\n * - The Msg/Effect/State alias lives in another file (cross-file\n * resolution, see `cross-file-resolver.ts`).\n * - The Msg/Effect alias is a *composition* — a union mixing inline\n * `{ type: 'literal' }` members with TypeReferences pointing at\n * other (often imported) Msg unions.\n *\n * When provided, transformLlui uses these instead of running its own\n * file-local extractors. When omitted (the test path that constructs\n * a single-source string), the file-local extractors run as before.\n */\nexport interface PreExtractedSchemas {\n msgSchema?: ReturnType<typeof extractMsgSchema>\n msgAnnotations?: ReturnType<typeof extractMsgAnnotations>\n stateSchema?: ReturnType<typeof extractStateSchema>\n effectSchema?: ReturnType<typeof extractEffectSchema>\n}\n\nexport function transformLlui(\n source: string,\n _filename: string,\n devMode = false,\n emitAgentMetadata = false,\n mcpPort: number | null = 5200,\n verbose = false,\n typeSources?: ExternalTypeSources,\n preExtracted?: PreExtractedSchemas,\n): { output: string; edits: TransformEdit[] } | null {\n let sourceFile = ts.createSourceFile('input.ts', source, ts.ScriptTarget.Latest, true)\n\n // Find the @llui/dom import\n const imp = findLluiImport(sourceFile)\n if (!imp) return null\n const lluiImport = imp\n\n // Collect imported element helper names (local → original)\n const importedHelpers = getImportedHelpers(lluiImport)\n if (importedHelpers.size === 0 && !hasReactiveAccessors(sourceFile)) return null\n\n // Connect-pattern pass: detects `*.connect(get, sendFn, …)` call\n // sites and inserts a runtime `__registerScopeVariants([...])`\n // adjacent to each, with the variants statically extracted from the\n // sendFn's body. Handles the dispatch-translation case at the\n // syntactic level — handler propagation via `tagSend` covers the\n // rest. Runs FIRST so its `collectLocalFns` resolver still sees raw\n // arrow initializers in const declarations (the universal tagger\n // below replaces those initializers with `Object.assign(...)`\n // wrappers).\n //\n // Universal handler-tagger pass: walks every arrow/function\n // expression and wraps any whose body contains literal\n // `send({type:'X'})` / `dispatch({type:'X'})` calls with\n // `Object.assign(arrow, {__lluiVariants: ['X']})`. The runtime\n // (`@llui/dom` `elements.ts` / `el-split.ts`) reads the tag from\n // event-handler bindings only — so tags placed on functions in\n // non-handler positions are runtime-inert. This deliberately covers\n // three patterns at once:\n // • Inline event handlers (`onClick: () => send(...)`)\n // • Const-bound translators (`const sendMenu = (m) => dispatch(...)`)\n // • Positional-arg helpers (`navButton(label, () => dispatch(...))`)\n //\n // Both passes gated on dev/agent-metadata so production bundles\n // without agent integration don't pay the per-handler `Object.assign`\n // cost.\n let scopeRegistrationsInjected = false\n if (devMode || emitAgentMetadata) {\n const injection = injectScopeVariantRegistrations(sourceFile, ts.factory)\n sourceFile = injection.sf\n scopeRegistrationsInjected = injection.injected\n sourceFile = tagDispatchHandlers(sourceFile, ts.factory)\n }\n\n // Pass 2 pre-scan: collect all state access paths\n // Only use precise masks in files that define a component() — the __dirty\n // function is generated per-component, so bit assignments in other files\n // won't match. Files without component() get FULL_MASK on all bindings.\n const fileHasComponent = hasComponentDef(sourceFile, lluiImport)\n const { lo: fieldBits, hi: fieldBitsHi } = fileHasComponent\n ? collectDeps(source)\n : { lo: new Map<string, number>(), hi: new Map<string, number>() }\n\n if (verbose && fileHasComponent) {\n const pairs = [...fieldBits.entries()]\n .map(([path, bit]) => `${path}=${bit === -1 ? 'FULL' : bit}`)\n .join(', ')\n console.info(\n `[llui] ${_filename}: ${fieldBits.size} reactive path${fieldBits.size === 1 ? '' : 's'}` +\n (pairs.length > 0 ? ` — ${pairs}` : ''),\n )\n }\n\n // Identifier names bound to the View<S,M> helpers parameter of a `view` callback.\n // When the user writes `h.text(...)` / `h.show(...)` / `h.each(...)`, the\n // compiler treats the call as if it were a bare import call.\n const viewHelperNames = collectViewHelperNames(sourceFile, lluiImport)\n // Destructured aliases: `view: (_, { show, text: t }) => [...]` → { show→show, t→text }.\n const viewHelperAliases = collectViewHelperAliases(sourceFile, lluiImport, viewHelperNames)\n\n // Track which helpers were compiled vs bailed out\n const compiledHelpers = new Set<string>()\n const bailedHelpers = new Set<string>()\n let usesElTemplate = false\n let usesElSplit = false\n let usesMemo = false\n let usesApplyBinding = false\n let usesCloneStaticTemplate = false\n\n const f = ts.factory\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n\n // Collect source positions of transformed nodes for source mapping\n const edits: TransformEdit[] = []\n\n function visitor(node: ts.Node): ts.Node {\n // Synthetic nodes (created by ts.factory) don't have real positions\n const hasPos = node.pos >= 0 && node.end >= 0\n const origStart = hasPos ? node.getStart(sourceFile) : -1\n const origEnd = hasPos ? node.getEnd() : -1\n\n // Pass 0: each() optimizations — dedup item() selectors + auto-wrap items in memo\n if (\n ts.isCallExpression(node) &&\n isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n ) {\n let current: ts.CallExpression = node\n let changed = false\n const memoWrapped = tryWrapEachItemsWithMemo(current, fieldBits, f)\n if (memoWrapped) {\n current = memoWrapped\n changed = true\n usesMemo = true\n }\n const deduped = tryDeduplicateItemSelectors(current, f, printer, sourceFile)\n if (deduped) {\n current = deduped\n changed = true\n }\n // Inject __mask for Phase 1 gating\n const masked = tryInjectStructuralMask(\n current,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (masked) {\n current = masked\n changed = true\n }\n if (changed) {\n const result = ts.visitEachChild(current, visitor, undefined!)\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n // Row factory: try after children are transformed\n if (ts.isCallExpression(result)) {\n try {\n const rf = tryEmitRowFactory(result, f, source)\n if (rf) return rf\n } catch (err) {\n const line = ts.getLineAndCharacterOfPosition(sourceFile, result.getStart())\n console.warn(\n `[llui] Row factory failed in ${_filename}:${line.line + 1} — ${(err as Error).message}`,\n )\n }\n }\n return result\n }\n }\n\n // Pass 1: Transform element helper calls to elSplit or elTemplate\n if (ts.isCallExpression(node)) {\n const transformed = tryTransformElementCall(\n node,\n importedHelpers,\n fieldBits,\n compiledHelpers,\n bailedHelpers,\n f,\n fieldBitsHi,\n )\n if (transformed) {\n if (ts.isIdentifier(transformed.expression)) {\n if (transformed.expression.text === 'elTemplate') usesElTemplate = true\n else if (transformed.expression.text === 'elSplit') usesElSplit = true\n else if (transformed.expression.text === '__cloneStaticTemplate')\n usesCloneStaticTemplate = true\n }\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(transformed, visitor, undefined!)\n }\n\n // Pass 2: Inject mask into text() calls\n const textTransformed = tryInjectTextMask(\n node,\n lluiImport,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (textTransformed) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return textTransformed\n }\n\n // Inject __mask into each()/branch()/show() options for Phase 1 gating\n const structuralMasked = tryInjectStructuralMask(\n node,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (structuralMasked) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(structuralMasked, visitor, undefined!)\n }\n }\n\n // Pass 2: Inject __dirty, __update, and __msgSchema into component() calls\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n let result = tryInjectDirty(node, fieldBits, f, fieldBitsHi)\n if (result) usesApplyBinding = true\n\n // Extract schema data once — used both for devMode injections and the\n // unconditional __schemaHash (spec §7.4: hash ships in prod too).\n //\n // Resolution priority for each schema:\n // 1. preExtracted.* — used when the plugin's async hook has already\n // done cross-file + composition extraction (the production path).\n // 2. typeSources.* — file-local extraction against an alternate\n // source file (legacy path; covers cross-file but not composition).\n // 3. file-local — the test path: extract from `source` itself.\n //\n // When `preExtracted` is provided, treat it as authoritative even\n // when the value is `null` (the resolver was run and found\n // nothing) — falling back to local extraction would mask the\n // resolver's \"not extractable\" verdict.\n const msgSchema =\n preExtracted?.msgSchema !== undefined\n ? preExtracted.msgSchema\n : extractMsgSchema(\n typeSources?.msg?.source ?? source,\n typeSources?.msg?.typeName ?? 'Msg',\n )\n const msgAnnotations =\n preExtracted?.msgAnnotations !== undefined\n ? preExtracted.msgAnnotations\n : extractMsgAnnotations(\n typeSources?.msg?.source ?? source,\n typeSources?.msg?.typeName ?? 'Msg',\n )\n const stateSchema =\n preExtracted?.stateSchema !== undefined\n ? preExtracted.stateSchema\n : extractStateSchema(\n typeSources?.state?.source ?? source,\n typeSources?.state?.typeName ?? 'State',\n )\n\n const shouldEmitAgentMetadata = devMode || emitAgentMetadata\n if (shouldEmitAgentMetadata) {\n if (msgSchema) {\n result = injectMsgSchema(result ?? node, msgSchema, f)\n }\n if (msgAnnotations && hasNonDefaultAnnotation(msgAnnotations)) {\n result = injectMsgAnnotations(result ?? node, msgAnnotations, f)\n }\n if (stateSchema) {\n result = injectStateSchema(result ?? node, stateSchema.fields, f)\n }\n const effectSchema =\n preExtracted?.effectSchema !== undefined\n ? preExtracted.effectSchema\n : extractEffectSchema(\n typeSources?.effect?.source ?? source,\n typeSources?.effect?.typeName ?? 'Effect',\n )\n if (effectSchema) {\n result = injectEffectSchema(result ?? node, effectSchema, f)\n }\n // Note: binding descriptors are no longer emitted on the\n // component def. They're now collected at runtime by walking\n // event-handler arrows that the `tagEventHandlerSends` pass\n // wrapped with `__lluiVariants` metadata. See\n // `binding-descriptors.ts` (compiler) and the matching\n // `@llui/dom binding-descriptors.ts` (runtime registry).\n\n // Populate compiler cache — preSource and msgMaskMap are known now;\n // postSource is filled in after the full output is assembled.\n const cachedComponentName = extractComponentNameFromConfig(node)\n if (cachedComponentName) {\n const preSource = extractViewBody(source) ?? ''\n const msgMaskMap: Record<string, number> = {}\n for (const [path, bit] of fieldBits) {\n msgMaskMap[path] = bit\n }\n compilerCache.set(cachedComponentName, {\n preSource,\n postSource: '',\n msgMaskMap,\n bindingSources: [],\n })\n }\n }\n if (devMode) {\n result = injectComponentMeta(result ?? node, node, sourceFile, _filename, f)\n }\n\n // __schemaHash is always emitted (not dev-gated) — runtime uses it to\n // gate hello-frame re-sends during hot-reload in prod builds too.\n const schemaHash = computeSchemaHash({\n msgSchema: msgSchema ?? null,\n stateSchema: stateSchema ?? null,\n msgAnnotations,\n })\n result = injectSchemaHash(result ?? node, schemaHash, f)\n\n if (result) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(result, visitor, undefined!)\n }\n }\n\n return ts.visitEachChild(node, visitor, undefined!)\n }\n\n let transformed = ts.visitNode(sourceFile, visitor) as ts.SourceFile\n\n // Pass 3: Clean up imports — use the old cleanupImports approach\n // which operates on the transformed SourceFile safely\n const safeToRemove = new Set([...compiledHelpers].filter((h) => !bailedHelpers.has(h)))\n transformed = cleanupImports(\n transformed,\n lluiImport,\n importedHelpers,\n safeToRemove,\n usesElSplit,\n usesElTemplate,\n usesMemo,\n usesApplyBinding,\n usesCloneStaticTemplate,\n scopeRegistrationsInjected,\n f,\n )\n\n if (edits.length === 0) return null\n\n // Find component declarations for HMR and agent metadata\n const componentDecls =\n devMode || emitAgentMetadata ? findComponentDeclarations(sourceFile, lluiImport) : []\n\n // Build per-statement edits by comparing original vs transformed.\n // Only emit edits for statements that actually changed.\n // Untouched code keeps its original positions → accurate source maps.\n const finalEdits: TransformEdit[] = []\n const origStmts = sourceFile.statements\n const xfStmts = transformed.statements\n\n for (let i = 0; i < origStmts.length && i < xfStmts.length; i++) {\n const origStart = origStmts[i]!.getStart(sourceFile)\n const origEnd = origStmts[i]!.getEnd()\n const origText = source.slice(origStart, origEnd)\n\n let xfText: string\n try {\n xfText = printer.printNode(ts.EmitHint.Unspecified, xfStmts[i]!, transformed)\n } catch {\n // Synthetic nodes may fail to print individually — fall back to full reprint\n const { top: _top, bottom: _bottom } = devMode\n ? generateDevCode(componentDecls, mcpPort)\n : { top: '', bottom: '' }\n let output =\n (_top ? _top + '\\n' : '') + printer.printFile(transformed) + (_bottom ? '\\n' + _bottom : '')\n if (devMode || emitAgentMetadata) {\n output = appendCompilerCacheProps(output, componentDecls)\n }\n return { output, edits: [{ start: 0, end: source.length, replacement: output }] }\n }\n\n // Compare ignoring trailing semicolons and whitespace (printer adds them)\n const origNorm = origText.trim().replace(/;$/, '')\n const xfNorm = xfText.trim().replace(/;$/, '')\n if (origNorm !== xfNorm) {\n // Match the original style: if the original didn't end with a semicolon,\n // strip the one the printer added\n const origHasSemi = origText.trimEnd().endsWith(';')\n const replacement = origHasSemi ? xfText : xfText.replace(/;(\\s*)$/, '$1')\n finalEdits.push({ start: origStart, end: origEnd, replacement })\n }\n }\n\n // Dev setup: enable* must run BEFORE user's mountApp (top of file),\n // but import.meta.hot.accept needs to reference user's component vars\n // (bottom of file). So split the injection.\n if (devMode) {\n const { top, bottom } = generateDevCode(componentDecls, mcpPort)\n if (top) finalEdits.push({ start: 0, end: 0, replacement: top + '\\n' })\n if (bottom)\n finalEdits.push({ start: source.length, end: source.length, replacement: '\\n' + bottom })\n }\n\n if (finalEdits.length === 0) return null\n\n // Build the full output by applying edits (for backward compat)\n const sorted = [...finalEdits].sort((a, b) => b.start - a.start)\n let output = source\n for (const edit of sorted) {\n output = output.slice(0, edit.start) + edit.replacement + output.slice(edit.end)\n }\n\n // After output is assembled, update postSource in cache and emit non-enumerable props\n if ((devMode || emitAgentMetadata) && componentDecls.length > 0) {\n const cacheProps = appendCompilerCacheProps(output, componentDecls)\n if (cacheProps !== output) {\n output = cacheProps\n }\n }\n\n return { output, edits: finalEdits }\n}\n\n// ── HMR ──────────────────────────────────────────────────────────\n\nfunction generateDevCode(\n components: Array<{ varName: string; componentName: string }>,\n mcpPort: number | null,\n): { top: string; bottom: string } {\n if (components.length === 0) {\n return {\n top: '',\n bottom: `if (import.meta.hot) {\\n import.meta.hot.accept()\\n}`,\n }\n }\n\n const relayImport = mcpPort !== null ? ', startRelay as __startRelay' : ''\n const relayCall = mcpPort !== null ? `\\n__startRelay(${mcpPort})` : ''\n\n const top = `\nimport { enableHmr as __enableHmr, replaceComponent as __replaceComponent } from '@llui/dom/hmr'\nimport { enableDevTools as __enableDevTools${relayImport} } from '@llui/dom/devtools'\n__enableHmr()\n__enableDevTools()${relayCall}\n`.trim()\n\n const replaceCalls = components\n .map(({ varName, componentName }) => ` __replaceComponent(\"${componentName}\", ${varName})`)\n .join('\\n')\n\n // HMR auto-connect: when the Vite plugin detects that @llui/mcp's\n // active marker file exists or appears, it sends `llui:mcp-ready`\n // with the MCP bridge port. We forward that to __lluiConnect so the\n // browser connects automatically — no console gymnastics, no retry\n // spam, regardless of whether MCP or Vite started first.\n const mcpHmrHandler =\n mcpPort !== null\n ? `\n import.meta.hot.on('llui:mcp-ready', (data) => {\n if (typeof globalThis.__lluiConnect === 'function') {\n globalThis.__lluiConnect(data?.port)\n }\n })`\n : ''\n\n const bottom = `\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n${replaceCalls}\n })${mcpHmrHandler}\n}\n`.trim()\n\n return { top, bottom }\n}\n\n/** Find all component() calls and extract the variable name and component name */\nfunction findComponentDeclarations(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n): Array<{ varName: string; componentName: string }> {\n const result: Array<{ varName: string; componentName: string }> = []\n\n function visit(node: ts.Node): void {\n // Match: const Foo = component({ name: 'Foo', ... })\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.initializer &&\n ts.isCallExpression(node.initializer) &&\n isComponentCall(node.initializer, lluiImport)\n ) {\n const varName = node.name.text\n const config = node.initializer.arguments[0]\n if (config && ts.isObjectLiteralExpression(config)) {\n for (const prop of config.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n result.push({ varName, componentName: prop.initializer.text })\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sf)\n return result\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nfunction findLluiImport(sf: ts.SourceFile): ts.ImportDeclaration | null {\n for (const stmt of sf.statements) {\n if (\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom'\n ) {\n return stmt\n }\n }\n return null\n}\n\nfunction getImportedHelpers(imp: ts.ImportDeclaration): Map<string, string> {\n const map = new Map<string, string>()\n const clause = imp.importClause\n if (!clause || !clause.namedBindings || !ts.isNamedImports(clause.namedBindings)) return map\n\n for (const spec of clause.namedBindings.elements) {\n const original = (spec.propertyName ?? spec.name).text\n const local = spec.name.text\n if (ELEMENT_HELPERS.has(original)) {\n map.set(local, original)\n }\n }\n return map\n}\n\nfunction hasReactiveAccessors(sf: ts.SourceFile): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (node.expression.text === 'text' || node.expression.text === 'component') {\n found = true\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\nfunction hasComponentDef(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n found = true\n return\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\n/**\n * Scan for `component({ view: (h) => ... })` arrow functions and collect\n * the identifier name used as the View-bundle parameter. When the user\n * writes `h.show(...)` / `h.text(...)` inside the view, the compiler treats\n * it the same as bare `show(...)` / `text(...)` for mask injection.\n */\nfunction collectViewHelperNames(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): Set<string> {\n const names = new Set<string>()\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isIdentifier(first.name)) {\n names.add(first.name.text)\n }\n }\n }\n }\n }\n }\n // Also: any function parameter annotated as `View<...>` — covers extracted\n // view-functions like `function repoPage(h: View<State, Msg>, ...)`.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isIdentifier(node.name)\n ) {\n names.add(node.name.text)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return names\n}\n\nfunction isViewTypeReference(t: ts.TypeNode): boolean {\n return ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName) && t.typeName.text === 'View'\n}\n\n/**\n * Scan for `component({ view: ({ show, each, text, ... }) => ... })`\n * destructured parameters and return a map from the locally-bound name to\n * the primitive name it aliases. This lets users write the bare `show(...)` /\n * `text(...)` forms without importing them, while the compiler still\n * applies mask injection etc.\n *\n * view: ({ show, text: t }) => [...]\n * // returns { show → \"show\", t → \"text\" }\n */\nconst VIEW_HELPER_PRIMITIVES = new Set([\n 'show',\n 'branch',\n 'scope',\n 'each',\n 'text',\n 'memo',\n 'sample',\n 'selector',\n 'ctx',\n 'slice',\n 'send',\n])\n\nfunction collectViewHelperAliases(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n helperNames: Set<string>,\n): Map<string, string> {\n const aliases = new Map<string, string>()\n function addFromBindingPattern(pattern: ts.ObjectBindingPattern): void {\n for (const elem of pattern.elements) {\n // { show } → propertyName=undefined, name=show\n // { show: mySh } → propertyName=show, name=mySh\n const sourceName =\n elem.propertyName && ts.isIdentifier(elem.propertyName)\n ? elem.propertyName.text\n : ts.isIdentifier(elem.name)\n ? elem.name.text\n : null\n const localName = ts.isIdentifier(elem.name) ? elem.name.text : null\n if (sourceName && localName && VIEW_HELPER_PRIMITIVES.has(sourceName)) {\n aliases.set(localName, sourceName)\n }\n }\n }\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isObjectBindingPattern(first.name)) {\n addFromBindingPattern(first.name)\n }\n }\n }\n }\n }\n }\n // Also: function parameters like `(…, { show, text }: View<State, Msg>) => …`\n // on extracted helpers — allow the same destructuring ergonomics.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isObjectBindingPattern(node.name)\n ) {\n addFromBindingPattern(node.name)\n }\n // Also: `const { show, text } = h` assignments where `h` is a known\n // helper binding — lets helpers destructure once at the top of the\n // function body.\n if (\n ts.isVariableDeclaration(node) &&\n ts.isObjectBindingPattern(node.name) &&\n node.initializer &&\n ts.isIdentifier(node.initializer) &&\n helperNames.has(node.initializer.text)\n ) {\n addFromBindingPattern(node.name)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return aliases\n}\n\nfunction isComponentCall(node: ts.CallExpression, lluiImport: ts.ImportDeclaration): boolean {\n if (!ts.isIdentifier(node.expression)) return false\n const name = node.expression.text\n if (name !== 'component') return false\n // Verify it's from the llui import\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return false\n return clause.namedBindings.elements.some(\n (s) => s.name.text === 'component' || (s.propertyName && s.propertyName.text === 'component'),\n )\n}\n\nfunction emitStaticProp(\n staticProps: ts.Statement[],\n f: ts.NodeFactory,\n kind: BindingKind,\n resolvedKey: string,\n value: ts.Expression,\n): void {\n switch (kind) {\n case 'class':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'className'),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'prop':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), resolvedKey),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'style':\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'style'),\n 'setProperty',\n ),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n break\n default: // attr\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'setAttribute'),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n }\n}\n\n// ── Pass 1: Element → elSplit ────────────────────────────────────\n\nfunction tryTransformElementCall(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n compiled: Set<string>,\n bailed: Set<string>,\n f: ts.NodeFactory,\n fieldBitsHi: Map<string, number> = new Map(),\n): ts.CallExpression | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const originalName = helpers.get(localName)\n if (!originalName) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // Normalize to props=undefined, children=firstArg so downstream logic works.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) {\n bailed.add(localName)\n return null\n }\n // Bail on spread assignments (`...parts.root`) — the compiler cannot\n // statically classify spread contents, and silently dropping them would\n // break consumers (e.g. @llui/components parts spreading). Fall back to\n // the runtime element helper so spreads are applied normally.\n if (\n propsArg &&\n ts.isObjectLiteralExpression(propsArg) &&\n propsArg.properties.some((p) => ts.isSpreadAssignment(p))\n ) {\n bailed.add(localName)\n return null\n }\n\n const tag = f.createStringLiteral(originalName)\n\n // Classify props\n const staticProps: ts.Statement[] = []\n const events: ts.ArrayLiteralExpression[] = []\n const bindings: ts.ArrayLiteralExpression[] = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n // Handle both PropertyAssignment (key: value) and ShorthandPropertyAssignment ({ id })\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) continue\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name // The identifier itself is the value\n } else {\n continue\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n const eventName = key.slice(2).toLowerCase()\n events.push(f.createArrayLiteralExpression([f.createStringLiteral(eventName), value]))\n continue\n }\n\n // Per-item shapes — handled before the general classifier because\n // they appear inside `each().render` callbacks where `item` is a\n // closed-over per-row accessor (zero-arg). The resolver above can't\n // see them; they're shape-matched syntactically.\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Classify the value at a reactive-prop position:\n // - inline arrow / fn-expr at the call site\n // - inline `memo(arrow)` at the call site\n // - Identifier referencing a const-bound arrow/fn-expr in scope\n // - Identifier referencing a hoisted function declaration in scope\n // - Identifier referencing `const x = memo(arrow)` in scope\n // - Identifier referencing a static primitive literal\n // - Anything else (imports, parameters, opaque expressions) — bail\n // to runtime; the runtime helper handles `typeof v === 'function'`\n // correctly for both function and primitive values.\n const classified = classifyReactiveValue(value)\n if (classified === null) {\n // Unknown shape (a CallExpression that isn't memo/per-item, etc.)\n // — historically bailed to runtime. Preserve that.\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'bail') {\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'static-literal') {\n // Fall through to emitStaticProp (`__e.disabled = X`). Safe because\n // we proved X is a primitive.\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n emitStaticProp(staticProps, f, kind, resolvedKey, value)\n continue\n }\n // 'arrow' | 'fn-decl' | 'memo-call' — emit as a binding tuple. Mask is\n // analyzed from the resolved accessor body (or the inner arrow inside\n // a memo() call); the value emitted into the binding tuple is what the\n // runtime calls as `accessor(state)` — for inline arrows we keep the\n // arrow itself (preserves the historical inlining behavior), for\n // identifier-bound forms we keep the identifier so consumers see\n // a single canonical reference (and `memo()` proxies aren't rebuilt\n // per render).\n {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n classified.accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n\n // Zero-mask constant folding only applies to inline arrows whose body\n // we can safely call at compile time. For identifier-bound forms\n // (`accessor !== value`) we skip the fold — calling the identifier's\n // declaration at compile time would be unsafe (different scope) and\n // calling the identifier in the emitted output would defeat the point.\n if (\n classified.kind === 'arrow' &&\n classified.accessor === value &&\n mask === 0 &&\n maskHi === 0 &&\n !readsState\n ) {\n emitStaticProp(\n staticProps,\n f,\n kind,\n resolvedKey,\n f.createCallExpression(classified.accessor, undefined, []),\n )\n continue\n }\n\n const effectiveMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n // Emit a 5-tuple only when the accessor reads a high-word\n // prefix (positions 31..61). For the common ≤31-prefix case\n // the emit stays byte-identical to the pre-multi-word baseline,\n // and stale runtime bundles ignore the 5th slot.\n const tupleEls = [\n createMaskLiteral(f, effectiveMask),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n classified.valueForBinding,\n ]\n if (maskHi !== 0) tupleEls.push(createMaskLiteral(f, maskHi))\n bindings.push(f.createArrayLiteralExpression(tupleEls))\n }\n }\n }\n\n // Build elSplit args\n const staticFn =\n staticProps.length > 0\n ? f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(staticProps, true),\n )\n : f.createNull()\n\n const eventsArr = events.length > 0 ? f.createArrayLiteralExpression(events) : f.createNull()\n\n const bindingsArr =\n bindings.length > 0 ? f.createArrayLiteralExpression(bindings) : f.createNull()\n\n const children = usesChildrenOnlyOverload\n ? node.arguments[0]!\n : (node.arguments[1] ?? f.createNull())\n\n compiled.add(localName)\n\n // Subtree collapse: if children contain nested element helpers,\n // collapse the entire tree into a single elTemplate() call\n const analyzed = analyzeSubtree(node, helpers, fieldBits, [], fieldBitsHi)\n if (analyzed && hasNestedElements(analyzed)) {\n // Mark all descendant helpers as compiled for import cleanup\n collectUsedHelpers(analyzed, compiled)\n const templateCall = emitSubtreeTemplate(analyzed, fieldBits, f)\n return templateCall\n }\n\n // Static subtree prerendering: if no events, no bindings, and children\n // are all static text, emit a <template> clone\n if (events.length === 0 && bindings.length === 0 && isStaticChildren(children)) {\n const html = buildStaticHTML(originalName, staticProps, children, f)\n if (html) {\n return emitTemplateClone(html, f) as ts.CallExpression\n }\n }\n\n const call = f.createCallExpression(f.createIdentifier('elSplit'), undefined, [\n tag,\n staticFn,\n eventsArr,\n bindingsArr,\n children,\n ])\n ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false)\n return call\n}\n\n// ── Pass 2: Mask injection ───────────────────────────────────────\n\n/**\n * Match a call expression against a primitive name across all three binding\n * forms:\n * - bare imported identifier: `name(...)` where `name` was imported from @llui/dom\n * - destructured alias: `name(...)` where `name` is bound via\n * `view: (_, { name }) => ...` (or `{ name: alias }`)\n * - member call: `<h>.name(...)` where `<h>` is the 2nd view parameter\n *\n * The compiler treats all three identically for mask injection / each()\n * optimization purposes.\n */\nfunction isHelperCall(\n expr: ts.Expression,\n name: string,\n helperNames: Set<string>,\n aliases?: Map<string, string>,\n): boolean {\n if (ts.isIdentifier(expr)) {\n if (expr.text === name) return true\n if (aliases && aliases.get(expr.text) === name) return true\n return false\n }\n if (\n ts.isPropertyAccessExpression(expr) &&\n ts.isIdentifier(expr.expression) &&\n helperNames.has(expr.expression.text) &&\n ts.isIdentifier(expr.name) &&\n expr.name.text === name\n ) {\n return true\n }\n return false\n}\n\nfunction tryInjectTextMask(\n node: ts.CallExpression,\n lluiImport: ts.ImportDeclaration,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (!isHelperCall(node.expression, 'text', viewHelperNames, viewHelperAliases)) {\n return null\n }\n\n // For a bare identifier `text`, verify it actually resolves to the @llui/dom\n // import (otherwise a user-defined `text` in scope would be rewritten).\n // Destructured-alias and member-expression forms are already provenance-safe.\n if (ts.isIdentifier(node.expression) && !viewHelperAliases.has(node.expression.text)) {\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return null\n const hasText = clause.namedBindings.elements.some(\n (s) => s.name.text === 'text' || s.propertyName?.text === 'text',\n )\n if (!hasText) return null\n }\n\n const firstArg = node.arguments[0]\n if (!firstArg) return null\n // Don't inject if mask already provided\n if (node.arguments.length >= 2) return null\n // Resolve the accessor body — accepts inline arrows, `memo(arrow)`, or\n // identifier references to a const-bound arrow / `memo(...)` / function\n // declaration in scope. Anything else (static strings, opaque imports,\n // parameters) leaves the call as-is — the runtime falls back to\n // FULL_MASK, which is correct but slower.\n const accessor = resolveAccessorBody(firstArg)\n if (!accessor) return null\n\n const { mask } = computeAccessorMask(accessor, fieldBits)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n firstArg,\n createMaskLiteral(f, mask === 0 ? 0xffffffff | 0 : mask),\n ])\n}\n\n/**\n * Inject `__mask` into the options object of each()/branch()/show() calls.\n *\n * Analyzes the driving accessor (`items` for each, `on` for branch, `when`\n * for show) and computes the bitmask of state fields it reads. The runtime\n * uses this to skip Phase 1 reconciliation when irrelevant state changed\n * (e.g., each() that reads `rows` is skipped when only `selected` changed).\n */\nfunction tryInjectStructuralMask(\n node: ts.CallExpression,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (fieldBits.size === 0) return null\n\n // Match each(), branch(), scope(), show() — bare, aliased, or member-call\n const isEach = isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n const isBranch = isHelperCall(node.expression, 'branch', viewHelperNames, viewHelperAliases)\n const isScope = isHelperCall(node.expression, 'scope', viewHelperNames, viewHelperAliases)\n const isShow = isHelperCall(node.expression, 'show', viewHelperNames, viewHelperAliases)\n if (!isEach && !isBranch && !isScope && !isShow) return null\n\n const optsArg = node.arguments[0]\n if (!optsArg || !ts.isObjectLiteralExpression(optsArg)) return null\n\n // Already has __mask\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n return null\n }\n }\n\n // Find the driving accessor property: items / on / when\n // each → 'items', branch/scope → 'on', show → 'when'\n const driverProp = isEach ? 'items' : isBranch || isScope ? 'on' : 'when'\n let driverAccessor: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration | null =\n null\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n // Same shape contract as `text()`'s first arg: inline arrow, inline\n // `memo(arrow)`, or identifier referencing a const-bound arrow /\n // memo / function declaration. Anything else leaves the call\n // unchanged — runtime falls back to FULL_MASK.\n driverAccessor = resolveAccessorBody(prop.initializer)\n break\n }\n }\n\n if (!driverAccessor) return null\n\n const { mask } = computeAccessorMask(driverAccessor, fieldBits)\n if (mask === 0 || mask === (0xffffffff | 0)) return null // no benefit\n\n // Inject __mask into the options object\n const maskProp = f.createPropertyAssignment('__mask', createMaskLiteral(f, mask))\n const newProps = [...optsArg.properties, maskProp]\n const newOpts = f.createObjectLiteralExpression(newProps, optsArg.properties.hasTrailingComma)\n return f.createCallExpression(node.expression, node.typeArguments, [\n newOpts,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction tryInjectDirty(\n node: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n fieldBitsHi: Map<string, number> = new Map(),\n): ts.CallExpression | null {\n if (fieldBits.size === 0 && fieldBitsHi.size === 0) return null\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n\n // Check if __dirty already exists\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__dirty'\n ) {\n return null\n }\n }\n\n // Top-level field → aggregated bit mask. Sub-paths under one field\n // (`route.page`, `route.data`) collapse into a single entry so\n // `tryBuildHandlers` and `__maskLegend` can reason per-field. Positions\n // 0..30 live here; 31..61 in the parallel high-word map below.\n const topLevelBits = new Map<string, number>()\n for (const [path, bit] of fieldBits) {\n const topField = path.split('.')[0]!\n topLevelBits.set(topField, (topLevelBits.get(topField) ?? 0) | bit)\n }\n const topLevelBitsHi = new Map<string, number>()\n for (const [path, bit] of fieldBitsHi) {\n const topField = path.split('.')[0]!\n topLevelBitsHi.set(topField, (topLevelBitsHi.get(topField) ?? 0) | bit)\n }\n\n // __maskLegend: maps each top-level state field to the bit(s) that fire when\n // it changes. Lets introspection tools decode runtime dirty masks to field names.\n const legendProps: ts.PropertyAssignment[] = []\n for (const [field, bit] of topLevelBits) {\n // Use string literal — state field names declared via string keys\n // (e.g. `{ \"weird-key\": ... }`) would otherwise emit as bare\n // identifiers and break the printed output.\n legendProps.push(\n f.createPropertyAssignment(f.createStringLiteral(field), createMaskLiteral(f, bit)),\n )\n }\n const legendProp = f.createPropertyAssignment(\n '__maskLegend',\n f.createObjectLiteralExpression(legendProps, false),\n )\n\n // Structural mask — used by both __update and __handlers\n const structuralMask = computeStructuralMask(configArg, fieldBits)\n\n const updateBody = buildUpdateBody(f, structuralMask)\n // `dHi` is the high-word dirty mask, appended as the trailing\n // positional arg so stale 5-param compiled bundles continue to gate\n // correctly: the runtime calls `__update(s, d, b, bl, p, dHi)`,\n // old bundles' 5-param arrow ignores the extra arg (for ≤31-prefix\n // components dHi is always 0 anyway). New bundles use it for\n // precise two-word Phase 1 gating.\n const updateFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 's'),\n f.createParameterDeclaration(undefined, undefined, 'd'),\n f.createParameterDeclaration(undefined, undefined, 'b'),\n f.createParameterDeclaration(undefined, undefined, 'bl'),\n f.createParameterDeclaration(undefined, undefined, 'p'),\n f.createParameterDeclaration(\n undefined,\n undefined,\n 'dHi',\n undefined,\n undefined,\n f.createNumericLiteral(0),\n ),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n updateBody,\n )\n const updateProp = f.createPropertyAssignment('__update', updateFn)\n\n // __handlers: per-message-type specialized update functions.\n // Analyzes the update() switch/case and generates direct handlers\n // that bypass the generic Phase 1/2 pipeline for single-message updates.\n const handlersProp = tryBuildHandlers(configArg, topLevelBits, topLevelBitsHi, structuralMask, f)\n\n // Both `__update` and `__handlers` carry two-word gates: `__update`'s\n // Phase 1 block loop uses `(mask & d) | (maskHi & dHi)`, and\n // `__handlers` passes `caseDirtyHi` to `_handleMsg` which gates blocks\n // against both words. `dHi` defaults to 0 so any stale 5-arg call site\n // still works. `__dirty` is no longer emitted — `__prefixes` (below)\n // is strictly more precise, and the runtime throws on hand-authored\n // `__dirty`. `__maskLegend` survives because the agent layer uses it\n // to decode runtime dirty masks back to top-level field names.\n const extraProps: ts.ObjectLiteralElementLike[] = [legendProp, updateProp]\n if (handlersProp) extraProps.push(handlersProp)\n\n // __prefixes: opt-in path-keyed reactivity (see\n // docs/proposals/unified-composition-model.md). One closure per\n // distinct path that an accessor reads, hoisted into a stable array;\n // the array position IS the bit position used by the path's bindings.\n // The runtime prefers __prefixes when present and computes the\n // combinedDirty mask by reference-comparing `prefix(prev)` vs\n // `prefix(next)` for each entry — strictly more precise than the\n // top-level-conflated __dirty (which always co-fires bindings sharing\n // a top-level field even when only one sub-path actually mutated).\n //\n // Emit `__prefixes` whenever any reactive paths are present. For\n // components with ≤31 paths, the runtime's\n // `computeDirtyFromPrefixes` returns a single `number`; for\n // 32..61-path components it returns a `[lo, hi]` tuple that the\n // runtime fans out into `combinedDirty` + `combinedDirtyHi`. The\n // binding-level mask gating is still single-word at the compiler\n // emit layer today, so high-position bindings still re-evaluate\n // every cycle — but the dirty computation itself is now precise,\n // which lets memo()'d aggregates short-circuit correctly.\n const prefixesProp = buildPrefixesProp(fieldBits, fieldBitsHi, f)\n if (prefixesProp) extraProps.push(prefixesProp)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, ...extraProps], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n/**\n * Analyze update() switch/case and generate per-message-type handlers.\n *\n * Each handler receives (inst, msg) and returns [newState, effects].\n * The handler calls update() to get the new state, then directly invokes\n * the appropriate runtime primitives (reconcileItems, __directUpdate, etc.)\n * instead of going through the generic Phase 1/2 pipeline.\n *\n * Conservative: only generates handlers for cases where the field\n * modifications are statically determinable. Complex cases are skipped.\n */\nfunction tryBuildHandlers(\n configArg: ts.ObjectLiteralExpression,\n topLevelBits: Map<string, number>,\n topLevelBitsHi: Map<string, number>,\n structuralMask: number,\n f: ts.NodeFactory,\n): ts.PropertyAssignment | null {\n if (topLevelBits.size === 0 && topLevelBitsHi.size === 0) return null\n\n // Find the update function in the component config\n let updateFn: ts.ArrowFunction | ts.FunctionExpression | null = null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'update'\n ) {\n if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) {\n updateFn = prop.initializer\n }\n break\n }\n }\n if (!updateFn) return null\n\n // Find the switch statement in the update body\n const body = ts.isBlock(updateFn.body) ? updateFn.body : null\n if (!body) return null\n\n let switchStmt: ts.SwitchStatement | null = null\n for (const stmt of body.statements) {\n if (ts.isSwitchStatement(stmt)) {\n switchStmt = stmt\n break\n }\n }\n if (!switchStmt) return null\n\n // Check the switch discriminant is msg.type pattern\n const stateParam = updateFn.parameters[0]?.name\n const msgParam = updateFn.parameters[1]?.name\n if (!stateParam || !msgParam || !ts.isIdentifier(stateParam) || !ts.isIdentifier(msgParam))\n return null\n const stateName = stateParam.text\n const _msgName = msgParam.text\n\n // Analyze each case clause\n const handlers: ts.PropertyAssignment[] = []\n\n for (const clause of switchStmt.caseBlock.clauses) {\n if (!ts.isCaseClause(clause)) continue\n\n // Extract the case label — must be a string literal like 'select'\n if (!ts.isStringLiteral(clause.expression)) continue\n const msgType = clause.expression.text\n\n // Collect ALL return [newState, effects] statements recursively from the\n // case body. Multiple returns (from if/else branches) must all be analyzed\n // so the handler's dirty mask covers every possible modified field.\n const returnExprs: ts.ArrayLiteralExpression[] = []\n const collectReturns = (node: ts.Node): void => {\n if (\n ts.isReturnStatement(node) &&\n node.expression &&\n ts.isArrayLiteralExpression(node.expression) &&\n node.expression.elements.length >= 2\n ) {\n returnExprs.push(node.expression)\n return\n }\n // Don't descend into nested functions — their returns are unrelated.\n if (\n ts.isFunctionDeclaration(node) ||\n ts.isFunctionExpression(node) ||\n ts.isArrowFunction(node) ||\n ts.isMethodDeclaration(node)\n ) {\n return\n }\n ts.forEachChild(node, collectReturns)\n }\n for (const stmt of clause.statements) {\n collectReturns(stmt)\n }\n if (returnExprs.length === 0) continue\n\n // Union modified fields across all return paths.\n const allModified = new Set<string>()\n let bailOut = false\n for (const returnExpr of returnExprs) {\n const stateExpr = returnExpr.elements[0]!\n const fields = analyzeModifiedFields(stateExpr, stateName, topLevelBits, topLevelBitsHi)\n if (!fields) {\n bailOut = true\n break\n }\n for (const f of fields) allModified.add(f)\n }\n if (bailOut) continue // at least one return path was too complex\n\n const modifiedFields = Array.from(allModified)\n\n // Compute the dirty mask for this case across both words. Fields\n // tracked in `topLevelBitsHi` contribute to `caseDirtyHi`; fields\n // tracked nowhere (`undefined` lookup in both) fall back to\n // FULL_MASK in the low word — same conservative behavior as\n // before, just preserved per-word now.\n let caseDirty = 0\n let caseDirtyHi = 0\n for (const field of modifiedFields) {\n const lo = topLevelBits.get(field)\n const hi = topLevelBitsHi.get(field)\n if (lo === undefined && hi === undefined) {\n caseDirty |= 0xffffffff | 0\n } else {\n if (lo !== undefined) caseDirty |= lo\n if (hi !== undefined) caseDirtyHi |= hi\n }\n }\n\n // Detect array operation pattern for structural block optimization\n const arrayOp = detectArrayOp(clause, stateName, modifiedFields, structuralMask, caseDirty)\n\n const handler = buildCaseHandler(f, caseDirty, caseDirtyHi, arrayOp)\n handlers.push(f.createPropertyAssignment(f.createStringLiteral(msgType), handler))\n }\n\n if (handlers.length === 0) return null\n\n return f.createPropertyAssignment('__handlers', f.createObjectLiteralExpression(handlers, true))\n}\n\ntype ArrayOp =\n | 'none'\n | 'clear'\n | 'mutate'\n | 'remove'\n | 'general'\n | { type: 'strided'; stride: number } // for (i = 0; i < len; i += stride) pattern\n\n/**\n * Detect the array operation pattern in a case body.\n * - 'none': no array field modified (e.g., only `selected` changes)\n * - 'clear': array set to empty literal `[]`\n * - 'mutate': array created via `.slice()` then mutated in place (same keys)\n * - 'general': unknown pattern, use generic reconcile\n */\nfunction detectArrayOp(\n clause: ts.CaseClause,\n stateName: string,\n modifiedFields: string[],\n _structuralMask?: number,\n _caseDirty?: number,\n): ArrayOp {\n // No fields modified → no Phase 1 needed (no bindings can care if no\n // state field changed). Safe to return 'none' here because it's a\n // tautology: every binding mask ANDed with zero is zero.\n if (modifiedFields.length === 0) return 'none'\n\n // The specialized methods (`reconcileClear`, `reconcileItems`,\n // `reconcileRemove`, `reconcileChanged`) only exist on `each` blocks.\n // Non-each blocks (`show`, `branch`, `scope`) leave them undefined,\n // so a method other than 0 (general reconcile) silently no-ops on\n // those blocks at runtime. If the case modifies fields BEYOND the\n // array op (e.g. `{ ...state, open: true, name: '', tags: [] }`),\n // any show/branch block whose mask intersects the case's dirty bits\n // would be selected for reconcile but then skipped by the no-op\n // method invocation — its `when`/`on` accessor never re-evaluates,\n // and the component appears structurally inert after mount.\n //\n // Conservative correctness: only emit a non-general method when the\n // array op is the SOLE field modification. With one modified field,\n // the only blocks selected by mask gating are ones that read that\n // single field — and the optimization is well-defined for that\n // narrow case (each blocks operating on the array). Multi-field\n // cases fall through to `'general'` (method=0), so every selected\n // block runs the standard `reconcile` path. We trade a niche\n // optimization (small benefit even when applicable) for guaranteed\n // structural reconciliation across the framework's primitive set.\n //\n // Sister of show-helper-reconcile.test.ts, which fixed the same\n // class of bug on the method=-1 path. Same architectural principle:\n // the compiler can't see every block in the view, so optimizations\n // that route around `reconcile` must be ironclad. When in doubt,\n // emit method=0 and let `_handleMsg`'s per-block mask gate filter.\n //\n // Previously: if `(structuralMask & caseDirty) === 0`, return 'none'\n // on the theory that no structural block's mask could intersect this\n // case's dirty bits. That optimization was UNSAFE: `computeStructuralMask`\n // only walks the view function's lexical AST and does not descend into\n // helper function calls. A view like\n //\n // view: () => [\n // ...show({ when: s => s.mode === 'signin', render: () => [signinFormBody()] }),\n // ]\n //\n // where `signinFormBody()` is a helper that internally does\n // ...show({ when: s => s.errors.email !== undefined, ... })\n //\n // produces a `structuralMask` that covers `mode` but MISSES\n // `errors.email`. At runtime the inner show block is still registered\n // in `inst.structuralBlocks`, and it legitimately needs to reconcile\n // when `errors` changes — but the compiler was emitting `method = -1`\n // (skip blocks entirely) for cases that only touch `errors`, and the\n // error paragraphs would never mount.\n if (modifiedFields.length !== 1) return 'general'\n const onlyField = modifiedFields[0]!\n\n // Look at the return expression's array field values\n for (const stmt of clause.statements) {\n const returnExpr = findReturnArray(stmt)\n if (!returnExpr) continue\n\n const stateExpr = returnExpr.elements[0]\n if (!stateExpr || !ts.isObjectLiteralExpression(stateExpr)) continue\n\n for (const prop of stateExpr.properties) {\n const name =\n ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)\n ? prop.name.text\n : ts.isShorthandPropertyAssignment(prop)\n ? prop.name.text\n : null\n if (!name) continue\n // The optimization only applies when the array op is on the\n // single tracked field. A `field: []` on a different field\n // (one not in modifiedFields, e.g. an untracked field) would\n // still no-op safely on each blocks via the mask gate, but to\n // keep the analysis tight we require an exact match.\n if (name !== onlyField) continue\n\n // Check for empty array literal: `field: []`\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isArrayLiteralExpression(prop.initializer) &&\n prop.initializer.elements.length === 0\n ) {\n return 'clear'\n }\n\n // Check for shorthand `field` where field was assigned via `.slice()` earlier\n // This catches: `const rows = state.rows.slice(); rows[i] = ...; return { ...state, rows }`\n if (ts.isShorthandPropertyAssignment(prop)) {\n const varName = prop.name.text\n if (hasSliceAssignment(clause, stateName, varName)) {\n // Check for strided for-loop: for (let i = 0; i < arr.length; i += STRIDE)\n const stride = detectStrideLoop(clause, varName)\n if (stride > 1) return { type: 'strided', stride }\n return 'mutate'\n }\n }\n\n // Check for property assignment with filter: `field: state.field.filter(...)`\n if (ts.isPropertyAssignment(prop) && ts.isCallExpression(prop.initializer)) {\n const call = prop.initializer\n if (\n ts.isPropertyAccessExpression(call.expression) &&\n call.expression.name.text === 'filter'\n ) {\n return 'remove'\n }\n }\n }\n }\n\n return 'general'\n}\n\nfunction findReturnArray(stmt: ts.Statement): ts.ArrayLiteralExpression | null {\n if (ts.isReturnStatement(stmt) && stmt.expression && ts.isArrayLiteralExpression(stmt.expression))\n return stmt.expression\n if (ts.isBlock(stmt)) {\n for (const inner of stmt.statements) {\n const result = findReturnArray(inner)\n if (result) return result\n }\n }\n return null\n}\n\n/**\n * Detect a strided for-loop: `for (let i = 0; i < arr.length; i += STRIDE)`\n * where `arr` is the named variable. Returns the stride or 0 if not found.\n */\nfunction detectStrideLoop(clause: ts.CaseClause, _arrName: string): number {\n function walk(node: ts.Node): number {\n if (ts.isForStatement(node) && node.incrementor) {\n // Check incrementor: i += STRIDE\n const inc = node.incrementor\n if (\n ts.isBinaryExpression(inc) &&\n inc.operatorToken.kind === ts.SyntaxKind.PlusEqualsToken &&\n ts.isNumericLiteral(inc.right)\n ) {\n const stride = parseInt(inc.right.text, 10)\n if (stride > 1) return stride\n }\n }\n return ts.forEachChild(node, walk) ?? 0\n }\n for (const stmt of clause.statements) {\n const result = walk(stmt)\n if (result > 0) return result\n }\n return 0\n}\n\nfunction hasSliceAssignment(clause: ts.CaseClause, stateName: string, varName: string): boolean {\n function walk(node: ts.Node): boolean {\n // Look for: const varName = stateName.field.slice()\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === varName &&\n node.initializer\n ) {\n const init = node.initializer\n if (\n ts.isCallExpression(init) &&\n ts.isPropertyAccessExpression(init.expression) &&\n init.expression.name.text === 'slice'\n ) {\n return true\n }\n }\n return ts.forEachChild(node, walk) ?? false\n }\n for (const stmt of clause.statements) {\n if (walk(stmt)) return true\n }\n return false\n}\n\n/**\n * Analyze which top-level state fields are modified in a return expression.\n * Returns the set of field names, or null if too complex to determine.\n */\nfunction analyzeModifiedFields(\n stateExpr: ts.Expression,\n stateName: string,\n topLevelBits: Map<string, number>,\n topLevelBitsHi: Map<string, number> = new Map(),\n): string[] | null {\n // Recognize fields tracked in EITHER the low-word or high-word map.\n // 32..61-prefix components have their overflow paths in\n // `topLevelBitsHi`; the case handler's `caseDirty` / `caseDirtyHi`\n // logic depends on us recognizing those fields here.\n const isTracked = (name: string): boolean => topLevelBits.has(name) || topLevelBitsHi.has(name)\n // Pattern: { ...state, field1: ..., field2: ... } or { field1: ..., field2: ... }\n if (ts.isObjectLiteralExpression(stateExpr)) {\n const modified: string[] = []\n for (const prop of stateExpr.properties) {\n if (ts.isSpreadAssignment(prop)) {\n // Only `...state` is safe to ignore — re-spreading state back into\n // state doesn't change any field's identity. ANY other spread\n // (e.g. `...msg.props`, `...someObj`) can overwrite arbitrary\n // top-level fields with new references, and we cannot know which\n // ones statically. Bail out so the generic Phase 2 path runs\n // `__dirty` at runtime and produces a correct mask.\n if (ts.isIdentifier(prop.expression) && prop.expression.text === stateName) {\n continue\n }\n return null\n }\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {\n const fieldName = prop.name.text\n if (isTracked(fieldName)) {\n modified.push(fieldName)\n }\n }\n // Handle shorthand: { ...state, rows } where rows is a local variable\n if (ts.isShorthandPropertyAssignment(prop)) {\n const fieldName = prop.name.text\n if (isTracked(fieldName)) {\n modified.push(fieldName)\n }\n }\n }\n return modified.length > 0 ? modified : null\n }\n\n // Pattern: state (no change — early return)\n if (ts.isIdentifier(stateExpr) && stateExpr.text === stateName) {\n return [] // no fields modified\n }\n\n return null // too complex\n}\n\n/**\n * Build a handler function for a specific message type case.\n *\n * Generated: (inst, msg) => {\n * const [s, e] = inst.def.update(inst.state, msg)\n * inst.state = s\n * const bl = inst.structuralBlocks, b = inst.allBindings, p = b.length\n * // Phase 1: gated by caseDirty\n * for (let i = 0; i < bl.length; i++) {\n * if (bl[i].mask & caseDirty) bl[i].reconcile(s, caseDirty)\n * }\n * // Phase 2\n * __runPhase2(s, caseDirty, b, p)\n * return [s, e]\n * }\n */\n/**\n * Build a handler that delegates to __handleMsg(inst, msg, dirty, method).\n * method: 0=reconcile, 1=reconcileItems, 2=reconcileClear, 3=reconcileRemove, -1=skip blocks\n */\nfunction buildCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n caseDirtyHi: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const method =\n typeof arrayOp === 'object' && arrayOp.type === 'strided'\n ? 10 + arrayOp.stride // reconcileChanged with stride\n : arrayOp === 'none'\n ? -1\n : arrayOp === 'mutate'\n ? 1\n : arrayOp === 'clear'\n ? 2\n : arrayOp === 'remove'\n ? 3\n : 0 // general\n\n // (inst, msg) => __handleMsg(inst, msg, dirty, method, [dirtyHi])\n const args: ts.Expression[] = [\n f.createIdentifier('inst'),\n f.createIdentifier('msg'),\n createMaskLiteral(f, caseDirty),\n method >= 0\n ? f.createNumericLiteral(method)\n : f.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, f.createNumericLiteral(1)),\n ]\n // Emit the 5th positional arg only when the case touches a high-word\n // field. Stale runtime bundles' _handleMsg signatures ignored that\n // slot anyway; new ones (defaulted to 0) make it explicit when needed.\n if (caseDirtyHi !== 0) args.push(createMaskLiteral(f, caseDirtyHi))\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createCallExpression(f.createIdentifier('__handleMsg'), undefined, args),\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction _deadCode_legacyCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const stmts: ts.Statement[] = []\n\n // const [s, e] = inst.def.update(inst.state, msg)\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n f.createArrayBindingPattern([\n f.createBindingElement(undefined, undefined, 's'),\n f.createBindingElement(undefined, undefined, 'e'),\n ]),\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'def'),\n 'update',\n ),\n undefined,\n [\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n f.createIdentifier('msg'),\n ],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // inst.state = s\n stmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('s'),\n ),\n ),\n )\n\n // Phase 1 + Phase 2, specialized by array operation pattern\n if (caseDirty !== 0) {\n // Determine the reconcile method based on array operation\n const reconcileMethod =\n arrayOp === 'clear'\n ? 'reconcileClear'\n : arrayOp === 'mutate'\n ? 'reconcileItems'\n : arrayOp === 'remove'\n ? 'reconcileRemove'\n : 'reconcile'\n\n if (arrayOp === 'none') {\n // No structural changes — skip Phase 1, only run Phase 2\n // (e.g., select: only selector binding needs updating)\n } else {\n // Phase 1: call specialized reconciler on matching blocks\n // const bl = inst.structuralBlocks\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bl',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'structuralBlocks'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // for (let i = 0; i < bl.length; i++) { if (bl[i].mask & dirty) bl[i].METHOD(s, dirty) }\n const blockEl = f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n )\n const reconcileArgs =\n reconcileMethod === 'reconcileClear'\n ? []\n : [\n f.createIdentifier('s'),\n ...(reconcileMethod === 'reconcile' ? [createMaskLiteral(f, caseDirty)] : []),\n ]\n\n stmts.push(\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(blockEl, 'mask'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, caseDirty),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n // Use specialized method if available, fall back to reconcile\n // bl[i].reconcileItems?.(s) ?? bl[i].reconcile(s, dirty)\n // Simplified: just call the method — it exists on each() blocks\n f.createPropertyAccessExpression(blockEl, reconcileMethod),\n undefined,\n reconcileArgs as ts.Expression[],\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n )\n }\n\n // Phase 2: compact + update bindings\n // const b = inst.allBindings, p = b.length\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'b',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'allBindings'),\n ),\n f.createVariableDeclaration(\n 'p',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // __runPhase2(s, caseDirty, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n createMaskLiteral(f, caseDirty),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n }\n\n // return [s, e]\n stmts.push(\n f.createReturnStatement(\n f.createArrayLiteralExpression([f.createIdentifier('s'), f.createIdentifier('e')]),\n ),\n )\n\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n}\n\n// ── Row Factory ─────────────────────────────────────────────────\n\n/**\n * Transform an eligible each() render to use a row factory — shared update\n * function with zero per-row closures for bindings.\n *\n * Runs AFTER the element transform pass has converted tr/td/text() calls\n * into elTemplate() calls, so we can analyze the template structure.\n */\nfunction tryEmitRowFactory(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n _originalSource: string,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n const body = ts.isBlock(renderFn.body) ? renderFn.body : null\n if (!body) return null\n\n // Find the elTemplate call in the transformed render body\n let templateCall: ts.CallExpression | null = null\n let templateVarName: string | null = null\n\n for (const stmt of body.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (\n ts.isIdentifier(decl.name) &&\n decl.initializer &&\n ts.isCallExpression(decl.initializer)\n ) {\n if (\n ts.isIdentifier(decl.initializer.expression) &&\n decl.initializer.expression.text === 'elTemplate'\n ) {\n if (templateCall) return null // multiple templates — bail\n templateCall = decl.initializer\n templateVarName = decl.name.text\n }\n }\n }\n }\n // Check for nested structural primitives — bail\n if (containsStructuralCall(stmt)) return null\n // Bail on selector.bind() — row factory + selector causes V8 deopt\n // even without per-row disposers (selector fn declarations per render)\n if (_containsSelectorBind(stmt)) return null\n }\n\n if (!templateCall || templateCall.arguments.length < 2) return null\n\n // Extract HTML string\n const htmlArg = templateCall.arguments[0]\n if (!htmlArg || !ts.isStringLiteral(htmlArg)) return null\n const html = htmlArg.text\n\n // Extract patch function\n const patchFn = templateCall.arguments[1]\n if (!patchFn || (!ts.isArrowFunction(patchFn) && !ts.isFunctionExpression(patchFn))) return null\n const patchBody = ts.isBlock(patchFn.body) ? patchFn.body : null\n if (!patchBody) return null\n\n const rootParam = patchFn.parameters[0]\n const bindParam = patchFn.parameters[1]\n if (!rootParam || !bindParam) return null\n const rootName = ts.isIdentifier(rootParam.name) ? rootParam.name.text : null\n const bindName = ts.isIdentifier(bindParam.name) ? bindParam.name.text : null\n if (!rootName || !bindName) return null\n\n // Extract bindings from patch function\n interface RowBinding {\n nodeInitializer: ts.Expression // the node path expression (e.g., root.firstChild)\n kind: string\n key: string | undefined\n accessor: ts.Expression\n }\n const bindings: RowBinding[] = []\n const nodeVarInitializers = new Map<string, ts.Expression>()\n\n for (const stmt of patchBody.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.initializer) {\n nodeVarInitializers.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n if (ts.isExpressionStatement(stmt) && ts.isCallExpression(stmt.expression)) {\n const call = stmt.expression\n if (\n ts.isIdentifier(call.expression) &&\n call.expression.text === bindName &&\n call.arguments.length >= 5\n ) {\n const nodeArg = call.arguments[0]!\n const maskArg = call.arguments[1]!\n const kindArg = call.arguments[2]!\n const keyArg = call.arguments[3]!\n const accessorArg = call.arguments[4]!\n\n // Must be per-item (mask -1)\n if (ts.isPrefixUnaryExpression(maskArg) && maskArg.operator === ts.SyntaxKind.MinusToken) {\n // -1 → per-item ✓\n } else if (ts.isBinaryExpression(maskArg)) {\n // -1 | 0 or 4294967295 | 0 → per-item ✓\n } else {\n return null // state-level binding — bail\n }\n\n const kind = ts.isStringLiteral(kindArg) ? kindArg.text : ''\n const key = ts.isStringLiteral(keyArg) ? keyArg.text : undefined\n\n // Resolve node path — recursively expand variable references to get\n // the full path from root, then create fresh factory nodes\n function resolveNodePath(expr: ts.Expression): ts.Expression {\n if (ts.isIdentifier(expr)) {\n if (expr.text === rootName) return f.createIdentifier(rootName)\n const init = nodeVarInitializers.get(expr.text)\n if (init) return resolveNodePath(init)\n return f.createIdentifier(expr.text)\n }\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n resolveNodePath(expr.expression),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n resolveNodePath(expr.expression),\n expr.argumentExpression,\n )\n }\n return expr\n }\n const nodeInit = resolveNodePath(nodeArg)\n\n // Clone accessor to strip source position — prevents mixed-position errors\n const clonedAccessor = ts.isIdentifier(accessorArg)\n ? f.createIdentifier(accessorArg.text)\n : accessorArg\n bindings.push({ nodeInitializer: nodeInit, kind, key, accessor: clonedAccessor })\n }\n }\n }\n\n if (bindings.length === 0) return null\n\n // Build map of __a{N} → __s{N} for rewriting accessor references.\n // After dedup, `__a{N} = acc(__s{N})`. In the row factory, __a{N} declarations\n // are eliminated, so all references must be rewritten to __s{N}.\n const accToSelector = new Map<string, string>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (!ts.isIdentifier(decl.name) || !decl.name.text.startsWith('__a')) continue\n if (!decl.initializer || !ts.isCallExpression(decl.initializer)) continue\n const callArg0 = decl.initializer.arguments[0]\n if (callArg0 && ts.isIdentifier(callArg0) && callArg0.text.startsWith('__s')) {\n accToSelector.set(decl.name.text, callArg0.text)\n }\n }\n }\n\n // Rewrite binding accessors: __a{N} → __s{N}\n for (const b of bindings) {\n if (ts.isIdentifier(b.accessor) && accToSelector.has(b.accessor.text)) {\n b.accessor = f.createIdentifier(accToSelector.get(b.accessor.text)!)\n }\n }\n\n // Collect __s{N} selector definitions — needed by __rowUpd and render init.\n // These are currently scoped to the render body; we'll hoist them into the\n // __rowUpd IIFE so they're accessible.\n const selectorDefs = new Map<string, ts.Expression>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text.startsWith('__s') && decl.initializer) {\n selectorDefs.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n // === Generate the row factory ===\n\n // 1. __tpl: IIFE that creates + caches the template element\n const tplInit = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createIdentifier('document'),\n 'createElement',\n ),\n undefined,\n [f.createStringLiteral('template')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('t'), 'innerHTML'),\n ts.SyntaxKind.EqualsToken,\n f.createStringLiteral(html),\n ),\n ),\n f.createReturnStatement(f.createIdentifier('t')),\n ],\n true,\n ),\n ),\n ),\n undefined,\n [],\n )\n\n // 2. __rowUpd: (e) => { const t = e.current; for each binding: check + write }\n const updStmts: ts.Statement[] = []\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const vId = f.createIdentifier(`v${i}`)\n const cachedProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n const nodeProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n\n // const v{i} = accessor(t)\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n vId,\n undefined,\n undefined,\n f.createCallExpression(b.accessor, undefined, [f.createIdentifier('t')]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // DOM write expression\n const domWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n\n // if (v{i} !== e['_v{i}']) { e['_v{i}'] = v{i}; DOM_WRITE }\n updStmts.push(\n f.createIfStatement(\n f.createBinaryExpression(vId, ts.SyntaxKind.ExclamationEqualsEqualsToken, cachedProp),\n f.createBlock(\n [\n f.createExpressionStatement(\n f.createBinaryExpression(cachedProp, ts.SyntaxKind.EqualsToken, vId),\n ),\n f.createExpressionStatement(domWrite),\n ],\n true,\n ),\n ),\n )\n }\n\n // Wrap __rowUpd in IIFE that declares selectors (they're scoped to the\n // render body but __rowUpd lives on the options object outside render).\n const rawUpdFn = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 'e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(updStmts, true),\n )\n\n // Build: (() => { const __s0 = ...; const __s1 = ...; return (e) => { ... } })()\n const selectorDecls: ts.Statement[] = []\n for (const [name, init] of selectorDefs) {\n selectorDecls.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n selectorDecls.push(f.createReturnStatement(rawUpdFn))\n\n const rowUpdFn = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(selectorDecls, true),\n ),\n ),\n undefined,\n [],\n )\n\n // 3. New render callback: ({ entry: e, __tpl, __rowUpd }) => { ... }\n const renderStmts: ts.Statement[] = []\n\n // Declare selectors at the top of render body (they're used for initial values)\n for (const [name, init] of selectorDefs) {\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // const r = __tpl.content.firstElementChild.cloneNode(true)\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'r',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__tpl'), 'content'),\n 'firstElementChild',\n ),\n 'cloneNode',\n ),\n undefined,\n [f.createTrue()],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // For each binding: store node ref, compute initial, apply\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const nProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n const vProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n\n // Rewrite node path: replace root param name with 'r'\n const rewrittenPath = rewriteRoot(b.nodeInitializer, rootName, 'r', f)\n\n // e['_n{i}'] = rewrittenPath\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(nProp, ts.SyntaxKind.EqualsToken, rewrittenPath),\n ),\n )\n\n // e['_v{i}'] = accessor(e.current)\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n vProp,\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(b.accessor, undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ]),\n ),\n ),\n )\n\n // DOM write: e['_n{i}'].nodeValue = e['_v{i}']\n const initWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n renderStmts.push(f.createExpressionStatement(initWrite))\n }\n\n // e.__rowUpdate = __rowUpd\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('e'), '__rowUpdate'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('__rowUpd'),\n ),\n ),\n )\n\n // Rewrite a statement: replace __a{N}() → __s{N}(e.current),\n // replace template var → r, strip positions via deep clone.\n function rewriteStmt(stmt: ts.Statement): ts.Statement {\n function visit(node: ts.Node): ts.Node {\n // Rewrite __a{N}() → __s{N}(e.current)\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n accToSelector.has(node.expression.text) &&\n node.arguments.length === 0\n ) {\n const selectorName = accToSelector.get(node.expression.text)!\n return f.createCallExpression(f.createIdentifier(selectorName), undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ])\n }\n // Rewrite template variable → r\n if (ts.isIdentifier(node) && templateVarName && node.text === templateVarName) {\n return f.createIdentifier('r')\n }\n // Clone identifiers to strip positions\n if (ts.isIdentifier(node)) {\n return f.createIdentifier(node.text)\n }\n return ts.visitEachChild(node, visit, undefined!)\n }\n return ts.visitEachChild(stmt, visit, undefined!) as ts.Statement\n }\n\n // Preserve non-template, non-compiler-generated, non-return statements.\n for (const stmt of body.statements) {\n if (ts.isReturnStatement(stmt)) continue\n\n if (ts.isVariableStatement(stmt)) {\n // Skip template declaration\n const isTemplate = stmt.declarationList.declarations.some(\n (d) => ts.isIdentifier(d.name) && d.name.text === templateVarName,\n )\n if (isTemplate) continue\n // Skip __a{N} and __s{N} declarations (compiler-generated acc/selector)\n const isCompilerOnly = stmt.declarationList.declarations.every(\n (d) =>\n ts.isIdentifier(d.name) &&\n (d.name.text.startsWith('__a') || d.name.text.startsWith('__s')),\n )\n if (isCompilerOnly) continue\n }\n\n // Rewrite and include\n renderStmts.push(rewriteStmt(stmt))\n }\n\n // return [r]\n renderStmts.push(\n f.createReturnStatement(f.createArrayLiteralExpression([f.createIdentifier('r')])),\n )\n\n const newRenderFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(\n undefined,\n undefined,\n f.createObjectBindingPattern([\n f.createBindingElement(undefined, 'entry', 'e'),\n f.createBindingElement(undefined, undefined, '__tpl'),\n f.createBindingElement(undefined, undefined, '__rowUpd'),\n ]),\n ),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(renderStmts, true),\n )\n\n // 4. Build new each options. To avoid mixed-position AST issues, we keep\n // original properties unchanged and only ADD __tpl, __rowUpd, and replace render.\n // The trick: return the original node structure but with the render property\n // swapped. Use ts.factory.updateObjectLiteralExpression which preserves positions.\n const updatedProps = arg.properties.map(\n (p): ts.ObjectLiteralElementLike =>\n p === renderProp ? f.createPropertyAssignment('render', newRenderFn) : p,\n )\n updatedProps.push(f.createPropertyAssignment('__tpl', tplInit))\n updatedProps.push(f.createPropertyAssignment('__rowUpd', rowUpdFn))\n\n const newOpts = f.updateObjectLiteralExpression(arg, updatedProps)\n\n return f.updateCallExpression(eachCall, eachCall.expression, eachCall.typeArguments, [\n newOpts,\n ...eachCall.arguments.slice(1),\n ])\n}\n\nfunction _containsSelectorBind(node: ts.Node): boolean {\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === 'bind'\n ) {\n return true\n }\n return ts.forEachChild(node, _containsSelectorBind) ?? false\n}\n\nfunction containsStructuralCall(node: ts.Node): boolean {\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (['each', 'branch', 'scope', 'show', 'child', 'foreign'].includes(node.expression.text))\n return true\n }\n return ts.forEachChild(node, containsStructuralCall) ?? false\n}\n\n/** Rewrite property access chains replacing oldRoot identifier with newRoot */\nfunction rewriteRoot(\n expr: ts.Expression,\n oldRoot: string,\n newRoot: string,\n f: ts.NodeFactory,\n): ts.Expression {\n if (ts.isIdentifier(expr) && expr.text === oldRoot) return f.createIdentifier(newRoot)\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.argumentExpression,\n )\n }\n return expr\n}\n\n/** Parse a statement string into a fresh AST node (no source positions) */\nfunction _parseStmt(code: string): ts.Statement | null {\n const sf = ts.createSourceFile('__gen.ts', code, ts.ScriptTarget.Latest, false)\n return (sf.statements[0] as ts.Statement | undefined) ?? null\n}\n\n/**\n * Compute the OR of all structural block masks found in the view function.\n * Returns FULL_MASK if any structural block uses FULL_MASK or if no blocks found.\n */\nfunction computeStructuralMask(\n configArg: ts.ObjectLiteralExpression,\n fieldBits: Map<string, number>,\n): number {\n const viewProp = configArg.properties.find(\n (p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === 'view',\n )\n if (!viewProp || !ts.isPropertyAssignment(viewProp)) return 0xffffffff | 0\n\n let mask = 0\n let foundStructural = false\n\n function walk(node: ts.Node): void {\n if (ts.isCallExpression(node)) {\n const name = ts.isIdentifier(node.expression) ? node.expression.text : ''\n if (['each', 'branch', 'scope', 'show'].includes(name) && node.arguments[0]) {\n foundStructural = true\n const opts = node.arguments[0]\n if (ts.isObjectLiteralExpression(opts)) {\n // Check for __mask property (already injected by tryInjectStructuralMask)\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n if (ts.isNumericLiteral(prop.initializer)) {\n mask |= parseInt(prop.initializer.text, 10)\n return\n }\n if (ts.isPrefixUnaryExpression(prop.initializer)) {\n // Handle negative literals like -1\n mask = 0xffffffff | 0\n return\n }\n }\n }\n // No __mask found — use driving accessor mask\n const driverProp = name === 'each' ? 'items' : name === 'branch' ? 'on' : 'when'\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n if (\n ts.isArrowFunction(prop.initializer) ||\n ts.isFunctionExpression(prop.initializer)\n ) {\n const { mask: m } = computeAccessorMask(prop.initializer, fieldBits)\n mask |= m || 0xffffffff | 0\n }\n break\n }\n }\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n walk(viewProp.initializer)\n return foundStructural ? mask || 0xffffffff | 0 : 0\n}\n\n/**\n * Build the __update function body:\n * {\n * // Phase 1 — structural reconciliation (gated by structuralMask)\n * if (d & structuralMask) {\n * for (let i = 0; i < bl.length; i++) {\n * const bk = bl[i]\n * if (!bk || (bk.mask & d) === 0) continue\n * bk.reconcile(s, d)\n * }\n * // Compact dead bindings\n * if (b.length > p || (p > 0 && b[0].dead)) {\n * let w = 0\n * for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n * b.length = w\n * p = Math.min(w, p)\n * }\n * }\n * // Phase 2 — binding updates\n * if (d !== 0) {\n * for (let i = 0; i < p; i++) {\n * const bn = b[i]\n * if (bn.dead || (bn.mask & d) === 0) continue\n * const v = bn.accessor(s)\n * const l = bn.lastValue\n * if (v === l || (v !== v && l !== l)) continue\n * bn.lastValue = v\n * __runPhase2(s, d, b, p)\n * }\n * }\n * }\n */\nfunction buildUpdateBody(f: ts.NodeFactory, structuralMask: number): ts.Block {\n const stmts: ts.Statement[] = []\n\n // Phase 1: structural block reconciliation, gated by aggregate mask\n if (structuralMask !== 0) {\n const phase1Stmts: ts.Statement[] = []\n\n // for (let i = 0; i < bl.length; i++) {\n // const bk = bl[i];\n // if (!bk || !((bk.mask & d) | (bk.maskHi & dHi))) continue;\n // bk.reconcile(s, d, dHi)\n // }\n // Two-word gate matches the runtime's `genericUpdate`: bits 0..30\n // in `d`, bits 31..61 in `dHi`. For ≤31-prefix components both\n // `bk.maskHi` and `dHi` are 0, so V8's inline cache collapses the\n // OR back to the single-word check. >31-prefix components use the\n // high word for precise gating.\n //\n // Re-read bl.length each iteration and null-check bk — a branch's\n // reconcile may dispose the old scope, whose disposers splice child\n // structural blocks out of this shared array mid-iteration.\n const blockLoop = f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bk',\n undefined,\n undefined,\n f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createIdentifier('bk'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'mask'),\n ts.SyntaxKind.AmpersandToken,\n f.createIdentifier('d'),\n ),\n ),\n ts.SyntaxKind.BarToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'maskHi'),\n ts.SyntaxKind.AmpersandToken,\n f.createIdentifier('dHi'),\n ),\n ),\n ),\n ),\n ),\n ),\n f.createContinueStatement(),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'reconcile'),\n undefined,\n [f.createIdentifier('s'), f.createIdentifier('d'), f.createIdentifier('dHi')],\n ),\n ),\n ],\n true,\n ),\n )\n phase1Stmts.push(blockLoop)\n\n // Compaction: if (b.length > p || (p > 0 && b[0].dead)) { ... }\n const compactBody = f.createBlock(\n [\n // let w = 0\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('w', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n ),\n // for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('r', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('r'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('r'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n 'dead',\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createPostfixUnaryExpression(\n f.createIdentifier('w'),\n ts.SyntaxKind.PlusPlusToken,\n ),\n ),\n ts.SyntaxKind.EqualsToken,\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n // b.length = w\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('w'),\n ),\n ),\n // p = Math.min(w, p)\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Math'), 'min'),\n undefined,\n [f.createIdentifier('w'), f.createIdentifier('p')],\n ),\n ),\n ),\n ],\n true,\n )\n\n const compactCondition = f.createBinaryExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.GreaterThanToken,\n f.createIdentifier('p'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.GreaterThanToken,\n f.createNumericLiteral(0),\n ),\n ts.SyntaxKind.AmpersandAmpersandToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(f.createIdentifier('b'), f.createNumericLiteral(0)),\n 'dead',\n ),\n ),\n ),\n )\n phase1Stmts.push(f.createIfStatement(compactCondition, compactBody))\n\n // Wrap Phase 1 in mask gate\n if (structuralMask !== (0xffffffff | 0)) {\n stmts.push(\n f.createIfStatement(\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createIdentifier('d'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, structuralMask),\n ),\n ),\n ts.SyntaxKind.ExclamationEqualsEqualsToken,\n f.createNumericLiteral(0),\n ),\n f.createBlock(phase1Stmts, true),\n ),\n )\n } else {\n stmts.push(...phase1Stmts)\n }\n }\n\n // Phase 2: delegate to shared runtime — __runPhase2(s, d, dHi, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n f.createIdentifier('d'),\n f.createIdentifier('dHi'),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n\n return f.createBlock(stmts, true)\n}\n\n/**\n * Build the `__prefixes` property assignment from path → bit maps.\n *\n * Emits one arrow `(s) => s.<path>` per distinct path. Array index =\n * the path's bit position: positions 0..30 come from `fieldBits` (low\n * word), positions 31..61 from `fieldBitsHi` (high word). The runtime\n * walks this array and reference-compares `prefix(prev)` vs\n * `prefix(next)` per entry, fanning bits into a `(lo, hi)` pair when\n * the array length exceeds 31.\n *\n * Returns null if no paths are present.\n */\nfunction buildPrefixesProp(\n fieldBits: Map<string, number>,\n fieldBitsHi: Map<string, number>,\n f: ts.NodeFactory,\n): ts.PropertyAssignment | null {\n if (fieldBits.size === 0 && fieldBitsHi.size === 0) return null\n // Sort paths by bit value within each word. Bits are powers of two\n // inside their word (1, 2, 4, …, 1<<30), so sorting numerically gives\n // ascending bit position. FULL_MASK (-1) entries from past-61\n // overflow shouldn't drive a prefix entry — defensively skip them.\n const orderedLo = [...fieldBits.entries()]\n .filter(([, bit]) => bit > 0)\n .sort(([, a], [, b]) => a - b)\n const orderedHi = [...fieldBitsHi.entries()].sort(([, a], [, b]) => a - b)\n const buildArrow = (path: string): ts.ArrowFunction => {\n const parts = path.split('.')\n const body = buildAccess(f, 's', parts)\n return f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 's')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n body,\n )\n }\n const arrows = [\n ...orderedLo.map(([path]) => buildArrow(path)),\n ...orderedHi.map(([path]) => buildArrow(path)),\n ]\n return f.createPropertyAssignment('__prefixes', f.createArrayLiteralExpression(arrows, false))\n}\n\nfunction buildAccess(f: ts.NodeFactory, root: string, parts: string[]): ts.Expression {\n let expr: ts.Expression = f.createIdentifier(root)\n for (const part of parts) {\n // Use optional chaining for nested paths\n if (parts.length > 1) {\n expr = f.createPropertyAccessChain(expr, f.createToken(ts.SyntaxKind.QuestionDotToken), part)\n } else {\n expr = f.createPropertyAccessExpression(expr, part)\n }\n }\n return expr\n}\n\n// ── Pass 3: Import cleanup ───────────────────────────────────────\n\nfunction cleanupImports(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n _helpers: Map<string, string>,\n compiled: Set<string>,\n usesElSplit: boolean,\n usesElTemplate: boolean,\n usesMemo: boolean,\n usesApplyBinding: boolean,\n usesCloneStaticTemplate: boolean,\n usesRegisterScopeVariants: boolean,\n f: ts.NodeFactory,\n): ts.SourceFile {\n if (\n compiled.size === 0 &&\n !usesElTemplate &&\n !usesElSplit &&\n !usesMemo &&\n !usesApplyBinding &&\n !usesCloneStaticTemplate &&\n !usesRegisterScopeVariants\n )\n return sf\n\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return sf\n\n const remaining = clause.namedBindings.elements.filter((spec) => !compiled.has(spec.name.text))\n\n const hasElSplit = clause.namedBindings.elements.some((s) => s.name.text === 'elSplit')\n if (!hasElSplit && usesElSplit) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elSplit')))\n }\n\n const hasElTemplate = clause.namedBindings.elements.some((s) => s.name.text === 'elTemplate')\n if (!hasElTemplate && usesElTemplate) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elTemplate')))\n }\n\n const hasCloneStaticTemplate = clause.namedBindings.elements.some(\n (s) => s.name.text === '__cloneStaticTemplate',\n )\n if (!hasCloneStaticTemplate && usesCloneStaticTemplate) {\n remaining.push(\n f.createImportSpecifier(false, undefined, f.createIdentifier('__cloneStaticTemplate')),\n )\n }\n\n const hasMemo = clause.namedBindings.elements.some((s) => s.name.text === 'memo')\n if (!hasMemo && usesMemo) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('memo')))\n }\n\n if (usesApplyBinding) {\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__runPhase2')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__runPhase2')))\n }\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__handleMsg')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__handleMsg')))\n }\n }\n\n // The connect-pattern injector (binding-descriptors.ts) emits\n // `__registerScopeVariants([...])` calls; ensure the runtime\n // helper is imported when at least one was inserted.\n const hasRegisterScopeVariants = clause.namedBindings.elements.some(\n (s) => s.name.text === '__registerScopeVariants',\n )\n if (!hasRegisterScopeVariants && usesRegisterScopeVariants) {\n remaining.push(\n f.createImportSpecifier(false, undefined, f.createIdentifier('__registerScopeVariants')),\n )\n }\n\n const newBindings = f.createNamedImports(remaining)\n const newClause = f.createImportClause(false, undefined, newBindings)\n const newImportDecl = f.createImportDeclaration(undefined, newClause, lluiImport.moduleSpecifier)\n\n let replaced = false\n const statements = sf.statements.map((stmt) => {\n if (\n !replaced &&\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom' &&\n !stmt.importClause?.isTypeOnly\n ) {\n replaced = true\n return newImportDecl\n }\n return stmt\n })\n\n return f.updateSourceFile(sf, statements as unknown as ts.Statement[])\n}\n\n// ── __msgSchema injection ────────────────────────────────────────\n\nfunction injectStateSchema(\n node: ts.CallExpression,\n fields: Record<string, StateType>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__stateSchema'\n ) {\n return node\n }\n }\n\n const schemaProp = f.createPropertyAssignment(\n '__stateSchema',\n stateTypeToLiteral({ kind: 'object', fields }, f),\n )\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction stateTypeToLiteral(t: StateType, f: ts.NodeFactory): ts.Expression {\n if (typeof t === 'string') return f.createStringLiteral(t)\n if (t.kind === 'enum') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('enum')),\n f.createPropertyAssignment(\n 'values',\n f.createArrayLiteralExpression(t.values.map((v) => f.createStringLiteral(v))),\n ),\n ])\n }\n if (t.kind === 'array') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('array')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'optional') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('optional')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'union') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('union')),\n f.createPropertyAssignment(\n 'of',\n f.createArrayLiteralExpression(t.of.map((m) => stateTypeToLiteral(m, f))),\n ),\n ])\n }\n // object\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(t.fields)) {\n fieldProps.push(f.createPropertyAssignment(f.createStringLiteral(k), stateTypeToLiteral(v, f)))\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('object')),\n f.createPropertyAssignment('fields', f.createObjectLiteralExpression(fieldProps, true)),\n ])\n}\n\nfunction injectComponentMeta(\n nodeWithMaybeEdits: ts.CallExpression,\n originalNode: ts.CallExpression,\n sourceFile: ts.SourceFile,\n filename: string,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = nodeWithMaybeEdits.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return nodeWithMaybeEdits\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__componentMeta'\n ) {\n return nodeWithMaybeEdits\n }\n }\n\n // Line number from the original (real-position) node\n const pos = originalNode.pos >= 0 ? originalNode.getStart(sourceFile) : 0\n const { line } = sourceFile.getLineAndCharacterOfPosition(pos)\n\n const meta = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('file', f.createStringLiteral(filename)),\n f.createPropertyAssignment('line', f.createNumericLiteral(line + 1)),\n ],\n false,\n )\n\n const metaProp = f.createPropertyAssignment('__componentMeta', meta)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, metaProp], true)\n\n return f.createCallExpression(nodeWithMaybeEdits.expression, nodeWithMaybeEdits.typeArguments, [\n newConfig,\n ...nodeWithMaybeEdits.arguments.slice(1),\n ])\n}\n\nfunction injectMsgSchema(\n node: ts.CallExpression,\n schema: MsgSchema,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__msgSchema'\n ) {\n return node\n }\n }\n\n // Build the schema object literal\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, descriptor] of Object.entries(fields)) {\n // Always wrap user-derived keys with createStringLiteral — bare\n // strings get printed as identifiers, which breaks fields named\n // with reserved words ('delete'), hyphens, or other non-id chars.\n fieldProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(field),\n buildFieldDescriptorExpr(descriptor, f),\n ),\n )\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__msgSchema', schemaObj)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n/**\n * Emit the AST for a single field descriptor. Bare forms (`'string'`,\n * `{enum: [...]}`) print as their compact form; rich descriptors emit\n * an object literal carrying `type`, `optional`, `priority`, and `hint`\n * properties as set.\n */\nfunction buildFieldDescriptorExpr(descriptor: MsgField, f: ts.NodeFactory): ts.Expression {\n if (typeof descriptor === 'string') {\n return f.createStringLiteral(descriptor)\n }\n if (isRichField(descriptor)) {\n const props: ts.PropertyAssignment[] = []\n // `type` is the bare type; recurse to emit either a string or the\n // enum object.\n props.push(f.createPropertyAssignment('type', buildFieldDescriptorExpr(descriptor.type, f)))\n if (descriptor.optional) {\n props.push(f.createPropertyAssignment('optional', f.createTrue()))\n }\n if (descriptor.priority) {\n props.push(f.createPropertyAssignment('priority', f.createStringLiteral(descriptor.priority)))\n }\n if (descriptor.hint !== undefined) {\n props.push(f.createPropertyAssignment('hint', f.createStringLiteral(descriptor.hint)))\n }\n if (descriptor.validates !== undefined) {\n props.push(\n f.createPropertyAssignment('validates', f.createStringLiteral(descriptor.validates)),\n )\n }\n return f.createObjectLiteralExpression(props)\n }\n // The remaining cases are bare type-shape variants emitted by\n // `resolveFieldType`: enum, object, array, discriminated-union.\n // Discriminate by which key is present so we never confuse an inline\n // object literal ({enum: [...]}) with a deeply-nested shape descriptor.\n if ('enum' in descriptor) {\n // Mixed-typed enum values (string/number/boolean). Each enum entry\n // emits with its native literal kind so JSON round-trips preserve\n // the type information — `1` stays a number, not stringified.\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment(\n 'enum',\n f.createArrayLiteralExpression(descriptor.enum.map((v) => emitEnumValue(v, f))),\n ),\n ])\n }\n if ('kind' in descriptor && descriptor.kind === 'object') {\n // Nested object shape — recurse per field. Fields may themselves\n // be rich descriptors (optional, etc.), so route each through the\n // same builder.\n const shapeProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(descriptor.shape)) {\n shapeProps.push(\n f.createPropertyAssignment(f.createStringLiteral(k), buildFieldDescriptorExpr(v, f)),\n )\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('object')),\n f.createPropertyAssignment('shape', f.createObjectLiteralExpression(shapeProps)),\n ])\n }\n if ('kind' in descriptor && descriptor.kind === 'discriminated-union') {\n // Inner-union variants are themselves field maps (per branch),\n // recursed through the same builder. Symmetric with how the\n // top-level Msg union's variants are represented.\n const variantProps: ts.PropertyAssignment[] = []\n for (const [discValue, fields] of Object.entries(descriptor.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(fields)) {\n fieldProps.push(\n f.createPropertyAssignment(f.createStringLiteral(k), buildFieldDescriptorExpr(v, f)),\n )\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(discValue),\n f.createObjectLiteralExpression(fieldProps, true),\n ),\n )\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('discriminated-union')),\n f.createPropertyAssignment('discriminant', f.createStringLiteral(descriptor.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ])\n }\n // Array — `{kind: 'array', element: <bare type>}`.\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('array')),\n f.createPropertyAssignment('element', buildFieldDescriptorExpr(descriptor.element, f)),\n ])\n}\n\n/**\n * Emit a single enum value as the right TS literal kind. Numbers as\n * numeric literals, booleans as keyword expressions, strings as string\n * literals — preserves the type at the wire (JSON round-trips correctly).\n */\nfunction emitEnumValue(v: string | number | boolean, f: ts.NodeFactory): ts.Expression {\n if (typeof v === 'string') return f.createStringLiteral(v)\n if (typeof v === 'number') return f.createNumericLiteral(v)\n return v ? f.createTrue() : f.createFalse()\n}\n\nfunction hasNonDefaultAnnotation(a: Record<string, MessageAnnotations>): boolean {\n for (const v of Object.values(a)) {\n if (v.intent !== null) return true\n if (v.alwaysAffordable) return true\n if (v.requiresConfirm) return true\n if (v.dispatchMode !== 'shared') return true\n if (v.routeGate != null) return true\n }\n return false\n}\n\nfunction annotationsToObjectLiteral(\n a: Record<string, MessageAnnotations>,\n): ts.ObjectLiteralExpression {\n const props: ts.PropertyAssignment[] = []\n for (const [variant, ann] of Object.entries(a)) {\n props.push(\n ts.factory.createPropertyAssignment(\n // Wrap with createStringLiteral — the printer treats bare strings\n // as identifiers, which produces invalid JS for discriminants\n // containing characters like '/' (e.g. 'Router/RouteChanged'),\n // reserved words ('delete'), or hyphens.\n ts.factory.createStringLiteral(variant),\n ts.factory.createObjectLiteralExpression(\n [\n ts.factory.createPropertyAssignment(\n 'intent',\n ann.intent === null\n ? ts.factory.createNull()\n : ts.factory.createStringLiteral(ann.intent),\n ),\n ts.factory.createPropertyAssignment(\n 'alwaysAffordable',\n ann.alwaysAffordable ? ts.factory.createTrue() : ts.factory.createFalse(),\n ),\n ts.factory.createPropertyAssignment(\n 'requiresConfirm',\n ann.requiresConfirm ? ts.factory.createTrue() : ts.factory.createFalse(),\n ),\n ts.factory.createPropertyAssignment(\n 'dispatchMode',\n ts.factory.createStringLiteral(ann.dispatchMode),\n ),\n // Only emit `routeGate` when non-null. The runtime treats\n // missing as the no-gate default (\"variant follows its\n // dispatchMode-driven affordance behavior\") — keeping the\n // wire shape minimal for the common case of un-gated Msgs.\n // Use loose `!= null` so test fixtures that omit the\n // field entirely also fall through to the no-emit path.\n ...(ann.routeGate != null\n ? [\n ts.factory.createPropertyAssignment(\n 'routeGate',\n ts.factory.createStringLiteral(ann.routeGate),\n ),\n ]\n : []),\n ],\n true,\n ),\n ),\n )\n }\n return ts.factory.createObjectLiteralExpression(props, true)\n}\n\nfunction injectMsgAnnotations(\n node: ts.CallExpression,\n annotations: Record<string, MessageAnnotations>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__msgAnnotations'\n ) {\n return node\n }\n }\n\n const annotationsProp = f.createPropertyAssignment(\n '__msgAnnotations',\n annotationsToObjectLiteral(annotations),\n )\n\n const newConfig = f.createObjectLiteralExpression(\n [...configArg.properties, annotationsProp],\n true,\n )\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction injectSchemaHash(\n node: ts.CallExpression,\n hash: string,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__schemaHash'\n ) {\n return node\n }\n }\n\n const hashProp = f.createPropertyAssignment('__schemaHash', f.createStringLiteral(hash))\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, hashProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction injectEffectSchema(\n node: ts.CallExpression,\n schema: MsgSchema,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__effectSchema'\n ) {\n return node\n }\n }\n\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, descriptor] of Object.entries(fields)) {\n // Effects share the same descriptor pipeline as messages — they\n // can carry @should/optional annotations too, even though typical\n // Effect unions don't need them. Reusing the helper keeps both\n // schemas's wire formats consistent.\n fieldProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(field),\n buildFieldDescriptorExpr(descriptor, f),\n ),\n )\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__effectSchema', schemaObj)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n// ── Per-item accessor detection ──────────────────────────────────\n\n// ── Item selector deduplication ──────────────────────────────────\n\n/**\n * In each() render callbacks, deduplicate repeated item(selector) calls.\n *\n * Before: item((r) => r.id) appears 4 times → 4 selector closures + 4 accessor closures\n * After: const __s0 = (r) => r.id; const __a0 = item(__s0); → 1 selector + 1 accessor\n */\nfunction tryDeduplicateItemSelectors(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n printer: ts.Printer,\n sourceFile: ts.SourceFile,\n): ts.CallExpression | null {\n // each() takes a single object literal argument\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find the render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n\n // Get the item parameter name from the options bag: ({ item, ... }) => ...\n const renderParam = renderFn.parameters[0]\n if (!renderParam) return null\n\n let itemName: string | null = null\n if (ts.isIdentifier(renderParam.name)) {\n // Old style: (item) => ... or (item, index) => ...\n itemName = renderParam.name.text\n } else if (ts.isObjectBindingPattern(renderParam.name)) {\n // New style: ({ item, send, ... }) => ...\n for (const el of renderParam.name.elements) {\n if (ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'item') {\n itemName = 'item'\n break\n }\n }\n }\n if (!itemName) return null\n\n // Collect all item(selector) calls AND item.FIELD property-access expressions.\n // Both forms produce the same accessor; they dedup together via the field-name key.\n type Occurrence =\n | { kind: 'call'; node: ts.CallExpression; selector: ts.Expression; key: string }\n | { kind: 'access'; node: ts.PropertyAccessExpression; field: string; key: string }\n\n const occurrences: Occurrence[] = []\n\n // Try to extract a simple field name from an arrow selector: (t) => t.FIELD → \"FIELD\"\n function extractSimpleField(sel: ts.ArrowFunction | ts.FunctionExpression): string | null {\n if (sel.parameters.length !== 1) return null\n const paramName = sel.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return null\n const body = ts.isArrowFunction(sel) ? sel.body : null\n if (!body) return null\n const expr = ts.isBlock(body) ? null : body\n if (!expr || !ts.isPropertyAccessExpression(expr)) return null\n if (!ts.isIdentifier(expr.expression) || expr.expression.text !== paramName.text) return null\n if (!ts.isIdentifier(expr.name)) return null\n return expr.name.text\n }\n\n function collectItemCalls(node: ts.Node): void {\n // item(selector) calls\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n node.arguments.length === 1\n ) {\n const sel = node.arguments[0]!\n if (ts.isArrowFunction(sel) || ts.isFunctionExpression(sel)) {\n const field = extractSimpleField(sel)\n const key =\n field !== null\n ? `field:${field}`\n : `expr:${printer.printNode(ts.EmitHint.Expression, sel, sourceFile)}`\n occurrences.push({ kind: 'call', node, selector: sel, key })\n }\n }\n // item.FIELD property access — but NOT when it's the callee of a call expression\n // where we want the original to stay (e.g. item.id() we still replace, because the\n // accessor itself becomes __a0 and we keep the trailing ()).\n else if (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n ts.isIdentifier(node.name)\n ) {\n const field = node.name.text\n occurrences.push({ kind: 'access', node, field, key: `field:${field}` })\n }\n ts.forEachChild(node, collectItemCalls)\n }\n collectItemCalls(renderFn.body)\n\n if (occurrences.length < 2) return null // nothing to deduplicate\n\n // Group by normalized key (field:name or expr:text)\n const groups = new Map<string, Occurrence[]>()\n for (const occ of occurrences) {\n const existing = groups.get(occ.key)\n if (existing) existing.push(occ)\n else groups.set(occ.key, [occ])\n }\n\n // Hoist ALL occurrences (even unique ones) so compiled code uses `acc()` (plain\n // function) instead of `item(fn)` (Proxy-wrapped) or `item.FIELD` (Proxy.get trap).\n // Unique accesses get their own __a* var; duplicates share one.\n const allGroups = [...groups.entries()]\n if (allGroups.length === 0) return null\n\n // Build hoisted declarations and replacement map\n const hoistedStmts: ts.Statement[] = []\n const replacements = new Map<ts.Node, ts.Identifier>()\n let sIdx = 0\n\n for (const [key, occs] of allGroups) {\n const selVar = `__s${sIdx}`\n const accVar = `__a${sIdx}`\n sIdx++\n\n // Build the selector expression.\n // For field:FIELD, synthesize (t) => t.FIELD (or reuse an existing call's selector).\n // For expr:..., reuse the existing selector expression.\n let selector: ts.Expression\n const callOccurrence = occs.find((o) => o.kind === 'call')\n if (callOccurrence && callOccurrence.kind === 'call') {\n selector = callOccurrence.selector\n } else {\n // All occurrences are property-access form — synthesize (t) => t.FIELD\n const firstAccess = occs[0]!\n if (firstAccess.kind !== 'access') throw new Error('unreachable')\n selector = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 't')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createPropertyAccessExpression(f.createIdentifier('t'), firstAccess.field),\n )\n }\n\n // const __s0 = (r) => r.id\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(selVar, undefined, undefined, selector)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n // const __a0 = acc(__s0) — use the plain-function `acc` instead of `item` (which\n // is a Proxy). Adds `acc` to the destructure binding below if not already present.\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n accVar,\n undefined,\n undefined,\n f.createCallExpression(f.createIdentifier('acc'), undefined, [\n f.createIdentifier(selVar),\n ]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // Map all occurrences to the cached accessor identifier\n void key // silence unused\n for (const occ of occs) {\n replacements.set(occ.node, f.createIdentifier(accVar))\n }\n }\n\n // Rewrite the render function body to replace item(sel)/item.field with cached refs\n function replaceVisitor(node: ts.Node): ts.Node {\n if (replacements.has(node)) {\n return replacements.get(node)!\n }\n return ts.visitEachChild(node, replaceVisitor, undefined!)\n }\n\n const newBody = ts.visitNode(renderFn.body, replaceVisitor)!\n\n // Prepend hoisted declarations to the body\n let finalBody: ts.ConciseBody\n if (ts.isBlock(newBody)) {\n finalBody = f.createBlock([...hoistedStmts, ...(newBody as ts.Block).statements], true)\n } else {\n // Arrow with expression body → convert to block with return\n finalBody = f.createBlock(\n [...hoistedStmts, f.createReturnStatement(newBody as ts.Expression)],\n true,\n )\n }\n\n // Ensure `acc` is in the destructure binding pattern of the render param.\n // Hoisted code references it; if user didn't destructure it, add it.\n const newParameters = renderFn.parameters.map((p, idx) => {\n if (idx !== 0) return p\n if (!ts.isObjectBindingPattern(p.name)) return p\n const hasAcc = p.name.elements.some(\n (el) => ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'acc',\n )\n if (hasAcc) return p\n const newBinding = f.createObjectBindingPattern([\n ...p.name.elements,\n f.createBindingElement(undefined, undefined, f.createIdentifier('acc')),\n ])\n return f.createParameterDeclaration(\n p.modifiers,\n p.dotDotDotToken,\n newBinding,\n p.questionToken,\n p.type,\n p.initializer,\n )\n })\n\n // Build new render function\n const newRenderFn = ts.isArrowFunction(renderFn)\n ? f.createArrowFunction(\n renderFn.modifiers,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n finalBody,\n )\n : f.createFunctionExpression(\n renderFn.modifiers,\n renderFn.asteriskToken,\n renderFn.name,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n finalBody as ts.Block,\n )\n\n // Rebuild the each() call with the new render property\n const newProps = arg.properties.map((prop) =>\n prop === renderProp ? f.createPropertyAssignment('render', newRenderFn) : prop,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Auto-memoize each() items accessor ──────────────────────────\n\nconst ALLOCATING_METHODS = new Set([\n 'filter',\n 'map',\n 'slice',\n 'sort',\n 'reverse',\n 'concat',\n 'flat',\n 'flatMap',\n 'reduce',\n])\n\n/**\n * Detect whether an expression body contains array-allocating operations\n * that would produce a new array on every call.\n */\nfunction accessorAllocatesArray(body: ts.ConciseBody | ts.Expression): boolean {\n let found = false\n function walk(n: ts.Node): void {\n if (found) return\n // .method() on something — check the method name\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.name) &&\n ALLOCATING_METHODS.has(n.expression.name.text)\n ) {\n found = true\n return\n }\n // Spread in array literal: [...x, y]\n if (ts.isArrayLiteralExpression(n) && n.elements.some((el) => ts.isSpreadElement(el))) {\n found = true\n return\n }\n // Array.from(...)\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.expression) &&\n n.expression.expression.text === 'Array' &&\n ts.isIdentifier(n.expression.name) &&\n n.expression.name.text === 'from'\n ) {\n found = true\n return\n }\n ts.forEachChild(n, walk)\n }\n walk(body)\n return found\n}\n\n/**\n * Wrap `each({ items: (s) => s.x.filter(...) })` in `memo()` with a bitmask,\n * so the filter is only re-run when its dependencies change. For items accessors\n * that don't allocate (e.g. `(s) => s.items`), each's built-in same-ref fast\n * path already suffices — no wrap needed.\n *\n * Returns null if no wrapping was applied.\n */\nfunction tryWrapEachItemsWithMemo(\n eachCall: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n let itemsProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'items') {\n itemsProp = prop\n break\n }\n }\n if (!itemsProp) return null\n\n const accessor = itemsProp.initializer\n if (!ts.isArrowFunction(accessor) && !ts.isFunctionExpression(accessor)) return null\n\n // Don't wrap if it's already wrapped (call expression like memo(...) or similar)\n // We only wrap raw arrow functions.\n\n // Skip if the body doesn't allocate — each's own ref check handles those.\n const body = ts.isArrowFunction(accessor) ? accessor.body : accessor.body\n if (!accessorAllocatesArray(body)) return null\n\n const { mask, readsState } = computeAccessorMask(accessor, fieldBits)\n if (mask === 0 && !readsState) return null // constant, nothing to memoize\n const finalMask = mask === 0 && readsState ? 0xffffffff | 0 : mask\n\n // Wrap: memo(accessor, mask)\n const wrapped = f.createCallExpression(f.createIdentifier('memo'), undefined, [\n accessor,\n createMaskLiteral(f, finalMask),\n ])\n\n const newProps = arg.properties.map((p) =>\n p === itemsProp ? f.createPropertyAssignment('items', wrapped) : p,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Subtree collapse: nested elements → elTemplate ──────────────\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\ninterface AnalyzedNode {\n tag: string\n localName: string\n /** Static HTML attributes (class, id, etc.) */\n staticAttrs: Array<[string, string]>\n /** Event handlers: [eventName, handlerExpression] */\n events: Array<[string, ts.Expression]>\n /** Reactive bindings: [mask, maskHi, kind, key, accessor]. `maskHi` is\n * 0 for low-word-only bindings (the common case) and a non-zero\n * high-word mask when the accessor reads a prefix at bit position\n * 31..61. Emit serializes maskHi as a 5th tuple slot only when\n * non-zero — see `__bind` / elSplit's tuple-length detection. */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Children: analyzed elements, static text, or reactive text */\n children: AnalyzedChild[]\n /** Path from template root as childNodes indices */\n path: number[]\n}\n\ntype AnalyzedChild =\n | { type: 'element'; node: AnalyzedNode }\n | { type: 'staticText'; value: string }\n | {\n type: 'reactiveText'\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }\n\n/**\n * Try to analyze an element call and all its descendants as a collapsible subtree.\n * Returns null if any part of the tree is not eligible for collapse.\n */\nfunction analyzeSubtree(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n path: number[],\n fieldBitsHi: Map<string, number> = new Map(),\n): AnalyzedNode | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const tag = helpers.get(localName)\n if (!tag) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // In that case, treat it as no props + children=firstArg.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n const childrenArg = usesChildrenOnlyOverload ? firstArg : node.arguments[1]\n\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) return null\n\n const staticAttrs: Array<[string, string]> = []\n const events: Array<[string, ts.Expression]> = []\n const bindings: Array<[number, number, string, string, ts.Expression]> = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) return null\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name\n } else {\n return null\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n events.push([key.slice(2).toLowerCase(), value])\n continue\n }\n\n // Resolve identifier → local const arrow initializer (see elSplit\n // path for the full rationale).\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n value,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n if (mask === 0 && maskHi === 0 && !readsState) {\n // Constant fold — treat as static if we can extract a string\n const staticVal = tryExtractStaticString(value)\n if (staticVal !== null) {\n const attrKey = kind === 'class' ? 'class' : resolvedKey\n staticAttrs.push([attrKey, staticVal])\n continue\n }\n }\n const finalMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n bindings.push([finalMask, maskHi, kind, resolvedKey, value])\n continue\n }\n\n // Per-item accessor call\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Per-item property access: item.field (or hoisted __a0/__a1/…)\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Static literal prop\n if (ts.isStringLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (ts.isNumericLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (value.kind === ts.SyntaxKind.TrueKeyword) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, ''])\n continue\n }\n\n // Non-literal prop — can't collapse\n return null\n }\n }\n\n // Analyze children\n const children: AnalyzedChild[] = []\n\n if (childrenArg && ts.isArrayLiteralExpression(childrenArg)) {\n let childIdx = 0\n for (const child of childrenArg.elements) {\n // String literal child — static text node\n if (ts.isStringLiteral(child) || ts.isNoSubstitutionTemplateLiteral(child)) {\n children.push({ type: 'staticText', value: child.text })\n childIdx++\n continue\n }\n\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (child.arguments.length >= 1 && ts.isStringLiteral(child.arguments[0]!)) {\n children.push({ type: 'staticText', value: child.arguments[0]!.text })\n childIdx++ // static text creates a text node in the template DOM\n continue\n }\n // Reactive text — accessor is first arg\n const accessor = child.arguments[0]!\n if (ts.isArrowFunction(accessor) || ts.isFunctionExpression(accessor)) {\n const { mask, maskHi, readsState } = computeAccessorMask(\n accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n children.push({\n type: 'reactiveText',\n accessor,\n mask: mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask,\n maskHi,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text: text(item(t => t.label))\n if (ts.isCallExpression(accessor) && isPerItemCall(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text via property access: text(item.label)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup.\n if (isPerItemFieldAccess(accessor) || isHoistedPerItem(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++\n continue\n }\n return null // unsupported text() form\n }\n\n // Element helper call — recurse\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n helpers.has(child.expression.text)\n ) {\n const childNode = analyzeSubtree(\n child,\n helpers,\n fieldBits,\n [...path, childIdx],\n fieldBitsHi,\n )\n if (!childNode) return null\n children.push({ type: 'element', node: childNode })\n childIdx++\n continue\n }\n\n // Anything else (each, branch, show, arbitrary expressions) — bail\n return null\n }\n\n // Note: mixed static + reactive text in the same parent is now supported\n // because reactive text uses <!--$--> comment placeholders that break\n // text-node merging at parse time.\n } else if (childrenArg && childrenArg.kind !== ts.SyntaxKind.NullKeyword) {\n // Non-array children (e.g., spread, variable) — bail\n return null\n }\n\n return { tag, localName, staticAttrs, events, bindings, children, path }\n}\n\nfunction tryExtractStaticString(accessor: ts.ArrowFunction | ts.FunctionExpression): string | null {\n const body = ts.isArrowFunction(accessor) ? accessor.body : null\n if (body && ts.isStringLiteral(body)) return body.text\n return null\n}\n\n/**\n * Check if a subtree has any nested element children (worth collapsing).\n */\nfunction hasNestedElements(node: AnalyzedNode): boolean {\n return node.children.some((c) => c.type === 'element')\n}\n\n/**\n * Collect all local helper names used in the subtree for import cleanup.\n */\nfunction collectUsedHelpers(node: AnalyzedNode, out: Set<string>): void {\n out.add(node.localName)\n for (const child of node.children) {\n if (child.type === 'element') collectUsedHelpers(child.node, out)\n }\n}\n\n/**\n * Build the static HTML string from an analyzed subtree.\n */\nfunction buildTemplateHTML(node: AnalyzedNode): string {\n let html = `<${node.tag}`\n for (const [key, value] of node.staticAttrs) {\n html += ` ${key}=\"${escapeAttr(value)}\"`\n }\n html += '>'\n\n if (VOID_ELEMENTS.has(node.tag)) return html\n\n for (let ci = 0; ci < node.children.length; ci++) {\n const child = node.children[ci]!\n if (child.type === 'staticText') {\n html += escapeHTML(child.value)\n } else if (child.type === 'element') {\n html += buildTemplateHTML(child.node)\n } else if (child.type === 'reactiveText') {\n // When the reactive text is not adjacent to another text-type child,\n // we can use a literal text node placeholder instead of a comment.\n // The cloned text node is reused in the patch function — no\n // createTextNode + replaceChild needed. This saves 2 DOM operations\n // per text binding per row.\n //\n // When adjacent text WOULD cause HTML-parser merging (two text nodes\n // collapse into one), we fall back to the comment placeholder.\n const prev = ci > 0 ? node.children[ci - 1]! : null\n const next = ci < node.children.length - 1 ? node.children[ci + 1]! : null\n const adjText =\n prev?.type === 'staticText' ||\n prev?.type === 'reactiveText' ||\n next?.type === 'staticText' ||\n next?.type === 'reactiveText'\n if (adjText) {\n html += '<!--$-->'\n } else {\n // Space character becomes a Text node in the cloned template.\n // Mark the child so the patch codegen knows to skip replaceChild.\n html += ' '\n ;(child as { inlineText?: boolean }).inlineText = true\n }\n }\n }\n\n html += `</${node.tag}>`\n return html\n}\n\ninterface PatchOp {\n /** Variable name for this node (e.g., __n0) */\n varName: string\n /** Expression to walk to this node from root */\n walkExpr: ts.Expression\n /** Event listeners to attach */\n events: Array<[string, ts.Expression]>\n /** Bindings to register via __bind: [mask, maskHi, kind, key, accessor] */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Reactive text children — reference existing placeholder text nodes */\n reactiveTexts: Array<{\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }>\n}\n\n/**\n * Collect all patch operations from an analyzed subtree.\n */\nfunction collectPatchOps(\n node: AnalyzedNode,\n f: ts.NodeFactory,\n rootExpr: ts.Expression,\n ops: PatchOp[],\n counter: { n: number; t: number },\n): void {\n const hasDynamic =\n node.events.length > 0 ||\n node.bindings.length > 0 ||\n node.children.some((c) => c.type === 'reactiveText')\n\n let nodeExpr = rootExpr\n\n if (hasDynamic) {\n const varName = `__n${counter.n++}`\n // Build walk expression: root.childNodes[i].childNodes[j]...\n nodeExpr = f.createIdentifier(varName)\n ops.push({\n varName,\n walkExpr: buildWalkExpr(node.path, f),\n events: node.events,\n bindings: node.bindings,\n reactiveTexts: node.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Recurse into element children\n for (const child of node.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, nodeExpr, ops, counter)\n }\n }\n}\n\nfunction buildWalkExpr(path: number[], f: ts.NodeFactory): ts.Expression {\n let expr: ts.Expression = f.createIdentifier('root')\n for (const idx of path) {\n // Use firstChild + nextSibling chain instead of childNodes[n]\n // firstChild/nextSibling are direct pointer lookups, childNodes is a live NodeList\n expr = f.createPropertyAccessExpression(expr, 'firstChild')\n for (let i = 0; i < idx; i++) {\n expr = f.createPropertyAccessExpression(expr, 'nextSibling')\n }\n }\n return expr\n}\n\n/**\n * Emit elTemplate(htmlString, (root, __bind) => { ... }) call.\n */\nfunction emitSubtreeTemplate(\n analyzed: AnalyzedNode,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const html = buildTemplateHTML(analyzed)\n const ops: PatchOp[] = []\n const counter = { n: 0, t: 0 }\n\n // Collect root-level patches\n const rootHasDynamic =\n analyzed.events.length > 0 ||\n analyzed.bindings.length > 0 ||\n analyzed.children.some((c) => c.type === 'reactiveText')\n\n if (rootHasDynamic) {\n ops.push({\n varName: '', // use 'root' directly\n walkExpr: f.createIdentifier('root'),\n events: analyzed.events,\n bindings: analyzed.bindings,\n reactiveTexts: analyzed.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Collect child patches\n for (const child of analyzed.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, f.createIdentifier('root'), ops, counter)\n }\n }\n\n // Collect delegatable events: group by event type across all ops\n // Events on child nodes with the same type are delegated to the root\n const delegatableEvents = new Map<string, Array<{ nodeVar: string; handler: ts.Expression }>>()\n for (const op of ops) {\n for (const [eventName, handler] of op.events) {\n if (!op.varName) {\n // Root-level events — can't delegate further up\n continue\n }\n const list = delegatableEvents.get(eventName)\n if (list) list.push({ nodeVar: op.varName, handler })\n else delegatableEvents.set(eventName, [{ nodeVar: op.varName, handler }])\n }\n }\n\n // Build patch function body\n const stmts: ts.Statement[] = []\n\n for (const op of ops) {\n const nodeRef = op.varName ? f.createIdentifier(op.varName) : f.createIdentifier('root')\n\n // Variable declaration for walking to node\n if (op.varName) {\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(op.varName, undefined, undefined, op.walkExpr)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // Non-delegatable events (root-level or single-use event types)\n for (const [eventName, handler] of op.events) {\n const delegated = delegatableEvents.get(eventName)\n if (op.varName && delegated && delegated.length >= 2) continue // handled below\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(nodeRef, 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), handler],\n ),\n ),\n )\n }\n\n // Reactive text children — walk to placeholder, create text node, bind\n for (const rt of op.reactiveTexts) {\n const tVar = `__t${counter.t++}`\n const isInline = !!(rt as { inlineText?: boolean }).inlineText\n\n if (isInline) {\n // Inline text placeholder: the template HTML has a space character\n // that cloneNode already created as a Text node. Walk to it and\n // bind directly — no createTextNode, no replaceChild.\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(tVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n } else {\n // Comment placeholder: create a new text node and replace the comment.\n const cVar = `__c${counter.t - 1}`\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(cVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n tVar,\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__dom'), 'createTextNode'),\n undefined,\n [f.createStringLiteral('')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(cVar), 'parentNode'),\n 'replaceChild',\n ),\n undefined,\n [f.createIdentifier(tVar), f.createIdentifier(cVar)],\n ),\n ),\n )\n }\n // __bind(__t0, mask, 'text', undefined, accessor, [maskHi])\n const rtArgs: ts.Expression[] = [\n f.createIdentifier(tVar),\n createMaskLiteral(f, rt.mask),\n f.createStringLiteral('text'),\n f.createIdentifier('undefined'),\n rt.accessor,\n ]\n // Only pass the 6th positional arg when the accessor reads a\n // high-word prefix. Keeps the emit byte-identical to the\n // pre-multi-word baseline for the common case.\n if (rt.maskHi !== 0) rtArgs.push(createMaskLiteral(f, rt.maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, rtArgs),\n ),\n )\n }\n\n // Reactive bindings — __bind(node, mask, kind, key, accessor, [maskHi])\n for (const [mask, maskHi, kind, key, accessor] of op.bindings) {\n const args: ts.Expression[] = [\n nodeRef,\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n key ? f.createStringLiteral(key) : f.createIdentifier('undefined'),\n accessor,\n ]\n if (maskHi !== 0) args.push(createMaskLiteral(f, maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, args),\n ),\n )\n }\n }\n\n // Emit delegated event listeners on root\n for (const [eventName, entries] of delegatableEvents) {\n if (entries.length < 2) continue\n // root.onclick = (e) => { if (n1.contains(e.target)) { h1(); return } if (n2.contains(e.target)) { h2(); return } }\n const eParam = f.createIdentifier('__e')\n const eTarget = f.createPropertyAccessExpression(eParam, 'target')\n\n const ifStmts: ts.Statement[] = []\n for (const { nodeVar, handler } of entries) {\n // if (nodeVar.contains(e.target)) { handler(e); return }\n ifStmts.push(\n f.createIfStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier(nodeVar), 'contains'),\n undefined,\n [eTarget],\n ),\n f.createBlock(\n [\n f.createExpressionStatement(f.createCallExpression(handler, undefined, [eParam])),\n f.createReturnStatement(),\n ],\n true,\n ),\n ),\n )\n }\n\n const delegateHandler = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(ifStmts, true),\n )\n\n // root.addEventListener(eventName, handler)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('root'), 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), delegateHandler],\n ),\n ),\n )\n }\n\n // (root, __bind, __dom) => { ... }\n const patchFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'root'),\n f.createParameterDeclaration(undefined, undefined, '__bind'),\n f.createParameterDeclaration(undefined, undefined, '__dom'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n\n const call = f.createCallExpression(f.createIdentifier('elTemplate'), undefined, [\n f.createStringLiteral(html),\n patchFn,\n ])\n\n return call\n}\n\n// ── Static subtree detection ─────────────────────────────────────\n\nfunction isStaticChildren(children: ts.Expression): boolean {\n if (children.kind === ts.SyntaxKind.NullKeyword) return true\n if (!ts.isArrayLiteralExpression(children)) return false\n return children.elements.every((child) => {\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n return child.arguments.length === 1 && ts.isStringLiteral(child.arguments[0]!)\n }\n // Another elSplit or element helper that was already determined static\n // For now, only handle text() children\n return false\n })\n}\n\nfunction buildStaticHTML(\n tag: string,\n staticProps: ts.Statement[],\n children: ts.Expression,\n _f: ts.NodeFactory,\n): string | null {\n // Extract static attributes from staticFn statements\n let attrs = ''\n for (const stmt of staticProps) {\n if (!ts.isExpressionStatement(stmt)) return null\n const expr = stmt.expression\n // __e.className = 'value'\n if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {\n const prop = expr.left.name.text\n if (prop === 'className' && ts.isStringLiteral(expr.right)) {\n attrs += ` class=\"${escapeAttr(expr.right.text)}\"`\n }\n }\n // __e.setAttribute('key', 'value')\n if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {\n if (expr.expression.name.text === 'setAttribute' && expr.arguments.length === 2) {\n const key = expr.arguments[0]\n const val = expr.arguments[1]\n if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {\n attrs += ` ${key.text}=\"${escapeAttr(val.text)}\"`\n } else {\n return null // non-literal attribute\n }\n }\n }\n }\n\n // Extract text children\n let inner = ''\n if (ts.isArrayLiteralExpression(children)) {\n for (const child of children.elements) {\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (ts.isStringLiteral(child.arguments[0]!)) {\n inner += escapeHTML(child.arguments[0]!.text)\n } else {\n return null\n }\n } else {\n return null\n }\n }\n }\n\n return `<${tag}${attrs}>${inner}</${tag}>`\n}\n\nfunction escapeHTML(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nfunction escapeAttr(s: string): string {\n return s.replace(/&/g, '&').replace(/\"/g, '"')\n}\n\nfunction emitTemplateClone(html: string, f: ts.NodeFactory): ts.Expression {\n // Emits: __cloneStaticTemplate(\"<html>\")\n //\n // The helper lives in `@llui/dom` and threads through `ctx.dom` so SSR\n // under jsdom/linkedom works without touching globalThis. The import\n // cleanup pass (see cleanupImports) auto-injects the import when this\n // emission fires.\n return f.createCallExpression(f.createIdentifier('__cloneStaticTemplate'), undefined, [\n f.createStringLiteral(html),\n ])\n}\n\nfunction isPerItemCall(node: ts.CallExpression): boolean {\n // Matches: item(t => t.field) or item(t => expr)\n // where item is an identifier (the scoped accessor from each() render)\n if (!ts.isIdentifier(node.expression)) return false\n // Check that the first argument is an arrow function (the selector)\n if (node.arguments.length !== 1) return false\n const arg = node.arguments[0]!\n return ts.isArrowFunction(arg) || ts.isFunctionExpression(arg)\n}\n\n// Matches: item.FIELD — the item-proxy shorthand equivalent of item(t => t.FIELD).\n// Lifetime-checked: the `item` identifier must resolve to a parameter of an\n// `each({ render })` callback. Without this check, plain\n// `arr.map((item) => item.field)` outside each() would be rewritten as a\n// per-item binding and crash at runtime with \"accessor is not a function\"\n// because `item.field` evaluates to a bare value (not a function) when\n// treated as an accessor.\nfunction isPerItemFieldAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n if (!ts.isPropertyAccessExpression(node)) return false\n if (!ts.isIdentifier(node.expression)) return false\n if (node.expression.text !== 'item') return false\n if (!ts.isIdentifier(node.name)) return false\n return isItemBoundToEachRender(node)\n}\n\n/**\n * Walks up from a node and returns true iff the nearest enclosing function\n * that binds an `item` parameter is the `render` property of an `each()`\n * call. Handles both positional (`(item) => …`) and destructured\n * (`({ item, index }) => …`) parameter bindings.\n */\nfunction isItemBoundToEachRender(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n if (functionParamsBindItem(current)) {\n return isEachRenderCallback(current)\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction functionParamsBindItem(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n for (const param of fn.parameters) {\n if (bindingNameBindsItem(param.name)) return true\n }\n return false\n}\n\nfunction bindingNameBindsItem(name: ts.BindingName): boolean {\n if (ts.isIdentifier(name)) return name.text === 'item'\n if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el) && bindingNameBindsItem(el.name)) return true\n }\n }\n return false\n}\n\nfunction isEachRenderCallback(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n const parent = fn.parent\n if (!parent || !ts.isPropertyAssignment(parent)) return false\n if (!ts.isIdentifier(parent.name) || parent.name.text !== 'render') return false\n const objLit = parent.parent\n if (!objLit || !ts.isObjectLiteralExpression(objLit)) return false\n const call = objLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression) || call.expression.text !== 'each') return false\n return true\n}\n\n// Matches the hoisted identifiers produced by tryDeduplicateItemSelectors: __a0, __a1, …\n// These represent already-cached per-item accessors.\nfunction isHoistedPerItem(node: ts.Node): node is ts.Identifier {\n if (!ts.isIdentifier(node)) return false\n return /^__a\\d+$/.test(node.text)\n}\n\n// ── Mask computation ─────────────────────────────────────────────\n\n// Returns { mask, readsState }\n// mask = 0 + readsState = false → constant (can fold to static)\n// mask = 0 + readsState = true → unresolvable state access (FULL_MASK)\n// mask > 0 → precise mask\n// See `NON_DELEGATION_HELPERS` in collect-deps.ts — same set of names\n// that aren't followed when scanning for `helper(s)` delegation calls.\nconst NON_DELEGATION_HELPERS = new Set(['sample', 'item', 'memo', 'text', 'unsafeHtml'])\n\nfunction computeAccessorMask(\n accessor: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration,\n fieldBits: Map<string, number>,\n visited: Set<ts.Node> = new Set(),\n fieldBitsHi?: Map<string, number>,\n): { mask: number; maskHi: number; readsState: boolean } {\n if (visited.has(accessor)) return { mask: 0, maskHi: 0, readsState: false }\n visited.add(accessor)\n\n if (accessor.parameters.length === 0)\n return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n const paramName = accessor.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n // FunctionDeclaration always has a body (we never resolve overloads here);\n // ArrowFunction's body may be a single expression. Both shapes are walked\n // identically by ts.forEachChild, so no special-casing is needed below.\n if (!accessor.body) return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n const stateParam = paramName.text\n let mask = 0\n let maskHi = 0\n let readsState = false\n\n // `inNestedFn` gates only the delegation-recursion. Property-access\n // path extraction happens everywhere — inner-arrow callbacks like\n // `s.items.filter((i) => i.includes(s.filter))` close over our\n // state, and their `s.filter` reads contribute to the mask.\n function walk(node: ts.Node, inNestedFn: boolean): void {\n // `node.parent` can be undefined for synthetic nodes produced by\n // earlier AST-transform passes (the row-factory rewrite and the\n // per-item heuristic both build new sub-trees whose inner nodes\n // have no parent pointers). Guard every parent access below —\n // crashing the whole build on a perfectly valid reactive accessor\n // like `text((_s) => \\`$${item.x.toLocaleString()}\\`)` was how\n // this bug first surfaced in the persistent-layout example work.\n const parent = node.parent\n if (ts.isIdentifier(node) && node.text === stateParam && (!parent || !ts.isParameter(parent))) {\n readsState = true\n }\n if (ts.isPropertyAccessExpression(node)) {\n // When there's no parent we can't tell if this is the top of a\n // chain, so we resolve from here. That's still correct for mask\n // accounting: `resolveChain` on an inner PAE produces a prefix\n // of the outer chain, which maps to the same `fieldBits` bit\n // via the prefix-match loop below. Worst case we resolve the\n // same chain twice (`|=` is idempotent); best case we'd have\n // resolved once from the real top. Correctness unchanged.\n if (!parent || !ts.isPropertyAccessExpression(parent)) {\n const chain = resolveChain(node, stateParam)\n if (chain) {\n const bit = fieldBits.get(chain)\n const bitHi = fieldBitsHi?.get(chain)\n if (bit !== undefined) {\n mask |= bit\n } else if (bitHi !== undefined) {\n maskHi |= bitHi\n } else {\n // Match paths that overlap our chain in either direction:\n // - `path` extends `chain` — fieldBits has finer-grained paths\n // than we're reading (e.g. chain='user', fieldBits has\n // 'user.email').\n // - `chain` extends `path` — we're reading deeper than what\n // fieldBits tracks (e.g. chain='items.filter' from\n // `s.items.filter(...)`, fieldBits has 'items'). Both ends\n // must mask in: a change to `items` invalidates anything\n // downstream of it.\n for (const [path, b] of fieldBits) {\n if (path === chain || path.startsWith(chain + '.') || chain.startsWith(path + '.')) {\n mask |= b\n }\n }\n if (fieldBitsHi) {\n for (const [path, b] of fieldBitsHi) {\n if (\n path === chain ||\n path.startsWith(chain + '.') ||\n chain.startsWith(path + '.')\n ) {\n maskHi |= b\n }\n }\n }\n }\n }\n }\n }\n // Delegation: `helper(s)` where `s` matches our state param.\n // Recurse into the helper's body so its state-path reads\n // contribute to our mask. Only at top level — inside a nested\n // function body, `s` may be shadowed and the call isn't\n // unambiguously handing our state in.\n if (!inNestedFn && ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n const calleeName = node.expression.text\n if (!NON_DELEGATION_HELPERS.has(calleeName)) {\n const arg0 = node.arguments[0]\n if (arg0 && ts.isIdentifier(arg0) && arg0.text === stateParam) {\n const resolved = resolveAccessorBody(node.expression)\n if (resolved) {\n const inner = computeAccessorMask(resolved, fieldBits, visited, fieldBitsHi)\n mask |= inner.mask\n maskHi |= inner.maskHi\n if (inner.readsState) readsState = true\n }\n }\n }\n }\n const enteringNested =\n ts.isArrowFunction(node) || ts.isFunctionExpression(node) || ts.isFunctionDeclaration(node)\n ts.forEachChild(node, (child) => walk(child, inNestedFn || enteringNested))\n }\n\n walk(accessor.body, false)\n\n if (mask === 0 && maskHi === 0 && readsState) {\n return { mask: 0xffffffff | 0, maskHi: 0, readsState: true }\n }\n return { mask, maskHi, readsState }\n}\n\nfunction resolveChain(node: ts.PropertyAccessExpression, paramName: string): string | null {\n const parts: string[] = []\n let current: ts.Expression = node\n\n while (ts.isPropertyAccessExpression(current)) {\n parts.unshift(current.name.text)\n current = current.expression\n }\n\n if (!ts.isIdentifier(current) || current.text !== paramName) return null\n if (parts.length > 2) return parts.slice(0, 2).join('.')\n return parts.join('.')\n}\n\n// ── 'use client' directive ───────────────────────────────────────\n\nexport interface UseClientTransformResult {\n output: string\n warnings: string[]\n}\n\n/**\n * If `source` begins with a `'use client'` directive, generate a stub\n * replacement for the SSR build. Every `export const X = <expr>` becomes\n * `export const X = __clientOnlyStub('X')`, every `export function X`\n * becomes a stub, and `export default <expr>` becomes a default stub.\n * Returns `null` if the directive is absent (caller should fall through\n * to the normal compiler pass).\n *\n * The client build is expected to skip this path entirely — Vite passes\n * `{ ssr: false }` there, and the plugin checks that before invoking\n * this function.\n *\n * Shapes this v1 does NOT handle (emits a warning + leaves them out of\n * the stub output):\n *\n * - `export function foo() {}` and `export class Foo {}` — rewritten\n * as stubs but the caller may be surprised that `foo` and `Foo` are\n * ComponentDef-shaped objects during SSR.\n * - `export { a, b } from './other.js'` — re-export forms are not\n * detected; they pass through and will still pull `./other` into\n * the SSR graph.\n * - `export * from './other.js'` — same as above.\n * - `export type ...` — type exports are erased by TS so nothing to\n * stub; left untouched.\n */\nexport function transformUseClientSsr(\n source: string,\n _filename: string,\n): UseClientTransformResult | null {\n const sourceFile = ts.createSourceFile('input.ts', source, ts.ScriptTarget.Latest, true)\n\n // Find the first non-comment, non-directive-whitespace statement.\n // 'use client' should be the literal first statement in the file.\n const first = sourceFile.statements[0]\n if (!first) return null\n if (!ts.isExpressionStatement(first)) return null\n if (!ts.isStringLiteral(first.expression)) return null\n if (first.expression.text !== 'use client') return null\n\n const warnings: string[] = []\n const namedExports: string[] = []\n let hasDefaultExport = false\n\n for (const stmt of sourceFile.statements) {\n // The `'use client'` directive itself — skip.\n if (stmt === first) continue\n\n // `export const NAME = ...` and `export let NAME = ...`\n if (\n ts.isVariableStatement(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)\n ) {\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name)) {\n namedExports.push(decl.name.text)\n } else {\n warnings.push(\n '[llui/use-client] destructured `export const { ... }` is not supported; each binding would have to be stubbed individually. Refactor to one `export const` per value.',\n )\n }\n }\n continue\n }\n\n // `export function NAME() {}`\n if (\n ts.isFunctionDeclaration(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) &&\n stmt.name\n ) {\n namedExports.push(stmt.name.text)\n continue\n }\n\n // `export class NAME {}`\n if (\n ts.isClassDeclaration(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) &&\n stmt.name\n ) {\n namedExports.push(stmt.name.text)\n continue\n }\n\n // `export default ...`\n if (\n ts.isExportAssignment(stmt) ||\n (ts.isFunctionDeclaration(stmt) &&\n stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword))\n ) {\n hasDefaultExport = true\n continue\n }\n\n // `export { a, b }` / `export { a } from './x.js'` / `export * from './x.js'`\n if (ts.isExportDeclaration(stmt)) {\n if (stmt.moduleSpecifier) {\n warnings.push(\n \"[llui/use-client] `export ... from '...'` re-export forms still pull the source module into the SSR graph and bypass stubbing. Either drop the re-export or move the 'use client' directive to the source module.\",\n )\n } else if (stmt.exportClause && ts.isNamedExports(stmt.exportClause)) {\n for (const spec of stmt.exportClause.elements) {\n namedExports.push((spec.name ?? spec.propertyName!).text)\n }\n }\n continue\n }\n\n // Type-only statements are erased at runtime — nothing to stub.\n if (ts.isTypeAliasDeclaration(stmt) || ts.isInterfaceDeclaration(stmt)) continue\n\n // Imports, `import type`, enum declarations, plain (non-export)\n // variable statements — dropped from the stub output.\n }\n\n // Build the generated module source.\n const lines: string[] = [\"import { __clientOnlyStub } from '@llui/dom'\", '']\n for (const name of namedExports) {\n lines.push(`export const ${name} = __clientOnlyStub(${JSON.stringify(name)})`)\n }\n if (hasDefaultExport) {\n lines.push('export default __clientOnlyStub(\"default\")')\n }\n\n return {\n output: lines.join('\\n') + '\\n',\n warnings,\n }\n}\n\n/**\n * Check whether `source`'s first statement is a `'use client'` directive.\n * Cheap string scan so the caller can decide which transform to run\n * without parsing the whole file twice.\n */\nexport function hasUseClientDirective(source: string): boolean {\n // Skip leading whitespace and block/line comments; look for the\n // first token. A full parse is overkill here — users who write\n // `'use client'` in any other position (inside a function, after\n // imports) aren't using the directive as React/Vercel define it.\n let i = 0\n const len = source.length\n while (i < len) {\n const ch = source[i]!\n if (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n i++\n continue\n }\n if (source.startsWith('//', i)) {\n const nl = source.indexOf('\\n', i)\n if (nl === -1) return false\n i = nl + 1\n continue\n }\n if (source.startsWith('/*', i)) {\n const end = source.indexOf('*/', i + 2)\n if (end === -1) return false\n i = end + 2\n continue\n }\n break\n }\n return source.startsWith(\"'use client'\", i) || source.startsWith('\"use client\"', i)\n}\n\n// ── Compiler cache helpers ────────────────────────────────────────\n\n/**\n * Extract the view function body (the value of the `view:` property) from\n * a component() config object literal. Uses a regex heuristic — good enough\n * for round-tripping source for dev/agent tools.\n */\nexport function extractViewBody(code: string): string | null {\n const match =\n /\\bview\\s*:\\s*([\\s\\S]*?)(?=,\\s*(?:onEffect|update|init|name|onMsg)\\s*:|}\\s*\\))/m.exec(code)\n return match?.[1]?.trim() ?? null\n}\n\n/**\n * Extract the component `name:` string literal from a component() call's\n * first argument object literal in the source text.\n */\nexport function extractComponentNameFromConfig(node: ts.CallExpression): string | null {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n return prop.initializer.text\n }\n }\n return null\n}\n\n/**\n * Generate Object.defineProperty calls for __preSource, __postSource,\n * __msgMaskMap, and __bindingSources on a component variable. These are\n * non-enumerable so they don't appear in JSON.stringify(componentDef) but are\n * visible to devtools.\n */\nexport function generateCompilerCacheProps(varName: string, componentName: string): string {\n const entry = compilerCache.get(componentName)\n if (!entry) return ''\n return (\n `\\nObject.defineProperty(${varName}, '__preSource', { value: ${JSON.stringify(entry.preSource)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__postSource', { value: ${JSON.stringify(entry.postSource)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__msgMaskMap', { value: ${JSON.stringify(entry.msgMaskMap)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__bindingSources', { value: ${JSON.stringify(entry.bindingSources)}, enumerable: false, configurable: true })`\n )\n}\n\n/**\n * After the full output string is assembled, update each cached component's\n * postSource (extract view body from the transformed output), then append\n * Object.defineProperty calls for all four compiler-cache properties.\n */\nexport function appendCompilerCacheProps(\n output: string,\n componentDecls: Array<{ varName: string; componentName: string }>,\n): string {\n let result = output\n for (const { varName, componentName } of componentDecls) {\n const existing = compilerCache.get(componentName)\n if (!existing) continue\n // Update the cache entry with the post-transform view body\n const postSource = extractViewBody(output) ?? ''\n compilerCache.set(componentName, { ...existing, postSource })\n // Append non-enumerable property definitions\n result += generateCompilerCacheProps(varName, componentName)\n }\n return result\n}\n"]}
|