@reckona/mreact-compiler 0.0.97 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/diagnostics.d.ts +1 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +8 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/emit-client.js +14 -9
- package/dist/emit-client.js.map +1 -1
- package/dist/emit-compat.js +5 -1
- package/dist/emit-compat.js.map +1 -1
- package/dist/emit-server-stream.js +52 -3
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/emit-server.js +51 -10
- package/dist/emit-server.js.map +1 -1
- package/dist/ir.d.ts +1 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/oxc-child-analysis.d.ts.map +1 -1
- package/dist/oxc-child-analysis.js +41 -7
- package/dist/oxc-child-analysis.js.map +1 -1
- package/dist/oxc-component-detection.d.ts +5 -2
- package/dist/oxc-component-detection.d.ts.map +1 -1
- package/dist/oxc-component-detection.js +80 -3
- package/dist/oxc-component-detection.js.map +1 -1
- package/dist/oxc-component-props.d.ts +1 -1
- package/dist/oxc-component-props.d.ts.map +1 -1
- package/dist/oxc-component-props.js +1 -1
- package/dist/oxc-component-props.js.map +1 -1
- package/dist/oxc-component-references.js +2 -2
- package/dist/oxc-component-references.js.map +1 -1
- package/dist/oxc-runtime-emit.d.ts.map +1 -1
- package/dist/oxc-runtime-emit.js +10 -2
- package/dist/oxc-runtime-emit.js.map +1 -1
- package/dist/oxc.d.ts.map +1 -1
- package/dist/oxc.js +109 -20
- package/dist/oxc.js.map +1 -1
- package/dist/transform.js +29 -11
- package/dist/transform.js.map +1 -1
- package/package.json +2 -2
- package/src/diagnostics.ts +10 -0
- package/src/emit-client.ts +20 -10
- package/src/emit-compat.ts +6 -1
- package/src/emit-server-stream.ts +67 -3
- package/src/emit-server.ts +64 -12
- package/src/ir.ts +1 -0
- package/src/oxc-child-analysis.ts +63 -18
- package/src/oxc-component-detection.ts +145 -2
- package/src/oxc-component-props.ts +2 -1
- package/src/oxc-component-references.ts +2 -2
- package/src/oxc-runtime-emit.ts +12 -2
- package/src/oxc.ts +167 -5
- package/src/transform.ts +42 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-component-detection.js","sourceRoot":"","sources":["../src/oxc-component-detection.ts"],"names":[],"mappings":"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","sourcesContent":["import { readArray, readObject, unwrapOxcParentheses } from \"./oxc-node-utils.js\";\nimport type { AnalyzeModuleOptions } from \"./types.js\";\n\nexport function collectOxcExportedFunctionNames(program: unknown): string[] {\n return readArray(readObject(program).body).flatMap((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n const id = readObject(declaration?.id);\n return [typeof id.name === \"string\" ? id.name : \"DefaultExport\"];\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return [];\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"FunctionDeclaration\") {\n const id = readObject(declaration.id);\n return typeof id.name === \"string\" ? [id.name] : [];\n }\n\n const variableComponent = readOxcVariableComponentDeclaration(declaration);\n return variableComponent === undefined ? [] : [variableComponent.name];\n });\n}\n\nexport function collectOxcPlainComponentNames(program: unknown): string[] {\n return readArray(readObject(program).body).flatMap((statement) => {\n const component = readOxcPlainComponent(statement);\n return component === undefined ? [] : [component.name];\n });\n}\n\nexport function collectOxcExportedComponents(program: unknown): string[] {\n const body = readArray(readObject(program).body);\n const components: string[] = [];\n\n for (const statement of body) {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n if (declaration !== undefined && hasOxcFunctionLikeComponentReturn(declaration)) {\n components.push(\"default\");\n }\n continue;\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"FunctionDeclaration\" && hasComponentReturn(declaration.body)) {\n const id = readObject(declaration.id);\n\n if (typeof id.name === \"string\") {\n components.push(id.name);\n }\n continue;\n }\n\n const variableComponent = readOxcVariableComponentDeclaration(declaration);\n\n if (variableComponent !== undefined) {\n components.push(variableComponent.name);\n }\n }\n\n return components;\n}\n\nexport function collectOxcAsyncComponentNames(program: unknown): Set<string> {\n const names = new Set<string>();\n const body = readArray(readObject(program).body);\n\n for (const statement of body) {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportDefaultDeclaration\" || object.type === \"ExportNamedDeclaration\"\n ? readObject(object.declaration)\n : object;\n const functionLike =\n declaration.type === \"VariableDeclaration\"\n ? readOxcVariableComponentDeclaration(declaration)?.initializer\n : unwrapOxcComponentFunctionLikeInitializer(declaration);\n\n if (\n functionLike === undefined ||\n functionLike.async !== true ||\n !hasOxcFunctionLikeComponentReturn(functionLike)\n ) {\n continue;\n }\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const id = readObject(functionLike.id);\n names.add(typeof id.name === \"string\" ? id.name : \"DefaultExport\");\n continue;\n }\n\n const id = readObject(functionLike.id);\n\n if (typeof id.name === \"string\") {\n names.add(id.name);\n }\n }\n\n return names;\n}\n\nexport function isOxcExportedJsxComponent(statement: unknown): boolean {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n return declaration !== undefined && hasOxcFunctionLikeComponentReturn(declaration);\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n return (\n (declaration.type === \"FunctionDeclaration\" && hasComponentReturn(declaration.body)) ||\n readOxcVariableComponentDeclaration(declaration) !== undefined\n );\n}\n\nexport function isOxcJsxComponentStatement(statement: unknown): boolean {\n return isOxcExportedJsxComponent(statement) || readOxcPlainComponent(statement) !== undefined;\n}\n\nexport function isOxcExportedFunctionLike(statement: unknown): boolean {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n return unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration)) !== undefined;\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n\n return (\n declaration.type === \"FunctionDeclaration\" ||\n unwrapOxcComponentFunctionLikeInitializer(declaration) !== undefined\n );\n}\n\nexport function isOxcUnsupportedExportedFunction(\n statement: unknown,\n options?: AnalyzeModuleOptions,\n): boolean {\n if (options?.compatReactNodeReturn === true) {\n return false;\n }\n\n const object = readObject(statement);\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n const id = readObject(declaration.id);\n\n return (\n declaration.type === \"FunctionDeclaration\" &&\n typeof id.name === \"string\" &&\n /^[A-Z]/.test(id.name) &&\n !hasComponentReturn(declaration.body) &&\n !hasOnlyNullReturns(declaration.body)\n );\n}\n\nexport function readOxcVariableComponentDeclaration(\n declaration: Record<string, unknown>,\n): { name: string; initializer: Record<string, unknown> } | undefined {\n if (declaration.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarator of readArray(declaration.declarations)) {\n const object = readObject(declarator);\n const id = readObject(object.id);\n\n if (typeof id.name !== \"string\" || !/^[A-Z]/.test(id.name)) {\n continue;\n }\n\n const initializer = unwrapOxcComponentFunctionLikeInitializer(readObject(object.init));\n\n if (initializer !== undefined && hasOxcFunctionLikeComponentReturn(initializer)) {\n return { name: id.name, initializer };\n }\n }\n\n return undefined;\n}\n\nexport function readOxcPlainComponent(\n statement: unknown,\n): { name: string; initializer: Record<string, unknown> } | undefined {\n const object = readObject(statement);\n\n if (object.type === \"FunctionDeclaration\" && hasComponentReturn(object.body)) {\n const id = readObject(object.id);\n return typeof id.name === \"string\" ? { name: id.name, initializer: object } : undefined;\n }\n\n return readOxcVariableComponentDeclaration(object);\n}\n\nexport function unwrapOxcComponentFunctionLikeInitializer(\n expression: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const unwrapped = unwrapOxcParentheses(expression);\n\n if (\n unwrapped.type === \"ArrowFunctionExpression\" ||\n unwrapped.type === \"FunctionExpression\" ||\n unwrapped.type === \"FunctionDeclaration\"\n ) {\n return unwrapped;\n }\n\n if (unwrapped.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(unwrapped.callee);\n\n if (callee.type !== \"Identifier\" || (callee.name !== \"memo\" && callee.name !== \"forwardRef\")) {\n return undefined;\n }\n\n const firstArg = readObject(readArray(unwrapped.arguments)[0]);\n\n return unwrapOxcComponentFunctionLikeInitializer(firstArg);\n}\n\nexport function hasOxcFunctionLikeJsxReturn(functionLike: Record<string, unknown>): boolean {\n const body = unwrapOxcParentheses(readObject(functionLike.body));\n\n if (isOxcJsxReturnExpression(body)) {\n return true;\n }\n\n return hasJsxReturn(body);\n}\n\nexport function hasOxcFunctionLikeComponentReturn(functionLike: Record<string, unknown>): boolean {\n const body = unwrapOxcParentheses(readObject(functionLike.body));\n\n if (hasOxcFunctionLikeJsxReturn(functionLike)) {\n return true;\n }\n\n if (isOxcComponentCallExpression(body)) {\n return true;\n }\n\n return hasComponentCallReturn(body);\n}\n\nexport function hasJsxReturn(body: unknown): boolean {\n return readArray(readObject(body).body).some((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return isOxcJsxReturnExpression(readObject(object.argument));\n }\n\n return hasNestedJsxReturn(object);\n });\n}\n\nexport function hasComponentReturn(body: unknown): boolean {\n return hasJsxReturn(body) || hasComponentCallReturn(body);\n}\n\nexport function hasOnlyNullReturns(body: unknown): boolean {\n const returns = collectReturnArguments(readObject(body));\n return returns.length > 0 && returns.every(isNullReturnArgument);\n}\n\nexport function hasComponentCallReturn(body: unknown): boolean {\n return readArray(readObject(body).body).some((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return isOxcComponentCallExpression(unwrapOxcParentheses(readObject(object.argument)));\n }\n\n return hasNestedComponentCallReturn(object);\n });\n}\n\nfunction hasNestedJsxReturn(statement: Record<string, unknown>): boolean {\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some((child) => {\n const object = readObject(child);\n return (\n object.type === \"ReturnStatement\" &&\n isOxcJsxReturnExpression(readObject(object.argument))\n );\n }),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return (\n hasJsxReturn({ body: [statement.consequent] }) ||\n hasJsxReturn({ body: [statement.alternate] })\n );\n }\n\n if (statement.type === \"BlockStatement\") {\n return hasJsxReturn(statement);\n }\n\n return false;\n}\n\nfunction hasNestedComponentCallReturn(statement: Record<string, unknown>): boolean {\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some((child) => {\n const object = readObject(child);\n return (\n object.type === \"ReturnStatement\" &&\n isOxcComponentCallExpression(unwrapOxcParentheses(readObject(object.argument)))\n );\n }),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return (\n hasComponentCallReturn({ body: [statement.consequent] }) ||\n hasComponentCallReturn({ body: [statement.alternate] })\n );\n }\n\n if (statement.type === \"BlockStatement\") {\n return hasComponentCallReturn(statement);\n }\n\n return false;\n}\n\nfunction collectReturnArguments(statement: Record<string, unknown>): Record<string, unknown>[] {\n if (statement.type === \"ReturnStatement\") {\n return [readObject(statement.argument)];\n }\n\n if (statement.type === \"BlockStatement\") {\n return readArray(statement.body).flatMap((child) => collectReturnArguments(readObject(child)));\n }\n\n if (statement.type === \"IfStatement\") {\n return [\n ...collectReturnArguments(readObject(statement.consequent)),\n ...collectReturnArguments(readObject(statement.alternate)),\n ];\n }\n\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).flatMap((switchCase) =>\n readArray(readObject(switchCase).consequent).flatMap((child) =>\n collectReturnArguments(readObject(child)),\n ),\n );\n }\n\n return [];\n}\n\nfunction isNullReturnArgument(argument: Record<string, unknown>): boolean {\n return (\n argument.type === \"NullLiteral\" ||\n (argument.type === \"Literal\" && argument.value === null)\n );\n}\n\nexport function isOxcComponentCallExpression(expression: Record<string, unknown>): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = unwrapOxcParentheses(readObject(expression.callee));\n\n if (callee.type === \"Identifier\") {\n return typeof callee.name === \"string\" && /^[A-Z]/.test(callee.name);\n }\n\n if (callee.type === \"MemberExpression\") {\n const object = readObject(callee.object);\n const property = readObject(callee.property);\n return (\n object.type === \"Identifier\" &&\n typeof object.name === \"string\" &&\n /^[A-Z]/.test(object.name) &&\n property.type === \"Identifier\" &&\n typeof property.name === \"string\" &&\n /^[A-Z]/.test(property.name)\n );\n }\n\n return false;\n}\n\nexport function isJsxRoot(type: unknown): boolean {\n return type === \"JSXElement\" || type === \"JSXFragment\" || type === \"JSXSelfClosingElement\";\n}\n\nfunction isOxcJsxReturnExpression(expression: Record<string, unknown>): boolean {\n const unwrapped = unwrapOxcParentheses(expression);\n\n if (isJsxRoot(unwrapped.type)) {\n return true;\n }\n\n if (unwrapped.type === \"LogicalExpression\") {\n return (\n unwrapped.operator === \"&&\" &&\n isOxcJsxReturnBranch(readObject(unwrapped.right))\n );\n }\n\n if (unwrapped.type === \"ConditionalExpression\") {\n return (\n isOxcJsxReturnBranch(readObject(unwrapped.consequent)) &&\n isOxcJsxReturnBranch(readObject(unwrapped.alternate))\n );\n }\n\n return false;\n}\n\nfunction isOxcJsxReturnBranch(expression: Record<string, unknown>): boolean {\n const unwrapped = unwrapOxcParentheses(expression);\n\n if (unwrapped.type === \"Literal\" && (unwrapped.value === null || unwrapped.value === false)) {\n return true;\n }\n\n return isOxcJsxReturnExpression(unwrapped);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc-component-detection.js","sourceRoot":"","sources":["../src/oxc-component-detection.ts"],"names":[],"mappings":"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","sourcesContent":["import { readArray, readObject, unwrapOxcParentheses } from \"./oxc-node-utils.js\";\nimport type { AnalyzeModuleOptions } from \"./types.js\";\n\nexport function collectOxcExportedFunctionNames(program: unknown): string[] {\n return readArray(readObject(program).body).flatMap((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n const id = readObject(declaration?.id);\n return [typeof id.name === \"string\" ? id.name : \"DefaultExport\"];\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return [];\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"FunctionDeclaration\") {\n const id = readObject(declaration.id);\n return typeof id.name === \"string\" ? [id.name] : [];\n }\n\n const variableComponent = readOxcVariableComponentDeclaration(declaration);\n return variableComponent === undefined ? [] : [variableComponent.name];\n });\n}\n\nexport function collectOxcPlainComponentNames(program: unknown): string[] {\n return readArray(readObject(program).body).flatMap((statement) => {\n const component = readOxcPlainComponent(statement);\n return component === undefined ? [] : [component.name];\n });\n}\n\nexport function collectOxcLocalJsxReturnFunctionNames(program: unknown): Set<string> {\n const names = new Set<string>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (object.type === \"FunctionDeclaration\" && hasOxcFunctionLikeJsxReturn(object)) {\n const id = readObject(object.id);\n if (typeof id.name === \"string\") {\n names.add(id.name);\n }\n continue;\n }\n\n if (object.type !== \"VariableDeclaration\") {\n continue;\n }\n\n for (const declarator of readArray(object.declarations)) {\n const declaratorObject = readObject(declarator);\n const id = readObject(declaratorObject.id);\n const initializer = unwrapOxcComponentFunctionLikeInitializer(\n readObject(declaratorObject.init),\n );\n\n if (\n typeof id.name === \"string\" &&\n initializer !== undefined &&\n hasOxcFunctionLikeJsxReturn(initializer)\n ) {\n names.add(id.name);\n }\n }\n }\n\n return names;\n}\n\nexport function collectOxcExportedComponents(program: unknown): string[] {\n const body = readArray(readObject(program).body);\n const components: string[] = [];\n\n for (const statement of body) {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n if (declaration !== undefined && hasOxcFunctionLikeComponentReturn(declaration)) {\n components.push(\"default\");\n }\n continue;\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"FunctionDeclaration\" && hasComponentReturn(declaration.body)) {\n const id = readObject(declaration.id);\n\n if (typeof id.name === \"string\") {\n components.push(id.name);\n }\n continue;\n }\n\n const variableComponent = readOxcVariableComponentDeclaration(declaration);\n\n if (variableComponent !== undefined) {\n components.push(variableComponent.name);\n }\n }\n\n return components;\n}\n\nexport function collectOxcAsyncComponentNames(program: unknown): Set<string> {\n const names = new Set<string>();\n const body = readArray(readObject(program).body);\n\n for (const statement of body) {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportDefaultDeclaration\" || object.type === \"ExportNamedDeclaration\"\n ? readObject(object.declaration)\n : object;\n const functionLike =\n declaration.type === \"VariableDeclaration\"\n ? readOxcVariableComponentDeclaration(declaration)?.initializer\n : unwrapOxcComponentFunctionLikeInitializer(declaration);\n\n if (\n functionLike === undefined ||\n functionLike.async !== true ||\n !hasOxcFunctionLikeComponentReturn(functionLike)\n ) {\n continue;\n }\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const id = readObject(functionLike.id);\n names.add(typeof id.name === \"string\" ? id.name : \"DefaultExport\");\n continue;\n }\n\n const id = readObject(functionLike.id);\n\n if (typeof id.name === \"string\") {\n names.add(id.name);\n }\n }\n\n return names;\n}\n\nexport function isOxcExportedJsxComponent(statement: unknown): boolean {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n return declaration !== undefined && hasOxcFunctionLikeComponentReturn(declaration);\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n return (\n (declaration.type === \"FunctionDeclaration\" && hasComponentReturn(declaration.body)) ||\n readOxcVariableComponentDeclaration(declaration) !== undefined\n );\n}\n\nexport function isOxcJsxComponentStatement(\n statement: unknown,\n localJsxReturnFunctionNames: ReadonlySet<string> = new Set(),\n): boolean {\n return (\n isOxcExportedJsxComponent(statement) ||\n isOxcExportedFunctionReturningLocalJsxHelper(statement, localJsxReturnFunctionNames) ||\n readOxcPlainComponent(statement) !== undefined\n );\n}\n\nexport function isOxcExportedFunctionLike(statement: unknown): boolean {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n return unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration)) !== undefined;\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n\n return (\n declaration.type === \"FunctionDeclaration\" ||\n unwrapOxcComponentFunctionLikeInitializer(declaration) !== undefined\n );\n}\n\nexport function isOxcUnsupportedExportedFunction(\n statement: unknown,\n options?: AnalyzeModuleOptions,\n localJsxReturnFunctionNames: ReadonlySet<string> = new Set(),\n): boolean {\n if (options?.compatReactNodeReturn === true) {\n return false;\n }\n\n const object = readObject(statement);\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n const id = readObject(declaration.id);\n\n return (\n declaration.type === \"FunctionDeclaration\" &&\n typeof id.name === \"string\" &&\n /^[A-Z]/.test(id.name) &&\n !hasComponentReturn(declaration.body) &&\n !hasLocalJsxHelperCallReturn(declaration.body, localJsxReturnFunctionNames) &&\n !hasOnlyNullReturns(declaration.body)\n );\n}\n\nfunction isOxcExportedFunctionReturningLocalJsxHelper(\n statement: unknown,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): boolean {\n const object = readObject(statement);\n\n if (object.type !== \"ExportNamedDeclaration\") {\n return false;\n }\n\n const declaration = readObject(object.declaration);\n\n return (\n declaration.type === \"FunctionDeclaration\" &&\n hasLocalJsxHelperCallReturn(declaration.body, localJsxReturnFunctionNames)\n );\n}\n\nexport function readOxcVariableComponentDeclaration(\n declaration: Record<string, unknown>,\n): { name: string; initializer: Record<string, unknown> } | undefined {\n if (declaration.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarator of readArray(declaration.declarations)) {\n const object = readObject(declarator);\n const id = readObject(object.id);\n\n if (typeof id.name !== \"string\" || !/^[A-Z]/.test(id.name)) {\n continue;\n }\n\n const initializer = unwrapOxcComponentFunctionLikeInitializer(readObject(object.init));\n\n if (initializer !== undefined && hasOxcFunctionLikeComponentReturn(initializer)) {\n return { name: id.name, initializer };\n }\n }\n\n return undefined;\n}\n\nexport function readOxcPlainComponent(\n statement: unknown,\n): { name: string; initializer: Record<string, unknown> } | undefined {\n const object = readObject(statement);\n\n if (object.type === \"FunctionDeclaration\" && hasComponentReturn(object.body)) {\n const id = readObject(object.id);\n return typeof id.name === \"string\" ? { name: id.name, initializer: object } : undefined;\n }\n\n return readOxcVariableComponentDeclaration(object);\n}\n\nexport function unwrapOxcComponentFunctionLikeInitializer(\n expression: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const unwrapped = unwrapOxcParentheses(expression);\n\n if (\n unwrapped.type === \"ArrowFunctionExpression\" ||\n unwrapped.type === \"FunctionExpression\" ||\n unwrapped.type === \"FunctionDeclaration\"\n ) {\n return unwrapped;\n }\n\n if (unwrapped.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(unwrapped.callee);\n\n if (callee.type !== \"Identifier\" || (callee.name !== \"memo\" && callee.name !== \"forwardRef\")) {\n return undefined;\n }\n\n const firstArg = readObject(readArray(unwrapped.arguments)[0]);\n\n return unwrapOxcComponentFunctionLikeInitializer(firstArg);\n}\n\nexport function hasOxcFunctionLikeJsxReturn(functionLike: Record<string, unknown>): boolean {\n const body = unwrapOxcParentheses(readObject(functionLike.body));\n\n if (isOxcJsxReturnExpression(body)) {\n return true;\n }\n\n return hasJsxReturn(body);\n}\n\nexport function hasOxcFunctionLikeComponentReturn(functionLike: Record<string, unknown>): boolean {\n const body = unwrapOxcParentheses(readObject(functionLike.body));\n\n if (hasOxcFunctionLikeJsxReturn(functionLike)) {\n return true;\n }\n\n if (isOxcComponentCallExpression(body)) {\n return true;\n }\n\n return hasComponentCallReturn(body);\n}\n\nexport function hasJsxReturn(body: unknown): boolean {\n return readArray(readObject(body).body).some((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return isOxcJsxReturnExpression(readObject(object.argument));\n }\n\n return hasNestedJsxReturn(object);\n });\n}\n\nexport function hasComponentReturn(body: unknown): boolean {\n return hasJsxReturn(body) || hasComponentCallReturn(body);\n}\n\nexport function hasOnlyNullReturns(body: unknown): boolean {\n const returns = collectReturnArguments(readObject(body));\n return returns.length > 0 && returns.every(isNullReturnArgument);\n}\n\nexport function hasComponentCallReturn(body: unknown): boolean {\n return readArray(readObject(body).body).some((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return isOxcComponentCallExpression(unwrapOxcParentheses(readObject(object.argument)));\n }\n\n return hasNestedComponentCallReturn(object);\n });\n}\n\nexport function hasLocalJsxHelperCallReturn(\n body: unknown,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): boolean {\n if (localJsxReturnFunctionNames.size === 0) {\n return false;\n }\n\n return readArray(readObject(body).body).some((statement) => {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return isOxcLocalJsxHelperCallExpression(\n unwrapOxcParentheses(readObject(object.argument)),\n localJsxReturnFunctionNames,\n );\n }\n\n return hasNestedLocalJsxHelperCallReturn(object, localJsxReturnFunctionNames);\n });\n}\n\nexport function isOxcLocalJsxHelperCallExpression(\n expression: Record<string, unknown>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = unwrapOxcParentheses(readObject(expression.callee));\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n localJsxReturnFunctionNames.has(callee.name)\n );\n}\n\nfunction hasNestedJsxReturn(statement: Record<string, unknown>): boolean {\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some((child) => {\n const object = readObject(child);\n return (\n object.type === \"ReturnStatement\" &&\n isOxcJsxReturnExpression(readObject(object.argument))\n );\n }),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return (\n hasJsxReturn({ body: [statement.consequent] }) ||\n hasJsxReturn({ body: [statement.alternate] })\n );\n }\n\n if (statement.type === \"BlockStatement\") {\n return hasJsxReturn(statement);\n }\n\n return false;\n}\n\nfunction hasNestedComponentCallReturn(statement: Record<string, unknown>): boolean {\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some((child) => {\n const object = readObject(child);\n return (\n object.type === \"ReturnStatement\" &&\n isOxcComponentCallExpression(unwrapOxcParentheses(readObject(object.argument)))\n );\n }),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return (\n hasComponentCallReturn({ body: [statement.consequent] }) ||\n hasComponentCallReturn({ body: [statement.alternate] })\n );\n }\n\n if (statement.type === \"BlockStatement\") {\n return hasComponentCallReturn(statement);\n }\n\n return false;\n}\n\nfunction hasNestedLocalJsxHelperCallReturn(\n statement: Record<string, unknown>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): boolean {\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some((child) => {\n const object = readObject(child);\n return (\n object.type === \"ReturnStatement\" &&\n isOxcLocalJsxHelperCallExpression(\n unwrapOxcParentheses(readObject(object.argument)),\n localJsxReturnFunctionNames,\n )\n );\n }),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return (\n hasLocalJsxHelperCallReturn(\n { body: [statement.consequent] },\n localJsxReturnFunctionNames,\n ) ||\n hasLocalJsxHelperCallReturn(\n { body: [statement.alternate] },\n localJsxReturnFunctionNames,\n )\n );\n }\n\n if (statement.type === \"BlockStatement\") {\n return hasLocalJsxHelperCallReturn(statement, localJsxReturnFunctionNames);\n }\n\n return false;\n}\n\nfunction collectReturnArguments(statement: Record<string, unknown>): Record<string, unknown>[] {\n if (statement.type === \"ReturnStatement\") {\n return [readObject(statement.argument)];\n }\n\n if (statement.type === \"BlockStatement\") {\n return readArray(statement.body).flatMap((child) => collectReturnArguments(readObject(child)));\n }\n\n if (statement.type === \"IfStatement\") {\n return [\n ...collectReturnArguments(readObject(statement.consequent)),\n ...collectReturnArguments(readObject(statement.alternate)),\n ];\n }\n\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).flatMap((switchCase) =>\n readArray(readObject(switchCase).consequent).flatMap((child) =>\n collectReturnArguments(readObject(child)),\n ),\n );\n }\n\n return [];\n}\n\nfunction isNullReturnArgument(argument: Record<string, unknown>): boolean {\n return (\n argument.type === \"NullLiteral\" ||\n (argument.type === \"Literal\" && argument.value === null)\n );\n}\n\nexport function isOxcComponentCallExpression(expression: Record<string, unknown>): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = unwrapOxcParentheses(readObject(expression.callee));\n\n if (callee.type === \"Identifier\") {\n return typeof callee.name === \"string\" && /^[A-Z]/.test(callee.name);\n }\n\n if (callee.type === \"MemberExpression\") {\n const object = readObject(callee.object);\n const property = readObject(callee.property);\n return (\n object.type === \"Identifier\" &&\n typeof object.name === \"string\" &&\n /^[A-Z]/.test(object.name) &&\n property.type === \"Identifier\" &&\n typeof property.name === \"string\" &&\n /^[A-Z]/.test(property.name)\n );\n }\n\n return false;\n}\n\nexport function isJsxRoot(type: unknown): boolean {\n return type === \"JSXElement\" || type === \"JSXFragment\" || type === \"JSXSelfClosingElement\";\n}\n\nfunction isOxcJsxReturnExpression(expression: Record<string, unknown>): boolean {\n const unwrapped = unwrapOxcParentheses(expression);\n\n if (isJsxRoot(unwrapped.type)) {\n return true;\n }\n\n if (unwrapped.type === \"LogicalExpression\") {\n return (\n unwrapped.operator === \"&&\" &&\n isOxcJsxReturnBranch(readObject(unwrapped.right))\n );\n }\n\n if (unwrapped.type === \"ConditionalExpression\") {\n return (\n isOxcJsxReturnBranch(readObject(unwrapped.consequent)) &&\n isOxcJsxReturnBranch(readObject(unwrapped.alternate))\n );\n }\n\n return false;\n}\n\nfunction isOxcJsxReturnBranch(expression: Record<string, unknown>): boolean {\n const unwrapped = unwrapOxcParentheses(expression);\n\n if (unwrapped.type === \"Literal\" && (unwrapped.value === null || unwrapped.value === false)) {\n return true;\n }\n\n return isOxcJsxReturnExpression(unwrapped);\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentPropIr, JsxNodeIr } from "./ir.js";
|
|
2
2
|
import type { OxcBodyStatementJsxMode } from "./oxc-analysis-types.js";
|
|
3
3
|
import type { Diagnostic } from "./types.js";
|
|
4
|
-
export type AnalyzeOxcJsxNodeCallback = (node: Record<string, unknown>, bodyStatementJsx?: OxcBodyStatementJsxMode) => JsxNodeIr;
|
|
4
|
+
export type AnalyzeOxcJsxNodeCallback = (node: Record<string, unknown>, bodyStatementJsx?: OxcBodyStatementJsxMode, shadowNames?: readonly string[]) => JsxNodeIr;
|
|
5
5
|
export declare function analyzeOxcComponentProp(code: string, attr: unknown, analyzeJsxNode: AnalyzeOxcJsxNodeCallback, diagnostics?: Pick<Diagnostic, "level" | "code" | "message" | "loc">[], options?: {
|
|
6
6
|
allowRef?: boolean;
|
|
7
7
|
resolveExpressionCode?: (expression: Record<string, unknown>) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-component-props.d.ts","sourceRoot":"","sources":["../src/oxc-component-props.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAWvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GAAG,CACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,gBAAgB,CAAC,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"oxc-component-props.d.ts","sourceRoot":"","sources":["../src/oxc-component-props.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAWvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GAAG,CACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,gBAAgB,CAAC,EAAE,uBAAuB,EAC1C,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,KAC5B,SAAS,CAAC;AAEf,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,yBAAyB,EACzC,WAAW,GAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,EAAO,EAC1E,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CACpE,GACL,eAAe,EAAE,CAgDnB;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,cAAc,EAAE,yBAAyB,EACzC,gBAAgB,CAAC,EAAE,uBAAuB,GACzC,eAAe,GAAG,SAAS,CA8B7B;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,cAAc,EAAE,yBAAyB,EACzC,gBAAgB,CAAC,EAAE,uBAAuB,GACzC;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAmBA;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,cAAc,EAAE,yBAAyB,EACzC,gBAAgB,CAAC,EAAE,uBAAuB,GACzC;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAgBA"}
|
|
@@ -85,7 +85,7 @@ export function analyzeOxcArrowJsxRenderer(code, arrow, analyzeJsxNode, bodyStat
|
|
|
85
85
|
if (body.type === "JSXElement" || body.type === "JSXFragment") {
|
|
86
86
|
return {
|
|
87
87
|
valueName,
|
|
88
|
-
children: [analyzeJsxNode(body, bodyStatementJsx)],
|
|
88
|
+
children: [analyzeJsxNode(body, bodyStatementJsx, [valueName])],
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-component-props.js","sourceRoot":"","sources":["../src/oxc-component-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EACV,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"oxc-component-props.js","sourceRoot":"","sources":["../src/oxc-component-props.ts"],"names":[],"mappings":"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","sourcesContent":["import { unsupportedRefAttributeDiagnostic } from \"./diagnostics.js\";\nimport type { ComponentPropIr, JsxNodeIr } from \"./ir.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport { stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n getOxcLocation,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport { containsOxcJsxSyntax } from \"./oxc-render-values.js\";\nimport { transformJsxWithOxc } from \"./oxc-transform.js\";\nimport type { Diagnostic } from \"./types.js\";\n\nexport type AnalyzeOxcJsxNodeCallback = (\n node: Record<string, unknown>,\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n shadowNames?: readonly string[],\n) => JsxNodeIr;\n\nexport function analyzeOxcComponentProp(\n code: string,\n attr: unknown,\n analyzeJsxNode: AnalyzeOxcJsxNodeCallback,\n diagnostics: Pick<Diagnostic, \"level\" | \"code\" | \"message\" | \"loc\">[] = [],\n options: {\n allowRef?: boolean;\n resolveExpressionCode?: (expression: Record<string, unknown>) => string;\n } = {},\n): ComponentPropIr[] {\n const object = readObject(attr);\n\n if (object.type === \"JSXSpreadAttribute\") {\n return [{ kind: \"spread-prop\", code: readSource(code, readObject(object.argument)) }];\n }\n\n if (object.type !== \"JSXAttribute\") {\n return [];\n }\n\n const name = String(readObject(object.name).name);\n const value = readObject(object.value);\n\n if (name === \"ref\" && options.allowRef !== true) {\n diagnostics.push(unsupportedRefAttributeDiagnostic(getOxcLocation(code, object.name)));\n }\n\n if (value.type === \"Literal\") {\n return [{ kind: \"prop\", name, code: JSON.stringify(value.value) }];\n }\n\n if (value.type === \"JSXExpressionContainer\") {\n const expression = unwrapOxcParentheses(readObject(value.expression));\n\n if (expression.type === \"JSXElement\" || expression.type === \"JSXFragment\") {\n return [\n {\n kind: \"render-prop\",\n name,\n children: [analyzeJsxNode(expression)],\n },\n ];\n }\n\n return [\n {\n kind: \"prop\",\n name,\n code:\n expression.type === \"ArrowFunctionExpression\" && containsOxcJsxSyntax(expression)\n ? stripOxcGeneratedImports(transformJsxWithOxc(readSource(code, expression)))\n : (options.resolveExpressionCode?.(expression) ?? readSource(code, expression)),\n },\n ];\n }\n\n return [{ kind: \"prop\", name, code: \"true\" }];\n}\n\nexport function readOxcConsumerRenderProp(\n code: string,\n children: readonly unknown[],\n analyzeJsxNode: AnalyzeOxcJsxNodeCallback,\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n): ComponentPropIr | undefined {\n for (const child of children) {\n const object = readObject(child);\n\n if (object.type !== \"JSXExpressionContainer\") {\n continue;\n }\n\n const expression = unwrapOxcParentheses(readObject(object.expression));\n\n if (expression.type !== \"ArrowFunctionExpression\") {\n continue;\n }\n\n const renderer = analyzeOxcArrowJsxRenderer(\n code,\n expression,\n analyzeJsxNode,\n bodyStatementJsx,\n );\n\n return {\n kind: \"render-prop\",\n name: \"children\",\n valueName: renderer.valueName,\n children: renderer.children,\n };\n }\n\n return undefined;\n}\n\nexport function analyzeOxcSingleArrowJsxChild(\n code: string,\n children: readonly unknown[],\n analyzeJsxNode: AnalyzeOxcJsxNodeCallback,\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n): {\n valueName: string;\n children: JsxNodeIr[];\n} {\n for (const child of children) {\n const object = readObject(child);\n\n if (object.type !== \"JSXExpressionContainer\") {\n continue;\n }\n\n const expression = unwrapOxcParentheses(readObject(object.expression));\n\n if (expression.type === \"ArrowFunctionExpression\") {\n return analyzeOxcArrowJsxRenderer(code, expression, analyzeJsxNode, bodyStatementJsx);\n }\n }\n\n return {\n valueName: \"_value\",\n children: [],\n };\n}\n\nexport function analyzeOxcArrowJsxRenderer(\n code: string,\n arrow: Record<string, unknown>,\n analyzeJsxNode: AnalyzeOxcJsxNodeCallback,\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n): {\n valueName: string;\n children: JsxNodeIr[];\n} {\n const firstParameter = readObject(readArray(arrow.params)[0]);\n const valueName = typeof firstParameter.name === \"string\" ? firstParameter.name : \"_value\";\n const body = unwrapOxcParentheses(readObject(arrow.body));\n\n if (body.type === \"JSXElement\" || body.type === \"JSXFragment\") {\n return {\n valueName,\n children: [analyzeJsxNode(body, bodyStatementJsx, [valueName])],\n };\n }\n\n return {\n valueName,\n children: [{ kind: \"expr\", code: readSource(code, body) }],\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readArray, readObject } from "./oxc-node-utils.js";
|
|
2
|
-
const routerEntryCompatRuntimeExports = new Set(
|
|
3
|
-
const routerLinkCompatRuntimeExports = new Set(
|
|
2
|
+
const routerEntryCompatRuntimeExports = new Set();
|
|
3
|
+
const routerLinkCompatRuntimeExports = new Set();
|
|
4
4
|
const unknownCompatReference = { moduleId: "", exportName: "default" };
|
|
5
5
|
export function collectOxcClientBoundaryImportComponents(program, inferredBoundaryImports) {
|
|
6
6
|
const names = new Map();
|
|
@@ -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\"]);\nconst unknownCompatReference: ClientReferenceIr = { moduleId: \"\", exportName: \"default\" };\n\ninterface ClientReferenceAliasState {\n allowAmbiguousAliases: boolean;\n references: Map<string, ClientReferenceIr>;\n stringConstants: Map<string, string>;\n objectMembers: Map<string, Map<string, ClientReferenceIr>>;\n objectMemberKeys: Map<string, Set<string>>;\n dynamicObjectMembers: Map<string, ClientReferenceIr[]>;\n dynamicObjectNestedMembers: Map<string, Map<string, ClientReferenceIr[]>>;\n globModuleMaps: Set<string>;\n objectEntryValueBindings: Map<string, string>;\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 collectOxcClientReferenceAliases(program, names, { allowAmbiguousAliases: true });\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 options: { allowAmbiguousAliases?: boolean } = {},\n): void {\n const state: ClientReferenceAliasState = {\n allowAmbiguousAliases: options.allowAmbiguousAliases === true,\n references,\n stringConstants: new Map(),\n objectMembers: new Map(),\n objectMemberKeys: new Map(),\n dynamicObjectMembers: new Map(),\n dynamicObjectNestedMembers: new Map(),\n globModuleMaps: new Set(),\n objectEntryValueBindings: 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 if (object.type === \"ForOfStatement\") {\n collectOxcForOfClientReferenceAliases(object, state);\n return;\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 if (isImportMetaGlobEagerCall(init)) {\n state.globModuleMaps.add(aliasName);\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 value = readOptionalObject(property.value);\n if (keyName !== undefined) {\n addObjectMemberKey(state, objectName, keyName);\n }\n\n if (keyName !== undefined && value?.type === \"ObjectExpression\") {\n collectOxcObjectLiteralClientReferenceAliases(`${objectName}.${keyName}`, value, state);\n }\n\n const reference = expressionClientReference(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), state);\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) {\n addObjectMemberKey(state, objectName, memberName);\n if (reference !== undefined) {\n setObjectMemberReference(state, objectName, memberName, reference);\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n if (reference !== undefined) {\n addDynamicObjectMemberReference(state, objectName, reference);\n }\n\n collectDynamicObjectNestedMemberReferences(objectName, readOptionalObject(node.right), state);\n }\n}\n\nfunction collectOxcForOfClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n const sourceName = objectEntriesSourceName(readOptionalObject(node.right), state);\n const valueName = forOfObjectEntriesValueBindingName(readOptionalObject(node.left));\n\n if (sourceName === undefined || valueName === undefined) {\n for (const [key, value] of Object.entries(node)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n return;\n }\n\n const previous = state.objectEntryValueBindings.get(valueName);\n state.objectEntryValueBindings.set(valueName, sourceName);\n collectOxcClientReferenceAliasesFromNode(node.body, state);\n if (previous === undefined) {\n state.objectEntryValueBindings.delete(valueName);\n } else {\n state.objectEntryValueBindings.set(valueName, previous);\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], state);\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), state);\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 const dynamicObjectReference = selectClientReference(\n dynamicObjectMemberReferences(state, objectName),\n state.allowAmbiguousAliases,\n );\n if (dynamicObjectReference !== undefined) {\n return dynamicObjectReference;\n }\n\n const objectEntryReference = objectEntryMemberReference(objectName, memberName, state);\n if (objectEntryReference !== undefined) {\n return objectEntryReference;\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n return selectClientReference(\n [...objectMemberReferences(state, objectName), ...dynamicObjectMemberReferences(state, objectName)],\n state.allowAmbiguousAliases,\n );\n }\n\n if (objectName === undefined && memberName !== undefined) {\n const references = [\n ...expressionObjectNameCandidates(readOptionalObject(node.object), state)\n .map((candidate) => state.objectMembers.get(candidate)?.get(memberName)),\n ...expressionDynamicObjectNestedMemberReferences(\n readOptionalObject(node.object),\n memberName,\n state,\n ),\n ];\n return selectClientReference(references, state.allowAmbiguousAliases);\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 objectEntryMemberReference(\n objectName: string,\n memberName: string,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n const sourceName = state.objectEntryValueBindings.get(objectName);\n if (sourceName === undefined) {\n return undefined;\n }\n\n if (state.allowAmbiguousAliases && state.globModuleMaps.has(sourceName) && memberName === \"default\") {\n return unknownCompatReference;\n }\n\n const references = Array.from(state.objectMemberKeys.get(sourceName) ?? [])\n .map((key) => state.objectMembers.get(`${sourceName}.${key}`)?.get(memberName));\n return selectClientReference(references, state.allowAmbiguousAliases);\n}\n\nfunction expressionObjectNameCandidates(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string[] {\n const exactName = expressionObjectName(node, state);\n if (exactName !== undefined) {\n return [exactName];\n }\n\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n if (objectName !== undefined && memberName === undefined) {\n return Array.from(state.objectMemberKeys.get(objectName) ?? []).map(\n (key) => `${objectName}.${key}`,\n );\n }\n\n if (memberName === undefined) {\n return [];\n }\n\n return expressionObjectNameCandidates(readOptionalObject(node.object), state).map(\n (candidate) => `${candidate}.${memberName}`,\n );\n}\n\nfunction expressionObjectName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node?.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n return objectName !== undefined && memberName !== undefined\n ? `${objectName}.${memberName}`\n : undefined;\n }\n\n return 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 addObjectMemberKey(state, objectName, memberName);\n}\n\nfunction addDynamicObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n reference: ClientReferenceIr,\n): void {\n const references = state.dynamicObjectMembers.get(objectName) ?? [];\n references.push(reference);\n state.dynamicObjectMembers.set(objectName, references);\n}\n\nfunction collectDynamicObjectNestedMemberReferences(\n objectName: string,\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (node?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(node.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 addDynamicObjectNestedMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction addDynamicObjectNestedMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.dynamicObjectNestedMembers.get(objectName) ?? new Map<string, ClientReferenceIr[]>();\n const references = members.get(memberName) ?? [];\n references.push(reference);\n members.set(memberName, references);\n state.dynamicObjectNestedMembers.set(objectName, members);\n}\n\nfunction addObjectMemberKey(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n): void {\n const keys = state.objectMemberKeys.get(objectName) ?? new Set<string>();\n keys.add(memberName);\n state.objectMemberKeys.set(objectName, keys);\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 isObjectEntriesCall(node: Record<string, unknown> | undefined): 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 === \"entries\";\n}\n\nfunction isImportMetaGlobEagerCall(node: Record<string, unknown> | undefined): boolean {\n const callee = readOptionalObject(node?.callee);\n if (node?.type !== \"CallExpression\" || callee?.type !== \"MemberExpression\") {\n return false;\n }\n\n const property = readOptionalObject(callee.property);\n if (callee.computed === true || property?.type !== \"Identifier\" || property.name !== \"glob\") {\n return false;\n }\n\n const metaProperty = readOptionalObject(callee.object);\n const meta = readOptionalObject(metaProperty?.meta);\n const metaName = meta?.type === \"Identifier\" ? meta.name : undefined;\n const propertyName = readOptionalObject(metaProperty?.property);\n const importMetaPropertyName = propertyName?.type === \"Identifier\" ? propertyName.name : undefined;\n if (metaProperty?.type !== \"MetaProperty\" || metaName !== \"import\" || importMetaPropertyName !== \"meta\") {\n return false;\n }\n\n const options = readOptionalObject(readArray(node.arguments)[1]);\n if (options?.type !== \"ObjectExpression\") {\n return false;\n }\n\n return readArray(options.properties).some((propertyValue) => {\n const property = readOptionalObject(propertyValue);\n const key = readOptionalObject(property?.key);\n const value = readOptionalObject(property?.value);\n return property?.type === \"Property\" &&\n property.computed !== true &&\n key?.type === \"Identifier\" &&\n key.name === \"eager\" &&\n value?.type === \"Literal\" &&\n value.value === true;\n });\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 selectClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n allowAmbiguousAliases: boolean,\n): ClientReferenceIr | undefined {\n if (!allowAmbiguousAliases) {\n return uniqueClientReference(values);\n }\n\n if (values.length === 0 || values.some((value) => value === undefined)) {\n return undefined;\n }\n\n return values[0];\n}\n\nfunction objectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n const keys = Array.from(state.objectMemberKeys.get(objectName) ?? []);\n return keys.map((key) => state.objectMembers.get(objectName)?.get(key));\n}\n\nfunction dynamicObjectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n return state.dynamicObjectMembers.get(objectName) ?? [];\n}\n\nfunction expressionDynamicObjectNestedMemberReferences(\n node: Record<string, unknown> | undefined,\n memberName: string,\n state: ClientReferenceAliasState,\n): Array<ClientReferenceIr | undefined> {\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const property = propertyName(readOptionalObject(node.property), node.computed === true, state);\n if (objectName === undefined || property !== undefined) {\n return [];\n }\n\n return state.dynamicObjectNestedMembers.get(objectName)?.get(memberName) ?? [];\n}\n\nfunction objectEntriesSourceName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!isObjectEntriesCall(node)) {\n return undefined;\n }\n\n const args = readArray(node?.arguments).map(readOptionalObject);\n return expressionObjectName(args[0], state);\n}\n\nfunction forOfObjectEntriesValueBindingName(\n node: Record<string, unknown> | undefined,\n): string | undefined {\n const declaration =\n node?.type === \"VariableDeclaration\"\n ? readOptionalObject(readArray(node.declarations)[0])\n : undefined;\n const pattern = declaration?.type === \"VariableDeclarator\"\n ? readOptionalObject(declaration.id)\n : node;\n\n if (pattern?.type !== \"ArrayPattern\") {\n return undefined;\n }\n\n const valueElement = readOptionalObject(readArray(pattern.elements)[1]);\n return valueElement?.type === \"Identifier\" && typeof valueElement.name === \"string\"\n ? valueElement.name\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"]}
|
|
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<string>();\nconst routerLinkCompatRuntimeExports = new Set<string>();\nconst unknownCompatReference: ClientReferenceIr = { moduleId: \"\", exportName: \"default\" };\n\ninterface ClientReferenceAliasState {\n allowAmbiguousAliases: boolean;\n references: Map<string, ClientReferenceIr>;\n stringConstants: Map<string, string>;\n objectMembers: Map<string, Map<string, ClientReferenceIr>>;\n objectMemberKeys: Map<string, Set<string>>;\n dynamicObjectMembers: Map<string, ClientReferenceIr[]>;\n dynamicObjectNestedMembers: Map<string, Map<string, ClientReferenceIr[]>>;\n globModuleMaps: Set<string>;\n objectEntryValueBindings: Map<string, string>;\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 collectOxcClientReferenceAliases(program, names, { allowAmbiguousAliases: true });\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 options: { allowAmbiguousAliases?: boolean } = {},\n): void {\n const state: ClientReferenceAliasState = {\n allowAmbiguousAliases: options.allowAmbiguousAliases === true,\n references,\n stringConstants: new Map(),\n objectMembers: new Map(),\n objectMemberKeys: new Map(),\n dynamicObjectMembers: new Map(),\n dynamicObjectNestedMembers: new Map(),\n globModuleMaps: new Set(),\n objectEntryValueBindings: 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 if (object.type === \"ForOfStatement\") {\n collectOxcForOfClientReferenceAliases(object, state);\n return;\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 if (isImportMetaGlobEagerCall(init)) {\n state.globModuleMaps.add(aliasName);\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 value = readOptionalObject(property.value);\n if (keyName !== undefined) {\n addObjectMemberKey(state, objectName, keyName);\n }\n\n if (keyName !== undefined && value?.type === \"ObjectExpression\") {\n collectOxcObjectLiteralClientReferenceAliases(`${objectName}.${keyName}`, value, state);\n }\n\n const reference = expressionClientReference(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), state);\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) {\n addObjectMemberKey(state, objectName, memberName);\n if (reference !== undefined) {\n setObjectMemberReference(state, objectName, memberName, reference);\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n if (reference !== undefined) {\n addDynamicObjectMemberReference(state, objectName, reference);\n }\n\n collectDynamicObjectNestedMemberReferences(objectName, readOptionalObject(node.right), state);\n }\n}\n\nfunction collectOxcForOfClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n const sourceName = objectEntriesSourceName(readOptionalObject(node.right), state);\n const valueName = forOfObjectEntriesValueBindingName(readOptionalObject(node.left));\n\n if (sourceName === undefined || valueName === undefined) {\n for (const [key, value] of Object.entries(node)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n return;\n }\n\n const previous = state.objectEntryValueBindings.get(valueName);\n state.objectEntryValueBindings.set(valueName, sourceName);\n collectOxcClientReferenceAliasesFromNode(node.body, state);\n if (previous === undefined) {\n state.objectEntryValueBindings.delete(valueName);\n } else {\n state.objectEntryValueBindings.set(valueName, previous);\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], state);\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), state);\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 const dynamicObjectReference = selectClientReference(\n dynamicObjectMemberReferences(state, objectName),\n state.allowAmbiguousAliases,\n );\n if (dynamicObjectReference !== undefined) {\n return dynamicObjectReference;\n }\n\n const objectEntryReference = objectEntryMemberReference(objectName, memberName, state);\n if (objectEntryReference !== undefined) {\n return objectEntryReference;\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n return selectClientReference(\n [...objectMemberReferences(state, objectName), ...dynamicObjectMemberReferences(state, objectName)],\n state.allowAmbiguousAliases,\n );\n }\n\n if (objectName === undefined && memberName !== undefined) {\n const references = [\n ...expressionObjectNameCandidates(readOptionalObject(node.object), state)\n .map((candidate) => state.objectMembers.get(candidate)?.get(memberName)),\n ...expressionDynamicObjectNestedMemberReferences(\n readOptionalObject(node.object),\n memberName,\n state,\n ),\n ];\n return selectClientReference(references, state.allowAmbiguousAliases);\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 objectEntryMemberReference(\n objectName: string,\n memberName: string,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n const sourceName = state.objectEntryValueBindings.get(objectName);\n if (sourceName === undefined) {\n return undefined;\n }\n\n if (state.allowAmbiguousAliases && state.globModuleMaps.has(sourceName) && memberName === \"default\") {\n return unknownCompatReference;\n }\n\n const references = Array.from(state.objectMemberKeys.get(sourceName) ?? [])\n .map((key) => state.objectMembers.get(`${sourceName}.${key}`)?.get(memberName));\n return selectClientReference(references, state.allowAmbiguousAliases);\n}\n\nfunction expressionObjectNameCandidates(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string[] {\n const exactName = expressionObjectName(node, state);\n if (exactName !== undefined) {\n return [exactName];\n }\n\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n if (objectName !== undefined && memberName === undefined) {\n return Array.from(state.objectMemberKeys.get(objectName) ?? []).map(\n (key) => `${objectName}.${key}`,\n );\n }\n\n if (memberName === undefined) {\n return [];\n }\n\n return expressionObjectNameCandidates(readOptionalObject(node.object), state).map(\n (candidate) => `${candidate}.${memberName}`,\n );\n}\n\nfunction expressionObjectName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node?.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n return objectName !== undefined && memberName !== undefined\n ? `${objectName}.${memberName}`\n : undefined;\n }\n\n return 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 addObjectMemberKey(state, objectName, memberName);\n}\n\nfunction addDynamicObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n reference: ClientReferenceIr,\n): void {\n const references = state.dynamicObjectMembers.get(objectName) ?? [];\n references.push(reference);\n state.dynamicObjectMembers.set(objectName, references);\n}\n\nfunction collectDynamicObjectNestedMemberReferences(\n objectName: string,\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (node?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(node.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 addDynamicObjectNestedMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction addDynamicObjectNestedMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.dynamicObjectNestedMembers.get(objectName) ?? new Map<string, ClientReferenceIr[]>();\n const references = members.get(memberName) ?? [];\n references.push(reference);\n members.set(memberName, references);\n state.dynamicObjectNestedMembers.set(objectName, members);\n}\n\nfunction addObjectMemberKey(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n): void {\n const keys = state.objectMemberKeys.get(objectName) ?? new Set<string>();\n keys.add(memberName);\n state.objectMemberKeys.set(objectName, keys);\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 isObjectEntriesCall(node: Record<string, unknown> | undefined): 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 === \"entries\";\n}\n\nfunction isImportMetaGlobEagerCall(node: Record<string, unknown> | undefined): boolean {\n const callee = readOptionalObject(node?.callee);\n if (node?.type !== \"CallExpression\" || callee?.type !== \"MemberExpression\") {\n return false;\n }\n\n const property = readOptionalObject(callee.property);\n if (callee.computed === true || property?.type !== \"Identifier\" || property.name !== \"glob\") {\n return false;\n }\n\n const metaProperty = readOptionalObject(callee.object);\n const meta = readOptionalObject(metaProperty?.meta);\n const metaName = meta?.type === \"Identifier\" ? meta.name : undefined;\n const propertyName = readOptionalObject(metaProperty?.property);\n const importMetaPropertyName = propertyName?.type === \"Identifier\" ? propertyName.name : undefined;\n if (metaProperty?.type !== \"MetaProperty\" || metaName !== \"import\" || importMetaPropertyName !== \"meta\") {\n return false;\n }\n\n const options = readOptionalObject(readArray(node.arguments)[1]);\n if (options?.type !== \"ObjectExpression\") {\n return false;\n }\n\n return readArray(options.properties).some((propertyValue) => {\n const property = readOptionalObject(propertyValue);\n const key = readOptionalObject(property?.key);\n const value = readOptionalObject(property?.value);\n return property?.type === \"Property\" &&\n property.computed !== true &&\n key?.type === \"Identifier\" &&\n key.name === \"eager\" &&\n value?.type === \"Literal\" &&\n value.value === true;\n });\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 selectClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n allowAmbiguousAliases: boolean,\n): ClientReferenceIr | undefined {\n if (!allowAmbiguousAliases) {\n return uniqueClientReference(values);\n }\n\n if (values.length === 0 || values.some((value) => value === undefined)) {\n return undefined;\n }\n\n return values[0];\n}\n\nfunction objectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n const keys = Array.from(state.objectMemberKeys.get(objectName) ?? []);\n return keys.map((key) => state.objectMembers.get(objectName)?.get(key));\n}\n\nfunction dynamicObjectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n return state.dynamicObjectMembers.get(objectName) ?? [];\n}\n\nfunction expressionDynamicObjectNestedMemberReferences(\n node: Record<string, unknown> | undefined,\n memberName: string,\n state: ClientReferenceAliasState,\n): Array<ClientReferenceIr | undefined> {\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const property = propertyName(readOptionalObject(node.property), node.computed === true, state);\n if (objectName === undefined || property !== undefined) {\n return [];\n }\n\n return state.dynamicObjectNestedMembers.get(objectName)?.get(memberName) ?? [];\n}\n\nfunction objectEntriesSourceName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!isObjectEntriesCall(node)) {\n return undefined;\n }\n\n const args = readArray(node?.arguments).map(readOptionalObject);\n return expressionObjectName(args[0], state);\n}\n\nfunction forOfObjectEntriesValueBindingName(\n node: Record<string, unknown> | undefined,\n): string | undefined {\n const declaration =\n node?.type === \"VariableDeclaration\"\n ? readOptionalObject(readArray(node.declarations)[0])\n : undefined;\n const pattern = declaration?.type === \"VariableDeclarator\"\n ? readOptionalObject(declaration.id)\n : node;\n\n if (pattern?.type !== \"ArrayPattern\") {\n return undefined;\n }\n\n const valueElement = readOptionalObject(readArray(pattern.elements)[1]);\n return valueElement?.type === \"Identifier\" && typeof valueElement.name === \"string\"\n ? valueElement.name\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-runtime-emit.d.ts","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,SAAS,EAAE,MAAM,SAAS,CAAC;AAGvE,eAAO,MAAM,+CAA+C,oCACzB,CAAC;AAEpC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAMlF;
|
|
1
|
+
{"version":3,"file":"oxc-runtime-emit.d.ts","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,SAAS,EAAE,MAAM,SAAS,CAAC;AAGvE,eAAO,MAAM,+CAA+C,oCACzB,CAAC;AAEpC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAMlF;AAoID,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAUlF"}
|
package/dist/oxc-runtime-emit.js
CHANGED
|
@@ -14,7 +14,11 @@ function emitOxcServerStringNode(node) {
|
|
|
14
14
|
return `_escapeHtml(${node.code})`;
|
|
15
15
|
}
|
|
16
16
|
if (node.kind === "conditional") {
|
|
17
|
-
|
|
17
|
+
const whenTrue = emitOxcServerStringChildren(node.whenTrue);
|
|
18
|
+
const whenFalse = emitOxcServerStringChildren(node.whenFalse);
|
|
19
|
+
return node.conditionValueName === undefined
|
|
20
|
+
? `((${node.conditionCode}) ? ${whenTrue} : ${whenFalse})`
|
|
21
|
+
: `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`;
|
|
18
22
|
}
|
|
19
23
|
if (node.kind === "list") {
|
|
20
24
|
const parameters = emitOxcListParameters(node);
|
|
@@ -71,7 +75,11 @@ function emitOxcCompatObjectNode(node) {
|
|
|
71
75
|
return `(${node.code})`;
|
|
72
76
|
}
|
|
73
77
|
if (node.kind === "conditional") {
|
|
74
|
-
|
|
78
|
+
const whenTrue = emitOxcCompatObjectChildren(node.whenTrue);
|
|
79
|
+
const whenFalse = emitOxcCompatObjectChildren(node.whenFalse);
|
|
80
|
+
return node.conditionValueName === undefined
|
|
81
|
+
? `(${node.conditionCode}) ? ${whenTrue} : ${whenFalse}`
|
|
82
|
+
: `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`;
|
|
75
83
|
}
|
|
76
84
|
if (node.kind === "list") {
|
|
77
85
|
const parameters = emitOxcListParameters(node);
|