@reckona/mreact-compiler 0.0.120 → 0.0.122

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/ir.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ir.js","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"","sourcesContent":["import type { SourceLocation } from \"./types.js\";\n\nexport interface ModuleIr {\n userImports: string[];\n moduleStatements: string[];\n moduleBindingNames: string[];\n components: ComponentIr[];\n}\n\nexport interface ComponentIr {\n name: string;\n exportName: string;\n exported?: boolean;\n exportDefault?: boolean;\n async?: boolean;\n parameters: string[];\n bodyStatements: string[];\n bindingNames: string[];\n root: JsxNodeIr;\n}\n\nexport type JsxNodeIr =\n | JsxElementIr\n | ComponentRefIr\n | JsxFragmentIr\n | ConditionalIr\n | ListIr\n | TextIr\n | ExprIr\n | AsyncBoundaryIr;\n\nexport interface JsxElementIr {\n kind: \"element\";\n tagName: string;\n keyCode?: string;\n attributes: AttributeIr[];\n children: JsxNodeIr[];\n}\n\nexport interface ComponentRefIr {\n kind: \"component\";\n name: string;\n loc?: SourceLocation;\n runtime?: \"compat\";\n async?: boolean;\n clientReference?: ClientReferenceIr;\n keyCode?: string;\n props: ComponentPropIr[];\n children: JsxNodeIr[];\n}\n\nexport interface ClientReferenceIr {\n moduleId: string;\n exportName: string;\n}\n\nexport type ComponentPropIr = ComponentNamedPropIr | ComponentRenderPropIr | ComponentSpreadPropIr;\n\nexport interface ComponentNamedPropIr {\n kind: \"prop\";\n name: string;\n code: string;\n}\n\nexport interface ComponentRenderPropIr {\n kind: \"render-prop\";\n name: string;\n valueName?: string;\n children: JsxNodeIr[];\n}\n\nexport interface ComponentSpreadPropIr {\n kind: \"spread-prop\";\n code: string;\n}\n\nexport interface JsxFragmentIr {\n kind: \"fragment\";\n bodyStatements?: string[];\n children: JsxNodeIr[];\n}\n\nexport interface ConditionalIr {\n kind: \"conditional\";\n conditionCode: string;\n conditionValueName?: string;\n whenTrue: JsxNodeIr[];\n whenFalse: JsxNodeIr[];\n}\n\nexport interface ListIr {\n kind: \"list\";\n itemsCode: string;\n itemName: string;\n indexName?: string;\n arrayName?: string;\n keyCode?: string;\n bodyStatements?: string[];\n children: JsxNodeIr[];\n}\n\nexport interface TextIr {\n kind: \"text\";\n value: string;\n}\n\nexport interface ExprIr {\n kind: \"expr\";\n code: string;\n renderMode?: \"dynamic\" | \"html\" | \"react-node\" | \"stream-node\";\n}\n\nexport interface AsyncBoundaryIr {\n kind: \"async-boundary\";\n loc?: SourceLocation;\n valueCode: string;\n valueName: string;\n children: JsxNodeIr[];\n placeholderChildren?: JsxNodeIr[];\n placeholderTagCode?: string;\n catchName?: string;\n catchChildren?: JsxNodeIr[];\n awaitId?: string;\n}\n\nexport type AttributeIr =\n | StaticAttributeIr\n | DynamicAttributeIr\n | EventAttributeIr\n | SpreadAttributeIr;\n\nexport interface StaticAttributeIr {\n kind: \"static-attr\";\n name: string;\n value: string;\n}\n\nexport interface DynamicAttributeIr {\n kind: \"dynamic-attr\";\n name: string;\n code: string;\n}\n\nexport interface EventAttributeIr {\n kind: \"event\";\n name: string;\n eventName: string;\n code: string;\n}\n\nexport interface SpreadAttributeIr {\n kind: \"spread-attr\";\n code: string;\n}\n"]}
1
+ {"version":3,"file":"ir.js","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"","sourcesContent":["import type { SourceLocation } from \"./types.js\";\n\nexport interface ModuleIr {\n userImports: string[];\n moduleStatements: string[];\n moduleBindingNames: string[];\n components: ComponentIr[];\n}\n\nexport interface ComponentIr {\n name: string;\n exportName: string;\n exported?: boolean;\n exportDefault?: boolean;\n async?: boolean;\n parameters: string[];\n bodyStatements: string[];\n bindingNames: string[];\n root: JsxNodeIr;\n}\n\nexport type JsxNodeIr =\n | JsxElementIr\n | ComponentRefIr\n | JsxFragmentIr\n | ConditionalIr\n | ListIr\n | TextIr\n | ExprIr\n | AsyncBoundaryIr;\n\nexport interface JsxElementIr {\n kind: \"element\";\n tagName: string;\n keyCode?: string;\n attributes: AttributeIr[];\n children: JsxNodeIr[];\n}\n\nexport interface ComponentRefIr {\n kind: \"component\";\n name: string;\n loc?: SourceLocation;\n runtime?: \"compat\";\n async?: boolean;\n clientReference?: ClientReferenceIr;\n keyCode?: string;\n props: ComponentPropIr[];\n children: JsxNodeIr[];\n}\n\nexport interface ClientReferenceIr {\n moduleId: string;\n exportName: string;\n ssrFallback?: boolean;\n}\n\nexport type ComponentPropIr = ComponentNamedPropIr | ComponentRenderPropIr | ComponentSpreadPropIr;\n\nexport interface ComponentNamedPropIr {\n kind: \"prop\";\n name: string;\n code: string;\n}\n\nexport interface ComponentRenderPropIr {\n kind: \"render-prop\";\n name: string;\n valueName?: string;\n children: JsxNodeIr[];\n}\n\nexport interface ComponentSpreadPropIr {\n kind: \"spread-prop\";\n code: string;\n}\n\nexport interface JsxFragmentIr {\n kind: \"fragment\";\n bodyStatements?: string[];\n children: JsxNodeIr[];\n}\n\nexport interface ConditionalIr {\n kind: \"conditional\";\n conditionCode: string;\n conditionValueName?: string;\n whenTrue: JsxNodeIr[];\n whenFalse: JsxNodeIr[];\n}\n\nexport interface ListIr {\n kind: \"list\";\n itemsCode: string;\n itemName: string;\n indexName?: string;\n arrayName?: string;\n keyCode?: string;\n bodyStatements?: string[];\n children: JsxNodeIr[];\n}\n\nexport interface TextIr {\n kind: \"text\";\n value: string;\n}\n\nexport interface ExprIr {\n kind: \"expr\";\n code: string;\n renderMode?: \"dynamic\" | \"html\" | \"react-node\" | \"stream-node\";\n}\n\nexport interface AsyncBoundaryIr {\n kind: \"async-boundary\";\n loc?: SourceLocation;\n valueCode: string;\n valueName: string;\n children: JsxNodeIr[];\n placeholderChildren?: JsxNodeIr[];\n placeholderTagCode?: string;\n catchName?: string;\n catchChildren?: JsxNodeIr[];\n awaitId?: string;\n}\n\nexport type AttributeIr =\n | StaticAttributeIr\n | DynamicAttributeIr\n | EventAttributeIr\n | SpreadAttributeIr;\n\nexport interface StaticAttributeIr {\n kind: \"static-attr\";\n name: string;\n value: string;\n}\n\nexport interface DynamicAttributeIr {\n kind: \"dynamic-attr\";\n name: string;\n code: string;\n}\n\nexport interface EventAttributeIr {\n kind: \"event\";\n name: string;\n eventName: string;\n code: string;\n}\n\nexport interface SpreadAttributeIr {\n kind: \"spread-attr\";\n code: string;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { ClientReferenceIr, JsxNodeIr } from "./ir.js";
2
- export declare function collectOxcClientBoundaryImportComponents(program: unknown, inferredBoundaryImports: ReadonlySet<string>): Map<string, ClientReferenceIr>;
2
+ export declare function collectOxcClientBoundaryImportComponents(program: unknown, inferredBoundaryImports: ReadonlySet<string>, fallbackBoundaryImports?: ReadonlySet<string>): Map<string, ClientReferenceIr>;
3
3
  export declare function collectOxcCompatRuntimeImportComponents(program: unknown): Map<string, ClientReferenceIr>;
4
4
  export declare function collectOxcCompatReactNodeComponentReferences(program: unknown): Map<string, ClientReferenceIr>;
5
5
  export declare function markOxcAsyncComponentReferences(node: JsxNodeIr, asyncComponentNames: Set<string>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"oxc-component-references.d.ts","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAmB5D,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,OAAO,EAChB,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3C,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CA8ChC;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAwDhC;AAED,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAShC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,SAAS,EACf,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,IAAI,CAMN;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC/C,IAAI,CAaN;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACxD,IAAI,CAYN;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CAUN"}
1
+ {"version":3,"file":"oxc-component-references.d.ts","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAmB5D,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,OAAO,EAChB,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5C,uBAAuB,GAAE,WAAW,CAAC,MAAM,CAAa,GACvD,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CA8ChC;AAcD,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAwDhC;AAED,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,OAAO,GACf,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAShC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,SAAS,EACf,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,IAAI,CAMN;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC/C,IAAI,CAaN;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACxD,IAAI,CAYN;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CAUN"}
@@ -2,7 +2,7 @@ import { readArray, readObject } from "./oxc-node-utils.js";
2
2
  const routerEntryCompatRuntimeExports = new Set();
3
3
  const routerLinkCompatRuntimeExports = new Set();
4
4
  const unknownCompatReference = { moduleId: "", exportName: "default" };
5
- export function collectOxcClientBoundaryImportComponents(program, inferredBoundaryImports) {
5
+ export function collectOxcClientBoundaryImportComponents(program, inferredBoundaryImports, fallbackBoundaryImports = new Set()) {
6
6
  const names = new Map();
7
7
  for (const statement of readArray(readObject(program).body)) {
8
8
  const object = readObject(statement);
@@ -19,25 +19,29 @@ export function collectOxcClientBoundaryImportComponents(program, inferredBounda
19
19
  continue;
20
20
  }
21
21
  if (specifierObject.type === "ImportDefaultSpecifier") {
22
- names.set(localName, { moduleId, exportName: "default" });
22
+ names.set(localName, clientReference(moduleId, "default", fallbackBoundaryImports));
23
23
  continue;
24
24
  }
25
25
  if (specifierObject.type === "ImportNamespaceSpecifier") {
26
- names.set(localName, { moduleId, exportName: "*" });
26
+ names.set(localName, clientReference(moduleId, "*", fallbackBoundaryImports));
27
27
  continue;
28
28
  }
29
29
  if (specifierObject.type === "ImportSpecifier" && specifierObject.importKind !== "type") {
30
30
  const imported = readObject(specifierObject.imported);
31
- names.set(localName, {
32
- moduleId,
33
- exportName: String(imported.name ?? localName),
34
- });
31
+ names.set(localName, clientReference(moduleId, String(imported.name ?? localName), fallbackBoundaryImports));
35
32
  }
36
33
  }
37
34
  }
38
35
  collectOxcClientReferenceAliases(program, names);
39
36
  return names;
40
37
  }
38
+ function clientReference(moduleId, exportName, fallbackBoundaryImports) {
39
+ return {
40
+ moduleId,
41
+ exportName,
42
+ ...(fallbackBoundaryImports.has(moduleId) ? { ssrFallback: true } : {}),
43
+ };
44
+ }
41
45
  export function collectOxcCompatRuntimeImportComponents(program) {
42
46
  const names = new Map();
43
47
  for (const statement of readArray(readObject(program).body)) {
@@ -132,7 +136,7 @@ export function markOxcCompatReactNodeReferences(node, references) {
132
136
  }
133
137
  function isOxcClientBoundaryImport(statement, inferredBoundaryImports) {
134
138
  const moduleId = String(readObject(statement.source).value ?? "");
135
- return inferredBoundaryImports.has(moduleId) || /\.(?:client|compat)\.[cm]?[jt]sx?$/.test(moduleId);
139
+ return (inferredBoundaryImports.has(moduleId) || /\.(?:client|compat)\.[cm]?[jt]sx?$/.test(moduleId));
136
140
  }
137
141
  function findOxcClientReference(name, clientReferences) {
138
142
  const direct = clientReferences.get(name);
@@ -402,12 +406,14 @@ function expressionClientReference(node, state) {
402
406
  }
403
407
  }
404
408
  if (objectName !== undefined && memberName === undefined) {
405
- return selectClientReference([...objectMemberReferences(state, objectName), ...dynamicObjectMemberReferences(state, objectName)], state.allowAmbiguousAliases);
409
+ return selectClientReference([
410
+ ...objectMemberReferences(state, objectName),
411
+ ...dynamicObjectMemberReferences(state, objectName),
412
+ ], state.allowAmbiguousAliases);
406
413
  }
407
414
  if (objectName === undefined && memberName !== undefined) {
408
415
  const references = [
409
- ...expressionObjectNameCandidates(readOptionalObject(node.object), state)
410
- .map((candidate) => state.objectMembers.get(candidate)?.get(memberName)),
416
+ ...expressionObjectNameCandidates(readOptionalObject(node.object), state).map((candidate) => state.objectMembers.get(candidate)?.get(memberName)),
411
417
  ...expressionDynamicObjectNestedMemberReferences(readOptionalObject(node.object), memberName, state),
412
418
  ];
413
419
  return selectClientReference(references, state.allowAmbiguousAliases);
@@ -439,11 +445,12 @@ function objectEntryMemberReference(objectName, memberName, state) {
439
445
  if (sourceName === undefined) {
440
446
  return undefined;
441
447
  }
442
- if (state.allowAmbiguousAliases && state.globModuleMaps.has(sourceName) && memberName === "default") {
448
+ if (state.allowAmbiguousAliases &&
449
+ state.globModuleMaps.has(sourceName) &&
450
+ memberName === "default") {
443
451
  return unknownCompatReference;
444
452
  }
445
- const references = Array.from(state.objectMemberKeys.get(sourceName) ?? [])
446
- .map((key) => state.objectMembers.get(`${sourceName}.${key}`)?.get(memberName));
453
+ const references = Array.from(state.objectMemberKeys.get(sourceName) ?? []).map((key) => state.objectMembers.get(`${sourceName}.${key}`)?.get(memberName));
447
454
  return selectClientReference(references, state.allowAmbiguousAliases);
448
455
  }
449
456
  function expressionObjectNameCandidates(node, state) {
@@ -555,8 +562,10 @@ function isObjectAssignCall(node) {
555
562
  }
556
563
  const object = readOptionalObject(callee.object);
557
564
  const property = readOptionalObject(callee.property);
558
- return object?.type === "Identifier" && object.name === "Object" &&
559
- property?.type === "Identifier" && property.name === "assign";
565
+ return (object?.type === "Identifier" &&
566
+ object.name === "Object" &&
567
+ property?.type === "Identifier" &&
568
+ property.name === "assign");
560
569
  }
561
570
  function isObjectEntriesCall(node) {
562
571
  const callee = readOptionalObject(node?.callee);
@@ -565,8 +574,10 @@ function isObjectEntriesCall(node) {
565
574
  }
566
575
  const object = readOptionalObject(callee.object);
567
576
  const property = readOptionalObject(callee.property);
568
- return object?.type === "Identifier" && object.name === "Object" &&
569
- property?.type === "Identifier" && property.name === "entries";
577
+ return (object?.type === "Identifier" &&
578
+ object.name === "Object" &&
579
+ property?.type === "Identifier" &&
580
+ property.name === "entries");
570
581
  }
571
582
  function isImportMetaGlobEagerCall(node) {
572
583
  const callee = readOptionalObject(node?.callee);
@@ -582,7 +593,9 @@ function isImportMetaGlobEagerCall(node) {
582
593
  const metaName = meta?.type === "Identifier" ? meta.name : undefined;
583
594
  const propertyName = readOptionalObject(metaProperty?.property);
584
595
  const importMetaPropertyName = propertyName?.type === "Identifier" ? propertyName.name : undefined;
585
- if (metaProperty?.type !== "MetaProperty" || metaName !== "import" || importMetaPropertyName !== "meta") {
596
+ if (metaProperty?.type !== "MetaProperty" ||
597
+ metaName !== "import" ||
598
+ importMetaPropertyName !== "meta") {
586
599
  return false;
587
600
  }
588
601
  const options = readOptionalObject(readArray(node.arguments)[1]);
@@ -593,12 +606,12 @@ function isImportMetaGlobEagerCall(node) {
593
606
  const property = readOptionalObject(propertyValue);
594
607
  const key = readOptionalObject(property?.key);
595
608
  const value = readOptionalObject(property?.value);
596
- return property?.type === "Property" &&
609
+ return (property?.type === "Property" &&
597
610
  property.computed !== true &&
598
611
  key?.type === "Identifier" &&
599
612
  key.name === "eager" &&
600
613
  value?.type === "Literal" &&
601
- value.value === true;
614
+ value.value === true);
602
615
  });
603
616
  }
604
617
  function uniqueClientReference(values) {
@@ -652,9 +665,7 @@ function forOfObjectEntriesValueBindingName(node) {
652
665
  const declaration = node?.type === "VariableDeclaration"
653
666
  ? readOptionalObject(readArray(node.declarations)[0])
654
667
  : undefined;
655
- const pattern = declaration?.type === "VariableDeclarator"
656
- ? readOptionalObject(declaration.id)
657
- : node;
668
+ const pattern = declaration?.type === "VariableDeclarator" ? readOptionalObject(declaration.id) : node;
658
669
  if (pattern?.type !== "ArrayPattern") {
659
670
  return undefined;
660
671
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oxc-component-references.js","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ClientReferenceIr, JsxNodeIr } from \"./ir.js\";\nimport { readArray, readObject } from \"./oxc-node-utils.js\";\n\nconst routerEntryCompatRuntimeExports = new Set<string>();\nconst routerLinkCompatRuntimeExports = new Set<string>();\nconst unknownCompatReference: ClientReferenceIr = { moduleId: \"\", exportName: \"default\" };\n\ninterface ClientReferenceAliasState {\n allowAmbiguousAliases: boolean;\n references: Map<string, ClientReferenceIr>;\n stringConstants: Map<string, string>;\n objectMembers: Map<string, Map<string, ClientReferenceIr>>;\n objectMemberKeys: Map<string, Set<string>>;\n dynamicObjectMembers: Map<string, ClientReferenceIr[]>;\n dynamicObjectNestedMembers: Map<string, Map<string, ClientReferenceIr[]>>;\n globModuleMaps: Set<string>;\n objectEntryValueBindings: Map<string, string>;\n}\n\nexport function collectOxcClientBoundaryImportComponents(\n program: unknown,\n inferredBoundaryImports: ReadonlySet<string>,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (\n object.type !== \"ImportDeclaration\" ||\n !isOxcClientBoundaryImport(object, inferredBoundaryImports)\n ) {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n names.set(localName, {\n moduleId,\n exportName: String(imported.name ?? localName),\n });\n }\n }\n }\n\n collectOxcClientReferenceAliases(program, names);\n return names;\n}\n\nexport function collectOxcCompatRuntimeImportComponents(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\") {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n const runtimeExports = compatRuntimeExports(moduleId);\n const compatComponentImport = runtimeExports !== undefined || isMdxModuleId(moduleId);\n\n if (!compatComponentImport) {\n continue;\n }\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (\n specifierObject.type === \"ImportDefaultSpecifier\" &&\n (runtimeExports?.has(\"default\") === true || isMdxModuleId(moduleId))\n ) {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n const importedName = String(imported.name ?? localName);\n\n if (runtimeExports?.has(importedName) === true || isMdxModuleId(moduleId)) {\n names.set(localName, {\n moduleId,\n exportName: importedName,\n });\n }\n }\n }\n }\n\n collectOxcClientReferenceAliases(program, names, { allowAmbiguousAliases: true });\n return names;\n}\n\nexport function collectOxcCompatReactNodeComponentReferences(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n collectOxcCompatReactNodeImportReferences(statement, names);\n collectOxcCompatReactNodeClassReferences(statement, names);\n }\n\n return names;\n}\n\nexport function markOxcAsyncComponentReferences(\n node: JsxNodeIr,\n asyncComponentNames: Set<string>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind === \"component\" && asyncComponentNames.has(child.name)) {\n child.async = true;\n }\n });\n}\n\nexport function markOxcClientReferences(\n node: JsxNodeIr,\n clientReferences: Map<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const clientReference = findOxcClientReference(child.name, clientReferences);\n\n if (clientReference !== undefined) {\n child.runtime = \"compat\";\n child.clientReference = clientReference;\n }\n });\n}\n\nexport function markOxcCompatRuntimeReferences(\n node: JsxNodeIr,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const runtimeReference = findOxcCompatRuntimeReference(child.name, runtimeReferences);\n\n if (runtimeReference !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nexport function markOxcCompatReactNodeReferences(\n node: JsxNodeIr,\n references: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n if (findOxcCompatReactNodeReference(child.name, references) !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nfunction isOxcClientBoundaryImport(\n statement: Record<string, unknown>,\n inferredBoundaryImports: ReadonlySet<string>,\n): boolean {\n const moduleId = String(readObject(statement.source).value ?? \"\");\n return inferredBoundaryImports.has(moduleId) || /\\.(?:client|compat)\\.[cm]?[jt]sx?$/.test(moduleId);\n}\n\nfunction findOxcClientReference(\n name: string,\n clientReferences: Map<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = clientReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : clientReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return rootReference;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction collectOxcCompatReactNodeImportReferences(\n statement: unknown,\n names: Map<string, ClientReferenceIr>,\n): void {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\" || object.importKind === \"type\") {\n return;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n\n if (specifierObject.importKind === \"type\") {\n continue;\n }\n\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\") {\n const imported = readObject(specifierObject.imported);\n names.set(localName, {\n moduleId,\n exportName: String(imported.name ?? localName),\n });\n }\n }\n}\n\nfunction collectOxcCompatReactNodeClassReferences(\n statement: unknown,\n names: Map<string, ClientReferenceIr>,\n): void {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readOptionalObject(object.declaration)\n : object;\n const className = readOxcClassComponentName(declaration);\n\n if (className !== undefined) {\n names.set(className, { moduleId: \"\", exportName: className });\n }\n}\n\nfunction readOxcClassComponentName(\n node: Record<string, unknown> | undefined,\n): string | undefined {\n if (node?.type === \"ClassDeclaration\" || node?.type === \"ClassExpression\") {\n const id = readOptionalObject(node.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n return name !== undefined && /^[A-Z]/.test(name) ? name : undefined;\n }\n\n if (node?.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarationValue of readArray(node.declarations)) {\n const declaration = readOptionalObject(declarationValue);\n const id = readOptionalObject(declaration?.id);\n const init = readOptionalObject(declaration?.init);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (\n name !== undefined &&\n /^[A-Z]/.test(name) &&\n (init?.type === \"ClassExpression\" || init?.type === \"ClassDeclaration\")\n ) {\n return name;\n }\n }\n\n return undefined;\n}\n\nfunction collectOxcClientReferenceAliases(\n node: unknown,\n references: Map<string, ClientReferenceIr>,\n options: { allowAmbiguousAliases?: boolean } = {},\n): void {\n const state: ClientReferenceAliasState = {\n allowAmbiguousAliases: options.allowAmbiguousAliases === true,\n references,\n stringConstants: new Map(),\n objectMembers: new Map(),\n objectMemberKeys: new Map(),\n dynamicObjectMembers: new Map(),\n dynamicObjectNestedMembers: new Map(),\n globModuleMaps: new Set(),\n objectEntryValueBindings: new Map(),\n };\n\n collectOxcClientReferenceAliasesFromNode(node, state);\n}\n\nfunction collectOxcClientReferenceAliasesFromNode(\n node: unknown,\n state: ClientReferenceAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectOxcClientReferenceAliasesFromNode(child, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n const constant = object.kind === \"const\";\n for (const declaration of readArray(object.declarations)) {\n collectOxcVariableClientReferenceAlias(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectOxcVariableClientReferenceAlias(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectOxcAssignmentClientReferenceAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectOxcObjectAssignClientReferenceAliases(object, state);\n }\n\n if (object.type === \"ForOfStatement\") {\n collectOxcForOfClientReferenceAliases(object, state);\n return;\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n}\n\nfunction collectOxcVariableClientReferenceAlias(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n constant: boolean,\n): void {\n if (node?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(node.id);\n const init = readOptionalObject(node.init);\n const aliasName = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (aliasName === undefined) {\n return;\n }\n\n if (constant) {\n const stringValue = stringExpressionValue(init, state);\n if (stringValue !== undefined) {\n state.stringConstants.set(aliasName, stringValue);\n }\n }\n\n if (isImportMetaGlobEagerCall(init)) {\n state.globModuleMaps.add(aliasName);\n }\n\n collectOxcObjectLiteralClientReferenceAliases(aliasName, init, state);\n\n const reference = expressionClientReference(init, state);\n if (reference !== undefined) {\n state.references.set(aliasName, reference);\n }\n}\n\nfunction collectOxcObjectLiteralClientReferenceAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(init.properties)) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(readOptionalObject(property.key), property.computed === true, state);\n const value = readOptionalObject(property.value);\n if (keyName !== undefined) {\n addObjectMemberKey(state, objectName, keyName);\n }\n\n if (keyName !== undefined && value?.type === \"ObjectExpression\") {\n collectOxcObjectLiteralClientReferenceAliases(`${objectName}.${keyName}`, value, state);\n }\n\n const reference = expressionClientReference(value, state);\n if (keyName !== undefined && reference !== undefined) {\n setObjectMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction collectOxcAssignmentClientReferenceAlias(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectName = expressionObjectName(readOptionalObject(left.object), state);\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(node.right), state);\n if (objectName !== undefined && memberName !== undefined) {\n addObjectMemberKey(state, objectName, memberName);\n if (reference !== undefined) {\n setObjectMemberReference(state, objectName, memberName, reference);\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n if (reference !== undefined) {\n addDynamicObjectMemberReference(state, objectName, reference);\n }\n\n collectDynamicObjectNestedMemberReferences(objectName, readOptionalObject(node.right), state);\n }\n}\n\nfunction collectOxcForOfClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n const sourceName = objectEntriesSourceName(readOptionalObject(node.right), state);\n const valueName = forOfObjectEntriesValueBindingName(readOptionalObject(node.left));\n\n if (sourceName === undefined || valueName === undefined) {\n for (const [key, value] of Object.entries(node)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n return;\n }\n\n const previous = state.objectEntryValueBindings.get(valueName);\n state.objectEntryValueBindings.set(valueName, sourceName);\n collectOxcClientReferenceAliasesFromNode(node.body, state);\n if (previous === undefined) {\n state.objectEntryValueBindings.delete(valueName);\n } else {\n state.objectEntryValueBindings.set(valueName, previous);\n }\n}\n\nfunction collectOxcObjectAssignClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = readArray(node.arguments).map(readOptionalObject);\n const target = expressionObjectName(args[0], state);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectOxcObjectLiteralClientReferenceAliases(target, source, state);\n }\n}\n\nfunction expressionClientReference(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.references.get(node.name);\n }\n\n if (node.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const objectReference =\n objectName === undefined ? undefined : state.references.get(objectName);\n\n if (objectName !== undefined && memberName !== undefined) {\n const objectMember = state.objectMembers.get(objectName)?.get(memberName);\n if (objectMember !== undefined) {\n return objectMember;\n }\n\n const dynamicObjectReference = selectClientReference(\n dynamicObjectMemberReferences(state, objectName),\n state.allowAmbiguousAliases,\n );\n if (dynamicObjectReference !== undefined) {\n return dynamicObjectReference;\n }\n\n const objectEntryReference = objectEntryMemberReference(objectName, memberName, state);\n if (objectEntryReference !== undefined) {\n return objectEntryReference;\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n return selectClientReference(\n [...objectMemberReferences(state, objectName), ...dynamicObjectMemberReferences(state, objectName)],\n state.allowAmbiguousAliases,\n );\n }\n\n if (objectName === undefined && memberName !== undefined) {\n const references = [\n ...expressionObjectNameCandidates(readOptionalObject(node.object), state)\n .map((candidate) => state.objectMembers.get(candidate)?.get(memberName)),\n ...expressionDynamicObjectNestedMemberReferences(\n readOptionalObject(node.object),\n memberName,\n state,\n ),\n ];\n return selectClientReference(references, state.allowAmbiguousAliases);\n }\n\n if (objectReference?.exportName === \"*\" && memberName !== undefined) {\n return {\n moduleId: objectReference.moduleId,\n exportName: memberName,\n };\n }\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueClientReference([\n expressionClientReference(readOptionalObject(node.consequent), state),\n expressionClientReference(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (\n node.type === \"ChainExpression\" ||\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"TSNonNullExpression\" ||\n node.type === \"ParenthesizedExpression\"\n ) {\n return expressionClientReference(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction objectEntryMemberReference(\n objectName: string,\n memberName: string,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n const sourceName = state.objectEntryValueBindings.get(objectName);\n if (sourceName === undefined) {\n return undefined;\n }\n\n if (state.allowAmbiguousAliases && state.globModuleMaps.has(sourceName) && memberName === \"default\") {\n return unknownCompatReference;\n }\n\n const references = Array.from(state.objectMemberKeys.get(sourceName) ?? [])\n .map((key) => state.objectMembers.get(`${sourceName}.${key}`)?.get(memberName));\n return selectClientReference(references, state.allowAmbiguousAliases);\n}\n\nfunction expressionObjectNameCandidates(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string[] {\n const exactName = expressionObjectName(node, state);\n if (exactName !== undefined) {\n return [exactName];\n }\n\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n if (objectName !== undefined && memberName === undefined) {\n return Array.from(state.objectMemberKeys.get(objectName) ?? []).map(\n (key) => `${objectName}.${key}`,\n );\n }\n\n if (memberName === undefined) {\n return [];\n }\n\n return expressionObjectNameCandidates(readOptionalObject(node.object), state).map(\n (candidate) => `${candidate}.${memberName}`,\n );\n}\n\nfunction expressionObjectName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node?.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n return objectName !== undefined && memberName !== undefined\n ? `${objectName}.${memberName}`\n : undefined;\n }\n\n return undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n return stringExpressionValue(node, state);\n}\n\nfunction stringExpressionValue(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (\n (node?.type === \"StringLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"string\"\n ) {\n return node.value;\n }\n\n if (node?.type === \"ConditionalExpression\") {\n return uniqueString([\n stringExpressionValue(readOptionalObject(node.consequent), state),\n stringExpressionValue(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n if (\n node?.type === \"ChainExpression\" ||\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"TSNonNullExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return stringExpressionValue(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction setObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.objectMembers.get(objectName) ?? new Map<string, ClientReferenceIr>();\n members.set(memberName, reference);\n state.objectMembers.set(objectName, members);\n addObjectMemberKey(state, objectName, memberName);\n}\n\nfunction addDynamicObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n reference: ClientReferenceIr,\n): void {\n const references = state.dynamicObjectMembers.get(objectName) ?? [];\n references.push(reference);\n state.dynamicObjectMembers.set(objectName, references);\n}\n\nfunction collectDynamicObjectNestedMemberReferences(\n objectName: string,\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (node?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(node.properties)) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(readOptionalObject(property.key), property.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(property.value), state);\n if (keyName !== undefined && reference !== undefined) {\n addDynamicObjectNestedMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction addDynamicObjectNestedMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.dynamicObjectNestedMembers.get(objectName) ?? new Map<string, ClientReferenceIr[]>();\n const references = members.get(memberName) ?? [];\n references.push(reference);\n members.set(memberName, references);\n state.dynamicObjectNestedMembers.set(objectName, members);\n}\n\nfunction addObjectMemberKey(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n): void {\n const keys = state.objectMemberKeys.get(objectName) ?? new Set<string>();\n keys.add(memberName);\n state.objectMemberKeys.set(objectName, keys);\n}\n\nfunction isObjectAssignCall(node: Record<string, unknown>): boolean {\n const callee = readOptionalObject(node.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return object?.type === \"Identifier\" && object.name === \"Object\" &&\n property?.type === \"Identifier\" && property.name === \"assign\";\n}\n\nfunction isObjectEntriesCall(node: Record<string, unknown> | undefined): boolean {\n const callee = readOptionalObject(node?.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return object?.type === \"Identifier\" && object.name === \"Object\" &&\n property?.type === \"Identifier\" && property.name === \"entries\";\n}\n\nfunction isImportMetaGlobEagerCall(node: Record<string, unknown> | undefined): boolean {\n const callee = readOptionalObject(node?.callee);\n if (node?.type !== \"CallExpression\" || callee?.type !== \"MemberExpression\") {\n return false;\n }\n\n const property = readOptionalObject(callee.property);\n if (callee.computed === true || property?.type !== \"Identifier\" || property.name !== \"glob\") {\n return false;\n }\n\n const metaProperty = readOptionalObject(callee.object);\n const meta = readOptionalObject(metaProperty?.meta);\n const metaName = meta?.type === \"Identifier\" ? meta.name : undefined;\n const propertyName = readOptionalObject(metaProperty?.property);\n const importMetaPropertyName = propertyName?.type === \"Identifier\" ? propertyName.name : undefined;\n if (metaProperty?.type !== \"MetaProperty\" || metaName !== \"import\" || importMetaPropertyName !== \"meta\") {\n return false;\n }\n\n const options = readOptionalObject(readArray(node.arguments)[1]);\n if (options?.type !== \"ObjectExpression\") {\n return false;\n }\n\n return readArray(options.properties).some((propertyValue) => {\n const property = readOptionalObject(propertyValue);\n const key = readOptionalObject(property?.key);\n const value = readOptionalObject(property?.value);\n return property?.type === \"Property\" &&\n property.computed !== true &&\n key?.type === \"Identifier\" &&\n key.name === \"eager\" &&\n value?.type === \"Literal\" &&\n value.value === true;\n });\n}\n\nfunction uniqueClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n): ClientReferenceIr | undefined {\n const refs = values.filter((value): value is ClientReferenceIr => value !== undefined);\n if (refs.length === 0) {\n return undefined;\n }\n\n const first = refs[0];\n if (first === undefined) {\n return undefined;\n }\n\n return refs.every(\n (reference) =>\n reference.moduleId === first.moduleId && reference.exportName === first.exportName,\n )\n ? first\n : undefined;\n}\n\nfunction selectClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n allowAmbiguousAliases: boolean,\n): ClientReferenceIr | undefined {\n if (!allowAmbiguousAliases) {\n return uniqueClientReference(values);\n }\n\n if (values.length === 0 || values.some((value) => value === undefined)) {\n return undefined;\n }\n\n return values[0];\n}\n\nfunction objectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n const keys = Array.from(state.objectMemberKeys.get(objectName) ?? []);\n return keys.map((key) => state.objectMembers.get(objectName)?.get(key));\n}\n\nfunction dynamicObjectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n return state.dynamicObjectMembers.get(objectName) ?? [];\n}\n\nfunction expressionDynamicObjectNestedMemberReferences(\n node: Record<string, unknown> | undefined,\n memberName: string,\n state: ClientReferenceAliasState,\n): Array<ClientReferenceIr | undefined> {\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const property = propertyName(readOptionalObject(node.property), node.computed === true, state);\n if (objectName === undefined || property !== undefined) {\n return [];\n }\n\n return state.dynamicObjectNestedMembers.get(objectName)?.get(memberName) ?? [];\n}\n\nfunction objectEntriesSourceName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!isObjectEntriesCall(node)) {\n return undefined;\n }\n\n const args = readArray(node?.arguments).map(readOptionalObject);\n return expressionObjectName(args[0], state);\n}\n\nfunction forOfObjectEntriesValueBindingName(\n node: Record<string, unknown> | undefined,\n): string | undefined {\n const declaration =\n node?.type === \"VariableDeclaration\"\n ? readOptionalObject(readArray(node.declarations)[0])\n : undefined;\n const pattern = declaration?.type === \"VariableDeclarator\"\n ? readOptionalObject(declaration.id)\n : node;\n\n if (pattern?.type !== \"ArrayPattern\") {\n return undefined;\n }\n\n const valueElement = readOptionalObject(readArray(pattern.elements)[1]);\n return valueElement?.type === \"Identifier\" && typeof valueElement.name === \"string\"\n ? valueElement.name\n : undefined;\n}\n\nfunction uniqueString(values: readonly (string | undefined)[]): string | undefined {\n const unique = new Set(values.filter((value): value is string => value !== undefined));\n return unique.size === 1 ? Array.from(unique)[0] : undefined;\n}\n\nfunction readOptionalObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction findOxcCompatRuntimeReference(\n name: string,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = runtimeReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : runtimeReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n const exportName = memberNames.join(\".\");\n return compatRuntimeExports(rootReference.moduleId)?.has(exportName) === true\n ? {\n moduleId: rootReference.moduleId,\n exportName,\n }\n : undefined;\n}\n\nfunction findOxcCompatReactNodeReference(\n name: string,\n references: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = references.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : references.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction compatRuntimeExports(moduleId: string): ReadonlySet<string> | undefined {\n if (moduleId === \"@reckona/mreact-router\") {\n return routerEntryCompatRuntimeExports;\n }\n\n if (moduleId === \"@reckona/mreact-router/link\") {\n return routerLinkCompatRuntimeExports;\n }\n\n return undefined;\n}\n\nfunction isMdxModuleId(moduleId: string): boolean {\n return /\\.mdx(?:[?#].*)?$/.test(moduleId);\n}\n\nfunction visitOxcNode(node: JsxNodeIr, visitor: (node: JsxNodeIr) => void): void {\n visitor(node);\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n visitOxcNode(child, visitor);\n }\n }\n }\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"conditional\") {\n for (const child of [...node.whenTrue, ...node.whenFalse]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"list\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"async-boundary\") {\n for (const child of [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"oxc-component-references.js","sourceRoot":"","sources":["../src/oxc-component-references.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ClientReferenceIr, JsxNodeIr } from \"./ir.js\";\nimport { readArray, readObject } from \"./oxc-node-utils.js\";\n\nconst routerEntryCompatRuntimeExports = new Set<string>();\nconst routerLinkCompatRuntimeExports = new Set<string>();\nconst unknownCompatReference: ClientReferenceIr = { moduleId: \"\", exportName: \"default\" };\n\ninterface ClientReferenceAliasState {\n allowAmbiguousAliases: boolean;\n references: Map<string, ClientReferenceIr>;\n stringConstants: Map<string, string>;\n objectMembers: Map<string, Map<string, ClientReferenceIr>>;\n objectMemberKeys: Map<string, Set<string>>;\n dynamicObjectMembers: Map<string, ClientReferenceIr[]>;\n dynamicObjectNestedMembers: Map<string, Map<string, ClientReferenceIr[]>>;\n globModuleMaps: Set<string>;\n objectEntryValueBindings: Map<string, string>;\n}\n\nexport function collectOxcClientBoundaryImportComponents(\n program: unknown,\n inferredBoundaryImports: ReadonlySet<string>,\n fallbackBoundaryImports: ReadonlySet<string> = new Set(),\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (\n object.type !== \"ImportDeclaration\" ||\n !isOxcClientBoundaryImport(object, inferredBoundaryImports)\n ) {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, clientReference(moduleId, \"default\", fallbackBoundaryImports));\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, clientReference(moduleId, \"*\", fallbackBoundaryImports));\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n names.set(\n localName,\n clientReference(moduleId, String(imported.name ?? localName), fallbackBoundaryImports),\n );\n }\n }\n }\n\n collectOxcClientReferenceAliases(program, names);\n return names;\n}\n\nfunction clientReference(\n moduleId: string,\n exportName: string,\n fallbackBoundaryImports: ReadonlySet<string>,\n): ClientReferenceIr {\n return {\n moduleId,\n exportName,\n ...(fallbackBoundaryImports.has(moduleId) ? { ssrFallback: true } : {}),\n };\n}\n\nexport function collectOxcCompatRuntimeImportComponents(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\") {\n continue;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n const runtimeExports = compatRuntimeExports(moduleId);\n const compatComponentImport = runtimeExports !== undefined || isMdxModuleId(moduleId);\n\n if (!compatComponentImport) {\n continue;\n }\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (\n specifierObject.type === \"ImportDefaultSpecifier\" &&\n (runtimeExports?.has(\"default\") === true || isMdxModuleId(moduleId))\n ) {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\" && specifierObject.importKind !== \"type\") {\n const imported = readObject(specifierObject.imported);\n const importedName = String(imported.name ?? localName);\n\n if (runtimeExports?.has(importedName) === true || isMdxModuleId(moduleId)) {\n names.set(localName, {\n moduleId,\n exportName: importedName,\n });\n }\n }\n }\n }\n\n collectOxcClientReferenceAliases(program, names, { allowAmbiguousAliases: true });\n return names;\n}\n\nexport function collectOxcCompatReactNodeComponentReferences(\n program: unknown,\n): Map<string, ClientReferenceIr> {\n const names = new Map<string, ClientReferenceIr>();\n\n for (const statement of readArray(readObject(program).body)) {\n collectOxcCompatReactNodeImportReferences(statement, names);\n collectOxcCompatReactNodeClassReferences(statement, names);\n }\n\n return names;\n}\n\nexport function markOxcAsyncComponentReferences(\n node: JsxNodeIr,\n asyncComponentNames: Set<string>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind === \"component\" && asyncComponentNames.has(child.name)) {\n child.async = true;\n }\n });\n}\n\nexport function markOxcClientReferences(\n node: JsxNodeIr,\n clientReferences: Map<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const clientReference = findOxcClientReference(child.name, clientReferences);\n\n if (clientReference !== undefined) {\n child.runtime = \"compat\";\n child.clientReference = clientReference;\n }\n });\n}\n\nexport function markOxcCompatRuntimeReferences(\n node: JsxNodeIr,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n const runtimeReference = findOxcCompatRuntimeReference(child.name, runtimeReferences);\n\n if (runtimeReference !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nexport function markOxcCompatReactNodeReferences(\n node: JsxNodeIr,\n references: ReadonlyMap<string, ClientReferenceIr>,\n): void {\n visitOxcNode(node, (child) => {\n if (child.kind !== \"component\") {\n return;\n }\n\n if (findOxcCompatReactNodeReference(child.name, references) !== undefined) {\n child.runtime = \"compat\";\n }\n });\n}\n\nfunction isOxcClientBoundaryImport(\n statement: Record<string, unknown>,\n inferredBoundaryImports: ReadonlySet<string>,\n): boolean {\n const moduleId = String(readObject(statement.source).value ?? \"\");\n return (\n inferredBoundaryImports.has(moduleId) || /\\.(?:client|compat)\\.[cm]?[jt]sx?$/.test(moduleId)\n );\n}\n\nfunction findOxcClientReference(\n name: string,\n clientReferences: Map<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = clientReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : clientReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return rootReference;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction collectOxcCompatReactNodeImportReferences(\n statement: unknown,\n names: Map<string, ClientReferenceIr>,\n): void {\n const object = readObject(statement);\n\n if (object.type !== \"ImportDeclaration\" || object.importKind === \"type\") {\n return;\n }\n\n const moduleId = String(readObject(object.source).value ?? \"\");\n\n for (const specifier of readArray(object.specifiers)) {\n const specifierObject = readObject(specifier);\n\n if (specifierObject.importKind === \"type\") {\n continue;\n }\n\n const local = readObject(specifierObject.local);\n const localName = typeof local.name === \"string\" ? local.name : undefined;\n\n if (localName === undefined || !/^[A-Z]/.test(localName)) {\n continue;\n }\n\n if (specifierObject.type === \"ImportDefaultSpecifier\") {\n names.set(localName, { moduleId, exportName: \"default\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportNamespaceSpecifier\") {\n names.set(localName, { moduleId, exportName: \"*\" });\n continue;\n }\n\n if (specifierObject.type === \"ImportSpecifier\") {\n const imported = readObject(specifierObject.imported);\n names.set(localName, {\n moduleId,\n exportName: String(imported.name ?? localName),\n });\n }\n }\n}\n\nfunction collectOxcCompatReactNodeClassReferences(\n statement: unknown,\n names: Map<string, ClientReferenceIr>,\n): void {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readOptionalObject(object.declaration)\n : object;\n const className = readOxcClassComponentName(declaration);\n\n if (className !== undefined) {\n names.set(className, { moduleId: \"\", exportName: className });\n }\n}\n\nfunction readOxcClassComponentName(node: Record<string, unknown> | undefined): string | undefined {\n if (node?.type === \"ClassDeclaration\" || node?.type === \"ClassExpression\") {\n const id = readOptionalObject(node.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n return name !== undefined && /^[A-Z]/.test(name) ? name : undefined;\n }\n\n if (node?.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarationValue of readArray(node.declarations)) {\n const declaration = readOptionalObject(declarationValue);\n const id = readOptionalObject(declaration?.id);\n const init = readOptionalObject(declaration?.init);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (\n name !== undefined &&\n /^[A-Z]/.test(name) &&\n (init?.type === \"ClassExpression\" || init?.type === \"ClassDeclaration\")\n ) {\n return name;\n }\n }\n\n return undefined;\n}\n\nfunction collectOxcClientReferenceAliases(\n node: unknown,\n references: Map<string, ClientReferenceIr>,\n options: { allowAmbiguousAliases?: boolean } = {},\n): void {\n const state: ClientReferenceAliasState = {\n allowAmbiguousAliases: options.allowAmbiguousAliases === true,\n references,\n stringConstants: new Map(),\n objectMembers: new Map(),\n objectMemberKeys: new Map(),\n dynamicObjectMembers: new Map(),\n dynamicObjectNestedMembers: new Map(),\n globModuleMaps: new Set(),\n objectEntryValueBindings: new Map(),\n };\n\n collectOxcClientReferenceAliasesFromNode(node, state);\n}\n\nfunction collectOxcClientReferenceAliasesFromNode(\n node: unknown,\n state: ClientReferenceAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectOxcClientReferenceAliasesFromNode(child, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n const constant = object.kind === \"const\";\n for (const declaration of readArray(object.declarations)) {\n collectOxcVariableClientReferenceAlias(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectOxcVariableClientReferenceAlias(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectOxcAssignmentClientReferenceAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectOxcObjectAssignClientReferenceAliases(object, state);\n }\n\n if (object.type === \"ForOfStatement\") {\n collectOxcForOfClientReferenceAliases(object, state);\n return;\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n}\n\nfunction collectOxcVariableClientReferenceAlias(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n constant: boolean,\n): void {\n if (node?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(node.id);\n const init = readOptionalObject(node.init);\n const aliasName = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (aliasName === undefined) {\n return;\n }\n\n if (constant) {\n const stringValue = stringExpressionValue(init, state);\n if (stringValue !== undefined) {\n state.stringConstants.set(aliasName, stringValue);\n }\n }\n\n if (isImportMetaGlobEagerCall(init)) {\n state.globModuleMaps.add(aliasName);\n }\n\n collectOxcObjectLiteralClientReferenceAliases(aliasName, init, state);\n\n const reference = expressionClientReference(init, state);\n if (reference !== undefined) {\n state.references.set(aliasName, reference);\n }\n}\n\nfunction collectOxcObjectLiteralClientReferenceAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(init.properties)) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(\n readOptionalObject(property.key),\n property.computed === true,\n state,\n );\n const value = readOptionalObject(property.value);\n if (keyName !== undefined) {\n addObjectMemberKey(state, objectName, keyName);\n }\n\n if (keyName !== undefined && value?.type === \"ObjectExpression\") {\n collectOxcObjectLiteralClientReferenceAliases(`${objectName}.${keyName}`, value, state);\n }\n\n const reference = expressionClientReference(value, state);\n if (keyName !== undefined && reference !== undefined) {\n setObjectMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction collectOxcAssignmentClientReferenceAlias(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectName = expressionObjectName(readOptionalObject(left.object), state);\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const reference = expressionClientReference(readOptionalObject(node.right), state);\n if (objectName !== undefined && memberName !== undefined) {\n addObjectMemberKey(state, objectName, memberName);\n if (reference !== undefined) {\n setObjectMemberReference(state, objectName, memberName, reference);\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n if (reference !== undefined) {\n addDynamicObjectMemberReference(state, objectName, reference);\n }\n\n collectDynamicObjectNestedMemberReferences(objectName, readOptionalObject(node.right), state);\n }\n}\n\nfunction collectOxcForOfClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n const sourceName = objectEntriesSourceName(readOptionalObject(node.right), state);\n const valueName = forOfObjectEntriesValueBindingName(readOptionalObject(node.left));\n\n if (sourceName === undefined || valueName === undefined) {\n for (const [key, value] of Object.entries(node)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectOxcClientReferenceAliasesFromNode(value, state);\n }\n return;\n }\n\n const previous = state.objectEntryValueBindings.get(valueName);\n state.objectEntryValueBindings.set(valueName, sourceName);\n collectOxcClientReferenceAliasesFromNode(node.body, state);\n if (previous === undefined) {\n state.objectEntryValueBindings.delete(valueName);\n } else {\n state.objectEntryValueBindings.set(valueName, previous);\n }\n}\n\nfunction collectOxcObjectAssignClientReferenceAliases(\n node: Record<string, unknown>,\n state: ClientReferenceAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = readArray(node.arguments).map(readOptionalObject);\n const target = expressionObjectName(args[0], state);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectOxcObjectLiteralClientReferenceAliases(target, source, state);\n }\n}\n\nfunction expressionClientReference(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.references.get(node.name);\n }\n\n if (node.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(\n readOptionalObject(node.property),\n node.computed === true,\n state,\n );\n const objectReference = objectName === undefined ? undefined : state.references.get(objectName);\n\n if (objectName !== undefined && memberName !== undefined) {\n const objectMember = state.objectMembers.get(objectName)?.get(memberName);\n if (objectMember !== undefined) {\n return objectMember;\n }\n\n const dynamicObjectReference = selectClientReference(\n dynamicObjectMemberReferences(state, objectName),\n state.allowAmbiguousAliases,\n );\n if (dynamicObjectReference !== undefined) {\n return dynamicObjectReference;\n }\n\n const objectEntryReference = objectEntryMemberReference(objectName, memberName, state);\n if (objectEntryReference !== undefined) {\n return objectEntryReference;\n }\n }\n\n if (objectName !== undefined && memberName === undefined) {\n return selectClientReference(\n [\n ...objectMemberReferences(state, objectName),\n ...dynamicObjectMemberReferences(state, objectName),\n ],\n state.allowAmbiguousAliases,\n );\n }\n\n if (objectName === undefined && memberName !== undefined) {\n const references = [\n ...expressionObjectNameCandidates(readOptionalObject(node.object), state).map((candidate) =>\n state.objectMembers.get(candidate)?.get(memberName),\n ),\n ...expressionDynamicObjectNestedMemberReferences(\n readOptionalObject(node.object),\n memberName,\n state,\n ),\n ];\n return selectClientReference(references, state.allowAmbiguousAliases);\n }\n\n if (objectReference?.exportName === \"*\" && memberName !== undefined) {\n return {\n moduleId: objectReference.moduleId,\n exportName: memberName,\n };\n }\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueClientReference([\n expressionClientReference(readOptionalObject(node.consequent), state),\n expressionClientReference(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (\n node.type === \"ChainExpression\" ||\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"TSNonNullExpression\" ||\n node.type === \"ParenthesizedExpression\"\n ) {\n return expressionClientReference(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction objectEntryMemberReference(\n objectName: string,\n memberName: string,\n state: ClientReferenceAliasState,\n): ClientReferenceIr | undefined {\n const sourceName = state.objectEntryValueBindings.get(objectName);\n if (sourceName === undefined) {\n return undefined;\n }\n\n if (\n state.allowAmbiguousAliases &&\n state.globModuleMaps.has(sourceName) &&\n memberName === \"default\"\n ) {\n return unknownCompatReference;\n }\n\n const references = Array.from(state.objectMemberKeys.get(sourceName) ?? []).map((key) =>\n state.objectMembers.get(`${sourceName}.${key}`)?.get(memberName),\n );\n return selectClientReference(references, state.allowAmbiguousAliases);\n}\n\nfunction expressionObjectNameCandidates(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string[] {\n const exactName = expressionObjectName(node, state);\n if (exactName !== undefined) {\n return [exactName];\n }\n\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n\n if (objectName !== undefined && memberName === undefined) {\n return Array.from(state.objectMemberKeys.get(objectName) ?? []).map(\n (key) => `${objectName}.${key}`,\n );\n }\n\n if (memberName === undefined) {\n return [];\n }\n\n return expressionObjectNameCandidates(readOptionalObject(node.object), state).map(\n (candidate) => `${candidate}.${memberName}`,\n );\n}\n\nfunction expressionObjectName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node?.type === \"MemberExpression\") {\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const memberName = propertyName(\n readOptionalObject(node.property),\n node.computed === true,\n state,\n );\n\n return objectName !== undefined && memberName !== undefined\n ? `${objectName}.${memberName}`\n : undefined;\n }\n\n return undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n return stringExpressionValue(node, state);\n}\n\nfunction stringExpressionValue(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (\n (node?.type === \"StringLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"string\"\n ) {\n return node.value;\n }\n\n if (node?.type === \"ConditionalExpression\") {\n return uniqueString([\n stringExpressionValue(readOptionalObject(node.consequent), state),\n stringExpressionValue(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state.stringConstants.get(node.name);\n }\n\n if (\n node?.type === \"ChainExpression\" ||\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"TSNonNullExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return stringExpressionValue(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction setObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members = state.objectMembers.get(objectName) ?? new Map<string, ClientReferenceIr>();\n members.set(memberName, reference);\n state.objectMembers.set(objectName, members);\n addObjectMemberKey(state, objectName, memberName);\n}\n\nfunction addDynamicObjectMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n reference: ClientReferenceIr,\n): void {\n const references = state.dynamicObjectMembers.get(objectName) ?? [];\n references.push(reference);\n state.dynamicObjectMembers.set(objectName, references);\n}\n\nfunction collectDynamicObjectNestedMemberReferences(\n objectName: string,\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): void {\n if (node?.type !== \"ObjectExpression\") {\n return;\n }\n\n for (const propertyValue of readArray(node.properties)) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(\n readOptionalObject(property.key),\n property.computed === true,\n state,\n );\n const reference = expressionClientReference(readOptionalObject(property.value), state);\n if (keyName !== undefined && reference !== undefined) {\n addDynamicObjectNestedMemberReference(state, objectName, keyName, reference);\n }\n }\n}\n\nfunction addDynamicObjectNestedMemberReference(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n reference: ClientReferenceIr,\n): void {\n const members =\n state.dynamicObjectNestedMembers.get(objectName) ?? new Map<string, ClientReferenceIr[]>();\n const references = members.get(memberName) ?? [];\n references.push(reference);\n members.set(memberName, references);\n state.dynamicObjectNestedMembers.set(objectName, members);\n}\n\nfunction addObjectMemberKey(\n state: ClientReferenceAliasState,\n objectName: string,\n memberName: string,\n): void {\n const keys = state.objectMemberKeys.get(objectName) ?? new Set<string>();\n keys.add(memberName);\n state.objectMemberKeys.set(objectName, keys);\n}\n\nfunction isObjectAssignCall(node: Record<string, unknown>): boolean {\n const callee = readOptionalObject(node.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return (\n object?.type === \"Identifier\" &&\n object.name === \"Object\" &&\n property?.type === \"Identifier\" &&\n property.name === \"assign\"\n );\n}\n\nfunction isObjectEntriesCall(node: Record<string, unknown> | undefined): boolean {\n const callee = readOptionalObject(node?.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return (\n object?.type === \"Identifier\" &&\n object.name === \"Object\" &&\n property?.type === \"Identifier\" &&\n property.name === \"entries\"\n );\n}\n\nfunction isImportMetaGlobEagerCall(node: Record<string, unknown> | undefined): boolean {\n const callee = readOptionalObject(node?.callee);\n if (node?.type !== \"CallExpression\" || callee?.type !== \"MemberExpression\") {\n return false;\n }\n\n const property = readOptionalObject(callee.property);\n if (callee.computed === true || property?.type !== \"Identifier\" || property.name !== \"glob\") {\n return false;\n }\n\n const metaProperty = readOptionalObject(callee.object);\n const meta = readOptionalObject(metaProperty?.meta);\n const metaName = meta?.type === \"Identifier\" ? meta.name : undefined;\n const propertyName = readOptionalObject(metaProperty?.property);\n const importMetaPropertyName =\n propertyName?.type === \"Identifier\" ? propertyName.name : undefined;\n if (\n metaProperty?.type !== \"MetaProperty\" ||\n metaName !== \"import\" ||\n importMetaPropertyName !== \"meta\"\n ) {\n return false;\n }\n\n const options = readOptionalObject(readArray(node.arguments)[1]);\n if (options?.type !== \"ObjectExpression\") {\n return false;\n }\n\n return readArray(options.properties).some((propertyValue) => {\n const property = readOptionalObject(propertyValue);\n const key = readOptionalObject(property?.key);\n const value = readOptionalObject(property?.value);\n return (\n property?.type === \"Property\" &&\n property.computed !== true &&\n key?.type === \"Identifier\" &&\n key.name === \"eager\" &&\n value?.type === \"Literal\" &&\n value.value === true\n );\n });\n}\n\nfunction uniqueClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n): ClientReferenceIr | undefined {\n const refs = values.filter((value): value is ClientReferenceIr => value !== undefined);\n if (refs.length === 0) {\n return undefined;\n }\n\n const first = refs[0];\n if (first === undefined) {\n return undefined;\n }\n\n return refs.every(\n (reference) =>\n reference.moduleId === first.moduleId && reference.exportName === first.exportName,\n )\n ? first\n : undefined;\n}\n\nfunction selectClientReference(\n values: readonly (ClientReferenceIr | undefined)[],\n allowAmbiguousAliases: boolean,\n): ClientReferenceIr | undefined {\n if (!allowAmbiguousAliases) {\n return uniqueClientReference(values);\n }\n\n if (values.length === 0 || values.some((value) => value === undefined)) {\n return undefined;\n }\n\n return values[0];\n}\n\nfunction objectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n const keys = Array.from(state.objectMemberKeys.get(objectName) ?? []);\n return keys.map((key) => state.objectMembers.get(objectName)?.get(key));\n}\n\nfunction dynamicObjectMemberReferences(\n state: ClientReferenceAliasState,\n objectName: string,\n): Array<ClientReferenceIr | undefined> {\n return state.dynamicObjectMembers.get(objectName) ?? [];\n}\n\nfunction expressionDynamicObjectNestedMemberReferences(\n node: Record<string, unknown> | undefined,\n memberName: string,\n state: ClientReferenceAliasState,\n): Array<ClientReferenceIr | undefined> {\n if (node?.type !== \"MemberExpression\") {\n return [];\n }\n\n const objectName = expressionObjectName(readOptionalObject(node.object), state);\n const property = propertyName(readOptionalObject(node.property), node.computed === true, state);\n if (objectName === undefined || property !== undefined) {\n return [];\n }\n\n return state.dynamicObjectNestedMembers.get(objectName)?.get(memberName) ?? [];\n}\n\nfunction objectEntriesSourceName(\n node: Record<string, unknown> | undefined,\n state: ClientReferenceAliasState,\n): string | undefined {\n if (!isObjectEntriesCall(node)) {\n return undefined;\n }\n\n const args = readArray(node?.arguments).map(readOptionalObject);\n return expressionObjectName(args[0], state);\n}\n\nfunction forOfObjectEntriesValueBindingName(\n node: Record<string, unknown> | undefined,\n): string | undefined {\n const declaration =\n node?.type === \"VariableDeclaration\"\n ? readOptionalObject(readArray(node.declarations)[0])\n : undefined;\n const pattern =\n declaration?.type === \"VariableDeclarator\" ? readOptionalObject(declaration.id) : node;\n\n if (pattern?.type !== \"ArrayPattern\") {\n return undefined;\n }\n\n const valueElement = readOptionalObject(readArray(pattern.elements)[1]);\n return valueElement?.type === \"Identifier\" && typeof valueElement.name === \"string\"\n ? valueElement.name\n : undefined;\n}\n\nfunction uniqueString(values: readonly (string | undefined)[]): string | undefined {\n const unique = new Set(values.filter((value): value is string => value !== undefined));\n return unique.size === 1 ? Array.from(unique)[0] : undefined;\n}\n\nfunction readOptionalObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction findOxcCompatRuntimeReference(\n name: string,\n runtimeReferences: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = runtimeReferences.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : runtimeReferences.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n const exportName = memberNames.join(\".\");\n return compatRuntimeExports(rootReference.moduleId)?.has(exportName) === true\n ? {\n moduleId: rootReference.moduleId,\n exportName,\n }\n : undefined;\n}\n\nfunction findOxcCompatReactNodeReference(\n name: string,\n references: ReadonlyMap<string, ClientReferenceIr>,\n): ClientReferenceIr | undefined {\n const direct = references.get(name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const [rootName, ...memberNames] = name.split(\".\");\n const rootReference = rootName === undefined ? undefined : references.get(rootName);\n\n if (rootReference === undefined || rootReference.exportName !== \"*\" || memberNames.length === 0) {\n return undefined;\n }\n\n return {\n moduleId: rootReference.moduleId,\n exportName: memberNames.join(\".\"),\n };\n}\n\nfunction compatRuntimeExports(moduleId: string): ReadonlySet<string> | undefined {\n if (moduleId === \"@reckona/mreact-router\") {\n return routerEntryCompatRuntimeExports;\n }\n\n if (moduleId === \"@reckona/mreact-router/link\") {\n return routerLinkCompatRuntimeExports;\n }\n\n return undefined;\n}\n\nfunction isMdxModuleId(moduleId: string): boolean {\n return /\\.mdx(?:[?#].*)?$/.test(moduleId);\n}\n\nfunction visitOxcNode(node: JsxNodeIr, visitor: (node: JsxNodeIr) => void): void {\n visitor(node);\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n visitOxcNode(child, visitor);\n }\n }\n }\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"conditional\") {\n for (const child of [...node.whenTrue, ...node.whenFalse]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"list\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"async-boundary\") {\n for (const child of [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ]) {\n visitOxcNode(child, visitor);\n }\n return;\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n for (const child of node.children) {\n visitOxcNode(child, visitor);\n }\n }\n}\n"]}
package/dist/oxc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oxc.d.ts","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAkC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAuFxE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,EAAE,CAAC,EAAE,QAAQ,CAAC;QACd,sBAAsB,EAAE,OAAO,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AA+CD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,CA6BzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAQzE;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,GACjD,iBAAiB,CAWnB"}
1
+ {"version":3,"file":"oxc.d.ts","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAkC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAoFxE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,EAAE,CAAC,EAAE,QAAQ,CAAC;QACd,sBAAsB,EAAE,OAAO,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AA+CD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,CA6BzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAKzE;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,GACjD,iBAAiB,CAWnB"}
package/dist/oxc.js CHANGED
@@ -15,7 +15,7 @@ import { normalizeOxcExpressionCode, stripOxcGeneratedImports } from "./oxc-code
15
15
  import { analyzeOxcExpressionChild, analyzeOxcJsxNode, } from "./oxc-child-analysis.js";
16
16
  import { lowerOxcDomNodeExpression } from "./oxc-dom-lowering.js";
17
17
  import { lowerOxcCompatObjectExpression, lowerOxcCompatReactNodeExpression, lowerOxcNestedJsxExpression, lowerOxcServerStringExpression, } from "./oxc-nested-lowering.js";
18
- import { isOxcJsxBranch, readOxcReturnExpressionFromStatement, } from "./oxc-expression-utils.js";
18
+ import { isOxcJsxBranch, readOxcReturnExpressionFromStatement } from "./oxc-expression-utils.js";
19
19
  import { collectOxcBodyJsxBindingNames, collectOxcReactiveDerivedFunctionNames, collectOxcReactiveReadAliases, containsOxcJsxSyntax, markOxcRenderValueExpressions, rewriteOxcReactiveAliasExpressionCode, } from "./oxc-render-values.js";
20
20
  import { containsRawJsxInIr } from "./oxc-raw-jsx.js";
21
21
  const oxcBodyLowerers = createOxcBodyLowerers();
@@ -101,7 +101,7 @@ function analyzeOxcToIr(code, program, target, options) {
101
101
  const moduleStatements = [];
102
102
  const moduleBindingNames = new Set();
103
103
  const diagnostics = [];
104
- const clientBoundaryImports = collectOxcClientBoundaryImportComponents(program, new Set(options?.clientBoundaryImports ?? []));
104
+ const clientBoundaryImports = collectOxcClientBoundaryImportComponents(program, new Set(options?.clientBoundaryImports ?? []), new Set(options?.clientBoundaryFallbackImports ?? []));
105
105
  const compatRuntimeImports = collectOxcCompatRuntimeImportComponents(program);
106
106
  const compatReactNodeReferences = options?.compatReactNodeReturnRenderMode === "react-node"
107
107
  ? collectOxcCompatReactNodeComponentReferences(program)
@@ -190,7 +190,7 @@ function analyzeOxcToIr(code, program, target, options) {
190
190
  };
191
191
  }
192
192
  function isCssImportSource(source) {
193
- return typeof source === "string" && /\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source);
193
+ return (typeof source === "string" && /\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source));
194
194
  }
195
195
  function componentNamesFromProgram(program, moduleBindingNames) {
196
196
  return new Set([
@@ -368,15 +368,14 @@ function analyzeOxcFunctionLikeComponent(code, name, functionLike, exportName, c
368
368
  : readSource(code, returnExpression)),
369
369
  renderMode: "html",
370
370
  }
371
- : analyzeOxcDynamicRootReturn(code, returnExpression, childAnalysisContext, bodyStatementJsx) ??
372
- {
373
- kind: "expr",
374
- code: normalizeOxcExpressionCode(compatReactNodeReturn
375
- ? (lowerOxcCompatReactNodeExpression(code, returnExpression, componentNames, target, diagnostics) ??
376
- stripOxcGeneratedImports(transformJsxToCreateElementWithOxc(readSource(code, returnExpression))))
377
- : readSource(code, returnExpression)),
378
- ...(compatReactNodeReturn ? { renderMode: "react-node" } : {}),
379
- });
371
+ : (analyzeOxcDynamicRootReturn(code, returnExpression, childAnalysisContext, bodyStatementJsx) ?? {
372
+ kind: "expr",
373
+ code: normalizeOxcExpressionCode(compatReactNodeReturn
374
+ ? (lowerOxcCompatReactNodeExpression(code, returnExpression, componentNames, target, diagnostics) ??
375
+ stripOxcGeneratedImports(transformJsxToCreateElementWithOxc(readSource(code, returnExpression))))
376
+ : readSource(code, returnExpression)),
377
+ ...(compatReactNodeReturn ? { renderMode: "react-node" } : {}),
378
+ }));
380
379
  markOxcRenderValueExpressions([root], new Set([
381
380
  ...moduleRenderValueBindings,
382
381
  ...collectOxcBodyJsxBindingNames(body.filter((bodyStatement) => bodyStatement !== rootStatement &&
@@ -473,8 +472,7 @@ function isOxcRootReturnExpression(expression) {
473
472
  return isOxcEmptyRootReturn(expression) || isOxcRenderableRootReturn(expression);
474
473
  }
475
474
  function isOxcEmptyRootReturn(expression) {
476
- return (expression.type === "Literal" &&
477
- (expression.value === null || expression.value === false));
475
+ return expression.type === "Literal" && (expression.value === null || expression.value === false);
478
476
  }
479
477
  function isOxcRenderableRootReturn(expression) {
480
478
  return (isJsxRoot(expression.type) ||
@@ -486,8 +484,7 @@ function analyzeOxcDynamicRootReturnShape(expression) {
486
484
  if (expression.type === "ConditionalExpression") {
487
485
  return true;
488
486
  }
489
- return (expression.type === "LogicalExpression" &&
490
- isOxcJsxBranch(readObject(expression.right)));
487
+ return expression.type === "LogicalExpression" && isOxcJsxBranch(readObject(expression.right));
491
488
  }
492
489
  function findOxcRootStatement(body) {
493
490
  return body.find((bodyStatement) => {