@reckona/mreact-compiler 0.0.87 → 0.0.89

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.
@@ -1 +1 @@
1
- {"version":3,"file":"oxc-child-analysis.js","sourceRoot":"","sources":["../src/oxc-child-analysis.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n invalidJsxExpressionDiagnostic,\n unserializableAwaitValueDiagnostic,\n unsupportedComponentReferenceDiagnostic,\n} from \"./diagnostics.js\";\nimport type { AsyncBoundaryIr, JsxElementIr, JsxNodeIr } from \"./ir.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n detectUnserializableAwaitValueReason,\n readOxcExpressionAttribute,\n readOxcExpressionAttributeNode,\n} from \"./oxc-await-analysis.js\";\nimport {\n analyzeOxcArrowJsxRenderer,\n analyzeOxcComponentProp,\n analyzeOxcSingleArrowJsxChild,\n readOxcConsumerRenderProp,\n} from \"./oxc-component-props.js\";\nimport {\n formatOxcBodyStatement,\n lowerOxcBodyStatementJsx,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n findOxcKeyCodeInChildren,\n readOxcReturnExpressionFromStatement,\n} from \"./oxc-expression-utils.js\";\nimport {\n analyzeOxcAttribute,\n findOxcJsxAttributeCode,\n readOxcJsxTagName,\n} from \"./oxc-jsx-attributes.js\";\nimport { normalizeOxcJsxText } from \"./oxc-jsx-text.js\";\nimport {\n getOxcLocation,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n containsOxcJsxSyntax,\n isOxcRenderValueExpression,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { transformJsxWithOxc } from \"./oxc-transform.js\";\nimport type { CompileTarget, Diagnostic, ServerOutputMode } from \"./types.js\";\n\nexport interface OxcChildAnalysisContext {\n componentNames: Set<string>;\n componentCallNames?: Set<string>;\n target: CompileTarget;\n serverOutput?: ServerOutputMode;\n diagnostics: Diagnostic[];\n bodyStatementJsx?: OxcBodyStatementJsxMode;\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>;\n reactiveAliasBindings?: ReadonlyMap<string, string>;\n bodyLowerers: OxcBodyLowerers;\n lowerNestedJsxExpression: (\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n ) => string | undefined;\n}\n\nexport function analyzeOxcJsxNode(\n code: string,\n node: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr {\n if (node.type === \"JSXFragment\") {\n return {\n kind: \"fragment\",\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n };\n }\n\n if (node.type !== \"JSXElement\") {\n return { kind: \"expr\", code: readSource(code, node) };\n }\n\n const openingElement = readObject(node.openingElement);\n const tagName = readOxcJsxTagName(readObject(openingElement.name));\n const attributes = readArray(openingElement.attributes);\n\n if (tagName === \"Await\") {\n return analyzeOxcAsyncBoundary(code, node, attributes, context, bodyStatementJsx);\n }\n\n if (tagName === \"Slot\") {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName: \"slot\",\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n } satisfies JsxElementIr;\n }\n\n if (\n /^[A-Z][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)+$/.test(tagName) ||\n context.componentNames.has(tagName) ||\n isOxcServerRuntimeComponentBinding(tagName, context)\n ) {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n const analyzeJsxNode = (\n child: Record<string, unknown>,\n childBodyStatementJsx: OxcBodyStatementJsxMode = bodyStatementJsx,\n ) => analyzeOxcJsxNode(code, child, context, childBodyStatementJsx);\n const consumerRenderProp = tagName.endsWith(\".Consumer\")\n ? readOxcConsumerRenderProp(\n code,\n readArray(node.children),\n analyzeJsxNode,\n bodyStatementJsx,\n )\n : undefined;\n const componentLoc = getOxcLocation(code, openingElement.name);\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n ...(keyCode === undefined ? {} : { keyCode }),\n props: attributes\n .flatMap((attr) =>\n analyzeOxcComponentProp(code, attr, analyzeJsxNode, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((prop) => prop.kind === \"spread-prop\" || prop.name !== \"key\")\n .concat(consumerRenderProp === undefined ? [] : [consumerRenderProp]),\n children:\n consumerRenderProp === undefined\n ? analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx)\n : [],\n };\n }\n\n if (/^[A-Z]/.test(tagName)) {\n const componentLoc = getOxcLocation(code, openingElement.name);\n context.diagnostics.push(unsupportedComponentReferenceDiagnostic(tagName, componentLoc));\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n props: [],\n children: [],\n };\n }\n\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName,\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx),\n } satisfies JsxElementIr;\n}\n\nfunction isOxcServerRuntimeComponentBinding(\n tagName: string,\n context: OxcChildAnalysisContext,\n): boolean {\n if (context.target !== \"server\" || !/^[A-Z]/.test(tagName)) {\n return false;\n }\n\n const binding = context.componentBodyBindings?.get(tagName);\n if (binding === undefined) {\n return false;\n }\n\n return isOxcRuntimeComponentExpression(binding);\n}\n\nfunction isOxcRuntimeComponentExpression(expression: Record<string, unknown>): boolean {\n if (\n expression.type === \"Identifier\" ||\n expression.type === \"MemberExpression\" ||\n expression.type === \"CallExpression\" ||\n expression.type === \"FunctionExpression\" ||\n expression.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (expression.type === \"ChainExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.expression));\n }\n\n if (expression.type === \"ConditionalExpression\") {\n return (\n isOxcRuntimeComponentExpression(readObject(expression.consequent)) &&\n isOxcRuntimeComponentExpression(readObject(expression.alternate))\n );\n }\n\n if (expression.type === \"LogicalExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.right));\n }\n\n return false;\n}\n\nfunction analyzeOxcAsyncBoundary(\n code: string,\n node: Record<string, unknown>,\n attributes: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): AsyncBoundaryIr {\n const valueExpression = readOxcExpressionAttributeNode(attributes, \"value\");\n\n if (valueExpression !== undefined) {\n const unserializableReason = detectUnserializableAwaitValueReason(\n valueExpression,\n context.componentBodyBindings,\n );\n\n if (unserializableReason !== undefined) {\n context.diagnostics.push(unserializableAwaitValueDiagnostic(unserializableReason));\n }\n }\n\n const valueCode = readOxcExpressionAttribute(code, attributes, \"value\") ?? \"undefined\";\n const placeholderExpression = readOxcExpressionAttributeNode(attributes, \"placeholder\");\n const placeholderTagCode = findOxcJsxAttributeCode(code, attributes, \"placeholderAs\");\n const catchExpression = readOxcExpressionAttributeNode(attributes, \"catch\");\n const renderer = analyzeOxcSingleArrowJsxChild(\n code,\n readArray(node.children),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n );\n const catchRenderer =\n catchExpression !== undefined && readObject(catchExpression).type === \"ArrowFunctionExpression\"\n ? analyzeOxcArrowJsxRenderer(\n code,\n readObject(catchExpression),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n )\n : undefined;\n const placeholderChildren =\n placeholderExpression === undefined\n ? undefined\n : analyzeOxcExpressionChild(\n code,\n readObject(placeholderExpression),\n context,\n bodyStatementJsx,\n );\n const openingElement = readObject(node.openingElement);\n const awaitLoc = getOxcLocation(code, readObject(openingElement.name));\n\n return {\n kind: \"async-boundary\",\n ...(awaitLoc === undefined ? {} : { loc: awaitLoc }),\n valueCode,\n valueName: renderer.valueName,\n children: renderer.children,\n ...(placeholderChildren === undefined ? {} : { placeholderChildren }),\n ...(placeholderTagCode === undefined ? {} : { placeholderTagCode }),\n ...(catchRenderer === undefined\n ? {}\n : {\n catchName: catchRenderer.valueName,\n catchChildren: catchRenderer.children,\n }),\n };\n}\n\nexport function analyzeOxcChildren(\n code: string,\n children: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n return children.flatMap((child, index): JsxNodeIr[] => {\n const object = readObject(child);\n\n if (object.type === \"JSXText\") {\n const value = typeof object.value === \"string\" ? object.value : \"\";\n const normalizedValue = normalizeOxcJsxText(value, children, index);\n return normalizedValue === \"\" ? [] : [{ kind: \"text\", value: normalizedValue }];\n }\n\n if (object.type === \"JSXElement\" || object.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, object, context, bodyStatementJsx)];\n }\n\n if (object.type === \"JSXExpressionContainer\") {\n return analyzeOxcExpressionChild(\n code,\n readObject(object.expression),\n context,\n bodyStatementJsx,\n );\n }\n\n return [];\n });\n}\n\nexport function analyzeOxcExpressionChild(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"JSXEmptyExpression\") {\n context.diagnostics.push(invalidJsxExpressionDiagnostic(getOxcLocation(code, expression), \"text\"));\n return [];\n }\n\n if (unwrappedExpression.type === \"ConditionalExpression\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.test),\n context,\n ),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n }\n\n if (\n unwrappedExpression.type === \"LogicalExpression\" &&\n containsOxcJsxSyntax(readObject(unwrappedExpression.right))\n ) {\n const rightBranch = analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.right),\n context,\n bodyStatementJsx,\n );\n\n if (unwrappedExpression.operator === \"&&\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: rightBranch,\n whenFalse: [],\n },\n ];\n }\n\n if (unwrappedExpression.operator === \"||\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: [\n {\n kind: \"expr\",\n code: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n },\n ],\n whenFalse: rightBranch,\n },\n ];\n }\n }\n\n const list = analyzeOxcListExpression(code, unwrappedExpression, context, bodyStatementJsx);\n\n if (list !== undefined) {\n return [list];\n }\n\n if (unwrappedExpression.type === \"JSXElement\" || unwrappedExpression.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, unwrappedExpression, context, bodyStatementJsx)];\n }\n\n const sameModuleComponentStreamCall =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? emitOxcSameModuleComponentStreamCall(\n code,\n expression,\n context.componentCallNames ?? context.componentNames,\n )\n : undefined;\n const componentCallNamesForRenderMode =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? context.componentCallNames ?? context.componentNames\n : context.componentNames;\n const sameModuleComponentCall =\n sameModuleComponentStreamCall !== undefined ||\n isOxcSameModuleComponentCallExpression(expression, componentCallNamesForRenderMode);\n const containsNestedJsx = containsOxcJsxSyntax(unwrappedExpression);\n const loweredNestedJsx = containsNestedJsx\n ? context.lowerNestedJsxExpression(\n code,\n expression,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n )\n : undefined;\n const isKnownRenderValue = isOxcRenderValueExpression(expression) || sameModuleComponentCall;\n const renderMode = sameModuleComponentStreamCall !== undefined\n ? (\"stream-node\" as const)\n : isKnownRenderValue\n ? bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : (\"dynamic\" as const)\n : loweredNestedJsx !== undefined && bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : loweredNestedJsx !== undefined && bodyStatementJsx === \"dom-node\"\n ? (\"dynamic\" as const)\n : undefined;\n\n return [\n {\n kind: \"expr\",\n code:\n sameModuleComponentStreamCall ??\n (containsNestedJsx\n ? normalizeOxcExpressionCode(\n loweredNestedJsx ??\n (bodyStatementJsx === \"compat-object\"\n ? stripOxcGeneratedImports(transformJsxWithOxc(readSource(code, expression)))\n : readOxcReactiveExpressionCode(code, expression, context)),\n )\n : readOxcReactiveExpressionCode(code, expression, context)),\n ...(renderMode === undefined ? {} : { renderMode }),\n },\n ];\n}\n\nfunction readOxcReactiveExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"Identifier\" && typeof unwrappedExpression.name === \"string\") {\n return context.reactiveAliasBindings?.get(unwrappedExpression.name) ?? readSource(code, expression);\n }\n\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction isOxcSameModuleComponentCallExpression(\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): boolean {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n componentNames.has(callee.name)\n );\n}\n\nfunction emitOxcSameModuleComponentStreamCall(\n code: string,\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): string | undefined {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !componentNames.has(callee.name)\n ) {\n return undefined;\n }\n\n const args = readArray(unwrappedExpression.arguments)\n .map((argument) => readSource(code, argument))\n .join(\", \");\n\n return `($sink) => ${callee.name}($sink${args === \"\" ? \"\" : `, ${args}`})`;\n}\n\nfunction analyzeOxcDynamicBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr[] {\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 analyzeOxcListExpression(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr | undefined {\n const callExpression =\n expression.type === \"ChainExpression\" ? readObject(expression.expression) : expression;\n\n if (callExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(callExpression.callee);\n\n if (callee.type !== \"MemberExpression\" || readObject(callee.property).name !== \"map\") {\n return undefined;\n }\n\n const renderer = readObject(readArray(callExpression.arguments)[0]);\n\n if (renderer.type !== \"ArrowFunctionExpression\") {\n return undefined;\n }\n\n const itemName = String(readObject(readArray(renderer.params)[0]).name ?? \"_item\");\n const indexName = readObject(readArray(renderer.params)[1]).name;\n const arrayName = readObject(readArray(renderer.params)[2]).name;\n const rendererBody = analyzeOxcListRenderer(code, renderer, context, bodyStatementJsx);\n\n if (rendererBody === undefined) {\n return undefined;\n }\n\n const { children, bodyStatements } = rendererBody;\n const keyCode = findOxcKeyCodeInChildren(children);\n\n return {\n kind: \"list\",\n itemsCode:\n callee.optional === true\n ? `(${readOxcReactiveExpressionCode(code, readObject(callee.object), context)} ?? [])`\n : readOxcReactiveExpressionCode(code, readObject(callee.object), context),\n itemName,\n ...(typeof indexName === \"string\" ? { indexName } : {}),\n ...(typeof arrayName === \"string\" ? { arrayName } : {}),\n ...(keyCode === undefined ? {} : { keyCode }),\n ...(bodyStatements.length === 0 ? {} : { bodyStatements }),\n children,\n };\n}\n\nfunction analyzeOxcListRenderer(\n code: string,\n renderer: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const body = readObject(renderer.body);\n\n if (body.type !== \"BlockStatement\") {\n return analyzeOxcListReturnExpression(\n code,\n unwrapOxcParentheses(body),\n [],\n context,\n bodyStatementJsx,\n );\n }\n\n const statements = readArray(body.body);\n const ifStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"IfStatement\",\n );\n\n if (ifStatementIndex >= 0) {\n return analyzeOxcListIfRenderer(code, statements, ifStatementIndex, context, bodyStatementJsx);\n }\n\n const returnStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"ReturnStatement\",\n );\n const returnStatement =\n returnStatementIndex === -1 ? undefined : readObject(statements[returnStatementIndex]);\n const returnArgument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n if (returnArgument === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, returnStatementIndex);\n const result = analyzeOxcListReturnExpression(\n code,\n returnArgument,\n bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n context,\n bodyStatementJsx,\n );\n\n if (result === undefined) {\n return undefined;\n }\n\n markOxcRenderValueExpressions(\n result.children,\n collectOxcBodyJsxBindingNames(bodyPrefixStatements),\n );\n return result;\n}\n\nfunction analyzeOxcListReturnExpression(\n code: string,\n body: Record<string, unknown>,\n bodyStatements: string[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n if (body.type === \"ConditionalExpression\") {\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(body.test), context),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(body.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(body.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n\n return {\n children,\n bodyStatements,\n };\n }\n\n if (body.type !== \"JSXElement\" && body.type !== \"JSXFragment\") {\n return undefined;\n }\n\n return {\n children: [analyzeOxcJsxNode(code, body, context, bodyStatementJsx)],\n bodyStatements,\n };\n}\n\nfunction analyzeOxcListIfRenderer(\n code: string,\n statements: readonly unknown[],\n ifStatementIndex: number,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const ifStatement = readObject(statements[ifStatementIndex]);\n const whenTrueExpression = readOxcReturnExpressionFromStatement(ifStatement.consequent);\n const alternate = readOxcReturnExpressionFromStatement(ifStatement.alternate);\n const fallthrough = readOxcReturnExpressionFromStatement(statements[ifStatementIndex + 1]);\n const whenFalseExpression = alternate ?? fallthrough;\n\n if (whenTrueExpression === undefined || whenFalseExpression === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, ifStatementIndex);\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(ifStatement.test), context),\n whenTrue: analyzeOxcDynamicBranch(code, whenTrueExpression, context, bodyStatementJsx),\n whenFalse: analyzeOxcDynamicBranch(code, whenFalseExpression, context, bodyStatementJsx),\n },\n ];\n\n markOxcRenderValueExpressions(children, collectOxcBodyJsxBindingNames(bodyPrefixStatements));\n\n return {\n bodyStatements: bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n children,\n };\n}\n\nfunction resolveOxcBodyStatementJsx(context: OxcChildAnalysisContext): OxcBodyStatementJsxMode {\n return context.bodyStatementJsx ?? (context.target === \"server\" ? \"server-string\" : \"dom-node\");\n}\n"]}
1
+ {"version":3,"file":"oxc-child-analysis.js","sourceRoot":"","sources":["../src/oxc-child-analysis.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n invalidJsxExpressionDiagnostic,\n unserializableAwaitValueDiagnostic,\n unsupportedComponentReferenceDiagnostic,\n} from \"./diagnostics.js\";\nimport type { AsyncBoundaryIr, JsxElementIr, JsxNodeIr } from \"./ir.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n detectUnserializableAwaitValueReason,\n readOxcExpressionAttribute,\n readOxcExpressionAttributeNode,\n} from \"./oxc-await-analysis.js\";\nimport {\n analyzeOxcArrowJsxRenderer,\n analyzeOxcComponentProp,\n analyzeOxcSingleArrowJsxChild,\n readOxcConsumerRenderProp,\n} from \"./oxc-component-props.js\";\nimport {\n formatOxcBodyStatement,\n lowerOxcBodyStatementJsx,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n findOxcKeyCodeInChildren,\n readOxcReturnExpressionFromStatement,\n} from \"./oxc-expression-utils.js\";\nimport {\n analyzeOxcAttribute,\n findOxcJsxAttributeCode,\n readOxcJsxTagName,\n} from \"./oxc-jsx-attributes.js\";\nimport { normalizeOxcJsxText } from \"./oxc-jsx-text.js\";\nimport {\n getOxcLocation,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n containsOxcJsxSyntax,\n isOxcRenderValueExpression,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { transformJsxWithOxc } from \"./oxc-transform.js\";\nimport type { CompileTarget, Diagnostic, ServerOutputMode } from \"./types.js\";\n\nexport interface OxcChildAnalysisContext {\n componentNames: Set<string>;\n componentCallNames?: Set<string>;\n target: CompileTarget;\n serverOutput?: ServerOutputMode;\n diagnostics: Diagnostic[];\n bodyStatementJsx?: OxcBodyStatementJsxMode;\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>;\n reactiveAliasBindings?: ReadonlyMap<string, string>;\n bodyLowerers: OxcBodyLowerers;\n lowerNestedJsxExpression: (\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n ) => string | undefined;\n}\n\nexport function analyzeOxcJsxNode(\n code: string,\n node: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr {\n if (node.type === \"JSXFragment\") {\n return {\n kind: \"fragment\",\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n };\n }\n\n if (node.type !== \"JSXElement\") {\n return { kind: \"expr\", code: readSource(code, node) };\n }\n\n const openingElement = readObject(node.openingElement);\n const tagName = readOxcJsxTagName(readObject(openingElement.name));\n const attributes = readArray(openingElement.attributes);\n\n if (tagName === \"Await\") {\n return analyzeOxcAsyncBoundary(code, node, attributes, context, bodyStatementJsx);\n }\n\n if (tagName === \"Slot\") {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName: \"slot\",\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n } satisfies JsxElementIr;\n }\n\n if (\n /^[A-Z][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)+$/.test(tagName) ||\n context.componentNames.has(tagName) ||\n isOxcServerRuntimeComponentBinding(tagName, context)\n ) {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n const analyzeJsxNode = (\n child: Record<string, unknown>,\n childBodyStatementJsx: OxcBodyStatementJsxMode = bodyStatementJsx,\n ) => analyzeOxcJsxNode(code, child, context, childBodyStatementJsx);\n const consumerRenderProp = tagName.endsWith(\".Consumer\")\n ? readOxcConsumerRenderProp(\n code,\n readArray(node.children),\n analyzeJsxNode,\n bodyStatementJsx,\n )\n : undefined;\n const componentLoc = getOxcLocation(code, openingElement.name);\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n ...(keyCode === undefined ? {} : { keyCode }),\n props: attributes\n .flatMap((attr) =>\n analyzeOxcComponentProp(code, attr, analyzeJsxNode, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((prop) => prop.kind === \"spread-prop\" || prop.name !== \"key\")\n .concat(consumerRenderProp === undefined ? [] : [consumerRenderProp]),\n children:\n consumerRenderProp === undefined\n ? analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx)\n : [],\n };\n }\n\n if (/^[A-Z]/.test(tagName)) {\n const componentLoc = getOxcLocation(code, openingElement.name);\n context.diagnostics.push(unsupportedComponentReferenceDiagnostic(tagName, componentLoc));\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n props: [],\n children: [],\n };\n }\n\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName,\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx),\n } satisfies JsxElementIr;\n}\n\nfunction isOxcServerRuntimeComponentBinding(\n tagName: string,\n context: OxcChildAnalysisContext,\n): boolean {\n if (context.target !== \"server\" || !/^[A-Z]/.test(tagName)) {\n return false;\n }\n\n const binding = context.componentBodyBindings?.get(tagName);\n if (binding === undefined) {\n return false;\n }\n\n return isOxcRuntimeComponentExpression(binding);\n}\n\nfunction isOxcRuntimeComponentExpression(expression: Record<string, unknown>): boolean {\n if (\n expression.type === \"Identifier\" ||\n expression.type === \"MemberExpression\" ||\n expression.type === \"CallExpression\" ||\n expression.type === \"FunctionExpression\" ||\n expression.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (expression.type === \"ChainExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.expression));\n }\n\n if (expression.type === \"ConditionalExpression\") {\n return (\n isOxcRuntimeComponentExpression(readObject(expression.consequent)) &&\n isOxcRuntimeComponentExpression(readObject(expression.alternate))\n );\n }\n\n if (expression.type === \"LogicalExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.right));\n }\n\n return false;\n}\n\nfunction analyzeOxcAsyncBoundary(\n code: string,\n node: Record<string, unknown>,\n attributes: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): AsyncBoundaryIr {\n const valueExpression = readOxcExpressionAttributeNode(attributes, \"value\");\n\n if (valueExpression !== undefined) {\n const unserializableReason = detectUnserializableAwaitValueReason(\n valueExpression,\n context.componentBodyBindings,\n );\n\n if (unserializableReason !== undefined) {\n context.diagnostics.push(unserializableAwaitValueDiagnostic(unserializableReason));\n }\n }\n\n const valueCode = readOxcExpressionAttribute(code, attributes, \"value\") ?? \"undefined\";\n const placeholderExpression = readOxcExpressionAttributeNode(attributes, \"placeholder\");\n const placeholderTagCode = findOxcJsxAttributeCode(code, attributes, \"placeholderAs\");\n const catchExpression = readOxcExpressionAttributeNode(attributes, \"catch\");\n const renderer = analyzeOxcSingleArrowJsxChild(\n code,\n readArray(node.children),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n );\n const catchRenderer =\n catchExpression !== undefined && readObject(catchExpression).type === \"ArrowFunctionExpression\"\n ? analyzeOxcArrowJsxRenderer(\n code,\n readObject(catchExpression),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n )\n : undefined;\n const placeholderChildren =\n placeholderExpression === undefined\n ? undefined\n : analyzeOxcExpressionChild(\n code,\n readObject(placeholderExpression),\n context,\n bodyStatementJsx,\n );\n const openingElement = readObject(node.openingElement);\n const awaitLoc = getOxcLocation(code, readObject(openingElement.name));\n\n return {\n kind: \"async-boundary\",\n ...(awaitLoc === undefined ? {} : { loc: awaitLoc }),\n valueCode,\n valueName: renderer.valueName,\n children: renderer.children,\n ...(placeholderChildren === undefined ? {} : { placeholderChildren }),\n ...(placeholderTagCode === undefined ? {} : { placeholderTagCode }),\n ...(catchRenderer === undefined\n ? {}\n : {\n catchName: catchRenderer.valueName,\n catchChildren: catchRenderer.children,\n }),\n };\n}\n\nexport function analyzeOxcChildren(\n code: string,\n children: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n return children.flatMap((child, index): JsxNodeIr[] => {\n const object = readObject(child);\n\n if (object.type === \"JSXText\") {\n const value = typeof object.value === \"string\" ? object.value : \"\";\n const normalizedValue = normalizeOxcJsxText(value, children, index);\n return normalizedValue === \"\" ? [] : [{ kind: \"text\", value: normalizedValue }];\n }\n\n if (object.type === \"JSXElement\" || object.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, object, context, bodyStatementJsx)];\n }\n\n if (object.type === \"JSXExpressionContainer\") {\n return analyzeOxcExpressionChild(\n code,\n readObject(object.expression),\n context,\n bodyStatementJsx,\n );\n }\n\n return [];\n });\n}\n\nexport function analyzeOxcExpressionChild(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"JSXEmptyExpression\") {\n if (isOxcJsxCommentExpression(code, unwrappedExpression)) {\n return [];\n }\n\n context.diagnostics.push(invalidJsxExpressionDiagnostic(getOxcLocation(code, expression), \"text\"));\n return [];\n }\n\n if (unwrappedExpression.type === \"ConditionalExpression\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.test),\n context,\n ),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n }\n\n if (\n unwrappedExpression.type === \"LogicalExpression\" &&\n containsOxcJsxSyntax(readObject(unwrappedExpression.right))\n ) {\n const rightBranch = analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.right),\n context,\n bodyStatementJsx,\n );\n\n if (unwrappedExpression.operator === \"&&\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: rightBranch,\n whenFalse: [],\n },\n ];\n }\n\n if (unwrappedExpression.operator === \"||\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: [\n {\n kind: \"expr\",\n code: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n },\n ],\n whenFalse: rightBranch,\n },\n ];\n }\n }\n\n const list = analyzeOxcListExpression(code, unwrappedExpression, context, bodyStatementJsx);\n\n if (list !== undefined) {\n return [list];\n }\n\n if (unwrappedExpression.type === \"JSXElement\" || unwrappedExpression.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, unwrappedExpression, context, bodyStatementJsx)];\n }\n\n const sameModuleComponentStreamCall =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? emitOxcSameModuleComponentStreamCall(\n code,\n expression,\n context.componentCallNames ?? context.componentNames,\n )\n : undefined;\n const componentCallNamesForRenderMode =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? context.componentCallNames ?? context.componentNames\n : context.componentNames;\n const sameModuleComponentCall =\n sameModuleComponentStreamCall !== undefined ||\n isOxcSameModuleComponentCallExpression(expression, componentCallNamesForRenderMode);\n const containsNestedJsx = containsOxcJsxSyntax(unwrappedExpression);\n const loweredNestedJsx = containsNestedJsx\n ? context.lowerNestedJsxExpression(\n code,\n expression,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n )\n : undefined;\n const isKnownRenderValue = isOxcRenderValueExpression(expression) || sameModuleComponentCall;\n const renderMode = sameModuleComponentStreamCall !== undefined\n ? (\"stream-node\" as const)\n : isKnownRenderValue\n ? bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : (\"dynamic\" as const)\n : loweredNestedJsx !== undefined && bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : loweredNestedJsx !== undefined && bodyStatementJsx === \"dom-node\"\n ? (\"dynamic\" as const)\n : undefined;\n\n return [\n {\n kind: \"expr\",\n code:\n sameModuleComponentStreamCall ??\n (containsNestedJsx\n ? normalizeOxcExpressionCode(\n loweredNestedJsx ??\n (bodyStatementJsx === \"compat-object\"\n ? stripOxcGeneratedImports(transformJsxWithOxc(readSource(code, expression)))\n : readOxcReactiveExpressionCode(code, expression, context)),\n )\n : readOxcReactiveExpressionCode(code, expression, context)),\n ...(renderMode === undefined ? {} : { renderMode }),\n },\n ];\n}\n\nfunction readOxcReactiveExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"Identifier\" && typeof unwrappedExpression.name === \"string\") {\n return context.reactiveAliasBindings?.get(unwrappedExpression.name) ?? readSource(code, expression);\n }\n\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction isOxcSameModuleComponentCallExpression(\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): boolean {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n componentNames.has(callee.name)\n );\n}\n\nfunction emitOxcSameModuleComponentStreamCall(\n code: string,\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): string | undefined {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !componentNames.has(callee.name)\n ) {\n return undefined;\n }\n\n const args = readArray(unwrappedExpression.arguments)\n .map((argument) => readSource(code, argument))\n .join(\", \");\n\n return `($sink) => ${callee.name}($sink${args === \"\" ? \"\" : `, ${args}`})`;\n}\n\nfunction analyzeOxcDynamicBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr[] {\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 analyzeOxcListExpression(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr | undefined {\n const callExpression =\n expression.type === \"ChainExpression\" ? readObject(expression.expression) : expression;\n\n if (callExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(callExpression.callee);\n\n if (callee.type !== \"MemberExpression\" || readObject(callee.property).name !== \"map\") {\n return undefined;\n }\n\n const renderer = readObject(readArray(callExpression.arguments)[0]);\n\n if (renderer.type !== \"ArrowFunctionExpression\") {\n return undefined;\n }\n\n const itemName = String(readObject(readArray(renderer.params)[0]).name ?? \"_item\");\n const indexName = readObject(readArray(renderer.params)[1]).name;\n const arrayName = readObject(readArray(renderer.params)[2]).name;\n const rendererBody = analyzeOxcListRenderer(code, renderer, context, bodyStatementJsx);\n\n if (rendererBody === undefined) {\n return undefined;\n }\n\n const { children, bodyStatements } = rendererBody;\n const keyCode = findOxcKeyCodeInChildren(children);\n\n return {\n kind: \"list\",\n itemsCode:\n callee.optional === true\n ? `(${readOxcReactiveExpressionCode(code, readObject(callee.object), context)} ?? [])`\n : readOxcReactiveExpressionCode(code, readObject(callee.object), context),\n itemName,\n ...(typeof indexName === \"string\" ? { indexName } : {}),\n ...(typeof arrayName === \"string\" ? { arrayName } : {}),\n ...(keyCode === undefined ? {} : { keyCode }),\n ...(bodyStatements.length === 0 ? {} : { bodyStatements }),\n children,\n };\n}\n\nfunction analyzeOxcListRenderer(\n code: string,\n renderer: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const body = readObject(renderer.body);\n\n if (body.type !== \"BlockStatement\") {\n return analyzeOxcListReturnExpression(\n code,\n unwrapOxcParentheses(body),\n [],\n context,\n bodyStatementJsx,\n );\n }\n\n const statements = readArray(body.body);\n const ifStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"IfStatement\",\n );\n\n if (ifStatementIndex >= 0) {\n return analyzeOxcListIfRenderer(code, statements, ifStatementIndex, context, bodyStatementJsx);\n }\n\n const returnStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"ReturnStatement\",\n );\n const returnStatement =\n returnStatementIndex === -1 ? undefined : readObject(statements[returnStatementIndex]);\n const returnArgument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n if (returnArgument === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, returnStatementIndex);\n const result = analyzeOxcListReturnExpression(\n code,\n returnArgument,\n bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n context,\n bodyStatementJsx,\n );\n\n if (result === undefined) {\n return undefined;\n }\n\n markOxcRenderValueExpressions(\n result.children,\n collectOxcBodyJsxBindingNames(bodyPrefixStatements),\n );\n return result;\n}\n\nfunction analyzeOxcListReturnExpression(\n code: string,\n body: Record<string, unknown>,\n bodyStatements: string[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n if (body.type === \"ConditionalExpression\") {\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(body.test), context),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(body.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(body.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n\n return {\n children,\n bodyStatements,\n };\n }\n\n if (body.type !== \"JSXElement\" && body.type !== \"JSXFragment\") {\n return undefined;\n }\n\n return {\n children: [analyzeOxcJsxNode(code, body, context, bodyStatementJsx)],\n bodyStatements,\n };\n}\n\nfunction analyzeOxcListIfRenderer(\n code: string,\n statements: readonly unknown[],\n ifStatementIndex: number,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const ifStatement = readObject(statements[ifStatementIndex]);\n const whenTrueExpression = readOxcReturnExpressionFromStatement(ifStatement.consequent);\n const alternate = readOxcReturnExpressionFromStatement(ifStatement.alternate);\n const fallthrough = readOxcReturnExpressionFromStatement(statements[ifStatementIndex + 1]);\n const whenFalseExpression = alternate ?? fallthrough;\n\n if (whenTrueExpression === undefined || whenFalseExpression === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, ifStatementIndex);\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(ifStatement.test), context),\n whenTrue: analyzeOxcDynamicBranch(code, whenTrueExpression, context, bodyStatementJsx),\n whenFalse: analyzeOxcDynamicBranch(code, whenFalseExpression, context, bodyStatementJsx),\n },\n ];\n\n markOxcRenderValueExpressions(children, collectOxcBodyJsxBindingNames(bodyPrefixStatements));\n\n return {\n bodyStatements: bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n children,\n };\n}\n\nfunction resolveOxcBodyStatementJsx(context: OxcChildAnalysisContext): OxcBodyStatementJsxMode {\n return context.bodyStatementJsx ?? (context.target === \"server\" ? \"server-string\" : \"dom-node\");\n}\n\nfunction isOxcJsxCommentExpression(code: string, expression: Record<string, unknown>): boolean {\n if (typeof expression.start !== \"number\" || typeof expression.end !== \"number\") {\n return false;\n }\n\n const source = code.slice(expression.start, expression.end).trim();\n\n return source.startsWith(\"/*\") && source.endsWith(\"*/\");\n}\n"]}
@@ -1,7 +1,9 @@
1
1
  import type { ClientReferenceIr, JsxNodeIr } from "./ir.js";
