@reckona/mreact-compiler 0.0.72 → 0.0.74
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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +11 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +61 -0
- package/dist/internal.js.map +1 -1
- package/dist/oxc-child-analysis.d.ts.map +1 -1
- package/dist/oxc-child-analysis.js +21 -13
- package/dist/oxc-child-analysis.js.map +1 -1
- package/dist/oxc-dom-lowering.d.ts.map +1 -1
- package/dist/oxc-dom-lowering.js +18 -0
- package/dist/oxc-dom-lowering.js.map +1 -1
- package/dist/oxc-render-values.js +7 -1
- package/dist/oxc-render-values.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/internal.ts +95 -0
- package/src/oxc-child-analysis.ts +27 -21
- package/src/oxc-dom-lowering.ts +22 -0
- package/src/oxc-render-values.ts +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-child-analysis.js","sourceRoot":"","sources":["../src/oxc-child-analysis.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n invalidJsxExpressionDiagnostic,\n unserializableAwaitValueDiagnostic,\n unsupportedComponentReferenceDiagnostic,\n} from \"./diagnostics.js\";\nimport type { AsyncBoundaryIr, JsxElementIr, JsxNodeIr } from \"./ir.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n detectUnserializableAwaitValueReason,\n readOxcExpressionAttribute,\n readOxcExpressionAttributeNode,\n} from \"./oxc-await-analysis.js\";\nimport {\n analyzeOxcArrowJsxRenderer,\n analyzeOxcComponentProp,\n analyzeOxcSingleArrowJsxChild,\n readOxcConsumerRenderProp,\n} from \"./oxc-component-props.js\";\nimport {\n formatOxcBodyStatement,\n lowerOxcBodyStatementJsx,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n findOxcKeyCodeInChildren,\n isOxcJsxBranch,\n readOxcReturnExpressionFromStatement,\n} from \"./oxc-expression-utils.js\";\nimport {\n analyzeOxcAttribute,\n findOxcJsxAttributeCode,\n readOxcJsxTagName,\n} from \"./oxc-jsx-attributes.js\";\nimport { normalizeOxcJsxText } from \"./oxc-jsx-text.js\";\nimport {\n getOxcLocation,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n containsOxcJsxSyntax,\n isOxcRenderValueExpression,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { transformJsxWithOxc } from \"./oxc-transform.js\";\nimport type { CompileTarget, Diagnostic, ServerOutputMode } from \"./types.js\";\n\nexport interface OxcChildAnalysisContext {\n componentNames: Set<string>;\n componentCallNames?: Set<string>;\n target: CompileTarget;\n serverOutput?: ServerOutputMode;\n diagnostics: Diagnostic[];\n bodyStatementJsx?: OxcBodyStatementJsxMode;\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>;\n reactiveAliasBindings?: ReadonlyMap<string, string>;\n bodyLowerers: OxcBodyLowerers;\n lowerNestedJsxExpression: (\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n ) => string | undefined;\n}\n\nexport function analyzeOxcJsxNode(\n code: string,\n node: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr {\n if (node.type === \"JSXFragment\") {\n return {\n kind: \"fragment\",\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n };\n }\n\n if (node.type !== \"JSXElement\") {\n return { kind: \"expr\", code: readSource(code, node) };\n }\n\n const openingElement = readObject(node.openingElement);\n const tagName = readOxcJsxTagName(readObject(openingElement.name));\n const attributes = readArray(openingElement.attributes);\n\n if (tagName === \"Await\") {\n return analyzeOxcAsyncBoundary(code, node, attributes, context, bodyStatementJsx);\n }\n\n if (tagName === \"Slot\") {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName: \"slot\",\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n } satisfies JsxElementIr;\n }\n\n if (\n /^[A-Z][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)+$/.test(tagName) ||\n context.componentNames.has(tagName) ||\n isOxcServerRuntimeComponentBinding(tagName, context)\n ) {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n const analyzeJsxNode = (\n child: Record<string, unknown>,\n childBodyStatementJsx: OxcBodyStatementJsxMode = bodyStatementJsx,\n ) => analyzeOxcJsxNode(code, child, context, childBodyStatementJsx);\n const consumerRenderProp = tagName.endsWith(\".Consumer\")\n ? readOxcConsumerRenderProp(\n code,\n readArray(node.children),\n analyzeJsxNode,\n bodyStatementJsx,\n )\n : undefined;\n const componentLoc = getOxcLocation(code, openingElement.name);\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n ...(keyCode === undefined ? {} : { keyCode }),\n props: attributes\n .flatMap((attr) =>\n analyzeOxcComponentProp(code, attr, analyzeJsxNode, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((prop) => prop.kind === \"spread-prop\" || prop.name !== \"key\")\n .concat(consumerRenderProp === undefined ? [] : [consumerRenderProp]),\n children:\n consumerRenderProp === undefined\n ? analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx)\n : [],\n };\n }\n\n if (/^[A-Z]/.test(tagName)) {\n const componentLoc = getOxcLocation(code, openingElement.name);\n context.diagnostics.push(unsupportedComponentReferenceDiagnostic(tagName, componentLoc));\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n props: [],\n children: [],\n };\n }\n\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName,\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx),\n } satisfies JsxElementIr;\n}\n\nfunction isOxcServerRuntimeComponentBinding(\n tagName: string,\n context: OxcChildAnalysisContext,\n): boolean {\n if (context.target !== \"server\" || !/^[A-Z]/.test(tagName)) {\n return false;\n }\n\n const binding = context.componentBodyBindings?.get(tagName);\n if (binding === undefined) {\n return false;\n }\n\n return isOxcRuntimeComponentExpression(binding);\n}\n\nfunction isOxcRuntimeComponentExpression(expression: Record<string, unknown>): boolean {\n if (\n expression.type === \"Identifier\" ||\n expression.type === \"MemberExpression\" ||\n expression.type === \"CallExpression\" ||\n expression.type === \"FunctionExpression\" ||\n expression.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (expression.type === \"ChainExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.expression));\n }\n\n if (expression.type === \"ConditionalExpression\") {\n return (\n isOxcRuntimeComponentExpression(readObject(expression.consequent)) &&\n isOxcRuntimeComponentExpression(readObject(expression.alternate))\n );\n }\n\n if (expression.type === \"LogicalExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.right));\n }\n\n return false;\n}\n\nfunction analyzeOxcAsyncBoundary(\n code: string,\n node: Record<string, unknown>,\n attributes: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): AsyncBoundaryIr {\n const valueExpression = readOxcExpressionAttributeNode(attributes, \"value\");\n\n if (valueExpression !== undefined) {\n const unserializableReason = detectUnserializableAwaitValueReason(\n valueExpression,\n context.componentBodyBindings,\n );\n\n if (unserializableReason !== undefined) {\n context.diagnostics.push(unserializableAwaitValueDiagnostic(unserializableReason));\n }\n }\n\n const valueCode = readOxcExpressionAttribute(code, attributes, \"value\") ?? \"undefined\";\n const placeholderExpression = readOxcExpressionAttributeNode(attributes, \"placeholder\");\n const placeholderTagCode = findOxcJsxAttributeCode(code, attributes, \"placeholderAs\");\n const catchExpression = readOxcExpressionAttributeNode(attributes, \"catch\");\n const renderer = analyzeOxcSingleArrowJsxChild(\n code,\n readArray(node.children),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n );\n const catchRenderer =\n catchExpression !== undefined && readObject(catchExpression).type === \"ArrowFunctionExpression\"\n ? analyzeOxcArrowJsxRenderer(\n code,\n readObject(catchExpression),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n )\n : undefined;\n const placeholderChildren =\n placeholderExpression === undefined\n ? undefined\n : analyzeOxcExpressionChild(\n code,\n readObject(placeholderExpression),\n context,\n bodyStatementJsx,\n );\n const openingElement = readObject(node.openingElement);\n const awaitLoc = getOxcLocation(code, readObject(openingElement.name));\n\n return {\n kind: \"async-boundary\",\n ...(awaitLoc === undefined ? {} : { loc: awaitLoc }),\n valueCode,\n valueName: renderer.valueName,\n children: renderer.children,\n ...(placeholderChildren === undefined ? {} : { placeholderChildren }),\n ...(placeholderTagCode === undefined ? {} : { placeholderTagCode }),\n ...(catchRenderer === undefined\n ? {}\n : {\n catchName: catchRenderer.valueName,\n catchChildren: catchRenderer.children,\n }),\n };\n}\n\nexport function analyzeOxcChildren(\n code: string,\n children: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n return children.flatMap((child, index): JsxNodeIr[] => {\n const object = readObject(child);\n\n if (object.type === \"JSXText\") {\n const value = typeof object.value === \"string\" ? object.value : \"\";\n const normalizedValue = normalizeOxcJsxText(value, children, index);\n return normalizedValue === \"\" ? [] : [{ kind: \"text\", value: normalizedValue }];\n }\n\n if (object.type === \"JSXElement\" || object.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, object, context, bodyStatementJsx)];\n }\n\n if (object.type === \"JSXExpressionContainer\") {\n return analyzeOxcExpressionChild(\n code,\n readObject(object.expression),\n context,\n bodyStatementJsx,\n );\n }\n\n return [];\n });\n}\n\nexport function analyzeOxcExpressionChild(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"JSXEmptyExpression\") {\n context.diagnostics.push(invalidJsxExpressionDiagnostic(getOxcLocation(code, expression), \"text\"));\n return [];\n }\n\n if (unwrappedExpression.type === \"ConditionalExpression\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.test),\n context,\n ),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n }\n\n if (\n unwrappedExpression.type === \"LogicalExpression\" &&\n isOxcJsxBranch(readObject(unwrappedExpression.right))\n ) {\n const rightBranch = analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.right),\n context,\n bodyStatementJsx,\n );\n\n if (unwrappedExpression.operator === \"&&\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: rightBranch,\n whenFalse: [],\n },\n ];\n }\n\n if (unwrappedExpression.operator === \"||\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: [\n {\n kind: \"expr\",\n code: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n },\n ],\n whenFalse: rightBranch,\n },\n ];\n }\n }\n\n const list = analyzeOxcListExpression(code, unwrappedExpression, context, bodyStatementJsx);\n\n if (list !== undefined) {\n return [list];\n }\n\n if (unwrappedExpression.type === \"JSXElement\" || unwrappedExpression.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, unwrappedExpression, context, bodyStatementJsx)];\n }\n\n const sameModuleComponentStreamCall =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? emitOxcSameModuleComponentStreamCall(\n code,\n expression,\n context.componentCallNames ?? context.componentNames,\n )\n : undefined;\n const componentCallNamesForRenderMode =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? context.componentCallNames ?? context.componentNames\n : context.componentNames;\n const sameModuleComponentCall =\n sameModuleComponentStreamCall !== undefined ||\n isOxcSameModuleComponentCallExpression(expression, componentCallNamesForRenderMode);\n\n return [\n {\n kind: \"expr\",\n code:\n sameModuleComponentStreamCall ??\n (containsOxcJsxSyntax(unwrappedExpression)\n ? normalizeOxcExpressionCode(\n context.lowerNestedJsxExpression(\n code,\n expression,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n ) ??\n (bodyStatementJsx === \"compat-object\"\n ? stripOxcGeneratedImports(transformJsxWithOxc(readSource(code, expression)))\n : readOxcReactiveExpressionCode(code, expression, context)),\n )\n : readOxcReactiveExpressionCode(code, expression, context)),\n ...(isOxcRenderValueExpression(expression) || sameModuleComponentCall\n ? {\n renderMode:\n sameModuleComponentStreamCall !== undefined\n ? (\"stream-node\" as const)\n : bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : (\"dynamic\" as const),\n }\n : {}),\n },\n ];\n}\n\nfunction readOxcReactiveExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"Identifier\" && typeof unwrappedExpression.name === \"string\") {\n return context.reactiveAliasBindings?.get(unwrappedExpression.name) ?? readSource(code, expression);\n }\n\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction isOxcSameModuleComponentCallExpression(\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): boolean {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n componentNames.has(callee.name)\n );\n}\n\nfunction emitOxcSameModuleComponentStreamCall(\n code: string,\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): string | undefined {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !componentNames.has(callee.name)\n ) {\n return undefined;\n }\n\n const args = readArray(unwrappedExpression.arguments)\n .map((argument) => readSource(code, argument))\n .join(\", \");\n\n return `($sink) => ${callee.name}($sink${args === \"\" ? \"\" : `, ${args}`})`;\n}\n\nfunction analyzeOxcDynamicBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr[] {\n if (expression.type === \"Literal\" && (expression.value === null || expression.value === false)) {\n return [];\n }\n\n return analyzeOxcExpressionChild(code, expression, context, bodyStatementJsx);\n}\n\nfunction analyzeOxcListExpression(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr | undefined {\n const callExpression =\n expression.type === \"ChainExpression\" ? readObject(expression.expression) : expression;\n\n if (callExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(callExpression.callee);\n\n if (callee.type !== \"MemberExpression\" || readObject(callee.property).name !== \"map\") {\n return undefined;\n }\n\n const renderer = readObject(readArray(callExpression.arguments)[0]);\n\n if (renderer.type !== \"ArrowFunctionExpression\") {\n return undefined;\n }\n\n const itemName = String(readObject(readArray(renderer.params)[0]).name ?? \"_item\");\n const indexName = readObject(readArray(renderer.params)[1]).name;\n const arrayName = readObject(readArray(renderer.params)[2]).name;\n const rendererBody = analyzeOxcListRenderer(code, renderer, context, bodyStatementJsx);\n\n if (rendererBody === undefined) {\n return undefined;\n }\n\n const { children, bodyStatements } = rendererBody;\n const keyCode = findOxcKeyCodeInChildren(children);\n\n return {\n kind: \"list\",\n itemsCode:\n callee.optional === true\n ? `(${readOxcReactiveExpressionCode(code, readObject(callee.object), context)} ?? [])`\n : readOxcReactiveExpressionCode(code, readObject(callee.object), context),\n itemName,\n ...(typeof indexName === \"string\" ? { indexName } : {}),\n ...(typeof arrayName === \"string\" ? { arrayName } : {}),\n ...(keyCode === undefined ? {} : { keyCode }),\n ...(bodyStatements.length === 0 ? {} : { bodyStatements }),\n children,\n };\n}\n\nfunction analyzeOxcListRenderer(\n code: string,\n renderer: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const body = readObject(renderer.body);\n\n if (body.type !== \"BlockStatement\") {\n return analyzeOxcListReturnExpression(\n code,\n unwrapOxcParentheses(body),\n [],\n context,\n bodyStatementJsx,\n );\n }\n\n const statements = readArray(body.body);\n const ifStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"IfStatement\",\n );\n\n if (ifStatementIndex >= 0) {\n return analyzeOxcListIfRenderer(code, statements, ifStatementIndex, context, bodyStatementJsx);\n }\n\n const returnStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"ReturnStatement\",\n );\n const returnStatement =\n returnStatementIndex === -1 ? undefined : readObject(statements[returnStatementIndex]);\n const returnArgument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n if (returnArgument === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, returnStatementIndex);\n const result = analyzeOxcListReturnExpression(\n code,\n returnArgument,\n bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n context,\n bodyStatementJsx,\n );\n\n if (result === undefined) {\n return undefined;\n }\n\n markOxcRenderValueExpressions(\n result.children,\n collectOxcBodyJsxBindingNames(bodyPrefixStatements),\n );\n return result;\n}\n\nfunction analyzeOxcListReturnExpression(\n code: string,\n body: Record<string, unknown>,\n bodyStatements: string[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n if (body.type === \"ConditionalExpression\") {\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(body.test), context),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(body.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(body.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n\n return {\n children,\n bodyStatements,\n };\n }\n\n if (body.type !== \"JSXElement\" && body.type !== \"JSXFragment\") {\n return undefined;\n }\n\n return {\n children: [analyzeOxcJsxNode(code, body, context, bodyStatementJsx)],\n bodyStatements,\n };\n}\n\nfunction analyzeOxcListIfRenderer(\n code: string,\n statements: readonly unknown[],\n ifStatementIndex: number,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const ifStatement = readObject(statements[ifStatementIndex]);\n const whenTrueExpression = readOxcReturnExpressionFromStatement(ifStatement.consequent);\n const alternate = readOxcReturnExpressionFromStatement(ifStatement.alternate);\n const fallthrough = readOxcReturnExpressionFromStatement(statements[ifStatementIndex + 1]);\n const whenFalseExpression = alternate ?? fallthrough;\n\n if (whenTrueExpression === undefined || whenFalseExpression === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, ifStatementIndex);\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(ifStatement.test), context),\n whenTrue: analyzeOxcDynamicBranch(code, whenTrueExpression, context, bodyStatementJsx),\n whenFalse: analyzeOxcDynamicBranch(code, whenFalseExpression, context, bodyStatementJsx),\n },\n ];\n\n markOxcRenderValueExpressions(children, collectOxcBodyJsxBindingNames(bodyPrefixStatements));\n\n return {\n bodyStatements: bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n children,\n };\n}\n\nfunction resolveOxcBodyStatementJsx(context: OxcChildAnalysisContext): OxcBodyStatementJsxMode {\n return context.bodyStatementJsx ?? (context.target === \"server\" ? \"server-string\" : \"dom-node\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc-child-analysis.js","sourceRoot":"","sources":["../src/oxc-child-analysis.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n invalidJsxExpressionDiagnostic,\n unserializableAwaitValueDiagnostic,\n unsupportedComponentReferenceDiagnostic,\n} from \"./diagnostics.js\";\nimport type { AsyncBoundaryIr, JsxElementIr, JsxNodeIr } from \"./ir.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n detectUnserializableAwaitValueReason,\n readOxcExpressionAttribute,\n readOxcExpressionAttributeNode,\n} from \"./oxc-await-analysis.js\";\nimport {\n analyzeOxcArrowJsxRenderer,\n analyzeOxcComponentProp,\n analyzeOxcSingleArrowJsxChild,\n readOxcConsumerRenderProp,\n} from \"./oxc-component-props.js\";\nimport {\n formatOxcBodyStatement,\n lowerOxcBodyStatementJsx,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n findOxcKeyCodeInChildren,\n readOxcReturnExpressionFromStatement,\n} from \"./oxc-expression-utils.js\";\nimport {\n analyzeOxcAttribute,\n findOxcJsxAttributeCode,\n readOxcJsxTagName,\n} from \"./oxc-jsx-attributes.js\";\nimport { normalizeOxcJsxText } from \"./oxc-jsx-text.js\";\nimport {\n getOxcLocation,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n containsOxcJsxSyntax,\n isOxcRenderValueExpression,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { transformJsxWithOxc } from \"./oxc-transform.js\";\nimport type { CompileTarget, Diagnostic, ServerOutputMode } from \"./types.js\";\n\nexport interface OxcChildAnalysisContext {\n componentNames: Set<string>;\n componentCallNames?: Set<string>;\n target: CompileTarget;\n serverOutput?: ServerOutputMode;\n diagnostics: Diagnostic[];\n bodyStatementJsx?: OxcBodyStatementJsxMode;\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>;\n reactiveAliasBindings?: ReadonlyMap<string, string>;\n bodyLowerers: OxcBodyLowerers;\n lowerNestedJsxExpression: (\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n ) => string | undefined;\n}\n\nexport function analyzeOxcJsxNode(\n code: string,\n node: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr {\n if (node.type === \"JSXFragment\") {\n return {\n kind: \"fragment\",\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n };\n }\n\n if (node.type !== \"JSXElement\") {\n return { kind: \"expr\", code: readSource(code, node) };\n }\n\n const openingElement = readObject(node.openingElement);\n const tagName = readOxcJsxTagName(readObject(openingElement.name));\n const attributes = readArray(openingElement.attributes);\n\n if (tagName === \"Await\") {\n return analyzeOxcAsyncBoundary(code, node, attributes, context, bodyStatementJsx);\n }\n\n if (tagName === \"Slot\") {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName: \"slot\",\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(\n code,\n readArray(node.children),\n context,\n bodyStatementJsx,\n ),\n } satisfies JsxElementIr;\n }\n\n if (\n /^[A-Z][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)+$/.test(tagName) ||\n context.componentNames.has(tagName) ||\n isOxcServerRuntimeComponentBinding(tagName, context)\n ) {\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n const analyzeJsxNode = (\n child: Record<string, unknown>,\n childBodyStatementJsx: OxcBodyStatementJsxMode = bodyStatementJsx,\n ) => analyzeOxcJsxNode(code, child, context, childBodyStatementJsx);\n const consumerRenderProp = tagName.endsWith(\".Consumer\")\n ? readOxcConsumerRenderProp(\n code,\n readArray(node.children),\n analyzeJsxNode,\n bodyStatementJsx,\n )\n : undefined;\n const componentLoc = getOxcLocation(code, openingElement.name);\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n ...(keyCode === undefined ? {} : { keyCode }),\n props: attributes\n .flatMap((attr) =>\n analyzeOxcComponentProp(code, attr, analyzeJsxNode, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((prop) => prop.kind === \"spread-prop\" || prop.name !== \"key\")\n .concat(consumerRenderProp === undefined ? [] : [consumerRenderProp]),\n children:\n consumerRenderProp === undefined\n ? analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx)\n : [],\n };\n }\n\n if (/^[A-Z]/.test(tagName)) {\n const componentLoc = getOxcLocation(code, openingElement.name);\n context.diagnostics.push(unsupportedComponentReferenceDiagnostic(tagName, componentLoc));\n\n return {\n kind: \"component\",\n name: tagName,\n ...(componentLoc === undefined ? {} : { loc: componentLoc }),\n props: [],\n children: [],\n };\n }\n\n const keyCode = findOxcJsxAttributeCode(code, attributes, \"key\");\n const allowRef = bodyStatementJsx === \"compat-object\";\n\n return {\n kind: \"element\",\n tagName,\n ...(keyCode === undefined ? {} : { keyCode }),\n attributes: attributes\n .flatMap((attr) =>\n analyzeOxcAttribute(code, attr, context.target, context.diagnostics, {\n allowRef,\n resolveExpressionCode: (expression) =>\n readOxcReactiveExpressionCode(code, expression, context),\n }),\n )\n .filter((attribute) => attribute.kind === \"spread-attr\" || attribute.name !== \"key\"),\n children: analyzeOxcChildren(code, readArray(node.children), context, bodyStatementJsx),\n } satisfies JsxElementIr;\n}\n\nfunction isOxcServerRuntimeComponentBinding(\n tagName: string,\n context: OxcChildAnalysisContext,\n): boolean {\n if (context.target !== \"server\" || !/^[A-Z]/.test(tagName)) {\n return false;\n }\n\n const binding = context.componentBodyBindings?.get(tagName);\n if (binding === undefined) {\n return false;\n }\n\n return isOxcRuntimeComponentExpression(binding);\n}\n\nfunction isOxcRuntimeComponentExpression(expression: Record<string, unknown>): boolean {\n if (\n expression.type === \"Identifier\" ||\n expression.type === \"MemberExpression\" ||\n expression.type === \"CallExpression\" ||\n expression.type === \"FunctionExpression\" ||\n expression.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (expression.type === \"ChainExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.expression));\n }\n\n if (expression.type === \"ConditionalExpression\") {\n return (\n isOxcRuntimeComponentExpression(readObject(expression.consequent)) &&\n isOxcRuntimeComponentExpression(readObject(expression.alternate))\n );\n }\n\n if (expression.type === \"LogicalExpression\") {\n return isOxcRuntimeComponentExpression(readObject(expression.right));\n }\n\n return false;\n}\n\nfunction analyzeOxcAsyncBoundary(\n code: string,\n node: Record<string, unknown>,\n attributes: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): AsyncBoundaryIr {\n const valueExpression = readOxcExpressionAttributeNode(attributes, \"value\");\n\n if (valueExpression !== undefined) {\n const unserializableReason = detectUnserializableAwaitValueReason(\n valueExpression,\n context.componentBodyBindings,\n );\n\n if (unserializableReason !== undefined) {\n context.diagnostics.push(unserializableAwaitValueDiagnostic(unserializableReason));\n }\n }\n\n const valueCode = readOxcExpressionAttribute(code, attributes, \"value\") ?? \"undefined\";\n const placeholderExpression = readOxcExpressionAttributeNode(attributes, \"placeholder\");\n const placeholderTagCode = findOxcJsxAttributeCode(code, attributes, \"placeholderAs\");\n const catchExpression = readOxcExpressionAttributeNode(attributes, \"catch\");\n const renderer = analyzeOxcSingleArrowJsxChild(\n code,\n readArray(node.children),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n );\n const catchRenderer =\n catchExpression !== undefined && readObject(catchExpression).type === \"ArrowFunctionExpression\"\n ? analyzeOxcArrowJsxRenderer(\n code,\n readObject(catchExpression),\n (child, childBodyStatementJsx = bodyStatementJsx) =>\n analyzeOxcJsxNode(code, child, context, childBodyStatementJsx),\n bodyStatementJsx,\n )\n : undefined;\n const placeholderChildren =\n placeholderExpression === undefined\n ? undefined\n : analyzeOxcExpressionChild(\n code,\n readObject(placeholderExpression),\n context,\n bodyStatementJsx,\n );\n const openingElement = readObject(node.openingElement);\n const awaitLoc = getOxcLocation(code, readObject(openingElement.name));\n\n return {\n kind: \"async-boundary\",\n ...(awaitLoc === undefined ? {} : { loc: awaitLoc }),\n valueCode,\n valueName: renderer.valueName,\n children: renderer.children,\n ...(placeholderChildren === undefined ? {} : { placeholderChildren }),\n ...(placeholderTagCode === undefined ? {} : { placeholderTagCode }),\n ...(catchRenderer === undefined\n ? {}\n : {\n catchName: catchRenderer.valueName,\n catchChildren: catchRenderer.children,\n }),\n };\n}\n\nexport function analyzeOxcChildren(\n code: string,\n children: readonly unknown[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n return children.flatMap((child, index): JsxNodeIr[] => {\n const object = readObject(child);\n\n if (object.type === \"JSXText\") {\n const value = typeof object.value === \"string\" ? object.value : \"\";\n const normalizedValue = normalizeOxcJsxText(value, children, index);\n return normalizedValue === \"\" ? [] : [{ kind: \"text\", value: normalizedValue }];\n }\n\n if (object.type === \"JSXElement\" || object.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, object, context, bodyStatementJsx)];\n }\n\n if (object.type === \"JSXExpressionContainer\") {\n return analyzeOxcExpressionChild(\n code,\n readObject(object.expression),\n context,\n bodyStatementJsx,\n );\n }\n\n return [];\n });\n}\n\nexport function analyzeOxcExpressionChild(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx = resolveOxcBodyStatementJsx(context),\n): JsxNodeIr[] {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"JSXEmptyExpression\") {\n context.diagnostics.push(invalidJsxExpressionDiagnostic(getOxcLocation(code, expression), \"text\"));\n return [];\n }\n\n if (unwrappedExpression.type === \"ConditionalExpression\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.test),\n context,\n ),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n }\n\n if (\n unwrappedExpression.type === \"LogicalExpression\" &&\n containsOxcJsxSyntax(readObject(unwrappedExpression.right))\n ) {\n const rightBranch = analyzeOxcDynamicBranch(\n code,\n readObject(unwrappedExpression.right),\n context,\n bodyStatementJsx,\n );\n\n if (unwrappedExpression.operator === \"&&\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: rightBranch,\n whenFalse: [],\n },\n ];\n }\n\n if (unwrappedExpression.operator === \"||\") {\n return [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n whenTrue: [\n {\n kind: \"expr\",\n code: readOxcReactiveExpressionCode(\n code,\n readObject(unwrappedExpression.left),\n context,\n ),\n },\n ],\n whenFalse: rightBranch,\n },\n ];\n }\n }\n\n const list = analyzeOxcListExpression(code, unwrappedExpression, context, bodyStatementJsx);\n\n if (list !== undefined) {\n return [list];\n }\n\n if (unwrappedExpression.type === \"JSXElement\" || unwrappedExpression.type === \"JSXFragment\") {\n return [analyzeOxcJsxNode(code, unwrappedExpression, context, bodyStatementJsx)];\n }\n\n const sameModuleComponentStreamCall =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? emitOxcSameModuleComponentStreamCall(\n code,\n expression,\n context.componentCallNames ?? context.componentNames,\n )\n : undefined;\n const componentCallNamesForRenderMode =\n context.target === \"server\" && context.serverOutput === \"stream\"\n ? context.componentCallNames ?? context.componentNames\n : context.componentNames;\n const sameModuleComponentCall =\n sameModuleComponentStreamCall !== undefined ||\n isOxcSameModuleComponentCallExpression(expression, componentCallNamesForRenderMode);\n const containsNestedJsx = containsOxcJsxSyntax(unwrappedExpression);\n const loweredNestedJsx = containsNestedJsx\n ? context.lowerNestedJsxExpression(\n code,\n expression,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n )\n : undefined;\n const isKnownRenderValue = isOxcRenderValueExpression(expression) || sameModuleComponentCall;\n const renderMode = sameModuleComponentStreamCall !== undefined\n ? (\"stream-node\" as const)\n : isKnownRenderValue\n ? bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : (\"dynamic\" as const)\n : loweredNestedJsx !== undefined && bodyStatementJsx === \"server-string\"\n ? (\"html\" as const)\n : loweredNestedJsx !== undefined && bodyStatementJsx === \"dom-node\"\n ? (\"dynamic\" as const)\n : undefined;\n\n return [\n {\n kind: \"expr\",\n code:\n sameModuleComponentStreamCall ??\n (containsNestedJsx\n ? normalizeOxcExpressionCode(\n loweredNestedJsx ??\n (bodyStatementJsx === \"compat-object\"\n ? stripOxcGeneratedImports(transformJsxWithOxc(readSource(code, expression)))\n : readOxcReactiveExpressionCode(code, expression, context)),\n )\n : readOxcReactiveExpressionCode(code, expression, context)),\n ...(renderMode === undefined ? {} : { renderMode }),\n },\n ];\n}\n\nfunction readOxcReactiveExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type === \"Identifier\" && typeof unwrappedExpression.name === \"string\") {\n return context.reactiveAliasBindings?.get(unwrappedExpression.name) ?? readSource(code, expression);\n }\n\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction isOxcSameModuleComponentCallExpression(\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): boolean {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n componentNames.has(callee.name)\n );\n}\n\nfunction emitOxcSameModuleComponentStreamCall(\n code: string,\n expression: Record<string, unknown>,\n componentNames: ReadonlySet<string>,\n): string | undefined {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !componentNames.has(callee.name)\n ) {\n return undefined;\n }\n\n const args = readArray(unwrappedExpression.arguments)\n .map((argument) => readSource(code, argument))\n .join(\", \");\n\n return `($sink) => ${callee.name}($sink${args === \"\" ? \"\" : `, ${args}`})`;\n}\n\nfunction analyzeOxcDynamicBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr[] {\n if (expression.type === \"Literal\" && (expression.value === null || expression.value === false)) {\n return [];\n }\n\n return analyzeOxcExpressionChild(code, expression, context, bodyStatementJsx);\n}\n\nfunction analyzeOxcListExpression(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): JsxNodeIr | undefined {\n const callExpression =\n expression.type === \"ChainExpression\" ? readObject(expression.expression) : expression;\n\n if (callExpression.type !== \"CallExpression\") {\n return undefined;\n }\n\n const callee = readObject(callExpression.callee);\n\n if (callee.type !== \"MemberExpression\" || readObject(callee.property).name !== \"map\") {\n return undefined;\n }\n\n const renderer = readObject(readArray(callExpression.arguments)[0]);\n\n if (renderer.type !== \"ArrowFunctionExpression\") {\n return undefined;\n }\n\n const itemName = String(readObject(readArray(renderer.params)[0]).name ?? \"_item\");\n const indexName = readObject(readArray(renderer.params)[1]).name;\n const arrayName = readObject(readArray(renderer.params)[2]).name;\n const rendererBody = analyzeOxcListRenderer(code, renderer, context, bodyStatementJsx);\n\n if (rendererBody === undefined) {\n return undefined;\n }\n\n const { children, bodyStatements } = rendererBody;\n const keyCode = findOxcKeyCodeInChildren(children);\n\n return {\n kind: \"list\",\n itemsCode:\n callee.optional === true\n ? `(${readOxcReactiveExpressionCode(code, readObject(callee.object), context)} ?? [])`\n : readOxcReactiveExpressionCode(code, readObject(callee.object), context),\n itemName,\n ...(typeof indexName === \"string\" ? { indexName } : {}),\n ...(typeof arrayName === \"string\" ? { arrayName } : {}),\n ...(keyCode === undefined ? {} : { keyCode }),\n ...(bodyStatements.length === 0 ? {} : { bodyStatements }),\n children,\n };\n}\n\nfunction analyzeOxcListRenderer(\n code: string,\n renderer: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const body = readObject(renderer.body);\n\n if (body.type !== \"BlockStatement\") {\n return analyzeOxcListReturnExpression(\n code,\n unwrapOxcParentheses(body),\n [],\n context,\n bodyStatementJsx,\n );\n }\n\n const statements = readArray(body.body);\n const ifStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"IfStatement\",\n );\n\n if (ifStatementIndex >= 0) {\n return analyzeOxcListIfRenderer(code, statements, ifStatementIndex, context, bodyStatementJsx);\n }\n\n const returnStatementIndex = statements.findIndex(\n (statement) => readObject(statement).type === \"ReturnStatement\",\n );\n const returnStatement =\n returnStatementIndex === -1 ? undefined : readObject(statements[returnStatementIndex]);\n const returnArgument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n if (returnArgument === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, returnStatementIndex);\n const result = analyzeOxcListReturnExpression(\n code,\n returnArgument,\n bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n context,\n bodyStatementJsx,\n );\n\n if (result === undefined) {\n return undefined;\n }\n\n markOxcRenderValueExpressions(\n result.children,\n collectOxcBodyJsxBindingNames(bodyPrefixStatements),\n );\n return result;\n}\n\nfunction analyzeOxcListReturnExpression(\n code: string,\n body: Record<string, unknown>,\n bodyStatements: string[],\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n if (body.type === \"ConditionalExpression\") {\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(body.test), context),\n whenTrue: analyzeOxcDynamicBranch(\n code,\n readObject(body.consequent),\n context,\n bodyStatementJsx,\n ),\n whenFalse: analyzeOxcDynamicBranch(\n code,\n readObject(body.alternate),\n context,\n bodyStatementJsx,\n ),\n },\n ];\n\n return {\n children,\n bodyStatements,\n };\n }\n\n if (body.type !== \"JSXElement\" && body.type !== \"JSXFragment\") {\n return undefined;\n }\n\n return {\n children: [analyzeOxcJsxNode(code, body, context, bodyStatementJsx)],\n bodyStatements,\n };\n}\n\nfunction analyzeOxcListIfRenderer(\n code: string,\n statements: readonly unknown[],\n ifStatementIndex: number,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): { children: JsxNodeIr[]; bodyStatements: string[] } | undefined {\n const ifStatement = readObject(statements[ifStatementIndex]);\n const whenTrueExpression = readOxcReturnExpressionFromStatement(ifStatement.consequent);\n const alternate = readOxcReturnExpressionFromStatement(ifStatement.alternate);\n const fallthrough = readOxcReturnExpressionFromStatement(statements[ifStatementIndex + 1]);\n const whenFalseExpression = alternate ?? fallthrough;\n\n if (whenTrueExpression === undefined || whenFalseExpression === undefined) {\n return undefined;\n }\n\n const bodyPrefixStatements = statements.slice(0, ifStatementIndex);\n const children: JsxNodeIr[] = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveExpressionCode(code, readObject(ifStatement.test), context),\n whenTrue: analyzeOxcDynamicBranch(code, whenTrueExpression, context, bodyStatementJsx),\n whenFalse: analyzeOxcDynamicBranch(code, whenFalseExpression, context, bodyStatementJsx),\n },\n ];\n\n markOxcRenderValueExpressions(children, collectOxcBodyJsxBindingNames(bodyPrefixStatements));\n\n return {\n bodyStatements: bodyPrefixStatements.map(\n (statement) =>\n lowerOxcBodyStatementJsx(\n code,\n statement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, statement, bodyStatementJsx),\n ),\n children,\n };\n}\n\nfunction resolveOxcBodyStatementJsx(context: OxcChildAnalysisContext): OxcBodyStatementJsxMode {\n return context.bodyStatementJsx ?? (context.target === \"server\" ? \"server-string\" : \"dom-node\");\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-dom-lowering.d.ts","sourceRoot":"","sources":["../src/oxc-dom-lowering.ts"],"names":[],"mappings":"AAIA,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"oxc-dom-lowering.d.ts","sourceRoot":"","sources":["../src/oxc-dom-lowering.ts"],"names":[],"mappings":"AAIA,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,CA2DpB"}
|
package/dist/oxc-dom-lowering.js
CHANGED
|
@@ -10,6 +10,24 @@ export function lowerOxcDomNodeExpression(code, node) {
|
|
|
10
10
|
return `((${readSource(code, readObject(unwrapped.test))}) ? ${whenTrue} : ${whenFalse})`;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
if (unwrapped.type === "LogicalExpression") {
|
|
14
|
+
const right = lowerOxcDomNodeExpression(code, readObject(unwrapped.right));
|
|
15
|
+
if (right !== undefined && unwrapped.operator === "&&") {
|
|
16
|
+
return `((${readSource(code, readObject(unwrapped.left))}) ? ${right} : false)`;
|
|
17
|
+
}
|
|
18
|
+
if (right !== undefined && unwrapped.operator === "||") {
|
|
19
|
+
const left = readSource(code, readObject(unwrapped.left));
|
|
20
|
+
return `((${left}) ? ${left} : ${right})`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (unwrapped.type === "ArrayExpression") {
|
|
24
|
+
return `[${readArray(unwrapped.elements).map((element) => {
|
|
25
|
+
const object = readObject(element);
|
|
26
|
+
return Object.keys(object).length === 0
|
|
27
|
+
? "undefined"
|
|
28
|
+
: (lowerOxcDomNodeExpression(code, object) ?? readSource(code, object));
|
|
29
|
+
}).join(", ")}]`;
|
|
30
|
+
}
|
|
13
31
|
if (unwrapped.type === "Literal" && (unwrapped.value === null || unwrapped.value === false)) {
|
|
14
32
|
return 'document.createTextNode("")';
|
|
15
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-dom-lowering.js","sourceRoot":"","sources":["../src/oxc-dom-lowering.ts"],"names":[],"mappings":"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","sourcesContent":["import { readArray, readObject, readSource, unwrapOxcParentheses } from \"./oxc-node-utils.js\";\nimport { readOxcJsxTagName } from \"./oxc-jsx-attributes.js\";\nimport { normalizeOxcJsxText } from \"./oxc-jsx-text.js\";\n\nexport function lowerOxcDomNodeExpression(\n code: string,\n node: Record<string, unknown>,\n): string | undefined {\n const unwrapped = unwrapOxcParentheses(node);\n\n if (unwrapped.type === \"ConditionalExpression\") {\n const whenTrue = lowerOxcDomNodeExpression(code, readObject(unwrapped.consequent));\n const whenFalse = lowerOxcDomNodeExpression(code, readObject(unwrapped.alternate));\n\n if (whenTrue !== undefined && whenFalse !== undefined) {\n return `((${readSource(code, readObject(unwrapped.test))}) ? ${whenTrue} : ${whenFalse})`;\n }\n }\n\n if (unwrapped.type === \"Literal\" && (unwrapped.value === null || unwrapped.value === false)) {\n return 'document.createTextNode(\"\")';\n }\n\n node = unwrapped;\n\n if (node.type !== \"JSXElement\") {\n return undefined;\n }\n\n const openingElement = readObject(node.openingElement);\n const tagName = readOxcJsxTagName(readObject(openingElement.name));\n\n if (!/^[a-z]/.test(tagName)) {\n return undefined;\n }\n\n return [\n \"(() => {\",\n ` const _node = document.createElement(${JSON.stringify(tagName)});`,\n ...lowerOxcDomAttributes(code, readArray(openingElement.attributes)),\n ...lowerOxcDomChildren(code, readArray(node.children)),\n \" return _node;\",\n \"})()\",\n ].join(\"\\n\");\n}\n\nfunction lowerOxcDomAttributes(code: string, attributes: readonly unknown[]): string[] {\n return attributes.flatMap((attribute): string[] => {\n const object = readObject(attribute);\n\n if (object.type !== \"JSXAttribute\") {\n return [];\n }\n\n const name = String(readObject(object.name).name);\n const domName = htmlAttributeAliases[name] ?? name;\n const value = readObject(object.value);\n\n if (Object.keys(value).length === 0) {\n return [` _node.setAttribute(${JSON.stringify(domName)}, \"\");`];\n }\n\n if (value.type === \"Literal\") {\n return [` _node.setAttribute(${JSON.stringify(domName)}, ${JSON.stringify(value.value)});`];\n }\n\n if (value.type === \"JSXExpressionContainer\") {\n return [\n ` _node.setAttribute(${JSON.stringify(domName)}, String(${readSource(code, readObject(value.expression))}));`,\n ];\n }\n\n return [];\n });\n}\n\nconst htmlAttributeAliases: Record<string, string> = {\n acceptCharset: \"accept-charset\",\n autoFocus: \"autofocus\",\n autoPlay: \"autoplay\",\n charSet: \"charset\",\n className: \"class\",\n colSpan: \"colspan\",\n contentEditable: \"contenteditable\",\n crossOrigin: \"crossorigin\",\n encType: \"enctype\",\n formAction: \"formaction\",\n frameBorder: \"frameborder\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n maxLength: \"maxlength\",\n minLength: \"minlength\",\n noValidate: \"novalidate\",\n playsInline: \"playsinline\",\n readOnly: \"readonly\",\n rowSpan: \"rowspan\",\n spellCheck: \"spellcheck\",\n srcDoc: \"srcdoc\",\n srcSet: \"srcset\",\n tabIndex: \"tabindex\",\n useMap: \"usemap\",\n};\n\nfunction lowerOxcDomChildren(code: string, children: readonly unknown[]): string[] {\n return children.flatMap((child, index): string[] => {\n const object = readObject(child);\n\n if (object.type === \"JSXText\") {\n const value =\n typeof object.value === \"string\"\n ? normalizeOxcJsxText(object.value, children, index)\n : \"\";\n return value === \"\" ? [] : [` _node.append(${JSON.stringify(value)});`];\n }\n\n if (object.type === \"JSXExpressionContainer\") {\n return [` _node.append(String(${readSource(code, readObject(object.expression))}));`];\n }\n\n if (object.type === \"JSXElement\") {\n const lowered = lowerOxcDomNodeExpression(code, object);\n return lowered === undefined ? [] : [` _node.append(${lowered});`];\n }\n\n return [];\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc-dom-lowering.js","sourceRoot":"","sources":["../src/oxc-dom-lowering.ts"],"names":[],"mappings":"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","sourcesContent":["import { readArray, readObject, readSource, unwrapOxcParentheses } from \"./oxc-node-utils.js\";\nimport { readOxcJsxTagName } from \"./oxc-jsx-attributes.js\";\nimport { normalizeOxcJsxText } from \"./oxc-jsx-text.js\";\n\nexport function lowerOxcDomNodeExpression(\n code: string,\n node: Record<string, unknown>,\n): string | undefined {\n const unwrapped = unwrapOxcParentheses(node);\n\n if (unwrapped.type === \"ConditionalExpression\") {\n const whenTrue = lowerOxcDomNodeExpression(code, readObject(unwrapped.consequent));\n const whenFalse = lowerOxcDomNodeExpression(code, readObject(unwrapped.alternate));\n\n if (whenTrue !== undefined && whenFalse !== undefined) {\n return `((${readSource(code, readObject(unwrapped.test))}) ? ${whenTrue} : ${whenFalse})`;\n }\n }\n\n if (unwrapped.type === \"LogicalExpression\") {\n const right = lowerOxcDomNodeExpression(code, readObject(unwrapped.right));\n\n if (right !== undefined && unwrapped.operator === \"&&\") {\n return `((${readSource(code, readObject(unwrapped.left))}) ? ${right} : false)`;\n }\n\n if (right !== undefined && unwrapped.operator === \"||\") {\n const left = readSource(code, readObject(unwrapped.left));\n return `((${left}) ? ${left} : ${right})`;\n }\n }\n\n if (unwrapped.type === \"ArrayExpression\") {\n return `[${readArray(unwrapped.elements).map((element) => {\n const object = readObject(element);\n return Object.keys(object).length === 0\n ? \"undefined\"\n : (lowerOxcDomNodeExpression(code, object) ?? readSource(code, object));\n }).join(\", \")}]`;\n }\n\n if (unwrapped.type === \"Literal\" && (unwrapped.value === null || unwrapped.value === false)) {\n return 'document.createTextNode(\"\")';\n }\n\n node = unwrapped;\n\n if (node.type !== \"JSXElement\") {\n return undefined;\n }\n\n const openingElement = readObject(node.openingElement);\n const tagName = readOxcJsxTagName(readObject(openingElement.name));\n\n if (!/^[a-z]/.test(tagName)) {\n return undefined;\n }\n\n return [\n \"(() => {\",\n ` const _node = document.createElement(${JSON.stringify(tagName)});`,\n ...lowerOxcDomAttributes(code, readArray(openingElement.attributes)),\n ...lowerOxcDomChildren(code, readArray(node.children)),\n \" return _node;\",\n \"})()\",\n ].join(\"\\n\");\n}\n\nfunction lowerOxcDomAttributes(code: string, attributes: readonly unknown[]): string[] {\n return attributes.flatMap((attribute): string[] => {\n const object = readObject(attribute);\n\n if (object.type !== \"JSXAttribute\") {\n return [];\n }\n\n const name = String(readObject(object.name).name);\n const domName = htmlAttributeAliases[name] ?? name;\n const value = readObject(object.value);\n\n if (Object.keys(value).length === 0) {\n return [` _node.setAttribute(${JSON.stringify(domName)}, \"\");`];\n }\n\n if (value.type === \"Literal\") {\n return [` _node.setAttribute(${JSON.stringify(domName)}, ${JSON.stringify(value.value)});`];\n }\n\n if (value.type === \"JSXExpressionContainer\") {\n return [\n ` _node.setAttribute(${JSON.stringify(domName)}, String(${readSource(code, readObject(value.expression))}));`,\n ];\n }\n\n return [];\n });\n}\n\nconst htmlAttributeAliases: Record<string, string> = {\n acceptCharset: \"accept-charset\",\n autoFocus: \"autofocus\",\n autoPlay: \"autoplay\",\n charSet: \"charset\",\n className: \"class\",\n colSpan: \"colspan\",\n contentEditable: \"contenteditable\",\n crossOrigin: \"crossorigin\",\n encType: \"enctype\",\n formAction: \"formaction\",\n frameBorder: \"frameborder\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n maxLength: \"maxlength\",\n minLength: \"minlength\",\n noValidate: \"novalidate\",\n playsInline: \"playsinline\",\n readOnly: \"readonly\",\n rowSpan: \"rowspan\",\n spellCheck: \"spellcheck\",\n srcDoc: \"srcdoc\",\n srcSet: \"srcset\",\n tabIndex: \"tabindex\",\n useMap: \"usemap\",\n};\n\nfunction lowerOxcDomChildren(code: string, children: readonly unknown[]): string[] {\n return children.flatMap((child, index): string[] => {\n const object = readObject(child);\n\n if (object.type === \"JSXText\") {\n const value =\n typeof object.value === \"string\"\n ? normalizeOxcJsxText(object.value, children, index)\n : \"\";\n return value === \"\" ? [] : [` _node.append(${JSON.stringify(value)});`];\n }\n\n if (object.type === \"JSXExpressionContainer\") {\n return [` _node.append(String(${readSource(code, readObject(object.expression))}));`];\n }\n\n if (object.type === \"JSXElement\") {\n const lowered = lowerOxcDomNodeExpression(code, object);\n return lowered === undefined ? [] : [` _node.append(${lowered});`];\n }\n\n return [];\n });\n}\n"]}
|
|
@@ -382,7 +382,13 @@ function isJsxLikeInitializer(node) {
|
|
|
382
382
|
if (node.type === "LogicalExpression") {
|
|
383
383
|
return (isJsxLikeInitializer(readObject(node.left)) || isJsxLikeInitializer(readObject(node.right)));
|
|
384
384
|
}
|
|
385
|
-
if (node.type === "ArrayExpression"
|
|
385
|
+
if (node.type === "ArrayExpression") {
|
|
386
|
+
return readArray(node.elements).some((element) => {
|
|
387
|
+
const object = readObject(element);
|
|
388
|
+
return Object.keys(object).length > 0 && isJsxLikeInitializer(object);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
if (node.type === "ObjectExpression") {
|
|
386
392
|
return false;
|
|
387
393
|
}
|
|
388
394
|
return containsOxcJsxSyntax(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-render-values.js","sourceRoot":"","sources":["../src/oxc-render-values.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsxNodeIr } from \"./ir.js\";\nimport { readArray, readObject, readSource, unwrapOxcParentheses } from \"./oxc-node-utils.js\";\n\ninterface ReactiveAliasReplacement {\n end: number;\n start: number;\n text: string;\n}\n\ninterface ReactiveAliasExpressionState {\n reactive: boolean;\n safe: boolean;\n}\n\nexport function collectOxcBodyJsxBindingNames(statements: readonly unknown[]): Set<string> {\n const names = new Set<string>();\n\n for (const statement of statements) {\n const object = readObject(statement);\n\n if (object.type === \"ForOfStatement\" || object.type === \"ForStatement\") {\n collectOxcPushJsxBindingNames(readArray(readObject(object.body).body), names);\n continue;\n }\n\n if (object.type !== \"VariableDeclaration\") {\n continue;\n }\n\n const declarationKind = typeof object.kind === \"string\" ? object.kind : \"let\";\n const isImmutableBinding = declarationKind === \"const\";\n\n for (const declarationValue of readArray(object.declarations)) {\n const declaration = readObject(declarationValue);\n const id = readObject(declaration.id);\n const initializer = unwrapOxcParentheses(readObject(declaration.init));\n\n if (typeof id.name !== \"string\") continue;\n if (!containsOxcJsxSyntax(initializer)) continue;\n if (!isJsxLikeInitializer(initializer)) continue;\n if (!isImmutableBinding && isBindingReassigned(statements, id.name)) {\n continue;\n }\n names.add(id.name);\n }\n }\n\n return names;\n}\n\nexport function collectOxcReactiveReadAliases(\n code: string,\n statements: readonly unknown[],\n reactiveDerivedFunctions: ReadonlySet<string> = new Set(),\n): Map<string, string> {\n const aliases = new Map<string, string>();\n\n for (const statement of statements) {\n const object = readObject(statement);\n\n if (object.type !== \"VariableDeclaration\" || object.kind !== \"const\") {\n continue;\n }\n\n for (const declarationValue of readArray(object.declarations)) {\n const declaration = readObject(declarationValue);\n const id = readObject(declaration.id);\n const initializer = unwrapOxcParentheses(readObject(declaration.init));\n\n if (typeof id.name !== \"string\") continue;\n if (\n !isOxcReactiveAliasExpression(initializer) &&\n !isOxcReactiveDerivedAliasExpression(initializer, reactiveDerivedFunctions)\n ) {\n continue;\n }\n\n aliases.set(id.name, readSource(code, initializer));\n }\n }\n\n return aliases;\n}\n\nexport function collectOxcReactiveDerivedFunctionNames(\n statements: readonly unknown[],\n): Set<string> {\n const names = new Set<string>();\n\n for (const statementValue of statements) {\n const statement = readObject(statementValue);\n\n if (statement.type === \"FunctionDeclaration\") {\n const id = readObject(statement.id);\n if (typeof id.name === \"string\" && isOxcReactiveDerivedFunction(statement)) {\n names.add(id.name);\n }\n continue;\n }\n\n if (statement.type !== \"VariableDeclaration\" || statement.kind !== \"const\") {\n continue;\n }\n\n for (const declarationValue of readArray(statement.declarations)) {\n const declaration = readObject(declarationValue);\n const id = readObject(declaration.id);\n const initializer = unwrapOxcParentheses(readObject(declaration.init));\n\n if (\n typeof id.name === \"string\" &&\n (initializer.type === \"FunctionExpression\" ||\n initializer.type === \"ArrowFunctionExpression\") &&\n isOxcReactiveDerivedFunction(initializer)\n ) {\n names.add(id.name);\n }\n }\n }\n\n return names;\n}\n\nexport function rewriteOxcReactiveAliasExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n aliases: ReadonlyMap<string, string> | undefined,\n): string | undefined {\n if (aliases === undefined || aliases.size === 0) {\n return undefined;\n }\n\n const expressionStart = readNumber(expression.start);\n const expressionEnd = readNumber(expression.end);\n\n if (expressionStart === undefined || expressionEnd === undefined) {\n return undefined;\n }\n\n const replacements: ReactiveAliasReplacement[] = [];\n collectOxcReactiveAliasReplacements(\n expression,\n undefined,\n undefined,\n aliases,\n new Set(),\n replacements,\n );\n\n if (replacements.length === 0) {\n return undefined;\n }\n\n let source = readSource(code, expression);\n\n for (const replacement of replacements.sort((left, right) => right.start - left.start)) {\n const start = replacement.start - expressionStart;\n const end = replacement.end - expressionStart;\n\n if (start < 0 || end > source.length || start > end) {\n return undefined;\n }\n\n source = `${source.slice(0, start)}${replacement.text}${source.slice(end)}`;\n }\n\n return source;\n}\n\nfunction collectOxcReactiveAliasReplacements(\n node: unknown,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n aliases: ReadonlyMap<string, string>,\n shadowed: ReadonlySet<string>,\n replacements: ReactiveAliasReplacement[],\n): void {\n const object = readObject(node);\n\n if (typeof object.type !== \"string\") {\n return;\n }\n\n if (object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (\n object.type === \"Identifier\" &&\n typeof object.name === \"string\" &&\n !shadowed.has(object.name) &&\n isOxcReactiveAliasReference(object, parent, parentKey)\n ) {\n const replacement = aliases.get(object.name);\n const start = readNumber(object.start);\n const end = readNumber(object.end);\n\n if (replacement !== undefined && start !== undefined && end !== undefined) {\n replacements.push({\n end,\n start,\n text: isOxcShorthandPropertyValue(object, parent)\n ? `${object.name}: (${replacement})`\n : `(${replacement})`,\n });\n }\n return;\n }\n\n if (isOxcFunctionNode(object)) {\n const functionShadowed = new Set(shadowed);\n collectOxcBindingNames(object.id, functionShadowed);\n for (const parameter of readArray(object.params)) {\n collectOxcBindingNames(parameter, functionShadowed);\n }\n collectOxcReactiveAliasReplacements(\n object.body,\n object,\n \"body\",\n aliases,\n addOxcBlockBindingNames(object.body, functionShadowed),\n replacements,\n );\n return;\n }\n\n const childShadowed =\n object.type === \"BlockStatement\" || object.type === \"Program\"\n ? addOxcBlockBindingNames(object, new Set(shadowed))\n : shadowed;\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 if (key === \"id\" && isOxcDeclarationWithId(object)) {\n continue;\n }\n\n if (key === \"params\" && isOxcFunctionNode(object)) {\n continue;\n }\n\n if (key === \"key\" && isOxcNonComputedKey(object)) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectOxcReactiveAliasReplacements(\n item,\n object,\n key,\n aliases,\n childShadowed,\n replacements,\n );\n }\n continue;\n }\n\n if (typeof value === \"object\" && value !== null) {\n collectOxcReactiveAliasReplacements(value, object, key, aliases, childShadowed, replacements);\n }\n }\n}\n\nfunction isOxcReactiveAliasReference(\n node: Record<string, unknown>,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): boolean {\n if (parent === undefined) {\n return true;\n }\n\n if (parent.type === \"MemberExpression\" && parentKey === \"property\" && parent.computed !== true) {\n return false;\n }\n\n if (parentKey === \"id\" && isOxcDeclarationWithId(parent)) {\n return false;\n }\n\n if (parentKey === \"params\" && isOxcFunctionNode(parent)) {\n return false;\n }\n\n if (parentKey === \"key\" && isOxcNonComputedKey(parent)) {\n return isOxcShorthandPropertyValue(node, parent);\n }\n\n if (\n (parent.type === \"BreakStatement\" ||\n parent.type === \"ContinueStatement\" ||\n parent.type === \"LabeledStatement\") &&\n parentKey === \"label\"\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction isOxcShorthandPropertyValue(\n node: Record<string, unknown>,\n parent: Record<string, unknown> | undefined,\n): boolean {\n const key = readObject(parent?.key);\n return (\n parent !== undefined &&\n (parent.type === \"Property\" || parent.type === \"ObjectProperty\") &&\n parent.shorthand === true &&\n parent.value === node &&\n readNumber(key.start) === readNumber(node.start) &&\n readNumber(key.end) === readNumber(node.end)\n );\n}\n\nfunction isOxcNonComputedKey(node: Record<string, unknown>): boolean {\n return (\n (node.type === \"Property\" ||\n node.type === \"ObjectProperty\" ||\n node.type === \"PropertyDefinition\" ||\n node.type === \"MethodDefinition\") &&\n node.computed !== true\n );\n}\n\nfunction isOxcDeclarationWithId(node: Record<string, unknown>): boolean {\n return (\n node.type === \"VariableDeclarator\" ||\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ClassDeclaration\" ||\n node.type === \"ClassExpression\"\n );\n}\n\nfunction isOxcFunctionNode(node: Record<string, unknown>): boolean {\n return (\n node.type === \"ArrowFunctionExpression\" ||\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\"\n );\n}\n\nfunction addOxcBlockBindingNames(node: unknown, shadowed: Set<string>): ReadonlySet<string> {\n const object = readObject(node);\n const body = readArray(object.body);\n\n if (body.length === 0) {\n return shadowed;\n }\n\n for (const statement of body) {\n collectOxcStatementBindingNames(statement, shadowed);\n }\n\n return shadowed;\n}\n\nfunction collectOxcStatementBindingNames(node: unknown, names: Set<string>): void {\n const object = readObject(node);\n\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectOxcBindingNames(readObject(declaration).id, names);\n }\n return;\n }\n\n if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectOxcBindingNames(object.id, names);\n }\n}\n\nfunction collectOxcBindingNames(node: unknown, names: Set<string>): void {\n const object = readObject(node);\n\n if (object.type === \"Identifier\" && typeof object.name === \"string\") {\n names.add(object.name);\n return;\n }\n\n if (object.type === \"RestElement\") {\n collectOxcBindingNames(object.argument, names);\n return;\n }\n\n if (object.type === \"AssignmentPattern\") {\n collectOxcBindingNames(object.left, names);\n return;\n }\n\n if (object.type === \"ArrayPattern\") {\n for (const element of readArray(object.elements)) {\n collectOxcBindingNames(element, names);\n }\n return;\n }\n\n if (object.type === \"ObjectPattern\") {\n for (const property of readArray(object.properties)) {\n collectOxcBindingNames(readObject(property).value ?? readObject(property).argument, names);\n }\n }\n}\n\nfunction collectOxcFunctionLocalBindings(\n functionNode: Record<string, unknown>,\n names: Set<string>,\n): void {\n collectOxcBindingNames(functionNode.id, names);\n\n for (const parameter of readArray(functionNode.params)) {\n collectOxcBindingNames(parameter, names);\n }\n\n collectOxcLocalBindingsFromNode(readObject(functionNode.body), names);\n}\n\nfunction collectOxcLocalBindingsFromNode(node: unknown, names: Set<string>): void {\n const object = readObject(node);\n\n if (typeof object.type !== \"string\" || object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectOxcBindingNames(readObject(declaration).id, names);\n }\n } else if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectOxcBindingNames(object.id, names);\n return;\n } else if (object.type === \"ForOfStatement\" || object.type === \"ForInStatement\") {\n const left = readObject(object.left);\n const declarations = readArray(left.declarations);\n collectOxcBindingNames(\n declarations.length > 0 ? readObject(declarations[0]).id : object.left,\n names,\n );\n } else if (object.type === \"ForStatement\") {\n collectOxcLocalBindingsFromNode(object.init, names);\n } else if (isOxcFunctionNode(object)) {\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 if (Array.isArray(value)) {\n for (const item of value) {\n collectOxcLocalBindingsFromNode(item, names);\n }\n continue;\n }\n\n if (typeof value === \"object\" && value !== null) {\n collectOxcLocalBindingsFromNode(value, names);\n }\n }\n}\n\nfunction readNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nexport function markOxcRenderValueExpressions(\n nodes: readonly JsxNodeIr[],\n names: Set<string>,\n renderMode: \"dynamic\" | \"html\" = \"dynamic\",\n): void {\n if (names.size === 0) {\n return;\n }\n\n for (const node of nodes) {\n if (node.kind === \"expr\" && names.has(node.code)) {\n node.renderMode = renderMode;\n continue;\n }\n\n if (node.kind === \"conditional\") {\n markOxcRenderValueExpressions(node.whenTrue, names, renderMode);\n markOxcRenderValueExpressions(node.whenFalse, names, renderMode);\n continue;\n }\n\n if (node.kind === \"list\") {\n markOxcRenderValueExpressions(node.children, names, renderMode);\n continue;\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\" || node.kind === \"component\") {\n markOxcRenderValueExpressions(node.children, names, renderMode);\n }\n }\n}\n\nexport function isOxcRenderValueExpression(expression: Record<string, unknown>): boolean {\n if (isOxcRendererCallExpression(expression)) {\n return true;\n }\n\n if (expression.type !== \"MemberExpression\") {\n return false;\n }\n\n const object = readObject(expression.object);\n const property = readObject(expression.property);\n\n return (\n object.type === \"Identifier\" &&\n object.name === \"props\" &&\n typeof property.name === \"string\" &&\n [\"children\", \"fallback\", \"header\", \"sidebar\", \"element\"].includes(property.name)\n );\n}\n\nfunction isOxcRendererCallExpression(expression: Record<string, unknown>): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(expression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n /^render[A-Z0-9_$]/.test(callee.name)\n );\n}\n\nexport function containsOxcJsxSyntax(node: Record<string, unknown>): boolean {\n if (node.type === \"JSXElement\" || node.type === \"JSXFragment\") {\n return true;\n }\n\n return Object.values(node).some((value) =>\n Array.isArray(value)\n ? value.some((item) => containsOxcJsxSyntax(readObject(item)))\n : typeof value === \"object\" && value !== null && containsOxcJsxSyntax(readObject(value)),\n );\n}\n\nfunction isJsxLikeInitializer(node: Record<string, unknown>): boolean {\n if (node.type === \"JSXElement\" || node.type === \"JSXFragment\") return true;\n if (node.type === \"ConditionalExpression\") {\n return (\n isJsxLikeInitializer(readObject(node.consequent)) ||\n isJsxLikeInitializer(readObject(node.alternate))\n );\n }\n if (node.type === \"LogicalExpression\") {\n return (\n isJsxLikeInitializer(readObject(node.left)) || isJsxLikeInitializer(readObject(node.right))\n );\n }\n if (node.type === \"ArrayExpression\" || node.type === \"ObjectExpression\") {\n return false;\n }\n return containsOxcJsxSyntax(node);\n}\n\nfunction isBindingReassigned(statements: readonly unknown[], name: string): boolean {\n for (const statement of statements) {\n if (containsAssignmentTo(readObject(statement), name)) return true;\n }\n return false;\n}\n\nfunction isOxcReactiveReadExpression(expression: Record<string, unknown>): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(expression.callee);\n\n if (callee.type !== \"MemberExpression\" || callee.computed === true || callee.optional === true) {\n return false;\n }\n\n const property = readObject(callee.property);\n\n return property.type === \"Identifier\" && property.name === \"get\";\n}\n\nfunction isOxcReactiveAliasExpression(expression: Record<string, unknown>): boolean {\n const state = analyzeOxcReactiveAliasExpression(expression);\n return state.safe && state.reactive;\n}\n\nfunction isOxcReactiveDerivedAliasExpression(\n expression: Record<string, unknown>,\n reactiveDerivedFunctions: ReadonlySet<string>,\n): boolean {\n if (reactiveDerivedFunctions.size === 0) {\n return false;\n }\n\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return false;\n }\n\n if (readArray(unwrappedExpression.arguments).length !== 0) {\n return false;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n reactiveDerivedFunctions.has(callee.name)\n );\n}\n\nfunction isOxcReactiveDerivedFunction(functionNode: Record<string, unknown>): boolean {\n if (readArray(functionNode.params).length !== 0) {\n return false;\n }\n\n const localBindings = new Set<string>();\n collectOxcFunctionLocalBindings(functionNode, localBindings);\n const usage = analyzeOxcReactiveDerivedFunctionUsage(\n readObject(functionNode.body),\n localBindings,\n );\n\n return usage.reactive && usage.safe;\n}\n\nfunction analyzeOxcReactiveDerivedFunctionUsage(\n node: unknown,\n localBindings: ReadonlySet<string>,\n): ReactiveAliasExpressionState {\n const object = readObject(node);\n\n if (typeof object.type !== \"string\" || object.type.startsWith(\"TS\")) {\n return { reactive: false, safe: true };\n }\n\n if (isOxcFunctionNode(object)) {\n return { reactive: false, safe: true };\n }\n\n if (object.type === \"CallExpression\") {\n const callee = readObject(object.callee);\n const member = callee.type === \"MemberExpression\" ? callee : undefined;\n const property = readObject(member?.property);\n const owner = readObject(member?.object);\n const propertyName =\n member?.computed === true\n ? undefined\n : typeof property.name === \"string\"\n ? property.name\n : undefined;\n const ownerName = owner.type === \"Identifier\" ? owner.name : undefined;\n\n if (propertyName === \"get\" && typeof ownerName === \"string\" && !localBindings.has(ownerName)) {\n return mergeReactiveAliasStates([\n { reactive: true, safe: true },\n ...readArray(object.arguments).map((argument) =>\n analyzeOxcReactiveDerivedFunctionUsage(argument, localBindings),\n ),\n ]);\n }\n\n if (\n propertyName !== undefined &&\n typeof ownerName === \"string\" &&\n !localBindings.has(ownerName) &&\n isLikelyMutatingMethodName(propertyName)\n ) {\n return { reactive: false, safe: false };\n }\n }\n\n const states: ReactiveAliasExpressionState[] = [];\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 if (Array.isArray(value)) {\n states.push(\n ...value.map((item) => analyzeOxcReactiveDerivedFunctionUsage(item, localBindings)),\n );\n continue;\n }\n\n if (typeof value === \"object\" && value !== null) {\n states.push(analyzeOxcReactiveDerivedFunctionUsage(value, localBindings));\n }\n }\n\n return mergeReactiveAliasStates(states);\n}\n\nfunction mergeReactiveAliasStates(\n states: readonly ReactiveAliasExpressionState[],\n): ReactiveAliasExpressionState {\n return states.reduce<ReactiveAliasExpressionState>(\n (merged, state) => ({\n reactive: merged.reactive || state.reactive,\n safe: merged.safe && state.safe,\n }),\n { reactive: false, safe: true },\n );\n}\n\nfunction isLikelyMutatingMethodName(name: string): boolean {\n return (\n name === \"set\" ||\n name === \"delete\" ||\n name === \"clear\" ||\n name === \"push\" ||\n name === \"pop\" ||\n name === \"shift\" ||\n name === \"unshift\" ||\n name === \"splice\" ||\n name === \"sort\" ||\n name === \"reverse\"\n );\n}\n\nfunction analyzeOxcReactiveAliasExpression(\n expression: Record<string, unknown>,\n): ReactiveAliasExpressionState {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (\n unwrappedExpression.type === \"Literal\" ||\n unwrappedExpression.type === \"Identifier\" ||\n unwrappedExpression.type === \"ThisExpression\"\n ) {\n return { reactive: false, safe: true };\n }\n\n if (isOxcReactiveReadExpression(unwrappedExpression)) {\n return { reactive: true, safe: true };\n }\n\n if (unwrappedExpression.type === \"ChainExpression\") {\n return analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.expression));\n }\n\n if (\n unwrappedExpression.type === \"TSAsExpression\" ||\n unwrappedExpression.type === \"TSSatisfiesExpression\" ||\n unwrappedExpression.type === \"TSNonNullExpression\" ||\n unwrappedExpression.type === \"TSInstantiationExpression\" ||\n unwrappedExpression.type === \"TypeCastExpression\"\n ) {\n return analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.expression));\n }\n\n if (unwrappedExpression.type === \"MemberExpression\") {\n const objectState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.object));\n const propertyState =\n unwrappedExpression.computed === true\n ? analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.property))\n : { reactive: false, safe: true };\n\n return {\n reactive: objectState.reactive || propertyState.reactive,\n safe: objectState.safe && propertyState.safe,\n };\n }\n\n if (unwrappedExpression.type === \"UnaryExpression\") {\n return analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.argument));\n }\n\n if (\n unwrappedExpression.type === \"BinaryExpression\" ||\n unwrappedExpression.type === \"LogicalExpression\"\n ) {\n const leftState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.left));\n const rightState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.right));\n\n return {\n reactive: leftState.reactive || rightState.reactive,\n safe: leftState.safe && rightState.safe,\n };\n }\n\n if (unwrappedExpression.type === \"ConditionalExpression\") {\n const testState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.test));\n const consequentState = analyzeOxcReactiveAliasExpression(\n readObject(unwrappedExpression.consequent),\n );\n const alternateState = analyzeOxcReactiveAliasExpression(\n readObject(unwrappedExpression.alternate),\n );\n\n return {\n reactive: testState.reactive || consequentState.reactive || alternateState.reactive,\n safe: testState.safe && consequentState.safe && alternateState.safe,\n };\n }\n\n return { reactive: false, safe: false };\n}\n\nfunction containsAssignmentTo(node: Record<string, unknown>, name: string): boolean {\n if (node.type === \"AssignmentExpression\") {\n const left = readObject(node.left);\n if (left.type === \"Identifier\" && left.name === name) return true;\n }\n if (node.type === \"UpdateExpression\") {\n const argument = readObject(node.argument);\n if (argument.type === \"Identifier\" && argument.name === name) return true;\n }\n for (const value of Object.values(node)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n if (\n typeof item === \"object\" &&\n item !== null &&\n containsAssignmentTo(readObject(item), name)\n ) {\n return true;\n }\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (containsAssignmentTo(readObject(value), name)) return true;\n }\n }\n return false;\n}\n\nfunction collectOxcPushJsxBindingNames(statements: readonly unknown[], names: Set<string>): void {\n for (const statement of statements) {\n const object = readObject(statement);\n\n if (object.type === \"ForOfStatement\" || object.type === \"ForStatement\") {\n collectOxcPushJsxBindingNames(readArray(readObject(object.body).body), names);\n continue;\n }\n\n const expression = readObject(object.expression);\n\n if (object.type !== \"ExpressionStatement\" || expression.type !== \"CallExpression\") {\n continue;\n }\n\n const callee = readObject(expression.callee);\n const argument = unwrapOxcParentheses(readObject(readArray(expression.arguments)[0]));\n\n if (\n callee.type !== \"MemberExpression\" ||\n readObject(callee.property).name !== \"push\" ||\n !containsOxcJsxSyntax(argument)\n ) {\n continue;\n }\n\n const target = readObject(callee.object);\n\n if (typeof target.name === \"string\") {\n names.add(target.name);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc-render-values.js","sourceRoot":"","sources":["../src/oxc-render-values.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsxNodeIr } from \"./ir.js\";\nimport { readArray, readObject, readSource, unwrapOxcParentheses } from \"./oxc-node-utils.js\";\n\ninterface ReactiveAliasReplacement {\n end: number;\n start: number;\n text: string;\n}\n\ninterface ReactiveAliasExpressionState {\n reactive: boolean;\n safe: boolean;\n}\n\nexport function collectOxcBodyJsxBindingNames(statements: readonly unknown[]): Set<string> {\n const names = new Set<string>();\n\n for (const statement of statements) {\n const object = readObject(statement);\n\n if (object.type === \"ForOfStatement\" || object.type === \"ForStatement\") {\n collectOxcPushJsxBindingNames(readArray(readObject(object.body).body), names);\n continue;\n }\n\n if (object.type !== \"VariableDeclaration\") {\n continue;\n }\n\n const declarationKind = typeof object.kind === \"string\" ? object.kind : \"let\";\n const isImmutableBinding = declarationKind === \"const\";\n\n for (const declarationValue of readArray(object.declarations)) {\n const declaration = readObject(declarationValue);\n const id = readObject(declaration.id);\n const initializer = unwrapOxcParentheses(readObject(declaration.init));\n\n if (typeof id.name !== \"string\") continue;\n if (!containsOxcJsxSyntax(initializer)) continue;\n if (!isJsxLikeInitializer(initializer)) continue;\n if (!isImmutableBinding && isBindingReassigned(statements, id.name)) {\n continue;\n }\n names.add(id.name);\n }\n }\n\n return names;\n}\n\nexport function collectOxcReactiveReadAliases(\n code: string,\n statements: readonly unknown[],\n reactiveDerivedFunctions: ReadonlySet<string> = new Set(),\n): Map<string, string> {\n const aliases = new Map<string, string>();\n\n for (const statement of statements) {\n const object = readObject(statement);\n\n if (object.type !== \"VariableDeclaration\" || object.kind !== \"const\") {\n continue;\n }\n\n for (const declarationValue of readArray(object.declarations)) {\n const declaration = readObject(declarationValue);\n const id = readObject(declaration.id);\n const initializer = unwrapOxcParentheses(readObject(declaration.init));\n\n if (typeof id.name !== \"string\") continue;\n if (\n !isOxcReactiveAliasExpression(initializer) &&\n !isOxcReactiveDerivedAliasExpression(initializer, reactiveDerivedFunctions)\n ) {\n continue;\n }\n\n aliases.set(id.name, readSource(code, initializer));\n }\n }\n\n return aliases;\n}\n\nexport function collectOxcReactiveDerivedFunctionNames(\n statements: readonly unknown[],\n): Set<string> {\n const names = new Set<string>();\n\n for (const statementValue of statements) {\n const statement = readObject(statementValue);\n\n if (statement.type === \"FunctionDeclaration\") {\n const id = readObject(statement.id);\n if (typeof id.name === \"string\" && isOxcReactiveDerivedFunction(statement)) {\n names.add(id.name);\n }\n continue;\n }\n\n if (statement.type !== \"VariableDeclaration\" || statement.kind !== \"const\") {\n continue;\n }\n\n for (const declarationValue of readArray(statement.declarations)) {\n const declaration = readObject(declarationValue);\n const id = readObject(declaration.id);\n const initializer = unwrapOxcParentheses(readObject(declaration.init));\n\n if (\n typeof id.name === \"string\" &&\n (initializer.type === \"FunctionExpression\" ||\n initializer.type === \"ArrowFunctionExpression\") &&\n isOxcReactiveDerivedFunction(initializer)\n ) {\n names.add(id.name);\n }\n }\n }\n\n return names;\n}\n\nexport function rewriteOxcReactiveAliasExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n aliases: ReadonlyMap<string, string> | undefined,\n): string | undefined {\n if (aliases === undefined || aliases.size === 0) {\n return undefined;\n }\n\n const expressionStart = readNumber(expression.start);\n const expressionEnd = readNumber(expression.end);\n\n if (expressionStart === undefined || expressionEnd === undefined) {\n return undefined;\n }\n\n const replacements: ReactiveAliasReplacement[] = [];\n collectOxcReactiveAliasReplacements(\n expression,\n undefined,\n undefined,\n aliases,\n new Set(),\n replacements,\n );\n\n if (replacements.length === 0) {\n return undefined;\n }\n\n let source = readSource(code, expression);\n\n for (const replacement of replacements.sort((left, right) => right.start - left.start)) {\n const start = replacement.start - expressionStart;\n const end = replacement.end - expressionStart;\n\n if (start < 0 || end > source.length || start > end) {\n return undefined;\n }\n\n source = `${source.slice(0, start)}${replacement.text}${source.slice(end)}`;\n }\n\n return source;\n}\n\nfunction collectOxcReactiveAliasReplacements(\n node: unknown,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n aliases: ReadonlyMap<string, string>,\n shadowed: ReadonlySet<string>,\n replacements: ReactiveAliasReplacement[],\n): void {\n const object = readObject(node);\n\n if (typeof object.type !== \"string\") {\n return;\n }\n\n if (object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (\n object.type === \"Identifier\" &&\n typeof object.name === \"string\" &&\n !shadowed.has(object.name) &&\n isOxcReactiveAliasReference(object, parent, parentKey)\n ) {\n const replacement = aliases.get(object.name);\n const start = readNumber(object.start);\n const end = readNumber(object.end);\n\n if (replacement !== undefined && start !== undefined && end !== undefined) {\n replacements.push({\n end,\n start,\n text: isOxcShorthandPropertyValue(object, parent)\n ? `${object.name}: (${replacement})`\n : `(${replacement})`,\n });\n }\n return;\n }\n\n if (isOxcFunctionNode(object)) {\n const functionShadowed = new Set(shadowed);\n collectOxcBindingNames(object.id, functionShadowed);\n for (const parameter of readArray(object.params)) {\n collectOxcBindingNames(parameter, functionShadowed);\n }\n collectOxcReactiveAliasReplacements(\n object.body,\n object,\n \"body\",\n aliases,\n addOxcBlockBindingNames(object.body, functionShadowed),\n replacements,\n );\n return;\n }\n\n const childShadowed =\n object.type === \"BlockStatement\" || object.type === \"Program\"\n ? addOxcBlockBindingNames(object, new Set(shadowed))\n : shadowed;\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 if (key === \"id\" && isOxcDeclarationWithId(object)) {\n continue;\n }\n\n if (key === \"params\" && isOxcFunctionNode(object)) {\n continue;\n }\n\n if (key === \"key\" && isOxcNonComputedKey(object)) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectOxcReactiveAliasReplacements(\n item,\n object,\n key,\n aliases,\n childShadowed,\n replacements,\n );\n }\n continue;\n }\n\n if (typeof value === \"object\" && value !== null) {\n collectOxcReactiveAliasReplacements(value, object, key, aliases, childShadowed, replacements);\n }\n }\n}\n\nfunction isOxcReactiveAliasReference(\n node: Record<string, unknown>,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): boolean {\n if (parent === undefined) {\n return true;\n }\n\n if (parent.type === \"MemberExpression\" && parentKey === \"property\" && parent.computed !== true) {\n return false;\n }\n\n if (parentKey === \"id\" && isOxcDeclarationWithId(parent)) {\n return false;\n }\n\n if (parentKey === \"params\" && isOxcFunctionNode(parent)) {\n return false;\n }\n\n if (parentKey === \"key\" && isOxcNonComputedKey(parent)) {\n return isOxcShorthandPropertyValue(node, parent);\n }\n\n if (\n (parent.type === \"BreakStatement\" ||\n parent.type === \"ContinueStatement\" ||\n parent.type === \"LabeledStatement\") &&\n parentKey === \"label\"\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction isOxcShorthandPropertyValue(\n node: Record<string, unknown>,\n parent: Record<string, unknown> | undefined,\n): boolean {\n const key = readObject(parent?.key);\n return (\n parent !== undefined &&\n (parent.type === \"Property\" || parent.type === \"ObjectProperty\") &&\n parent.shorthand === true &&\n parent.value === node &&\n readNumber(key.start) === readNumber(node.start) &&\n readNumber(key.end) === readNumber(node.end)\n );\n}\n\nfunction isOxcNonComputedKey(node: Record<string, unknown>): boolean {\n return (\n (node.type === \"Property\" ||\n node.type === \"ObjectProperty\" ||\n node.type === \"PropertyDefinition\" ||\n node.type === \"MethodDefinition\") &&\n node.computed !== true\n );\n}\n\nfunction isOxcDeclarationWithId(node: Record<string, unknown>): boolean {\n return (\n node.type === \"VariableDeclarator\" ||\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ClassDeclaration\" ||\n node.type === \"ClassExpression\"\n );\n}\n\nfunction isOxcFunctionNode(node: Record<string, unknown>): boolean {\n return (\n node.type === \"ArrowFunctionExpression\" ||\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\"\n );\n}\n\nfunction addOxcBlockBindingNames(node: unknown, shadowed: Set<string>): ReadonlySet<string> {\n const object = readObject(node);\n const body = readArray(object.body);\n\n if (body.length === 0) {\n return shadowed;\n }\n\n for (const statement of body) {\n collectOxcStatementBindingNames(statement, shadowed);\n }\n\n return shadowed;\n}\n\nfunction collectOxcStatementBindingNames(node: unknown, names: Set<string>): void {\n const object = readObject(node);\n\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectOxcBindingNames(readObject(declaration).id, names);\n }\n return;\n }\n\n if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectOxcBindingNames(object.id, names);\n }\n}\n\nfunction collectOxcBindingNames(node: unknown, names: Set<string>): void {\n const object = readObject(node);\n\n if (object.type === \"Identifier\" && typeof object.name === \"string\") {\n names.add(object.name);\n return;\n }\n\n if (object.type === \"RestElement\") {\n collectOxcBindingNames(object.argument, names);\n return;\n }\n\n if (object.type === \"AssignmentPattern\") {\n collectOxcBindingNames(object.left, names);\n return;\n }\n\n if (object.type === \"ArrayPattern\") {\n for (const element of readArray(object.elements)) {\n collectOxcBindingNames(element, names);\n }\n return;\n }\n\n if (object.type === \"ObjectPattern\") {\n for (const property of readArray(object.properties)) {\n collectOxcBindingNames(readObject(property).value ?? readObject(property).argument, names);\n }\n }\n}\n\nfunction collectOxcFunctionLocalBindings(\n functionNode: Record<string, unknown>,\n names: Set<string>,\n): void {\n collectOxcBindingNames(functionNode.id, names);\n\n for (const parameter of readArray(functionNode.params)) {\n collectOxcBindingNames(parameter, names);\n }\n\n collectOxcLocalBindingsFromNode(readObject(functionNode.body), names);\n}\n\nfunction collectOxcLocalBindingsFromNode(node: unknown, names: Set<string>): void {\n const object = readObject(node);\n\n if (typeof object.type !== \"string\" || object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectOxcBindingNames(readObject(declaration).id, names);\n }\n } else if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectOxcBindingNames(object.id, names);\n return;\n } else if (object.type === \"ForOfStatement\" || object.type === \"ForInStatement\") {\n const left = readObject(object.left);\n const declarations = readArray(left.declarations);\n collectOxcBindingNames(\n declarations.length > 0 ? readObject(declarations[0]).id : object.left,\n names,\n );\n } else if (object.type === \"ForStatement\") {\n collectOxcLocalBindingsFromNode(object.init, names);\n } else if (isOxcFunctionNode(object)) {\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 if (Array.isArray(value)) {\n for (const item of value) {\n collectOxcLocalBindingsFromNode(item, names);\n }\n continue;\n }\n\n if (typeof value === \"object\" && value !== null) {\n collectOxcLocalBindingsFromNode(value, names);\n }\n }\n}\n\nfunction readNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nexport function markOxcRenderValueExpressions(\n nodes: readonly JsxNodeIr[],\n names: Set<string>,\n renderMode: \"dynamic\" | \"html\" = \"dynamic\",\n): void {\n if (names.size === 0) {\n return;\n }\n\n for (const node of nodes) {\n if (node.kind === \"expr\" && names.has(node.code)) {\n node.renderMode = renderMode;\n continue;\n }\n\n if (node.kind === \"conditional\") {\n markOxcRenderValueExpressions(node.whenTrue, names, renderMode);\n markOxcRenderValueExpressions(node.whenFalse, names, renderMode);\n continue;\n }\n\n if (node.kind === \"list\") {\n markOxcRenderValueExpressions(node.children, names, renderMode);\n continue;\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\" || node.kind === \"component\") {\n markOxcRenderValueExpressions(node.children, names, renderMode);\n }\n }\n}\n\nexport function isOxcRenderValueExpression(expression: Record<string, unknown>): boolean {\n if (isOxcRendererCallExpression(expression)) {\n return true;\n }\n\n if (expression.type !== \"MemberExpression\") {\n return false;\n }\n\n const object = readObject(expression.object);\n const property = readObject(expression.property);\n\n return (\n object.type === \"Identifier\" &&\n object.name === \"props\" &&\n typeof property.name === \"string\" &&\n [\"children\", \"fallback\", \"header\", \"sidebar\", \"element\"].includes(property.name)\n );\n}\n\nfunction isOxcRendererCallExpression(expression: Record<string, unknown>): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(expression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n /^render[A-Z0-9_$]/.test(callee.name)\n );\n}\n\nexport function containsOxcJsxSyntax(node: Record<string, unknown>): boolean {\n if (node.type === \"JSXElement\" || node.type === \"JSXFragment\") {\n return true;\n }\n\n return Object.values(node).some((value) =>\n Array.isArray(value)\n ? value.some((item) => containsOxcJsxSyntax(readObject(item)))\n : typeof value === \"object\" && value !== null && containsOxcJsxSyntax(readObject(value)),\n );\n}\n\nfunction isJsxLikeInitializer(node: Record<string, unknown>): boolean {\n if (node.type === \"JSXElement\" || node.type === \"JSXFragment\") return true;\n if (node.type === \"ConditionalExpression\") {\n return (\n isJsxLikeInitializer(readObject(node.consequent)) ||\n isJsxLikeInitializer(readObject(node.alternate))\n );\n }\n if (node.type === \"LogicalExpression\") {\n return (\n isJsxLikeInitializer(readObject(node.left)) || isJsxLikeInitializer(readObject(node.right))\n );\n }\n if (node.type === \"ArrayExpression\") {\n return readArray(node.elements).some((element) => {\n const object = readObject(element);\n return Object.keys(object).length > 0 && isJsxLikeInitializer(object);\n });\n }\n if (node.type === \"ObjectExpression\") {\n return false;\n }\n return containsOxcJsxSyntax(node);\n}\n\nfunction isBindingReassigned(statements: readonly unknown[], name: string): boolean {\n for (const statement of statements) {\n if (containsAssignmentTo(readObject(statement), name)) return true;\n }\n return false;\n}\n\nfunction isOxcReactiveReadExpression(expression: Record<string, unknown>): boolean {\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = readObject(expression.callee);\n\n if (callee.type !== \"MemberExpression\" || callee.computed === true || callee.optional === true) {\n return false;\n }\n\n const property = readObject(callee.property);\n\n return property.type === \"Identifier\" && property.name === \"get\";\n}\n\nfunction isOxcReactiveAliasExpression(expression: Record<string, unknown>): boolean {\n const state = analyzeOxcReactiveAliasExpression(expression);\n return state.safe && state.reactive;\n}\n\nfunction isOxcReactiveDerivedAliasExpression(\n expression: Record<string, unknown>,\n reactiveDerivedFunctions: ReadonlySet<string>,\n): boolean {\n if (reactiveDerivedFunctions.size === 0) {\n return false;\n }\n\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (unwrappedExpression.type !== \"CallExpression\") {\n return false;\n }\n\n if (readArray(unwrappedExpression.arguments).length !== 0) {\n return false;\n }\n\n const callee = readObject(unwrappedExpression.callee);\n\n return (\n callee.type === \"Identifier\" &&\n typeof callee.name === \"string\" &&\n reactiveDerivedFunctions.has(callee.name)\n );\n}\n\nfunction isOxcReactiveDerivedFunction(functionNode: Record<string, unknown>): boolean {\n if (readArray(functionNode.params).length !== 0) {\n return false;\n }\n\n const localBindings = new Set<string>();\n collectOxcFunctionLocalBindings(functionNode, localBindings);\n const usage = analyzeOxcReactiveDerivedFunctionUsage(\n readObject(functionNode.body),\n localBindings,\n );\n\n return usage.reactive && usage.safe;\n}\n\nfunction analyzeOxcReactiveDerivedFunctionUsage(\n node: unknown,\n localBindings: ReadonlySet<string>,\n): ReactiveAliasExpressionState {\n const object = readObject(node);\n\n if (typeof object.type !== \"string\" || object.type.startsWith(\"TS\")) {\n return { reactive: false, safe: true };\n }\n\n if (isOxcFunctionNode(object)) {\n return { reactive: false, safe: true };\n }\n\n if (object.type === \"CallExpression\") {\n const callee = readObject(object.callee);\n const member = callee.type === \"MemberExpression\" ? callee : undefined;\n const property = readObject(member?.property);\n const owner = readObject(member?.object);\n const propertyName =\n member?.computed === true\n ? undefined\n : typeof property.name === \"string\"\n ? property.name\n : undefined;\n const ownerName = owner.type === \"Identifier\" ? owner.name : undefined;\n\n if (propertyName === \"get\" && typeof ownerName === \"string\" && !localBindings.has(ownerName)) {\n return mergeReactiveAliasStates([\n { reactive: true, safe: true },\n ...readArray(object.arguments).map((argument) =>\n analyzeOxcReactiveDerivedFunctionUsage(argument, localBindings),\n ),\n ]);\n }\n\n if (\n propertyName !== undefined &&\n typeof ownerName === \"string\" &&\n !localBindings.has(ownerName) &&\n isLikelyMutatingMethodName(propertyName)\n ) {\n return { reactive: false, safe: false };\n }\n }\n\n const states: ReactiveAliasExpressionState[] = [];\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 if (Array.isArray(value)) {\n states.push(\n ...value.map((item) => analyzeOxcReactiveDerivedFunctionUsage(item, localBindings)),\n );\n continue;\n }\n\n if (typeof value === \"object\" && value !== null) {\n states.push(analyzeOxcReactiveDerivedFunctionUsage(value, localBindings));\n }\n }\n\n return mergeReactiveAliasStates(states);\n}\n\nfunction mergeReactiveAliasStates(\n states: readonly ReactiveAliasExpressionState[],\n): ReactiveAliasExpressionState {\n return states.reduce<ReactiveAliasExpressionState>(\n (merged, state) => ({\n reactive: merged.reactive || state.reactive,\n safe: merged.safe && state.safe,\n }),\n { reactive: false, safe: true },\n );\n}\n\nfunction isLikelyMutatingMethodName(name: string): boolean {\n return (\n name === \"set\" ||\n name === \"delete\" ||\n name === \"clear\" ||\n name === \"push\" ||\n name === \"pop\" ||\n name === \"shift\" ||\n name === \"unshift\" ||\n name === \"splice\" ||\n name === \"sort\" ||\n name === \"reverse\"\n );\n}\n\nfunction analyzeOxcReactiveAliasExpression(\n expression: Record<string, unknown>,\n): ReactiveAliasExpressionState {\n const unwrappedExpression = unwrapOxcParentheses(expression);\n\n if (\n unwrappedExpression.type === \"Literal\" ||\n unwrappedExpression.type === \"Identifier\" ||\n unwrappedExpression.type === \"ThisExpression\"\n ) {\n return { reactive: false, safe: true };\n }\n\n if (isOxcReactiveReadExpression(unwrappedExpression)) {\n return { reactive: true, safe: true };\n }\n\n if (unwrappedExpression.type === \"ChainExpression\") {\n return analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.expression));\n }\n\n if (\n unwrappedExpression.type === \"TSAsExpression\" ||\n unwrappedExpression.type === \"TSSatisfiesExpression\" ||\n unwrappedExpression.type === \"TSNonNullExpression\" ||\n unwrappedExpression.type === \"TSInstantiationExpression\" ||\n unwrappedExpression.type === \"TypeCastExpression\"\n ) {\n return analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.expression));\n }\n\n if (unwrappedExpression.type === \"MemberExpression\") {\n const objectState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.object));\n const propertyState =\n unwrappedExpression.computed === true\n ? analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.property))\n : { reactive: false, safe: true };\n\n return {\n reactive: objectState.reactive || propertyState.reactive,\n safe: objectState.safe && propertyState.safe,\n };\n }\n\n if (unwrappedExpression.type === \"UnaryExpression\") {\n return analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.argument));\n }\n\n if (\n unwrappedExpression.type === \"BinaryExpression\" ||\n unwrappedExpression.type === \"LogicalExpression\"\n ) {\n const leftState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.left));\n const rightState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.right));\n\n return {\n reactive: leftState.reactive || rightState.reactive,\n safe: leftState.safe && rightState.safe,\n };\n }\n\n if (unwrappedExpression.type === \"ConditionalExpression\") {\n const testState = analyzeOxcReactiveAliasExpression(readObject(unwrappedExpression.test));\n const consequentState = analyzeOxcReactiveAliasExpression(\n readObject(unwrappedExpression.consequent),\n );\n const alternateState = analyzeOxcReactiveAliasExpression(\n readObject(unwrappedExpression.alternate),\n );\n\n return {\n reactive: testState.reactive || consequentState.reactive || alternateState.reactive,\n safe: testState.safe && consequentState.safe && alternateState.safe,\n };\n }\n\n return { reactive: false, safe: false };\n}\n\nfunction containsAssignmentTo(node: Record<string, unknown>, name: string): boolean {\n if (node.type === \"AssignmentExpression\") {\n const left = readObject(node.left);\n if (left.type === \"Identifier\" && left.name === name) return true;\n }\n if (node.type === \"UpdateExpression\") {\n const argument = readObject(node.argument);\n if (argument.type === \"Identifier\" && argument.name === name) return true;\n }\n for (const value of Object.values(node)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n if (\n typeof item === \"object\" &&\n item !== null &&\n containsAssignmentTo(readObject(item), name)\n ) {\n return true;\n }\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (containsAssignmentTo(readObject(value), name)) return true;\n }\n }\n return false;\n}\n\nfunction collectOxcPushJsxBindingNames(statements: readonly unknown[], names: Set<string>): void {\n for (const statement of statements) {\n const object = readObject(statement);\n\n if (object.type === \"ForOfStatement\" || object.type === \"ForStatement\") {\n collectOxcPushJsxBindingNames(readArray(readObject(object.body).body), names);\n continue;\n }\n\n const expression = readObject(object.expression);\n\n if (object.type !== \"ExpressionStatement\" || expression.type !== \"CallExpression\") {\n continue;\n }\n\n const callee = readObject(expression.callee);\n const argument = unwrapOxcParentheses(readObject(readArray(expression.arguments)[0]));\n\n if (\n callee.type !== \"MemberExpression\" ||\n readObject(callee.property).name !== \"push\" ||\n !containsOxcJsxSyntax(argument)\n ) {\n continue;\n }\n\n const target = readObject(callee.object);\n\n if (typeof target.name === \"string\") {\n names.add(target.name);\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reckona/mreact-compiler",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.74",
|
|
4
4
|
"description": "Compiler passes and OXC-backed JSX analysis for mreact.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compiler",
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"oxc-parser": "0.129.0",
|
|
52
52
|
"oxc-transform": "0.129.0",
|
|
53
|
-
"@reckona/mreact-shared": "0.0.
|
|
53
|
+
"@reckona/mreact-shared": "0.0.74"
|
|
54
54
|
}
|
|
55
55
|
}
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export {
|
|
|
2
2
|
collectIdentifierReferenceNames,
|
|
3
3
|
collectJsxComponentRootNames,
|
|
4
4
|
collectClientRouteModuleAnalysis,
|
|
5
|
+
collectFormActionExpressionReferences,
|
|
5
6
|
collectFormActionReferences,
|
|
6
7
|
collectFormActionReferenceNames,
|
|
7
8
|
collectStaticExportReferences,
|
|
@@ -17,6 +18,7 @@ export {
|
|
|
17
18
|
} from "./internal.js";
|
|
18
19
|
export type {
|
|
19
20
|
StaticExportReference,
|
|
21
|
+
FormActionExpressionReference,
|
|
20
22
|
FormActionReference,
|
|
21
23
|
StaticImportReference,
|
|
22
24
|
StaticImportSpecifierReference,
|