@pyreon/compiler 0.5.3 → 0.5.5
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/lib/analysis/index.js.html +1 -1
- package/lib/index.js +20 -6
- package/lib/index.js.map +1 -1
- package/lib/types/index.d.ts +20 -6
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/jsx.ts +9 -4
- package/src/react-intercept.ts +10 -4
|
@@ -5386,7 +5386,7 @@ var drawChart = (function (exports) {
|
|
|
5386
5386
|
</script>
|
|
5387
5387
|
<script>
|
|
5388
5388
|
/*<!--*/
|
|
5389
|
-
const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"uid":"
|
|
5389
|
+
const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"uid":"df15a3fb-1","name":"jsx.ts"},{"uid":"df15a3fb-3","name":"project-scanner.ts"},{"uid":"df15a3fb-5","name":"react-intercept.ts"},{"uid":"df15a3fb-7","name":"index.ts"}]}]}],"isRoot":true},"nodeParts":{"df15a3fb-1":{"renderedLength":24727,"gzipLength":6935,"brotliLength":0,"metaUid":"df15a3fb-0"},"df15a3fb-3":{"renderedLength":4762,"gzipLength":1730,"brotliLength":0,"metaUid":"df15a3fb-2"},"df15a3fb-5":{"renderedLength":27742,"gzipLength":6926,"brotliLength":0,"metaUid":"df15a3fb-4"},"df15a3fb-7":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"metaUid":"df15a3fb-6"}},"nodeMetas":{"df15a3fb-0":{"id":"/src/jsx.ts","moduleParts":{"index.js":"df15a3fb-1"},"imported":[{"uid":"df15a3fb-8"}],"importedBy":[{"uid":"df15a3fb-6"}]},"df15a3fb-2":{"id":"/src/project-scanner.ts","moduleParts":{"index.js":"df15a3fb-3"},"imported":[{"uid":"df15a3fb-9"},{"uid":"df15a3fb-10"}],"importedBy":[{"uid":"df15a3fb-6"}]},"df15a3fb-4":{"id":"/src/react-intercept.ts","moduleParts":{"index.js":"df15a3fb-5"},"imported":[{"uid":"df15a3fb-8"}],"importedBy":[{"uid":"df15a3fb-6"}]},"df15a3fb-6":{"id":"/src/index.ts","moduleParts":{"index.js":"df15a3fb-7"},"imported":[{"uid":"df15a3fb-0"},{"uid":"df15a3fb-2"},{"uid":"df15a3fb-4"}],"importedBy":[],"isEntry":true},"df15a3fb-8":{"id":"typescript","moduleParts":{},"imported":[],"importedBy":[{"uid":"df15a3fb-0"},{"uid":"df15a3fb-4"}]},"df15a3fb-9":{"id":"node:fs","moduleParts":{},"imported":[],"importedBy":[{"uid":"df15a3fb-2"}]},"df15a3fb-10":{"id":"node:path","moduleParts":{},"imported":[],"importedBy":[{"uid":"df15a3fb-2"}]}},"env":{"rollup":"4.23.0"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
|
|
5390
5390
|
|
|
5391
5391
|
const run = () => {
|
|
5392
5392
|
const width = window.innerWidth;
|
package/lib/index.js
CHANGED
|
@@ -190,9 +190,16 @@ function transformJSX(code, filename = "input.tsx") {
|
|
|
190
190
|
code,
|
|
191
191
|
warnings
|
|
192
192
|
};
|
|
193
|
-
replacements.sort((a, b) =>
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
replacements.sort((a, b) => a.start - b.start);
|
|
194
|
+
const parts = [];
|
|
195
|
+
let lastPos = 0;
|
|
196
|
+
for (const r of replacements) {
|
|
197
|
+
parts.push(code.slice(lastPos, r.start));
|
|
198
|
+
parts.push(r.text);
|
|
199
|
+
lastPos = r.end;
|
|
200
|
+
}
|
|
201
|
+
parts.push(code.slice(lastPos));
|
|
202
|
+
let result = parts.join("");
|
|
196
203
|
if (hoists.length > 0) result = hoists.map((h) => `const ${h.name} = /*@__PURE__*/ ${h.text}\n`).join("") + result;
|
|
197
204
|
if (needsTplImport) {
|
|
198
205
|
const runtimeDomImports = ["_tpl"];
|
|
@@ -1285,9 +1292,16 @@ function applyReplacements(code, ctx) {
|
|
|
1285
1292
|
deduped.push(r);
|
|
1286
1293
|
}
|
|
1287
1294
|
}
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1295
|
+
deduped.sort((a, b) => a.start - b.start);
|
|
1296
|
+
const parts = [];
|
|
1297
|
+
let lastPos = 0;
|
|
1298
|
+
for (const r of deduped) {
|
|
1299
|
+
parts.push(code.slice(lastPos, r.start));
|
|
1300
|
+
parts.push(r.text);
|
|
1301
|
+
lastPos = r.end;
|
|
1302
|
+
}
|
|
1303
|
+
parts.push(code.slice(lastPos));
|
|
1304
|
+
return parts.join("");
|
|
1291
1305
|
}
|
|
1292
1306
|
function insertPyreonImports(code, pyreonImports) {
|
|
1293
1307
|
if (pyreonImports.size === 0) return code;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/jsx.ts","../src/project-scanner.ts","../src/react-intercept.ts"],"sourcesContent":["/**\n * JSX transform — wraps dynamic JSX expressions in `() =>` so the Pyreon runtime\n * receives reactive getters instead of eagerly-evaluated snapshot values.\n *\n * Rules:\n * - `<div>{expr}</div>` → `<div>{() => expr}</div>` (child)\n * - `<div class={expr}>` → `<div class={() => expr}>` (prop)\n * - `<button onClick={fn}>` → unchanged (event handler)\n * - `<div>{() => expr}</div>` → unchanged (already wrapped)\n * - `<div>{\"literal\"}</div>` → unchanged (static)\n *\n * Static VNode hoisting:\n * - Fully static JSX in expression containers is hoisted to module scope:\n * `{<span>Hello</span>}` → `const _$h0 = <span>Hello</span>` + `{_$h0}`\n * - Hoisted nodes are created ONCE at module initialisation, not per-instance.\n * - A JSX node is static if: all props are string literals / booleans / static\n * values, and all children are text nodes or other static JSX nodes.\n *\n * Template emission:\n * - JSX element trees with ≥ 2 DOM elements (no components, no spread attrs)\n * are compiled to `_tpl(html, bindFn)` calls instead of nested `h()` calls.\n * - The HTML string is parsed once via <template>.innerHTML, then cloneNode(true)\n * for each instance (~5-10x faster than sequential createElement calls).\n * - Static attributes are baked into the HTML string; dynamic attributes and\n * text content use renderEffect in the bind function.\n *\n * Implementation: TypeScript parser for positions + magic-string replacements.\n * No extra runtime dependencies — `typescript` is already in devDependencies.\n *\n * Known limitation (v0): expressions inside *nested* JSX within a child\n * expression container are not individually wrapped. They are still reactive\n * because the outer wrapper re-evaluates the whole subtree, just at a coarser\n * granularity. Fine-grained nested wrapping is planned for a future pass.\n */\n\nimport ts from \"typescript\"\n\nexport interface CompilerWarning {\n /** Warning message */\n message: string\n /** Source file line number (1-based) */\n line: number\n /** Source file column number (0-based) */\n column: number\n /** Warning code for filtering */\n code: \"signal-call-in-jsx\" | \"missing-key-on-for\" | \"signal-in-static-prop\"\n}\n\nexport interface TransformResult {\n /** Transformed source code (JSX preserved, only expression containers modified) */\n code: string\n /** Whether the output uses _tpl/_re template helpers (needs auto-import) */\n usesTemplates?: boolean\n /** Compiler warnings for common mistakes */\n warnings: CompilerWarning[]\n}\n\n// Props that should never be wrapped in a reactive getter\nconst SKIP_PROPS = new Set([\"key\", \"ref\"])\n// Event handler pattern: onClick, onInput, onMouseEnter, …\nconst EVENT_RE = /^on[A-Z]/\n// Events delegated to the container — must match runtime DELEGATED_EVENTS set\nconst DELEGATED_EVENTS = new Set([\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"change\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"pointerdown\",\n \"pointerup\",\n \"pointermove\",\n \"pointerover\",\n \"pointerout\",\n \"touchstart\",\n \"touchend\",\n \"touchmove\",\n \"submit\",\n])\n\nexport function transformJSX(code: string, filename = \"input.tsx\"): TransformResult {\n const scriptKind =\n filename.endsWith(\".tsx\") || filename.endsWith(\".jsx\") ? ts.ScriptKind.TSX : ts.ScriptKind.TSX // default to TSX so JSX is always parsed\n\n const sf = ts.createSourceFile(\n filename,\n code,\n ts.ScriptTarget.ESNext,\n /* setParentNodes */ true,\n scriptKind,\n )\n\n type Replacement = { start: number; end: number; text: string }\n const replacements: Replacement[] = []\n const warnings: CompilerWarning[] = []\n\n function warn(node: ts.Node, message: string, warnCode: CompilerWarning[\"code\"]): void {\n const { line, character } = sf.getLineAndCharacterOfPosition(node.getStart(sf))\n warnings.push({ message, line: line + 1, column: character, code: warnCode })\n }\n\n // ── Static hoisting state ─────────────────────────────────────────────────\n type Hoist = { name: string; text: string }\n const hoists: Hoist[] = []\n let hoistIdx = 0\n let needsTplImport = false\n let needsBindTextImportGlobal = false\n let needsBindDirectImportGlobal = false\n let needsBindImportGlobal = false\n\n /**\n * If `node` is a fully-static JSX element/fragment, register a module-scope\n * hoist for it and return the generated variable name. Otherwise return null.\n */\n function maybeHoist(node: ts.Node): string | null {\n if (\n (ts.isJsxElement(node) || ts.isJsxSelfClosingElement(node) || ts.isJsxFragment(node)) &&\n isStaticJSXNode(node as ts.JsxElement | ts.JsxSelfClosingElement | ts.JsxFragment)\n ) {\n const name = `_$h${hoistIdx++}`\n const text = code.slice(node.getStart(sf), node.getEnd())\n hoists.push({ name, text })\n return name\n }\n return null\n }\n\n function wrap(expr: ts.Expression): void {\n const start = expr.getStart(sf)\n const end = expr.getEnd()\n replacements.push({ start, end, text: `() => ${code.slice(start, end)}` })\n }\n\n /** Try to hoist or wrap an expression, pushing a replacement if needed. */\n function hoistOrWrap(expr: ts.Expression): void {\n const hoistName = maybeHoist(expr)\n if (hoistName) {\n replacements.push({ start: expr.getStart(sf), end: expr.getEnd(), text: hoistName })\n } else if (shouldWrap(expr)) {\n wrap(expr)\n }\n }\n\n // ── walk sub-handlers ───────────────────────────────────────────────────────\n\n /** Try to emit a template for a JsxElement. Returns true if handled. */\n function tryTemplateEmit(node: ts.JsxElement): boolean {\n const elemCount = templateElementCount(node)\n if (elemCount < 1) return false\n const tplCall = buildTemplateCall(node)\n if (!tplCall) return false\n const start = node.getStart(sf)\n const end = node.getEnd()\n const parent = node.parent\n const needsBraces = parent && (ts.isJsxElement(parent) || ts.isJsxFragment(parent))\n replacements.push({ start, end, text: needsBraces ? `{${tplCall}}` : tplCall })\n needsTplImport = true\n return true\n }\n\n /** Emit warnings for common JSX mistakes (e.g. <For> without by). */\n function checkForWarnings(node: ts.JsxElement | ts.JsxSelfClosingElement): void {\n const opening = ts.isJsxElement(node) ? node.openingElement : node\n const tagName = ts.isIdentifier(opening.tagName) ? opening.tagName.text : \"\"\n if (tagName !== \"For\") return\n const hasBy = opening.attributes.properties.some(\n (p) => ts.isJsxAttribute(p) && ts.isIdentifier(p.name) && p.name.text === \"by\",\n )\n if (!hasBy) {\n warn(\n opening.tagName,\n `<For> without a \"by\" prop will use index-based diffing, which is slower and may cause bugs with stateful children. Add by={(item) => item.id} for efficient keyed reconciliation.`,\n \"missing-key-on-for\",\n )\n }\n }\n\n /** Handle a JSX attribute node — wrap or hoist its value if needed. */\n function handleJsxAttribute(node: ts.JsxAttribute): void {\n const name = ts.isIdentifier(node.name) ? node.name.text : \"\"\n const openingEl = node.parent.parent as ts.JsxOpeningElement | ts.JsxSelfClosingElement\n const tagName = ts.isIdentifier(openingEl.tagName) ? openingEl.tagName.text : \"\"\n const isComponentElement =\n tagName.length > 0 && tagName.charAt(0) !== tagName.charAt(0).toLowerCase()\n if (isComponentElement) return\n if (SKIP_PROPS.has(name) || EVENT_RE.test(name)) return\n if (!node.initializer || !ts.isJsxExpression(node.initializer)) return\n const expr = node.initializer.expression\n if (expr) hoistOrWrap(expr)\n }\n\n /** Handle a JSX expression in child position — wrap, hoist, or recurse. */\n function handleJsxExpression(node: ts.JsxExpression): void {\n const expr = node.expression\n if (!expr) return\n const hoistName = maybeHoist(expr)\n if (hoistName) {\n replacements.push({ start: expr.getStart(sf), end: expr.getEnd(), text: hoistName })\n return\n }\n if (shouldWrap(expr)) {\n wrap(expr)\n return\n }\n // Not hoisted, not wrapped (e.g., arrow function in For callback).\n // Recurse into the expression body to find nested JSX elements\n // that should be compiled to _tpl() calls.\n ts.forEachChild(expr, walk)\n }\n\n function walk(node: ts.Node): void {\n if (ts.isJsxElement(node) && tryTemplateEmit(node)) return\n if (ts.isJsxSelfClosingElement(node) || ts.isJsxElement(node)) checkForWarnings(node)\n if (ts.isJsxAttribute(node)) {\n handleJsxAttribute(node)\n return\n }\n if (ts.isJsxExpression(node)) {\n handleJsxExpression(node)\n return\n }\n ts.forEachChild(node, walk)\n }\n\n walk(sf)\n\n if (replacements.length === 0 && hoists.length === 0) return { code, warnings }\n\n // Apply replacements from right to left so earlier positions stay valid\n replacements.sort((a, b) => b.start - a.start)\n\n let result = code\n for (const r of replacements) {\n result = result.slice(0, r.start) + r.text + result.slice(r.end)\n }\n\n // Prepend module-scope hoisted static VNode declarations\n if (hoists.length > 0) {\n const preamble = hoists.map((h) => `const ${h.name} = /*@__PURE__*/ ${h.text}\\n`).join(\"\")\n result = preamble + result\n }\n\n // Prepend template imports if _tpl() was emitted\n if (needsTplImport) {\n const runtimeDomImports = [\"_tpl\"]\n if (needsBindDirectImportGlobal) runtimeDomImports.push(\"_bindDirect\")\n if (needsBindTextImportGlobal) runtimeDomImports.push(\"_bindText\")\n const reactivityImports = needsBindImportGlobal\n ? `\\nimport { _bind } from \"@pyreon/reactivity\";`\n : \"\"\n result =\n `import { ${runtimeDomImports.join(\", \")} } from \"@pyreon/runtime-dom\";${reactivityImports}\\n` +\n result\n }\n\n return { code: result, usesTemplates: needsTplImport, warnings }\n\n // ── Template emission helpers (closures over sf, code) ──────────────────────\n\n /** Check if a single attribute would prevent template emission. */\n function hasBailAttr(node: ts.JsxElement | ts.JsxSelfClosingElement): boolean {\n for (const attr of jsxAttrs(node)) {\n if (ts.isJsxSpreadAttribute(attr)) return true\n if (ts.isJsxAttribute(attr) && ts.isIdentifier(attr.name) && attr.name.text === \"key\")\n return true\n }\n return false\n }\n\n /**\n * Count template-eligible elements for a single JSX child.\n * Returns 0 for skippable children, -1 for bail, positive for element count.\n */\n function countChildForTemplate(child: ts.JsxChild): number {\n if (ts.isJsxText(child)) return 0\n if (ts.isJsxElement(child) || ts.isJsxSelfClosingElement(child))\n return templateElementCount(child)\n if (ts.isJsxExpression(child)) {\n if (!child.expression) return 0\n return containsJSXInExpr(child.expression) ? -1 : 0\n }\n if (ts.isJsxFragment(child)) return templateFragmentCount(child)\n return -1\n }\n\n /**\n * Count DOM elements in a JSX subtree. Returns -1 if the tree is not\n * eligible for template emission.\n */\n function templateElementCount(node: ts.JsxElement | ts.JsxSelfClosingElement): number {\n const tag = jsxTagName(node)\n if (!tag || !isLowerCase(tag)) return -1\n if (hasBailAttr(node)) return -1\n if (!ts.isJsxElement(node)) return 1\n\n let count = 1\n for (const child of node.children) {\n const c = countChildForTemplate(child)\n if (c === -1) return -1\n count += c\n }\n return count\n }\n\n /** Count template-eligible elements inside a fragment. */\n function templateFragmentCount(frag: ts.JsxFragment): number {\n let count = 0\n for (const child of frag.children) {\n const c = countChildForTemplate(child)\n if (c === -1) return -1\n count += c\n }\n return count\n }\n\n /**\n * Build the complete `_tpl(\"html\", (__root) => { ... })` call string\n * for a template-eligible JSX element tree. Returns null if codegen fails.\n */\n function buildTemplateCall(node: ts.JsxElement | ts.JsxSelfClosingElement): string | null {\n const bindLines: string[] = []\n const disposerNames: string[] = []\n let varIdx = 0\n let dispIdx = 0\n // Reactive expressions that will be combined into a single _bind call\n const reactiveBindExprs: string[] = []\n let needsBindTextImport = false\n let needsBindDirectImport = false\n\n function nextVar(): string {\n return `__e${varIdx++}`\n }\n function nextDisp(): string {\n const name = `__d${dispIdx++}`\n disposerNames.push(name)\n return name\n }\n function nextTextVar(): string {\n return `__t${varIdx++}`\n }\n\n /** Resolve the variable name for an element given its accessor path. */\n function resolveElementVar(accessor: string, hasDynamic: boolean): string {\n if (accessor === \"__root\") return \"__root\"\n if (hasDynamic) {\n const v = nextVar()\n bindLines.push(`const ${v} = ${accessor}`)\n return v\n }\n return accessor\n }\n\n /** Emit bind line for a ref attribute. */\n function emitRef(attr: ts.JsxAttribute, varName: string): void {\n if (!attr.initializer || !ts.isJsxExpression(attr.initializer)) return\n if (!attr.initializer.expression) return\n bindLines.push(`${sliceExpr(attr.initializer.expression)}.current = ${varName}`)\n }\n\n /** Emit event handler bind line — delegated (expando) or addEventListener. */\n function emitEventListener(attr: ts.JsxAttribute, attrName: string, varName: string): void {\n const eventName = (attrName[2] ?? \"\").toLowerCase() + attrName.slice(3)\n if (!attr.initializer || !ts.isJsxExpression(attr.initializer)) return\n if (!attr.initializer.expression) return\n const handler = sliceExpr(attr.initializer.expression)\n if (DELEGATED_EVENTS.has(eventName)) {\n // Delegated: store handler as expando property — container listener picks it up\n bindLines.push(`${varName}.__ev_${eventName} = ${handler}`)\n } else {\n bindLines.push(`${varName}.addEventListener(\"${eventName}\", ${handler})`)\n }\n }\n\n /** Return HTML string for a static attribute expression, or null if not static. */\n function staticAttrToHtml(exprNode: ts.Expression, htmlAttrName: string): string | null {\n if (!isStatic(exprNode)) return null\n if (ts.isStringLiteral(exprNode)) return ` ${htmlAttrName}=\"${escapeHtmlAttr(exprNode.text)}\"`\n if (ts.isNumericLiteral(exprNode)) return ` ${htmlAttrName}=\"${exprNode.text}\"`\n if (exprNode.kind === ts.SyntaxKind.TrueKeyword) return ` ${htmlAttrName}`\n return \"\" // false/null/undefined → omit\n }\n\n /**\n * Try to extract a direct signal reference from an expression.\n * Returns the callee text (e.g. \"count\" or \"row.label\") if the expression\n * is a single call with no arguments, otherwise null.\n */\n function tryDirectSignalRef(exprNode: ts.Expression): string | null {\n let inner = exprNode\n // Unwrap concise arrow: () => expr\n if (ts.isArrowFunction(inner) && !ts.isBlock(inner.body)) {\n inner = inner.body as ts.Expression\n }\n if (!ts.isCallExpression(inner)) return null\n if (inner.arguments.length > 0) return null\n const callee = inner.expression\n if (ts.isIdentifier(callee) || ts.isPropertyAccessExpression(callee)) {\n return sliceExpr(callee)\n }\n return null\n }\n\n /** Unwrap a reactive accessor expression for use inside _bind(). */\n function unwrapAccessor(exprNode: ts.Expression): { expr: string; isReactive: boolean } {\n // Concise arrow: () => value() → unwrap to \"value()\"\n if (ts.isArrowFunction(exprNode) && !ts.isBlock(exprNode.body)) {\n return { expr: sliceExpr(exprNode.body as ts.Expression), isReactive: true }\n }\n // Block-body arrow/function: invoke it\n if (ts.isArrowFunction(exprNode) || ts.isFunctionExpression(exprNode)) {\n return { expr: `(${sliceExpr(exprNode)})()`, isReactive: true }\n }\n return { expr: sliceExpr(exprNode), isReactive: containsCall(exprNode) }\n }\n\n /** Build a setter expression for an attribute. */\n function attrSetter(htmlAttrName: string, varName: string, expr: string): string {\n return htmlAttrName === \"class\"\n ? `${varName}.className = ${expr}`\n : `${varName}.setAttribute(\"${htmlAttrName}\", ${expr})`\n }\n\n /** Emit bind line for a dynamic (non-static) attribute. */\n function emitDynamicAttr(\n _expr: string,\n exprNode: ts.Expression,\n htmlAttrName: string,\n varName: string,\n ): void {\n const { expr, isReactive } = unwrapAccessor(exprNode)\n\n if (!isReactive) {\n bindLines.push(attrSetter(htmlAttrName, varName, expr))\n return\n }\n\n // Direct signal binding for bare signal calls (e.g. class={() => active()})\n const directRef = tryDirectSignalRef(exprNode)\n if (directRef) {\n needsBindDirectImport = true\n const d = nextDisp()\n const updater =\n htmlAttrName === \"class\"\n ? `(v) => { ${varName}.className = v == null ? \"\" : String(v) }`\n : `(v) => { ${varName}.setAttribute(\"${htmlAttrName}\", v == null ? \"\" : String(v)) }`\n bindLines.push(`const ${d} = _bindDirect(${directRef}, ${updater})`)\n return\n }\n\n reactiveBindExprs.push(attrSetter(htmlAttrName, varName, expr))\n }\n\n /** Emit bind line or HTML for an expression attribute value. */\n function emitAttrExpression(\n exprNode: ts.Expression,\n htmlAttrName: string,\n varName: string,\n ): string {\n const staticHtml = staticAttrToHtml(exprNode, htmlAttrName)\n if (staticHtml !== null) return staticHtml\n emitDynamicAttr(sliceExpr(exprNode), exprNode, htmlAttrName, varName)\n return \"\"\n }\n\n /** Emit side-effects for special attrs (ref, event). Returns true if handled. */\n function tryEmitSpecialAttr(attr: ts.JsxAttribute, attrName: string, varName: string): boolean {\n if (attrName === \"ref\") {\n emitRef(attr, varName)\n return true\n }\n if (EVENT_RE.test(attrName)) {\n emitEventListener(attr, attrName, varName)\n return true\n }\n return false\n }\n\n /** Convert an attribute initializer to HTML. Returns empty string for side-effect-only attrs. */\n function attrInitializerToHtml(\n attr: ts.JsxAttribute,\n htmlAttrName: string,\n varName: string,\n ): string {\n if (!attr.initializer) return ` ${htmlAttrName}`\n if (ts.isStringLiteral(attr.initializer))\n return ` ${htmlAttrName}=\"${escapeHtmlAttr(attr.initializer.text)}\"`\n if (ts.isJsxExpression(attr.initializer) && attr.initializer.expression)\n return emitAttrExpression(attr.initializer.expression, htmlAttrName, varName)\n return \"\"\n }\n\n /** Process a single attribute, returning HTML to append. */\n function processOneAttr(attr: ts.JsxAttributeLike, varName: string): string {\n if (!ts.isJsxAttribute(attr)) return \"\"\n const attrName = ts.isIdentifier(attr.name) ? attr.name.text : \"\"\n if (attrName === \"key\") return \"\"\n if (tryEmitSpecialAttr(attr, attrName, varName)) return \"\"\n return attrInitializerToHtml(attr, JSX_TO_HTML_ATTR[attrName] ?? attrName, varName)\n }\n\n /** Process all attributes on an element, returning the HTML attribute string. */\n function processAttrs(el: ts.JsxElement | ts.JsxSelfClosingElement, varName: string): string {\n let htmlAttrs = \"\"\n for (const attr of jsxAttrs(el)) htmlAttrs += processOneAttr(attr, varName)\n return htmlAttrs\n }\n\n /** Emit bind lines for a reactive text expression child. */\n function emitReactiveTextChild(\n expr: string,\n exprNode: ts.Expression,\n varName: string,\n parentRef: string,\n childNodeIdx: number,\n needsPlaceholder: boolean,\n ): string {\n const tVar = nextTextVar()\n bindLines.push(`const ${tVar} = document.createTextNode(\"\")`)\n if (needsPlaceholder) {\n bindLines.push(\n `${parentRef}.replaceChild(${tVar}, ${parentRef}.childNodes[${childNodeIdx}])`,\n )\n } else {\n bindLines.push(`${varName}.appendChild(${tVar})`)\n }\n // Direct signal binding: bypass effect system entirely\n const directRef = tryDirectSignalRef(exprNode)\n if (directRef) {\n needsBindTextImport = true\n const d = nextDisp()\n bindLines.push(`const ${d} = _bindText(${directRef}, ${tVar})`)\n } else {\n // Collected into the combined _bind at the end\n reactiveBindExprs.push(`${tVar}.data = ${expr}`)\n }\n return needsPlaceholder ? \"<!>\" : \"\"\n }\n\n /** Emit bind lines for a static text expression child. */\n function emitStaticTextChild(\n expr: string,\n varName: string,\n parentRef: string,\n childNodeIdx: number,\n needsPlaceholder: boolean,\n ): string {\n if (needsPlaceholder) {\n const tVar = nextTextVar()\n bindLines.push(`const ${tVar} = document.createTextNode(${expr})`)\n bindLines.push(\n `${parentRef}.replaceChild(${tVar}, ${parentRef}.childNodes[${childNodeIdx}])`,\n )\n return \"<!>\"\n }\n bindLines.push(`${varName}.textContent = ${expr}`)\n return \"\"\n }\n\n /** Process a single flat child, returning the HTML contribution or null on failure. */\n function processOneChild(\n child: FlatChild,\n varName: string,\n parentRef: string,\n useMixed: boolean,\n useMultiExpr: boolean,\n childNodeIdx: number,\n ): string | null {\n if (child.kind === \"text\") return escapeHtmlText(child.text)\n if (child.kind === \"element\") {\n const childAccessor = useMixed\n ? `${parentRef}.childNodes[${childNodeIdx}]`\n : `${parentRef}.children[${child.elemIdx}]`\n return processElement(child.node, childAccessor)\n }\n // expression\n const needsPlaceholder = useMixed || useMultiExpr\n const { expr, isReactive } = unwrapAccessor(child.expression)\n if (isReactive) {\n return emitReactiveTextChild(\n expr,\n child.expression,\n varName,\n parentRef,\n childNodeIdx,\n needsPlaceholder,\n )\n }\n return emitStaticTextChild(expr, varName, parentRef, childNodeIdx, needsPlaceholder)\n }\n\n /** Process children of a JsxElement, returning the children HTML. */\n function processChildren(el: ts.JsxElement, varName: string, accessor: string): string | null {\n const flatChildren = flattenChildren(el.children)\n const { useMixed, useMultiExpr } = analyzeChildren(flatChildren)\n const parentRef = accessor === \"__root\" ? \"__root\" : varName\n\n let html = \"\"\n let childNodeIdx = 0\n\n for (const child of flatChildren) {\n const childHtml = processOneChild(\n child,\n varName,\n parentRef,\n useMixed,\n useMultiExpr,\n childNodeIdx,\n )\n if (childHtml === null) return null\n html += childHtml\n childNodeIdx++\n }\n\n return html\n }\n\n /** Process a single DOM element for template emission. Returns the HTML string or null. */\n function processElement(\n el: ts.JsxElement | ts.JsxSelfClosingElement,\n accessor: string,\n ): string | null {\n const tag = jsxTagName(el)\n if (!tag) return null\n\n const varName = resolveElementVar(accessor, elementHasDynamic(el))\n const htmlAttrs = processAttrs(el, varName)\n let html = `<${tag}${htmlAttrs}>`\n\n if (ts.isJsxElement(el)) {\n const childHtml = processChildren(el, varName, accessor)\n if (childHtml === null) return null\n html += childHtml\n }\n\n if (!VOID_ELEMENTS.has(tag)) html += `</${tag}>`\n return html\n }\n\n const html = processElement(node, \"__root\")\n if (html === null) return null\n\n if (needsBindTextImport) needsBindTextImportGlobal = true\n if (needsBindDirectImport) needsBindDirectImportGlobal = true\n\n // Build bind function body\n const escaped = html.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"')\n\n // Emit combined _bind for reactive attribute/text expressions that\n // weren't handled by _bindText. This merges N separate _bind calls into\n // one — saving N-1 closures + deps arrays per template instance.\n // Emit a single combined _bind for all reactive attribute/text expressions\n // that weren't handled by _bindText. Merges N separate _bind calls into one —\n // saving N-1 closures + deps arrays per template instance.\n if (reactiveBindExprs.length > 0) {\n needsBindImportGlobal = true\n const combinedName = nextDisp()\n const combinedBody = reactiveBindExprs.join(\"; \")\n bindLines.push(`const ${combinedName} = _bind(() => { ${combinedBody} })`)\n }\n\n if (bindLines.length === 0 && disposerNames.length === 0) {\n return `_tpl(\"${escaped}\", () => null)`\n }\n\n let body = bindLines.map((l) => ` ${l}`).join(\"\\n\")\n if (disposerNames.length > 0) {\n body += `\\n return () => { ${disposerNames.map((d) => `${d}()`).join(\"; \")} }`\n } else {\n body += \"\\n return null\"\n }\n\n return `_tpl(\"${escaped}\", (__root) => {\\n${body}\\n})`\n }\n\n /** Flat child descriptor for template children processing */\n type FlatChild =\n | { kind: \"text\"; text: string }\n | { kind: \"element\"; node: ts.JsxElement | ts.JsxSelfClosingElement; elemIdx: number }\n | { kind: \"expression\"; expression: ts.Expression }\n\n /** Classify a single JSX child into a FlatChild descriptor. */\n function classifyJsxChild(\n child: ts.JsxChild,\n out: FlatChild[],\n elemIdxRef: { value: number },\n recurse: (kids: ts.NodeArray<ts.JsxChild>) => void,\n ): void {\n if (ts.isJsxText(child)) {\n const trimmed = child.text.replace(/\\n\\s*/g, \"\").trim()\n if (trimmed) out.push({ kind: \"text\", text: trimmed })\n return\n }\n if (ts.isJsxElement(child) || ts.isJsxSelfClosingElement(child)) {\n out.push({ kind: \"element\", node: child, elemIdx: elemIdxRef.value++ })\n return\n }\n if (ts.isJsxExpression(child)) {\n if (child.expression) out.push({ kind: \"expression\", expression: child.expression })\n return\n }\n if (ts.isJsxFragment(child)) recurse(child.children)\n }\n\n /**\n * Flatten JSX children, inlining fragment children and stripping whitespace-only text.\n * Returns a flat array of child descriptors with element indices pre-computed.\n */\n function flattenChildren(children: ts.NodeArray<ts.JsxChild>): FlatChild[] {\n const flatList: FlatChild[] = []\n const elemIdxRef = { value: 0 }\n\n function addChildren(kids: ts.NodeArray<ts.JsxChild>): void {\n for (const child of kids) classifyJsxChild(child, flatList, elemIdxRef, addChildren)\n }\n\n addChildren(children)\n return flatList\n }\n\n /** Analyze flat children to determine indexing strategy. */\n function analyzeChildren(flatChildren: FlatChild[]): {\n useMixed: boolean\n useMultiExpr: boolean\n } {\n const hasElem = flatChildren.some((c) => c.kind === \"element\")\n const hasNonElem = flatChildren.some((c) => c.kind !== \"element\")\n const exprCount = flatChildren.filter((c) => c.kind === \"expression\").length\n return { useMixed: hasElem && hasNonElem, useMultiExpr: exprCount > 1 }\n }\n\n /** Check if a single attribute is dynamic (has ref, event, or non-static expression). */\n function attrIsDynamic(attr: ts.JsxAttributeLike): boolean {\n if (!ts.isJsxAttribute(attr)) return false\n const name = ts.isIdentifier(attr.name) ? attr.name.text : \"\"\n if (name === \"ref\") return true\n if (EVENT_RE.test(name)) return true\n if (!attr.initializer || !ts.isJsxExpression(attr.initializer)) return false\n const expr = attr.initializer.expression\n return expr ? !isStatic(expr) : false\n }\n\n /** Check if an element has any dynamic attributes, events, ref, or expression children */\n function elementHasDynamic(node: ts.JsxElement | ts.JsxSelfClosingElement): boolean {\n if (jsxAttrs(node).some(attrIsDynamic)) return true\n if (ts.isJsxElement(node)) {\n return node.children.some((c) => ts.isJsxExpression(c) && c.expression !== undefined)\n }\n return false\n }\n\n /** Slice expression source from the original code */\n function sliceExpr(expr: ts.Expression): string {\n return code.slice(expr.getStart(sf), expr.getEnd())\n }\n\n /** Get tag name string */\n function jsxTagName(node: ts.JsxElement | ts.JsxSelfClosingElement): string {\n const tag = ts.isJsxElement(node) ? node.openingElement.tagName : node.tagName\n return ts.isIdentifier(tag) ? tag.text : \"\"\n }\n\n /** Get attribute list */\n function jsxAttrs(\n node: ts.JsxElement | ts.JsxSelfClosingElement,\n ): ts.NodeArray<ts.JsxAttributeLike> {\n return ts.isJsxElement(node)\n ? node.openingElement.attributes.properties\n : node.attributes.properties\n }\n}\n\n// ─── Template constants ──────────────────────────────────────────────────────\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\nconst JSX_TO_HTML_ATTR: Record<string, string> = {\n className: \"class\",\n htmlFor: \"for\",\n}\n\nfunction isLowerCase(s: string): boolean {\n return s.length > 0 && s[0] === s[0]?.toLowerCase()\n}\n\n/** Check if an expression subtree contains JSX nodes */\nfunction containsJSXInExpr(node: ts.Node): boolean {\n if (ts.isJsxElement(node) || ts.isJsxSelfClosingElement(node) || ts.isJsxFragment(node))\n return true\n return ts.forEachChild(node, containsJSXInExpr) ?? false\n}\n\nfunction escapeHtmlAttr(s: string): string {\n return s.replace(/&/g, \"&\").replace(/\"/g, \""\")\n}\n\nfunction escapeHtmlText(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\")\n}\n\n// ─── Static JSX analysis ──────────────────────────────────────────────────────\n\ntype StaticJSXNode = ts.JsxElement | ts.JsxSelfClosingElement | ts.JsxFragment\n\nfunction isStaticJSXNode(node: StaticJSXNode): boolean {\n if (ts.isJsxSelfClosingElement(node)) {\n return isStaticAttrs(node.attributes)\n }\n if (ts.isJsxFragment(node)) {\n return node.children.every(isStaticChild)\n }\n // JsxElement\n return isStaticAttrs(node.openingElement.attributes) && node.children.every(isStaticChild)\n}\n\nfunction isStaticAttrs(attrs: ts.JsxAttributes): boolean {\n return attrs.properties.every((prop) => {\n // Spread attribute — always dynamic\n if (!ts.isJsxAttribute(prop)) return false\n // Boolean shorthand: <input disabled />\n if (!prop.initializer) return true\n // String literal: class=\"foo\"\n if (ts.isStringLiteral(prop.initializer)) return true\n // Must be JsxExpression — the only remaining JsxAttributeValue type\n const expr = (prop.initializer as ts.JsxExpression).expression\n return expr ? isStatic(expr) : true\n })\n}\n\nfunction isStaticChild(child: ts.JsxChild): boolean {\n // Plain text content\n if (ts.isJsxText(child)) return true\n // Nested JSX elements\n if (ts.isJsxSelfClosingElement(child)) return isStaticJSXNode(child)\n if (ts.isJsxElement(child)) return isStaticJSXNode(child)\n if (ts.isJsxFragment(child)) return isStaticJSXNode(child)\n // Must be JsxExpression — the only remaining JsxChild type\n const expr = (child as ts.JsxExpression).expression\n return expr ? isStatic(expr) : true\n}\n\n// ─── General helpers ──────────────────────────────────────────────────────────\n\nfunction isStatic(node: ts.Expression): boolean {\n return (\n ts.isStringLiteral(node) ||\n ts.isNumericLiteral(node) ||\n ts.isNoSubstitutionTemplateLiteral(node) ||\n node.kind === ts.SyntaxKind.TrueKeyword ||\n node.kind === ts.SyntaxKind.FalseKeyword ||\n node.kind === ts.SyntaxKind.NullKeyword ||\n node.kind === ts.SyntaxKind.UndefinedKeyword\n )\n}\n\nfunction shouldWrap(node: ts.Expression): boolean {\n // Already a function — user explicitly wrapped or it's a callback\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) return false\n // Static literal — no signals involved\n if (isStatic(node)) return false\n // Only wrap if the expression tree contains a call — signal reads are always\n // function calls (e.g. `count()`, `name()`). Plain identifiers, object literals\n // like `style={{ color: \"red\" }}`, array literals, and member accesses are\n // left as-is to avoid unnecessary reactive wrappers.\n return containsCall(node)\n}\n\nfunction containsCall(node: ts.Node): boolean {\n if (ts.isCallExpression(node)) return true\n if (ts.isTaggedTemplateExpression(node)) return true\n // Don't recurse into nested functions — they're self-contained\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) return false\n return ts.forEachChild(node, containsCall) ?? false\n}\n","/**\n * Project scanner — extracts route, component, and island information from source files.\n */\n\nimport * as fs from \"node:fs\"\nimport * as path from \"node:path\"\n\nexport interface RouteInfo {\n path: string\n name?: string | undefined\n component?: string | undefined\n hasLoader: boolean\n hasGuard: boolean\n params: string[]\n}\n\nexport interface ComponentInfo {\n name: string\n file: string\n hasSignals: boolean\n signalNames: string[]\n props: string[]\n}\n\nexport interface IslandInfo {\n name: string\n file: string\n hydrate: string\n}\n\nexport interface ProjectContext {\n framework: \"pyreon\"\n version: string\n generatedAt: string\n routes: RouteInfo[]\n components: ComponentInfo[]\n islands: IslandInfo[]\n}\n\nexport function generateContext(cwd: string): ProjectContext {\n const files = collectSourceFiles(cwd)\n const version = readVersion(cwd)\n\n return {\n framework: \"pyreon\",\n version,\n generatedAt: new Date().toISOString(),\n routes: extractRoutes(files, cwd),\n components: extractComponents(files, cwd),\n islands: extractIslands(files, cwd),\n }\n}\n\nfunction collectSourceFiles(cwd: string): string[] {\n const results: string[] = []\n const extensions = new Set([\".tsx\", \".jsx\", \".ts\", \".js\"])\n const ignoreDirs = new Set([\"node_modules\", \"dist\", \"lib\", \".pyreon\", \".git\", \"build\"])\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: simple recursive walker\n function walk(dir: string): void {\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true })\n } catch {\n return\n }\n for (const entry of entries) {\n if (entry.name.startsWith(\".\") && entry.isDirectory()) continue\n if (ignoreDirs.has(entry.name) && entry.isDirectory()) continue\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n walk(fullPath)\n } else if (entry.isFile() && extensions.has(path.extname(entry.name))) {\n results.push(fullPath)\n }\n }\n }\n\n walk(cwd)\n return results\n}\n\nfunction extractRoutes(files: string[], _cwd: string): RouteInfo[] {\n const routes: RouteInfo[] = []\n\n for (const file of files) {\n let code: string\n try {\n code = fs.readFileSync(file, \"utf-8\")\n } catch {\n continue\n }\n\n const routeArrayRe =\n /(?:createRouter\\s*\\(\\s*\\[|(?:const|let)\\s+routes\\s*(?::\\s*RouteRecord\\[\\])?\\s*=\\s*\\[)([\\s\\S]*?)\\]/g\n let match: RegExpExecArray | null\n for (match = routeArrayRe.exec(code); match; match = routeArrayRe.exec(code)) {\n const block = match[1] ?? \"\"\n const routeObjRe = /path\\s*:\\s*[\"']([^\"']+)[\"']/g\n let routeMatch: RegExpExecArray | null\n for (routeMatch = routeObjRe.exec(block); routeMatch; routeMatch = routeObjRe.exec(block)) {\n const routePath = routeMatch[1] ?? \"\"\n const surroundingStart = Math.max(0, routeMatch.index - 50)\n const surroundingEnd = Math.min(block.length, routeMatch.index + 200)\n const surrounding = block.slice(surroundingStart, surroundingEnd)\n\n routes.push({\n path: routePath,\n name: surrounding.match(/name\\s*:\\s*[\"']([^\"']+)[\"']/)?.[1],\n hasLoader: /loader\\s*:/.test(surrounding),\n hasGuard: /beforeEnter\\s*:|beforeLeave\\s*:/.test(surrounding),\n params: extractParams(routePath),\n })\n }\n }\n }\n\n return routes\n}\n\nfunction extractComponents(files: string[], cwd: string): ComponentInfo[] {\n const components: ComponentInfo[] = []\n\n for (const file of files) {\n let code: string\n try {\n code = fs.readFileSync(file, \"utf-8\")\n } catch {\n continue\n }\n\n const componentRe =\n /(?:export\\s+)?(?:const|function)\\s+([A-Z]\\w*)\\s*(?::\\s*ComponentFn<[^>]+>\\s*)?=?\\s*\\(?(?:\\s*\\{?\\s*([^)]*?)\\s*\\}?\\s*)?\\)?\\s*(?:=>|{)/g\n let match: RegExpExecArray | null\n\n for (match = componentRe.exec(code); match; match = componentRe.exec(code)) {\n const name = match[1] ?? \"Unknown\"\n const propsStr = match[2] ?? \"\"\n const props = propsStr\n .split(/[,;]/)\n .map((p) => p.trim().replace(/[{}]/g, \"\").trim().split(\":\")[0]?.split(\"=\")[0]?.trim() ?? \"\")\n .filter((p) => p && p !== \"props\")\n\n const bodyStart = match.index + match[0].length\n const body = code.slice(bodyStart, Math.min(code.length, bodyStart + 2000))\n const signalNames: string[] = []\n const signalRe = /(?:const|let)\\s+(\\w+)\\s*=\\s*signal\\s*[<(]/g\n let sigMatch: RegExpExecArray | null\n for (sigMatch = signalRe.exec(body); sigMatch; sigMatch = signalRe.exec(body)) {\n if (sigMatch[1]) signalNames.push(sigMatch[1])\n }\n\n components.push({\n name,\n file: path.relative(cwd, file),\n hasSignals: signalNames.length > 0,\n signalNames,\n props,\n })\n }\n }\n\n return components\n}\n\nfunction extractIslands(files: string[], cwd: string): IslandInfo[] {\n const islands: IslandInfo[] = []\n\n for (const file of files) {\n let code: string\n try {\n code = fs.readFileSync(file, \"utf-8\")\n } catch {\n continue\n }\n\n const islandRe =\n /island\\s*\\(\\s*\\(\\)\\s*=>\\s*import\\(.+?\\)\\s*,\\s*\\{[^}]*name\\s*:\\s*[\"']([^\"']+)[\"'][^}]*?(?:hydrate\\s*:\\s*[\"']([^\"']+)[\"'])?[^}]*\\}/g\n let match: RegExpExecArray | null\n for (match = islandRe.exec(code); match; match = islandRe.exec(code)) {\n if (match[1]) {\n islands.push({\n name: match[1],\n file: path.relative(cwd, file),\n hydrate: match[2] ?? \"load\",\n })\n }\n }\n }\n\n return islands\n}\n\nfunction extractParams(routePath: string): string[] {\n const params: string[] = []\n const paramRe = /:(\\w+)\\??/g\n let match: RegExpExecArray | null\n for (match = paramRe.exec(routePath); match; match = paramRe.exec(routePath)) {\n if (match[1]) params.push(match[1])\n }\n return params\n}\n\nfunction readVersion(cwd: string): string {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(cwd, \"package.json\"), \"utf-8\"))\n const deps: Record<string, unknown> = { ...pkg.dependencies, ...pkg.devDependencies }\n for (const [name, ver] of Object.entries(deps)) {\n if (name.startsWith(\"@pyreon/\") && typeof ver === \"string\") return ver.replace(/^[\\^~]/, \"\")\n }\n return (pkg.version as string) || \"unknown\"\n } catch {\n return \"unknown\"\n }\n}\n","/**\n * React Pattern Interceptor — detects React/Vue patterns in code and provides\n * structured diagnostics with exact fix suggestions for AI-assisted migration.\n *\n * Two modes:\n * - `detectReactPatterns(code)` — returns diagnostics only (non-destructive)\n * - `migrateReactCode(code)` — applies auto-fixes and returns transformed code\n *\n * Designed for three consumers:\n * 1. Compiler pre-pass (warnings during build)\n * 2. CLI `pyreon doctor` (project-wide scanning)\n * 3. MCP server `migrate_react` / `validate` tools (AI agent integration)\n */\n\nimport ts from \"typescript\"\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Types\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport type ReactDiagnosticCode =\n | \"react-import\"\n | \"react-dom-import\"\n | \"react-router-import\"\n | \"use-state\"\n | \"use-effect-mount\"\n | \"use-effect-deps\"\n | \"use-effect-no-deps\"\n | \"use-memo\"\n | \"use-callback\"\n | \"use-ref-dom\"\n | \"use-ref-box\"\n | \"use-reducer\"\n | \"use-layout-effect\"\n | \"memo-wrapper\"\n | \"forward-ref\"\n | \"class-name-prop\"\n | \"html-for-prop\"\n | \"on-change-input\"\n | \"dangerously-set-inner-html\"\n | \"dot-value-signal\"\n | \"array-map-jsx\"\n | \"key-on-for-child\"\n | \"create-context-import\"\n | \"use-context-import\"\n\nexport interface ReactDiagnostic {\n /** Machine-readable code for filtering and programmatic handling */\n code: ReactDiagnosticCode\n /** Human-readable message explaining the issue */\n message: string\n /** 1-based line number */\n line: number\n /** 0-based column */\n column: number\n /** The code as written */\n current: string\n /** The suggested Pyreon equivalent */\n suggested: string\n /** Whether migrateReactCode can auto-fix this */\n fixable: boolean\n}\n\nexport interface MigrationChange {\n type: \"replace\" | \"remove\" | \"add\"\n line: number\n description: string\n}\n\nexport interface MigrationResult {\n /** Transformed source code */\n code: string\n /** All detected patterns (including unfixable ones) */\n diagnostics: ReactDiagnostic[]\n /** Description of changes applied */\n changes: MigrationChange[]\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// React Hook → Pyreon mapping\n// ═══════════════════════════════════════════════════════════════════════════════\n\ninterface HookMapping {\n pyreonFn: string\n pyreonImport: string\n description: string\n example: string\n}\n\nconst _REACT_HOOK_MAP: Record<string, HookMapping> = {\n useState: {\n pyreonFn: \"signal\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Signals are callable functions — read: count(), write: count.set(5)\",\n example:\n \"const count = signal(0)\\n// Read: count() Write: count.set(5) Update: count.update(n => n + 1)\",\n },\n useEffect: {\n pyreonFn: \"effect\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Effects auto-track signal dependencies — no dependency array needed\",\n example: \"effect(() => {\\n console.log(count()) // auto-subscribes to count\\n})\",\n },\n useLayoutEffect: {\n pyreonFn: \"effect\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Pyreon effects run synchronously after signal updates\",\n example: \"effect(() => {\\n // runs sync after signal changes\\n})\",\n },\n useMemo: {\n pyreonFn: \"computed\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Computed values auto-track dependencies and memoize\",\n example: \"const doubled = computed(() => count() * 2)\",\n },\n useCallback: {\n pyreonFn: \"(plain function)\",\n pyreonImport: \"\",\n description:\n \"Not needed — Pyreon components run once, so closures never go stale. Use a plain function\",\n example: \"const handleClick = () => doSomething(count())\",\n },\n useReducer: {\n pyreonFn: \"signal\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Use signal with update() for reducer-like patterns\",\n example:\n \"const state = signal(initialState)\\nconst dispatch = (action) => state.update(s => reducer(s, action))\",\n },\n}\n\n/** React import sources → Pyreon equivalents */\nconst IMPORT_REWRITES: Record<string, string | null> = {\n react: \"@pyreon/core\",\n \"react-dom\": \"@pyreon/runtime-dom\",\n \"react-dom/client\": \"@pyreon/runtime-dom\",\n \"react-dom/server\": \"@pyreon/runtime-server\",\n \"react-router\": \"@pyreon/router\",\n \"react-router-dom\": \"@pyreon/router\",\n}\n\n/** React specifiers that map to specific Pyreon imports */\nconst SPECIFIER_REWRITES: Record<string, { name: string; from: string }> = {\n useState: { name: \"signal\", from: \"@pyreon/reactivity\" },\n useEffect: { name: \"effect\", from: \"@pyreon/reactivity\" },\n useLayoutEffect: { name: \"effect\", from: \"@pyreon/reactivity\" },\n useMemo: { name: \"computed\", from: \"@pyreon/reactivity\" },\n useReducer: { name: \"signal\", from: \"@pyreon/reactivity\" },\n useRef: { name: \"signal\", from: \"@pyreon/reactivity\" },\n createContext: { name: \"createContext\", from: \"@pyreon/core\" },\n useContext: { name: \"useContext\", from: \"@pyreon/core\" },\n Fragment: { name: \"Fragment\", from: \"@pyreon/core\" },\n Suspense: { name: \"Suspense\", from: \"@pyreon/core\" },\n lazy: { name: \"lazy\", from: \"@pyreon/core\" },\n memo: { name: \"\", from: \"\" }, // removed, not needed\n forwardRef: { name: \"\", from: \"\" }, // removed, not needed\n createRoot: { name: \"mount\", from: \"@pyreon/runtime-dom\" },\n hydrateRoot: { name: \"hydrateRoot\", from: \"@pyreon/runtime-dom\" },\n // React Router\n useNavigate: { name: \"useRouter\", from: \"@pyreon/router\" },\n useParams: { name: \"useRoute\", from: \"@pyreon/router\" },\n useLocation: { name: \"useRoute\", from: \"@pyreon/router\" },\n Link: { name: \"RouterLink\", from: \"@pyreon/router\" },\n NavLink: { name: \"RouterLink\", from: \"@pyreon/router\" },\n Outlet: { name: \"RouterView\", from: \"@pyreon/router\" },\n useSearchParams: { name: \"useSearchParams\", from: \"@pyreon/router\" },\n}\n\n/** JSX attribute rewrites (React → standard HTML) */\nconst JSX_ATTR_REWRITES: Record<string, string> = {\n className: \"class\",\n htmlFor: \"for\",\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Detection (diagnostic-only, no modifications)\n// ═══════════════════════════════════════════════════════════════════════════════\n\ninterface DetectContext {\n sf: ts.SourceFile\n code: string\n diagnostics: ReactDiagnostic[]\n reactImportedHooks: Set<string>\n}\n\nfunction detectGetNodeText(ctx: DetectContext, node: ts.Node): string {\n return ctx.code.slice(node.getStart(ctx.sf), node.getEnd())\n}\n\nfunction detectDiag(\n ctx: DetectContext,\n node: ts.Node,\n diagCode: ReactDiagnosticCode,\n message: string,\n current: string,\n suggested: string,\n fixable: boolean,\n): void {\n const { line, character } = ctx.sf.getLineAndCharacterOfPosition(node.getStart(ctx.sf))\n ctx.diagnostics.push({\n code: diagCode,\n message,\n line: line + 1,\n column: character,\n current: current.trim(),\n suggested: suggested.trim(),\n fixable,\n })\n}\n\nfunction detectImportDeclaration(ctx: DetectContext, node: ts.ImportDeclaration): void {\n if (!node.moduleSpecifier) return\n const source = (node.moduleSpecifier as ts.StringLiteral).text\n const pyreonSource = IMPORT_REWRITES[source]\n\n if (pyreonSource !== undefined) {\n if (node.importClause?.namedBindings && ts.isNamedImports(node.importClause.namedBindings)) {\n for (const spec of node.importClause.namedBindings.elements) {\n ctx.reactImportedHooks.add(spec.name.text)\n }\n }\n\n const diagCode = source.startsWith(\"react-router\")\n ? \"react-router-import\"\n : source.startsWith(\"react-dom\")\n ? \"react-dom-import\"\n : \"react-import\"\n\n detectDiag(\n ctx,\n node,\n diagCode,\n `Import from '${source}' is a React package. Use Pyreon equivalent.`,\n detectGetNodeText(ctx, node),\n pyreonSource\n ? `import { ... } from \"${pyreonSource}\"`\n : \"Remove this import — not needed in Pyreon\",\n true,\n )\n }\n}\n\nfunction detectUseState(ctx: DetectContext, node: ts.CallExpression): void {\n const parent = node.parent\n if (\n ts.isVariableDeclaration(parent) &&\n parent.name &&\n ts.isArrayBindingPattern(parent.name) &&\n parent.name.elements.length >= 1\n ) {\n const firstEl = parent.name.elements[0]\n const valueName =\n firstEl && ts.isBindingElement(firstEl) ? (firstEl.name as ts.Identifier).text : \"value\"\n const initArg = node.arguments[0] ? detectGetNodeText(ctx, node.arguments[0]) : \"undefined\"\n\n detectDiag(\n ctx,\n node,\n \"use-state\",\n `useState is a React API. In Pyreon, use signal(). Read: ${valueName}(), Write: ${valueName}.set(x)`,\n detectGetNodeText(ctx, parent),\n `${valueName} = signal(${initArg})`,\n true,\n )\n } else {\n detectDiag(\n ctx,\n node,\n \"use-state\",\n \"useState is a React API. In Pyreon, use signal().\",\n detectGetNodeText(ctx, node),\n \"signal(initialValue)\",\n true,\n )\n }\n}\n\nfunction callbackHasCleanup(callbackArg: ts.Expression): boolean {\n if (!ts.isArrowFunction(callbackArg) && !ts.isFunctionExpression(callbackArg)) return false\n const body = callbackArg.body\n if (!ts.isBlock(body)) return false\n for (const stmt of body.statements) {\n if (ts.isReturnStatement(stmt) && stmt.expression) return true\n }\n return false\n}\n\nfunction detectUseEffect(ctx: DetectContext, node: ts.CallExpression): void {\n const hookName = (node.expression as ts.Identifier).text\n const depsArg = node.arguments[1]\n const callbackArg = node.arguments[0]\n\n if (depsArg && ts.isArrayLiteralExpression(depsArg) && depsArg.elements.length === 0) {\n const hasCleanup = callbackArg ? callbackHasCleanup(callbackArg) : false\n\n detectDiag(\n ctx,\n node,\n \"use-effect-mount\",\n `${hookName} with empty deps [] means \"run once on mount\". Use onMount() in Pyreon.`,\n detectGetNodeText(ctx, node),\n hasCleanup\n ? \"onMount(() => {\\n // setup...\\n return () => { /* cleanup */ }\\n})\"\n : \"onMount(() => {\\n // setup...\\n return undefined\\n})\",\n true,\n )\n } else if (depsArg && ts.isArrayLiteralExpression(depsArg)) {\n detectDiag(\n ctx,\n node,\n \"use-effect-deps\",\n `${hookName} with dependency array. In Pyreon, effect() auto-tracks dependencies — no array needed.`,\n detectGetNodeText(ctx, node),\n \"effect(() => {\\n // reads are auto-tracked\\n})\",\n true,\n )\n } else if (!depsArg) {\n detectDiag(\n ctx,\n node,\n \"use-effect-no-deps\",\n `${hookName} with no dependency array. In Pyreon, use effect() — it auto-tracks signal reads.`,\n detectGetNodeText(ctx, node),\n \"effect(() => {\\n // runs when accessed signals change\\n})\",\n true,\n )\n }\n}\n\nfunction detectUseMemo(ctx: DetectContext, node: ts.CallExpression): void {\n const computeFn = node.arguments[0]\n const computeText = computeFn ? detectGetNodeText(ctx, computeFn) : \"() => value\"\n\n detectDiag(\n ctx,\n node,\n \"use-memo\",\n \"useMemo is a React API. In Pyreon, use computed() — dependencies auto-tracked.\",\n detectGetNodeText(ctx, node),\n `computed(${computeText})`,\n true,\n )\n}\n\nfunction detectUseCallback(ctx: DetectContext, node: ts.CallExpression): void {\n const callbackFn = node.arguments[0]\n const callbackText = callbackFn ? detectGetNodeText(ctx, callbackFn) : \"() => {}\"\n\n detectDiag(\n ctx,\n node,\n \"use-callback\",\n \"useCallback is not needed in Pyreon. Components run once, so closures never go stale. Use a plain function.\",\n detectGetNodeText(ctx, node),\n callbackText,\n true,\n )\n}\n\nfunction detectUseRef(ctx: DetectContext, node: ts.CallExpression): void {\n const arg = node.arguments[0]\n const isNullInit =\n arg &&\n (arg.kind === ts.SyntaxKind.NullKeyword || (ts.isIdentifier(arg) && arg.text === \"undefined\"))\n\n if (isNullInit) {\n detectDiag(\n ctx,\n node,\n \"use-ref-dom\",\n \"useRef(null) for DOM refs. In Pyreon, use createRef() from @pyreon/core.\",\n detectGetNodeText(ctx, node),\n \"createRef()\",\n true,\n )\n } else {\n const initText = arg ? detectGetNodeText(ctx, arg) : \"undefined\"\n detectDiag(\n ctx,\n node,\n \"use-ref-box\",\n \"useRef for mutable values. In Pyreon, use signal() — it works the same way but is reactive.\",\n detectGetNodeText(ctx, node),\n `signal(${initText})`,\n true,\n )\n }\n}\n\nfunction detectUseReducer(ctx: DetectContext, node: ts.CallExpression): void {\n detectDiag(\n ctx,\n node,\n \"use-reducer\",\n \"useReducer is a React API. In Pyreon, use signal() with update() for reducer patterns.\",\n detectGetNodeText(ctx, node),\n \"const state = signal(initialState)\\nconst dispatch = (action) => state.update(s => reducer(s, action))\",\n false,\n )\n}\n\nfunction isCallToReactDot(callee: ts.Expression, methodName: string): boolean {\n return (\n ts.isPropertyAccessExpression(callee) &&\n ts.isIdentifier(callee.expression) &&\n callee.expression.text === \"React\" &&\n callee.name.text === methodName\n )\n}\n\nfunction detectMemoWrapper(ctx: DetectContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isMemo =\n (ts.isIdentifier(callee) && callee.text === \"memo\") || isCallToReactDot(callee, \"memo\")\n\n if (isMemo) {\n const inner = node.arguments[0]\n const innerText = inner ? detectGetNodeText(ctx, inner) : \"Component\"\n\n detectDiag(\n ctx,\n node,\n \"memo-wrapper\",\n \"memo() is not needed in Pyreon. Components run once — only signals trigger updates, not re-renders.\",\n detectGetNodeText(ctx, node),\n innerText,\n true,\n )\n }\n}\n\nfunction detectForwardRef(ctx: DetectContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isForwardRef =\n (ts.isIdentifier(callee) && callee.text === \"forwardRef\") ||\n isCallToReactDot(callee, \"forwardRef\")\n\n if (isForwardRef) {\n detectDiag(\n ctx,\n node,\n \"forward-ref\",\n \"forwardRef is not needed in Pyreon. Pass ref as a regular prop.\",\n detectGetNodeText(ctx, node),\n \"// Just pass ref as a prop:\\nconst MyInput = (props) => <input ref={props.ref} />\",\n true,\n )\n }\n}\n\nfunction detectJsxAttributes(ctx: DetectContext, node: ts.JsxAttribute): void {\n const attrName = (node.name as ts.Identifier).text\n\n if (attrName in JSX_ATTR_REWRITES) {\n const htmlAttr = JSX_ATTR_REWRITES[attrName] as string\n detectDiag(\n ctx,\n node,\n attrName === \"className\" ? \"class-name-prop\" : \"html-for-prop\",\n `'${attrName}' is a React JSX attribute. Use '${htmlAttr}' in Pyreon (standard HTML).`,\n detectGetNodeText(ctx, node),\n detectGetNodeText(ctx, node).replace(attrName, htmlAttr),\n true,\n )\n }\n\n if (attrName === \"onChange\") {\n const jsxElement = findParentJsxElement(node)\n if (jsxElement) {\n const tagName = getJsxTagName(jsxElement)\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n detectDiag(\n ctx,\n node,\n \"on-change-input\",\n `onChange on <${tagName}> fires on blur in Pyreon (native DOM behavior). For keypress-by-keypress updates, use onInput.`,\n detectGetNodeText(ctx, node),\n detectGetNodeText(ctx, node).replace(\"onChange\", \"onInput\"),\n true,\n )\n }\n }\n }\n\n if (attrName === \"dangerouslySetInnerHTML\") {\n detectDiag(\n ctx,\n node,\n \"dangerously-set-inner-html\",\n \"dangerouslySetInnerHTML is React-specific. Use innerHTML prop in Pyreon.\",\n detectGetNodeText(ctx, node),\n \"innerHTML={htmlString}\",\n true,\n )\n }\n}\n\nfunction detectDotValueSignal(ctx: DetectContext, node: ts.PropertyAccessExpression): void {\n const varName = (node.expression as ts.Identifier).text\n const parent = node.parent\n if (ts.isBinaryExpression(parent) && parent.left === node) {\n detectDiag(\n ctx,\n node,\n \"dot-value-signal\",\n `'${varName}.value' looks like a Vue ref pattern. Pyreon signals are callable functions. Use ${varName}.set(x) to write.`,\n detectGetNodeText(ctx, parent),\n `${varName}.set(${detectGetNodeText(ctx, parent.right)})`,\n false,\n )\n }\n}\n\nfunction detectArrayMapJsx(ctx: DetectContext, node: ts.CallExpression): void {\n const parent = node.parent\n if (ts.isJsxExpression(parent)) {\n const arrayExpr = detectGetNodeText(\n ctx,\n (node.expression as ts.PropertyAccessExpression).expression,\n )\n const mapCallback = node.arguments[0]\n const mapCallbackText = mapCallback\n ? detectGetNodeText(ctx, mapCallback)\n : \"item => <li>{item}</li>\"\n\n detectDiag(\n ctx,\n node,\n \"array-map-jsx\",\n \"Array.map() in JSX is not reactive in Pyreon. Use <For> for efficient keyed list rendering.\",\n detectGetNodeText(ctx, node),\n `<For each={${arrayExpr}} by={item => item.id}>\\n {${mapCallbackText}}\\n</For>`,\n false,\n )\n }\n}\n\nfunction isCallToHook(node: ts.Node, hookName: string): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === hookName\n )\n}\n\nfunction isCallToEffectHook(node: ts.Node): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n (node.expression.text === \"useEffect\" || node.expression.text === \"useLayoutEffect\")\n )\n}\n\nfunction isMapCallExpression(node: ts.Node): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n ts.isIdentifier(node.expression.name) &&\n node.expression.name.text === \"map\"\n )\n}\n\nfunction isDotValueAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n return (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === \"value\" &&\n ts.isIdentifier(node.expression)\n )\n}\n\nfunction detectVisitNode(ctx: DetectContext, node: ts.Node): void {\n if (ts.isImportDeclaration(node)) detectImportDeclaration(ctx, node)\n if (isCallToHook(node, \"useState\")) detectUseState(ctx, node)\n if (isCallToEffectHook(node)) detectUseEffect(ctx, node)\n if (isCallToHook(node, \"useMemo\")) detectUseMemo(ctx, node)\n if (isCallToHook(node, \"useCallback\")) detectUseCallback(ctx, node)\n if (isCallToHook(node, \"useRef\")) detectUseRef(ctx, node)\n if (isCallToHook(node, \"useReducer\")) detectUseReducer(ctx, node)\n if (ts.isCallExpression(node)) detectMemoWrapper(ctx, node)\n if (ts.isCallExpression(node)) detectForwardRef(ctx, node)\n if (ts.isJsxAttribute(node) && ts.isIdentifier(node.name)) detectJsxAttributes(ctx, node)\n if (isDotValueAccess(node)) detectDotValueSignal(ctx, node)\n if (isMapCallExpression(node)) detectArrayMapJsx(ctx, node)\n}\n\nfunction detectVisit(ctx: DetectContext, node: ts.Node): void {\n ts.forEachChild(node, (child) => {\n detectVisitNode(ctx, child)\n detectVisit(ctx, child)\n })\n}\n\nexport function detectReactPatterns(code: string, filename = \"input.tsx\"): ReactDiagnostic[] {\n const sf = ts.createSourceFile(filename, code, ts.ScriptTarget.ESNext, true, ts.ScriptKind.TSX)\n const ctx: DetectContext = {\n sf,\n code,\n diagnostics: [],\n reactImportedHooks: new Set<string>(),\n }\n\n detectVisit(ctx, sf)\n return ctx.diagnostics\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Migration (detection + auto-fix)\n// ═══════════════════════════════════════════════════════════════════════════════\n\ntype Replacement = { start: number; end: number; text: string }\n\ninterface MigrateContext {\n sf: ts.SourceFile\n code: string\n replacements: Replacement[]\n changes: MigrationChange[]\n pyreonImports: Map<string, Set<string>>\n importsToRemove: Set<ts.ImportDeclaration>\n specifierRewrites: Map<ts.ImportSpecifier, { name: string; from: string }>\n}\n\nfunction migrateAddImport(ctx: MigrateContext, source: string, specifier: string): void {\n if (!source || !specifier) return\n let specs = ctx.pyreonImports.get(source)\n if (!specs) {\n specs = new Set()\n ctx.pyreonImports.set(source, specs)\n }\n specs.add(specifier)\n}\n\nfunction migrateReplace(ctx: MigrateContext, node: ts.Node, text: string): void {\n ctx.replacements.push({ start: node.getStart(ctx.sf), end: node.getEnd(), text })\n}\n\nfunction migrateGetNodeText(ctx: MigrateContext, node: ts.Node): string {\n return ctx.code.slice(node.getStart(ctx.sf), node.getEnd())\n}\n\nfunction migrateGetLine(ctx: MigrateContext, node: ts.Node): number {\n return ctx.sf.getLineAndCharacterOfPosition(node.getStart(ctx.sf)).line + 1\n}\n\nfunction migrateImportDeclaration(ctx: MigrateContext, node: ts.ImportDeclaration): void {\n if (!node.moduleSpecifier) return\n const source = (node.moduleSpecifier as ts.StringLiteral).text\n if (!(source in IMPORT_REWRITES)) return\n\n if (node.importClause?.namedBindings && ts.isNamedImports(node.importClause.namedBindings)) {\n for (const spec of node.importClause.namedBindings.elements) {\n const name = spec.name.text\n const rewrite = SPECIFIER_REWRITES[name]\n if (rewrite) {\n if (rewrite.name) {\n migrateAddImport(ctx, rewrite.from, rewrite.name)\n }\n ctx.specifierRewrites.set(spec, rewrite)\n }\n }\n }\n ctx.importsToRemove.add(node)\n}\n\nfunction migrateUseState(ctx: MigrateContext, node: ts.CallExpression): void {\n const parent = node.parent\n if (\n ts.isVariableDeclaration(parent) &&\n parent.name &&\n ts.isArrayBindingPattern(parent.name) &&\n parent.name.elements.length >= 1\n ) {\n const firstEl = parent.name.elements[0]\n const valueName =\n firstEl && ts.isBindingElement(firstEl) ? (firstEl.name as ts.Identifier).text : \"value\"\n const initArg = node.arguments[0] ? migrateGetNodeText(ctx, node.arguments[0]) : \"undefined\"\n\n const declStart = parent.getStart(ctx.sf)\n const declEnd = parent.getEnd()\n ctx.replacements.push({\n start: declStart,\n end: declEnd,\n text: `${valueName} = signal(${initArg})`,\n })\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"signal\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `useState → signal: ${valueName}`,\n })\n }\n}\n\nfunction migrateUseEffect(ctx: MigrateContext, node: ts.CallExpression): void {\n const depsArg = node.arguments[1]\n const callbackArg = node.arguments[0]\n const hookName = (node.expression as ts.Identifier).text\n\n if (\n depsArg &&\n ts.isArrayLiteralExpression(depsArg) &&\n depsArg.elements.length === 0 &&\n callbackArg\n ) {\n const callbackText = migrateGetNodeText(ctx, callbackArg)\n migrateReplace(ctx, node, `onMount(${callbackText})`)\n migrateAddImport(ctx, \"@pyreon/core\", \"onMount\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `${hookName}(fn, []) → onMount(fn)`,\n })\n } else if (callbackArg) {\n const callbackText = migrateGetNodeText(ctx, callbackArg)\n migrateReplace(ctx, node, `effect(${callbackText})`)\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"effect\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `${hookName} → effect (auto-tracks deps)`,\n })\n }\n}\n\nfunction migrateUseMemo(ctx: MigrateContext, node: ts.CallExpression): void {\n const computeFn = node.arguments[0]\n if (computeFn) {\n migrateReplace(ctx, node, `computed(${migrateGetNodeText(ctx, computeFn)})`)\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"computed\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useMemo → computed (auto-tracks deps)\",\n })\n }\n}\n\nfunction migrateUseCallback(ctx: MigrateContext, node: ts.CallExpression): void {\n const callbackFn = node.arguments[0]\n if (callbackFn) {\n migrateReplace(ctx, node, migrateGetNodeText(ctx, callbackFn))\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useCallback → plain function (not needed in Pyreon)\",\n })\n }\n}\n\nfunction migrateUseRef(ctx: MigrateContext, node: ts.CallExpression): void {\n const arg = node.arguments[0]\n const isNullInit =\n arg &&\n (arg.kind === ts.SyntaxKind.NullKeyword || (ts.isIdentifier(arg) && arg.text === \"undefined\"))\n\n if (isNullInit || !arg) {\n migrateReplace(ctx, node, \"createRef()\")\n migrateAddImport(ctx, \"@pyreon/core\", \"createRef\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useRef(null) → createRef()\",\n })\n } else {\n migrateReplace(ctx, node, `signal(${migrateGetNodeText(ctx, arg)})`)\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"signal\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useRef(value) → signal(value)\",\n })\n }\n}\n\nfunction migrateMemoWrapper(ctx: MigrateContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isMemo =\n (ts.isIdentifier(callee) && callee.text === \"memo\") || isCallToReactDot(callee, \"memo\")\n\n if (isMemo && node.arguments[0]) {\n migrateReplace(ctx, node, migrateGetNodeText(ctx, node.arguments[0]))\n ctx.changes.push({\n type: \"remove\",\n line: migrateGetLine(ctx, node),\n description: \"Removed memo() wrapper (not needed in Pyreon)\",\n })\n }\n}\n\nfunction migrateForwardRef(ctx: MigrateContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isForwardRef =\n (ts.isIdentifier(callee) && callee.text === \"forwardRef\") ||\n isCallToReactDot(callee, \"forwardRef\")\n\n if (isForwardRef && node.arguments[0]) {\n migrateReplace(ctx, node, migrateGetNodeText(ctx, node.arguments[0]))\n ctx.changes.push({\n type: \"remove\",\n line: migrateGetLine(ctx, node),\n description: \"Removed forwardRef wrapper (pass ref as normal prop in Pyreon)\",\n })\n }\n}\n\nfunction migrateJsxAttributes(ctx: MigrateContext, node: ts.JsxAttribute): void {\n const attrName = (node.name as ts.Identifier).text\n\n if (attrName in JSX_ATTR_REWRITES) {\n const htmlAttr = JSX_ATTR_REWRITES[attrName] as string\n ctx.replacements.push({\n start: node.name.getStart(ctx.sf),\n end: node.name.getEnd(),\n text: htmlAttr,\n })\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `${attrName} → ${htmlAttr}`,\n })\n }\n\n if (attrName === \"onChange\") {\n const jsxElement = findParentJsxElement(node)\n if (jsxElement) {\n const tagName = getJsxTagName(jsxElement)\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n ctx.replacements.push({\n start: node.name.getStart(ctx.sf),\n end: node.name.getEnd(),\n text: \"onInput\",\n })\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `onChange on <${tagName}> → onInput (native DOM events)`,\n })\n }\n }\n }\n\n if (attrName === \"dangerouslySetInnerHTML\") {\n migrateDangerouslySetInnerHTML(ctx, node)\n }\n}\n\nfunction migrateDangerouslySetInnerHTML(ctx: MigrateContext, node: ts.JsxAttribute): void {\n if (!node.initializer || !ts.isJsxExpression(node.initializer) || !node.initializer.expression) {\n return\n }\n const expr = node.initializer.expression\n if (!ts.isObjectLiteralExpression(expr)) return\n\n const htmlProp = expr.properties.find(\n (p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === \"__html\",\n ) as ts.PropertyAssignment | undefined\n\n if (htmlProp) {\n const valueText = migrateGetNodeText(ctx, htmlProp.initializer)\n migrateReplace(ctx, node, `innerHTML={${valueText}}`)\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"dangerouslySetInnerHTML → innerHTML\",\n })\n }\n}\n\nfunction applyReplacements(code: string, ctx: MigrateContext): string {\n // Remove React import declarations\n for (const imp of ctx.importsToRemove) {\n ctx.replacements.push({ start: imp.getStart(ctx.sf), end: imp.getEnd(), text: \"\" })\n ctx.changes.push({\n type: \"remove\",\n line: ctx.sf.getLineAndCharacterOfPosition(imp.getStart(ctx.sf)).line + 1,\n description: \"Removed React import\",\n })\n }\n\n // Sort replacements by position (descending) so we can apply from end to start\n ctx.replacements.sort((a, b) => b.start - a.start)\n\n // Deduplicate overlapping replacements (keep the outermost / first added)\n const applied = new Set<string>()\n const deduped: Replacement[] = []\n for (const r of ctx.replacements) {\n const key = `${r.start}:${r.end}`\n let overlaps = false\n for (const d of deduped) {\n if (r.start < d.end && r.end > d.start) {\n overlaps = true\n break\n }\n }\n if (!overlaps && !applied.has(key)) {\n applied.add(key)\n deduped.push(r)\n }\n }\n\n let result = code\n for (const r of deduped) {\n result = result.slice(0, r.start) + r.text + result.slice(r.end)\n }\n return result\n}\n\nfunction insertPyreonImports(code: string, pyreonImports: Map<string, Set<string>>): string {\n if (pyreonImports.size === 0) return code\n\n const importLines: string[] = []\n const sorted = [...pyreonImports.entries()].sort(([a], [b]) => a.localeCompare(b))\n for (const [source, specs] of sorted) {\n const specList = [...specs].sort().join(\", \")\n importLines.push(`import { ${specList} } from \"${source}\"`)\n }\n const importBlock = importLines.join(\"\\n\")\n\n const lastImportEnd = findLastImportEnd(code)\n if (lastImportEnd > 0) {\n return `${code.slice(0, lastImportEnd)}\\n${importBlock}${code.slice(lastImportEnd)}`\n }\n return `${importBlock}\\n\\n${code}`\n}\n\nfunction migrateVisitNode(ctx: MigrateContext, node: ts.Node): void {\n if (ts.isImportDeclaration(node)) migrateImportDeclaration(ctx, node)\n if (isCallToHook(node, \"useState\")) migrateUseState(ctx, node)\n if (isCallToEffectHook(node)) migrateUseEffect(ctx, node)\n if (isCallToHook(node, \"useMemo\")) migrateUseMemo(ctx, node)\n if (isCallToHook(node, \"useCallback\")) migrateUseCallback(ctx, node)\n if (isCallToHook(node, \"useRef\")) migrateUseRef(ctx, node)\n if (ts.isCallExpression(node)) migrateMemoWrapper(ctx, node)\n if (ts.isCallExpression(node)) migrateForwardRef(ctx, node)\n if (ts.isJsxAttribute(node) && ts.isIdentifier(node.name)) migrateJsxAttributes(ctx, node)\n}\n\nfunction migrateVisit(ctx: MigrateContext, node: ts.Node): void {\n ts.forEachChild(node, (child) => {\n migrateVisitNode(ctx, child)\n migrateVisit(ctx, child)\n })\n}\n\nexport function migrateReactCode(code: string, filename = \"input.tsx\"): MigrationResult {\n const sf = ts.createSourceFile(filename, code, ts.ScriptTarget.ESNext, true, ts.ScriptKind.TSX)\n const diagnostics = detectReactPatterns(code, filename)\n\n const ctx: MigrateContext = {\n sf,\n code,\n replacements: [],\n changes: [],\n pyreonImports: new Map(),\n importsToRemove: new Set(),\n specifierRewrites: new Map(),\n }\n\n migrateVisit(ctx, sf)\n\n let result = applyReplacements(code, ctx)\n result = insertPyreonImports(result, ctx.pyreonImports)\n\n // Clean up empty lines from removed imports\n result = result.replace(/\\n{3,}/g, \"\\n\\n\")\n\n return { code: result, diagnostics, changes: ctx.changes }\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Helpers\n// ═══════════════════════════════════════════════════════════════════════════════\n\nfunction findParentJsxElement(\n node: ts.Node,\n): ts.JsxOpeningElement | ts.JsxSelfClosingElement | null {\n let current = node.parent\n while (current) {\n if (ts.isJsxOpeningElement(current) || ts.isJsxSelfClosingElement(current)) {\n return current\n }\n // Don't cross component boundaries\n if (ts.isJsxElement(current)) {\n return current.openingElement\n }\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n return null\n }\n current = current.parent\n }\n return null\n}\n\nfunction getJsxTagName(node: ts.JsxOpeningElement | ts.JsxSelfClosingElement): string {\n const tagName = node.tagName\n if (ts.isIdentifier(tagName)) {\n return tagName.text\n }\n return \"\"\n}\n\nfunction findLastImportEnd(code: string): number {\n const importRe = /^import\\s.+$/gm\n let lastEnd = 0\n let match: RegExpExecArray | null\n while (true) {\n match = importRe.exec(code)\n if (!match) break\n lastEnd = match.index + match[0].length\n }\n return lastEnd\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Quick scan (regex-based, for fast pre-filtering)\n// ═══════════════════════════════════════════════════════════════════════════════\n\n/** Fast regex check — returns true if code likely contains React patterns worth analyzing */\nexport function hasReactPatterns(code: string): boolean {\n return (\n /\\bfrom\\s+['\"]react/.test(code) ||\n /\\bfrom\\s+['\"]react-dom/.test(code) ||\n /\\bfrom\\s+['\"]react-router/.test(code) ||\n /\\buseState\\s*[<(]/.test(code) ||\n /\\buseEffect\\s*\\(/.test(code) ||\n /\\buseMemo\\s*\\(/.test(code) ||\n /\\buseCallback\\s*\\(/.test(code) ||\n /\\buseRef\\s*[<(]/.test(code) ||\n /\\buseReducer\\s*[<(]/.test(code) ||\n /\\bReact\\.memo\\b/.test(code) ||\n /\\bforwardRef\\s*[<(]/.test(code) ||\n /\\bclassName[=\\s]/.test(code) ||\n /\\bhtmlFor[=\\s]/.test(code) ||\n /\\.value\\s*=/.test(code)\n )\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Error pattern database (for MCP diagnose tool)\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport interface ErrorDiagnosis {\n cause: string\n fix: string\n fixCode?: string | undefined\n related?: string | undefined\n}\n\ninterface ErrorPattern {\n pattern: RegExp\n diagnose: (match: RegExpMatchArray) => ErrorDiagnosis\n}\n\nconst ERROR_PATTERNS: ErrorPattern[] = [\n {\n pattern: /Cannot read properties of undefined \\(reading '(set|update|peek|subscribe)'\\)/,\n diagnose: (m) => ({\n cause: `Calling .${m[1]}() on undefined. The signal variable is likely out of scope, misspelled, or not yet initialized.`,\n fix: \"Check that the signal is defined and in scope. Signals must be created with signal() before use.\",\n fixCode: `const mySignal = signal(initialValue)\\nmySignal.${m[1]}(newValue)`,\n }),\n },\n {\n pattern: /(\\w+) is not a function/,\n diagnose: (m) => ({\n cause: `'${m[1]}' is not callable. If this is a signal, you need to call it: ${m[1]}()`,\n fix: \"Pyreon signals are callable functions. Read: signal(), Write: signal.set(value)\",\n fixCode: `// Read value:\\nconst value = ${m[1]}()\\n// Set value:\\n${m[1]}.set(newValue)`,\n }),\n },\n {\n pattern: /Cannot find module '(@pyreon\\/\\w[\\w-]*)'/,\n diagnose: (m) => ({\n cause: `Package ${m[1]} is not installed.`,\n fix: `Run: bun add ${m[1]}`,\n fixCode: `bun add ${m[1]}`,\n }),\n },\n {\n pattern: /Cannot find module 'react'/,\n diagnose: () => ({\n cause: \"Importing from 'react' in a Pyreon project.\",\n fix: \"Replace React imports with Pyreon equivalents.\",\n fixCode:\n '// Instead of:\\nimport { useState } from \"react\"\\n// Use:\\nimport { signal } from \"@pyreon/reactivity\"',\n }),\n },\n {\n pattern: /Property '(\\w+)' does not exist on type 'Signal<\\w+>'/,\n diagnose: (m) => ({\n cause: `Accessing .${m[1]} on a signal. Pyreon signals don't have a .${m[1]} property.`,\n fix:\n m[1] === \"value\"\n ? \"Pyreon signals are callable functions, not .value getters. Call signal() to read, signal.set() to write.\"\n : `Signals have these methods: .set(), .update(), .peek(), .subscribe(). '${m[1]}' is not one of them.`,\n fixCode:\n m[1] === \"value\" ? \"// Read: mySignal()\\n// Write: mySignal.set(newValue)\" : undefined,\n }),\n },\n {\n pattern: /Type '(\\w+)' is not assignable to type 'VNode'/,\n diagnose: (m) => ({\n cause: `Component returned ${m[1]} instead of VNode. Components must return JSX, null, or a string.`,\n fix: \"Make sure your component returns a JSX element, null, or a string.\",\n fixCode: \"const MyComponent = (props) => {\\n return <div>{props.children}</div>\\n}\",\n }),\n },\n {\n pattern: /onMount callback must return/,\n diagnose: () => ({\n cause: \"onMount expects a return of CleanupFn | undefined, not void.\",\n fix: \"Return undefined explicitly, or return a cleanup function.\",\n fixCode: \"onMount(() => {\\n // setup code\\n return undefined\\n})\",\n }),\n },\n {\n pattern: /Expected 'by' prop on <For>/,\n diagnose: () => ({\n cause: \"<For> requires a 'by' prop for efficient keyed reconciliation.\",\n fix: \"Add a by prop that returns a unique key for each item.\",\n fixCode:\n \"<For each={items()} by={item => item.id}>\\n {item => <li>{item.name}</li>}\\n</For>\",\n }),\n },\n {\n pattern: /useHook.*outside.*component/i,\n diagnose: () => ({\n cause:\n \"Hook called outside a component function. Pyreon hooks must be called during component setup.\",\n fix: \"Move the hook call inside a component function body.\",\n }),\n },\n {\n pattern: /Hydration mismatch/,\n diagnose: () => ({\n cause: \"Server-rendered HTML doesn't match client-rendered output.\",\n fix: \"Ensure SSR and client render the same initial content. Check for browser-only APIs (window, document) in SSR code.\",\n related: \"Use typeof window !== 'undefined' checks or onMount() for client-only code.\",\n }),\n },\n]\n\n/** Diagnose an error message and return structured fix information */\nexport function diagnoseError(error: string): ErrorDiagnosis | null {\n for (const { pattern, diagnose } of ERROR_PATTERNS) {\n const match = error.match(pattern)\n if (match) {\n return diagnose(match)\n }\n }\n return null\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/jsx.ts","../src/project-scanner.ts","../src/react-intercept.ts"],"sourcesContent":["/**\n * JSX transform — wraps dynamic JSX expressions in `() =>` so the Pyreon runtime\n * receives reactive getters instead of eagerly-evaluated snapshot values.\n *\n * Rules:\n * - `<div>{expr}</div>` → `<div>{() => expr}</div>` (child)\n * - `<div class={expr}>` → `<div class={() => expr}>` (prop)\n * - `<button onClick={fn}>` → unchanged (event handler)\n * - `<div>{() => expr}</div>` → unchanged (already wrapped)\n * - `<div>{\"literal\"}</div>` → unchanged (static)\n *\n * Static VNode hoisting:\n * - Fully static JSX in expression containers is hoisted to module scope:\n * `{<span>Hello</span>}` → `const _$h0 = <span>Hello</span>` + `{_$h0}`\n * - Hoisted nodes are created ONCE at module initialisation, not per-instance.\n * - A JSX node is static if: all props are string literals / booleans / static\n * values, and all children are text nodes or other static JSX nodes.\n *\n * Template emission:\n * - JSX element trees with ≥ 2 DOM elements (no components, no spread attrs)\n * are compiled to `_tpl(html, bindFn)` calls instead of nested `h()` calls.\n * - The HTML string is parsed once via <template>.innerHTML, then cloneNode(true)\n * for each instance (~5-10x faster than sequential createElement calls).\n * - Static attributes are baked into the HTML string; dynamic attributes and\n * text content use renderEffect in the bind function.\n *\n * Implementation: TypeScript parser for positions + magic-string replacements.\n * No extra runtime dependencies — `typescript` is already in devDependencies.\n *\n * Known limitation (v0): expressions inside *nested* JSX within a child\n * expression container are not individually wrapped. They are still reactive\n * because the outer wrapper re-evaluates the whole subtree, just at a coarser\n * granularity. Fine-grained nested wrapping is planned for a future pass.\n */\n\nimport ts from \"typescript\"\n\nexport interface CompilerWarning {\n /** Warning message */\n message: string\n /** Source file line number (1-based) */\n line: number\n /** Source file column number (0-based) */\n column: number\n /** Warning code for filtering */\n code: \"signal-call-in-jsx\" | \"missing-key-on-for\" | \"signal-in-static-prop\"\n}\n\nexport interface TransformResult {\n /** Transformed source code (JSX preserved, only expression containers modified) */\n code: string\n /** Whether the output uses _tpl/_re template helpers (needs auto-import) */\n usesTemplates?: boolean\n /** Compiler warnings for common mistakes */\n warnings: CompilerWarning[]\n}\n\n// Props that should never be wrapped in a reactive getter\nconst SKIP_PROPS = new Set([\"key\", \"ref\"])\n// Event handler pattern: onClick, onInput, onMouseEnter, …\nconst EVENT_RE = /^on[A-Z]/\n// Events delegated to the container — must match runtime DELEGATED_EVENTS set\nconst DELEGATED_EVENTS = new Set([\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"change\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"pointerdown\",\n \"pointerup\",\n \"pointermove\",\n \"pointerover\",\n \"pointerout\",\n \"touchstart\",\n \"touchend\",\n \"touchmove\",\n \"submit\",\n])\n\nexport function transformJSX(code: string, filename = \"input.tsx\"): TransformResult {\n const scriptKind =\n filename.endsWith(\".tsx\") || filename.endsWith(\".jsx\") ? ts.ScriptKind.TSX : ts.ScriptKind.TSX // default to TSX so JSX is always parsed\n\n const sf = ts.createSourceFile(\n filename,\n code,\n ts.ScriptTarget.ESNext,\n /* setParentNodes */ true,\n scriptKind,\n )\n\n type Replacement = { start: number; end: number; text: string }\n const replacements: Replacement[] = []\n const warnings: CompilerWarning[] = []\n\n function warn(node: ts.Node, message: string, warnCode: CompilerWarning[\"code\"]): void {\n const { line, character } = sf.getLineAndCharacterOfPosition(node.getStart(sf))\n warnings.push({ message, line: line + 1, column: character, code: warnCode })\n }\n\n // ── Static hoisting state ─────────────────────────────────────────────────\n type Hoist = { name: string; text: string }\n const hoists: Hoist[] = []\n let hoistIdx = 0\n let needsTplImport = false\n let needsBindTextImportGlobal = false\n let needsBindDirectImportGlobal = false\n let needsBindImportGlobal = false\n\n /**\n * If `node` is a fully-static JSX element/fragment, register a module-scope\n * hoist for it and return the generated variable name. Otherwise return null.\n */\n function maybeHoist(node: ts.Node): string | null {\n if (\n (ts.isJsxElement(node) || ts.isJsxSelfClosingElement(node) || ts.isJsxFragment(node)) &&\n isStaticJSXNode(node as ts.JsxElement | ts.JsxSelfClosingElement | ts.JsxFragment)\n ) {\n const name = `_$h${hoistIdx++}`\n const text = code.slice(node.getStart(sf), node.getEnd())\n hoists.push({ name, text })\n return name\n }\n return null\n }\n\n function wrap(expr: ts.Expression): void {\n const start = expr.getStart(sf)\n const end = expr.getEnd()\n replacements.push({ start, end, text: `() => ${code.slice(start, end)}` })\n }\n\n /** Try to hoist or wrap an expression, pushing a replacement if needed. */\n function hoistOrWrap(expr: ts.Expression): void {\n const hoistName = maybeHoist(expr)\n if (hoistName) {\n replacements.push({ start: expr.getStart(sf), end: expr.getEnd(), text: hoistName })\n } else if (shouldWrap(expr)) {\n wrap(expr)\n }\n }\n\n // ── walk sub-handlers ───────────────────────────────────────────────────────\n\n /** Try to emit a template for a JsxElement. Returns true if handled. */\n function tryTemplateEmit(node: ts.JsxElement): boolean {\n const elemCount = templateElementCount(node)\n if (elemCount < 1) return false\n const tplCall = buildTemplateCall(node)\n if (!tplCall) return false\n const start = node.getStart(sf)\n const end = node.getEnd()\n const parent = node.parent\n const needsBraces = parent && (ts.isJsxElement(parent) || ts.isJsxFragment(parent))\n replacements.push({ start, end, text: needsBraces ? `{${tplCall}}` : tplCall })\n needsTplImport = true\n return true\n }\n\n /** Emit warnings for common JSX mistakes (e.g. <For> without by). */\n function checkForWarnings(node: ts.JsxElement | ts.JsxSelfClosingElement): void {\n const opening = ts.isJsxElement(node) ? node.openingElement : node\n const tagName = ts.isIdentifier(opening.tagName) ? opening.tagName.text : \"\"\n if (tagName !== \"For\") return\n const hasBy = opening.attributes.properties.some(\n (p) => ts.isJsxAttribute(p) && ts.isIdentifier(p.name) && p.name.text === \"by\",\n )\n if (!hasBy) {\n warn(\n opening.tagName,\n `<For> without a \"by\" prop will use index-based diffing, which is slower and may cause bugs with stateful children. Add by={(item) => item.id} for efficient keyed reconciliation.`,\n \"missing-key-on-for\",\n )\n }\n }\n\n /** Handle a JSX attribute node — wrap or hoist its value if needed. */\n function handleJsxAttribute(node: ts.JsxAttribute): void {\n const name = ts.isIdentifier(node.name) ? node.name.text : \"\"\n const openingEl = node.parent.parent as ts.JsxOpeningElement | ts.JsxSelfClosingElement\n const tagName = ts.isIdentifier(openingEl.tagName) ? openingEl.tagName.text : \"\"\n const isComponentElement =\n tagName.length > 0 && tagName.charAt(0) !== tagName.charAt(0).toLowerCase()\n if (isComponentElement) return\n if (SKIP_PROPS.has(name) || EVENT_RE.test(name)) return\n if (!node.initializer || !ts.isJsxExpression(node.initializer)) return\n const expr = node.initializer.expression\n if (expr) hoistOrWrap(expr)\n }\n\n /** Handle a JSX expression in child position — wrap, hoist, or recurse. */\n function handleJsxExpression(node: ts.JsxExpression): void {\n const expr = node.expression\n if (!expr) return\n const hoistName = maybeHoist(expr)\n if (hoistName) {\n replacements.push({ start: expr.getStart(sf), end: expr.getEnd(), text: hoistName })\n return\n }\n if (shouldWrap(expr)) {\n wrap(expr)\n return\n }\n // Not hoisted, not wrapped (e.g., arrow function in For callback).\n // Recurse into the expression body to find nested JSX elements\n // that should be compiled to _tpl() calls.\n ts.forEachChild(expr, walk)\n }\n\n function walk(node: ts.Node): void {\n if (ts.isJsxElement(node) && tryTemplateEmit(node)) return\n if (ts.isJsxSelfClosingElement(node) || ts.isJsxElement(node)) checkForWarnings(node)\n if (ts.isJsxAttribute(node)) {\n handleJsxAttribute(node)\n return\n }\n if (ts.isJsxExpression(node)) {\n handleJsxExpression(node)\n return\n }\n ts.forEachChild(node, walk)\n }\n\n walk(sf)\n\n if (replacements.length === 0 && hoists.length === 0) return { code, warnings }\n\n // Apply replacements left-to-right via string builder — O(n) single join\n replacements.sort((a, b) => a.start - b.start)\n\n const parts: string[] = []\n let lastPos = 0\n for (const r of replacements) {\n parts.push(code.slice(lastPos, r.start))\n parts.push(r.text)\n lastPos = r.end\n }\n parts.push(code.slice(lastPos))\n let result = parts.join(\"\")\n\n // Prepend module-scope hoisted static VNode declarations\n if (hoists.length > 0) {\n const preamble = hoists.map((h) => `const ${h.name} = /*@__PURE__*/ ${h.text}\\n`).join(\"\")\n result = preamble + result\n }\n\n // Prepend template imports if _tpl() was emitted\n if (needsTplImport) {\n const runtimeDomImports = [\"_tpl\"]\n if (needsBindDirectImportGlobal) runtimeDomImports.push(\"_bindDirect\")\n if (needsBindTextImportGlobal) runtimeDomImports.push(\"_bindText\")\n const reactivityImports = needsBindImportGlobal\n ? `\\nimport { _bind } from \"@pyreon/reactivity\";`\n : \"\"\n result =\n `import { ${runtimeDomImports.join(\", \")} } from \"@pyreon/runtime-dom\";${reactivityImports}\\n` +\n result\n }\n\n return { code: result, usesTemplates: needsTplImport, warnings }\n\n // ── Template emission helpers (closures over sf, code) ──────────────────────\n\n /** Check if a single attribute would prevent template emission. */\n function hasBailAttr(node: ts.JsxElement | ts.JsxSelfClosingElement): boolean {\n for (const attr of jsxAttrs(node)) {\n if (ts.isJsxSpreadAttribute(attr)) return true\n if (ts.isJsxAttribute(attr) && ts.isIdentifier(attr.name) && attr.name.text === \"key\")\n return true\n }\n return false\n }\n\n /**\n * Count template-eligible elements for a single JSX child.\n * Returns 0 for skippable children, -1 for bail, positive for element count.\n */\n function countChildForTemplate(child: ts.JsxChild): number {\n if (ts.isJsxText(child)) return 0\n if (ts.isJsxElement(child) || ts.isJsxSelfClosingElement(child))\n return templateElementCount(child)\n if (ts.isJsxExpression(child)) {\n if (!child.expression) return 0\n return containsJSXInExpr(child.expression) ? -1 : 0\n }\n if (ts.isJsxFragment(child)) return templateFragmentCount(child)\n return -1\n }\n\n /**\n * Count DOM elements in a JSX subtree. Returns -1 if the tree is not\n * eligible for template emission.\n */\n function templateElementCount(node: ts.JsxElement | ts.JsxSelfClosingElement): number {\n const tag = jsxTagName(node)\n if (!tag || !isLowerCase(tag)) return -1\n if (hasBailAttr(node)) return -1\n if (!ts.isJsxElement(node)) return 1\n\n let count = 1\n for (const child of node.children) {\n const c = countChildForTemplate(child)\n if (c === -1) return -1\n count += c\n }\n return count\n }\n\n /** Count template-eligible elements inside a fragment. */\n function templateFragmentCount(frag: ts.JsxFragment): number {\n let count = 0\n for (const child of frag.children) {\n const c = countChildForTemplate(child)\n if (c === -1) return -1\n count += c\n }\n return count\n }\n\n /**\n * Build the complete `_tpl(\"html\", (__root) => { ... })` call string\n * for a template-eligible JSX element tree. Returns null if codegen fails.\n */\n function buildTemplateCall(node: ts.JsxElement | ts.JsxSelfClosingElement): string | null {\n const bindLines: string[] = []\n const disposerNames: string[] = []\n let varIdx = 0\n let dispIdx = 0\n // Reactive expressions that will be combined into a single _bind call\n const reactiveBindExprs: string[] = []\n let needsBindTextImport = false\n let needsBindDirectImport = false\n\n function nextVar(): string {\n return `__e${varIdx++}`\n }\n function nextDisp(): string {\n const name = `__d${dispIdx++}`\n disposerNames.push(name)\n return name\n }\n function nextTextVar(): string {\n return `__t${varIdx++}`\n }\n\n /** Resolve the variable name for an element given its accessor path. */\n function resolveElementVar(accessor: string, hasDynamic: boolean): string {\n if (accessor === \"__root\") return \"__root\"\n if (hasDynamic) {\n const v = nextVar()\n bindLines.push(`const ${v} = ${accessor}`)\n return v\n }\n return accessor\n }\n\n /** Emit bind line for a ref attribute. */\n function emitRef(attr: ts.JsxAttribute, varName: string): void {\n if (!attr.initializer || !ts.isJsxExpression(attr.initializer)) return\n if (!attr.initializer.expression) return\n bindLines.push(`${sliceExpr(attr.initializer.expression)}.current = ${varName}`)\n }\n\n /** Emit event handler bind line — delegated (expando) or addEventListener. */\n function emitEventListener(attr: ts.JsxAttribute, attrName: string, varName: string): void {\n const eventName = (attrName[2] ?? \"\").toLowerCase() + attrName.slice(3)\n if (!attr.initializer || !ts.isJsxExpression(attr.initializer)) return\n if (!attr.initializer.expression) return\n const handler = sliceExpr(attr.initializer.expression)\n if (DELEGATED_EVENTS.has(eventName)) {\n // Delegated: store handler as expando property — container listener picks it up\n bindLines.push(`${varName}.__ev_${eventName} = ${handler}`)\n } else {\n bindLines.push(`${varName}.addEventListener(\"${eventName}\", ${handler})`)\n }\n }\n\n /** Return HTML string for a static attribute expression, or null if not static. */\n function staticAttrToHtml(exprNode: ts.Expression, htmlAttrName: string): string | null {\n if (!isStatic(exprNode)) return null\n if (ts.isStringLiteral(exprNode)) return ` ${htmlAttrName}=\"${escapeHtmlAttr(exprNode.text)}\"`\n if (ts.isNumericLiteral(exprNode)) return ` ${htmlAttrName}=\"${exprNode.text}\"`\n if (exprNode.kind === ts.SyntaxKind.TrueKeyword) return ` ${htmlAttrName}`\n return \"\" // false/null/undefined → omit\n }\n\n /**\n * Try to extract a direct signal reference from an expression.\n * Returns the callee text (e.g. \"count\" or \"row.label\") if the expression\n * is a single call with no arguments, otherwise null.\n */\n function tryDirectSignalRef(exprNode: ts.Expression): string | null {\n let inner = exprNode\n // Unwrap concise arrow: () => expr\n if (ts.isArrowFunction(inner) && !ts.isBlock(inner.body)) {\n inner = inner.body as ts.Expression\n }\n if (!ts.isCallExpression(inner)) return null\n if (inner.arguments.length > 0) return null\n const callee = inner.expression\n if (ts.isIdentifier(callee) || ts.isPropertyAccessExpression(callee)) {\n return sliceExpr(callee)\n }\n return null\n }\n\n /** Unwrap a reactive accessor expression for use inside _bind(). */\n function unwrapAccessor(exprNode: ts.Expression): { expr: string; isReactive: boolean } {\n // Concise arrow: () => value() → unwrap to \"value()\"\n if (ts.isArrowFunction(exprNode) && !ts.isBlock(exprNode.body)) {\n return { expr: sliceExpr(exprNode.body as ts.Expression), isReactive: true }\n }\n // Block-body arrow/function: invoke it\n if (ts.isArrowFunction(exprNode) || ts.isFunctionExpression(exprNode)) {\n return { expr: `(${sliceExpr(exprNode)})()`, isReactive: true }\n }\n return { expr: sliceExpr(exprNode), isReactive: containsCall(exprNode) }\n }\n\n /** Build a setter expression for an attribute. */\n function attrSetter(htmlAttrName: string, varName: string, expr: string): string {\n return htmlAttrName === \"class\"\n ? `${varName}.className = ${expr}`\n : `${varName}.setAttribute(\"${htmlAttrName}\", ${expr})`\n }\n\n /** Emit bind line for a dynamic (non-static) attribute. */\n function emitDynamicAttr(\n _expr: string,\n exprNode: ts.Expression,\n htmlAttrName: string,\n varName: string,\n ): void {\n const { expr, isReactive } = unwrapAccessor(exprNode)\n\n if (!isReactive) {\n bindLines.push(attrSetter(htmlAttrName, varName, expr))\n return\n }\n\n // Direct signal binding for bare signal calls (e.g. class={() => active()})\n const directRef = tryDirectSignalRef(exprNode)\n if (directRef) {\n needsBindDirectImport = true\n const d = nextDisp()\n const updater =\n htmlAttrName === \"class\"\n ? `(v) => { ${varName}.className = v == null ? \"\" : String(v) }`\n : `(v) => { ${varName}.setAttribute(\"${htmlAttrName}\", v == null ? \"\" : String(v)) }`\n bindLines.push(`const ${d} = _bindDirect(${directRef}, ${updater})`)\n return\n }\n\n reactiveBindExprs.push(attrSetter(htmlAttrName, varName, expr))\n }\n\n /** Emit bind line or HTML for an expression attribute value. */\n function emitAttrExpression(\n exprNode: ts.Expression,\n htmlAttrName: string,\n varName: string,\n ): string {\n const staticHtml = staticAttrToHtml(exprNode, htmlAttrName)\n if (staticHtml !== null) return staticHtml\n emitDynamicAttr(sliceExpr(exprNode), exprNode, htmlAttrName, varName)\n return \"\"\n }\n\n /** Emit side-effects for special attrs (ref, event). Returns true if handled. */\n function tryEmitSpecialAttr(attr: ts.JsxAttribute, attrName: string, varName: string): boolean {\n if (attrName === \"ref\") {\n emitRef(attr, varName)\n return true\n }\n if (EVENT_RE.test(attrName)) {\n emitEventListener(attr, attrName, varName)\n return true\n }\n return false\n }\n\n /** Convert an attribute initializer to HTML. Returns empty string for side-effect-only attrs. */\n function attrInitializerToHtml(\n attr: ts.JsxAttribute,\n htmlAttrName: string,\n varName: string,\n ): string {\n if (!attr.initializer) return ` ${htmlAttrName}`\n if (ts.isStringLiteral(attr.initializer))\n return ` ${htmlAttrName}=\"${escapeHtmlAttr(attr.initializer.text)}\"`\n if (ts.isJsxExpression(attr.initializer) && attr.initializer.expression)\n return emitAttrExpression(attr.initializer.expression, htmlAttrName, varName)\n return \"\"\n }\n\n /** Process a single attribute, returning HTML to append. */\n function processOneAttr(attr: ts.JsxAttributeLike, varName: string): string {\n if (!ts.isJsxAttribute(attr)) return \"\"\n const attrName = ts.isIdentifier(attr.name) ? attr.name.text : \"\"\n if (attrName === \"key\") return \"\"\n if (tryEmitSpecialAttr(attr, attrName, varName)) return \"\"\n return attrInitializerToHtml(attr, JSX_TO_HTML_ATTR[attrName] ?? attrName, varName)\n }\n\n /** Process all attributes on an element, returning the HTML attribute string. */\n function processAttrs(el: ts.JsxElement | ts.JsxSelfClosingElement, varName: string): string {\n let htmlAttrs = \"\"\n for (const attr of jsxAttrs(el)) htmlAttrs += processOneAttr(attr, varName)\n return htmlAttrs\n }\n\n /** Emit bind lines for a reactive text expression child. */\n function emitReactiveTextChild(\n expr: string,\n exprNode: ts.Expression,\n varName: string,\n parentRef: string,\n childNodeIdx: number,\n needsPlaceholder: boolean,\n ): string {\n const tVar = nextTextVar()\n bindLines.push(`const ${tVar} = document.createTextNode(\"\")`)\n if (needsPlaceholder) {\n bindLines.push(\n `${parentRef}.replaceChild(${tVar}, ${parentRef}.childNodes[${childNodeIdx}])`,\n )\n } else {\n bindLines.push(`${varName}.appendChild(${tVar})`)\n }\n // Direct signal binding: bypass effect system entirely\n const directRef = tryDirectSignalRef(exprNode)\n if (directRef) {\n needsBindTextImport = true\n const d = nextDisp()\n bindLines.push(`const ${d} = _bindText(${directRef}, ${tVar})`)\n } else {\n // Collected into the combined _bind at the end\n reactiveBindExprs.push(`${tVar}.data = ${expr}`)\n }\n return needsPlaceholder ? \"<!>\" : \"\"\n }\n\n /** Emit bind lines for a static text expression child. */\n function emitStaticTextChild(\n expr: string,\n varName: string,\n parentRef: string,\n childNodeIdx: number,\n needsPlaceholder: boolean,\n ): string {\n if (needsPlaceholder) {\n const tVar = nextTextVar()\n bindLines.push(`const ${tVar} = document.createTextNode(${expr})`)\n bindLines.push(\n `${parentRef}.replaceChild(${tVar}, ${parentRef}.childNodes[${childNodeIdx}])`,\n )\n return \"<!>\"\n }\n bindLines.push(`${varName}.textContent = ${expr}`)\n return \"\"\n }\n\n /** Process a single flat child, returning the HTML contribution or null on failure. */\n function processOneChild(\n child: FlatChild,\n varName: string,\n parentRef: string,\n useMixed: boolean,\n useMultiExpr: boolean,\n childNodeIdx: number,\n ): string | null {\n if (child.kind === \"text\") return escapeHtmlText(child.text)\n if (child.kind === \"element\") {\n const childAccessor = useMixed\n ? `${parentRef}.childNodes[${childNodeIdx}]`\n : `${parentRef}.children[${child.elemIdx}]`\n return processElement(child.node, childAccessor)\n }\n // expression\n const needsPlaceholder = useMixed || useMultiExpr\n const { expr, isReactive } = unwrapAccessor(child.expression)\n if (isReactive) {\n return emitReactiveTextChild(\n expr,\n child.expression,\n varName,\n parentRef,\n childNodeIdx,\n needsPlaceholder,\n )\n }\n return emitStaticTextChild(expr, varName, parentRef, childNodeIdx, needsPlaceholder)\n }\n\n /** Process children of a JsxElement, returning the children HTML. */\n function processChildren(el: ts.JsxElement, varName: string, accessor: string): string | null {\n const flatChildren = flattenChildren(el.children)\n const { useMixed, useMultiExpr } = analyzeChildren(flatChildren)\n const parentRef = accessor === \"__root\" ? \"__root\" : varName\n\n let html = \"\"\n let childNodeIdx = 0\n\n for (const child of flatChildren) {\n const childHtml = processOneChild(\n child,\n varName,\n parentRef,\n useMixed,\n useMultiExpr,\n childNodeIdx,\n )\n if (childHtml === null) return null\n html += childHtml\n childNodeIdx++\n }\n\n return html\n }\n\n /** Process a single DOM element for template emission. Returns the HTML string or null. */\n function processElement(\n el: ts.JsxElement | ts.JsxSelfClosingElement,\n accessor: string,\n ): string | null {\n const tag = jsxTagName(el)\n if (!tag) return null\n\n const varName = resolveElementVar(accessor, elementHasDynamic(el))\n const htmlAttrs = processAttrs(el, varName)\n let html = `<${tag}${htmlAttrs}>`\n\n if (ts.isJsxElement(el)) {\n const childHtml = processChildren(el, varName, accessor)\n if (childHtml === null) return null\n html += childHtml\n }\n\n if (!VOID_ELEMENTS.has(tag)) html += `</${tag}>`\n return html\n }\n\n const html = processElement(node, \"__root\")\n if (html === null) return null\n\n if (needsBindTextImport) needsBindTextImportGlobal = true\n if (needsBindDirectImport) needsBindDirectImportGlobal = true\n\n // Build bind function body\n const escaped = html.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"')\n\n // Emit combined _bind for reactive attribute/text expressions that\n // weren't handled by _bindText. This merges N separate _bind calls into\n // one — saving N-1 closures + deps arrays per template instance.\n // Emit a single combined _bind for all reactive attribute/text expressions\n // that weren't handled by _bindText. Merges N separate _bind calls into one —\n // saving N-1 closures + deps arrays per template instance.\n if (reactiveBindExprs.length > 0) {\n needsBindImportGlobal = true\n const combinedName = nextDisp()\n const combinedBody = reactiveBindExprs.join(\"; \")\n bindLines.push(`const ${combinedName} = _bind(() => { ${combinedBody} })`)\n }\n\n if (bindLines.length === 0 && disposerNames.length === 0) {\n return `_tpl(\"${escaped}\", () => null)`\n }\n\n let body = bindLines.map((l) => ` ${l}`).join(\"\\n\")\n if (disposerNames.length > 0) {\n body += `\\n return () => { ${disposerNames.map((d) => `${d}()`).join(\"; \")} }`\n } else {\n body += \"\\n return null\"\n }\n\n return `_tpl(\"${escaped}\", (__root) => {\\n${body}\\n})`\n }\n\n /** Flat child descriptor for template children processing */\n type FlatChild =\n | { kind: \"text\"; text: string }\n | { kind: \"element\"; node: ts.JsxElement | ts.JsxSelfClosingElement; elemIdx: number }\n | { kind: \"expression\"; expression: ts.Expression }\n\n /** Classify a single JSX child into a FlatChild descriptor. */\n function classifyJsxChild(\n child: ts.JsxChild,\n out: FlatChild[],\n elemIdxRef: { value: number },\n recurse: (kids: ts.NodeArray<ts.JsxChild>) => void,\n ): void {\n if (ts.isJsxText(child)) {\n const trimmed = child.text.replace(/\\n\\s*/g, \"\").trim()\n if (trimmed) out.push({ kind: \"text\", text: trimmed })\n return\n }\n if (ts.isJsxElement(child) || ts.isJsxSelfClosingElement(child)) {\n out.push({ kind: \"element\", node: child, elemIdx: elemIdxRef.value++ })\n return\n }\n if (ts.isJsxExpression(child)) {\n if (child.expression) out.push({ kind: \"expression\", expression: child.expression })\n return\n }\n if (ts.isJsxFragment(child)) recurse(child.children)\n }\n\n /**\n * Flatten JSX children, inlining fragment children and stripping whitespace-only text.\n * Returns a flat array of child descriptors with element indices pre-computed.\n */\n function flattenChildren(children: ts.NodeArray<ts.JsxChild>): FlatChild[] {\n const flatList: FlatChild[] = []\n const elemIdxRef = { value: 0 }\n\n function addChildren(kids: ts.NodeArray<ts.JsxChild>): void {\n for (const child of kids) classifyJsxChild(child, flatList, elemIdxRef, addChildren)\n }\n\n addChildren(children)\n return flatList\n }\n\n /** Analyze flat children to determine indexing strategy. */\n function analyzeChildren(flatChildren: FlatChild[]): {\n useMixed: boolean\n useMultiExpr: boolean\n } {\n const hasElem = flatChildren.some((c) => c.kind === \"element\")\n const hasNonElem = flatChildren.some((c) => c.kind !== \"element\")\n const exprCount = flatChildren.filter((c) => c.kind === \"expression\").length\n return { useMixed: hasElem && hasNonElem, useMultiExpr: exprCount > 1 }\n }\n\n /** Check if a single attribute is dynamic (has ref, event, or non-static expression). */\n function attrIsDynamic(attr: ts.JsxAttributeLike): boolean {\n if (!ts.isJsxAttribute(attr)) return false\n const name = ts.isIdentifier(attr.name) ? attr.name.text : \"\"\n if (name === \"ref\") return true\n if (EVENT_RE.test(name)) return true\n if (!attr.initializer || !ts.isJsxExpression(attr.initializer)) return false\n const expr = attr.initializer.expression\n return expr ? !isStatic(expr) : false\n }\n\n /** Check if an element has any dynamic attributes, events, ref, or expression children */\n function elementHasDynamic(node: ts.JsxElement | ts.JsxSelfClosingElement): boolean {\n if (jsxAttrs(node).some(attrIsDynamic)) return true\n if (ts.isJsxElement(node)) {\n return node.children.some((c) => ts.isJsxExpression(c) && c.expression !== undefined)\n }\n return false\n }\n\n /** Slice expression source from the original code */\n function sliceExpr(expr: ts.Expression): string {\n return code.slice(expr.getStart(sf), expr.getEnd())\n }\n\n /** Get tag name string */\n function jsxTagName(node: ts.JsxElement | ts.JsxSelfClosingElement): string {\n const tag = ts.isJsxElement(node) ? node.openingElement.tagName : node.tagName\n return ts.isIdentifier(tag) ? tag.text : \"\"\n }\n\n /** Get attribute list */\n function jsxAttrs(\n node: ts.JsxElement | ts.JsxSelfClosingElement,\n ): ts.NodeArray<ts.JsxAttributeLike> {\n return ts.isJsxElement(node)\n ? node.openingElement.attributes.properties\n : node.attributes.properties\n }\n}\n\n// ─── Template constants ──────────────────────────────────────────────────────\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\nconst JSX_TO_HTML_ATTR: Record<string, string> = {\n className: \"class\",\n htmlFor: \"for\",\n}\n\nfunction isLowerCase(s: string): boolean {\n return s.length > 0 && s[0] === s[0]?.toLowerCase()\n}\n\n/** Check if an expression subtree contains JSX nodes */\nfunction containsJSXInExpr(node: ts.Node): boolean {\n if (ts.isJsxElement(node) || ts.isJsxSelfClosingElement(node) || ts.isJsxFragment(node))\n return true\n return ts.forEachChild(node, containsJSXInExpr) ?? false\n}\n\nfunction escapeHtmlAttr(s: string): string {\n return s.replace(/&/g, \"&\").replace(/\"/g, \""\")\n}\n\nfunction escapeHtmlText(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\")\n}\n\n// ─── Static JSX analysis ──────────────────────────────────────────────────────\n\ntype StaticJSXNode = ts.JsxElement | ts.JsxSelfClosingElement | ts.JsxFragment\n\nfunction isStaticJSXNode(node: StaticJSXNode): boolean {\n if (ts.isJsxSelfClosingElement(node)) {\n return isStaticAttrs(node.attributes)\n }\n if (ts.isJsxFragment(node)) {\n return node.children.every(isStaticChild)\n }\n // JsxElement\n return isStaticAttrs(node.openingElement.attributes) && node.children.every(isStaticChild)\n}\n\nfunction isStaticAttrs(attrs: ts.JsxAttributes): boolean {\n return attrs.properties.every((prop) => {\n // Spread attribute — always dynamic\n if (!ts.isJsxAttribute(prop)) return false\n // Boolean shorthand: <input disabled />\n if (!prop.initializer) return true\n // String literal: class=\"foo\"\n if (ts.isStringLiteral(prop.initializer)) return true\n // Must be JsxExpression — the only remaining JsxAttributeValue type\n const expr = (prop.initializer as ts.JsxExpression).expression\n return expr ? isStatic(expr) : true\n })\n}\n\nfunction isStaticChild(child: ts.JsxChild): boolean {\n // Plain text content\n if (ts.isJsxText(child)) return true\n // Nested JSX elements\n if (ts.isJsxSelfClosingElement(child)) return isStaticJSXNode(child)\n if (ts.isJsxElement(child)) return isStaticJSXNode(child)\n if (ts.isJsxFragment(child)) return isStaticJSXNode(child)\n // Must be JsxExpression — the only remaining JsxChild type\n const expr = (child as ts.JsxExpression).expression\n return expr ? isStatic(expr) : true\n}\n\n// ─── General helpers ──────────────────────────────────────────────────────────\n\nfunction isStatic(node: ts.Expression): boolean {\n return (\n ts.isStringLiteral(node) ||\n ts.isNumericLiteral(node) ||\n ts.isNoSubstitutionTemplateLiteral(node) ||\n node.kind === ts.SyntaxKind.TrueKeyword ||\n node.kind === ts.SyntaxKind.FalseKeyword ||\n node.kind === ts.SyntaxKind.NullKeyword ||\n node.kind === ts.SyntaxKind.UndefinedKeyword\n )\n}\n\nfunction shouldWrap(node: ts.Expression): boolean {\n // Already a function — user explicitly wrapped or it's a callback\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) return false\n // Static literal — no signals involved\n if (isStatic(node)) return false\n // Only wrap if the expression tree contains a call — signal reads are always\n // function calls (e.g. `count()`, `name()`). Plain identifiers, object literals\n // like `style={{ color: \"red\" }}`, array literals, and member accesses are\n // left as-is to avoid unnecessary reactive wrappers.\n return containsCall(node)\n}\n\nfunction containsCall(node: ts.Node): boolean {\n if (ts.isCallExpression(node)) return true\n if (ts.isTaggedTemplateExpression(node)) return true\n // Don't recurse into nested functions — they're self-contained\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) return false\n return ts.forEachChild(node, containsCall) ?? false\n}\n","/**\n * Project scanner — extracts route, component, and island information from source files.\n */\n\nimport * as fs from \"node:fs\"\nimport * as path from \"node:path\"\n\nexport interface RouteInfo {\n path: string\n name?: string | undefined\n component?: string | undefined\n hasLoader: boolean\n hasGuard: boolean\n params: string[]\n}\n\nexport interface ComponentInfo {\n name: string\n file: string\n hasSignals: boolean\n signalNames: string[]\n props: string[]\n}\n\nexport interface IslandInfo {\n name: string\n file: string\n hydrate: string\n}\n\nexport interface ProjectContext {\n framework: \"pyreon\"\n version: string\n generatedAt: string\n routes: RouteInfo[]\n components: ComponentInfo[]\n islands: IslandInfo[]\n}\n\nexport function generateContext(cwd: string): ProjectContext {\n const files = collectSourceFiles(cwd)\n const version = readVersion(cwd)\n\n return {\n framework: \"pyreon\",\n version,\n generatedAt: new Date().toISOString(),\n routes: extractRoutes(files, cwd),\n components: extractComponents(files, cwd),\n islands: extractIslands(files, cwd),\n }\n}\n\nfunction collectSourceFiles(cwd: string): string[] {\n const results: string[] = []\n const extensions = new Set([\".tsx\", \".jsx\", \".ts\", \".js\"])\n const ignoreDirs = new Set([\"node_modules\", \"dist\", \"lib\", \".pyreon\", \".git\", \"build\"])\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: simple recursive walker\n function walk(dir: string): void {\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true })\n } catch {\n return\n }\n for (const entry of entries) {\n if (entry.name.startsWith(\".\") && entry.isDirectory()) continue\n if (ignoreDirs.has(entry.name) && entry.isDirectory()) continue\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n walk(fullPath)\n } else if (entry.isFile() && extensions.has(path.extname(entry.name))) {\n results.push(fullPath)\n }\n }\n }\n\n walk(cwd)\n return results\n}\n\nfunction extractRoutes(files: string[], _cwd: string): RouteInfo[] {\n const routes: RouteInfo[] = []\n\n for (const file of files) {\n let code: string\n try {\n code = fs.readFileSync(file, \"utf-8\")\n } catch {\n continue\n }\n\n const routeArrayRe =\n /(?:createRouter\\s*\\(\\s*\\[|(?:const|let)\\s+routes\\s*(?::\\s*RouteRecord\\[\\])?\\s*=\\s*\\[)([\\s\\S]*?)\\]/g\n let match: RegExpExecArray | null\n for (match = routeArrayRe.exec(code); match; match = routeArrayRe.exec(code)) {\n const block = match[1] ?? \"\"\n const routeObjRe = /path\\s*:\\s*[\"']([^\"']+)[\"']/g\n let routeMatch: RegExpExecArray | null\n for (routeMatch = routeObjRe.exec(block); routeMatch; routeMatch = routeObjRe.exec(block)) {\n const routePath = routeMatch[1] ?? \"\"\n const surroundingStart = Math.max(0, routeMatch.index - 50)\n const surroundingEnd = Math.min(block.length, routeMatch.index + 200)\n const surrounding = block.slice(surroundingStart, surroundingEnd)\n\n routes.push({\n path: routePath,\n name: surrounding.match(/name\\s*:\\s*[\"']([^\"']+)[\"']/)?.[1],\n hasLoader: /loader\\s*:/.test(surrounding),\n hasGuard: /beforeEnter\\s*:|beforeLeave\\s*:/.test(surrounding),\n params: extractParams(routePath),\n })\n }\n }\n }\n\n return routes\n}\n\nfunction extractComponents(files: string[], cwd: string): ComponentInfo[] {\n const components: ComponentInfo[] = []\n\n for (const file of files) {\n let code: string\n try {\n code = fs.readFileSync(file, \"utf-8\")\n } catch {\n continue\n }\n\n const componentRe =\n /(?:export\\s+)?(?:const|function)\\s+([A-Z]\\w*)\\s*(?::\\s*ComponentFn<[^>]+>\\s*)?=?\\s*\\(?(?:\\s*\\{?\\s*([^)]*?)\\s*\\}?\\s*)?\\)?\\s*(?:=>|{)/g\n let match: RegExpExecArray | null\n\n for (match = componentRe.exec(code); match; match = componentRe.exec(code)) {\n const name = match[1] ?? \"Unknown\"\n const propsStr = match[2] ?? \"\"\n const props = propsStr\n .split(/[,;]/)\n .map((p) => p.trim().replace(/[{}]/g, \"\").trim().split(\":\")[0]?.split(\"=\")[0]?.trim() ?? \"\")\n .filter((p) => p && p !== \"props\")\n\n const bodyStart = match.index + match[0].length\n const body = code.slice(bodyStart, Math.min(code.length, bodyStart + 2000))\n const signalNames: string[] = []\n const signalRe = /(?:const|let)\\s+(\\w+)\\s*=\\s*signal\\s*[<(]/g\n let sigMatch: RegExpExecArray | null\n for (sigMatch = signalRe.exec(body); sigMatch; sigMatch = signalRe.exec(body)) {\n if (sigMatch[1]) signalNames.push(sigMatch[1])\n }\n\n components.push({\n name,\n file: path.relative(cwd, file),\n hasSignals: signalNames.length > 0,\n signalNames,\n props,\n })\n }\n }\n\n return components\n}\n\nfunction extractIslands(files: string[], cwd: string): IslandInfo[] {\n const islands: IslandInfo[] = []\n\n for (const file of files) {\n let code: string\n try {\n code = fs.readFileSync(file, \"utf-8\")\n } catch {\n continue\n }\n\n const islandRe =\n /island\\s*\\(\\s*\\(\\)\\s*=>\\s*import\\(.+?\\)\\s*,\\s*\\{[^}]*name\\s*:\\s*[\"']([^\"']+)[\"'][^}]*?(?:hydrate\\s*:\\s*[\"']([^\"']+)[\"'])?[^}]*\\}/g\n let match: RegExpExecArray | null\n for (match = islandRe.exec(code); match; match = islandRe.exec(code)) {\n if (match[1]) {\n islands.push({\n name: match[1],\n file: path.relative(cwd, file),\n hydrate: match[2] ?? \"load\",\n })\n }\n }\n }\n\n return islands\n}\n\nfunction extractParams(routePath: string): string[] {\n const params: string[] = []\n const paramRe = /:(\\w+)\\??/g\n let match: RegExpExecArray | null\n for (match = paramRe.exec(routePath); match; match = paramRe.exec(routePath)) {\n if (match[1]) params.push(match[1])\n }\n return params\n}\n\nfunction readVersion(cwd: string): string {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(cwd, \"package.json\"), \"utf-8\"))\n const deps: Record<string, unknown> = { ...pkg.dependencies, ...pkg.devDependencies }\n for (const [name, ver] of Object.entries(deps)) {\n if (name.startsWith(\"@pyreon/\") && typeof ver === \"string\") return ver.replace(/^[\\^~]/, \"\")\n }\n return (pkg.version as string) || \"unknown\"\n } catch {\n return \"unknown\"\n }\n}\n","/**\n * React Pattern Interceptor — detects React/Vue patterns in code and provides\n * structured diagnostics with exact fix suggestions for AI-assisted migration.\n *\n * Two modes:\n * - `detectReactPatterns(code)` — returns diagnostics only (non-destructive)\n * - `migrateReactCode(code)` — applies auto-fixes and returns transformed code\n *\n * Designed for three consumers:\n * 1. Compiler pre-pass (warnings during build)\n * 2. CLI `pyreon doctor` (project-wide scanning)\n * 3. MCP server `migrate_react` / `validate` tools (AI agent integration)\n */\n\nimport ts from \"typescript\"\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Types\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport type ReactDiagnosticCode =\n | \"react-import\"\n | \"react-dom-import\"\n | \"react-router-import\"\n | \"use-state\"\n | \"use-effect-mount\"\n | \"use-effect-deps\"\n | \"use-effect-no-deps\"\n | \"use-memo\"\n | \"use-callback\"\n | \"use-ref-dom\"\n | \"use-ref-box\"\n | \"use-reducer\"\n | \"use-layout-effect\"\n | \"memo-wrapper\"\n | \"forward-ref\"\n | \"class-name-prop\"\n | \"html-for-prop\"\n | \"on-change-input\"\n | \"dangerously-set-inner-html\"\n | \"dot-value-signal\"\n | \"array-map-jsx\"\n | \"key-on-for-child\"\n | \"create-context-import\"\n | \"use-context-import\"\n\nexport interface ReactDiagnostic {\n /** Machine-readable code for filtering and programmatic handling */\n code: ReactDiagnosticCode\n /** Human-readable message explaining the issue */\n message: string\n /** 1-based line number */\n line: number\n /** 0-based column */\n column: number\n /** The code as written */\n current: string\n /** The suggested Pyreon equivalent */\n suggested: string\n /** Whether migrateReactCode can auto-fix this */\n fixable: boolean\n}\n\nexport interface MigrationChange {\n type: \"replace\" | \"remove\" | \"add\"\n line: number\n description: string\n}\n\nexport interface MigrationResult {\n /** Transformed source code */\n code: string\n /** All detected patterns (including unfixable ones) */\n diagnostics: ReactDiagnostic[]\n /** Description of changes applied */\n changes: MigrationChange[]\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// React Hook → Pyreon mapping\n// ═══════════════════════════════════════════════════════════════════════════════\n\ninterface HookMapping {\n pyreonFn: string\n pyreonImport: string\n description: string\n example: string\n}\n\nconst _REACT_HOOK_MAP: Record<string, HookMapping> = {\n useState: {\n pyreonFn: \"signal\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Signals are callable functions — read: count(), write: count.set(5)\",\n example:\n \"const count = signal(0)\\n// Read: count() Write: count.set(5) Update: count.update(n => n + 1)\",\n },\n useEffect: {\n pyreonFn: \"effect\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Effects auto-track signal dependencies — no dependency array needed\",\n example: \"effect(() => {\\n console.log(count()) // auto-subscribes to count\\n})\",\n },\n useLayoutEffect: {\n pyreonFn: \"effect\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Pyreon effects run synchronously after signal updates\",\n example: \"effect(() => {\\n // runs sync after signal changes\\n})\",\n },\n useMemo: {\n pyreonFn: \"computed\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Computed values auto-track dependencies and memoize\",\n example: \"const doubled = computed(() => count() * 2)\",\n },\n useCallback: {\n pyreonFn: \"(plain function)\",\n pyreonImport: \"\",\n description:\n \"Not needed — Pyreon components run once, so closures never go stale. Use a plain function\",\n example: \"const handleClick = () => doSomething(count())\",\n },\n useReducer: {\n pyreonFn: \"signal\",\n pyreonImport: \"@pyreon/reactivity\",\n description: \"Use signal with update() for reducer-like patterns\",\n example:\n \"const state = signal(initialState)\\nconst dispatch = (action) => state.update(s => reducer(s, action))\",\n },\n}\n\n/** React import sources → Pyreon equivalents */\nconst IMPORT_REWRITES: Record<string, string | null> = {\n react: \"@pyreon/core\",\n \"react-dom\": \"@pyreon/runtime-dom\",\n \"react-dom/client\": \"@pyreon/runtime-dom\",\n \"react-dom/server\": \"@pyreon/runtime-server\",\n \"react-router\": \"@pyreon/router\",\n \"react-router-dom\": \"@pyreon/router\",\n}\n\n/** React specifiers that map to specific Pyreon imports */\nconst SPECIFIER_REWRITES: Record<string, { name: string; from: string }> = {\n useState: { name: \"signal\", from: \"@pyreon/reactivity\" },\n useEffect: { name: \"effect\", from: \"@pyreon/reactivity\" },\n useLayoutEffect: { name: \"effect\", from: \"@pyreon/reactivity\" },\n useMemo: { name: \"computed\", from: \"@pyreon/reactivity\" },\n useReducer: { name: \"signal\", from: \"@pyreon/reactivity\" },\n useRef: { name: \"signal\", from: \"@pyreon/reactivity\" },\n createContext: { name: \"createContext\", from: \"@pyreon/core\" },\n useContext: { name: \"useContext\", from: \"@pyreon/core\" },\n Fragment: { name: \"Fragment\", from: \"@pyreon/core\" },\n Suspense: { name: \"Suspense\", from: \"@pyreon/core\" },\n lazy: { name: \"lazy\", from: \"@pyreon/core\" },\n memo: { name: \"\", from: \"\" }, // removed, not needed\n forwardRef: { name: \"\", from: \"\" }, // removed, not needed\n createRoot: { name: \"mount\", from: \"@pyreon/runtime-dom\" },\n hydrateRoot: { name: \"hydrateRoot\", from: \"@pyreon/runtime-dom\" },\n // React Router\n useNavigate: { name: \"useRouter\", from: \"@pyreon/router\" },\n useParams: { name: \"useRoute\", from: \"@pyreon/router\" },\n useLocation: { name: \"useRoute\", from: \"@pyreon/router\" },\n Link: { name: \"RouterLink\", from: \"@pyreon/router\" },\n NavLink: { name: \"RouterLink\", from: \"@pyreon/router\" },\n Outlet: { name: \"RouterView\", from: \"@pyreon/router\" },\n useSearchParams: { name: \"useSearchParams\", from: \"@pyreon/router\" },\n}\n\n/** JSX attribute rewrites (React → standard HTML) */\nconst JSX_ATTR_REWRITES: Record<string, string> = {\n className: \"class\",\n htmlFor: \"for\",\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Detection (diagnostic-only, no modifications)\n// ═══════════════════════════════════════════════════════════════════════════════\n\ninterface DetectContext {\n sf: ts.SourceFile\n code: string\n diagnostics: ReactDiagnostic[]\n reactImportedHooks: Set<string>\n}\n\nfunction detectGetNodeText(ctx: DetectContext, node: ts.Node): string {\n return ctx.code.slice(node.getStart(ctx.sf), node.getEnd())\n}\n\nfunction detectDiag(\n ctx: DetectContext,\n node: ts.Node,\n diagCode: ReactDiagnosticCode,\n message: string,\n current: string,\n suggested: string,\n fixable: boolean,\n): void {\n const { line, character } = ctx.sf.getLineAndCharacterOfPosition(node.getStart(ctx.sf))\n ctx.diagnostics.push({\n code: diagCode,\n message,\n line: line + 1,\n column: character,\n current: current.trim(),\n suggested: suggested.trim(),\n fixable,\n })\n}\n\nfunction detectImportDeclaration(ctx: DetectContext, node: ts.ImportDeclaration): void {\n if (!node.moduleSpecifier) return\n const source = (node.moduleSpecifier as ts.StringLiteral).text\n const pyreonSource = IMPORT_REWRITES[source]\n\n if (pyreonSource !== undefined) {\n if (node.importClause?.namedBindings && ts.isNamedImports(node.importClause.namedBindings)) {\n for (const spec of node.importClause.namedBindings.elements) {\n ctx.reactImportedHooks.add(spec.name.text)\n }\n }\n\n const diagCode = source.startsWith(\"react-router\")\n ? \"react-router-import\"\n : source.startsWith(\"react-dom\")\n ? \"react-dom-import\"\n : \"react-import\"\n\n detectDiag(\n ctx,\n node,\n diagCode,\n `Import from '${source}' is a React package. Use Pyreon equivalent.`,\n detectGetNodeText(ctx, node),\n pyreonSource\n ? `import { ... } from \"${pyreonSource}\"`\n : \"Remove this import — not needed in Pyreon\",\n true,\n )\n }\n}\n\nfunction detectUseState(ctx: DetectContext, node: ts.CallExpression): void {\n const parent = node.parent\n if (\n ts.isVariableDeclaration(parent) &&\n parent.name &&\n ts.isArrayBindingPattern(parent.name) &&\n parent.name.elements.length >= 1\n ) {\n const firstEl = parent.name.elements[0]\n const valueName =\n firstEl && ts.isBindingElement(firstEl) ? (firstEl.name as ts.Identifier).text : \"value\"\n const initArg = node.arguments[0] ? detectGetNodeText(ctx, node.arguments[0]) : \"undefined\"\n\n detectDiag(\n ctx,\n node,\n \"use-state\",\n `useState is a React API. In Pyreon, use signal(). Read: ${valueName}(), Write: ${valueName}.set(x)`,\n detectGetNodeText(ctx, parent),\n `${valueName} = signal(${initArg})`,\n true,\n )\n } else {\n detectDiag(\n ctx,\n node,\n \"use-state\",\n \"useState is a React API. In Pyreon, use signal().\",\n detectGetNodeText(ctx, node),\n \"signal(initialValue)\",\n true,\n )\n }\n}\n\nfunction callbackHasCleanup(callbackArg: ts.Expression): boolean {\n if (!ts.isArrowFunction(callbackArg) && !ts.isFunctionExpression(callbackArg)) return false\n const body = callbackArg.body\n if (!ts.isBlock(body)) return false\n for (const stmt of body.statements) {\n if (ts.isReturnStatement(stmt) && stmt.expression) return true\n }\n return false\n}\n\nfunction detectUseEffect(ctx: DetectContext, node: ts.CallExpression): void {\n const hookName = (node.expression as ts.Identifier).text\n const depsArg = node.arguments[1]\n const callbackArg = node.arguments[0]\n\n if (depsArg && ts.isArrayLiteralExpression(depsArg) && depsArg.elements.length === 0) {\n const hasCleanup = callbackArg ? callbackHasCleanup(callbackArg) : false\n\n detectDiag(\n ctx,\n node,\n \"use-effect-mount\",\n `${hookName} with empty deps [] means \"run once on mount\". Use onMount() in Pyreon.`,\n detectGetNodeText(ctx, node),\n hasCleanup\n ? \"onMount(() => {\\n // setup...\\n return () => { /* cleanup */ }\\n})\"\n : \"onMount(() => {\\n // setup...\\n return undefined\\n})\",\n true,\n )\n } else if (depsArg && ts.isArrayLiteralExpression(depsArg)) {\n detectDiag(\n ctx,\n node,\n \"use-effect-deps\",\n `${hookName} with dependency array. In Pyreon, effect() auto-tracks dependencies — no array needed.`,\n detectGetNodeText(ctx, node),\n \"effect(() => {\\n // reads are auto-tracked\\n})\",\n true,\n )\n } else if (!depsArg) {\n detectDiag(\n ctx,\n node,\n \"use-effect-no-deps\",\n `${hookName} with no dependency array. In Pyreon, use effect() — it auto-tracks signal reads.`,\n detectGetNodeText(ctx, node),\n \"effect(() => {\\n // runs when accessed signals change\\n})\",\n true,\n )\n }\n}\n\nfunction detectUseMemo(ctx: DetectContext, node: ts.CallExpression): void {\n const computeFn = node.arguments[0]\n const computeText = computeFn ? detectGetNodeText(ctx, computeFn) : \"() => value\"\n\n detectDiag(\n ctx,\n node,\n \"use-memo\",\n \"useMemo is a React API. In Pyreon, use computed() — dependencies auto-tracked.\",\n detectGetNodeText(ctx, node),\n `computed(${computeText})`,\n true,\n )\n}\n\nfunction detectUseCallback(ctx: DetectContext, node: ts.CallExpression): void {\n const callbackFn = node.arguments[0]\n const callbackText = callbackFn ? detectGetNodeText(ctx, callbackFn) : \"() => {}\"\n\n detectDiag(\n ctx,\n node,\n \"use-callback\",\n \"useCallback is not needed in Pyreon. Components run once, so closures never go stale. Use a plain function.\",\n detectGetNodeText(ctx, node),\n callbackText,\n true,\n )\n}\n\nfunction detectUseRef(ctx: DetectContext, node: ts.CallExpression): void {\n const arg = node.arguments[0]\n const isNullInit =\n arg &&\n (arg.kind === ts.SyntaxKind.NullKeyword || (ts.isIdentifier(arg) && arg.text === \"undefined\"))\n\n if (isNullInit) {\n detectDiag(\n ctx,\n node,\n \"use-ref-dom\",\n \"useRef(null) for DOM refs. In Pyreon, use createRef() from @pyreon/core.\",\n detectGetNodeText(ctx, node),\n \"createRef()\",\n true,\n )\n } else {\n const initText = arg ? detectGetNodeText(ctx, arg) : \"undefined\"\n detectDiag(\n ctx,\n node,\n \"use-ref-box\",\n \"useRef for mutable values. In Pyreon, use signal() — it works the same way but is reactive.\",\n detectGetNodeText(ctx, node),\n `signal(${initText})`,\n true,\n )\n }\n}\n\nfunction detectUseReducer(ctx: DetectContext, node: ts.CallExpression): void {\n detectDiag(\n ctx,\n node,\n \"use-reducer\",\n \"useReducer is a React API. In Pyreon, use signal() with update() for reducer patterns.\",\n detectGetNodeText(ctx, node),\n \"const state = signal(initialState)\\nconst dispatch = (action) => state.update(s => reducer(s, action))\",\n false,\n )\n}\n\nfunction isCallToReactDot(callee: ts.Expression, methodName: string): boolean {\n return (\n ts.isPropertyAccessExpression(callee) &&\n ts.isIdentifier(callee.expression) &&\n callee.expression.text === \"React\" &&\n callee.name.text === methodName\n )\n}\n\nfunction detectMemoWrapper(ctx: DetectContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isMemo =\n (ts.isIdentifier(callee) && callee.text === \"memo\") || isCallToReactDot(callee, \"memo\")\n\n if (isMemo) {\n const inner = node.arguments[0]\n const innerText = inner ? detectGetNodeText(ctx, inner) : \"Component\"\n\n detectDiag(\n ctx,\n node,\n \"memo-wrapper\",\n \"memo() is not needed in Pyreon. Components run once — only signals trigger updates, not re-renders.\",\n detectGetNodeText(ctx, node),\n innerText,\n true,\n )\n }\n}\n\nfunction detectForwardRef(ctx: DetectContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isForwardRef =\n (ts.isIdentifier(callee) && callee.text === \"forwardRef\") ||\n isCallToReactDot(callee, \"forwardRef\")\n\n if (isForwardRef) {\n detectDiag(\n ctx,\n node,\n \"forward-ref\",\n \"forwardRef is not needed in Pyreon. Pass ref as a regular prop.\",\n detectGetNodeText(ctx, node),\n \"// Just pass ref as a prop:\\nconst MyInput = (props) => <input ref={props.ref} />\",\n true,\n )\n }\n}\n\nfunction detectJsxAttributes(ctx: DetectContext, node: ts.JsxAttribute): void {\n const attrName = (node.name as ts.Identifier).text\n\n if (attrName in JSX_ATTR_REWRITES) {\n const htmlAttr = JSX_ATTR_REWRITES[attrName] as string\n detectDiag(\n ctx,\n node,\n attrName === \"className\" ? \"class-name-prop\" : \"html-for-prop\",\n `'${attrName}' is a React JSX attribute. Use '${htmlAttr}' in Pyreon (standard HTML).`,\n detectGetNodeText(ctx, node),\n detectGetNodeText(ctx, node).replace(attrName, htmlAttr),\n true,\n )\n }\n\n if (attrName === \"onChange\") {\n const jsxElement = findParentJsxElement(node)\n if (jsxElement) {\n const tagName = getJsxTagName(jsxElement)\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n detectDiag(\n ctx,\n node,\n \"on-change-input\",\n `onChange on <${tagName}> fires on blur in Pyreon (native DOM behavior). For keypress-by-keypress updates, use onInput.`,\n detectGetNodeText(ctx, node),\n detectGetNodeText(ctx, node).replace(\"onChange\", \"onInput\"),\n true,\n )\n }\n }\n }\n\n if (attrName === \"dangerouslySetInnerHTML\") {\n detectDiag(\n ctx,\n node,\n \"dangerously-set-inner-html\",\n \"dangerouslySetInnerHTML is React-specific. Use innerHTML prop in Pyreon.\",\n detectGetNodeText(ctx, node),\n \"innerHTML={htmlString}\",\n true,\n )\n }\n}\n\nfunction detectDotValueSignal(ctx: DetectContext, node: ts.PropertyAccessExpression): void {\n const varName = (node.expression as ts.Identifier).text\n const parent = node.parent\n if (ts.isBinaryExpression(parent) && parent.left === node) {\n detectDiag(\n ctx,\n node,\n \"dot-value-signal\",\n `'${varName}.value' looks like a Vue ref pattern. Pyreon signals are callable functions. Use ${varName}.set(x) to write.`,\n detectGetNodeText(ctx, parent),\n `${varName}.set(${detectGetNodeText(ctx, parent.right)})`,\n false,\n )\n }\n}\n\nfunction detectArrayMapJsx(ctx: DetectContext, node: ts.CallExpression): void {\n const parent = node.parent\n if (ts.isJsxExpression(parent)) {\n const arrayExpr = detectGetNodeText(\n ctx,\n (node.expression as ts.PropertyAccessExpression).expression,\n )\n const mapCallback = node.arguments[0]\n const mapCallbackText = mapCallback\n ? detectGetNodeText(ctx, mapCallback)\n : \"item => <li>{item}</li>\"\n\n detectDiag(\n ctx,\n node,\n \"array-map-jsx\",\n \"Array.map() in JSX is not reactive in Pyreon. Use <For> for efficient keyed list rendering.\",\n detectGetNodeText(ctx, node),\n `<For each={${arrayExpr}} by={item => item.id}>\\n {${mapCallbackText}}\\n</For>`,\n false,\n )\n }\n}\n\nfunction isCallToHook(node: ts.Node, hookName: string): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === hookName\n )\n}\n\nfunction isCallToEffectHook(node: ts.Node): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n (node.expression.text === \"useEffect\" || node.expression.text === \"useLayoutEffect\")\n )\n}\n\nfunction isMapCallExpression(node: ts.Node): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n ts.isIdentifier(node.expression.name) &&\n node.expression.name.text === \"map\"\n )\n}\n\nfunction isDotValueAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n return (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === \"value\" &&\n ts.isIdentifier(node.expression)\n )\n}\n\nfunction detectVisitNode(ctx: DetectContext, node: ts.Node): void {\n if (ts.isImportDeclaration(node)) detectImportDeclaration(ctx, node)\n if (isCallToHook(node, \"useState\")) detectUseState(ctx, node)\n if (isCallToEffectHook(node)) detectUseEffect(ctx, node)\n if (isCallToHook(node, \"useMemo\")) detectUseMemo(ctx, node)\n if (isCallToHook(node, \"useCallback\")) detectUseCallback(ctx, node)\n if (isCallToHook(node, \"useRef\")) detectUseRef(ctx, node)\n if (isCallToHook(node, \"useReducer\")) detectUseReducer(ctx, node)\n if (ts.isCallExpression(node)) detectMemoWrapper(ctx, node)\n if (ts.isCallExpression(node)) detectForwardRef(ctx, node)\n if (ts.isJsxAttribute(node) && ts.isIdentifier(node.name)) detectJsxAttributes(ctx, node)\n if (isDotValueAccess(node)) detectDotValueSignal(ctx, node)\n if (isMapCallExpression(node)) detectArrayMapJsx(ctx, node)\n}\n\nfunction detectVisit(ctx: DetectContext, node: ts.Node): void {\n ts.forEachChild(node, (child) => {\n detectVisitNode(ctx, child)\n detectVisit(ctx, child)\n })\n}\n\nexport function detectReactPatterns(code: string, filename = \"input.tsx\"): ReactDiagnostic[] {\n const sf = ts.createSourceFile(filename, code, ts.ScriptTarget.ESNext, true, ts.ScriptKind.TSX)\n const ctx: DetectContext = {\n sf,\n code,\n diagnostics: [],\n reactImportedHooks: new Set<string>(),\n }\n\n detectVisit(ctx, sf)\n return ctx.diagnostics\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Migration (detection + auto-fix)\n// ═══════════════════════════════════════════════════════════════════════════════\n\ntype Replacement = { start: number; end: number; text: string }\n\ninterface MigrateContext {\n sf: ts.SourceFile\n code: string\n replacements: Replacement[]\n changes: MigrationChange[]\n pyreonImports: Map<string, Set<string>>\n importsToRemove: Set<ts.ImportDeclaration>\n specifierRewrites: Map<ts.ImportSpecifier, { name: string; from: string }>\n}\n\nfunction migrateAddImport(ctx: MigrateContext, source: string, specifier: string): void {\n if (!source || !specifier) return\n let specs = ctx.pyreonImports.get(source)\n if (!specs) {\n specs = new Set()\n ctx.pyreonImports.set(source, specs)\n }\n specs.add(specifier)\n}\n\nfunction migrateReplace(ctx: MigrateContext, node: ts.Node, text: string): void {\n ctx.replacements.push({ start: node.getStart(ctx.sf), end: node.getEnd(), text })\n}\n\nfunction migrateGetNodeText(ctx: MigrateContext, node: ts.Node): string {\n return ctx.code.slice(node.getStart(ctx.sf), node.getEnd())\n}\n\nfunction migrateGetLine(ctx: MigrateContext, node: ts.Node): number {\n return ctx.sf.getLineAndCharacterOfPosition(node.getStart(ctx.sf)).line + 1\n}\n\nfunction migrateImportDeclaration(ctx: MigrateContext, node: ts.ImportDeclaration): void {\n if (!node.moduleSpecifier) return\n const source = (node.moduleSpecifier as ts.StringLiteral).text\n if (!(source in IMPORT_REWRITES)) return\n\n if (node.importClause?.namedBindings && ts.isNamedImports(node.importClause.namedBindings)) {\n for (const spec of node.importClause.namedBindings.elements) {\n const name = spec.name.text\n const rewrite = SPECIFIER_REWRITES[name]\n if (rewrite) {\n if (rewrite.name) {\n migrateAddImport(ctx, rewrite.from, rewrite.name)\n }\n ctx.specifierRewrites.set(spec, rewrite)\n }\n }\n }\n ctx.importsToRemove.add(node)\n}\n\nfunction migrateUseState(ctx: MigrateContext, node: ts.CallExpression): void {\n const parent = node.parent\n if (\n ts.isVariableDeclaration(parent) &&\n parent.name &&\n ts.isArrayBindingPattern(parent.name) &&\n parent.name.elements.length >= 1\n ) {\n const firstEl = parent.name.elements[0]\n const valueName =\n firstEl && ts.isBindingElement(firstEl) ? (firstEl.name as ts.Identifier).text : \"value\"\n const initArg = node.arguments[0] ? migrateGetNodeText(ctx, node.arguments[0]) : \"undefined\"\n\n const declStart = parent.getStart(ctx.sf)\n const declEnd = parent.getEnd()\n ctx.replacements.push({\n start: declStart,\n end: declEnd,\n text: `${valueName} = signal(${initArg})`,\n })\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"signal\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `useState → signal: ${valueName}`,\n })\n }\n}\n\nfunction migrateUseEffect(ctx: MigrateContext, node: ts.CallExpression): void {\n const depsArg = node.arguments[1]\n const callbackArg = node.arguments[0]\n const hookName = (node.expression as ts.Identifier).text\n\n if (\n depsArg &&\n ts.isArrayLiteralExpression(depsArg) &&\n depsArg.elements.length === 0 &&\n callbackArg\n ) {\n const callbackText = migrateGetNodeText(ctx, callbackArg)\n migrateReplace(ctx, node, `onMount(${callbackText})`)\n migrateAddImport(ctx, \"@pyreon/core\", \"onMount\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `${hookName}(fn, []) → onMount(fn)`,\n })\n } else if (callbackArg) {\n const callbackText = migrateGetNodeText(ctx, callbackArg)\n migrateReplace(ctx, node, `effect(${callbackText})`)\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"effect\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `${hookName} → effect (auto-tracks deps)`,\n })\n }\n}\n\nfunction migrateUseMemo(ctx: MigrateContext, node: ts.CallExpression): void {\n const computeFn = node.arguments[0]\n if (computeFn) {\n migrateReplace(ctx, node, `computed(${migrateGetNodeText(ctx, computeFn)})`)\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"computed\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useMemo → computed (auto-tracks deps)\",\n })\n }\n}\n\nfunction migrateUseCallback(ctx: MigrateContext, node: ts.CallExpression): void {\n const callbackFn = node.arguments[0]\n if (callbackFn) {\n migrateReplace(ctx, node, migrateGetNodeText(ctx, callbackFn))\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useCallback → plain function (not needed in Pyreon)\",\n })\n }\n}\n\nfunction migrateUseRef(ctx: MigrateContext, node: ts.CallExpression): void {\n const arg = node.arguments[0]\n const isNullInit =\n arg &&\n (arg.kind === ts.SyntaxKind.NullKeyword || (ts.isIdentifier(arg) && arg.text === \"undefined\"))\n\n if (isNullInit || !arg) {\n migrateReplace(ctx, node, \"createRef()\")\n migrateAddImport(ctx, \"@pyreon/core\", \"createRef\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useRef(null) → createRef()\",\n })\n } else {\n migrateReplace(ctx, node, `signal(${migrateGetNodeText(ctx, arg)})`)\n migrateAddImport(ctx, \"@pyreon/reactivity\", \"signal\")\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"useRef(value) → signal(value)\",\n })\n }\n}\n\nfunction migrateMemoWrapper(ctx: MigrateContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isMemo =\n (ts.isIdentifier(callee) && callee.text === \"memo\") || isCallToReactDot(callee, \"memo\")\n\n if (isMemo && node.arguments[0]) {\n migrateReplace(ctx, node, migrateGetNodeText(ctx, node.arguments[0]))\n ctx.changes.push({\n type: \"remove\",\n line: migrateGetLine(ctx, node),\n description: \"Removed memo() wrapper (not needed in Pyreon)\",\n })\n }\n}\n\nfunction migrateForwardRef(ctx: MigrateContext, node: ts.CallExpression): void {\n const callee = node.expression\n const isForwardRef =\n (ts.isIdentifier(callee) && callee.text === \"forwardRef\") ||\n isCallToReactDot(callee, \"forwardRef\")\n\n if (isForwardRef && node.arguments[0]) {\n migrateReplace(ctx, node, migrateGetNodeText(ctx, node.arguments[0]))\n ctx.changes.push({\n type: \"remove\",\n line: migrateGetLine(ctx, node),\n description: \"Removed forwardRef wrapper (pass ref as normal prop in Pyreon)\",\n })\n }\n}\n\nfunction migrateJsxAttributes(ctx: MigrateContext, node: ts.JsxAttribute): void {\n const attrName = (node.name as ts.Identifier).text\n\n if (attrName in JSX_ATTR_REWRITES) {\n const htmlAttr = JSX_ATTR_REWRITES[attrName] as string\n ctx.replacements.push({\n start: node.name.getStart(ctx.sf),\n end: node.name.getEnd(),\n text: htmlAttr,\n })\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `${attrName} → ${htmlAttr}`,\n })\n }\n\n if (attrName === \"onChange\") {\n const jsxElement = findParentJsxElement(node)\n if (jsxElement) {\n const tagName = getJsxTagName(jsxElement)\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n ctx.replacements.push({\n start: node.name.getStart(ctx.sf),\n end: node.name.getEnd(),\n text: \"onInput\",\n })\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: `onChange on <${tagName}> → onInput (native DOM events)`,\n })\n }\n }\n }\n\n if (attrName === \"dangerouslySetInnerHTML\") {\n migrateDangerouslySetInnerHTML(ctx, node)\n }\n}\n\nfunction migrateDangerouslySetInnerHTML(ctx: MigrateContext, node: ts.JsxAttribute): void {\n if (!node.initializer || !ts.isJsxExpression(node.initializer) || !node.initializer.expression) {\n return\n }\n const expr = node.initializer.expression\n if (!ts.isObjectLiteralExpression(expr)) return\n\n const htmlProp = expr.properties.find(\n (p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === \"__html\",\n ) as ts.PropertyAssignment | undefined\n\n if (htmlProp) {\n const valueText = migrateGetNodeText(ctx, htmlProp.initializer)\n migrateReplace(ctx, node, `innerHTML={${valueText}}`)\n ctx.changes.push({\n type: \"replace\",\n line: migrateGetLine(ctx, node),\n description: \"dangerouslySetInnerHTML → innerHTML\",\n })\n }\n}\n\nfunction applyReplacements(code: string, ctx: MigrateContext): string {\n // Remove React import declarations\n for (const imp of ctx.importsToRemove) {\n ctx.replacements.push({ start: imp.getStart(ctx.sf), end: imp.getEnd(), text: \"\" })\n ctx.changes.push({\n type: \"remove\",\n line: ctx.sf.getLineAndCharacterOfPosition(imp.getStart(ctx.sf)).line + 1,\n description: \"Removed React import\",\n })\n }\n\n // Sort descending for dedup (outermost replacements win over inner overlapping ones)\n ctx.replacements.sort((a, b) => b.start - a.start)\n\n // Deduplicate overlapping replacements (keep the outermost / first added)\n const applied = new Set<string>()\n const deduped: Replacement[] = []\n for (const r of ctx.replacements) {\n const key = `${r.start}:${r.end}`\n let overlaps = false\n for (const d of deduped) {\n if (r.start < d.end && r.end > d.start) {\n overlaps = true\n break\n }\n }\n if (!overlaps && !applied.has(key)) {\n applied.add(key)\n deduped.push(r)\n }\n }\n\n // Re-sort ascending for string builder — O(n) single join\n deduped.sort((a, b) => a.start - b.start)\n const parts: string[] = []\n let lastPos = 0\n for (const r of deduped) {\n parts.push(code.slice(lastPos, r.start))\n parts.push(r.text)\n lastPos = r.end\n }\n parts.push(code.slice(lastPos))\n return parts.join(\"\")\n}\n\nfunction insertPyreonImports(code: string, pyreonImports: Map<string, Set<string>>): string {\n if (pyreonImports.size === 0) return code\n\n const importLines: string[] = []\n const sorted = [...pyreonImports.entries()].sort(([a], [b]) => a.localeCompare(b))\n for (const [source, specs] of sorted) {\n const specList = [...specs].sort().join(\", \")\n importLines.push(`import { ${specList} } from \"${source}\"`)\n }\n const importBlock = importLines.join(\"\\n\")\n\n const lastImportEnd = findLastImportEnd(code)\n if (lastImportEnd > 0) {\n return `${code.slice(0, lastImportEnd)}\\n${importBlock}${code.slice(lastImportEnd)}`\n }\n return `${importBlock}\\n\\n${code}`\n}\n\nfunction migrateVisitNode(ctx: MigrateContext, node: ts.Node): void {\n if (ts.isImportDeclaration(node)) migrateImportDeclaration(ctx, node)\n if (isCallToHook(node, \"useState\")) migrateUseState(ctx, node)\n if (isCallToEffectHook(node)) migrateUseEffect(ctx, node)\n if (isCallToHook(node, \"useMemo\")) migrateUseMemo(ctx, node)\n if (isCallToHook(node, \"useCallback\")) migrateUseCallback(ctx, node)\n if (isCallToHook(node, \"useRef\")) migrateUseRef(ctx, node)\n if (ts.isCallExpression(node)) migrateMemoWrapper(ctx, node)\n if (ts.isCallExpression(node)) migrateForwardRef(ctx, node)\n if (ts.isJsxAttribute(node) && ts.isIdentifier(node.name)) migrateJsxAttributes(ctx, node)\n}\n\nfunction migrateVisit(ctx: MigrateContext, node: ts.Node): void {\n ts.forEachChild(node, (child) => {\n migrateVisitNode(ctx, child)\n migrateVisit(ctx, child)\n })\n}\n\nexport function migrateReactCode(code: string, filename = \"input.tsx\"): MigrationResult {\n const sf = ts.createSourceFile(filename, code, ts.ScriptTarget.ESNext, true, ts.ScriptKind.TSX)\n const diagnostics = detectReactPatterns(code, filename)\n\n const ctx: MigrateContext = {\n sf,\n code,\n replacements: [],\n changes: [],\n pyreonImports: new Map(),\n importsToRemove: new Set(),\n specifierRewrites: new Map(),\n }\n\n migrateVisit(ctx, sf)\n\n let result = applyReplacements(code, ctx)\n result = insertPyreonImports(result, ctx.pyreonImports)\n\n // Clean up empty lines from removed imports\n result = result.replace(/\\n{3,}/g, \"\\n\\n\")\n\n return { code: result, diagnostics, changes: ctx.changes }\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Helpers\n// ═══════════════════════════════════════════════════════════════════════════════\n\nfunction findParentJsxElement(\n node: ts.Node,\n): ts.JsxOpeningElement | ts.JsxSelfClosingElement | null {\n let current = node.parent\n while (current) {\n if (ts.isJsxOpeningElement(current) || ts.isJsxSelfClosingElement(current)) {\n return current\n }\n // Don't cross component boundaries\n if (ts.isJsxElement(current)) {\n return current.openingElement\n }\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n return null\n }\n current = current.parent\n }\n return null\n}\n\nfunction getJsxTagName(node: ts.JsxOpeningElement | ts.JsxSelfClosingElement): string {\n const tagName = node.tagName\n if (ts.isIdentifier(tagName)) {\n return tagName.text\n }\n return \"\"\n}\n\nfunction findLastImportEnd(code: string): number {\n const importRe = /^import\\s.+$/gm\n let lastEnd = 0\n let match: RegExpExecArray | null\n while (true) {\n match = importRe.exec(code)\n if (!match) break\n lastEnd = match.index + match[0].length\n }\n return lastEnd\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Quick scan (regex-based, for fast pre-filtering)\n// ═══════════════════════════════════════════════════════════════════════════════\n\n/** Fast regex check — returns true if code likely contains React patterns worth analyzing */\nexport function hasReactPatterns(code: string): boolean {\n return (\n /\\bfrom\\s+['\"]react/.test(code) ||\n /\\bfrom\\s+['\"]react-dom/.test(code) ||\n /\\bfrom\\s+['\"]react-router/.test(code) ||\n /\\buseState\\s*[<(]/.test(code) ||\n /\\buseEffect\\s*\\(/.test(code) ||\n /\\buseMemo\\s*\\(/.test(code) ||\n /\\buseCallback\\s*\\(/.test(code) ||\n /\\buseRef\\s*[<(]/.test(code) ||\n /\\buseReducer\\s*[<(]/.test(code) ||\n /\\bReact\\.memo\\b/.test(code) ||\n /\\bforwardRef\\s*[<(]/.test(code) ||\n /\\bclassName[=\\s]/.test(code) ||\n /\\bhtmlFor[=\\s]/.test(code) ||\n /\\.value\\s*=/.test(code)\n )\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// Error pattern database (for MCP diagnose tool)\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport interface ErrorDiagnosis {\n cause: string\n fix: string\n fixCode?: string | undefined\n related?: string | undefined\n}\n\ninterface ErrorPattern {\n pattern: RegExp\n diagnose: (match: RegExpMatchArray) => ErrorDiagnosis\n}\n\nconst ERROR_PATTERNS: ErrorPattern[] = [\n {\n pattern: /Cannot read properties of undefined \\(reading '(set|update|peek|subscribe)'\\)/,\n diagnose: (m) => ({\n cause: `Calling .${m[1]}() on undefined. The signal variable is likely out of scope, misspelled, or not yet initialized.`,\n fix: \"Check that the signal is defined and in scope. Signals must be created with signal() before use.\",\n fixCode: `const mySignal = signal(initialValue)\\nmySignal.${m[1]}(newValue)`,\n }),\n },\n {\n pattern: /(\\w+) is not a function/,\n diagnose: (m) => ({\n cause: `'${m[1]}' is not callable. If this is a signal, you need to call it: ${m[1]}()`,\n fix: \"Pyreon signals are callable functions. Read: signal(), Write: signal.set(value)\",\n fixCode: `// Read value:\\nconst value = ${m[1]}()\\n// Set value:\\n${m[1]}.set(newValue)`,\n }),\n },\n {\n pattern: /Cannot find module '(@pyreon\\/\\w[\\w-]*)'/,\n diagnose: (m) => ({\n cause: `Package ${m[1]} is not installed.`,\n fix: `Run: bun add ${m[1]}`,\n fixCode: `bun add ${m[1]}`,\n }),\n },\n {\n pattern: /Cannot find module 'react'/,\n diagnose: () => ({\n cause: \"Importing from 'react' in a Pyreon project.\",\n fix: \"Replace React imports with Pyreon equivalents.\",\n fixCode:\n '// Instead of:\\nimport { useState } from \"react\"\\n// Use:\\nimport { signal } from \"@pyreon/reactivity\"',\n }),\n },\n {\n pattern: /Property '(\\w+)' does not exist on type 'Signal<\\w+>'/,\n diagnose: (m) => ({\n cause: `Accessing .${m[1]} on a signal. Pyreon signals don't have a .${m[1]} property.`,\n fix:\n m[1] === \"value\"\n ? \"Pyreon signals are callable functions, not .value getters. Call signal() to read, signal.set() to write.\"\n : `Signals have these methods: .set(), .update(), .peek(), .subscribe(). '${m[1]}' is not one of them.`,\n fixCode:\n m[1] === \"value\" ? \"// Read: mySignal()\\n// Write: mySignal.set(newValue)\" : undefined,\n }),\n },\n {\n pattern: /Type '(\\w+)' is not assignable to type 'VNode'/,\n diagnose: (m) => ({\n cause: `Component returned ${m[1]} instead of VNode. Components must return JSX, null, or a string.`,\n fix: \"Make sure your component returns a JSX element, null, or a string.\",\n fixCode: \"const MyComponent = (props) => {\\n return <div>{props.children}</div>\\n}\",\n }),\n },\n {\n pattern: /onMount callback must return/,\n diagnose: () => ({\n cause: \"onMount expects a return of CleanupFn | undefined, not void.\",\n fix: \"Return undefined explicitly, or return a cleanup function.\",\n fixCode: \"onMount(() => {\\n // setup code\\n return undefined\\n})\",\n }),\n },\n {\n pattern: /Expected 'by' prop on <For>/,\n diagnose: () => ({\n cause: \"<For> requires a 'by' prop for efficient keyed reconciliation.\",\n fix: \"Add a by prop that returns a unique key for each item.\",\n fixCode:\n \"<For each={items()} by={item => item.id}>\\n {item => <li>{item.name}</li>}\\n</For>\",\n }),\n },\n {\n pattern: /useHook.*outside.*component/i,\n diagnose: () => ({\n cause:\n \"Hook called outside a component function. Pyreon hooks must be called during component setup.\",\n fix: \"Move the hook call inside a component function body.\",\n }),\n },\n {\n pattern: /Hydration mismatch/,\n diagnose: () => ({\n cause: \"Server-rendered HTML doesn't match client-rendered output.\",\n fix: \"Ensure SSR and client render the same initial content. Check for browser-only APIs (window, document) in SSR code.\",\n related: \"Use typeof window !== 'undefined' checks or onMount() for client-only code.\",\n }),\n },\n]\n\n/** Diagnose an error message and return structured fix information */\nexport function diagnoseError(error: string): ErrorDiagnosis | null {\n for (const { pattern, diagnose } of ERROR_PATTERNS) {\n const match = error.match(pattern)\n if (match) {\n return diagnose(match)\n }\n }\n return null\n}\n"],"mappings":"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"}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -166,9 +166,16 @@ function transformJSX(code, filename = "input.tsx") {
|
|
|
166
166
|
code,
|
|
167
167
|
warnings
|
|
168
168
|
};
|
|
169
|
-
replacements.sort((a, b) =>
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
replacements.sort((a, b) => a.start - b.start);
|
|
170
|
+
const parts = [];
|
|
171
|
+
let lastPos = 0;
|
|
172
|
+
for (const r of replacements) {
|
|
173
|
+
parts.push(code.slice(lastPos, r.start));
|
|
174
|
+
parts.push(r.text);
|
|
175
|
+
lastPos = r.end;
|
|
176
|
+
}
|
|
177
|
+
parts.push(code.slice(lastPos));
|
|
178
|
+
let result = parts.join("");
|
|
172
179
|
if (hoists.length > 0) result = hoists.map(h => `const ${h.name} = /*@__PURE__*/ ${h.text}\n`).join("") + result;
|
|
173
180
|
if (needsTplImport) {
|
|
174
181
|
const runtimeDomImports = ["_tpl"];
|
|
@@ -1136,9 +1143,16 @@ function applyReplacements(code, ctx) {
|
|
|
1136
1143
|
deduped.push(r);
|
|
1137
1144
|
}
|
|
1138
1145
|
}
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1146
|
+
deduped.sort((a, b) => a.start - b.start);
|
|
1147
|
+
const parts = [];
|
|
1148
|
+
let lastPos = 0;
|
|
1149
|
+
for (const r of deduped) {
|
|
1150
|
+
parts.push(code.slice(lastPos, r.start));
|
|
1151
|
+
parts.push(r.text);
|
|
1152
|
+
lastPos = r.end;
|
|
1153
|
+
}
|
|
1154
|
+
parts.push(code.slice(lastPos));
|
|
1155
|
+
return parts.join("");
|
|
1142
1156
|
}
|
|
1143
1157
|
function insertPyreonImports(code, pyreonImports) {
|
|
1144
1158
|
if (pyreonImports.size === 0) return code;
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/jsx.ts","../../../src/project-scanner.ts","../../../src/react-intercept.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/jsx.ts","../../../src/project-scanner.ts","../../../src/react-intercept.ts"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/jsx.ts
CHANGED
|
@@ -234,13 +234,18 @@ export function transformJSX(code: string, filename = "input.tsx"): TransformRes
|
|
|
234
234
|
|
|
235
235
|
if (replacements.length === 0 && hoists.length === 0) return { code, warnings }
|
|
236
236
|
|
|
237
|
-
// Apply replacements
|
|
238
|
-
replacements.sort((a, b) =>
|
|
237
|
+
// Apply replacements left-to-right via string builder — O(n) single join
|
|
238
|
+
replacements.sort((a, b) => a.start - b.start)
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
const parts: string[] = []
|
|
241
|
+
let lastPos = 0
|
|
241
242
|
for (const r of replacements) {
|
|
242
|
-
|
|
243
|
+
parts.push(code.slice(lastPos, r.start))
|
|
244
|
+
parts.push(r.text)
|
|
245
|
+
lastPos = r.end
|
|
243
246
|
}
|
|
247
|
+
parts.push(code.slice(lastPos))
|
|
248
|
+
let result = parts.join("")
|
|
244
249
|
|
|
245
250
|
// Prepend module-scope hoisted static VNode declarations
|
|
246
251
|
if (hoists.length > 0) {
|
package/src/react-intercept.ts
CHANGED
|
@@ -877,7 +877,7 @@ function applyReplacements(code: string, ctx: MigrateContext): string {
|
|
|
877
877
|
})
|
|
878
878
|
}
|
|
879
879
|
|
|
880
|
-
// Sort
|
|
880
|
+
// Sort descending for dedup (outermost replacements win over inner overlapping ones)
|
|
881
881
|
ctx.replacements.sort((a, b) => b.start - a.start)
|
|
882
882
|
|
|
883
883
|
// Deduplicate overlapping replacements (keep the outermost / first added)
|
|
@@ -898,11 +898,17 @@ function applyReplacements(code: string, ctx: MigrateContext): string {
|
|
|
898
898
|
}
|
|
899
899
|
}
|
|
900
900
|
|
|
901
|
-
|
|
901
|
+
// Re-sort ascending for string builder — O(n) single join
|
|
902
|
+
deduped.sort((a, b) => a.start - b.start)
|
|
903
|
+
const parts: string[] = []
|
|
904
|
+
let lastPos = 0
|
|
902
905
|
for (const r of deduped) {
|
|
903
|
-
|
|
906
|
+
parts.push(code.slice(lastPos, r.start))
|
|
907
|
+
parts.push(r.text)
|
|
908
|
+
lastPos = r.end
|
|
904
909
|
}
|
|
905
|
-
|
|
910
|
+
parts.push(code.slice(lastPos))
|
|
911
|
+
return parts.join("")
|
|
906
912
|
}
|
|
907
913
|
|
|
908
914
|
function insertPyreonImports(code: string, pyreonImports: Map<string, Set<string>>): string {
|