2
2
  export declare function collectOxcClientBoundaryImportComponents(program: unknown, inferredBoundaryImports: ReadonlySet<string>): Map<string, ClientReferenceIr>;
3
3
  export declare function collectOxcCompatRuntimeImportComponents(program: unknown): Map<string, ClientReferenceIr>;
4
+ export declare function collectOxcCompatReactNodeComponentReferences(program: unknown): Map<string, ClientReferenceIr>;
4
5
  export declare function markOxcAsyncComponentReferences(node: JsxNodeIr, asyncComponentNames: Set<string>): void;
5
6
  export declare function markOxcClientReferences(node: JsxNodeIr, clientReferences: Map<string, ClientReferenceIr>): void;
6
7
  export declare function markOxcCompatRuntimeReferences(node: JsxNodeIr, runtimeReferences: ReadonlyMap<string, ClientReferenceIr>): void;
8
+ export declare function markOxcCompatReactNodeReferences(node: JsxNodeIr, references: ReadonlyMap<string, ClientReferenceIr>): void;
7
9
  //# sourceMappingURL=oxc-component-references.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oxc-component-references.d.ts","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAY5D,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,OAAO,EAChB,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3C,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CA8ChC;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAuDhC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,SAAS,EACf,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,IAAI,CAMN;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC/C,IAAI,CAaN;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACxD,IAAI,CAYN"}
