@farm.js/react 0.1.0-beta.0 → 0.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +277 -11
- package/dist/compiler-runtime.cjs +1290 -17
- package/dist/compiler-runtime.cjs.map +1 -1
- package/dist/compiler-runtime.d.mts +132 -5
- package/dist/compiler-runtime.d.ts +132 -5
- package/dist/compiler-runtime.mjs +1290 -17
- package/dist/compiler-runtime.mjs.map +1 -1
- package/dist/index.cjs +24 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.mjs +24 -2
- package/dist/index.mjs.map +1 -1
- package/dist/list.cjs +27 -0
- package/dist/list.cjs.map +1 -0
- package/dist/list.d.mts +20 -0
- package/dist/list.d.ts +20 -0
- package/dist/list.mjs +21 -0
- package/dist/list.mjs.map +1 -0
- package/dist/vite.cjs +2332 -140
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +2332 -140
- package/dist/vite.mjs.map +1 -1
- package/package.json +10 -4
package/dist/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compiler.ts","../src/index.ts","../src/vite.ts"],"names":["t","traverse","line","reason","transformAsync","normalizePath"],"mappings":"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","file":"vite.cjs","sourcesContent":["import { transformAsync, traverse, types as t, type NodePath, type PluginObj } from \"@babel/core\";\nimport type { NormalizedReactCompilerOptions } from \"./index\";\n\nexport interface CompilerDiagnostic {\n component: string;\n reason: string;\n selected: boolean;\n}\n\nexport interface CompileReactModuleResult {\n code: string;\n map: unknown;\n compiled: readonly string[];\n diagnostics: readonly CompilerDiagnostic[];\n}\n\ninterface StateBinding {\n valueName: string;\n setterName: string;\n index: number;\n initialValue?: t.Expression;\n}\n\ninterface PendingBinding {\n kind: \"text\" | \"attribute\";\n path: number[];\n dependencies: number[];\n name?: string;\n value: t.Expression;\n}\n\ninterface Candidate {\n name: string;\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>;\n statementPath: NodePath;\n}\n\nfunction isComponentName(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\nfunction directiveValues(node: { directives?: readonly t.Directive[] | null }): string[] {\n return (node.directives || []).map((directive) => directive.value.value);\n}\n\nfunction isUseStateCall(\n expression: t.Node | null | undefined,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): expression is t.CallExpression {\n if (!t.isCallExpression(expression)) return false;\n if (t.isIdentifier(expression.callee)) return useStateNames.has(expression.callee.name);\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object) &&\n reactNames.has(expression.callee.object.name) &&\n t.isIdentifier(expression.callee.property, { name: \"useState\" })\n );\n}\n\nfunction cloneExpression<T extends t.Expression>(expression: T): T {\n return t.cloneNode(expression, true) as T;\n}\n\nfunction expressionFile(expression: t.Expression): t.File {\n return t.file(t.program([t.expressionStatement(expression)]));\n}\n\nfunction collectStateDependencies(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): number[] {\n const dependencies = new Set<number>();\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (state && !path.scope.hasBinding(path.node.name)) dependencies.add(state.index);\n },\n });\n return [...dependencies].sort((left, right) => left - right);\n}\n\nfunction referencesIdentifier(expression: t.Expression, name: string): boolean {\n let referenced = false;\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (path.node.name === name && !path.scope.hasBinding(name)) {\n referenced = true;\n }\n },\n });\n return referenced;\n}\n\nfunction findContainingEvent(path: NodePath): NodePath<t.JSXAttribute> | null {\n const attribute = path.findParent((parent) => parent.isJSXAttribute());\n if (!attribute?.isJSXAttribute() || !t.isJSXIdentifier(attribute.node.name)) return null;\n return /^on[A-Z]/.test(attribute.node.name.name) ? attribute : null;\n}\n\nfunction validateSetterUsage(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): string | undefined {\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason) return;\n const state = statesBySetter.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isCallExpression() ||\n parent.node.callee !== path.node ||\n !findContainingEvent(parent)\n ) {\n reason = `${state.setterName} must be called inside a JSX event handler`;\n }\n },\n });\n return reason;\n}\n\nfunction rewriteStateAccess(\n expression: t.Expression,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.Expression {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state) return;\n callee.replaceWith(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"set\"),\n ),\n );\n },\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n path.replaceWith(\n t.callExpression(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"get\"),\n ),\n [],\n ),\n );\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression;\n}\n\nfunction cleanJsxText(value: string): string {\n const lines = value.replace(/\\r/g, \"\").split(\"\\n\");\n let result = \"\";\n for (let index = 0; index < lines.length; index += 1) {\n const lastNonEmptyLine = lines.slice(index + 1).every((line) => line.trim().length === 0);\n let line = lines[index].replace(/\\t/g, \" \").replace(/ +/g, \" \");\n if (index > 0) line = line.replace(/^ /, \"\");\n if (!lastNonEmptyLine) line = line.replace(/ $/, \"\");\n if (line) result += line + (!lastNonEmptyLine ? \" \" : \"\");\n }\n return result;\n}\n\nfunction isTextExpression(expression: t.Expression): boolean {\n let supported = true;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n supported = false;\n path.stop();\n },\n OptionalCallExpression(path) {\n supported = false;\n path.stop();\n },\n JSXElement(path) {\n supported = false;\n path.stop();\n },\n JSXFragment(path) {\n supported = false;\n path.stop();\n },\n ObjectExpression(path) {\n supported = false;\n path.stop();\n },\n Function(path) {\n supported = false;\n path.stop();\n },\n });\n return supported;\n}\n\nfunction jsxAttributeName(attribute: t.JSXAttribute): string | undefined {\n return t.isJSXIdentifier(attribute.name) ? attribute.name.name : undefined;\n}\n\nfunction analyzeHostTree(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): { bindings?: PendingBinding[]; reason?: string } {\n const bindings: PendingBinding[] = [];\n\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled trees currently support host elements only\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) return \"JSX attribute spreads are not supported yet\";\n const name = jsxAttributeName(attribute);\n if (!name) return \"namespaced JSX attributes are not supported yet\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `${name} requires React ownership`;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const dependencies = collectStateDependencies(expression, statesByValue);\n if (dependencies.length === 0 || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\" || name === \"children\" || name === \"key\") {\n return `stateful ${name} bindings are not supported yet`;\n }\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n const expressionChildren = element.children.filter((child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child),\n );\n for (const child of expressionChildren) {\n if (t.isJSXEmptyExpression(child.expression)) continue;\n if (!isTextExpression(child.expression)) {\n return \"dynamic child structures require React reconciliation\";\n }\n }\n\n if (nestedElements.length === 0) {\n const dependencies = new Set<number>();\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n collectStateDependencies(child.expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n parts.push(cloneExpression(child.expression));\n }\n }\n if (dependencies.size > 0) {\n bindings.push({\n kind: \"text\",\n path: [...path],\n dependencies: [...dependencies].sort((left, right) => left - right),\n value: t.arrayExpression(parts),\n });\n }\n } else {\n for (const child of expressionChildren) {\n if (\n !t.isJSXEmptyExpression(child.expression) &&\n collectStateDependencies(child.expression, statesByValue).length > 0\n ) {\n return \"mixed element and stateful text children are not supported yet\";\n }\n }\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n }\n\n return undefined;\n };\n\n const reason = visit(root, []);\n return reason ? { reason } : { bindings };\n}\n\nfunction lazyInitialValue(expression?: t.Expression): t.Expression {\n const value = t.identifier(\"_initial\");\n const initializer = expression ? cloneExpression(expression) : t.identifier(\"undefined\");\n return t.callExpression(\n t.arrowFunctionExpression(\n [],\n t.blockStatement([\n t.variableDeclaration(\"const\", [t.variableDeclarator(value, initializer)]),\n t.returnStatement(\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.unaryExpression(\"typeof\", t.cloneNode(value)),\n t.stringLiteral(\"function\"),\n ),\n t.callExpression(t.cloneNode(value), []),\n t.cloneNode(value),\n ),\n ),\n ]),\n ),\n [],\n );\n}\n\nfunction clonePropsParameter(\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n): t.Identifier {\n const parameter = path.node.params[0];\n return parameter && t.isIdentifier(parameter)\n ? (t.cloneNode(parameter, true) as t.Identifier)\n : t.identifier(\"_props\");\n}\n\nfunction bindingObject(\n binding: PendingBinding,\n componentPath: Candidate[\"path\"],\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(binding.dependencies.map((part) => t.numericLiteral(part))),\n ),\n ];\n if (binding.name)\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n [clonePropsParameter(componentPath), t.cloneNode(stateParameter)],\n rewriteStateAccess(binding.value, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction wrapperElement(definitionIdentifier: t.Identifier, props?: t.Identifier): t.JSXElement {\n const name = t.jsxIdentifier(definitionIdentifier.name);\n const attributes = props ? [t.jsxSpreadAttribute(t.cloneNode(props))] : [];\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction compileCandidate(\n candidate: Candidate,\n createComponentIdentifier: t.Identifier,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): string | undefined {\n const { path, name, statementPath } = candidate;\n if (path.node.async || path.node.generator)\n return \"async and generator components are not supported\";\n if (path.node.typeParameters) return \"generic components are not supported yet\";\n if (\n path.node.params.length > 1 ||\n (path.node.params[0] && !t.isIdentifier(path.node.params[0]))\n ) {\n return \"components must use zero parameters or one props identifier\";\n }\n if (!t.isBlockStatement(path.node.body)) return \"components must use a block body\";\n\n const states: StateBinding[] = [];\n let returned: t.ReturnStatement | undefined;\n for (const statement of path.node.body.body) {\n if (t.isReturnStatement(statement)) {\n if (returned) return \"components must have one unconditional return\";\n returned = statement;\n continue;\n }\n if (!t.isVariableDeclaration(statement) || statement.declarations.length !== 1) {\n return \"only top-level useState declarations and one return are supported in Group 1\";\n }\n const declaration = statement.declarations[0];\n if (\n statement.kind !== \"const\" ||\n !t.isArrayPattern(declaration.id) ||\n declaration.id.elements.length !== 2 ||\n !t.isIdentifier(declaration.id.elements[0]) ||\n !t.isIdentifier(declaration.id.elements[1]) ||\n !isUseStateCall(declaration.init, useStateNames, reactNames) ||\n declaration.init.arguments.length > 1 ||\n (declaration.init.arguments[0] && !t.isExpression(declaration.init.arguments[0]))\n ) {\n return \"only const [value, setValue] = useState(initial) declarations are supported\";\n }\n states.push({\n valueName: declaration.id.elements[0].name,\n setterName: declaration.id.elements[1].name,\n index: states.length,\n initialValue: declaration.init.arguments[0] as t.Expression | undefined,\n });\n }\n\n if (states.length === 0) return \"no local useState binding was found\";\n if (!returned?.argument || !t.isJSXElement(returned.argument)) {\n return \"the component must return one host JSX element\";\n }\n\n const statesByValue = new Map(states.map((state) => [state.valueName, state]));\n const statesBySetter = new Map(states.map((state) => [state.setterName, state]));\n for (const state of states) {\n if (\n state.initialValue &&\n (collectStateDependencies(state.initialValue, statesByValue).length > 0 ||\n [...statesBySetter].some(([setterName]) =>\n referencesIdentifier(state.initialValue!, setterName),\n ))\n ) {\n return \"useState initializers cannot reference another local state binding\";\n }\n }\n const setterReason = validateSetterUsage(returned.argument, statesBySetter);\n if (setterReason) return setterReason;\n const analysis = analyzeHostTree(returned.argument, statesByValue);\n if (analysis.reason) return analysis.reason;\n\n const stateParameter = path.scope.generateUidIdentifier(\"farmState\");\n const definitionIdentifier = path.scope.generateUidIdentifier(`${name}Compiled`);\n const propsParameter = clonePropsParameter(path);\n const rewrittenRoot = rewriteStateAccess(\n returned.argument,\n stateParameter,\n statesByValue,\n statesBySetter,\n ) as t.JSXElement;\n const definition = t.callExpression(t.cloneNode(createComponentIdentifier), [\n t.objectExpression([\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(name)),\n t.objectProperty(\n t.identifier(\"initialize\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(states.map((state) => lazyInitialValue(state.initialValue))),\n ),\n ),\n t.objectProperty(\n t.identifier(\"render\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter)],\n rewrittenRoot,\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n (analysis.bindings || []).map((binding) =>\n bindingObject(binding, path, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n ),\n ]),\n ]);\n\n const originalProps = path.node.params[0];\n path\n .get(\"body\")\n .replaceWith(\n t.blockStatement([\n t.returnStatement(\n wrapperElement(\n definitionIdentifier,\n originalProps && t.isIdentifier(originalProps) ? originalProps : undefined,\n ),\n ),\n ]),\n );\n statementPath.insertAfter(\n t.variableDeclaration(\"const\", [t.variableDeclarator(definitionIdentifier, definition)]),\n );\n return undefined;\n}\n\nfunction collectCandidates(programPath: NodePath<t.Program>): Candidate[] {\n const candidates: Candidate[] = [];\n programPath.traverse({\n FunctionDeclaration(path) {\n if (!path.node.id || !isComponentName(path.node.id.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isProgram() &&\n !parent.isExportNamedDeclaration() &&\n !parent.isExportDefaultDeclaration()\n ) {\n return;\n }\n candidates.push({\n name: path.node.id.name,\n path,\n statementPath: parent.isProgram() ? path : parent,\n });\n },\n VariableDeclarator(path) {\n if (\n !t.isIdentifier(path.node.id) ||\n !isComponentName(path.node.id.name) ||\n (!t.isFunctionExpression(path.node.init) && !t.isArrowFunctionExpression(path.node.init))\n ) {\n return;\n }\n const declaration = path.parentPath;\n const statement = declaration.parentPath;\n if (!statement) return;\n const topLevel = statement.isProgram()\n ? declaration\n : statement.isExportNamedDeclaration() && statement.parentPath.isProgram()\n ? statement\n : null;\n if (!topLevel) return;\n candidates.push({\n name: path.node.id.name,\n path: path.get(\"init\") as Candidate[\"path\"],\n statementPath: topLevel,\n });\n },\n });\n return candidates;\n}\n\nexport async function compileReactModule(\n code: string,\n id: string,\n options: NormalizedReactCompilerOptions,\n): Promise<CompileReactModuleResult> {\n const compiled: string[] = [];\n const diagnostics: CompilerDiagnostic[] = [];\n const plugin = (): PluginObj => ({\n name: \"farm-react-aot\",\n visitor: {\n Program(programPath) {\n const moduleDirectives = new Set(directiveValues(programPath.node));\n const useStateNames = new Set<string>();\n const reactNames = new Set<string>();\n for (const statement of programPath.node.body) {\n if (!t.isImportDeclaration(statement) || statement.source.value !== \"react\") continue;\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier) || t.isImportNamespaceSpecifier(specifier)) {\n reactNames.add(specifier.local.name);\n } else if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"useState\" })\n ) {\n useStateNames.add(specifier.local.name);\n }\n }\n }\n\n const candidates = collectCandidates(programPath);\n const createComponentIdentifier =\n programPath.scope.generateUidIdentifier(\"createCompiledComponent\");\n for (const candidate of candidates) {\n const functionDirectives = new Set(\n t.isBlockStatement(candidate.path.node.body)\n ? directiveValues(candidate.path.node.body)\n : [],\n );\n const explicitlySelected =\n moduleDirectives.has(options.directive) || functionDirectives.has(options.directive);\n if (functionDirectives.has(\"use no compiler\")) continue;\n if (options.mode === \"annotation\" && !explicitlySelected) continue;\n\n const reason = compileCandidate(\n candidate,\n createComponentIdentifier,\n useStateNames,\n reactNames,\n );\n if (reason) {\n diagnostics.push({\n component: candidate.name,\n reason,\n selected: explicitlySelected,\n });\n } else {\n compiled.push(candidate.name);\n }\n }\n\n if (compiled.length > 0) {\n programPath.unshiftContainer(\n \"body\",\n t.importDeclaration(\n [\n t.importSpecifier(\n createComponentIdentifier,\n t.identifier(\"createCompiledComponent\"),\n ),\n ],\n t.stringLiteral(\"@farm.js/react/compiler-runtime\"),\n ),\n );\n }\n },\n },\n });\n\n const result = await transformAsync(code, {\n filename: id,\n sourceType: \"module\",\n ast: false,\n code: true,\n sourceMaps: true,\n sourceFileName: id,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins: [\"jsx\", \"typescript\"],\n },\n generatorOpts: {\n comments: true,\n compact: false,\n },\n plugins: [plugin],\n });\n\n return {\n code: result?.code || code,\n map: result?.map || null,\n compiled,\n diagnostics,\n };\n}\n","import type { FarmRenderer } from \"@farm.js/core/renderer\";\n\nexport type ReactCompilerMode = \"infer\" | \"annotation\";\nexport type UnsupportedCompilerBehavior = \"fallback\" | \"warn\" | \"error\";\n\nexport interface ReactCompilerOptions {\n /** Compile every component that the safe subset can prove eligible. */\n mode?: ReactCompilerMode;\n /** Function or module directive used only by annotation mode. */\n directive?: string;\n /** What to do when a selected component is outside the safe subset. */\n onUnsupported?: UnsupportedCompilerBehavior;\n}\n\nexport interface ReactRendererOptions {\n experimental?: {\n /** `true` enables automatic inference; an object customizes selection. */\n compiler?: boolean | ReactCompilerOptions;\n };\n}\n\nexport interface NormalizedReactCompilerOptions {\n mode: ReactCompilerMode;\n directive: string;\n onUnsupported: UnsupportedCompilerBehavior;\n}\n\nexport const DEFAULT_COMPILER_DIRECTIVE = \"use compiler\";\n\nexport function normalizeReactCompilerOptions(\n value: true | ReactCompilerOptions,\n): NormalizedReactCompilerOptions {\n const options = value === true ? {} : value;\n const mode = options.mode || \"infer\";\n\n if (mode !== \"infer\" && mode !== \"annotation\") {\n throw new TypeError(`Unknown React compiler mode: ${String(mode)}`);\n }\n\n if (options.directive !== undefined && mode !== \"annotation\") {\n throw new TypeError(\"The React compiler directive can only be configured in annotation mode.\");\n }\n\n const directive = options.directive?.trim() || DEFAULT_COMPILER_DIRECTIVE;\n const onUnsupported = options.onUnsupported || \"fallback\";\n if (!([\"fallback\", \"warn\", \"error\"] as const).includes(onUnsupported)) {\n throw new TypeError(`Unknown unsupported-component behavior: ${String(onUnsupported)}`);\n }\n\n return { mode, directive, onUnsupported };\n}\n\nconst REACT_RENDERER: Readonly<FarmRenderer> = Object.freeze({\n name: \"react\",\n vite: \"@farm.js/react/vite\",\n server: \"@farm.js/react/server\",\n client: \"@farm.js/react/client\",\n jsxImportSource: \"react\",\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n optimizeDeps: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"@farm.js/react/compiler-runtime\",\n ],\n capabilities: {\n streaming: { node: true, web: false },\n },\n});\n\n/** Select React and optionally enable Farm's experimental AOT compiler. */\nexport function react(options: ReactRendererOptions = {}): FarmRenderer {\n const compiler = options.experimental?.compiler;\n const normalizedCompiler = compiler ? normalizeReactCompilerOptions(compiler) : false;\n\n return {\n ...REACT_RENDERER,\n dedupe: [...(REACT_RENDERER.dedupe || [])],\n optimizeDeps: [...(REACT_RENDERER.optimizeDeps || [])],\n capabilities: {\n streaming: { ...REACT_RENDERER.capabilities?.streaming },\n },\n options: {\n experimental: { compiler: normalizedCompiler },\n },\n };\n}\n\nexport { REACT_RENDERER };\nexport type { FarmRenderer } from \"@farm.js/core/renderer\";\n","import { normalizePath, type Plugin } from \"vite\";\nimport { compileReactModule } from \"./compiler\";\nimport { normalizeReactCompilerOptions, type NormalizedReactCompilerOptions } from \"./index\";\n\ninterface RendererPluginOptions {\n ssr?: boolean;\n rendererOptions?: Readonly<Record<string, unknown>>;\n}\n\nfunction readCompilerOptions(\n rendererOptions: Readonly<Record<string, unknown>> | undefined,\n): NormalizedReactCompilerOptions | false {\n const experimental = rendererOptions?.experimental;\n if (!experimental || typeof experimental !== \"object\") return false;\n const compiler = (experimental as { compiler?: unknown }).compiler;\n if (!compiler) return false;\n if (compiler === true) return normalizeReactCompilerOptions(true);\n if (typeof compiler !== \"object\") {\n throw new TypeError(\n \"React experimental.compiler must be a boolean or compiler options object.\",\n );\n }\n const normalized = compiler as Partial<NormalizedReactCompilerOptions>;\n if (\n (normalized.mode === \"infer\" || normalized.mode === \"annotation\") &&\n typeof normalized.directive === \"string\" &&\n (normalized.onUnsupported === \"fallback\" ||\n normalized.onUnsupported === \"warn\" ||\n normalized.onUnsupported === \"error\")\n ) {\n return normalized as NormalizedReactCompilerOptions;\n }\n return normalizeReactCompilerOptions(compiler as NormalizedReactCompilerOptions);\n}\n\nexport function createFarmRendererPlugin(options: RendererPluginOptions = {}): Plugin[] {\n const compilerOptions = readCompilerOptions(options.rendererOptions);\n if (!compilerOptions) return [];\n\n let projectRoot = \"\";\n\n return [\n {\n name: \"farm:react-aot-compiler\",\n enforce: \"pre\",\n configResolved(config) {\n projectRoot = normalizePath(config.root).replace(/\\/$/, \"\");\n },\n async transform(code, id) {\n const cleanId = normalizePath(id.split(\"?\", 1)[0]);\n if (\n !/\\.[jt]sx$/.test(cleanId) ||\n cleanId.includes(\"/node_modules/\") ||\n (projectRoot && !cleanId.startsWith(`${projectRoot}/`))\n )\n return null;\n\n const result = await compileReactModule(code, cleanId, compilerOptions);\n for (const diagnostic of result.diagnostics) {\n const message = `[react-compiler] ${diagnostic.component}: ${diagnostic.reason}; using React.`;\n if (compilerOptions.onUnsupported === \"error\") this.error(message);\n if (compilerOptions.onUnsupported === \"warn\" || diagnostic.selected) this.warn(message);\n }\n if (result.compiled.length === 0) return null;\n return { code: result.code, map: result.map as any };\n },\n },\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/compiler.ts","../src/compiler-report.ts","../src/index.ts","../src/vite.ts"],"names":["t","traverse","line","parent","unsupported","reason","result","plan","name","transformAsync","relative","resolve","mkdir","dirname","writeFile","normalizePath"],"mappings":"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","file":"vite.cjs","sourcesContent":["import { transformAsync, traverse, types as t, type NodePath, type PluginObj } from \"@babel/core\";\nimport type { NormalizedReactCompilerOptions } from \"./index\";\n\nexport interface CompilerDiagnostic {\n component: string;\n reason: string;\n selected: boolean;\n}\n\nexport interface CompileReactModuleResult {\n code: string;\n map: unknown;\n compiled: readonly string[];\n diagnostics: readonly CompilerDiagnostic[];\n}\n\ninterface StateBinding {\n valueName: string;\n setterName: string;\n index: number;\n initialValue?: t.Expression;\n}\n\ninterface HandlerBinding {\n name: string;\n value: t.ArrowFunctionExpression | t.FunctionExpression;\n}\n\ninterface LocalBinding {\n kind: \"derived\" | \"handler\";\n name: string;\n value: t.Expression;\n}\n\ninterface PropsPlan {\n definitionParameter: t.Identifier;\n wrapperProps?: t.Expression;\n destructuredNames: ReadonlySet<string>;\n}\n\ninterface PendingDomBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: number[];\n target?: number;\n dependencies: number[];\n name?: string;\n value: t.Expression;\n}\n\ninterface PendingConditionalBlockBinding {\n kind: \"block\";\n id: number;\n parent?: number;\n dependencies: number[];\n}\n\ntype PendingBinding = PendingDomBinding | PendingConditionalBlockBinding;\n\ninterface ConditionalBlockPlan {\n kind: \"conditional\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.Expression;\n}\n\ninterface KeyedListPlan {\n kind: \"keyed-list\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.Expression;\n syntax: \"map\" | \"list\";\n}\n\ninterface PendingKeyedRowBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: number[];\n name?: string;\n value: t.Expression;\n}\n\ninterface PendingKeyedRowEvent {\n id: number;\n path: number[];\n name: string;\n value: t.ArrowFunctionExpression | t.FunctionExpression;\n}\n\ninterface PendingKeyedRowConditional {\n id: number;\n path: number[];\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface HostConditionalPlan {\n kind: \"host-conditional\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface KeyedRowsPlan {\n kind: \"keyed-rows\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n collection: t.Expression;\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n events: PendingKeyedRowEvent[];\n conditionals: PendingKeyedRowConditional[];\n syntax: \"map\" | \"list\";\n}\n\ninterface KeyedRangePlan {\n before: number;\n source: t.Expression | t.JSXElement;\n collection: t.Expression;\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n syntax: \"map\" | \"list\";\n}\n\ninterface KeyedRangesPlan {\n kind: \"keyed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: KeyedRangePlan[];\n trailing: number;\n}\n\ninterface ComponentIslandPlan {\n kind: \"component\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n}\n\ntype ComposableBlockPlan =\n | ConditionalBlockPlan\n | HostConditionalPlan\n | KeyedListPlan\n | KeyedRowsPlan\n | KeyedRangesPlan\n | ComponentIslandPlan;\n\ninterface Candidate {\n name: string;\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>;\n statementPath: NodePath;\n}\n\nconst SAFE_GLOBAL_CALLS = new Set([\"Boolean\", \"Number\", \"String\"]);\nconst SAFE_MATH_CALLS = new Set([\"abs\", \"ceil\", \"floor\", \"max\", \"min\", \"round\", \"sign\", \"trunc\"]);\n\nfunction isComponentName(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\nfunction isHostElement(element: t.JSXElement): boolean {\n const name = element.openingElement.name;\n return t.isJSXIdentifier(name) && /^[a-z]/.test(name.name);\n}\n\nfunction directiveValues(node: { directives?: readonly t.Directive[] | null }): string[] {\n return (node.directives || []).map((directive) => directive.value.value);\n}\n\nfunction isUseStateCall(\n expression: t.Node | null | undefined,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): expression is t.CallExpression {\n if (!t.isCallExpression(expression)) return false;\n if (t.isIdentifier(expression.callee)) return useStateNames.has(expression.callee.name);\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object) &&\n reactNames.has(expression.callee.object.name) &&\n t.isIdentifier(expression.callee.property, { name: \"useState\" })\n );\n}\n\nfunction cloneExpression<T extends t.Expression>(expression: T): T {\n return t.cloneNode(expression, true) as T;\n}\n\nfunction expressionFile(expression: t.Expression): t.File {\n return t.file(t.program([t.expressionStatement(expression)]));\n}\n\nfunction collectStateDependencies(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): number[] {\n const dependencies = new Set<number>();\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (state && !path.scope.hasBinding(path.node.name)) dependencies.add(state.index);\n },\n });\n return [...dependencies].sort((left, right) => left - right);\n}\n\nfunction referencesIdentifier(expression: t.Expression, name: string): boolean {\n let referenced = false;\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (path.node.name === name && !path.scope.hasBinding(name)) {\n referenced = true;\n }\n },\n });\n return referenced;\n}\n\nfunction collectReferencedLocals(expression: t.Expression, names: ReadonlySet<string>): string[] {\n const references = new Set<string>();\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (names.has(path.node.name) && !path.scope.hasBinding(path.node.name)) {\n references.add(path.node.name);\n }\n },\n });\n return [...references];\n}\n\nfunction rewriteDerivedAccess<T extends t.Expression>(\n expression: T,\n derivedByName: ReadonlyMap<string, t.Expression>,\n): T {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (path.scope.hasBinding(path.node.name)) return;\n const derived = derivedByName.get(path.node.name);\n if (!derived) return;\n path.replaceWith(cloneExpression(derived));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction rewriteDestructuredPropAccess<T extends t.Expression>(\n expression: T,\n names: ReadonlySet<string>,\n propsParameter: t.Identifier,\n): T {\n if (names.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!names.has(path.node.name) || path.scope.hasBinding(path.node.name)) return;\n if (path.parentPath.isJSXOpeningElement() || path.parentPath.isJSXClosingElement()) return;\n path.replaceWith(\n t.memberExpression(t.cloneNode(propsParameter), t.identifier(path.node.name)),\n );\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction rewriteHandlerAccess(\n root: t.JSXElement,\n handlersByName: ReadonlyMap<string, HandlerBinding>,\n): { root?: t.JSXElement; reason?: string } {\n if (handlersByName.size === 0) return { root: t.cloneNode(root, true) };\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason || path.scope.hasBinding(path.node.name)) return;\n const handler = handlersByName.get(path.node.name);\n if (!handler) return;\n const container = path.parentPath;\n const attribute = container.parentPath;\n const eventName = attribute?.isJSXAttribute() && jsxAttributeName(attribute.node);\n if (\n container.isJSXExpressionContainer() &&\n container.node.expression === path.node &&\n eventName &&\n /^on[A-Z]/.test(eventName)\n ) {\n path.replaceWith(t.cloneNode(handler.value, true));\n path.skip();\n return;\n }\n\n const call =\n container.isCallExpression() && container.node.callee === path.node ? container : null;\n const event = call && findContainingEvent(call);\n const eventExpression =\n event?.node.value &&\n t.isJSXExpressionContainer(event.node.value) &&\n event.node.value.expression;\n const isInsideInlineHandler =\n eventExpression &&\n (t.isArrowFunctionExpression(eventExpression) || t.isFunctionExpression(eventExpression)) &&\n Boolean(call?.findParent((parent) => parent.node === eventExpression));\n if (!call || !event || !isInsideInlineHandler) {\n reason = `event handler ${handler.name} must be passed directly to a JSX event or called inside its inline handler`;\n path.stop();\n return;\n }\n path.replaceWith(t.cloneNode(handler.value, true));\n path.skip();\n },\n });\n return reason\n ? { reason }\n : { root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement };\n}\n\nfunction isSafeCompilerCall(\n expression: t.CallExpression,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (t.isIdentifier(expression.callee)) {\n return safeGlobals.has(expression.callee.name) && SAFE_GLOBAL_CALLS.has(expression.callee.name);\n }\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object, { name: \"Math\" }) &&\n safeGlobals.has(\"Math\") &&\n t.isIdentifier(expression.callee.property) &&\n SAFE_MATH_CALLS.has(expression.callee.property.name)\n );\n}\n\nfunction validateDerivedExpression(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n let unsupported: string | undefined;\n const reject = (reason: string, path: NodePath) => {\n unsupported = reason;\n path.stop();\n };\n\n traverse(expressionFile(cloneExpression(expression)), {\n ArrayExpression: (path) => reject(\"array literals\", path),\n AssignmentExpression: (path) => reject(\"assignments\", path),\n AwaitExpression: (path) => reject(\"await expressions\", path),\n CallExpression(path) {\n if (!isSafeCompilerCall(path.node, safeGlobals)) reject(\"function calls\", path);\n },\n ClassExpression: (path) => reject(\"class expressions\", path),\n Function: (path) => reject(\"function expressions\", path),\n JSXElement: (path) => reject(\"JSX\", path),\n JSXFragment: (path) => reject(\"JSX\", path),\n NewExpression: (path) => reject(\"constructor calls\", path),\n ObjectExpression: (path) => reject(\"object literals\", path),\n OptionalCallExpression: (path) => reject(\"function calls\", path),\n TaggedTemplateExpression: (path) => reject(\"tagged templates\", path),\n ThisExpression: (path) => reject(\"this expressions\", path),\n UnaryExpression(path) {\n if (path.node.operator === \"delete\") reject(\"delete expressions\", path);\n },\n UpdateExpression: (path) => reject(\"update expressions\", path),\n YieldExpression: (path) => reject(\"yield expressions\", path),\n });\n\n return unsupported;\n}\n\nfunction findContainingEvent(path: NodePath): NodePath<t.JSXAttribute> | null {\n const attribute = path.findParent((parent) => parent.isJSXAttribute());\n if (!attribute?.isJSXAttribute() || !t.isJSXIdentifier(attribute.node.name)) return null;\n return /^on[A-Z]/.test(attribute.node.name.name) ? attribute : null;\n}\n\nfunction validateSetterUsage(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): string | undefined {\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason) return;\n const state = statesBySetter.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isCallExpression() ||\n parent.node.callee !== path.node ||\n !findContainingEvent(parent)\n ) {\n reason = `${state.setterName} must be called inside a JSX event handler`;\n }\n },\n });\n return reason;\n}\n\nfunction rewriteStateAccess(\n expression: t.Expression,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.Expression {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state) return;\n callee.replaceWith(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"set\"),\n ),\n );\n },\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n path.replaceWith(\n t.callExpression(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"get\"),\n ),\n [],\n ),\n );\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression;\n}\n\nfunction cleanJsxText(value: string): string {\n const lines = value.replace(/\\r/g, \"\").split(\"\\n\");\n let result = \"\";\n for (let index = 0; index < lines.length; index += 1) {\n const lastNonEmptyLine = lines.slice(index + 1).every((line) => line.trim().length === 0);\n let line = lines[index].replace(/\\t/g, \" \").replace(/ +/g, \" \");\n if (index > 0) line = line.replace(/^ /, \"\");\n if (!lastNonEmptyLine) line = line.replace(/ $/, \"\");\n if (line) result += line + (!lastNonEmptyLine ? \" \" : \"\");\n }\n return result;\n}\n\nfunction isTextExpression(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (collectStateDependencies(expression, statesByValue).length > 0) {\n return validateDerivedExpression(expression, safeGlobals) === undefined;\n }\n\n let supported = true;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isSafeCompilerCall(path.node, safeGlobals)) {\n supported = false;\n path.stop();\n }\n },\n OptionalCallExpression(path) {\n supported = false;\n path.stop();\n },\n JSXElement(path) {\n supported = false;\n path.stop();\n },\n JSXFragment(path) {\n supported = false;\n path.stop();\n },\n ObjectExpression(path) {\n supported = false;\n path.stop();\n },\n Function(path) {\n supported = false;\n path.stop();\n },\n });\n return supported;\n}\n\nfunction jsxAttributeName(attribute: t.JSXAttribute): string | undefined {\n return t.isJSXIdentifier(attribute.name) ? attribute.name.name : undefined;\n}\n\nfunction jsxAttribute(element: t.JSXElement, name: string): t.JSXAttribute | undefined {\n return element.openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && jsxAttributeName(attribute) === name,\n );\n}\n\nfunction staticJsxAttributeString(attribute: t.JSXAttribute | undefined): string | undefined {\n if (!attribute?.value) return attribute ? \"\" : undefined;\n if (t.isStringLiteral(attribute.value)) return attribute.value.value;\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n t.isStringLiteral(attribute.value.expression)\n ) {\n return attribute.value.expression.value;\n }\n return undefined;\n}\n\nfunction controlledSelectHasDynamicOptions(element: t.JSXElement): boolean {\n let dynamic = false;\n t.traverseFast(element, (node) => {\n if (dynamic || !t.isJSXElement(node)) return;\n const tag = node.openingElement.name;\n if (!t.isJSXIdentifier(tag) || (tag.name !== \"option\" && tag.name !== \"optgroup\")) return;\n dynamic = node.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)),\n );\n });\n return dynamic;\n}\n\ninterface ConditionalBlockShape {\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n branches: t.JSXElement[];\n}\n\nfunction isEmptyConditionalBranch(expression: t.Expression): boolean {\n return t.isNullLiteral(expression) || t.isBooleanLiteral(expression, { value: false });\n}\n\nfunction conditionalBlockShape(expression: t.Expression): ConditionalBlockShape | null {\n if (\n t.isLogicalExpression(expression, { operator: \"&&\" }) &&\n t.isExpression(expression.left) &&\n t.isJSXElement(expression.right)\n ) {\n return {\n test: expression.left,\n logical: true,\n truthy: expression.right,\n branches: [expression.right],\n };\n }\n if (!t.isConditionalExpression(expression)) return null;\n const branches = [expression.consequent, expression.alternate];\n if (\n !branches.every((branch) => t.isJSXElement(branch) || isEmptyConditionalBranch(branch)) ||\n !branches.some((branch) => t.isJSXElement(branch))\n ) {\n return null;\n }\n return {\n test: expression.test,\n logical: false,\n truthy: t.isJSXElement(expression.consequent) ? expression.consequent : undefined,\n falsy: t.isJSXElement(expression.alternate) ? expression.alternate : undefined,\n branches: branches.filter((branch): branch is t.JSXElement => t.isJSXElement(branch)),\n };\n}\n\nfunction isMapCall(expression: t.Expression): expression is t.CallExpression {\n return (\n t.isCallExpression(expression) &&\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isExpression(expression.callee.object) &&\n t.isIdentifier(expression.callee.property, { name: \"map\" })\n );\n}\n\nfunction returnedExpression(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n): t.Expression | undefined {\n if (t.isExpression(callback.body)) return callback.body;\n if (callback.body.body.length !== 1 || !t.isReturnStatement(callback.body.body[0])) {\n return undefined;\n }\n const value = callback.body.body[0].argument;\n return value && t.isExpression(value) ? value : undefined;\n}\n\nconst SAFE_COLLECTION_PIPELINE_METHODS = new Set([\"filter\", \"slice\", \"toReversed\", \"toSorted\"]);\n\nfunction collectionPipelineMethod(expression: t.Expression): string | undefined {\n if (\n !t.isCallExpression(expression) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isExpression(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property)\n ) {\n return undefined;\n }\n return SAFE_COLLECTION_PIPELINE_METHODS.has(expression.callee.property.name)\n ? expression.callee.property.name\n : undefined;\n}\n\nfunction validateCollectionCallback(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n method: \"filter\" | \"toSorted\",\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const expectedParameters = method === \"filter\" ? \"one item and an optional index\" : \"two items\";\n const validParameterCount =\n method === \"filter\"\n ? callback.params.length >= 1 && callback.params.length <= 2\n : callback.params.length === 2;\n if (\n callback.async ||\n callback.generator ||\n !validParameterCount ||\n callback.params.some((parameter) => !t.isIdentifier(parameter))\n ) {\n return `${method} callbacks must be synchronous and use ${expectedParameters}`;\n }\n if (containsDirectHookCall(callback)) {\n return `Hooks cannot be called inside a ${method} callback`;\n }\n const value = returnedExpression(callback);\n if (!value) return `${method} callbacks must return one expression`;\n const unsupported = validateDerivedExpression(value, safeGlobals);\n return unsupported ? `${method} callbacks cannot use ${unsupported}` : undefined;\n}\n\nfunction validateCollectionPipeline(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const method = collectionPipelineMethod(expression);\n if (!method || !t.isCallExpression(expression)) {\n return validateDerivedExpression(expression, safeGlobals);\n }\n\n const source = (expression.callee as t.MemberExpression).object as t.Expression;\n const sourceUnsupported = collectionPipelineMethod(source)\n ? validateCollectionPipeline(source, safeGlobals)\n : validateDerivedExpression(source, safeGlobals);\n if (sourceUnsupported) return sourceUnsupported;\n\n if (method === \"filter\") {\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return \"filter requires one inline callback\";\n }\n return validateCollectionCallback(expression.arguments[0], \"filter\", safeGlobals);\n }\n\n if (method === \"toSorted\") {\n if (expression.arguments.length === 0) return undefined;\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return \"toSorted requires an optional inline comparator\";\n }\n return validateCollectionCallback(expression.arguments[0], \"toSorted\", safeGlobals);\n }\n\n const maximumArguments = method === \"slice\" ? 2 : 0;\n if (expression.arguments.length > maximumArguments) {\n return `${method} accepts at most ${maximumArguments} compiler-safe arguments`;\n }\n for (const argument of expression.arguments) {\n if (!t.isExpression(argument)) return `${method} does not support spread arguments`;\n const unsupported = validateDerivedExpression(argument, safeGlobals);\n if (unsupported) return `${method} arguments cannot use ${unsupported}`;\n }\n return undefined;\n}\n\nfunction containsDirectHookCall(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n): boolean {\n let found = false;\n traverse(expressionFile(t.cloneNode(callback, true)), {\n CallExpression(path) {\n const callee = path.node.callee;\n const name = t.isIdentifier(callee)\n ? callee.name\n : t.isMemberExpression(callee) && !callee.computed && t.isIdentifier(callee.property)\n ? callee.property.name\n : \"\";\n if (/^use[A-Z0-9]/.test(name)) {\n found = true;\n path.stop();\n }\n },\n });\n return found;\n}\n\nfunction jsxKeyExpression(element: t.JSXElement): t.Expression | undefined {\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name, { name: \"key\" })) {\n continue;\n }\n if (t.isStringLiteral(attribute.value)) return t.stringLiteral(attribute.value.value);\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n )\n return attribute.value.expression;\n }\n return undefined;\n}\n\nfunction validateKeyFunction(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n keyExpression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n if (\n callback.async ||\n callback.generator ||\n callback.params.length < 1 ||\n callback.params.length > 2 ||\n !t.isIdentifier(callback.params[0]) ||\n (callback.params[1] !== undefined && !t.isIdentifier(callback.params[1]))\n ) {\n return \"keyed list callbacks must be synchronous and use item and optional index identifiers\";\n }\n const item = callback.params[0].name;\n const index = t.isIdentifier(callback.params[1]) ? callback.params[1].name : undefined;\n if (index && referencesIdentifier(keyExpression, index)) {\n return \"keyed list keys cannot depend on the array index\";\n }\n if (!referencesIdentifier(keyExpression, item)) {\n return \"keyed list keys must depend on the mapped item\";\n }\n const unsupported = validateDerivedExpression(keyExpression, safeGlobals);\n return unsupported ? `keyed list keys cannot use ${unsupported}` : undefined;\n}\n\nfunction isPublicListElement(element: t.JSXElement, listNames: ReadonlySet<string>): boolean {\n const name = element.openingElement.name;\n return t.isJSXIdentifier(name) && listNames.has(name.name);\n}\n\nfunction meaningfulJsxChildren(element: t.JSXElement): t.JSXElement[\"children\"] {\n return element.children.filter((child) => {\n if (t.isJSXText(child)) return child.value.trim().length > 0;\n return !(t.isJSXExpressionContainer(child) && t.isJSXEmptyExpression(child.expression));\n });\n}\n\nfunction analyzeMapList(\n expression: t.CallExpression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n const callee = expression.callee as t.MemberExpression;\n const collection = callee.object as t.Expression;\n const collectionUnsupported = validateCollectionPipeline(collection, safeGlobals);\n if (collectionUnsupported) {\n return { reason: `keyed list collection cannot use ${collectionUnsupported}` };\n }\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return { reason: \"keyed list map must use one inline render callback\" };\n }\n const callback = expression.arguments[0];\n if (containsDirectHookCall(callback)) {\n return { reason: \"Hooks cannot be called directly inside a keyed list callback\" };\n }\n const row = returnedExpression(callback);\n if (!row || !t.isJSXElement(row)) {\n return { reason: \"keyed list map callbacks must return one React element\" };\n }\n const key = jsxKeyExpression(row);\n if (!key) return { reason: \"automatically compiled lists require an explicit item key\" };\n const keyReason = validateKeyFunction(callback, key, safeGlobals);\n if (keyReason) return { reason: keyReason };\n return { dependencies: collectStateDependencies(expression, statesByValue) };\n}\n\nfunction listAttributeExpression(element: t.JSXElement, name: string): t.Expression | undefined {\n for (const attribute of element.openingElement.attributes) {\n if (\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name, { name }) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n return attribute.value.expression;\n }\n }\n return undefined;\n}\n\nfunction analyzePublicList(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n if (element.openingElement.attributes.some((attribute) => t.isJSXSpreadAttribute(attribute))) {\n return { reason: \"compiled List boundaries do not support JSX attribute spreads\" };\n }\n const each = listAttributeExpression(element, \"each\");\n const by = listAttributeExpression(element, \"by\");\n if (!each || !by) return { reason: \"List requires explicit each and by properties\" };\n const collectionUnsupported = validateCollectionPipeline(each, safeGlobals);\n if (collectionUnsupported) {\n return { reason: `List each cannot use ${collectionUnsupported}` };\n }\n if (!t.isArrowFunctionExpression(by) && !t.isFunctionExpression(by)) {\n return { reason: \"compiled List by must use an inline key function\" };\n }\n const key = returnedExpression(by);\n if (!key) return { reason: \"compiled List by must return one key expression\" };\n const keyReason = validateKeyFunction(by, key, safeGlobals);\n if (keyReason) return { reason: keyReason };\n\n const children = meaningfulJsxChildren(element);\n if (\n children.length !== 1 ||\n !t.isJSXExpressionContainer(children[0]) ||\n t.isJSXEmptyExpression(children[0].expression) ||\n (!t.isArrowFunctionExpression(children[0].expression) &&\n !t.isFunctionExpression(children[0].expression))\n ) {\n return { reason: \"compiled List children must use one inline render function\" };\n }\n const render = children[0].expression;\n if (!returnedExpression(render)) {\n return { reason: \"compiled List children must return one React element\" };\n }\n if (containsDirectHookCall(render)) {\n return { reason: \"Hooks cannot be called directly inside List children\" };\n }\n return { dependencies: collectStateDependencies(element, statesByValue) };\n}\n\ninterface KeyedRowsShape {\n collection: t.Expression;\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n dependencies: number[];\n bindings: PendingKeyedRowBinding[];\n events: PendingKeyedRowEvent[];\n conditionals: PendingKeyedRowConditional[];\n syntax: \"map\" | \"list\";\n}\n\nfunction validateKeyedRowEventHandler(\n handler: t.ArrowFunctionExpression | t.FunctionExpression,\n): string | undefined {\n let reason: string | undefined;\n traverse(expressionFile(t.cloneNode(handler, true)), {\n MetaProperty(path) {\n reason = \"meta properties\";\n path.stop();\n },\n ReferencedIdentifier(path) {\n if (path.node.name !== \"arguments\") return;\n reason = \"arguments access\";\n path.stop();\n },\n Super(path) {\n reason = \"super access\";\n path.stop();\n },\n ThisExpression(path) {\n reason = \"this access\";\n path.stop();\n },\n });\n return reason;\n}\n\nfunction stabilizeDeferredEventCurrentTarget(\n handler: t.ArrowFunctionExpression | t.FunctionExpression,\n compilerSetters: ReadonlySet<string>,\n): t.ArrowFunctionExpression | t.FunctionExpression {\n const cloned = t.cloneNode(handler, true);\n const eventParameter = cloned.params[0];\n if (!t.isIdentifier(eventParameter) || compilerSetters.size === 0) return cloned;\n const file = expressionFile(cloned);\n const expression = (file.program.body[0] as t.ExpressionStatement).expression;\n if (!t.isArrowFunctionExpression(expression) && !t.isFunctionExpression(expression)) {\n return cloned;\n }\n const rootBindingIdentifier = expression.params[0];\n const snapshots: Array<{ identifier: t.Identifier; value: t.Expression }> = [];\n const snapshotsByProperty = new Map<string, t.Identifier>();\n const replaceCurrentTarget = (\n path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n ) => {\n const property = path.node.property;\n const isCurrentTarget = path.node.computed\n ? t.isStringLiteral(property, { value: \"currentTarget\" })\n : t.isIdentifier(property, { name: \"currentTarget\" });\n if (!isCurrentTarget || !t.isIdentifier(path.node.object, { name: eventParameter.name }))\n return;\n const binding = path.scope.getBinding(eventParameter.name);\n if (!binding || binding.identifier !== rootBindingIdentifier) return;\n const setterCall = path.findParent(\n (parent) =>\n parent.isCallExpression() &&\n t.isIdentifier(parent.node.callee) &&\n compilerSetters.has(parent.node.callee.name),\n );\n if (!setterCall) return;\n const deferredFunction = path.findParent(\n (parent) => parent.isFunction() && parent.node !== expression,\n );\n if (!deferredFunction || !deferredFunction.findParent((parent) => parent === setterCall))\n return;\n\n const parent = path.parentPath;\n const propertyRead =\n (parent?.isMemberExpression() || parent?.isOptionalMemberExpression()) &&\n parent.node.object === path.node\n ? parent\n : path;\n const snapshotProperty =\n propertyRead === path\n ? \"element\"\n : propertyRead.node.computed\n ? t.isStringLiteral(propertyRead.node.property)\n ? propertyRead.node.property.value\n : `computed${snapshots.length}`\n : t.isIdentifier(propertyRead.node.property)\n ? propertyRead.node.property.name\n : `property${snapshots.length}`;\n let snapshot = snapshotsByProperty.get(snapshotProperty);\n if (!snapshot) {\n const suffix = snapshotProperty\n .replace(/[^A-Za-z0-9_$]/g, \" \")\n .replace(/(?:^|\\s+)([A-Za-z0-9_$])/g, (_match, character: string) =>\n character.toUpperCase(),\n )\n .replace(/\\s/g, \"\");\n snapshot = uniqueLocalIdentifier(`_farmCurrentTarget${suffix}`, [\n expression,\n ...snapshots.map((entry) => entry.identifier),\n ]);\n snapshotsByProperty.set(snapshotProperty, snapshot);\n snapshots.push({\n identifier: snapshot,\n value: t.cloneNode(propertyRead.node, true) as t.Expression,\n });\n }\n propertyRead.replaceWith(t.cloneNode(snapshot));\n propertyRead.skip();\n };\n traverse(file, {\n MemberExpression: replaceCurrentTarget,\n OptionalMemberExpression: replaceCurrentTarget,\n });\n if (snapshots.length === 0) return expression;\n\n const declarations = snapshots.map(({ identifier, value }) =>\n t.variableDeclaration(\"const\", [t.variableDeclarator(t.cloneNode(identifier), value)]),\n );\n if (t.isBlockStatement(expression.body)) {\n expression.body.body.unshift(...declarations);\n } else {\n expression.body = t.blockStatement([...declarations, t.returnStatement(expression.body)]);\n }\n return expression;\n}\n\nfunction stabilizeDeferredEventCurrentTargets(\n root: t.JSXElement,\n compilerSetters: ReadonlySet<string>,\n): t.JSXElement {\n const file = expressionFile(t.cloneNode(root, true));\n traverse(file, {\n JSXAttribute(path) {\n if (!t.isJSXIdentifier(path.node.name) || !/^on[A-Z]/.test(path.node.name.name)) return;\n const value = path.node.value;\n if (\n !t.isJSXExpressionContainer(value) ||\n (!t.isArrowFunctionExpression(value.expression) &&\n !t.isFunctionExpression(value.expression))\n ) {\n return;\n }\n value.expression = stabilizeDeferredEventCurrentTarget(value.expression, compilerSetters);\n },\n });\n const expression = (file.program.body[0] as t.ExpressionStatement).expression;\n return t.isJSXElement(expression) ? expression : t.cloneNode(root, true);\n}\n\nfunction analyzeKeyedRowTree(\n row: t.JSXElement,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n safeGlobals: ReadonlySet<string>,\n compilerSetters: ReadonlySet<string>,\n): {\n bindings?: PendingKeyedRowBinding[];\n events?: PendingKeyedRowEvent[];\n conditionals?: PendingKeyedRowConditional[];\n reason?: string;\n} {\n if (\n renderCallback.async ||\n renderCallback.generator ||\n renderCallback.params.length < 1 ||\n renderCallback.params.length > 2 ||\n !t.isIdentifier(renderCallback.params[0]) ||\n (renderCallback.params[1] !== undefined && !t.isIdentifier(renderCallback.params[1]))\n ) {\n return { reason: \"compiled keyed rows require item and optional index identifiers\" };\n }\n\n const bindings: PendingKeyedRowBinding[] = [];\n const events: PendingKeyedRowEvent[] = [];\n const conditionals: PendingKeyedRowConditional[] = [];\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled keyed rows support host elements only\";\n }\n if (tag.name === \"svg\") return \"compiled keyed rows do not support SVG yet\";\n const attributeNames = new Set(\n element.openingElement.attributes\n .filter((attribute): attribute is t.JSXAttribute => t.isJSXAttribute(attribute))\n .map(jsxAttributeName)\n .filter((name): name is string => name !== undefined),\n );\n const controlled = attributeNames.has(\"value\") || attributeNames.has(\"checked\");\n if (attributeNames.has(\"contentEditable\")) {\n return \"content-editable keyed rows require React ownership\";\n }\n if (tag.name === \"input\" && controlled) {\n const type = jsxAttribute(element, \"type\");\n const staticType = staticJsxAttributeString(type);\n if (type && staticType === undefined) {\n return \"controlled keyed row inputs require a static type\";\n }\n if (attributeNames.has(\"value\") && staticType?.toLowerCase() === \"file\") {\n return \"file inputs require React ownership\";\n }\n }\n if (tag.name === \"textarea\" && controlled && meaningfulJsxChildren(element).length > 0) {\n return \"controlled keyed row textareas cannot also use children\";\n }\n if (tag.name === \"select\" && controlled && controlledSelectHasDynamicOptions(element)) {\n return \"controlled keyed row selects require static options\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return \"compiled keyed rows do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"compiled keyed rows do not support namespaced JSX attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `compiled keyed row ${name} requires React ownership`;\n }\n if (name === \"key\") continue;\n if (/^on[A-Z]/.test(name)) {\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n (!t.isArrowFunctionExpression(attribute.value.expression) &&\n !t.isFunctionExpression(attribute.value.expression))\n ) {\n return \"interactive compiled keyed rows require inline synchronous event handlers\";\n }\n const handler = attribute.value.expression;\n if (handler.async || handler.generator) {\n return \"interactive compiled keyed row handlers must be synchronous\";\n }\n if (containsDirectHookCall(handler)) {\n return \"Hooks cannot be called inside compiled keyed row handlers\";\n }\n const unsupported = validateKeyedRowEventHandler(handler);\n if (unsupported) {\n return `interactive compiled keyed row handlers cannot use ${unsupported}`;\n }\n events.push({\n id: events.length,\n path: [...path],\n name,\n value: stabilizeDeferredEventCurrentTarget(handler, compilerSetters),\n });\n continue;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"compiled keyed row styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"compiled keyed row styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"compiled keyed row style names must use camelCase or a CSS custom property\";\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return `compiled keyed row style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") return \"compiled keyed row children props are not supported yet\";\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `compiled keyed row ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const meaningfulChildren = meaningfulJsxChildren(element);\n const conditionalChild = meaningfulChildren.find(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n conditionalBlockShape(child.expression) !== null,\n );\n if (conditionalChild && !t.isJSXEmptyExpression(conditionalChild.expression)) {\n if (meaningfulChildren.length !== 1) {\n return \"compiled keyed row conditionals must be the only child of a host container\";\n }\n const shape = conditionalBlockShape(conditionalChild.expression);\n if (!shape) return \"compiled keyed row conditional shape is not supported\";\n const testUnsupported = validateDerivedExpression(shape.test, safeGlobals);\n if (testUnsupported) {\n return `compiled keyed row conditional test cannot use ${testUnsupported}`;\n }\n const truthyAnalysis = shape.truthy\n ? analyzeHostConditionalTree(shape.truthy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n const falsyAnalysis = shape.falsy\n ? analyzeHostConditionalTree(shape.falsy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n if (truthyAnalysis.reason || falsyAnalysis.reason) {\n return (\n truthyAnalysis.reason ||\n falsyAnalysis.reason ||\n \"compiled keyed row conditional branch is not supported\"\n );\n }\n conditionals.push({\n id: conditionals.length,\n path: [...path],\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy ? t.cloneNode(shape.truthy, true) : undefined,\n falsy: shape.falsy ? t.cloneNode(shape.falsy, true) : undefined,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n });\n return undefined;\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"compiled keyed rows do not support fragments yet\";\n }\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n for (const child of expressions) {\n const unsupported = validateDerivedExpression(child.expression as t.Expression, safeGlobals);\n if (unsupported) return `compiled keyed row text cannot use ${unsupported}`;\n }\n if (nestedElements.length > 0 && expressions.length > 0) {\n return \"compiled keyed rows do not support dynamic text beside nested elements yet\";\n }\n if (nestedElements.length === 0 && expressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({ kind: \"text\", path: [...path], value: t.arrayExpression(parts) });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(row, []);\n return reason ? { reason } : { bindings, events, conditionals };\n}\n\ninterface KeyedRowChildShape extends KeyedRowsShape {\n source: t.Expression | t.JSXElement;\n}\n\nfunction analyzeKeyedRowChild(\n child: t.JSXElement[\"children\"][number],\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n): KeyedRowChildShape | undefined {\n let collection: t.Expression;\n let keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n let renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n let row: t.JSXElement;\n let dependencies: number[];\n let syntax: \"map\" | \"list\";\n let source: t.Expression | t.JSXElement;\n\n if (\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n isMapCall(child.expression)\n ) {\n const result = analyzeMapList(child.expression, statesByValue, safeGlobals);\n if (result.reason) return undefined;\n const callback = child.expression.arguments[0];\n if (!t.isArrowFunctionExpression(callback) && !t.isFunctionExpression(callback))\n return undefined;\n const returned = returnedExpression(callback);\n if (!returned || !t.isJSXElement(returned)) return undefined;\n const key = jsxKeyExpression(returned);\n if (!key) return undefined;\n collection = (child.expression.callee as t.MemberExpression).object as t.Expression;\n keyCallback = t.arrowFunctionExpression(\n callback.params.map((parameter) => t.cloneNode(parameter, true)) as t.Identifier[],\n cloneExpression(key),\n );\n renderCallback = callback;\n row = returned;\n dependencies = result.dependencies || [];\n syntax = \"map\";\n source = child.expression;\n } else if (t.isJSXElement(child) && isPublicListElement(child, listNames)) {\n const result = analyzePublicList(child, statesByValue, safeGlobals);\n if (result.reason) return undefined;\n const each = listAttributeExpression(child, \"each\");\n const by = listAttributeExpression(child, \"by\");\n const renderChild = meaningfulJsxChildren(child)[0];\n if (\n !each ||\n (!t.isArrowFunctionExpression(by) && !t.isFunctionExpression(by)) ||\n !t.isJSXExpressionContainer(renderChild) ||\n t.isJSXEmptyExpression(renderChild.expression) ||\n (!t.isArrowFunctionExpression(renderChild.expression) &&\n !t.isFunctionExpression(renderChild.expression))\n ) {\n return undefined;\n }\n const returned = returnedExpression(renderChild.expression);\n if (!returned || !t.isJSXElement(returned)) return undefined;\n collection = each;\n keyCallback = by;\n renderCallback = renderChild.expression;\n row = returned;\n dependencies = result.dependencies || [];\n syntax = \"list\";\n source = child;\n } else {\n return undefined;\n }\n\n const rowAnalysis = analyzeKeyedRowTree(\n row,\n renderCallback,\n safeGlobals,\n new Set([...statesByValue.values()].map((state) => state.setterName)),\n );\n if (rowAnalysis.reason) return undefined;\n return {\n source,\n collection,\n keyCallback,\n renderCallback,\n row,\n dependencies,\n bindings: rowAnalysis.bindings || [],\n events: rowAnalysis.events || [],\n conditionals: rowAnalysis.conditionals || [],\n syntax,\n };\n}\n\nfunction analyzeKeyedRowsContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n): KeyedRowsShape | undefined {\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n for (const attribute of container.openingElement.attributes) {\n if (\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression) &&\n !/^on[A-Z]/.test(attribute.name.name) &&\n collectStateDependencies(attribute.value.expression, statesByValue).length > 0\n ) {\n return undefined;\n }\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length !== 1) return undefined;\n return analyzeKeyedRowChild(children[0], statesByValue, safeGlobals, listNames);\n}\n\nfunction isStaticKeyedRangeSibling(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n for (const child of meaningfulJsxChildren(element)) {\n if (t.isJSXFragment(child)) return false;\n if (t.isJSXElement(child)) {\n if (!isHostElement(child) || !isStaticKeyedRangeSibling(child, statesByValue, safeGlobals)) {\n return false;\n }\n continue;\n }\n if (\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n !isTextExpression(child.expression, statesByValue, safeGlobals)\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction analyzeKeyedRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n allowSingleRange = false,\n): { ranges: KeyedRangePlan[]; trailing: number; dependencies: number[] } | undefined {\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < (allowSingleRange ? 1 : 2)) return undefined;\n const ranges: KeyedRangePlan[] = [];\n const dependencies = new Set<number>();\n let staticBefore = 0;\n for (const child of children) {\n const range = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames);\n if (range) {\n if (range.events.length > 0 || range.conditionals.length > 0) return undefined;\n ranges.push({\n before: staticBefore,\n source: range.source,\n collection: range.collection,\n keyCallback: range.keyCallback,\n renderCallback: range.renderCallback,\n row: range.row,\n bindings: range.bindings,\n syntax: range.syntax,\n });\n for (const dependency of range.dependencies) dependencies.add(dependency);\n staticBefore = 0;\n continue;\n }\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n if (!isStaticKeyedRangeSibling(child, statesByValue, safeGlobals)) return undefined;\n staticBefore += 1;\n }\n if (ranges.length === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n };\n}\n\nfunction analyzeHostConditionalTree(\n branch: t.JSXElement,\n safeGlobals: ReadonlySet<string>,\n): { bindings?: PendingKeyedRowBinding[]; reason?: string } {\n const bindings: PendingKeyedRowBinding[] = [];\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiler-owned conditionals support host elements only\";\n }\n if (tag.name === \"svg\") return \"compiler-owned conditionals do not support SVG yet\";\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return \"compiler-owned conditionals do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"compiler-owned conditionals do not support namespaced JSX attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\" || name === \"key\") {\n return `compiler-owned conditional ${name} requires React ownership`;\n }\n if (/^on[A-Z]/.test(name)) {\n return \"compiler-owned conditional events require React ownership\";\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"compiler-owned conditional styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"compiler-owned conditional styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"compiler-owned conditional style names must use camelCase or a CSS custom property\";\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return `compiler-owned conditional style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") {\n return \"compiler-owned conditional children props are not supported yet\";\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `compiler-owned conditional ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"compiler-owned conditionals do not support fragments yet\";\n }\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n for (const child of expressions) {\n const unsupported = validateDerivedExpression(child.expression as t.Expression, safeGlobals);\n if (unsupported) return `compiler-owned conditional text cannot use ${unsupported}`;\n }\n if (nestedElements.length > 0 && expressions.length > 0) {\n return \"compiler-owned conditionals do not support dynamic text beside nested elements yet\";\n }\n if (nestedElements.length === 0 && expressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({ kind: \"text\", path: [...path], value: t.arrayExpression(parts) });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(branch, []);\n return reason ? { reason } : { bindings };\n}\n\nfunction analyzeHostConditionalContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): Omit<HostConditionalPlan, \"kind\" | \"id\" | \"parent\" | \"source\"> | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\"\n ) {\n return undefined;\n }\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n for (const attribute of container.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) return undefined;\n if (/^on[A-Z]/.test(attribute.name.name) || attribute.name.name === \"key\") return undefined;\n // React does not revisit the adopted container on compiler-cell or parent-prop updates.\n // Keep every container property static; dynamic work belongs to the owned branch bindings.\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n )\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (\n children.length !== 1 ||\n !t.isJSXExpressionContainer(children[0]) ||\n t.isJSXEmptyExpression(children[0].expression)\n ) {\n return undefined;\n }\n const shape = conditionalBlockShape(children[0].expression);\n if (!shape || validateDerivedExpression(shape.test, safeGlobals)) return undefined;\n\n const truthyAnalysis = shape.truthy\n ? analyzeHostConditionalTree(shape.truthy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n const falsyAnalysis = shape.falsy\n ? analyzeHostConditionalTree(shape.falsy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n if (truthyAnalysis.reason || falsyAnalysis.reason) return undefined;\n\n const dependencies = new Set(collectStateDependencies(shape.test, statesByValue));\n for (const binding of [...(truthyAnalysis.bindings || []), ...(falsyAnalysis.bindings || [])]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n return {\n dependencies: [...dependencies].sort((left, right) => left - right),\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n };\n}\n\nfunction keyedListBoundary(\n blockRuntime: t.Identifier,\n plan: KeyedListPlan,\n source: t.Expression,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedList\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(source))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction hostElementDescriptor(element: t.JSXElement): t.ObjectExpression {\n const tag = element.openingElement.name as t.JSXIdentifier;\n const attributes: t.ObjectExpression[] = [];\n const styles: t.ObjectExpression[] = [];\n\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute)) continue;\n const name = jsxAttributeName(attribute);\n if (!name || name === \"key\" || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\") {\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n t.isObjectExpression(attribute.value.expression)\n ) {\n for (const property of attribute.value.expression.properties) {\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) continue;\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : (property.key as t.StringLiteral).value;\n styles.push(\n t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(propertyName)),\n t.objectProperty(t.identifier(\"value\"), cloneExpression(property.value)),\n ]),\n );\n }\n }\n continue;\n }\n\n const value = attribute.value\n ? t.isStringLiteral(attribute.value)\n ? t.stringLiteral(attribute.value.value)\n : t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n ? cloneExpression(attribute.value.expression)\n : t.identifier(\"undefined\")\n : t.booleanLiteral(true);\n attributes.push(\n t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(name)),\n t.objectProperty(t.identifier(\"value\"), value),\n ]),\n );\n }\n\n const children: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) children.push(t.stringLiteral(text));\n } else if (t.isJSXElement(child)) {\n children.push(hostElementDescriptor(child));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n children.push(cloneExpression(child.expression));\n }\n }\n\n return t.objectExpression([\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(\"element\")),\n t.objectProperty(t.identifier(\"tag\"), t.stringLiteral(tag.name)),\n t.objectProperty(t.identifier(\"attributes\"), t.arrayExpression(attributes)),\n t.objectProperty(t.identifier(\"styles\"), t.arrayExpression(styles)),\n t.objectProperty(t.identifier(\"children\"), t.arrayExpression(children)),\n ]);\n}\n\nfunction keyedRowBindingObject(\n binding: PendingKeyedRowBinding,\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n ];\n if (binding.name) {\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n }\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(binding.value),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction uniqueLocalIdentifier(base: string, nodes: readonly t.Node[]): t.Identifier {\n const names = new Set<string>();\n for (const node of nodes) {\n t.traverseFast(node, (child) => {\n if (t.isIdentifier(child)) names.add(child.name);\n });\n }\n let name = base;\n let suffix = 2;\n while (names.has(name)) name = `${base}${suffix++}`;\n return t.identifier(name);\n}\n\nfunction rewriteKeyedRowEventAttributes(\n row: t.JSXElement,\n events: readonly PendingKeyedRowEvent[],\n eventFactory: t.Identifier,\n item: t.Identifier,\n index: t.Expression,\n): void {\n const eventByLocation = new Map(\n events.map((event) => [`${event.path.join(\".\")}:${event.name}`, event] as const),\n );\n const visit = (element: t.JSXElement, path: number[]): void => {\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute)) continue;\n const name = jsxAttributeName(attribute);\n if (!name || !/^on[A-Z]/.test(name)) continue;\n const event = eventByLocation.get(`${path.join(\".\")}:${name}`);\n if (!event) continue;\n attribute.value = t.jsxExpressionContainer(\n t.callExpression(t.cloneNode(eventFactory), [\n t.cloneNode(item),\n t.cloneNode(index),\n t.numericLiteral(event.id),\n ]),\n );\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n visit(row, []);\n}\n\nfunction rewriteKeyedRowConditionalExpressions(\n row: t.JSXElement,\n conditionals: readonly PendingKeyedRowConditional[],\n conditionalFactory: t.Identifier,\n item: t.Identifier,\n index: t.Expression,\n renderParameters: readonly t.Identifier[],\n): void {\n const conditionalByLocation = new Map(\n conditionals.map((conditional) => [conditional.path.join(\".\"), conditional] as const),\n );\n const visit = (element: t.JSXElement, path: number[]): void => {\n const conditional = conditionalByLocation.get(path.join(\".\"));\n if (conditional) {\n element.children = element.children.map((child) => {\n if (\n !t.isJSXExpressionContainer(child) ||\n t.isJSXEmptyExpression(child.expression) ||\n !conditionalBlockShape(child.expression)\n ) {\n return child;\n }\n return t.jsxExpressionContainer(\n t.callExpression(t.cloneNode(conditionalFactory), [\n t.cloneNode(item),\n t.cloneNode(index),\n t.numericLiteral(conditional.id),\n t.arrowFunctionExpression(\n renderParameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(child.expression),\n ),\n ]),\n );\n });\n return;\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n visit(row, []);\n}\n\nfunction keyedRowsRenderSource(\n plan: KeyedRowsPlan,\n eventFactory: t.Identifier,\n conditionalFactory: t.Identifier,\n): t.JSXElement {\n const source = t.cloneNode(plan.source, true);\n const child = meaningfulJsxChildren(source)[0];\n let callback: t.ArrowFunctionExpression | t.FunctionExpression | undefined;\n if (\n plan.syntax === \"map\" &&\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n isMapCall(child.expression)\n ) {\n const candidate = child.expression.arguments[0];\n if (t.isArrowFunctionExpression(candidate) || t.isFunctionExpression(candidate)) {\n callback = candidate;\n }\n } else if (plan.syntax === \"list\" && t.isJSXElement(child)) {\n const renderChild = meaningfulJsxChildren(child)[0];\n if (\n t.isJSXExpressionContainer(renderChild) &&\n !t.isJSXEmptyExpression(renderChild.expression) &&\n (t.isArrowFunctionExpression(renderChild.expression) ||\n t.isFunctionExpression(renderChild.expression))\n ) {\n callback = renderChild.expression;\n }\n }\n const row = callback && returnedExpression(callback);\n const item = callback?.params[0];\n const index = callback?.params[1];\n if (!callback || !t.isJSXElement(row) || !t.isIdentifier(item)) return source;\n const runtimeIndex = t.isIdentifier(index) ? index : t.numericLiteral(0);\n if (plan.events.length > 0) {\n rewriteKeyedRowEventAttributes(row, plan.events, eventFactory, item, runtimeIndex);\n }\n if (plan.conditionals.length > 0) {\n rewriteKeyedRowConditionalExpressions(\n row,\n plan.conditionals,\n conditionalFactory,\n item,\n runtimeIndex,\n callback.params as t.Identifier[],\n );\n }\n return source;\n}\n\nfunction keyedRowEventObject(\n event: PendingKeyedRowEvent,\n renderParameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const nodes = [event.value, ...renderParameters];\n const index = renderParameters[1]\n ? t.cloneNode(renderParameters[1], true)\n : uniqueLocalIdentifier(\"_farmRowIndex\", nodes);\n const syntheticEvent = uniqueLocalIdentifier(\"_farmEvent\", [...nodes, index]);\n const parameters = [t.cloneNode(renderParameters[0], true), index, syntheticEvent];\n return t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(event.name)),\n t.objectProperty(\n t.identifier(\"invoke\"),\n t.arrowFunctionExpression(\n parameters,\n t.callExpression(t.parenthesizedExpression(t.cloneNode(event.value, true)), [\n t.cloneNode(syntheticEvent),\n ]),\n ),\n ),\n ]);\n}\n\nfunction keyedRowConditionalBranchObject(\n bindings: readonly PendingKeyedRowBinding[],\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n return t.objectExpression([\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(bindings.map((binding) => keyedRowBindingObject(binding, parameters))),\n ),\n ]);\n}\n\nfunction keyedRowConditionalObject(\n conditional: PendingKeyedRowConditional,\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"id\"), t.numericLiteral(conditional.id)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(conditional.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"test\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(conditional.test),\n ),\n ),\n t.objectProperty(t.identifier(\"logical\"), t.booleanLiteral(conditional.logical)),\n ];\n if (conditional.truthy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"truthy\"),\n keyedRowConditionalBranchObject(conditional.truthyBindings, parameters),\n ),\n );\n }\n if (conditional.falsy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"falsy\"),\n keyedRowConditionalBranchObject(conditional.falsyBindings, parameters),\n ),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction keyedRowsBoundary(blockRuntime: t.Identifier, plan: KeyedRowsPlan): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedRows\"),\n );\n const parameters = plan.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n const eventFactory = uniqueLocalIdentifier(\"_farmRowEvent\", [\n plan.source,\n ...plan.events.map((event) => event.value),\n ]);\n const conditionalFactory = uniqueLocalIdentifier(\"_farmRowConditional\", [\n plan.source,\n ...plan.conditionals.map((conditional) => conditional.test),\n ]);\n const renderSource = keyedRowsRenderSource(plan, eventFactory, conditionalFactory);\n const renderFactoryParameters =\n plan.conditionals.length > 0\n ? [t.cloneNode(eventFactory), t.cloneNode(conditionalFactory)]\n : plan.events.length > 0\n ? [t.cloneNode(eventFactory)]\n : [];\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression(renderFactoryParameters, renderSource),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"items\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(plan.collection))),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"rowKey\"),\n t.jsxExpressionContainer(t.cloneNode(plan.keyCallback, true)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"create\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n hostElementDescriptor(plan.row),\n ),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.bindings.map((binding) => keyedRowBindingObject(binding, parameters)),\n ),\n ),\n ),\n ...(plan.events.length > 0\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"events\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.events.map((event) => keyedRowEventObject(event, parameters)),\n ),\n ),\n ),\n ]\n : []),\n ...(plan.conditionals.length > 0\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"conditionals\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.conditionals.map((conditional) =>\n keyedRowConditionalObject(conditional, parameters),\n ),\n ),\n ),\n ),\n ]\n : []),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction keyedRangeObject(range: KeyedRangePlan): t.ObjectExpression {\n const parameters = range.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n return t.objectExpression([\n t.objectProperty(t.identifier(\"before\"), t.numericLiteral(range.before)),\n t.objectProperty(\n t.identifier(\"items\"),\n t.arrowFunctionExpression([], cloneExpression(range.collection)),\n ),\n t.objectProperty(t.identifier(\"rowKey\"), t.cloneNode(range.keyCallback, true)),\n t.objectProperty(\n t.identifier(\"create\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n hostElementDescriptor(range.row),\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n range.bindings.map((binding) => keyedRowBindingObject(binding, parameters)),\n ),\n ),\n ]);\n}\n\nfunction keyedRangesBoundary(blockRuntime: t.Identifier, plan: KeyedRangesPlan): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n let rootRef: t.Expression | undefined;\n source.openingElement.attributes = source.openingElement.attributes.filter((attribute) => {\n if (\n !t.isJSXAttribute(attribute) ||\n jsxAttributeName(attribute) !== \"ref\" ||\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n return true;\n }\n rootRef = cloneExpression(attribute.value.expression);\n return false;\n });\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n ...(rootRef\n ? [t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.jsxExpressionContainer(rootRef))]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"ranges\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.ranges.map((range) => keyedRangeObject(range))),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"trailing\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.trailing)),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction hostConditionalBranchObject(\n branch: t.JSXElement,\n bindings: readonly PendingKeyedRowBinding[],\n): t.ObjectExpression {\n return t.objectExpression([\n t.objectProperty(\n t.identifier(\"create\"),\n t.arrowFunctionExpression([], hostElementDescriptor(branch)),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(bindings.map((binding) => keyedRowBindingObject(binding, []))),\n ),\n ]);\n}\n\nfunction hostConditionalBoundary(\n blockRuntime: t.Identifier,\n plan: HostConditionalPlan,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"HostConditional\"),\n );\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], t.cloneNode(plan.source, true))),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"test\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(plan.test))),\n ),\n ];\n if (plan.logical) attributes.push(t.jsxAttribute(t.jsxIdentifier(\"logical\")));\n if (plan.truthy) {\n attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"truthy\"),\n t.jsxExpressionContainer(hostConditionalBranchObject(plan.truthy, plan.truthyBindings)),\n ),\n );\n }\n if (plan.falsy) {\n attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"falsy\"),\n t.jsxExpressionContainer(hostConditionalBranchObject(plan.falsy, plan.falsyBindings)),\n ),\n );\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction analyzeComponentIslandElement(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n allowedComponentNames: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n const name = element.openingElement.name;\n if (!t.isJSXIdentifier(name) || !isComponentName(name.name)) {\n return { reason: \"component islands require a direct component identifier\" };\n }\n if (!allowedComponentNames.has(name.name)) {\n return {\n reason: `component island ${name.name} must reference a stable module-level component`,\n };\n }\n if (meaningfulJsxChildren(element).length > 0) {\n return { reason: `component island ${name.name} does not support children yet` };\n }\n\n const dependencies = new Set<number>();\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return { reason: `component island ${name.name} does not support JSX attribute spreads` };\n }\n const attributeName = jsxAttributeName(attribute);\n if (!attributeName) {\n return { reason: `component island ${name.name} does not support namespaced JSX attributes` };\n }\n if (attributeName === \"ref\" || attributeName === \"key\" || attributeName === \"children\") {\n return { reason: `component island ${name.name} does not support ${attributeName} yet` };\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const isEventFunction =\n /^on[A-Z]/.test(attributeName) &&\n (t.isArrowFunctionExpression(expression) || t.isFunctionExpression(expression));\n if (!isEventFunction) {\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) {\n return {\n reason: `component island ${name.name} prop ${attributeName} cannot use ${unsupported}`,\n };\n }\n }\n collectStateDependencies(expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n }\n\n return { dependencies: [...dependencies].sort((left, right) => left - right) };\n}\n\nfunction componentIslandBoundary(\n blockRuntime: t.Identifier,\n plan: ComponentIslandPlan,\n source: t.JSXElement,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"Component\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], t.cloneNode(source, true))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\ninterface ComposableBlockAnalysis {\n plans?: ComposableBlockPlan[];\n componentElements?: Set<t.JSXElement>;\n conditionalExpressions?: Set<t.Expression>;\n ownedElements?: Set<t.JSXElement>;\n keyedExpressions?: Set<t.Expression>;\n reason?: string;\n}\n\nfunction analyzeComposableBlocks(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n allowedComponentNames: ReadonlySet<string>,\n): ComposableBlockAnalysis {\n const plans: ComposableBlockPlan[] = [];\n const componentElements = new Set<t.JSXElement>();\n const conditionalExpressions = new Set<t.Expression>();\n const ownedElements = new Set<t.JSXElement>();\n const keyedExpressions = new Set<t.Expression>();\n let nextId = 0;\n\n const mergeDependencies = (target: Set<number>, dependencies: Iterable<number>) => {\n for (const dependency of dependencies) target.add(dependency);\n };\n\n const visitHost = (\n element: t.JSXElement,\n parent: number | undefined,\n insideConditional: boolean,\n ): { dependencies: Set<number>; reason?: string } => {\n const dependencies = new Set<number>();\n if (!isHostElement(element)) {\n return {\n dependencies,\n reason: insideConditional\n ? \"conditional blocks currently support host elements only\"\n : \"compiled trees currently support host elements only\",\n };\n }\n\n if (insideConditional) {\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return {\n dependencies,\n reason: \"conditional blocks do not support JSX attribute spreads\",\n };\n }\n const name = jsxAttributeName(attribute);\n if (!name) {\n return {\n dependencies,\n reason: \"conditional blocks do not support namespaced JSX attributes\",\n };\n }\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return {\n dependencies,\n reason: `conditional block ${name} requires React ownership`,\n };\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression) ||\n /^on[A-Z]/.test(name)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return {\n dependencies,\n reason: \"conditional block styles must use one inline object literal\",\n };\n }\n for (const property of expression.properties) {\n if (!t.isObjectProperty(property) || property.computed) {\n return {\n dependencies,\n reason:\n \"conditional block styles do not support spreads, methods, or computed properties\",\n };\n }\n if (!t.isExpression(property.value)) {\n return {\n dependencies,\n reason: \"conditional block style properties must use expression values\",\n };\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block style cannot use ${unsupported}`,\n };\n }\n mergeDependencies(\n dependencies,\n collectStateDependencies(property.value, statesByValue),\n );\n }\n continue;\n }\n\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block attribute ${name} cannot use ${unsupported}`,\n };\n }\n mergeDependencies(dependencies, collectStateDependencies(expression, statesByValue));\n }\n }\n\n for (const child of element.children) {\n if (t.isJSXFragment(child)) {\n if (insideConditional) {\n return {\n dependencies,\n reason: \"conditional blocks do not support fragments yet\",\n };\n }\n continue;\n }\n\n if (t.isJSXElement(child)) {\n if (isHostElement(child)) {\n const keyedRanges = insideConditional\n ? undefined\n : analyzeKeyedRangesContainer(child, statesByValue, safeGlobals, listNames);\n if (keyedRanges) {\n plans.push({\n kind: \"keyed-ranges\",\n id: nextId++,\n parent,\n dependencies: keyedRanges.dependencies,\n source: child,\n ranges: keyedRanges.ranges,\n trailing: keyedRanges.trailing,\n });\n for (const range of keyedRanges.ranges) {\n if (t.isJSXElement(range.source)) ownedElements.add(range.source);\n else keyedExpressions.add(range.source);\n }\n continue;\n }\n const hostConditional = analyzeHostConditionalContainer(\n child,\n statesByValue,\n safeGlobals,\n );\n if (hostConditional) {\n plans.push({\n kind: \"host-conditional\",\n id: nextId++,\n parent,\n source: child,\n ...hostConditional,\n });\n ownedElements.add(child);\n continue;\n }\n const keyedRows = analyzeKeyedRowsContainer(child, statesByValue, safeGlobals, listNames);\n if (keyedRows) {\n plans.push({\n kind: \"keyed-rows\",\n id: nextId++,\n parent,\n dependencies: keyedRows.dependencies,\n source: child,\n collection: keyedRows.collection,\n keyCallback: keyedRows.keyCallback,\n renderCallback: keyedRows.renderCallback,\n row: keyedRows.row,\n bindings: keyedRows.bindings,\n events: keyedRows.events,\n conditionals: keyedRows.conditionals,\n syntax: keyedRows.syntax,\n });\n ownedElements.add(child);\n continue;\n }\n const nested = visitHost(child, parent, insideConditional);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(dependencies, nested.dependencies);\n continue;\n }\n\n if (isPublicListElement(child, listNames)) {\n const result = analyzePublicList(child, statesByValue, safeGlobals);\n if (result.reason) return { dependencies, reason: result.reason };\n const plan: KeyedListPlan = {\n kind: \"keyed-list\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: child,\n syntax: \"list\",\n };\n plans.push(plan);\n ownedElements.add(child);\n continue;\n }\n\n const result = analyzeComponentIslandElement(\n child,\n statesByValue,\n safeGlobals,\n allowedComponentNames,\n );\n if (result.reason) return { dependencies, reason: result.reason };\n componentElements.add(child);\n if ((result.dependencies || []).length > 0) {\n plans.push({\n kind: \"component\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: child,\n });\n }\n continue;\n }\n\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n continue;\n }\n\n const expression = child.expression;\n const shape = conditionalBlockShape(expression);\n if (shape) {\n const unsupported = validateDerivedExpression(shape.test, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block test cannot use ${unsupported}`,\n };\n }\n const plan: ConditionalBlockPlan = {\n kind: \"conditional\",\n id: nextId++,\n parent,\n dependencies: collectStateDependencies(shape.test, statesByValue),\n source: expression,\n };\n plans.push(plan);\n conditionalExpressions.add(expression);\n const ownedDependencies = new Set(plan.dependencies);\n for (const branch of shape.branches) {\n const nested = visitHost(branch, plan.id, true);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(ownedDependencies, nested.dependencies);\n }\n plan.dependencies = [...ownedDependencies].sort((left, right) => left - right);\n continue;\n }\n\n if (isMapCall(expression)) {\n const result = analyzeMapList(expression, statesByValue, safeGlobals);\n if (result.reason) return { dependencies, reason: result.reason };\n plans.push({\n kind: \"keyed-list\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: expression,\n syntax: \"map\",\n });\n keyedExpressions.add(expression);\n continue;\n }\n\n if (insideConditional) {\n if (!isTextExpression(expression, statesByValue, safeGlobals)) {\n return {\n dependencies,\n reason: \"conditional block children must keep one supported block or static host tree\",\n };\n }\n mergeDependencies(dependencies, collectStateDependencies(expression, statesByValue));\n }\n }\n\n return { dependencies };\n };\n\n const rootRanges = analyzeKeyedRangesContainer(root, statesByValue, safeGlobals, listNames, true);\n if (rootRanges) {\n plans.push({\n kind: \"keyed-ranges\",\n id: nextId++,\n dependencies: rootRanges.dependencies,\n source: root,\n ranges: rootRanges.ranges,\n trailing: rootRanges.trailing,\n });\n for (const range of rootRanges.ranges) {\n if (t.isJSXElement(range.source)) ownedElements.add(range.source);\n else keyedExpressions.add(range.source);\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n\n const result = visitHost(root, undefined, false);\n if (result.reason) return { reason: result.reason };\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n}\n\nfunction conditionalBlockBoundary(\n blockRuntime: t.Identifier,\n plan: ConditionalBlockPlan,\n source: t.Expression,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"Conditional\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(source))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction lowerComposableBlocks(\n root: t.JSXElement,\n plans: readonly ComposableBlockPlan[],\n blockRuntime: t.Identifier,\n listNames: ReadonlySet<string>,\n): t.JSXElement {\n const planBySource = new Map<t.Node, ComposableBlockPlan>(\n plans.map((plan) => [plan.source, plan]),\n );\n const rootPlan = planBySource.get(root);\n if (rootPlan?.kind === \"keyed-ranges\") {\n return keyedRangesBoundary(blockRuntime, rootPlan);\n }\n\n const visit = (element: t.JSXElement): void => {\n element.children = element.children.map((child) => {\n if (t.isJSXElement(child)) {\n const plan = planBySource.get(child);\n if (plan?.kind === \"host-conditional\") {\n return hostConditionalBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"keyed-rows\") {\n return keyedRowsBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"keyed-ranges\") {\n return keyedRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"component\") {\n return componentIslandBoundary(blockRuntime, plan, child);\n }\n if (plan?.kind === \"keyed-list\" && isPublicListElement(child, listNames)) {\n return keyedListBoundary(blockRuntime, plan, child);\n }\n if (isHostElement(child)) visit(child);\n return child;\n }\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n return child;\n }\n\n const plan = planBySource.get(child.expression);\n if (plan?.kind === \"conditional\") {\n const shape = conditionalBlockShape(child.expression);\n for (const branch of shape?.branches || []) visit(branch);\n return conditionalBlockBoundary(blockRuntime, plan, child.expression);\n }\n if (plan?.kind === \"keyed-list\") {\n return keyedListBoundary(blockRuntime, plan, child.expression);\n }\n return child;\n });\n };\n\n visit(root);\n return root;\n}\n\nfunction assignStableBindingTargets(bindings: readonly PendingBinding[]): void {\n const targetByPath = new Map<string, number>();\n for (const binding of bindings) {\n if (binding.kind === \"block\") continue;\n const key = binding.path.join(\".\");\n let target = targetByPath.get(key);\n if (target === undefined) {\n target = targetByPath.size;\n targetByPath.set(key, target);\n }\n binding.target = target;\n }\n}\n\nfunction lowerStableBindingTargets(\n root: t.JSXElement,\n bindings: readonly PendingBinding[],\n blockRuntime: t.Identifier,\n ownedElements: ReadonlySet<t.JSXElement>,\n): t.JSXElement {\n const targetByPath = new Map<string, number>();\n for (const binding of bindings) {\n if (binding.kind !== \"block\" && binding.target !== undefined) {\n targetByPath.set(binding.path.join(\".\"), binding.target);\n }\n }\n\n const visit = (element: t.JSXElement, path: number[]): void => {\n const target = targetByPath.get(path.join(\".\"));\n if (target !== undefined && path.length > 0) {\n element.openingElement.attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"ref\"),\n t.jsxExpressionContainer(\n t.callExpression(\n t.memberExpression(t.cloneNode(blockRuntime), t.identifier(\"target\")),\n [t.numericLiteral(target)],\n ),\n ),\n ),\n );\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child) || !isHostElement(child)) continue;\n if (ownedElements.has(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n\n visit(root, []);\n return root;\n}\n\nfunction analyzeHostTree(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n conditionalExpressions: ReadonlySet<t.Expression>,\n keyedExpressions: ReadonlySet<t.Expression>,\n ownedElements: ReadonlySet<t.JSXElement>,\n componentElements: ReadonlySet<t.JSXElement>,\n): { bindings?: PendingBinding[]; reason?: string } {\n const bindings: PendingBinding[] = [];\n\n const analyzeStyle = (expression: t.Expression, path: number[]): string | undefined => {\n if (!t.isObjectExpression(expression)) {\n return \"stateful style bindings must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (!t.isObjectProperty(property) || property.computed) {\n return \"stateful style bindings do not support spreads, methods, or computed properties\";\n }\n const name = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!name || (name.includes(\"-\") && !name.startsWith(\"--\"))) {\n return \"stateful style property names must use camelCase or a CSS custom property\";\n }\n if (!t.isExpression(property.value)) {\n return `stateful style property ${name} must use an expression value`;\n }\n const dependencies = collectStateDependencies(property.value, statesByValue);\n if (dependencies.length === 0) continue;\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) return `stateful style property ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"style\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(property.value),\n });\n }\n return undefined;\n };\n\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled trees currently support host elements only\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) return \"JSX attribute spreads are not supported yet\";\n const name = jsxAttributeName(attribute);\n if (!name) return \"namespaced JSX attributes are not supported yet\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `${name} requires React ownership`;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const dependencies = collectStateDependencies(expression, statesByValue);\n if (dependencies.length === 0 || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\") {\n const reason = analyzeStyle(expression, path);\n if (reason) return reason;\n continue;\n }\n if (name === \"children\" || name === \"key\") {\n return `stateful ${name} bindings are not supported yet`;\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `stateful ${name} binding cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter(\n (child): child is t.JSXElement =>\n t.isJSXElement(child) && isHostElement(child) && !ownedElements.has(child),\n );\n const expressionChildren = element.children.filter((child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child),\n );\n for (const child of expressionChildren) {\n if (t.isJSXEmptyExpression(child.expression)) continue;\n if (conditionalExpressions.has(child.expression)) continue;\n if (keyedExpressions.has(child.expression)) continue;\n if (!isTextExpression(child.expression, statesByValue, safeGlobals)) {\n return \"dynamic child structures require React reconciliation\";\n }\n }\n\n const hasOwnedElement = element.children.some(\n (child) => t.isJSXElement(child) && ownedElements.has(child),\n );\n const hasComponentElement = element.children.some(\n (child) => t.isJSXElement(child) && componentElements.has(child),\n );\n const hasDynamicBlocks =\n hasOwnedElement ||\n hasComponentElement ||\n expressionChildren.some(\n (child) =>\n !t.isJSXEmptyExpression(child.expression) &&\n (conditionalExpressions.has(child.expression) || keyedExpressions.has(child.expression)),\n );\n if (nestedElements.length === 0 && !hasDynamicBlocks) {\n const dependencies = new Set<number>();\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n collectStateDependencies(child.expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n parts.push(cloneExpression(child.expression));\n }\n }\n if (dependencies.size > 0) {\n bindings.push({\n kind: \"text\",\n path: [...path],\n dependencies: [...dependencies].sort((left, right) => left - right),\n value: t.arrayExpression(parts),\n });\n }\n } else {\n for (const child of expressionChildren) {\n if (\n !t.isJSXEmptyExpression(child.expression) &&\n !conditionalExpressions.has(child.expression) &&\n !keyedExpressions.has(child.expression) &&\n collectStateDependencies(child.expression, statesByValue).length > 0\n ) {\n return \"mixed element and stateful text children are not supported yet\";\n }\n }\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child) || !isHostElement(child) || ownedElements.has(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n }\n\n return undefined;\n };\n\n const reason = visit(root, []);\n return reason ? { reason } : { bindings };\n}\n\nfunction lazyInitialValue(expression?: t.Expression): t.Expression {\n const value = t.identifier(\"_initial\");\n const initializer = expression ? cloneExpression(expression) : t.identifier(\"undefined\");\n return t.callExpression(\n t.arrowFunctionExpression(\n [],\n t.blockStatement([\n t.variableDeclaration(\"const\", [t.variableDeclarator(value, initializer)]),\n t.returnStatement(\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.unaryExpression(\"typeof\", t.cloneNode(value)),\n t.stringLiteral(\"function\"),\n ),\n t.callExpression(t.cloneNode(value), []),\n t.cloneNode(value),\n ),\n ),\n ]),\n ),\n [],\n );\n}\n\nfunction analyzePropsParameter(\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n): PropsPlan | string {\n const parameter = path.node.params[0];\n if (!parameter) {\n return {\n definitionParameter: path.scope.generateUidIdentifier(\"props\"),\n destructuredNames: new Set(),\n };\n }\n if (t.isIdentifier(parameter)) {\n return {\n definitionParameter: t.cloneNode(parameter, true) as t.Identifier,\n wrapperProps: t.cloneNode(parameter, true) as t.Identifier,\n destructuredNames: new Set(),\n };\n }\n if (!t.isObjectPattern(parameter)) {\n return \"components must use zero parameters, one props identifier, or flat object props destructuring\";\n }\n\n const localNames = new Set<string>();\n for (const property of parameter.properties) {\n if (t.isRestElement(property)) {\n return \"rest properties in component props destructuring are not supported yet\";\n }\n if (property.computed) {\n return \"computed component props destructuring is not supported yet\";\n }\n let local: t.Identifier | undefined;\n if (t.isIdentifier(property.value)) {\n local = property.value;\n } else if (t.isAssignmentPattern(property.value) && t.isIdentifier(property.value.left)) {\n local = property.value.left;\n }\n if (!local) {\n return \"nested component props destructuring is not supported yet\";\n }\n if (localNames.has(local.name)) {\n return \"component props destructuring local names must be unique\";\n }\n localNames.add(local.name);\n }\n\n const definitionParameter = path.scope.generateUidIdentifier(\"props\");\n return {\n definitionParameter,\n wrapperProps: t.objectExpression(\n [...localNames].map((name) =>\n t.objectProperty(t.identifier(name), t.identifier(name), false, true),\n ),\n ),\n destructuredNames: localNames,\n };\n}\n\nfunction bindingObject(\n binding: PendingBinding,\n propsParameter: t.Identifier,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(binding.dependencies.map((part) => t.numericLiteral(part))),\n ),\n ];\n if (binding.kind === \"block\") {\n properties.push(t.objectProperty(t.identifier(\"id\"), t.numericLiteral(binding.id)));\n if (binding.parent !== undefined) {\n properties.push(t.objectProperty(t.identifier(\"parent\"), t.numericLiteral(binding.parent)));\n }\n return t.objectExpression(properties);\n }\n properties.splice(\n 1,\n 0,\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n );\n if (binding.target !== undefined) {\n properties.splice(\n 2,\n 0,\n t.objectProperty(t.identifier(\"target\"), t.numericLiteral(binding.target)),\n );\n }\n if (binding.name)\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter)],\n rewriteStateAccess(binding.value, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction wrapperElement(definitionIdentifier: t.Identifier, props?: t.Expression): t.JSXElement {\n const name = t.jsxIdentifier(definitionIdentifier.name);\n const attributes = props ? [t.jsxSpreadAttribute(t.cloneNode(props))] : [];\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction compileCandidate(\n candidate: Candidate,\n createComponentIdentifier: t.Identifier,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n moduleId: string,\n): string | undefined {\n const { path, name, statementPath } = candidate;\n if (path.node.async || path.node.generator)\n return \"async and generator components are not supported\";\n if (path.node.typeParameters) return \"generic components are not supported yet\";\n if (path.node.params.length > 1) return \"components must use at most one props parameter\";\n const propsPlan = analyzePropsParameter(path);\n if (typeof propsPlan === \"string\") return propsPlan;\n if (!t.isBlockStatement(path.node.body)) return \"components must use a block body\";\n const safeGlobals = new Set(\n [...SAFE_GLOBAL_CALLS, \"Math\"].filter((name) => !path.scope.getBinding(name)),\n );\n\n const states: StateBinding[] = [];\n const locals: LocalBinding[] = [];\n let returned: t.ReturnStatement | undefined;\n for (const statement of path.node.body.body) {\n if (t.isReturnStatement(statement)) {\n if (returned) return \"components must have one unconditional return\";\n returned = statement;\n continue;\n }\n if (t.isFunctionDeclaration(statement)) {\n if (!statement.id) return \"named event handler declarations must have a name\";\n if (statement.async || statement.generator || statement.typeParameters) {\n return `event handler ${statement.id.name} must be synchronous and non-generic`;\n }\n locals.push({\n kind: \"handler\",\n name: statement.id.name,\n value: t.toExpression(t.cloneNode(statement, true)) as t.FunctionExpression,\n });\n continue;\n }\n if (\n !t.isVariableDeclaration(statement) ||\n statement.kind !== \"const\" ||\n statement.declarations.length !== 1\n ) {\n return \"only top-level useState declarations, pure derived const values, named synchronous handlers, and one return are supported by the current compiler\";\n }\n const declaration = statement.declarations[0];\n if (t.isArrayPattern(declaration.id)) {\n if (\n declaration.id.elements.length !== 2 ||\n !t.isIdentifier(declaration.id.elements[0]) ||\n !t.isIdentifier(declaration.id.elements[1]) ||\n !isUseStateCall(declaration.init, useStateNames, reactNames) ||\n declaration.init.arguments.length > 1 ||\n (declaration.init.arguments[0] && !t.isExpression(declaration.init.arguments[0]))\n ) {\n return \"only const [value, setValue] = useState(initial) state declarations are supported\";\n }\n if (locals.length > 0) {\n return \"useState declarations must appear before derived local values and event handlers\";\n }\n states.push({\n valueName: declaration.id.elements[0].name,\n setterName: declaration.id.elements[1].name,\n index: states.length,\n initialValue: declaration.init.arguments[0] as t.Expression | undefined,\n });\n continue;\n }\n if (!t.isIdentifier(declaration.id) || !t.isExpression(declaration.init)) {\n return \"derived const values and event handlers must use one identifier and one expression\";\n }\n if (t.isArrowFunctionExpression(declaration.init) || t.isFunctionExpression(declaration.init)) {\n if (declaration.init.async || declaration.init.generator) {\n return `event handler ${declaration.id.name} must be synchronous`;\n }\n locals.push({ kind: \"handler\", name: declaration.id.name, value: declaration.init });\n } else {\n locals.push({ kind: \"derived\", name: declaration.id.name, value: declaration.init });\n }\n }\n\n if (states.length === 0) return \"no local useState binding was found\";\n if (!returned?.argument || !t.isJSXElement(returned.argument)) {\n return \"the component must return one host JSX element\";\n }\n\n const statesByValue = new Map(states.map((state) => [state.valueName, state]));\n const statesBySetter = new Map(states.map((state) => [state.setterName, state]));\n const localNames = new Set(locals.map((binding) => binding.name));\n if (localNames.size !== locals.length) return \"local binding names must be unique\";\n for (const state of states) {\n if (\n state.initialValue &&\n (collectStateDependencies(state.initialValue, statesByValue).length > 0 ||\n collectReferencedLocals(state.initialValue, localNames).length > 0 ||\n [...statesBySetter].some(([setterName]) =>\n referencesIdentifier(state.initialValue!, setterName),\n ))\n ) {\n return \"useState initializers cannot reference another local binding\";\n }\n }\n const derivedByName = new Map<string, t.Expression>();\n const handlersByName = new Map<string, HandlerBinding>();\n for (const binding of locals) {\n const forwardReferences = collectReferencedLocals(binding.value, localNames).filter(\n (reference) => !derivedByName.has(reference),\n );\n if (forwardReferences.length > 0) {\n return `${binding.kind === \"handler\" ? \"event handler\" : \"derived local\"} ${binding.name} can only reference earlier derived local values`;\n }\n const expanded = rewriteDerivedAccess(binding.value, derivedByName);\n if (binding.kind === \"handler\") {\n handlersByName.set(binding.name, {\n name: binding.name,\n value: expanded as t.ArrowFunctionExpression | t.FunctionExpression,\n });\n continue;\n }\n const unsupported = collectionPipelineMethod(expanded)\n ? validateCollectionPipeline(expanded, safeGlobals)\n : validateDerivedExpression(expanded, safeGlobals);\n if (unsupported) {\n return `derived local ${binding.name} cannot use ${unsupported}`;\n }\n derivedByName.set(binding.name, expanded);\n }\n const rootWithDerived = rewriteDerivedAccess(returned.argument, derivedByName) as t.JSXElement;\n const handlerRewrite = rewriteHandlerAccess(rootWithDerived, handlersByName);\n if (handlerRewrite.reason) return handlerRewrite.reason;\n if (!handlerRewrite.root) return \"event handlers could not be prepared safely\";\n const expandedRootWithDeferredEvents = rewriteDestructuredPropAccess(\n handlerRewrite.root,\n propsPlan.destructuredNames,\n propsPlan.definitionParameter,\n );\n const expandedRoot = stabilizeDeferredEventCurrentTargets(\n expandedRootWithDeferredEvents,\n new Set(states.map((state) => state.setterName)),\n );\n const setterReason = validateSetterUsage(expandedRoot, statesBySetter);\n if (setterReason) return setterReason;\n const referencedComponentNames = new Set<string>();\n traverse(expressionFile(t.cloneNode(expandedRoot, true)), {\n JSXOpeningElement(componentPath) {\n const componentName = componentPath.node.name;\n if (t.isJSXIdentifier(componentName) && isComponentName(componentName.name)) {\n referencedComponentNames.add(componentName.name);\n }\n },\n });\n const allowedComponentNames = new Set(\n [...referencedComponentNames].filter((componentName) => {\n if (listNames.has(componentName)) return false;\n const binding = path.scope.getBinding(componentName);\n return Boolean(\n binding?.constant &&\n binding.scope.path.isProgram() &&\n binding.kind !== \"let\" &&\n binding.kind !== \"var\",\n );\n }),\n );\n const blockAnalysis = analyzeComposableBlocks(\n expandedRoot,\n statesByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n if (blockAnalysis.reason) return blockAnalysis.reason;\n const blockPlans = blockAnalysis.plans || [];\n const analysis = analyzeHostTree(\n expandedRoot,\n statesByValue,\n safeGlobals,\n blockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n blockAnalysis.keyedExpressions || new Set<t.Expression>(),\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n blockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (analysis.reason) return analysis.reason;\n assignStableBindingTargets(analysis.bindings || []);\n\n const stateParameter = path.scope.generateUidIdentifier(\"farmState\");\n const blockParameter = path.scope.generateUidIdentifier(\"farmBlocks\");\n const definitionIdentifier = path.scope.generateUidIdentifier(`${name}Compiled`);\n const propsParameter = propsPlan.definitionParameter;\n const rootWithTargets = lowerStableBindingTargets(\n expandedRoot,\n analysis.bindings || [],\n blockParameter,\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n );\n const rootWithBlocks = lowerComposableBlocks(\n rootWithTargets,\n blockPlans,\n blockParameter,\n listNames,\n );\n const rewrittenRoot = rewriteStateAccess(\n rootWithBlocks,\n stateParameter,\n statesByValue,\n statesBySetter,\n ) as t.JSXElement;\n const definition = t.callExpression(t.cloneNode(createComponentIdentifier), [\n t.objectExpression([\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(name)),\n t.spreadElement(\n t.conditionalExpression(\n t.memberExpression(\n t.metaProperty(t.identifier(\"import\"), t.identifier(\"meta\")),\n t.identifier(\"hot\"),\n ),\n t.objectExpression([\n t.objectProperty(t.identifier(\"hmrId\"), t.stringLiteral(`${moduleId}#${name}`)),\n t.objectProperty(\n t.identifier(\"stateSignature\"),\n t.stringLiteral(String(states.length)),\n ),\n ]),\n t.objectExpression([]),\n ),\n ),\n t.objectProperty(\n t.identifier(\"initialize\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(\n states.map((state) =>\n lazyInitialValue(\n state.initialValue\n ? rewriteDestructuredPropAccess(\n state.initialValue,\n propsPlan.destructuredNames,\n propsParameter,\n )\n : undefined,\n ),\n ),\n ),\n ),\n ),\n t.objectProperty(\n t.identifier(\"render\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter), t.cloneNode(blockParameter)],\n rewrittenRoot,\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n [\n ...(analysis.bindings || []),\n ...blockPlans.map((block) => ({\n kind: \"block\" as const,\n id: block.id,\n parent: block.parent,\n dependencies: block.dependencies,\n })),\n ].map((binding) =>\n bindingObject(binding, propsParameter, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n ),\n ]),\n ]);\n\n path\n .get(\"body\")\n .replaceWith(\n t.blockStatement([\n t.returnStatement(wrapperElement(definitionIdentifier, propsPlan.wrapperProps)),\n ]),\n );\n statementPath.insertAfter(\n t.variableDeclaration(\"const\", [t.variableDeclarator(definitionIdentifier, definition)]),\n );\n return undefined;\n}\n\nfunction collectCandidates(programPath: NodePath<t.Program>): Candidate[] {\n const candidates: Candidate[] = [];\n programPath.traverse({\n FunctionDeclaration(path) {\n if (!path.node.id || !isComponentName(path.node.id.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isProgram() &&\n !parent.isExportNamedDeclaration() &&\n !parent.isExportDefaultDeclaration()\n ) {\n return;\n }\n candidates.push({\n name: path.node.id.name,\n path,\n statementPath: parent.isProgram() ? path : parent,\n });\n },\n VariableDeclarator(path) {\n if (\n !t.isIdentifier(path.node.id) ||\n !isComponentName(path.node.id.name) ||\n (!t.isFunctionExpression(path.node.init) && !t.isArrowFunctionExpression(path.node.init))\n ) {\n return;\n }\n const declaration = path.parentPath;\n const statement = declaration.parentPath;\n if (!statement) return;\n const topLevel = statement.isProgram()\n ? declaration\n : statement.isExportNamedDeclaration() && statement.parentPath.isProgram()\n ? statement\n : null;\n if (!topLevel) return;\n candidates.push({\n name: path.node.id.name,\n path: path.get(\"init\") as Candidate[\"path\"],\n statementPath: topLevel,\n });\n },\n });\n return candidates;\n}\n\nexport async function compileReactModule(\n code: string,\n id: string,\n options: NormalizedReactCompilerOptions,\n): Promise<CompileReactModuleResult> {\n const compiled: string[] = [];\n const diagnostics: CompilerDiagnostic[] = [];\n const plugin = (): PluginObj => ({\n name: \"farm-react-aot\",\n visitor: {\n Program(programPath) {\n const moduleDirectives = new Set(directiveValues(programPath.node));\n const useStateNames = new Set<string>();\n const reactNames = new Set<string>();\n const listNames = new Set<string>();\n for (const statement of programPath.node.body) {\n if (!t.isImportDeclaration(statement)) continue;\n if (statement.source.value === \"@farm.js/react/list\") {\n for (const specifier of statement.specifiers) {\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"List\" })\n ) {\n listNames.add(specifier.local.name);\n }\n }\n continue;\n }\n if (statement.source.value !== \"react\") continue;\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier) || t.isImportNamespaceSpecifier(specifier)) {\n reactNames.add(specifier.local.name);\n } else if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"useState\" })\n ) {\n useStateNames.add(specifier.local.name);\n }\n }\n }\n\n const candidates = collectCandidates(programPath);\n const createComponentIdentifier =\n programPath.scope.generateUidIdentifier(\"createCompiledComponent\");\n for (const candidate of candidates) {\n const functionDirectives = new Set(\n t.isBlockStatement(candidate.path.node.body)\n ? directiveValues(candidate.path.node.body)\n : [],\n );\n const explicitlySelected =\n moduleDirectives.has(options.directive) || functionDirectives.has(options.directive);\n if (functionDirectives.has(\"use no compiler\")) continue;\n if (options.mode === \"annotation\" && !explicitlySelected) continue;\n\n const reason = compileCandidate(\n candidate,\n createComponentIdentifier,\n useStateNames,\n reactNames,\n listNames,\n id,\n );\n if (reason) {\n diagnostics.push({\n component: candidate.name,\n reason,\n selected: explicitlySelected,\n });\n } else {\n compiled.push(candidate.name);\n }\n }\n\n if (compiled.length > 0) {\n programPath.unshiftContainer(\n \"body\",\n t.importDeclaration(\n [\n t.importSpecifier(\n createComponentIdentifier,\n t.identifier(\"createCompiledComponent\"),\n ),\n ],\n t.stringLiteral(\"@farm.js/react/compiler-runtime\"),\n ),\n );\n }\n },\n },\n });\n\n const result = await transformAsync(code, {\n filename: id,\n sourceType: \"module\",\n ast: false,\n code: true,\n sourceMaps: true,\n sourceFileName: id,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins: [\"jsx\", \"typescript\"],\n },\n generatorOpts: {\n comments: true,\n compact: false,\n },\n plugins: [plugin],\n });\n\n return {\n code: result?.code || code,\n map: result?.map || null,\n compiled,\n diagnostics,\n };\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, relative, resolve } from \"node:path\";\nimport type { CompileReactModuleResult, CompilerDiagnostic } from \"./compiler\";\n\nexport interface ReactCompilerModuleObservation {\n id: string;\n result: Pick<CompileReactModuleResult, \"compiled\" | \"diagnostics\">;\n}\n\nexport interface ReactCompilerReportFallback extends CompilerDiagnostic {\n module: string;\n}\n\nexport interface ReactCompilerReport {\n version: 1;\n summary: {\n modules: number;\n componentsConsidered: number;\n compiled: number;\n fallback: number;\n };\n fallbackReasons: Array<{\n count: number;\n reason: string;\n }>;\n modules: Array<{\n id: string;\n compiled: readonly string[];\n fallbacks: ReactCompilerReportFallback[];\n }>;\n}\n\nfunction projectRelativeId(projectRoot: string, id: string): string {\n return relative(projectRoot, id).replace(/\\\\/g, \"/\");\n}\n\nexport function createReactCompilerReport(\n projectRoot: string,\n observations: Iterable<ReactCompilerModuleObservation>,\n): ReactCompilerReport {\n const reasonCounts = new Map<string, number>();\n let componentsConsidered = 0;\n let compiled = 0;\n let fallback = 0;\n\n const modules = [...observations]\n .map(({ id, result }) => {\n componentsConsidered += result.compiled.length + result.diagnostics.length;\n compiled += result.compiled.length;\n fallback += result.diagnostics.length;\n const moduleId = projectRelativeId(projectRoot, id);\n const fallbacks = result.diagnostics.map((diagnostic) => {\n reasonCounts.set(diagnostic.reason, (reasonCounts.get(diagnostic.reason) || 0) + 1);\n return { module: moduleId, ...diagnostic };\n });\n return {\n id: moduleId,\n compiled: [...result.compiled].sort(),\n fallbacks,\n };\n })\n .sort((left, right) => left.id.localeCompare(right.id));\n\n const fallbackReasons = [...reasonCounts]\n .map(([reason, count]) => ({ count, reason }))\n .sort((left, right) => right.count - left.count || left.reason.localeCompare(right.reason));\n\n return {\n version: 1,\n summary: {\n modules: modules.length,\n componentsConsidered,\n compiled,\n fallback,\n },\n fallbackReasons,\n modules,\n };\n}\n\nexport async function writeReactCompilerReport(\n projectRoot: string,\n reportFile: string,\n observations: Iterable<ReactCompilerModuleObservation>,\n): Promise<string> {\n const outputPath = resolve(projectRoot, reportFile);\n const report = createReactCompilerReport(projectRoot, observations);\n await mkdir(dirname(outputPath), { recursive: true });\n await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\\n`, \"utf8\");\n return outputPath;\n}\n","import type { FarmRenderer } from \"@farm.js/core/renderer\";\n\nexport type ReactCompilerMode = \"infer\" | \"annotation\";\nexport type UnsupportedCompilerBehavior = \"fallback\" | \"warn\" | \"error\";\n\nexport interface ReactCompilerOptions {\n /** Compile every component that the safe subset can prove eligible. */\n mode?: ReactCompilerMode;\n /** Function or module directive used only by annotation mode. */\n directive?: string;\n /** What to do when a selected component is outside the safe subset. */\n onUnsupported?: UnsupportedCompilerBehavior;\n /** Write a machine-readable compiler coverage report after a production build. */\n report?: boolean;\n /** Project-relative report location. Providing it also enables reporting. */\n reportFile?: string;\n}\n\nexport interface ReactRendererOptions {\n experimental?: {\n /** `true` enables automatic inference; an object customizes selection. */\n compiler?: boolean | ReactCompilerOptions;\n };\n}\n\nexport interface NormalizedReactCompilerOptions {\n mode: ReactCompilerMode;\n directive: string;\n onUnsupported: UnsupportedCompilerBehavior;\n report: boolean;\n reportFile: string;\n}\n\nexport const DEFAULT_COMPILER_DIRECTIVE = \"use compiler\";\nexport const DEFAULT_COMPILER_REPORT_FILE = \".farm/react-compiler.json\";\n\nfunction normalizeCompilerReportFile(value: unknown): string {\n if (value === undefined) return DEFAULT_COMPILER_REPORT_FILE;\n if (typeof value !== \"string\" || !value.trim()) {\n throw new TypeError(\"The React compiler report file must be a non-empty relative path.\");\n }\n const normalized = value.trim().replace(/\\\\/g, \"/\");\n if (\n normalized.startsWith(\"/\") ||\n /^[A-Za-z]:\\//.test(normalized) ||\n normalized.split(\"/\").includes(\"..\")\n ) {\n throw new TypeError(\"The React compiler report file must stay inside the project root.\");\n }\n return normalized;\n}\n\nexport function normalizeReactCompilerOptions(\n value: true | ReactCompilerOptions,\n): NormalizedReactCompilerOptions {\n const options = value === true ? {} : value;\n const mode = options.mode || \"infer\";\n\n if (mode !== \"infer\" && mode !== \"annotation\") {\n throw new TypeError(`Unknown React compiler mode: ${String(mode)}`);\n }\n\n if (options.directive !== undefined && mode !== \"annotation\") {\n throw new TypeError(\"The React compiler directive can only be configured in annotation mode.\");\n }\n\n const directive = options.directive?.trim() || DEFAULT_COMPILER_DIRECTIVE;\n const onUnsupported = options.onUnsupported || \"fallback\";\n if (!([\"fallback\", \"warn\", \"error\"] as const).includes(onUnsupported)) {\n throw new TypeError(`Unknown unsupported-component behavior: ${String(onUnsupported)}`);\n }\n\n if (options.report !== undefined && typeof options.report !== \"boolean\") {\n throw new TypeError(\"The React compiler report option must be a boolean.\");\n }\n if (options.report === false && options.reportFile !== undefined) {\n throw new TypeError(\n \"A React compiler report file cannot be configured when reporting is false.\",\n );\n }\n const reportFile = normalizeCompilerReportFile(options.reportFile);\n const report = options.report === true || options.reportFile !== undefined;\n\n return { mode, directive, onUnsupported, report, reportFile };\n}\n\nconst REACT_RENDERER: Readonly<FarmRenderer> = Object.freeze({\n name: \"react\",\n vite: \"@farm.js/react/vite\",\n server: \"@farm.js/react/server\",\n client: \"@farm.js/react/client\",\n jsxImportSource: \"react\",\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n optimizeDeps: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"@farm.js/react/compiler-runtime\",\n ],\n capabilities: {\n streaming: { node: true, web: false },\n },\n});\n\n/** Select React and optionally enable Farm's experimental AOT compiler. */\nexport function react(options: ReactRendererOptions = {}): FarmRenderer {\n const compiler = options.experimental?.compiler;\n const normalizedCompiler = compiler ? normalizeReactCompilerOptions(compiler) : false;\n\n return {\n ...REACT_RENDERER,\n dedupe: [...(REACT_RENDERER.dedupe || [])],\n optimizeDeps: [...(REACT_RENDERER.optimizeDeps || [])],\n capabilities: {\n streaming: { ...REACT_RENDERER.capabilities?.streaming },\n },\n options: {\n experimental: { compiler: normalizedCompiler },\n },\n };\n}\n\nexport { REACT_RENDERER };\nexport type { FarmRenderer } from \"@farm.js/core/renderer\";\n","import { normalizePath, type Plugin } from \"vite\";\nimport { compileReactModule } from \"./compiler\";\nimport { writeReactCompilerReport, type ReactCompilerModuleObservation } from \"./compiler-report\";\nimport { normalizeReactCompilerOptions, type NormalizedReactCompilerOptions } from \"./index\";\n\ninterface RendererPluginOptions {\n ssr?: boolean;\n rendererOptions?: Readonly<Record<string, unknown>>;\n}\n\nfunction readCompilerOptions(\n rendererOptions: Readonly<Record<string, unknown>> | undefined,\n): NormalizedReactCompilerOptions | false {\n const experimental = rendererOptions?.experimental;\n if (!experimental || typeof experimental !== \"object\") return false;\n const compiler = (experimental as { compiler?: unknown }).compiler;\n if (!compiler) return false;\n if (compiler === true) return normalizeReactCompilerOptions(true);\n if (typeof compiler !== \"object\") {\n throw new TypeError(\n \"React experimental.compiler must be a boolean or compiler options object.\",\n );\n }\n const normalized = compiler as Partial<NormalizedReactCompilerOptions>;\n if (\n (normalized.mode === \"infer\" || normalized.mode === \"annotation\") &&\n typeof normalized.directive === \"string\" &&\n (normalized.onUnsupported === \"fallback\" ||\n normalized.onUnsupported === \"warn\" ||\n normalized.onUnsupported === \"error\")\n ) {\n return normalized as NormalizedReactCompilerOptions;\n }\n return normalizeReactCompilerOptions(compiler as NormalizedReactCompilerOptions);\n}\n\nexport function createFarmRendererPlugin(options: RendererPluginOptions = {}): Plugin[] {\n const compilerOptions = readCompilerOptions(options.rendererOptions);\n if (!compilerOptions) return [];\n\n let projectRoot = \"\";\n const reportEnabled = compilerOptions.report && options.ssr !== true;\n const reportObservations = new Map<string, ReactCompilerModuleObservation>();\n\n return [\n {\n name: \"farm:react-aot-compiler\",\n enforce: \"pre\",\n configResolved(config) {\n projectRoot = normalizePath(config.root).replace(/\\/$/, \"\");\n },\n buildStart() {\n reportObservations.clear();\n },\n async transform(code, id) {\n const cleanId = normalizePath(id.split(\"?\", 1)[0]);\n if (\n !/\\.[jt]sx$/.test(cleanId) ||\n cleanId.includes(\"/node_modules/\") ||\n (projectRoot && !cleanId.startsWith(`${projectRoot}/`))\n )\n return null;\n\n const result = await compileReactModule(code, cleanId, compilerOptions);\n if (reportEnabled) {\n if (result.compiled.length > 0 || result.diagnostics.length > 0) {\n reportObservations.set(cleanId, { id: cleanId, result });\n } else {\n reportObservations.delete(cleanId);\n }\n }\n for (const diagnostic of result.diagnostics) {\n const message = `[react-compiler] ${diagnostic.component}: ${diagnostic.reason}; using React.`;\n if (compilerOptions.onUnsupported === \"error\") this.error(message);\n if (compilerOptions.onUnsupported === \"warn\" || diagnostic.selected) this.warn(message);\n }\n if (result.compiled.length === 0) return null;\n return { code: result.code, map: result.map as any };\n },\n async buildEnd(error) {\n if (error || !reportEnabled || !projectRoot) return;\n await writeReactCompilerReport(\n projectRoot,\n compilerOptions.reportFile,\n reportObservations.values(),\n );\n },\n },\n ];\n}\n"]}
|