@reckona/mreact-compiler 0.0.97 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/diagnostics.d.ts +1 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +8 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/emit-client.js +14 -9
- package/dist/emit-client.js.map +1 -1
- package/dist/emit-compat.js +5 -1
- package/dist/emit-compat.js.map +1 -1
- package/dist/emit-server-stream.js +52 -3
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/emit-server.js +51 -10
- package/dist/emit-server.js.map +1 -1
- package/dist/ir.d.ts +1 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/oxc-child-analysis.d.ts.map +1 -1
- package/dist/oxc-child-analysis.js +41 -7
- package/dist/oxc-child-analysis.js.map +1 -1
- package/dist/oxc-component-detection.d.ts +5 -2
- package/dist/oxc-component-detection.d.ts.map +1 -1
- package/dist/oxc-component-detection.js +80 -3
- package/dist/oxc-component-detection.js.map +1 -1
- package/dist/oxc-component-props.d.ts +1 -1
- package/dist/oxc-component-props.d.ts.map +1 -1
- package/dist/oxc-component-props.js +1 -1
- package/dist/oxc-component-props.js.map +1 -1
- package/dist/oxc-component-references.js +2 -2
- package/dist/oxc-component-references.js.map +1 -1
- package/dist/oxc-runtime-emit.d.ts.map +1 -1
- package/dist/oxc-runtime-emit.js +10 -2
- package/dist/oxc-runtime-emit.js.map +1 -1
- package/dist/oxc.d.ts.map +1 -1
- package/dist/oxc.js +109 -20
- package/dist/oxc.js.map +1 -1
- package/dist/transform.js +29 -11
- package/dist/transform.js.map +1 -1
- package/package.json +2 -2
- package/src/diagnostics.ts +10 -0
- package/src/emit-client.ts +20 -10
- package/src/emit-compat.ts +6 -1
- package/src/emit-server-stream.ts +67 -3
- package/src/emit-server.ts +64 -12
- package/src/ir.ts +1 -0
- package/src/oxc-child-analysis.ts +63 -18
- package/src/oxc-component-detection.ts +145 -2
- package/src/oxc-component-props.ts +2 -1
- package/src/oxc-component-references.ts +2 -2
- package/src/oxc-runtime-emit.ts +12 -2
- package/src/oxc.ts +167 -5
- package/src/transform.ts +42 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-runtime-emit.js","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AttributeIr, ComponentPropIr, JsxNodeIr } from \"./ir.js\";\nimport { escapeHtmlAttribute } from \"@reckona/mreact-shared/html-escape\";\n\nexport const oxcServerStringReactNodeRenderHelperPlaceholder =\n \"__mreactRenderReactNodeToString\";\n\nexport function emitOxcServerStringChildren(children: readonly JsxNodeIr[]): string {\n if (children.length === 0) {\n return '\"\"';\n }\n\n return children.map(emitOxcServerStringNode).join(\" + \");\n}\n\nfunction emitOxcServerStringNode(node: JsxNodeIr): string {\n if (node.kind === \"text\") {\n return JSON.stringify(node.value);\n }\n\n if (node.kind === \"expr\") {\n return `_escapeHtml(${node.code})`;\n }\n\n if (node.kind === \"conditional\") {\n return `((${node.conditionCode}) ? ${emitOxcServerStringChildren(node.whenTrue)} : ${emitOxcServerStringChildren(node.whenFalse)})`;\n }\n\n if (node.kind === \"list\") {\n const parameters = emitOxcListParameters(node);\n return `(${node.itemsCode}).map((${parameters}) => ${emitOxcServerStringChildren(node.children)}).join(\"\")`;\n }\n\n if (node.kind === \"fragment\") {\n return emitOxcServerStringChildren(node.children);\n }\n\n if (node.kind === \"component\") {\n const props = emitOxcServerComponentProps(node.props, node.children);\n if (node.runtime === \"compat\") {\n return `${oxcServerStringReactNodeRenderHelperPlaceholder}(${node.name}, ${props})`;\n }\n return `${node.name}(${props})`;\n }\n\n if (node.kind === \"async-boundary\") {\n return '\"\"';\n }\n\n const attrs = node.attributes.map(emitOxcServerAttribute).join(\" + \");\n const open =\n attrs === \"\"\n ? JSON.stringify(`<${node.tagName}>`)\n : `${JSON.stringify(`<${node.tagName}`)} + ${attrs} + \">\"`;\n return `${open} + ${emitOxcServerStringChildren(node.children)} + ${JSON.stringify(`</${node.tagName}>`)}`;\n}\n\nfunction emitOxcServerComponentProps(\n props: readonly ComponentPropIr[],\n children: readonly JsxNodeIr[],\n): string {\n const entries = props.map((prop) => {\n if (prop.kind === \"spread-prop\") {\n return `...(${prop.code})`;\n }\n\n if (prop.kind === \"render-prop\") {\n return `${emitOxcCompatObjectPropName(prop.name)}: ${emitOxcServerStringChildren(prop.children)}`;\n }\n\n return `${emitOxcCompatObjectPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n entries.push(`children: ${emitOxcServerStringChildren(children)}`);\n }\n\n return `{ ${entries.join(\", \")} }`;\n}\n\nfunction emitOxcServerAttribute(attr: AttributeIr): string {\n if (attr.kind === \"static-attr\") {\n return JSON.stringify(` ${attr.name}=\"${escapeHtmlAttribute(attr.value)}\"`);\n }\n\n if (attr.kind === \"dynamic-attr\") {\n return `${JSON.stringify(` ${attr.name}=\"`)} + _escapeHtml(${attr.code}) + ${JSON.stringify('\"')}`;\n }\n\n return '\"\"';\n}\n\nfunction emitOxcCompatObjectNode(node: JsxNodeIr): string {\n if (node.kind === \"text\") {\n return JSON.stringify(node.value);\n }\n\n if (node.kind === \"expr\") {\n return `(${node.code})`;\n }\n\n if (node.kind === \"conditional\") {\n return `(${node.conditionCode}) ? ${emitOxcCompatObjectChildren(node.whenTrue)} : ${emitOxcCompatObjectChildren(node.whenFalse)}`;\n }\n\n if (node.kind === \"list\") {\n const parameters = emitOxcListParameters(node);\n return `(${node.itemsCode}).map((${parameters}) => ${emitOxcCompatObjectChildren(node.children)})`;\n }\n\n if (node.kind === \"fragment\") {\n return emitOxcCompatObjectElement('Symbol.for(\"react.fragment\")', [], node.children);\n }\n\n if (node.kind === \"component\") {\n return emitOxcCompatObjectElement(\n node.name,\n node.props.map(emitOxcCompatObjectComponentProp),\n node.children,\n node.keyCode,\n );\n }\n\n if (node.kind === \"async-boundary\") {\n return \"null\";\n }\n\n return emitOxcCompatObjectElement(\n JSON.stringify(node.tagName),\n node.attributes.map(emitOxcCompatObjectAttribute),\n node.children,\n node.keyCode,\n );\n}\n\nexport function emitOxcCompatObjectChildren(children: readonly JsxNodeIr[]): string {\n if (children.length === 0) {\n return \"null\";\n }\n\n if (children.length === 1) {\n return emitOxcCompatObjectNode(children[0] as JsxNodeIr);\n }\n\n return `[${children.map(emitOxcCompatObjectNode).join(\", \")}]`;\n}\n\nfunction emitOxcCompatObjectElement(\n typeCode: string,\n propEntries: readonly string[],\n children: readonly JsxNodeIr[],\n explicitKeyCode?: string,\n): string {\n const entries = [...propEntries];\n\n if (children.length > 0) {\n entries.push(`children: ${emitOxcCompatObjectChildren(children)}`);\n }\n\n const keyExpression =\n explicitKeyCode === undefined\n ? \"_props.key === undefined ? null : String(_props.key)\"\n : `String(${explicitKeyCode})`;\n\n return [\n \"(() => {\",\n ` const _props = { ${entries.join(\", \")} };`,\n ` const _key = ${keyExpression};`,\n \" const _ref = _props.ref ?? null;\",\n \" delete _props.key;\",\n \" delete _props.ref;\",\n ' return { $$typeof: Symbol.for(\"react.transitional.element\"),',\n ` type: ${typeCode},`,\n \" key: _key,\",\n \" ref: _ref,\",\n \" props: _props };\",\n \"})()\",\n ].join(\"\\n\");\n}\n\nfunction emitOxcListParameters(node: Extract<JsxNodeIr, { kind: \"list\" }>): string {\n return [node.itemName, node.indexName, node.arrayName]\n .filter((name): name is string => name !== undefined)\n .join(\", \");\n}\n\nfunction emitOxcCompatObjectAttribute(attr: AttributeIr): string {\n if (attr.kind === \"spread-attr\") {\n return `...(${attr.code})`;\n }\n\n if (attr.kind === \"static-attr\") {\n return `${emitOxcCompatObjectPropName(attr.name)}: ${JSON.stringify(attr.value)}`;\n }\n\n if (attr.kind === \"dynamic-attr\") {\n return `${emitOxcCompatObjectPropName(attr.name)}: (${attr.code})`;\n }\n\n return `${emitOxcCompatObjectPropName(attr.name)}: ${attr.code}`;\n}\n\nfunction emitOxcCompatObjectComponentProp(prop: ComponentPropIr): string {\n if (prop.kind === \"spread-prop\") {\n return `...(${prop.code})`;\n }\n\n if (prop.kind === \"render-prop\") {\n return `${emitOxcCompatObjectPropName(prop.name)}: ${emitOxcCompatObjectChildren(prop.children)}`;\n }\n\n return `${emitOxcCompatObjectPropName(prop.name)}: (${prop.code})`;\n}\n\nfunction emitOxcCompatObjectPropName(name: string): string {\n return /^[A-Za-z_$][\\w$]*$/.test(name) ? name : JSON.stringify(name);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc-runtime-emit.js","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AttributeIr, ComponentPropIr, JsxNodeIr } from \"./ir.js\";\nimport { escapeHtmlAttribute } from \"@reckona/mreact-shared/html-escape\";\n\nexport const oxcServerStringReactNodeRenderHelperPlaceholder =\n \"__mreactRenderReactNodeToString\";\n\nexport function emitOxcServerStringChildren(children: readonly JsxNodeIr[]): string {\n if (children.length === 0) {\n return '\"\"';\n }\n\n return children.map(emitOxcServerStringNode).join(\" + \");\n}\n\nfunction emitOxcServerStringNode(node: JsxNodeIr): string {\n if (node.kind === \"text\") {\n return JSON.stringify(node.value);\n }\n\n if (node.kind === \"expr\") {\n return `_escapeHtml(${node.code})`;\n }\n\n if (node.kind === \"conditional\") {\n const whenTrue = emitOxcServerStringChildren(node.whenTrue);\n const whenFalse = emitOxcServerStringChildren(node.whenFalse);\n\n return node.conditionValueName === undefined\n ? `((${node.conditionCode}) ? ${whenTrue} : ${whenFalse})`\n : `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`;\n }\n\n if (node.kind === \"list\") {\n const parameters = emitOxcListParameters(node);\n return `(${node.itemsCode}).map((${parameters}) => ${emitOxcServerStringChildren(node.children)}).join(\"\")`;\n }\n\n if (node.kind === \"fragment\") {\n return emitOxcServerStringChildren(node.children);\n }\n\n if (node.kind === \"component\") {\n const props = emitOxcServerComponentProps(node.props, node.children);\n if (node.runtime === \"compat\") {\n return `${oxcServerStringReactNodeRenderHelperPlaceholder}(${node.name}, ${props})`;\n }\n return `${node.name}(${props})`;\n }\n\n if (node.kind === \"async-boundary\") {\n return '\"\"';\n }\n\n const attrs = node.attributes.map(emitOxcServerAttribute).join(\" + \");\n const open =\n attrs === \"\"\n ? JSON.stringify(`<${node.tagName}>`)\n : `${JSON.stringify(`<${node.tagName}`)} + ${attrs} + \">\"`;\n return `${open} + ${emitOxcServerStringChildren(node.children)} + ${JSON.stringify(`</${node.tagName}>`)}`;\n}\n\nfunction emitOxcServerComponentProps(\n props: readonly ComponentPropIr[],\n children: readonly JsxNodeIr[],\n): string {\n const entries = props.map((prop) => {\n if (prop.kind === \"spread-prop\") {\n return `...(${prop.code})`;\n }\n\n if (prop.kind === \"render-prop\") {\n return `${emitOxcCompatObjectPropName(prop.name)}: ${emitOxcServerStringChildren(prop.children)}`;\n }\n\n return `${emitOxcCompatObjectPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n entries.push(`children: ${emitOxcServerStringChildren(children)}`);\n }\n\n return `{ ${entries.join(\", \")} }`;\n}\n\nfunction emitOxcServerAttribute(attr: AttributeIr): string {\n if (attr.kind === \"static-attr\") {\n return JSON.stringify(` ${attr.name}=\"${escapeHtmlAttribute(attr.value)}\"`);\n }\n\n if (attr.kind === \"dynamic-attr\") {\n return `${JSON.stringify(` ${attr.name}=\"`)} + _escapeHtml(${attr.code}) + ${JSON.stringify('\"')}`;\n }\n\n return '\"\"';\n}\n\nfunction emitOxcCompatObjectNode(node: JsxNodeIr): string {\n if (node.kind === \"text\") {\n return JSON.stringify(node.value);\n }\n\n if (node.kind === \"expr\") {\n return `(${node.code})`;\n }\n\n if (node.kind === \"conditional\") {\n const whenTrue = emitOxcCompatObjectChildren(node.whenTrue);\n const whenFalse = emitOxcCompatObjectChildren(node.whenFalse);\n\n return node.conditionValueName === undefined\n ? `(${node.conditionCode}) ? ${whenTrue} : ${whenFalse}`\n : `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`;\n }\n\n if (node.kind === \"list\") {\n const parameters = emitOxcListParameters(node);\n return `(${node.itemsCode}).map((${parameters}) => ${emitOxcCompatObjectChildren(node.children)})`;\n }\n\n if (node.kind === \"fragment\") {\n return emitOxcCompatObjectElement('Symbol.for(\"react.fragment\")', [], node.children);\n }\n\n if (node.kind === \"component\") {\n return emitOxcCompatObjectElement(\n node.name,\n node.props.map(emitOxcCompatObjectComponentProp),\n node.children,\n node.keyCode,\n );\n }\n\n if (node.kind === \"async-boundary\") {\n return \"null\";\n }\n\n return emitOxcCompatObjectElement(\n JSON.stringify(node.tagName),\n node.attributes.map(emitOxcCompatObjectAttribute),\n node.children,\n node.keyCode,\n );\n}\n\nexport function emitOxcCompatObjectChildren(children: readonly JsxNodeIr[]): string {\n if (children.length === 0) {\n return \"null\";\n }\n\n if (children.length === 1) {\n return emitOxcCompatObjectNode(children[0] as JsxNodeIr);\n }\n\n return `[${children.map(emitOxcCompatObjectNode).join(\", \")}]`;\n}\n\nfunction emitOxcCompatObjectElement(\n typeCode: string,\n propEntries: readonly string[],\n children: readonly JsxNodeIr[],\n explicitKeyCode?: string,\n): string {\n const entries = [...propEntries];\n\n if (children.length > 0) {\n entries.push(`children: ${emitOxcCompatObjectChildren(children)}`);\n }\n\n const keyExpression =\n explicitKeyCode === undefined\n ? \"_props.key === undefined ? null : String(_props.key)\"\n : `String(${explicitKeyCode})`;\n\n return [\n \"(() => {\",\n ` const _props = { ${entries.join(\", \")} };`,\n ` const _key = ${keyExpression};`,\n \" const _ref = _props.ref ?? null;\",\n \" delete _props.key;\",\n \" delete _props.ref;\",\n ' return { $$typeof: Symbol.for(\"react.transitional.element\"),',\n ` type: ${typeCode},`,\n \" key: _key,\",\n \" ref: _ref,\",\n \" props: _props };\",\n \"})()\",\n ].join(\"\\n\");\n}\n\nfunction emitOxcListParameters(node: Extract<JsxNodeIr, { kind: \"list\" }>): string {\n return [node.itemName, node.indexName, node.arrayName]\n .filter((name): name is string => name !== undefined)\n .join(\", \");\n}\n\nfunction emitOxcCompatObjectAttribute(attr: AttributeIr): string {\n if (attr.kind === \"spread-attr\") {\n return `...(${attr.code})`;\n }\n\n if (attr.kind === \"static-attr\") {\n return `${emitOxcCompatObjectPropName(attr.name)}: ${JSON.stringify(attr.value)}`;\n }\n\n if (attr.kind === \"dynamic-attr\") {\n return `${emitOxcCompatObjectPropName(attr.name)}: (${attr.code})`;\n }\n\n return `${emitOxcCompatObjectPropName(attr.name)}: ${attr.code}`;\n}\n\nfunction emitOxcCompatObjectComponentProp(prop: ComponentPropIr): string {\n if (prop.kind === \"spread-prop\") {\n return `...(${prop.code})`;\n }\n\n if (prop.kind === \"render-prop\") {\n return `${emitOxcCompatObjectPropName(prop.name)}: ${emitOxcCompatObjectChildren(prop.children)}`;\n }\n\n return `${emitOxcCompatObjectPropName(prop.name)}: (${prop.code})`;\n}\n\nfunction emitOxcCompatObjectPropName(name: string): string {\n return /^[A-Za-z_$][\\w$]*$/.test(name) ? name : JSON.stringify(name);\n}\n"]}
|
package/dist/oxc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc.d.ts","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAkC,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"oxc.d.ts","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAkC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAuFxE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,EAAE,CAAC,EAAE,QAAQ,CAAC;QACd,sBAAsB,EAAE,OAAO,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AA+CD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,CA6BzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAQzE;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,GACjD,iBAAiB,CAWnB"}
|
package/dist/oxc.js
CHANGED
|
@@ -9,7 +9,7 @@ import { validateOxcAwaitCompatComponents, validateOxcNestedAwait, } from "./oxc
|
|
|
9
9
|
import { collectBindingNames, collectImportBindingNames, formatStatement, readOxcParameterName, } from "./oxc-bindings.js";
|
|
10
10
|
import { formatOxcBodyStatement, formatPreservedStatement, lowerOxcBodyStatementJsx, lowerOxcTopLevelStatement, } from "./oxc-body-lowering.js";
|
|
11
11
|
import { collectOxcVariableInitializers } from "./oxc-await-analysis.js";
|
|
12
|
-
import { collectOxcAsyncComponentNames, collectOxcExportedComponents, collectOxcExportedFunctionNames, collectOxcPlainComponentNames, hasComponentReturn, hasOxcFunctionLikeComponentReturn, isOxcExportedFunctionLike, isOxcComponentCallExpression, isJsxRoot, isOxcJsxComponentStatement, isOxcUnsupportedExportedFunction, readOxcPlainComponent, readOxcVariableComponentDeclaration, unwrapOxcComponentFunctionLikeInitializer, } from "./oxc-component-detection.js";
|
|
12
|
+
import { collectOxcAsyncComponentNames, collectOxcExportedComponents, collectOxcExportedFunctionNames, collectOxcLocalJsxReturnFunctionNames, collectOxcPlainComponentNames, hasComponentReturn, hasLocalJsxHelperCallReturn, hasOxcFunctionLikeComponentReturn, isOxcExportedFunctionLike, isOxcComponentCallExpression, isOxcLocalJsxHelperCallExpression, isJsxRoot, isOxcJsxComponentStatement, isOxcUnsupportedExportedFunction, readOxcPlainComponent, readOxcVariableComponentDeclaration, unwrapOxcComponentFunctionLikeInitializer, } from "./oxc-component-detection.js";
|
|
13
13
|
import { collectOxcClientBoundaryImportComponents, collectOxcCompatReactNodeComponentReferences, collectOxcCompatRuntimeImportComponents, markOxcAsyncComponentReferences, markOxcClientReferences, markOxcCompatReactNodeReferences, markOxcCompatRuntimeReferences, } from "./oxc-component-references.js";
|
|
14
14
|
import { normalizeOxcExpressionCode, stripOxcGeneratedImports } from "./oxc-code-utils.js";
|
|
15
15
|
import { analyzeOxcExpressionChild, analyzeOxcJsxNode, } from "./oxc-child-analysis.js";
|
|
@@ -106,6 +106,10 @@ function analyzeOxcToIr(code, program, target, options) {
|
|
|
106
106
|
const compatReactNodeReferences = options?.compatReactNodeReturnRenderMode === "react-node"
|
|
107
107
|
? collectOxcCompatReactNodeComponentReferences(program)
|
|
108
108
|
: undefined;
|
|
109
|
+
const localJsxReturnFunctionNames = target === "server" ? collectOxcLocalJsxReturnFunctionNames(program) : new Set();
|
|
110
|
+
const localJsxHelperHtmlParameters = target === "server"
|
|
111
|
+
? collectLocalJsxHelperHtmlParameters(program, localJsxReturnFunctionNames)
|
|
112
|
+
: new Map();
|
|
109
113
|
const bodyLowerers = createOxcBodyLowerers(compatRuntimeImports);
|
|
110
114
|
const moduleRenderValueBindings = collectOxcBodyJsxBindingNames(body);
|
|
111
115
|
const reactiveDerivedFunctionNames = collectOxcReactiveDerivedFunctionNames(body);
|
|
@@ -122,7 +126,7 @@ function analyzeOxcToIr(code, program, target, options) {
|
|
|
122
126
|
}
|
|
123
127
|
continue;
|
|
124
128
|
}
|
|
125
|
-
if (isOxcJsxComponentStatement(statement) ||
|
|
129
|
+
if (isOxcJsxComponentStatement(statement, localJsxReturnFunctionNames) ||
|
|
126
130
|
(options?.compatReactNodeReturn === true && isOxcExportedFunctionLike(statement))) {
|
|
127
131
|
const declaration = readObject(readObject(statement).declaration);
|
|
128
132
|
if (declaration.type === "VariableDeclaration") {
|
|
@@ -133,7 +137,7 @@ function analyzeOxcToIr(code, program, target, options) {
|
|
|
133
137
|
continue;
|
|
134
138
|
}
|
|
135
139
|
else {
|
|
136
|
-
if (isOxcUnsupportedExportedFunction(statement, options)) {
|
|
140
|
+
if (isOxcUnsupportedExportedFunction(statement, options, localJsxReturnFunctionNames)) {
|
|
137
141
|
diagnostics.push({
|
|
138
142
|
level: "error",
|
|
139
143
|
code: "MR_UNSUPPORTED_COMPONENT_RETURN",
|
|
@@ -160,7 +164,7 @@ function analyzeOxcToIr(code, program, target, options) {
|
|
|
160
164
|
const componentNames = componentNamesFromProgram(program, moduleBindingNames);
|
|
161
165
|
const componentCallNames = options?.serverOutput === "stream" ? componentCallNamesFromProgram(program) : undefined;
|
|
162
166
|
const asyncComponentNames = collectOxcAsyncComponentNames(program);
|
|
163
|
-
const components = body.flatMap((statement) => analyzeOxcComponent(code, statement, componentNames, target, diagnostics, options?.bodyStatementJsx ?? "dom-node", moduleRenderValueBindings, options?.compatReactNodeReturn === true, options?.serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames));
|
|
167
|
+
const components = body.flatMap((statement) => analyzeOxcComponent(code, statement, componentNames, target, diagnostics, options?.bodyStatementJsx ?? "dom-node", moduleRenderValueBindings, options?.compatReactNodeReturn === true, options?.serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters));
|
|
164
168
|
for (const component of components) {
|
|
165
169
|
markOxcAsyncComponentReferences(component.root, asyncComponentNames);
|
|
166
170
|
markOxcClientReferences(component.root, clientBoundaryImports);
|
|
@@ -202,7 +206,63 @@ function componentCallNamesFromProgram(program) {
|
|
|
202
206
|
...collectOxcPlainComponentNames(program),
|
|
203
207
|
]);
|
|
204
208
|
}
|
|
205
|
-
function
|
|
209
|
+
function collectLocalJsxHelperHtmlParameters(program, localJsxReturnFunctionNames) {
|
|
210
|
+
const parameters = new Map();
|
|
211
|
+
if (localJsxReturnFunctionNames.size === 0) {
|
|
212
|
+
return parameters;
|
|
213
|
+
}
|
|
214
|
+
for (const statement of readArray(readObject(program).body)) {
|
|
215
|
+
const object = readObject(statement);
|
|
216
|
+
const declaration = object.type === "ExportNamedDeclaration" || object.type === "ExportDefaultDeclaration"
|
|
217
|
+
? readObject(object.declaration)
|
|
218
|
+
: object;
|
|
219
|
+
const body = readObject(declaration.body);
|
|
220
|
+
if (body.type !== "BlockStatement") {
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
for (const returnExpression of collectOxcReturnExpressions(body)) {
|
|
224
|
+
const callExpression = unwrapOxcParentheses(returnExpression);
|
|
225
|
+
if (callExpression.type !== "CallExpression") {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const callee = unwrapOxcParentheses(readObject(callExpression.callee));
|
|
229
|
+
if (callee.type !== "Identifier" ||
|
|
230
|
+
typeof callee.name !== "string" ||
|
|
231
|
+
!localJsxReturnFunctionNames.has(callee.name)) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const calleeName = callee.name;
|
|
235
|
+
readArray(callExpression.arguments).forEach((argument, index) => {
|
|
236
|
+
if (!containsOxcJsxSyntax(readObject(argument))) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const indexes = parameters.get(calleeName) ?? new Set();
|
|
240
|
+
indexes.add(index);
|
|
241
|
+
parameters.set(calleeName, indexes);
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return parameters;
|
|
246
|
+
}
|
|
247
|
+
function collectOxcReturnExpressions(statement) {
|
|
248
|
+
if (statement.type === "ReturnStatement") {
|
|
249
|
+
return [unwrapOxcParentheses(readObject(statement.argument))];
|
|
250
|
+
}
|
|
251
|
+
if (statement.type === "BlockStatement") {
|
|
252
|
+
return readArray(statement.body).flatMap((child) => collectOxcReturnExpressions(readObject(child)));
|
|
253
|
+
}
|
|
254
|
+
if (statement.type === "IfStatement") {
|
|
255
|
+
return [
|
|
256
|
+
...collectOxcReturnExpressions(readObject(statement.consequent)),
|
|
257
|
+
...collectOxcReturnExpressions(readObject(statement.alternate)),
|
|
258
|
+
];
|
|
259
|
+
}
|
|
260
|
+
if (statement.type === "SwitchStatement") {
|
|
261
|
+
return readArray(statement.cases).flatMap((switchCase) => readArray(readObject(switchCase).consequent).flatMap((child) => collectOxcReturnExpressions(readObject(child))));
|
|
262
|
+
}
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
function analyzeOxcComponent(code, statement, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters) {
|
|
206
266
|
const object = readObject(statement);
|
|
207
267
|
if (object.type === "ExportDefaultDeclaration") {
|
|
208
268
|
const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));
|
|
@@ -212,7 +272,7 @@ function analyzeOxcComponent(code, statement, componentNames, target, diagnostic
|
|
|
212
272
|
const id = readObject(declaration.id);
|
|
213
273
|
const name = typeof id.name === "string" ? id.name : "DefaultExport";
|
|
214
274
|
return [
|
|
215
|
-
analyzeOxcFunctionLikeComponent(code, name, declaration, "default", componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, true),
|
|
275
|
+
analyzeOxcFunctionLikeComponent(code, name, declaration, "default", componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters, true),
|
|
216
276
|
];
|
|
217
277
|
}
|
|
218
278
|
if (object.type !== "ExportNamedDeclaration") {
|
|
@@ -222,7 +282,7 @@ function analyzeOxcComponent(code, statement, componentNames, target, diagnostic
|
|
|
222
282
|
}
|
|
223
283
|
return [
|
|
224
284
|
{
|
|
225
|
-
...analyzeOxcFunctionLikeComponent(code, plainComponent.name, plainComponent.initializer, plainComponent.name, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames),
|
|
285
|
+
...analyzeOxcFunctionLikeComponent(code, plainComponent.name, plainComponent.initializer, plainComponent.name, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters),
|
|
226
286
|
exported: false,
|
|
227
287
|
},
|
|
228
288
|
];
|
|
@@ -234,11 +294,13 @@ function analyzeOxcComponent(code, statement, componentNames, target, diagnostic
|
|
|
234
294
|
return [];
|
|
235
295
|
}
|
|
236
296
|
return [
|
|
237
|
-
analyzeOxcFunctionLikeComponent(code, variableComponent.name, variableComponent.initializer, variableComponent.name, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames),
|
|
297
|
+
analyzeOxcFunctionLikeComponent(code, variableComponent.name, variableComponent.initializer, variableComponent.name, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters),
|
|
238
298
|
];
|
|
239
299
|
}
|
|
240
300
|
if (declaration.type !== "FunctionDeclaration" ||
|
|
241
|
-
(!compatReactNodeReturn &&
|
|
301
|
+
(!compatReactNodeReturn &&
|
|
302
|
+
!hasComponentReturn(declaration.body) &&
|
|
303
|
+
!hasLocalJsxHelperCallReturn(declaration.body, localJsxReturnFunctionNames))) {
|
|
242
304
|
return [];
|
|
243
305
|
}
|
|
244
306
|
const id = readObject(declaration.id);
|
|
@@ -246,10 +308,22 @@ function analyzeOxcComponent(code, statement, componentNames, target, diagnostic
|
|
|
246
308
|
return [];
|
|
247
309
|
}
|
|
248
310
|
return [
|
|
249
|
-
analyzeOxcFunctionLikeComponent(code, id.name, declaration, id.name, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames),
|
|
311
|
+
analyzeOxcFunctionLikeComponent(code, id.name, declaration, id.name, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters),
|
|
250
312
|
];
|
|
251
313
|
}
|
|
252
|
-
function
|
|
314
|
+
function lowerOxcLocalJsxHelperCallExpressionCode(code, expression, componentNames, target, diagnostics, bodyLowerers) {
|
|
315
|
+
if (expression.type !== "CallExpression") {
|
|
316
|
+
return readSource(code, expression);
|
|
317
|
+
}
|
|
318
|
+
const args = readArray(expression.arguments).map((argument) => {
|
|
319
|
+
const object = unwrapOxcParentheses(readObject(argument));
|
|
320
|
+
return containsOxcJsxSyntax(object)
|
|
321
|
+
? (bodyLowerers.lowerServerStringExpression(code, object, componentNames, target, diagnostics) ?? readSource(code, argument))
|
|
322
|
+
: readSource(code, argument);
|
|
323
|
+
});
|
|
324
|
+
return `${readSource(code, readObject(expression.callee))}(${args.join(", ")})`;
|
|
325
|
+
}
|
|
326
|
+
function analyzeOxcFunctionLikeComponent(code, name, functionLike, exportName, componentNames, target, diagnostics, bodyStatementJsx, moduleRenderValueBindings, compatReactNodeReturn, serverOutput, componentCallNames, bodyLowerers, reactiveDerivedFunctionNames, localJsxReturnFunctionNames, localJsxHelperHtmlParameters, exportDefault = false) {
|
|
253
327
|
const functionBody = readObject(functionLike.body);
|
|
254
328
|
const body = functionBody.type === "BlockStatement" ? readArray(functionBody.body) : [];
|
|
255
329
|
const earlyIfRootReturn = bodyStatementJsx === "compat-object"
|
|
@@ -265,36 +339,51 @@ function analyzeOxcFunctionLikeComponent(code, name, functionLike, exportName, c
|
|
|
265
339
|
? expressionBody
|
|
266
340
|
: unwrapOxcParentheses(readObject(readObject(returnStatement).argument));
|
|
267
341
|
const parameters = readArray(functionLike.params).map((param) => readOxcParameterName(code, param));
|
|
342
|
+
const htmlParameterNames = new Set([...(localJsxHelperHtmlParameters.get(name) ?? [])]
|
|
343
|
+
.map((index) => parameters[index])
|
|
344
|
+
.filter((parameter) => parameter !== undefined));
|
|
345
|
+
const bodyComponentNames = /^[a-z]/.test(name) && componentNames.has(name)
|
|
346
|
+
? new Set([...componentNames].filter((componentName) => componentName !== name))
|
|
347
|
+
: componentNames;
|
|
268
348
|
const bodyStatements = body
|
|
269
349
|
.filter((bodyStatement) => bodyStatement !== rootStatement &&
|
|
270
350
|
earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&
|
|
271
351
|
earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&
|
|
272
352
|
bodyStatement !== earlyIfRootReturn?.fallthroughStatement)
|
|
273
|
-
.map((bodyStatement) => lowerOxcBodyStatementJsx(code, bodyStatement,
|
|
353
|
+
.map((bodyStatement) => lowerOxcBodyStatementJsx(code, bodyStatement, bodyComponentNames, target, diagnostics, bodyStatementJsx, bodyLowerers) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx));
|
|
274
354
|
const componentBodyBindings = collectOxcVariableInitializers(body);
|
|
275
355
|
const reactiveAliasBindings = collectOxcReactiveReadAliases(code, body, reactiveDerivedFunctionNames);
|
|
276
|
-
const childAnalysisContext = createOxcChildAnalysisContext(
|
|
356
|
+
const childAnalysisContext = createOxcChildAnalysisContext(bodyComponentNames, target, diagnostics, bodyStatementJsx, componentBodyBindings, reactiveAliasBindings, serverOutput, componentCallNames, bodyLowerers);
|
|
277
357
|
const root = analyzeOxcEarlyIfRootReturn(code, earlyIfRootReturn, childAnalysisContext, bodyStatementJsx) ??
|
|
278
358
|
analyzeOxcSwitchRootReturn(code, rootStatement, childAnalysisContext, bodyStatementJsx) ??
|
|
279
359
|
(isJsxRoot(returnExpression.type) || returnExpression.type === "JSXFragment"
|
|
280
360
|
? analyzeOxcJsxNode(code, returnExpression, childAnalysisContext)
|
|
281
361
|
: isOxcComponentCallExpression(returnExpression)
|
|
282
362
|
? analyzeOxcComponentCallExpression(code, returnExpression)
|
|
283
|
-
:
|
|
284
|
-
{
|
|
363
|
+
: isOxcLocalJsxHelperCallExpression(returnExpression, localJsxReturnFunctionNames)
|
|
364
|
+
? {
|
|
285
365
|
kind: "expr",
|
|
286
|
-
code: normalizeOxcExpressionCode(
|
|
287
|
-
? (
|
|
288
|
-
stripOxcGeneratedImports(transformJsxToCreateElementWithOxc(readSource(code, returnExpression))))
|
|
366
|
+
code: normalizeOxcExpressionCode(bodyStatementJsx === "server-string"
|
|
367
|
+
? lowerOxcLocalJsxHelperCallExpressionCode(code, returnExpression, bodyComponentNames, target, diagnostics, bodyLowerers)
|
|
289
368
|
: readSource(code, returnExpression)),
|
|
290
|
-
|
|
291
|
-
}
|
|
369
|
+
renderMode: "html",
|
|
370
|
+
}
|
|
371
|
+
: analyzeOxcDynamicRootReturn(code, returnExpression, childAnalysisContext, bodyStatementJsx) ??
|
|
372
|
+
{
|
|
373
|
+
kind: "expr",
|
|
374
|
+
code: normalizeOxcExpressionCode(compatReactNodeReturn
|
|
375
|
+
? (lowerOxcCompatReactNodeExpression(code, returnExpression, componentNames, target, diagnostics) ??
|
|
376
|
+
stripOxcGeneratedImports(transformJsxToCreateElementWithOxc(readSource(code, returnExpression))))
|
|
377
|
+
: readSource(code, returnExpression)),
|
|
378
|
+
...(compatReactNodeReturn ? { renderMode: "react-node" } : {}),
|
|
379
|
+
});
|
|
292
380
|
markOxcRenderValueExpressions([root], new Set([
|
|
293
381
|
...moduleRenderValueBindings,
|
|
294
382
|
...collectOxcBodyJsxBindingNames(body.filter((bodyStatement) => bodyStatement !== rootStatement &&
|
|
295
383
|
earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&
|
|
296
384
|
earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&
|
|
297
385
|
bodyStatement !== earlyIfRootReturn?.fallthroughStatement)),
|
|
386
|
+
...htmlParameterNames,
|
|
298
387
|
]), bodyStatementJsx === "server-string" ? "html" : "dynamic");
|
|
299
388
|
return {
|
|
300
389
|
name,
|
package/dist/oxc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc.js","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseSync } from \"oxc-parser\";\nimport { unsupportedTopLevelJsxInitializerDiagnostic } from \"./diagnostics.js\";\nimport {\n type AnalyzeToIrInput,\n type AnalyzeToIrOutput,\n} from \"./internal.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nimport type { ClientReferenceIr, ComponentIr, ModuleIr } from \"./ir.js\";\nimport { transformJsxToCreateElementWithOxc } from \"./oxc-transform.js\";\nimport {\n arraysEqual,\n getOxcLocation,\n getOxcLocationFromOffset,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport { assignOxcAwaitIds } from \"./oxc-await-ids.js\";\nimport {\n validateOxcAwaitCompatComponents,\n validateOxcNestedAwait,\n} from \"./oxc-await-validation.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n collectBindingNames,\n collectImportBindingNames,\n formatStatement,\n readOxcParameterName,\n} from \"./oxc-bindings.js\";\nimport {\n formatOxcBodyStatement,\n formatPreservedStatement,\n lowerOxcBodyStatementJsx,\n lowerOxcTopLevelStatement,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { collectOxcVariableInitializers } from \"./oxc-await-analysis.js\";\nimport {\n collectOxcAsyncComponentNames,\n collectOxcExportedComponents,\n collectOxcExportedFunctionNames,\n collectOxcPlainComponentNames,\n hasComponentReturn,\n hasOxcFunctionLikeComponentReturn,\n isOxcExportedFunctionLike,\n isOxcComponentCallExpression,\n isJsxRoot,\n isOxcJsxComponentStatement,\n isOxcUnsupportedExportedFunction,\n readOxcPlainComponent,\n readOxcVariableComponentDeclaration,\n unwrapOxcComponentFunctionLikeInitializer,\n} from \"./oxc-component-detection.js\";\nimport {\n collectOxcClientBoundaryImportComponents,\n collectOxcCompatReactNodeComponentReferences,\n collectOxcCompatRuntimeImportComponents,\n markOxcAsyncComponentReferences,\n markOxcClientReferences,\n markOxcCompatReactNodeReferences,\n markOxcCompatRuntimeReferences,\n} from \"./oxc-component-references.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n analyzeOxcExpressionChild,\n analyzeOxcJsxNode,\n type OxcChildAnalysisContext,\n} from \"./oxc-child-analysis.js\";\nimport { lowerOxcDomNodeExpression } from \"./oxc-dom-lowering.js\";\nimport {\n lowerOxcCompatObjectExpression,\n lowerOxcCompatReactNodeExpression,\n lowerOxcNestedJsxExpression,\n lowerOxcServerStringExpression,\n} from \"./oxc-nested-lowering.js\";\nimport {\n isOxcJsxBranch,\n readOxcReturnExpressionFromStatement,\n} from \"./oxc-expression-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n collectOxcReactiveDerivedFunctionNames,\n collectOxcReactiveReadAliases,\n containsOxcJsxSyntax,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { containsRawJsxInIr } from \"./oxc-raw-jsx.js\";\nimport type { AnalyzeModuleOptions, CompileTarget, Diagnostic } from \"./types.js\";\n\nexport interface OxcParityResult {\n matches: boolean;\n oxc: {\n errors: string[];\n exportedComponents: string[];\n ir?: ModuleIr;\n usedTypescriptFallback: boolean;\n rawJsxDetected: boolean;\n };\n}\n\nconst oxcBodyLowerers: OxcBodyLowerers = createOxcBodyLowerers();\n\nfunction createOxcBodyLowerers(\n compatRuntimeImports: ReadonlyMap<string, ClientReferenceIr> = new Map(),\n): OxcBodyLowerers {\n return {\n lowerDomNodeExpression: lowerOxcDomNodeExpression,\n lowerCompatObjectExpression: lowerOxcCompatObjectExpression,\n lowerServerStringExpression: (code, expression, componentNames, target, diagnostics) =>\n lowerOxcServerStringExpression(\n code,\n expression,\n componentNames,\n target,\n diagnostics,\n compatRuntimeImports,\n ),\n };\n}\n\nfunction createOxcChildAnalysisContext(\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>,\n reactiveAliasBindings?: ReadonlyMap<string, string>,\n serverOutput?: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames?: Set<string>,\n bodyLowerers: OxcBodyLowerers = oxcBodyLowerers,\n): OxcChildAnalysisContext {\n return {\n componentNames,\n ...(componentCallNames === undefined ? {} : { componentCallNames }),\n target,\n ...(serverOutput === undefined ? {} : { serverOutput }),\n diagnostics,\n ...(bodyStatementJsx === undefined ? {} : { bodyStatementJsx }),\n ...(componentBodyBindings === undefined ? {} : { componentBodyBindings }),\n ...(reactiveAliasBindings === undefined ? {} : { reactiveAliasBindings }),\n bodyLowerers,\n lowerNestedJsxExpression: lowerOxcNestedJsxExpression,\n };\n}\n\nexport function analyzeOxcParity(input: AnalyzeToIrInput): OxcParityResult {\n const oxc = parseSync(input.filename, input.code, {\n lang: \"tsx\",\n sourceType: \"module\",\n astType: \"ts\",\n });\n const oxcExportedComponents = collectOxcExportedComponents(oxc.program);\n const oxcOutput = analyzeOxcToIr(input.code, oxc.program, input.target, input.options);\n const rawJsxDetected = containsRawJsxInIr(oxcOutput.ir);\n\n return {\n matches:\n oxc.errors.length === 0 &&\n oxcOutput.diagnostics.length === 0 &&\n !rawJsxDetected &&\n arraysEqual(\n oxcExportedComponents,\n oxcOutput.ir.components\n .filter((component) => component.exported !== false)\n .map((component) => component.exportName),\n ),\n oxc: {\n errors: oxc.errors.map((error) => error.message),\n exportedComponents: oxcExportedComponents,\n ir: oxcOutput.ir,\n usedTypescriptFallback: false,\n rawJsxDetected,\n },\n };\n}\n\nexport function analyzeWithOxc(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(\n createCompilerModuleContextWithOxc(input),\n {\n target: input.target,\n ...(input.options === undefined ? {} : { options: input.options }),\n },\n );\n}\n\nexport function analyzeCompilerModuleContextWithOxc(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n const analyzed = analyzeOxcToIr(context.code, context.program, input.target, input.options);\n\n return {\n ir: analyzed.ir,\n diagnostics: [\n ...context.parseErrors.map((error) => oxcParseErrorDiagnostic(context.code, error)),\n ...analyzed.diagnostics,\n ],\n usedTypescriptFallback: false,\n };\n}\n\nfunction oxcParseErrorDiagnostic(code: string, error: unknown): Diagnostic {\n const object = readObject(error);\n const firstLabel = readObject(readArray(object.labels)[0]);\n const loc =\n typeof firstLabel.start === \"number\"\n ? getOxcLocationFromOffset(code, firstLabel.start)\n : undefined;\n\n return {\n level: \"error\",\n code:\n object.message === \"Unexpected token\" ? \"MR_INVALID_JSX_EXPRESSION\" : \"MR_OXC_PARSE_ERROR\",\n message: typeof object.message === \"string\" ? object.message : \"Oxc parse error\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nfunction analyzeOxcToIr(\n code: string,\n program: unknown,\n target: CompileTarget,\n options?: AnalyzeModuleOptions,\n): { ir: ModuleIr; diagnostics: Diagnostic[] } {\n const body = readArray(readObject(program).body);\n const userImports: string[] = [];\n const moduleStatements: string[] = [];\n const moduleBindingNames = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n const clientBoundaryImports = collectOxcClientBoundaryImportComponents(\n program,\n new Set(options?.clientBoundaryImports ?? []),\n );\n const compatRuntimeImports = collectOxcCompatRuntimeImportComponents(program);\n const compatReactNodeReferences =\n options?.compatReactNodeReturnRenderMode === \"react-node\"\n ? collectOxcCompatReactNodeComponentReferences(program)\n : undefined;\n const bodyLowerers = createOxcBodyLowerers(compatRuntimeImports);\n const moduleRenderValueBindings = collectOxcBodyJsxBindingNames(body);\n const reactiveDerivedFunctionNames = collectOxcReactiveDerivedFunctionNames(body);\n\n for (const statement of body) {\n const object = readObject(statement);\n\n if (object.type === \"ImportDeclaration\") {\n const importCode = formatStatement(code, statement);\n const source = readObject(object.source).value;\n\n if (importCode !== \"\" && !(target === \"server\" && isCssImportSource(source))) {\n userImports.push(importCode);\n }\n for (const bindingName of collectImportBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n continue;\n }\n\n if (\n isOxcJsxComponentStatement(statement) ||\n (options?.compatReactNodeReturn === true && isOxcExportedFunctionLike(statement))\n ) {\n const declaration = readObject(readObject(statement).declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n for (const bindingName of collectBindingNames(declaration)) {\n moduleBindingNames.add(bindingName);\n }\n }\n continue;\n } else {\n if (isOxcUnsupportedExportedFunction(statement, options)) {\n diagnostics.push({\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPONENT_RETURN\",\n message: \"Exported component must return a JSX element or supported React node.\",\n });\n continue;\n }\n const loweredTopLevel = lowerOxcTopLevelStatement(\n code,\n statement,\n componentNamesFromProgram(program, moduleBindingNames),\n target,\n diagnostics,\n options,\n bodyLowerers,\n );\n const formattedStatement =\n loweredTopLevel ?? formatPreservedStatement(code, statement, options);\n\n if (\n loweredTopLevel === undefined &&\n containsOxcJsxSyntax(object) &&\n options?.topLevelJsx !== \"compat-object\" &&\n options?.topLevelJsx !== \"server-string\"\n ) {\n diagnostics.push(\n unsupportedTopLevelJsxInitializerDiagnostic(getOxcLocation(code, statement)),\n );\n }\n\n if (formattedStatement !== \"\") {\n moduleStatements.push(formattedStatement);\n }\n for (const bindingName of collectBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n }\n }\n\n const componentNames = componentNamesFromProgram(program, moduleBindingNames);\n const componentCallNames =\n options?.serverOutput === \"stream\" ? componentCallNamesFromProgram(program) : undefined;\n const asyncComponentNames = collectOxcAsyncComponentNames(program);\n const components = body.flatMap((statement) =>\n analyzeOxcComponent(\n code,\n statement,\n componentNames,\n target,\n diagnostics,\n options?.bodyStatementJsx ?? \"dom-node\",\n moduleRenderValueBindings,\n options?.compatReactNodeReturn === true,\n options?.serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n ),\n );\n\n for (const component of components) {\n markOxcAsyncComponentReferences(component.root, asyncComponentNames);\n markOxcClientReferences(component.root, clientBoundaryImports);\n markOxcCompatRuntimeReferences(component.root, compatRuntimeImports);\n if (compatReactNodeReferences !== undefined) {\n markOxcCompatReactNodeReferences(component.root, compatReactNodeReferences);\n }\n validateOxcNestedAwait(component.root, diagnostics);\n validateOxcAwaitCompatComponents(component.root, diagnostics, {\n allowCompatComponents: options?.awaitCompatComponents === \"lower\",\n });\n }\n\n const ir: ModuleIr = {\n userImports,\n moduleStatements,\n moduleBindingNames: Array.from(moduleBindingNames),\n components,\n };\n\n assignOxcAwaitIds(ir);\n\n return {\n ir,\n diagnostics,\n };\n}\n\nfunction isCssImportSource(source: unknown): boolean {\n return typeof source === \"string\" && /\\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source);\n}\n\nfunction componentNamesFromProgram(\n program: unknown,\n moduleBindingNames: ReadonlySet<string>,\n): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program),\n ...collectOxcExportedFunctionNames(program),\n ...collectOxcPlainComponentNames(program),\n ...moduleBindingNames,\n ]);\n}\n\nfunction componentCallNamesFromProgram(program: unknown): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program).filter((name) => name !== \"default\"),\n ...collectOxcPlainComponentNames(program),\n ]);\n}\n\nfunction analyzeOxcComponent(\n code: string,\n statement: unknown,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n): ComponentIr[] {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n if (declaration === undefined || !hasOxcFunctionLikeComponentReturn(declaration)) {\n return [];\n }\n const id = readObject(declaration.id);\n const name = typeof id.name === \"string\" ? id.name : \"DefaultExport\";\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n name,\n declaration,\n \"default\",\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n true,\n ),\n ];\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n const plainComponent = readOxcPlainComponent(statement);\n\n if (plainComponent === undefined) {\n return [];\n }\n\n return [\n {\n ...analyzeOxcFunctionLikeComponent(\n code,\n plainComponent.name,\n plainComponent.initializer,\n plainComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n ),\n exported: false,\n },\n ];\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n const variableComponent = readOxcVariableComponentDeclaration(declaration);\n\n if (variableComponent === undefined) {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n variableComponent.name,\n variableComponent.initializer,\n variableComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n ),\n ];\n }\n\n if (\n declaration.type !== \"FunctionDeclaration\" ||\n (!compatReactNodeReturn && !hasComponentReturn(declaration.body))\n ) {\n return [];\n }\n\n const id = readObject(declaration.id);\n\n if (typeof id.name !== \"string\") {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n id.name,\n declaration,\n id.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n ),\n ];\n}\n\nfunction analyzeOxcFunctionLikeComponent(\n code: string,\n name: string,\n functionLike: Record<string, unknown>,\n exportName: string,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n exportDefault = false,\n): ComponentIr {\n const functionBody = readObject(functionLike.body);\n const body = functionBody.type === \"BlockStatement\" ? readArray(functionBody.body) : [];\n const earlyIfRootReturn =\n bodyStatementJsx === \"compat-object\"\n ? undefined\n : findOxcEarlyIfRootReturn(body, target === \"client\");\n const rootStatement =\n earlyIfRootReturn?.branchStatements[0] ??\n (bodyStatementJsx === \"compat-object\"\n ? body.find((bodyStatement) => readObject(bodyStatement).type === \"ReturnStatement\")\n : findOxcRootStatement(body));\n const returnStatement =\n readObject(rootStatement).type === \"ReturnStatement\" ? rootStatement : undefined;\n const expressionBody = unwrapOxcParentheses(readObject(functionLike.body));\n const returnExpression =\n returnStatement === undefined\n ? expressionBody\n : unwrapOxcParentheses(readObject(readObject(returnStatement).argument));\n const parameters = readArray(functionLike.params).map((param) =>\n readOxcParameterName(code, param),\n );\n const bodyStatements = body\n .filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n )\n .map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n );\n const componentBodyBindings = collectOxcVariableInitializers(body);\n const reactiveAliasBindings = collectOxcReactiveReadAliases(\n code,\n body,\n reactiveDerivedFunctionNames,\n );\n const childAnalysisContext = createOxcChildAnalysisContext(\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n componentBodyBindings,\n reactiveAliasBindings,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n );\n const root =\n analyzeOxcEarlyIfRootReturn(\n code,\n earlyIfRootReturn,\n childAnalysisContext,\n bodyStatementJsx,\n ) ??\n analyzeOxcSwitchRootReturn(\n code,\n rootStatement,\n childAnalysisContext,\n bodyStatementJsx,\n ) ??\n (isJsxRoot(returnExpression.type) || returnExpression.type === \"JSXFragment\"\n ? analyzeOxcJsxNode(code, returnExpression, childAnalysisContext)\n : isOxcComponentCallExpression(returnExpression)\n ? analyzeOxcComponentCallExpression(code, returnExpression)\n : analyzeOxcDynamicRootReturn(\n code,\n returnExpression,\n childAnalysisContext,\n bodyStatementJsx,\n ) ??\n {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n compatReactNodeReturn\n ? (lowerOxcCompatReactNodeExpression(\n code,\n returnExpression,\n componentNames,\n target,\n diagnostics,\n ) ??\n stripOxcGeneratedImports(\n transformJsxToCreateElementWithOxc(readSource(code, returnExpression)),\n ))\n : readSource(code, returnExpression),\n ),\n ...(compatReactNodeReturn ? { renderMode: \"react-node\" as const } : {}),\n });\n markOxcRenderValueExpressions(\n [root],\n new Set([\n ...moduleRenderValueBindings,\n ...collectOxcBodyJsxBindingNames(\n body.filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n ),\n ),\n ]),\n bodyStatementJsx === \"server-string\" ? \"html\" : \"dynamic\",\n );\n\n return {\n name,\n exportName,\n ...(exportDefault ? { exportDefault: true } : {}),\n ...(functionLike.async === true ? { async: true } : {}),\n parameters,\n bodyStatements,\n bindingNames: [...parameters, ...body.flatMap(collectBindingNames)],\n root,\n };\n}\n\ninterface OxcEarlyIfRootReturn {\n branchStatements: unknown[];\n fallthroughStatement: unknown;\n fallthroughBodyStatements: unknown[];\n branches: Array<{\n test: Record<string, unknown>;\n consequent: Record<string, unknown>;\n }>;\n fallthrough: Record<string, unknown>;\n}\n\nfunction findOxcEarlyIfRootReturn(\n body: readonly unknown[],\n allowFallthroughBodyStatements: boolean,\n): OxcEarlyIfRootReturn | undefined {\n for (let index = 0; index < body.length - 1; index += 1) {\n const branches: OxcEarlyIfRootReturn[\"branches\"] = [];\n const branchStatements: unknown[] = [];\n let cursor = index;\n\n while (cursor < body.length - 1) {\n const statement = readObject(body[cursor]);\n\n if (statement.type !== \"IfStatement\" || readObject(statement.alternate).type !== undefined) {\n break;\n }\n\n const consequent = readOxcPureReturnExpressionFromStatement(statement.consequent);\n\n if (consequent === undefined || !isOxcRootReturnExpression(consequent)) {\n break;\n }\n\n branches.push({\n test: readObject(statement.test),\n consequent,\n });\n branchStatements.push(body[cursor]);\n cursor += 1;\n }\n\n if (branches.length === 0) {\n continue;\n }\n\n const fallthroughStart = cursor;\n let fallthroughStatement = body[cursor];\n const fallthrough = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (fallthrough === undefined && allowFallthroughBodyStatements) {\n while (cursor < body.length) {\n fallthroughStatement = body[cursor];\n const candidate = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (candidate !== undefined) {\n if (!isOxcRootReturnExpression(candidate)) {\n break;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: body.slice(fallthroughStart, cursor),\n fallthroughStatement,\n branches,\n fallthrough: candidate,\n };\n }\n\n cursor += 1;\n }\n }\n\n if (fallthrough === undefined || !isOxcRootReturnExpression(fallthrough)) {\n continue;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: [],\n fallthroughStatement,\n branches,\n fallthrough,\n };\n }\n\n return undefined;\n}\n\nfunction readOxcPureReturnExpressionFromStatement(\n statement: unknown,\n): Record<string, unknown> | undefined {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return readOxcReturnExpressionFromStatement(statement);\n }\n\n if (object.type !== \"BlockStatement\") {\n return undefined;\n }\n\n const statements = readArray(object.body);\n if (statements.length !== 1) {\n return undefined;\n }\n\n return readOxcReturnExpressionFromStatement(statements[0]);\n}\n\nfunction isOxcRootReturnExpression(expression: Record<string, unknown>): boolean {\n return isOxcEmptyRootReturn(expression) || isOxcRenderableRootReturn(expression);\n}\n\nfunction isOxcEmptyRootReturn(expression: Record<string, unknown>): boolean {\n return (\n expression.type === \"Literal\" &&\n (expression.value === null || expression.value === false)\n );\n}\n\nfunction isOxcRenderableRootReturn(expression: Record<string, unknown>): boolean {\n return (\n isJsxRoot(expression.type) ||\n expression.type === \"JSXFragment\" ||\n isOxcComponentCallExpression(expression) ||\n analyzeOxcDynamicRootReturnShape(expression)\n );\n}\n\nfunction analyzeOxcDynamicRootReturnShape(expression: Record<string, unknown>): boolean {\n if (expression.type === \"ConditionalExpression\") {\n return true;\n }\n\n return (\n expression.type === \"LogicalExpression\" &&\n isOxcJsxBranch(readObject(expression.right))\n );\n}\n\nfunction findOxcRootStatement(body: readonly unknown[]): unknown | undefined {\n return body.find((bodyStatement) => {\n const object = readObject(bodyStatement);\n return object.type === \"ReturnStatement\" || isOxcSwitchRootReturnStatement(object);\n });\n}\n\nfunction isOxcSwitchRootReturnStatement(statement: Record<string, unknown>): boolean {\n if (statement.type !== \"SwitchStatement\") {\n return false;\n }\n\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some(\n (child) => readObject(child).type === \"ReturnStatement\",\n ),\n );\n}\n\nfunction analyzeOxcSwitchRootReturn(\n code: string,\n statement: unknown,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const object = readObject(statement);\n\n if (object.type !== \"SwitchStatement\") {\n return undefined;\n }\n\n const discriminant = readSource(code, object.discriminant);\n const cases = readArray(object.cases).map((switchCase) => {\n const caseObject = readObject(switchCase);\n const returnStatement = readArray(caseObject.consequent)\n .map(readObject)\n .find((child) => child.type === \"ReturnStatement\");\n const argument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n return {\n test: readObject(caseObject.test),\n children:\n argument === undefined\n ? undefined\n : analyzeOxcDynamicRootBranch(code, argument, context, bodyStatementJsx),\n };\n });\n\n if (cases.some((entry) => entry.children === undefined)) {\n return undefined;\n }\n\n const defaultCase = cases.find((entry) => entry.test.type === undefined);\n let fallback = defaultCase?.children ?? [];\n\n for (const entry of [...cases].reverse()) {\n if (entry.test.type === undefined) {\n continue;\n }\n\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: `${discriminant} === ${readSource(code, entry.test)}`,\n whenTrue: entry.children ?? [],\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction analyzeOxcEarlyIfRootReturn(\n code: string,\n earlyIfRootReturn: OxcEarlyIfRootReturn | undefined,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n if (earlyIfRootReturn === undefined) {\n return undefined;\n }\n\n let fallback = analyzeOxcDynamicRootBranch(\n code,\n earlyIfRootReturn.fallthrough,\n context,\n bodyStatementJsx,\n );\n\n if (earlyIfRootReturn.fallthroughBodyStatements.length > 0) {\n fallback = [\n {\n kind: \"fragment\",\n bodyStatements: earlyIfRootReturn.fallthroughBodyStatements.map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n ),\n children: fallback,\n },\n ];\n }\n\n for (const branch of [...earlyIfRootReturn.branches].reverse()) {\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveRootConditionCode(code, branch.test, context),\n whenTrue: analyzeOxcDynamicRootBranch(\n code,\n branch.consequent,\n context,\n bodyStatementJsx,\n ),\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction readOxcReactiveRootConditionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction analyzeOxcDynamicRootBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"][] {\n if (expression.type === \"Literal\" && (expression.value === null || expression.value === false)) {\n return [];\n }\n\n return analyzeOxcExpressionChild(code, expression, context, bodyStatementJsx);\n}\n\nfunction analyzeOxcDynamicRootReturn(\n code: string,\n returnExpression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const nodes = analyzeOxcExpressionChild(code, returnExpression, context, bodyStatementJsx);\n\n if (nodes.length !== 1) {\n return undefined;\n }\n\n const [root] = nodes;\n return root?.kind === \"conditional\" ? root : undefined;\n}\n\nfunction analyzeOxcComponentCallExpression(\n code: string,\n expression: Record<string, unknown>,\n): ComponentIr[\"root\"] {\n const callee = readObject(expression.callee);\n const args = readArray(expression.arguments);\n const firstArg = readObject(args[0]);\n\n return {\n kind: \"component\",\n name: readSource(code, callee),\n props:\n firstArg.type === undefined\n ? []\n : [\n {\n kind: \"spread-prop\" as const,\n code: normalizeOxcExpressionCode(readSource(code, firstArg)),\n },\n ],\n children: [],\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc.js","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseSync } from \"oxc-parser\";\nimport { unsupportedTopLevelJsxInitializerDiagnostic } from \"./diagnostics.js\";\nimport {\n type AnalyzeToIrInput,\n type AnalyzeToIrOutput,\n} from \"./internal.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nimport type { ClientReferenceIr, ComponentIr, ModuleIr } from \"./ir.js\";\nimport { transformJsxToCreateElementWithOxc } from \"./oxc-transform.js\";\nimport {\n arraysEqual,\n getOxcLocation,\n getOxcLocationFromOffset,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport { assignOxcAwaitIds } from \"./oxc-await-ids.js\";\nimport {\n validateOxcAwaitCompatComponents,\n validateOxcNestedAwait,\n} from \"./oxc-await-validation.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n collectBindingNames,\n collectImportBindingNames,\n formatStatement,\n readOxcParameterName,\n} from \"./oxc-bindings.js\";\nimport {\n formatOxcBodyStatement,\n formatPreservedStatement,\n lowerOxcBodyStatementJsx,\n lowerOxcTopLevelStatement,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { collectOxcVariableInitializers } from \"./oxc-await-analysis.js\";\nimport {\n collectOxcAsyncComponentNames,\n collectOxcExportedComponents,\n collectOxcExportedFunctionNames,\n collectOxcLocalJsxReturnFunctionNames,\n collectOxcPlainComponentNames,\n hasComponentReturn,\n hasLocalJsxHelperCallReturn,\n hasOxcFunctionLikeComponentReturn,\n isOxcExportedFunctionLike,\n isOxcComponentCallExpression,\n isOxcLocalJsxHelperCallExpression,\n isJsxRoot,\n isOxcJsxComponentStatement,\n isOxcUnsupportedExportedFunction,\n readOxcPlainComponent,\n readOxcVariableComponentDeclaration,\n unwrapOxcComponentFunctionLikeInitializer,\n} from \"./oxc-component-detection.js\";\nimport {\n collectOxcClientBoundaryImportComponents,\n collectOxcCompatReactNodeComponentReferences,\n collectOxcCompatRuntimeImportComponents,\n markOxcAsyncComponentReferences,\n markOxcClientReferences,\n markOxcCompatReactNodeReferences,\n markOxcCompatRuntimeReferences,\n} from \"./oxc-component-references.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n analyzeOxcExpressionChild,\n analyzeOxcJsxNode,\n type OxcChildAnalysisContext,\n} from \"./oxc-child-analysis.js\";\nimport { lowerOxcDomNodeExpression } from \"./oxc-dom-lowering.js\";\nimport {\n lowerOxcCompatObjectExpression,\n lowerOxcCompatReactNodeExpression,\n lowerOxcNestedJsxExpression,\n lowerOxcServerStringExpression,\n} from \"./oxc-nested-lowering.js\";\nimport {\n isOxcJsxBranch,\n readOxcReturnExpressionFromStatement,\n} from \"./oxc-expression-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n collectOxcReactiveDerivedFunctionNames,\n collectOxcReactiveReadAliases,\n containsOxcJsxSyntax,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { containsRawJsxInIr } from \"./oxc-raw-jsx.js\";\nimport type { AnalyzeModuleOptions, CompileTarget, Diagnostic } from \"./types.js\";\n\nexport interface OxcParityResult {\n matches: boolean;\n oxc: {\n errors: string[];\n exportedComponents: string[];\n ir?: ModuleIr;\n usedTypescriptFallback: boolean;\n rawJsxDetected: boolean;\n };\n}\n\nconst oxcBodyLowerers: OxcBodyLowerers = createOxcBodyLowerers();\n\nfunction createOxcBodyLowerers(\n compatRuntimeImports: ReadonlyMap<string, ClientReferenceIr> = new Map(),\n): OxcBodyLowerers {\n return {\n lowerDomNodeExpression: lowerOxcDomNodeExpression,\n lowerCompatObjectExpression: lowerOxcCompatObjectExpression,\n lowerServerStringExpression: (code, expression, componentNames, target, diagnostics) =>\n lowerOxcServerStringExpression(\n code,\n expression,\n componentNames,\n target,\n diagnostics,\n compatRuntimeImports,\n ),\n };\n}\n\nfunction createOxcChildAnalysisContext(\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>,\n reactiveAliasBindings?: ReadonlyMap<string, string>,\n serverOutput?: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames?: Set<string>,\n bodyLowerers: OxcBodyLowerers = oxcBodyLowerers,\n): OxcChildAnalysisContext {\n return {\n componentNames,\n ...(componentCallNames === undefined ? {} : { componentCallNames }),\n target,\n ...(serverOutput === undefined ? {} : { serverOutput }),\n diagnostics,\n ...(bodyStatementJsx === undefined ? {} : { bodyStatementJsx }),\n ...(componentBodyBindings === undefined ? {} : { componentBodyBindings }),\n ...(reactiveAliasBindings === undefined ? {} : { reactiveAliasBindings }),\n bodyLowerers,\n lowerNestedJsxExpression: lowerOxcNestedJsxExpression,\n };\n}\n\nexport function analyzeOxcParity(input: AnalyzeToIrInput): OxcParityResult {\n const oxc = parseSync(input.filename, input.code, {\n lang: \"tsx\",\n sourceType: \"module\",\n astType: \"ts\",\n });\n const oxcExportedComponents = collectOxcExportedComponents(oxc.program);\n const oxcOutput = analyzeOxcToIr(input.code, oxc.program, input.target, input.options);\n const rawJsxDetected = containsRawJsxInIr(oxcOutput.ir);\n\n return {\n matches:\n oxc.errors.length === 0 &&\n oxcOutput.diagnostics.length === 0 &&\n !rawJsxDetected &&\n arraysEqual(\n oxcExportedComponents,\n oxcOutput.ir.components\n .filter((component) => component.exported !== false)\n .map((component) => component.exportName),\n ),\n oxc: {\n errors: oxc.errors.map((error) => error.message),\n exportedComponents: oxcExportedComponents,\n ir: oxcOutput.ir,\n usedTypescriptFallback: false,\n rawJsxDetected,\n },\n };\n}\n\nexport function analyzeWithOxc(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(\n createCompilerModuleContextWithOxc(input),\n {\n target: input.target,\n ...(input.options === undefined ? {} : { options: input.options }),\n },\n );\n}\n\nexport function analyzeCompilerModuleContextWithOxc(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n const analyzed = analyzeOxcToIr(context.code, context.program, input.target, input.options);\n\n return {\n ir: analyzed.ir,\n diagnostics: [\n ...context.parseErrors.map((error) => oxcParseErrorDiagnostic(context.code, error)),\n ...analyzed.diagnostics,\n ],\n usedTypescriptFallback: false,\n };\n}\n\nfunction oxcParseErrorDiagnostic(code: string, error: unknown): Diagnostic {\n const object = readObject(error);\n const firstLabel = readObject(readArray(object.labels)[0]);\n const loc =\n typeof firstLabel.start === \"number\"\n ? getOxcLocationFromOffset(code, firstLabel.start)\n : undefined;\n\n return {\n level: \"error\",\n code:\n object.message === \"Unexpected token\" ? \"MR_INVALID_JSX_EXPRESSION\" : \"MR_OXC_PARSE_ERROR\",\n message: typeof object.message === \"string\" ? object.message : \"Oxc parse error\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nfunction analyzeOxcToIr(\n code: string,\n program: unknown,\n target: CompileTarget,\n options?: AnalyzeModuleOptions,\n): { ir: ModuleIr; diagnostics: Diagnostic[] } {\n const body = readArray(readObject(program).body);\n const userImports: string[] = [];\n const moduleStatements: string[] = [];\n const moduleBindingNames = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n const clientBoundaryImports = collectOxcClientBoundaryImportComponents(\n program,\n new Set(options?.clientBoundaryImports ?? []),\n );\n const compatRuntimeImports = collectOxcCompatRuntimeImportComponents(program);\n const compatReactNodeReferences =\n options?.compatReactNodeReturnRenderMode === \"react-node\"\n ? collectOxcCompatReactNodeComponentReferences(program)\n : undefined;\n const localJsxReturnFunctionNames =\n target === \"server\" ? collectOxcLocalJsxReturnFunctionNames(program) : new Set<string>();\n const localJsxHelperHtmlParameters =\n target === \"server\"\n ? collectLocalJsxHelperHtmlParameters(program, localJsxReturnFunctionNames)\n : new Map<string, Set<number>>();\n const bodyLowerers = createOxcBodyLowerers(compatRuntimeImports);\n const moduleRenderValueBindings = collectOxcBodyJsxBindingNames(body);\n const reactiveDerivedFunctionNames = collectOxcReactiveDerivedFunctionNames(body);\n\n for (const statement of body) {\n const object = readObject(statement);\n\n if (object.type === \"ImportDeclaration\") {\n const importCode = formatStatement(code, statement);\n const source = readObject(object.source).value;\n\n if (importCode !== \"\" && !(target === \"server\" && isCssImportSource(source))) {\n userImports.push(importCode);\n }\n for (const bindingName of collectImportBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n continue;\n }\n\n if (\n isOxcJsxComponentStatement(statement, localJsxReturnFunctionNames) ||\n (options?.compatReactNodeReturn === true && isOxcExportedFunctionLike(statement))\n ) {\n const declaration = readObject(readObject(statement).declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n for (const bindingName of collectBindingNames(declaration)) {\n moduleBindingNames.add(bindingName);\n }\n }\n continue;\n } else {\n if (isOxcUnsupportedExportedFunction(statement, options, localJsxReturnFunctionNames)) {\n diagnostics.push({\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPONENT_RETURN\",\n message: \"Exported component must return a JSX element or supported React node.\",\n });\n continue;\n }\n const loweredTopLevel = lowerOxcTopLevelStatement(\n code,\n statement,\n componentNamesFromProgram(program, moduleBindingNames),\n target,\n diagnostics,\n options,\n bodyLowerers,\n );\n const formattedStatement =\n loweredTopLevel ?? formatPreservedStatement(code, statement, options);\n\n if (\n loweredTopLevel === undefined &&\n containsOxcJsxSyntax(object) &&\n options?.topLevelJsx !== \"compat-object\" &&\n options?.topLevelJsx !== \"server-string\"\n ) {\n diagnostics.push(\n unsupportedTopLevelJsxInitializerDiagnostic(getOxcLocation(code, statement)),\n );\n }\n\n if (formattedStatement !== \"\") {\n moduleStatements.push(formattedStatement);\n }\n for (const bindingName of collectBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n }\n }\n\n const componentNames = componentNamesFromProgram(program, moduleBindingNames);\n const componentCallNames =\n options?.serverOutput === \"stream\" ? componentCallNamesFromProgram(program) : undefined;\n const asyncComponentNames = collectOxcAsyncComponentNames(program);\n const components = body.flatMap((statement) =>\n analyzeOxcComponent(\n code,\n statement,\n componentNames,\n target,\n diagnostics,\n options?.bodyStatementJsx ?? \"dom-node\",\n moduleRenderValueBindings,\n options?.compatReactNodeReturn === true,\n options?.serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n );\n\n for (const component of components) {\n markOxcAsyncComponentReferences(component.root, asyncComponentNames);\n markOxcClientReferences(component.root, clientBoundaryImports);\n markOxcCompatRuntimeReferences(component.root, compatRuntimeImports);\n if (compatReactNodeReferences !== undefined) {\n markOxcCompatReactNodeReferences(component.root, compatReactNodeReferences);\n }\n validateOxcNestedAwait(component.root, diagnostics);\n validateOxcAwaitCompatComponents(component.root, diagnostics, {\n allowCompatComponents: options?.awaitCompatComponents === \"lower\",\n });\n }\n\n const ir: ModuleIr = {\n userImports,\n moduleStatements,\n moduleBindingNames: Array.from(moduleBindingNames),\n components,\n };\n\n assignOxcAwaitIds(ir);\n\n return {\n ir,\n diagnostics,\n };\n}\n\nfunction isCssImportSource(source: unknown): boolean {\n return typeof source === \"string\" && /\\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source);\n}\n\nfunction componentNamesFromProgram(\n program: unknown,\n moduleBindingNames: ReadonlySet<string>,\n): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program),\n ...collectOxcExportedFunctionNames(program),\n ...collectOxcPlainComponentNames(program),\n ...moduleBindingNames,\n ]);\n}\n\nfunction componentCallNamesFromProgram(program: unknown): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program).filter((name) => name !== \"default\"),\n ...collectOxcPlainComponentNames(program),\n ]);\n}\n\nfunction collectLocalJsxHelperHtmlParameters(\n program: unknown,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): Map<string, Set<number>> {\n const parameters = new Map<string, Set<number>>();\n\n if (localJsxReturnFunctionNames.size === 0) {\n return parameters;\n }\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readObject(object.declaration)\n : object;\n const body = readObject(declaration.body);\n\n if (body.type !== \"BlockStatement\") {\n continue;\n }\n\n for (const returnExpression of collectOxcReturnExpressions(body)) {\n const callExpression = unwrapOxcParentheses(returnExpression);\n if (callExpression.type !== \"CallExpression\") {\n continue;\n }\n\n const callee = unwrapOxcParentheses(readObject(callExpression.callee));\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !localJsxReturnFunctionNames.has(callee.name)\n ) {\n continue;\n }\n const calleeName = callee.name;\n\n readArray(callExpression.arguments).forEach((argument, index) => {\n if (!containsOxcJsxSyntax(readObject(argument))) {\n return;\n }\n\n const indexes = parameters.get(calleeName) ?? new Set<number>();\n indexes.add(index);\n parameters.set(calleeName, indexes);\n });\n }\n }\n\n return parameters;\n}\n\nfunction collectOxcReturnExpressions(statement: Record<string, unknown>): Record<string, unknown>[] {\n if (statement.type === \"ReturnStatement\") {\n return [unwrapOxcParentheses(readObject(statement.argument))];\n }\n\n if (statement.type === \"BlockStatement\") {\n return readArray(statement.body).flatMap((child) =>\n collectOxcReturnExpressions(readObject(child)),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return [\n ...collectOxcReturnExpressions(readObject(statement.consequent)),\n ...collectOxcReturnExpressions(readObject(statement.alternate)),\n ];\n }\n\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).flatMap((switchCase) =>\n readArray(readObject(switchCase).consequent).flatMap((child) =>\n collectOxcReturnExpressions(readObject(child)),\n ),\n );\n }\n\n return [];\n}\n\nfunction analyzeOxcComponent(\n code: string,\n statement: unknown,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n localJsxHelperHtmlParameters: ReadonlyMap<string, ReadonlySet<number>>,\n): ComponentIr[] {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n if (declaration === undefined || !hasOxcFunctionLikeComponentReturn(declaration)) {\n return [];\n }\n const id = readObject(declaration.id);\n const name = typeof id.name === \"string\" ? id.name : \"DefaultExport\";\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n name,\n declaration,\n \"default\",\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n true,\n ),\n ];\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n const plainComponent = readOxcPlainComponent(statement);\n\n if (plainComponent === undefined) {\n return [];\n }\n\n return [\n {\n ...analyzeOxcFunctionLikeComponent(\n code,\n plainComponent.name,\n plainComponent.initializer,\n plainComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n exported: false,\n },\n ];\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n const variableComponent = readOxcVariableComponentDeclaration(declaration);\n\n if (variableComponent === undefined) {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n variableComponent.name,\n variableComponent.initializer,\n variableComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n ];\n }\n\n if (\n declaration.type !== \"FunctionDeclaration\" ||\n (!compatReactNodeReturn &&\n !hasComponentReturn(declaration.body) &&\n !hasLocalJsxHelperCallReturn(declaration.body, localJsxReturnFunctionNames))\n ) {\n return [];\n }\n\n const id = readObject(declaration.id);\n\n if (typeof id.name !== \"string\") {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n id.name,\n declaration,\n id.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n ];\n}\n\nfunction lowerOxcLocalJsxHelperCallExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyLowerers: OxcBodyLowerers,\n): string {\n if (expression.type !== \"CallExpression\") {\n return readSource(code, expression);\n }\n\n const args = readArray(expression.arguments).map((argument) => {\n const object = unwrapOxcParentheses(readObject(argument));\n return containsOxcJsxSyntax(object)\n ? (bodyLowerers.lowerServerStringExpression(\n code,\n object,\n componentNames,\n target,\n diagnostics,\n ) ?? readSource(code, argument))\n : readSource(code, argument);\n });\n\n return `${readSource(code, readObject(expression.callee))}(${args.join(\", \")})`;\n}\n\nfunction analyzeOxcFunctionLikeComponent(\n code: string,\n name: string,\n functionLike: Record<string, unknown>,\n exportName: string,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n localJsxHelperHtmlParameters: ReadonlyMap<string, ReadonlySet<number>>,\n exportDefault = false,\n): ComponentIr {\n const functionBody = readObject(functionLike.body);\n const body = functionBody.type === \"BlockStatement\" ? readArray(functionBody.body) : [];\n const earlyIfRootReturn =\n bodyStatementJsx === \"compat-object\"\n ? undefined\n : findOxcEarlyIfRootReturn(body, target === \"client\");\n const rootStatement =\n earlyIfRootReturn?.branchStatements[0] ??\n (bodyStatementJsx === \"compat-object\"\n ? body.find((bodyStatement) => readObject(bodyStatement).type === \"ReturnStatement\")\n : findOxcRootStatement(body));\n const returnStatement =\n readObject(rootStatement).type === \"ReturnStatement\" ? rootStatement : undefined;\n const expressionBody = unwrapOxcParentheses(readObject(functionLike.body));\n const returnExpression =\n returnStatement === undefined\n ? expressionBody\n : unwrapOxcParentheses(readObject(readObject(returnStatement).argument));\n const parameters = readArray(functionLike.params).map((param) =>\n readOxcParameterName(code, param),\n );\n const htmlParameterNames = new Set(\n [...(localJsxHelperHtmlParameters.get(name) ?? [])]\n .map((index) => parameters[index])\n .filter((parameter): parameter is string => parameter !== undefined),\n );\n const bodyComponentNames =\n /^[a-z]/.test(name) && componentNames.has(name)\n ? new Set([...componentNames].filter((componentName) => componentName !== name))\n : componentNames;\n const bodyStatements = body\n .filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n )\n .map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n bodyComponentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n );\n const componentBodyBindings = collectOxcVariableInitializers(body);\n const reactiveAliasBindings = collectOxcReactiveReadAliases(\n code,\n body,\n reactiveDerivedFunctionNames,\n );\n const childAnalysisContext = createOxcChildAnalysisContext(\n bodyComponentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n componentBodyBindings,\n reactiveAliasBindings,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n );\n const root =\n analyzeOxcEarlyIfRootReturn(\n code,\n earlyIfRootReturn,\n childAnalysisContext,\n bodyStatementJsx,\n ) ??\n analyzeOxcSwitchRootReturn(\n code,\n rootStatement,\n childAnalysisContext,\n bodyStatementJsx,\n ) ??\n (isJsxRoot(returnExpression.type) || returnExpression.type === \"JSXFragment\"\n ? analyzeOxcJsxNode(code, returnExpression, childAnalysisContext)\n : isOxcComponentCallExpression(returnExpression)\n ? analyzeOxcComponentCallExpression(code, returnExpression)\n : isOxcLocalJsxHelperCallExpression(returnExpression, localJsxReturnFunctionNames)\n ? {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n bodyStatementJsx === \"server-string\"\n ? lowerOxcLocalJsxHelperCallExpressionCode(\n code,\n returnExpression,\n bodyComponentNames,\n target,\n diagnostics,\n bodyLowerers,\n )\n : readSource(code, returnExpression),\n ),\n renderMode: \"html\" as const,\n }\n : analyzeOxcDynamicRootReturn(\n code,\n returnExpression,\n childAnalysisContext,\n bodyStatementJsx,\n ) ??\n {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n compatReactNodeReturn\n ? (lowerOxcCompatReactNodeExpression(\n code,\n returnExpression,\n componentNames,\n target,\n diagnostics,\n ) ??\n stripOxcGeneratedImports(\n transformJsxToCreateElementWithOxc(readSource(code, returnExpression)),\n ))\n : readSource(code, returnExpression),\n ),\n ...(compatReactNodeReturn ? { renderMode: \"react-node\" as const } : {}),\n });\n markOxcRenderValueExpressions(\n [root],\n new Set([\n ...moduleRenderValueBindings,\n ...collectOxcBodyJsxBindingNames(\n body.filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n ),\n ),\n ...htmlParameterNames,\n ]),\n bodyStatementJsx === \"server-string\" ? \"html\" : \"dynamic\",\n );\n\n return {\n name,\n exportName,\n ...(exportDefault ? { exportDefault: true } : {}),\n ...(functionLike.async === true ? { async: true } : {}),\n parameters,\n bodyStatements,\n bindingNames: [...parameters, ...body.flatMap(collectBindingNames)],\n root,\n };\n}\n\ninterface OxcEarlyIfRootReturn {\n branchStatements: unknown[];\n fallthroughStatement: unknown;\n fallthroughBodyStatements: unknown[];\n branches: Array<{\n test: Record<string, unknown>;\n consequent: Record<string, unknown>;\n }>;\n fallthrough: Record<string, unknown>;\n}\n\nfunction findOxcEarlyIfRootReturn(\n body: readonly unknown[],\n allowFallthroughBodyStatements: boolean,\n): OxcEarlyIfRootReturn | undefined {\n for (let index = 0; index < body.length - 1; index += 1) {\n const branches: OxcEarlyIfRootReturn[\"branches\"] = [];\n const branchStatements: unknown[] = [];\n let cursor = index;\n\n while (cursor < body.length - 1) {\n const statement = readObject(body[cursor]);\n\n if (statement.type !== \"IfStatement\" || readObject(statement.alternate).type !== undefined) {\n break;\n }\n\n const consequent = readOxcPureReturnExpressionFromStatement(statement.consequent);\n\n if (consequent === undefined || !isOxcRootReturnExpression(consequent)) {\n break;\n }\n\n branches.push({\n test: readObject(statement.test),\n consequent,\n });\n branchStatements.push(body[cursor]);\n cursor += 1;\n }\n\n if (branches.length === 0) {\n continue;\n }\n\n const fallthroughStart = cursor;\n let fallthroughStatement = body[cursor];\n const fallthrough = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (fallthrough === undefined && allowFallthroughBodyStatements) {\n while (cursor < body.length) {\n fallthroughStatement = body[cursor];\n const candidate = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (candidate !== undefined) {\n if (!isOxcRootReturnExpression(candidate)) {\n break;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: body.slice(fallthroughStart, cursor),\n fallthroughStatement,\n branches,\n fallthrough: candidate,\n };\n }\n\n cursor += 1;\n }\n }\n\n if (fallthrough === undefined || !isOxcRootReturnExpression(fallthrough)) {\n continue;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: [],\n fallthroughStatement,\n branches,\n fallthrough,\n };\n }\n\n return undefined;\n}\n\nfunction readOxcPureReturnExpressionFromStatement(\n statement: unknown,\n): Record<string, unknown> | undefined {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return readOxcReturnExpressionFromStatement(statement);\n }\n\n if (object.type !== \"BlockStatement\") {\n return undefined;\n }\n\n const statements = readArray(object.body);\n if (statements.length !== 1) {\n return undefined;\n }\n\n return readOxcReturnExpressionFromStatement(statements[0]);\n}\n\nfunction isOxcRootReturnExpression(expression: Record<string, unknown>): boolean {\n return isOxcEmptyRootReturn(expression) || isOxcRenderableRootReturn(expression);\n}\n\nfunction isOxcEmptyRootReturn(expression: Record<string, unknown>): boolean {\n return (\n expression.type === \"Literal\" &&\n (expression.value === null || expression.value === false)\n );\n}\n\nfunction isOxcRenderableRootReturn(expression: Record<string, unknown>): boolean {\n return (\n isJsxRoot(expression.type) ||\n expression.type === \"JSXFragment\" ||\n isOxcComponentCallExpression(expression) ||\n analyzeOxcDynamicRootReturnShape(expression)\n );\n}\n\nfunction analyzeOxcDynamicRootReturnShape(expression: Record<string, unknown>): boolean {\n if (expression.type === \"ConditionalExpression\") {\n return true;\n }\n\n return (\n expression.type === \"LogicalExpression\" &&\n isOxcJsxBranch(readObject(expression.right))\n );\n}\n\nfunction findOxcRootStatement(body: readonly unknown[]): unknown | undefined {\n return body.find((bodyStatement) => {\n const object = readObject(bodyStatement);\n return object.type === \"ReturnStatement\" || isOxcSwitchRootReturnStatement(object);\n });\n}\n\nfunction isOxcSwitchRootReturnStatement(statement: Record<string, unknown>): boolean {\n if (statement.type !== \"SwitchStatement\") {\n return false;\n }\n\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some(\n (child) => readObject(child).type === \"ReturnStatement\",\n ),\n );\n}\n\nfunction analyzeOxcSwitchRootReturn(\n code: string,\n statement: unknown,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const object = readObject(statement);\n\n if (object.type !== \"SwitchStatement\") {\n return undefined;\n }\n\n const discriminant = readSource(code, object.discriminant);\n const cases = readArray(object.cases).map((switchCase) => {\n const caseObject = readObject(switchCase);\n const returnStatement = readArray(caseObject.consequent)\n .map(readObject)\n .find((child) => child.type === \"ReturnStatement\");\n const argument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n return {\n test: readObject(caseObject.test),\n children:\n argument === undefined\n ? undefined\n : analyzeOxcDynamicRootBranch(code, argument, context, bodyStatementJsx),\n };\n });\n\n if (cases.some((entry) => entry.children === undefined)) {\n return undefined;\n }\n\n const defaultCase = cases.find((entry) => entry.test.type === undefined);\n let fallback = defaultCase?.children ?? [];\n\n for (const entry of [...cases].reverse()) {\n if (entry.test.type === undefined) {\n continue;\n }\n\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: `${discriminant} === ${readSource(code, entry.test)}`,\n whenTrue: entry.children ?? [],\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction analyzeOxcEarlyIfRootReturn(\n code: string,\n earlyIfRootReturn: OxcEarlyIfRootReturn | undefined,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n if (earlyIfRootReturn === undefined) {\n return undefined;\n }\n\n let fallback = analyzeOxcDynamicRootBranch(\n code,\n earlyIfRootReturn.fallthrough,\n context,\n bodyStatementJsx,\n );\n\n if (earlyIfRootReturn.fallthroughBodyStatements.length > 0) {\n fallback = [\n {\n kind: \"fragment\",\n bodyStatements: earlyIfRootReturn.fallthroughBodyStatements.map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n ),\n children: fallback,\n },\n ];\n }\n\n for (const branch of [...earlyIfRootReturn.branches].reverse()) {\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveRootConditionCode(code, branch.test, context),\n whenTrue: analyzeOxcDynamicRootBranch(\n code,\n branch.consequent,\n context,\n bodyStatementJsx,\n ),\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction readOxcReactiveRootConditionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction analyzeOxcDynamicRootBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"][] {\n if (expression.type === \"Literal\" && (expression.value === null || expression.value === false)) {\n return [];\n }\n\n return analyzeOxcExpressionChild(code, expression, context, bodyStatementJsx);\n}\n\nfunction analyzeOxcDynamicRootReturn(\n code: string,\n returnExpression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const nodes = analyzeOxcExpressionChild(code, returnExpression, context, bodyStatementJsx);\n\n if (nodes.length !== 1) {\n return undefined;\n }\n\n const [root] = nodes;\n return root?.kind === \"conditional\" ? root : undefined;\n}\n\nfunction analyzeOxcComponentCallExpression(\n code: string,\n expression: Record<string, unknown>,\n): ComponentIr[\"root\"] {\n const callee = readObject(expression.callee);\n const args = readArray(expression.arguments);\n const firstArg = readObject(args[0]);\n\n return {\n kind: \"component\",\n name: readSource(code, callee),\n props:\n firstArg.type === undefined\n ? []\n : [\n {\n kind: \"spread-prop\" as const,\n code: normalizeOxcExpressionCode(readSource(code, firstArg)),\n },\n ],\n children: [],\n };\n}\n"]}
|