1
+ {"version":3,"file":"oxc-component-references.d.ts","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAY5D,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,OAAO,EAChB,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3C,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CA8ChC;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAuDhC;AAED,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAShC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,SAAS,EACf,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,IAAI,CAMN;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC/C,IAAI,CAaN;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACxD,IAAI,CAYN;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CAUN"}
@@ -80,6 +80,14 @@ export function collectOxcCompatRuntimeImportComponents(program) {
80
80
  }
81
81
  return names;
82
82
  }
83
+ export function collectOxcCompatReactNodeComponentReferences(program) {
84
+ const names = new Map();
85
+ for (const statement of readArray(readObject(program).body)) {
86
+ collectOxcCompatReactNodeImportReferences(statement, names);
87
+ collectOxcCompatReactNodeClassReferences(statement, names);
88
+ }
89
+ return names;
90
+ }
83
91
  export function markOxcAsyncComponentReferences(node, asyncComponentNames) {
84
92
  visitOxcNode(node, (child) => {
85
93
  if (child.kind === "component" && asyncComponentNames.has(child.name)) {
@@ -110,6 +118,16 @@ export function markOxcCompatRuntimeReferences(node, runtimeReferences) {
110
118
  }
111
119
  });
112
120
  }
121
+ export function markOxcCompatReactNodeReferences(node, references) {
122
+ visitOxcNode(node, (child) => {
123
+ if (child.kind !== "component") {
124
+ return;
125
+ }
126
+ if (findOxcCompatReactNodeReference(child.name, references) !== undefined) {
127
+ child.runtime = "compat";
128
+ }
129
+ });
130
+ }
113
131
  function isOxcClientBoundaryImport(statement, inferredBoundaryImports) {
114
132
  const moduleId = String(readObject(statement.source).value ?? "");
115
133
  return inferredBoundaryImports.has(moduleId) || /\.(?:client|compat)\.[cm]?[jt]sx?$/.test(moduleId);
@@ -129,6 +147,71 @@ function findOxcClientReference(name, clientReferences) {
129
147
  exportName: memberNames.join("."),
130
148
  };
131
149
  }
150
+ function collectOxcCompatReactNodeImportReferences(statement, names) {
151
+ const object = readObject(statement);
152
+ if (object.type !== "ImportDeclaration" || object.importKind === "type") {
153
+ return;
154
+ }
155
+ const moduleId = String(readObject(object.source).value ?? "");
156
+ for (const specifier of readArray(object.specifiers)) {
157
+ const specifierObject = readObject(specifier);
158
+ if (specifierObject.importKind === "type") {
159
+ continue;
160
+ }
161
+ const local = readObject(specifierObject.local);
162
+ const localName = typeof local.name === "string" ? local.name : undefined;
163
+ if (localName === undefined || !/^[A-Z]/.test(localName)) {
164
+ continue;
165
+ }
166
+ if (specifierObject.type === "ImportDefaultSpecifier") {
167
+ names.set(localName, { moduleId, exportName: "default" });
168
+ continue;
169
+ }
170
+ if (specifierObject.type === "ImportNamespaceSpecifier") {
171
+ names.set(localName, { moduleId, exportName: "*" });
172
+ continue;
173
+ }
174
+ if (specifierObject.type === "ImportSpecifier") {
175
+ const imported = readObject(specifierObject.imported);
176
+ names.set(localName, {
177
+ moduleId,
178
+ exportName: String(imported.name ?? localName),
179
+ });
180
+ }
181
+ }
182
+ }
183
+ function collectOxcCompatReactNodeClassReferences(statement, names) {
184
+ const object = readObject(statement);
185
+ const declaration = object.type === "ExportNamedDeclaration" || object.type === "ExportDefaultDeclaration"
186
+ ? readOptionalObject(object.declaration)
187
+ : object;
188
+ const className = readOxcClassComponentName(declaration);
189
+ if (className !== undefined) {
190
+ names.set(className, { moduleId: "", exportName: className });
191
+ }
192
+ }
193
+ function readOxcClassComponentName(node) {
194
+ if (node?.type === "ClassDeclaration" || node?.type === "ClassExpression") {
195
+ const id = readOptionalObject(node.id);
196
+ const name = typeof id?.name === "string" ? id.name : undefined;
197
+ return name !== undefined && /^[A-Z]/.test(name) ? name : undefined;
198
+ }
199
+ if (node?.type !== "VariableDeclaration") {
200
+ return undefined;
201
+ }
202
+ for (const declarationValue of readArray(node.declarations)) {
203
+ const declaration = readOptionalObject(declarationValue);
204
+ const id = readOptionalObject(declaration?.id);
205
+ const init = readOptionalObject(declaration?.init);
206
+ const name = typeof id?.name === "string" ? id.name : undefined;
207
+ if (name !== undefined &&
208
+ /^[A-Z]/.test(name) &&
209
+ (init?.type === "ClassExpression" || init?.type === "ClassDeclaration")) {
210
+ return name;
211
+ }
212
+ }
213
+ return undefined;
214
+ }
132
215
  function collectOxcClientReferenceAliases(node, references) {
133
216
  const state = {
134
217
  references,
@@ -372,6 +455,21 @@ function findOxcCompatRuntimeReference(name, runtimeReferences) {
372
455
  }
373
456
  : undefined;
374
457
  }
458
+ function findOxcCompatReactNodeReference(name, references) {
459
+ const direct = references.get(name);
460
+ if (direct !== undefined) {
461
+ return direct;
462
+ }
463
+ const [rootName, ...memberNames] = name.split(".");
464
+ const rootReference = rootName === undefined ? undefined : references.get(rootName);
465
+ if (rootReference === undefined || rootReference.exportName !== "*" || memberNames.length === 0) {
466
+ return undefined;
467
+ }
468
+ return {
469
+ moduleId: rootReference.moduleId,
470
+ exportName: memberNames.join("."),
471
+ };
472
+ }
375
473
  function compatRuntimeExports(moduleId) {
376
474
  if (moduleId === "@reckona/mreact-router") {
377
475
  return routerEntryCompatRuntimeExports;
@@ -1 +1 @@
1
- {"version":3,"file":"oxc-component-references.js","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ClientReferenceIr, JsxNodeIr } from \"./ir.js\";\nimport { readArray, readObject } from \"./oxc-node-utils.js\";\n\nconst routerEntryCompatRuntimeExports = new Set([\"Link\"]);\nconst routerLinkCompatRuntimeExports = new Set([\"Link\"]);\n\ninterface ClientReferenceAliasState {\n references: Map<string, ClientReferenceIr>;\n stringConstants: Map<string, string>;\n objectMembers: Map<string, Map<string, ClientReferenceIr>>;\n}\n\nexport function collectOxcClientBoundaryImportComponents(\n program: unknown,\n inferredBoundaryImports: ReadonlySet<string>,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (\n object.type !== \"ImportDeclaration\" ||\n !isOxcClientBoundaryImport(object, inferredBoundaryImports)\n ) {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n names.set(localName, {\n moduleId,\n exportName: String(imported.name ?? localName),\n });\n }\n }\n }\n\n collectOxcClientReferenceAliases(program, names);\n return names;\n}\n\nexport function collectOxcCompatRuntimeImportComponents(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\") {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n const runtimeExports = compatRuntimeExports(moduleId);\n const compatComponentImport = runtimeExports !== undefined || isMdxModuleId(moduleId);\n\n if (!compatComponentImport) {\n continue;\n }\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (\n specifierObject.type === \"ImportDefaultSpecifier\" &&\n (runtimeExports?.has(\"default\") === true || isMdxModuleId(moduleId))\n ) {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n const importedName = String(imported.name ?? localName);\n\n if (runtimeExports?.has(importedName) === true || isMdxModuleId(moduleId)) {\n names.set(localName, {\n moduleId,\n exportName: importedName,\n });\n }\n }\n }\n }\n\n return names;\n}\n\nexport function markOxcAsyncComponentReferences(\n node: JsxNodeIr,\n asyncComponentNames: Set<string>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind === \"component\" && asyncComponentNames.has(child.name)) {\n child.async = true;\n }\n });\n}\n\nexport function markOxcClientReferences(\n node: JsxNodeIr,\n clientReferences: Map<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const clientReference = findOxcClientReference(child.name, clientReferences);\n\n if (clientReference !== undefined) {\n child.runtime = \"compat\";\n child.clientReference = clientReference;\n }\n });\n}\n\nexport function markOxcCompatRuntimeReferences(\n node: JsxNodeIr,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const runtimeReference = findOxcCompatRuntimeReference(child.name, runtimeReferences);\n\n if (runtimeReference !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nfunction isOxcClientBoundaryImport(\n statement: Record<string, unknown>,\n inferredBoundaryImports: ReadonlySet<string>,\n): boolean {\n const moduleId = String(readObject(statement.source).value ?? \"\");\n return inferredBoundaryImports.has(moduleId) || /\\.(?:client|compat)\\.[cm]?[jt]sx?$/.test(moduleId);\n}\n\nfunction findOxcClientReference(\n name: string,\n clientReferences: Map<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = clientReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : clientReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return rootReference;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction collectOxcClientReferenceAliases(\n node: unknown,\n references: Map<string, ClientReferenceIr>,\n): void {\n const state: ClientReferenceAliasState = {\n references,\n stringConstants: new Map(),\n objectMembers: new Map(),\n };\n\n collectOxcClientReferenceAliasesFromNode(node, state);\n}\n\nfunction collectOxcClientReferenceAliasesFromNode(\n node: unknown,\n state: ClientReferenceAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectOxcClientReferenceAliasesFromNode(child, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n const constant = object.kind === \"const\";\n for (const declaration of readArray(object.declarations)) {\n collectOxcVariableClientReferenceAlias(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectOxcVariableClientReferenceAlias(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectOxcAssignmentClientReferenceAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectOxcObjectAssignClientReferenceAliases(object, state);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n}\n\nfunction collectOxcVariableClientReferenceAlias(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n constant: boolean,\n): void {\n if (node?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(node.id);\n const init = readOptionalObject(node.init);\n const aliasName = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (aliasName === undefined) {\n return;\n }\n\n if (constant) {\n const stringValue = stringExpressionValue(init, state);\n if (stringValue !== undefined) {\n state.stringConstants.set(aliasName, stringValue);\n }\n }\n\n collectOxcObjectLiteralClientReferenceAliases(aliasName, init, state);\n\n const reference = expressionClientReference(init, state);\n if (reference !== undefined) {\n state.references.set(aliasName, reference);\n }\n}\n\nfunction collectOxcObjectLiteralClientReferenceAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(init.properties)) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(readOptionalObject(property.key), property.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(property.value), state);\n if (keyName !== undefined && reference !== undefined) {\n setObjectMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction collectOxcAssignmentClientReferenceAlias(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectName = expressionObjectName(readOptionalObject(left.object));\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(node.right), state);\n if (objectName !== undefined && memberName !== undefined && reference !== undefined) {\n setObjectMemberReference(state, objectName, memberName, reference);\n }\n}\n\nfunction collectOxcObjectAssignClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = readArray(node.arguments).map(readOptionalObject);\n const target = expressionObjectName(args[0]);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectOxcObjectLiteralClientReferenceAliases(target, source, state);\n }\n}\n\nfunction expressionClientReference(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.references.get(node.name);\n }\n\n if (node.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object));\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const objectReference =\n objectName === undefined ? undefined : state.references.get(objectName);\n\n if (objectName !== undefined && memberName !== undefined) {\n const objectMember = state.objectMembers.get(objectName)?.get(memberName);\n if (objectMember !== undefined) {\n return objectMember;\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n return uniqueClientReference(Array.from(state.objectMembers.get(objectName)?.values() ?? []));\n }\n\n if (objectReference?.exportName === \"*\" && memberName !== undefined) {\n return {\n moduleId: objectReference.moduleId,\n exportName: memberName,\n };\n }\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueClientReference([\n expressionClientReference(readOptionalObject(node.consequent), state),\n expressionClientReference(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (\n node.type === \"ChainExpression\" ||\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"TSNonNullExpression\" ||\n node.type === \"ParenthesizedExpression\"\n ) {\n return expressionClientReference(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction expressionObjectName(node: Record<string, unknown> | undefined): string | undefined {\n return node?.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n return stringExpressionValue(node, state);\n}\n\nfunction stringExpressionValue(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (\n (node?.type === \"StringLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"string\"\n ) {\n return node.value;\n }\n\n if (node?.type === \"ConditionalExpression\") {\n return uniqueString([\n stringExpressionValue(readOptionalObject(node.consequent), state),\n stringExpressionValue(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n if (\n node?.type === \"ChainExpression\" ||\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"TSNonNullExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return stringExpressionValue(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction setObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.objectMembers.get(objectName) ?? new Map<string, ClientReferenceIr>();\n members.set(memberName, reference);\n state.objectMembers.set(objectName, members);\n}\n\nfunction isObjectAssignCall(node: Record<string, unknown>): boolean {\n const callee = readOptionalObject(node.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return object?.type === \"Identifier\" && object.name === \"Object\" &&\n property?.type === \"Identifier\" && property.name === \"assign\";\n}\n\nfunction uniqueClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n): ClientReferenceIr | undefined {\n const refs = values.filter((value): value is ClientReferenceIr => value !== undefined);\n if (refs.length === 0) {\n return undefined;\n }\n\n const first = refs[0];\n if (first === undefined) {\n return undefined;\n }\n\n return refs.every(\n (reference) =>\n reference.moduleId === first.moduleId && reference.exportName === first.exportName,\n )\n ? first\n : undefined;\n}\n\nfunction uniqueString(values: readonly (string | undefined)[]): string | undefined {\n const unique = new Set(values.filter((value): value is string => value !== undefined));\n return unique.size === 1 ? Array.from(unique)[0] : undefined;\n}\n\nfunction readOptionalObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction findOxcCompatRuntimeReference(\n name: string,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = runtimeReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : runtimeReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n const exportName = memberNames.join(\".\");\n return compatRuntimeExports(rootReference.moduleId)?.has(exportName) === true\n ? {\n moduleId: rootReference.moduleId,\n exportName,\n }\n : undefined;\n}\n\nfunction compatRuntimeExports(moduleId: string): ReadonlySet<string> | undefined {\n if (moduleId === \"@reckona/mreact-router\") {\n return routerEntryCompatRuntimeExports;\n }\n\n if (moduleId === \"@reckona/mreact-router/link\") {\n return routerLinkCompatRuntimeExports;\n }\n\n return undefined;\n}\n\nfunction isMdxModuleId(moduleId: string): boolean {\n return /\\.mdx(?:[?#].*)?$/.test(moduleId);\n}\n\nfunction visitOxcNode(node: JsxNodeIr, visitor: (node: JsxNodeIr) => void): void {\n visitor(node);\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n visitOxcNode(child, visitor);\n }\n }\n }\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"conditional\") {\n for (const child of [...node.whenTrue, ...node.whenFalse]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"list\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"async-boundary\") {\n for (const child of [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"oxc-component-references.js","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ClientReferenceIr, JsxNodeIr } from \"./ir.js\";\nimport { readArray, readObject } from \"./oxc-node-utils.js\";\n\nconst routerEntryCompatRuntimeExports = new Set([\"Link\"]);\nconst routerLinkCompatRuntimeExports = new Set([\"Link\"]);\n\ninterface ClientReferenceAliasState {\n references: Map<string, ClientReferenceIr>;\n stringConstants: Map<string, string>;\n objectMembers: Map<string, Map<string, ClientReferenceIr>>;\n}\n\nexport function collectOxcClientBoundaryImportComponents(\n program: unknown,\n inferredBoundaryImports: ReadonlySet<string>,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (\n object.type !== \"ImportDeclaration\" ||\n !isOxcClientBoundaryImport(object, inferredBoundaryImports)\n ) {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n names.set(localName, {\n moduleId,\n exportName: String(imported.name ?? localName),\n });\n }\n }\n }\n\n collectOxcClientReferenceAliases(program, names);\n return names;\n}\n\nexport function collectOxcCompatRuntimeImportComponents(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\") {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n const runtimeExports = compatRuntimeExports(moduleId);\n const compatComponentImport = runtimeExports !== undefined || isMdxModuleId(moduleId);\n\n if (!compatComponentImport) {\n continue;\n }\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (\n specifierObject.type === \"ImportDefaultSpecifier\" &&\n (runtimeExports?.has(\"default\") === true || isMdxModuleId(moduleId))\n ) {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n const importedName = String(imported.name ?? localName);\n\n if (runtimeExports?.has(importedName) === true || isMdxModuleId(moduleId)) {\n names.set(localName, {\n moduleId,\n exportName: importedName,\n });\n }\n }\n }\n }\n\n return names;\n}\n\nexport function collectOxcCompatReactNodeComponentReferences(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n collectOxcCompatReactNodeImportReferences(statement, names);\n collectOxcCompatReactNodeClassReferences(statement, names);\n }\n\n return names;\n}\n\nexport function markOxcAsyncComponentReferences(\n node: JsxNodeIr,\n asyncComponentNames: Set<string>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind === \"component\" && asyncComponentNames.has(child.name)) {\n child.async = true;\n }\n });\n}\n\nexport function markOxcClientReferences(\n node: JsxNodeIr,\n clientReferences: Map<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const clientReference = findOxcClientReference(child.name, clientReferences);\n\n if (clientReference !== undefined) {\n child.runtime = \"compat\";\n child.clientReference = clientReference;\n }\n });\n}\n\nexport function markOxcCompatRuntimeReferences(\n node: JsxNodeIr,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const runtimeReference = findOxcCompatRuntimeReference(child.name, runtimeReferences);\n\n if (runtimeReference !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nexport function markOxcCompatReactNodeReferences(\n node: JsxNodeIr,\n references: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n if (findOxcCompatReactNodeReference(child.name, references) !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nfunction isOxcClientBoundaryImport(\n statement: Record<string, unknown>,\n inferredBoundaryImports: ReadonlySet<string>,\n): boolean {\n const moduleId = String(readObject(statement.source).value ?? \"\");\n return inferredBoundaryImports.has(moduleId) || /\\.(?:client|compat)\\.[cm]?[jt]sx?$/.test(moduleId);\n}\n\nfunction findOxcClientReference(\n name: string,\n clientReferences: Map<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = clientReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : clientReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return rootReference;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction collectOxcCompatReactNodeImportReferences(\n statement: unknown,\n names: Map<string, ClientReferenceIr>,\n): void {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\" || object.importKind === \"type\") {\n return;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n\n if (specifierObject.importKind === \"type\") {\n continue;\n }\n\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\") {\n const imported = readObject(specifierObject.imported);\n names.set(localName, {\n moduleId,\n exportName: String(imported.name ?? localName),\n });\n }\n }\n}\n\nfunction collectOxcCompatReactNodeClassReferences(\n statement: unknown,\n names: Map<string, ClientReferenceIr>,\n): void {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readOptionalObject(object.declaration)\n : object;\n const className = readOxcClassComponentName(declaration);\n\n if (className !== undefined) {\n names.set(className, { moduleId: \"\", exportName: className });\n }\n}\n\nfunction readOxcClassComponentName(\n node: Record<string, unknown> | undefined,\n): string | undefined {\n if (node?.type === \"ClassDeclaration\" || node?.type === \"ClassExpression\") {\n const id = readOptionalObject(node.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n return name !== undefined && /^[A-Z]/.test(name) ? name : undefined;\n }\n\n if (node?.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarationValue of readArray(node.declarations)) {\n const declaration = readOptionalObject(declarationValue);\n const id = readOptionalObject(declaration?.id);\n const init = readOptionalObject(declaration?.init);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (\n name !== undefined &&\n /^[A-Z]/.test(name) &&\n (init?.type === \"ClassExpression\" || init?.type === \"ClassDeclaration\")\n ) {\n return name;\n }\n }\n\n return undefined;\n}\n\nfunction collectOxcClientReferenceAliases(\n node: unknown,\n references: Map<string, ClientReferenceIr>,\n): void {\n const state: ClientReferenceAliasState = {\n references,\n stringConstants: new Map(),\n objectMembers: new Map(),\n };\n\n collectOxcClientReferenceAliasesFromNode(node, state);\n}\n\nfunction collectOxcClientReferenceAliasesFromNode(\n node: unknown,\n state: ClientReferenceAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectOxcClientReferenceAliasesFromNode(child, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n const constant = object.kind === \"const\";\n for (const declaration of readArray(object.declarations)) {\n collectOxcVariableClientReferenceAlias(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectOxcVariableClientReferenceAlias(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectOxcAssignmentClientReferenceAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectOxcObjectAssignClientReferenceAliases(object, state);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n}\n\nfunction collectOxcVariableClientReferenceAlias(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n constant: boolean,\n): void {\n if (node?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(node.id);\n const init = readOptionalObject(node.init);\n const aliasName = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (aliasName === undefined) {\n return;\n }\n\n if (constant) {\n const stringValue = stringExpressionValue(init, state);\n if (stringValue !== undefined) {\n state.stringConstants.set(aliasName, stringValue);\n }\n }\n\n collectOxcObjectLiteralClientReferenceAliases(aliasName, init, state);\n\n const reference = expressionClientReference(init, state);\n if (reference !== undefined) {\n state.references.set(aliasName, reference);\n }\n}\n\nfunction collectOxcObjectLiteralClientReferenceAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(init.properties)) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(readOptionalObject(property.key), property.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(property.value), state);\n if (keyName !== undefined && reference !== undefined) {\n setObjectMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction collectOxcAssignmentClientReferenceAlias(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectName = expressionObjectName(readOptionalObject(left.object));\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(node.right), state);\n if (objectName !== undefined && memberName !== undefined && reference !== undefined) {\n setObjectMemberReference(state, objectName, memberName, reference);\n }\n}\n\nfunction collectOxcObjectAssignClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = readArray(node.arguments).map(readOptionalObject);\n const target = expressionObjectName(args[0]);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectOxcObjectLiteralClientReferenceAliases(target, source, state);\n }\n}\n\nfunction expressionClientReference(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.references.get(node.name);\n }\n\n if (node.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object));\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const objectReference =\n objectName === undefined ? undefined : state.references.get(objectName);\n\n if (objectName !== undefined && memberName !== undefined) {\n const objectMember = state.objectMembers.get(objectName)?.get(memberName);\n if (objectMember !== undefined) {\n return objectMember;\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n return uniqueClientReference(Array.from(state.objectMembers.get(objectName)?.values() ?? []));\n }\n\n if (objectReference?.exportName === \"*\" && memberName !== undefined) {\n return {\n moduleId: objectReference.moduleId,\n exportName: memberName,\n };\n }\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueClientReference([\n expressionClientReference(readOptionalObject(node.consequent), state),\n expressionClientReference(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (\n node.type === \"ChainExpression\" ||\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"TSNonNullExpression\" ||\n node.type === \"ParenthesizedExpression\"\n ) {\n return expressionClientReference(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction expressionObjectName(node: Record<string, unknown> | undefined): string | undefined {\n return node?.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n return stringExpressionValue(node, state);\n}\n\nfunction stringExpressionValue(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (\n (node?.type === \"StringLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"string\"\n ) {\n return node.value;\n }\n\n if (node?.type === \"ConditionalExpression\") {\n return uniqueString([\n stringExpressionValue(readOptionalObject(node.consequent), state),\n stringExpressionValue(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n if (\n node?.type === \"ChainExpression\" ||\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"TSNonNullExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return stringExpressionValue(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction setObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.objectMembers.get(objectName) ?? new Map<string, ClientReferenceIr>();\n members.set(memberName, reference);\n state.objectMembers.set(objectName, members);\n}\n\nfunction isObjectAssignCall(node: Record<string, unknown>): boolean {\n const callee = readOptionalObject(node.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return object?.type === \"Identifier\" && object.name === \"Object\" &&\n property?.type === \"Identifier\" && property.name === \"assign\";\n}\n\nfunction uniqueClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n): ClientReferenceIr | undefined {\n const refs = values.filter((value): value is ClientReferenceIr => value !== undefined);\n if (refs.length === 0) {\n return undefined;\n }\n\n const first = refs[0];\n if (first === undefined) {\n return undefined;\n }\n\n return refs.every(\n (reference) =>\n reference.moduleId === first.moduleId && reference.exportName === first.exportName,\n )\n ? first\n : undefined;\n}\n\nfunction uniqueString(values: readonly (string | undefined)[]): string | undefined {\n const unique = new Set(values.filter((value): value is string => value !== undefined));\n return unique.size === 1 ? Array.from(unique)[0] : undefined;\n}\n\nfunction readOptionalObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction findOxcCompatRuntimeReference(\n name: string,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = runtimeReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : runtimeReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n const exportName = memberNames.join(\".\");\n return compatRuntimeExports(rootReference.moduleId)?.has(exportName) === true\n ? {\n moduleId: rootReference.moduleId,\n exportName,\n }\n : undefined;\n}\n\nfunction findOxcCompatReactNodeReference(\n name: string,\n references: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = references.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : references.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction compatRuntimeExports(moduleId: string): ReadonlySet<string> | undefined {\n if (moduleId === \"@reckona/mreact-router\") {\n return routerEntryCompatRuntimeExports;\n }\n\n if (moduleId === \"@reckona/mreact-router/link\") {\n return routerLinkCompatRuntimeExports;\n }\n\n return undefined;\n}\n\nfunction isMdxModuleId(moduleId: string): boolean {\n return /\\.mdx(?:[?#].*)?$/.test(moduleId);\n}\n\nfunction visitOxcNode(node: JsxNodeIr, visitor: (node: JsxNodeIr) => void): void {\n visitor(node);\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n visitOxcNode(child, visitor);\n }\n }\n }\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"conditional\") {\n for (const child of [...node.whenTrue, ...node.whenFalse]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"list\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"async-boundary\") {\n for (const child of [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n }\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;AAkFxE,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"}
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;AAoFxE,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
@@ -10,7 +10,7 @@ import { collectBindingNames, collectImportBindingNames, formatStatement, readOx
10
10
  import { formatOxcBodyStatement, formatPreservedStatement, lowerOxcBodyStatementJsx, lowerOxcTopLevelStatement, } from "./oxc-body-lowering.js";
11
11
  import { collectOxcVariableInitializers } from "./oxc-await-analysis.js";
12
12
  import { collectOxcAsyncComponentNames, collectOxcExportedComponents, collectOxcExportedFunctionNames, collectOxcPlainComponentNames, hasComponentReturn, hasOxcFunctionLikeComponentReturn, isOxcExportedFunctionLike, isOxcComponentCallExpression, isJsxRoot, isOxcJsxComponentStatement, isOxcUnsupportedExportedFunction, readOxcPlainComponent, readOxcVariableComponentDeclaration, unwrapOxcComponentFunctionLikeInitializer, } from "./oxc-component-detection.js";
13
- import { collectOxcClientBoundaryImportComponents, collectOxcCompatRuntimeImportComponents, markOxcAsyncComponentReferences, markOxcClientReferences, markOxcCompatRuntimeReferences, } from "./oxc-component-references.js";
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";
16
16
  import { lowerOxcDomNodeExpression } from "./oxc-dom-lowering.js";
@@ -103,6 +103,9 @@ function analyzeOxcToIr(code, program, target, options) {
103
103
  const diagnostics = [];
104
104
  const clientBoundaryImports = collectOxcClientBoundaryImportComponents(program, new Set(options?.clientBoundaryImports ?? []));
105
105
  const compatRuntimeImports = collectOxcCompatRuntimeImportComponents(program);
106
+ const compatReactNodeReferences = options?.compatReactNodeReturnRenderMode === "react-node"
107
+ ? collectOxcCompatReactNodeComponentReferences(program)
108
+ : undefined;
106
109
  const bodyLowerers = createOxcBodyLowerers(compatRuntimeImports);
107
110
  const moduleRenderValueBindings = collectOxcBodyJsxBindingNames(body);
108
111
  const reactiveDerivedFunctionNames = collectOxcReactiveDerivedFunctionNames(body);
@@ -162,6 +165,9 @@ function analyzeOxcToIr(code, program, target, options) {
162
165
  markOxcAsyncComponentReferences(component.root, asyncComponentNames);
163
166
  markOxcClientReferences(component.root, clientBoundaryImports);
164
167
  markOxcCompatRuntimeReferences(component.root, compatRuntimeImports);
168
+ if (compatReactNodeReferences !== undefined) {
169
+ markOxcCompatReactNodeReferences(component.root, compatReactNodeReferences);
170
+ }
165
171
  validateOxcNestedAwait(component.root, diagnostics);
166
172
  validateOxcAwaitCompatComponents(component.root, diagnostics, {
167
173
  allowCompatComponents: options?.awaitCompatComponents === "lower",