@farm.js/react 0.1.0-beta.2 → 0.1.0-beta.3
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 +34 -11
- package/dist/compiler-runtime.cjs +184 -0
- package/dist/compiler-runtime.cjs.map +1 -1
- package/dist/compiler-runtime.d.mts +19 -1
- package/dist/compiler-runtime.d.ts +19 -1
- package/dist/compiler-runtime.mjs +184 -0
- package/dist/compiler-runtime.mjs.map +1 -1
- package/dist/vite.cjs +166 -3
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +166 -3
- package/dist/vite.mjs.map +1 -1
- package/package.json +3 -3
package/dist/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"]}
|
|
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 ConditionalRangePlan {\n before: number;\n source: t.Expression;\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface ConditionalRangesPlan {\n kind: \"conditional-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: ConditionalRangePlan[];\n trailing: number;\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 | ConditionalRangesPlan\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 isStaticRangeSibling(\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) || !isStaticRangeSibling(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 (!isStaticRangeSibling(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 analyzeConditionalRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n allowSingleRange = false,\n): { ranges: ConditionalRangePlan[]; trailing: number; dependencies: number[] } | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\" ||\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: ConditionalRangePlan[] = [];\n const dependencies = new Set<number>();\n let staticBefore = 0;\n\n for (const child of children) {\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\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 rangeDependencies = new Set(collectStateDependencies(shape.test, statesByValue));\n for (const binding of [\n ...(truthyAnalysis.bindings || []),\n ...(falsyAnalysis.bindings || []),\n ]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n rangeDependencies.add(dependency);\n }\n }\n for (const dependency of rangeDependencies) dependencies.add(dependency);\n ranges.push({\n before: staticBefore,\n source: child.expression,\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 staticBefore = 0;\n continue;\n }\n }\n\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n if (!isStaticRangeSibling(child, statesByValue, safeGlobals)) return undefined;\n staticBefore += 1;\n }\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 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 conditionalRangeObject(range: ConditionalRangePlan): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"before\"), t.numericLiteral(range.before)),\n t.objectProperty(\n t.identifier(\"test\"),\n t.arrowFunctionExpression([], cloneExpression(range.test)),\n ),\n ];\n if (range.logical) {\n properties.push(t.objectProperty(t.identifier(\"logical\"), t.booleanLiteral(true)));\n }\n if (range.truthy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"truthy\"),\n hostConditionalBranchObject(range.truthy, range.truthyBindings),\n ),\n );\n }\n if (range.falsy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"falsy\"),\n hostConditionalBranchObject(range.falsy, range.falsyBindings),\n ),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction conditionalRangesBoundary(\n blockRuntime: t.Identifier,\n plan: ConditionalRangesPlan,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"ConditionalRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n const rootRefIndex = source.openingElement.attributes.findIndex(\n (attribute) =>\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n attribute.name.name === \"ref\",\n );\n const rootRef =\n rootRefIndex >= 0\n ? (source.openingElement.attributes.splice(rootRefIndex, 1)[0] as t.JSXAttribute)\n : undefined;\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([], source)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"ranges\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.ranges.map((range) => conditionalRangeObject(range))),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"trailing\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.trailing)),\n ),\n ];\n if (rootRef?.value) {\n attributes.push(t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.cloneNode(rootRef.value, true)));\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 conditionalRanges = insideConditional\n ? undefined\n : analyzeConditionalRangesContainer(child, statesByValue, safeGlobals);\n if (conditionalRanges) {\n plans.push({\n kind: \"conditional-ranges\",\n id: nextId++,\n parent,\n dependencies: conditionalRanges.dependencies,\n source: child,\n ranges: conditionalRanges.ranges,\n trailing: conditionalRanges.trailing,\n });\n for (const range of conditionalRanges.ranges) {\n conditionalExpressions.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 rootConditionalRanges = analyzeConditionalRangesContainer(\n root,\n statesByValue,\n safeGlobals,\n true,\n );\n if (rootConditionalRanges) {\n plans.push({\n kind: \"conditional-ranges\",\n id: nextId++,\n dependencies: rootConditionalRanges.dependencies,\n source: root,\n ranges: rootConditionalRanges.ranges,\n trailing: rootConditionalRanges.trailing,\n });\n for (const range of rootConditionalRanges.ranges) {\n conditionalExpressions.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 if (rootPlan?.kind === \"conditional-ranges\") {\n return conditionalRangesBoundary(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 === \"conditional-ranges\") {\n return conditionalRangesBoundary(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"]}
|