@reckona/mreact-compiler 0.0.73 → 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 CHANGED
@@ -1,5 +1,5 @@
1
- export { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectClientRouteModuleAnalysis, collectFormActionReferences, collectFormActionReferenceNames, collectStaticExportReferences, collectStaticImportReferences, collectStaticModuleSpecifiers, collectTopLevelExportRenderInfo, collectTopLevelValueExportNames, demoteTopLevelExportDeclarations, hasClientRuntimeSyntax, hasModuleDirective, hasTopLevelExportDeclaration, stripTopLevelExportDeclarations, } from "./internal.js";
2
- export type { StaticExportReference, FormActionReference, StaticImportReference, StaticImportSpecifierReference, ClientRouteModuleAnalysis, ClientRouteStaticImportReference, TopLevelExportRenderInfo, } from "./internal.js";
1
+ export { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectClientRouteModuleAnalysis, collectFormActionExpressionReferences, collectFormActionReferences, collectFormActionReferenceNames, collectStaticExportReferences, collectStaticImportReferences, collectStaticModuleSpecifiers, collectTopLevelExportRenderInfo, collectTopLevelValueExportNames, demoteTopLevelExportDeclarations, hasClientRuntimeSyntax, hasModuleDirective, hasTopLevelExportDeclaration, stripTopLevelExportDeclarations, } from "./internal.js";
2
+ export type { StaticExportReference, FormActionExpressionReference, FormActionReference, StaticImportReference, StaticImportSpecifierReference, ClientRouteModuleAnalysis, ClientRouteStaticImportReference, TopLevelExportRenderInfo, } from "./internal.js";
3
3
  export { formatDiagnostic } from "./diagnostics.js";
4
4
  export { transform } from "./transform.js";
5
5
  export type { CompileTarget, CompilerFrontend, CompilerMetadata, ClientReferenceMetadata, ComponentMetadata, Diagnostic, ModuleMetadata, ServerBootstrapMode, ServerEscapeOptions, RuntimeImport, ServerOutputMode, SourceLocation, TransformInput, TransformOutput, } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectClientRouteModuleAnalysis, collectFormActionReferences, collectFormActionReferenceNames, collectStaticExportReferences, collectStaticImportReferences, collectStaticModuleSpecifiers, collectTopLevelExportRenderInfo, collectTopLevelValueExportNames, demoteTopLevelExportDeclarations, hasClientRuntimeSyntax, hasModuleDirective, hasTopLevelExportDeclaration, stripTopLevelExportDeclarations, } from "./internal.js";
1
+ export { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectClientRouteModuleAnalysis, collectFormActionExpressionReferences, collectFormActionReferences, collectFormActionReferenceNames, collectStaticExportReferences, collectStaticImportReferences, collectStaticModuleSpecifiers, collectTopLevelExportRenderInfo, collectTopLevelValueExportNames, demoteTopLevelExportDeclarations, hasClientRuntimeSyntax, hasModuleDirective, hasTopLevelExportDeclaration, stripTopLevelExportDeclarations, } from "./internal.js";
2
2
  export { formatDiagnostic } from "./diagnostics.js";
3
3
  export { transform } from "./transform.js";
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAUvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export {\n collectIdentifierReferenceNames,\n collectJsxComponentRootNames,\n collectClientRouteModuleAnalysis,\n collectFormActionReferences,\n collectFormActionReferenceNames,\n collectStaticExportReferences,\n collectStaticImportReferences,\n collectStaticModuleSpecifiers,\n collectTopLevelExportRenderInfo,\n collectTopLevelValueExportNames,\n demoteTopLevelExportDeclarations,\n hasClientRuntimeSyntax,\n hasModuleDirective,\n hasTopLevelExportDeclaration,\n stripTopLevelExportDeclarations,\n} from \"./internal.js\";\nexport type {\n StaticExportReference,\n FormActionReference,\n StaticImportReference,\n StaticImportSpecifierReference,\n ClientRouteModuleAnalysis,\n ClientRouteStaticImportReference,\n TopLevelExportRenderInfo,\n} from \"./internal.js\";\nexport { formatDiagnostic } from \"./diagnostics.js\";\nexport { transform } from \"./transform.js\";\nexport type {\n CompileTarget,\n CompilerFrontend,\n CompilerMetadata,\n ClientReferenceMetadata,\n ComponentMetadata,\n Diagnostic,\n ModuleMetadata,\n ServerBootstrapMode,\n ServerEscapeOptions,\n RuntimeImport,\n ServerOutputMode,\n SourceLocation,\n TransformInput,\n TransformOutput,\n} from \"./types.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAWvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export {\n collectIdentifierReferenceNames,\n collectJsxComponentRootNames,\n collectClientRouteModuleAnalysis,\n collectFormActionExpressionReferences,\n collectFormActionReferences,\n collectFormActionReferenceNames,\n collectStaticExportReferences,\n collectStaticImportReferences,\n collectStaticModuleSpecifiers,\n collectTopLevelExportRenderInfo,\n collectTopLevelValueExportNames,\n demoteTopLevelExportDeclarations,\n hasClientRuntimeSyntax,\n hasModuleDirective,\n hasTopLevelExportDeclaration,\n stripTopLevelExportDeclarations,\n} from \"./internal.js\";\nexport type {\n StaticExportReference,\n FormActionExpressionReference,\n FormActionReference,\n StaticImportReference,\n StaticImportSpecifierReference,\n ClientRouteModuleAnalysis,\n ClientRouteStaticImportReference,\n TopLevelExportRenderInfo,\n} from \"./internal.js\";\nexport { formatDiagnostic } from \"./diagnostics.js\";\nexport { transform } from \"./transform.js\";\nexport type {\n CompileTarget,\n CompilerFrontend,\n CompilerMetadata,\n ClientReferenceMetadata,\n ComponentMetadata,\n Diagnostic,\n ModuleMetadata,\n ServerBootstrapMode,\n ServerEscapeOptions,\n RuntimeImport,\n ServerOutputMode,\n SourceLocation,\n TransformInput,\n TransformOutput,\n} from \"./types.js\";\n"]}
@@ -55,6 +55,13 @@ export interface FormActionReference {
55
55
  name: string;
56
56
  start: number;
57
57
  }
58
+ export interface FormActionExpressionReference {
59
+ end: number;
60
+ expression: string;
61
+ expressionEnd: number;
62
+ expressionStart: number;
63
+ start: number;
64
+ }
58
65
  export declare function analyzeToIr(input: AnalyzeToIrInput): AnalyzeToIrOutput;
59
66
  export declare function analyzeCompilerModuleContextToIr(context: CompilerModuleContext, input: Omit<AnalyzeToIrInput, "code" | "filename">): AnalyzeToIrOutput;
60
67
  export declare function createCompilerModuleContext(input: {
@@ -104,6 +111,10 @@ export declare function collectFormActionReferences(input: {
104
111
  code: string;
105
112
  filename?: string | undefined;
106
113
  }): FormActionReference[];
114
+ export declare function collectFormActionExpressionReferences(input: {
115
+ code: string;
116
+ filename?: string | undefined;
117
+ }): FormActionExpressionReference[];
107
118
  export declare function collectTopLevelValueExportNames(input: {
108
119
  code: string;
109
120
  filename?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
package/dist/internal.js CHANGED
@@ -78,6 +78,14 @@ export function collectFormActionReferences(input) {
78
78
  collectFormActionReferencesFromNode(parsed.program, references);
79
79
  return references.sort((left, right) => left.start === right.start ? left.name.localeCompare(right.name) : left.start - right.start);
80
80
  }
81
+ export function collectFormActionExpressionReferences(input) {
82
+ const parsed = parseModule(input.code, input.filename);
83
+ const references = [];
84
+ collectFormActionExpressionReferencesFromNode(input.code, parsed.program, references);
85
+ return references.sort((left, right) => left.start === right.start
86
+ ? left.expression.localeCompare(right.expression)
87
+ : left.start - right.start);
88
+ }
81
89
  export function collectTopLevelValueExportNames(input) {
82
90
  const parsed = parseModule(input.code, input.filename);
83
91
  const names = new Set();
@@ -1071,6 +1079,59 @@ function collectFormActionReferencesFromNode(node, references) {
1071
1079
  collectFormActionReferencesFromNode(value, references);
1072
1080
  }
1073
1081
  }
1082
+ function collectFormActionExpressionReferencesFromNode(code, node, references) {
1083
+ if (Array.isArray(node)) {
1084
+ for (const child of node) {
1085
+ collectFormActionExpressionReferencesFromNode(code, child, references);
1086
+ }
1087
+ return;
1088
+ }
1089
+ const object = readOptionalObject(node);
1090
+ if (object === undefined) {
1091
+ return;
1092
+ }
1093
+ if (typeof object.type === "string" && object.type.startsWith("TS")) {
1094
+ return;
1095
+ }
1096
+ if (object.type === "ImportDeclaration") {
1097
+ return;
1098
+ }
1099
+ if (object.type === "JSXOpeningElement" &&
1100
+ jsxTagName(readOptionalObject(object.name)) === "form") {
1101
+ const attributes = Array.isArray(object.attributes) ? object.attributes : [];
1102
+ for (const attribute of attributes) {
1103
+ const attr = readObject(attribute);
1104
+ if (attr.type !== "JSXAttribute" || readObject(attr.name).name !== "action") {
1105
+ continue;
1106
+ }
1107
+ const value = readObject(attr.value);
1108
+ const expression = readObject(value.expression);
1109
+ const start = typeof object.start === "number" ? object.start : undefined;
1110
+ const end = typeof object.end === "number" ? object.end : undefined;
1111
+ const expressionStart = typeof expression.start === "number" ? expression.start : undefined;
1112
+ const expressionEnd = typeof expression.end === "number" ? expression.end : undefined;
1113
+ if (value.type === "JSXExpressionContainer" &&
1114
+ start !== undefined &&
1115
+ end !== undefined &&
1116
+ expressionStart !== undefined &&
1117
+ expressionEnd !== undefined) {
1118
+ references.push({
1119
+ end,
1120
+ expression: code.slice(expressionStart, expressionEnd).trim(),
1121
+ expressionEnd,
1122
+ expressionStart,
1123
+ start,
1124
+ });
1125
+ }
1126
+ }
1127
+ }
1128
+ for (const [key, value] of Object.entries(object)) {
1129
+ if (key === "type" || key === "start" || key === "end" || key === "loc") {
1130
+ continue;
1131
+ }
1132
+ collectFormActionExpressionReferencesFromNode(code, value, references);
1133
+ }
1134
+ }
1074
1135
  function jsxTagName(node) {
1075
1136
  if (node === undefined) {
1076
1137
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModuleIr } from \"./ir.js\";\nimport {\n analyzeCompilerModuleContextWithOxc,\n analyzeWithOxc,\n} from \"./oxc.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nexport { transformCompilerModuleContext } from \"./transform.js\";\nexport { stripTypeScriptWithOxc } from \"./oxc-transform.js\";\nexport type { CompilerModuleContext } from \"./compiler-module-context.js\";\nimport type {\n AnalyzeModuleOptions,\n CompileTarget,\n Diagnostic,\n} from \"./types.js\";\n\nexport interface AnalyzeToIrInput {\n code: string;\n filename: string;\n target: CompileTarget;\n options?: AnalyzeModuleOptions;\n}\n\nexport interface AnalyzeToIrOutput {\n ir: ModuleIr;\n diagnostics: Diagnostic[];\n usedTypescriptFallback?: boolean;\n}\n\nexport interface StaticImportReference {\n localNames: string[];\n sideEffect: boolean;\n source: string;\n}\n\nexport interface StaticImportSpecifierReference {\n importedName: string;\n kind: \"default\" | \"named\" | \"namespace\";\n localName: string;\n}\n\nexport interface ClientRouteStaticImportReference extends StaticImportReference {\n specifiers: StaticImportSpecifierReference[];\n}\n\nexport interface StaticExportReference {\n exportedNames: string[];\n exportAll: boolean;\n source: string;\n}\n\nexport interface TopLevelExportRenderInfo {\n calledComponentRoots: string[];\n clientRuntime: boolean;\n name: string;\n renderedComponentRoots: string[];\n}\n\nexport interface ClientRouteModuleAnalysis {\n clientRuntime: boolean;\n hasUseClientDirective: boolean;\n hasUseServerDirective: boolean;\n componentCallRoots: string[];\n identifierReferences: string[];\n jsxComponentRoots: string[];\n staticExports: StaticExportReference[];\n staticImports: ClientRouteStaticImportReference[];\n topLevelExportRenderInfo: TopLevelExportRenderInfo[];\n}\n\nexport interface FormActionReference {\n end: number;\n name: string;\n start: number;\n}\n\ninterface ComponentAliasState {\n aliases: Map<string, string>;\n stringConstants: Map<string, string>;\n}\n\nexport function analyzeToIr(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeWithOxc(input);\n}\n\nexport function analyzeCompilerModuleContextToIr(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(context, input);\n}\n\nexport function createCompilerModuleContext(input: {\n code: string;\n filename?: string | undefined;\n}): CompilerModuleContext {\n return createCompilerModuleContextWithOxc(input);\n}\n\nexport function hasTopLevelExportDeclaration(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): boolean {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).some((statement) =>\n exportedNames(statement).some((name) => names.has(name)),\n );\n}\n\nexport function stripTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationReplacement(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function demoteTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationDemotion(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function collectStaticModuleSpecifiers(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticModuleSpecifier);\n}\n\nexport function collectStaticImportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticImportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticImportReference);\n}\n\nexport function collectStaticExportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticExportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticExportReference);\n}\n\nexport function collectJsxComponentRootNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n const aliasState = createComponentAliasState();\n\n collectJsxComponentRootNamesFromNode(parsed.program, names);\n collectSimpleComponentAliasesFromNode(parsed.program, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nexport function collectIdentifierReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n collectIdentifierReferenceNamesFromNode(parsed.program, names);\n return Array.from(names).sort();\n}\n\nexport function collectFormActionReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n return Array.from(\n new Set(collectFormActionReferences(input).map((reference) => reference.name)),\n ).sort();\n}\n\nexport function collectFormActionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionReference[] = [];\n\n collectFormActionReferencesFromNode(parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start ? left.name.localeCompare(right.name) : left.start - right.start,\n );\n}\n\nexport function collectTopLevelValueExportNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n for (const statement of programBody(parsed.program)) {\n for (const name of exportedNames(statement)) {\n names.add(name);\n }\n }\n\n return Array.from(names).sort();\n}\n\nexport function collectTopLevelExportRenderInfo(input: {\n code: string;\n filename?: string | undefined;\n}): TopLevelExportRenderInfo[] {\n const parsed = parseModule(input.code, input.filename);\n\n return collectTopLevelExportRenderInfoFromProgram(parsed.program);\n}\n\nexport function collectClientRouteModuleAnalysis(input: {\n code: string;\n filename?: string | undefined;\n}): ClientRouteModuleAnalysis {\n const parsed = parseModule(input.code, input.filename);\n\n return collectClientRouteModuleAnalysisFromContext(parsed);\n}\n\nexport function collectClientRouteModuleAnalysisFromContext(\n context: CompilerModuleContext,\n): ClientRouteModuleAnalysis {\n const parsed = parseModuleContext(context);\n const body = programBody(parsed.program);\n const identifierReferences = new Set<string>();\n\n collectIdentifierReferenceNamesFromNode(parsed.program, identifierReferences);\n\n return {\n clientRuntime: hasClientRuntimeSyntaxNode(parsed.program),\n componentCallRoots: collectComponentCallRootNamesFromSubtree(parsed.program),\n hasUseClientDirective: hasModuleDirectiveInProgram(parsed.program, \"use client\"),\n hasUseServerDirective: hasModuleDirectiveInProgram(parsed.program, \"use server\"),\n identifierReferences: Array.from(identifierReferences).sort(),\n jsxComponentRoots: collectJsxComponentRootNamesFromSubtree(parsed.program),\n staticExports: body.flatMap(staticExportReference),\n staticImports: body.flatMap(staticImportReference),\n topLevelExportRenderInfo: collectTopLevelExportRenderInfoFromProgram(parsed.program),\n };\n}\n\nfunction collectTopLevelExportRenderInfoFromProgram(program: unknown): TopLevelExportRenderInfo[] {\n const declarations = new Map<string, unknown>();\n const exported = new Map<string, string>();\n const directExports = new Map<string, unknown>();\n const aliasState = createComponentAliasState();\n\n collectSimpleComponentAliasesFromNode(program, aliasState);\n\n for (const statement of programBody(program)) {\n collectTopLevelDeclarationReferences(statement, declarations);\n\n if (statement.type === \"ExportDefaultDeclaration\") {\n const declaration = readOptionalObject(statement.declaration);\n directExports.set(\"default\", declaration);\n exported.set(\"default\", \"default\");\n continue;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n if (declaration !== undefined) {\n for (const name of exportedNames(statement)) {\n exported.set(name, name);\n directExports.set(name, declarationForExportedName(declaration, name) ?? declaration);\n }\n continue;\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers.map(readObject) : [];\n for (const specifier of specifiers) {\n const exportedName = exportedNameForSpecifier(specifier);\n const localName = localNameForExportSpecifier(specifier);\n\n if (exportedName !== undefined && localName !== undefined) {\n exported.set(exportedName, localName);\n }\n }\n }\n\n return [...exported.entries()]\n .map(([name, localName]) => {\n const node = directExports.get(name) ?? declarations.get(localName);\n const calledComponentRoots = node === undefined\n ? []\n : collectComponentCallRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const renderedComponentRoots = node === undefined\n ? []\n : collectJsxComponentRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const clientRuntime = node === undefined\n ? false\n : hasReachableExportClientRuntime({\n aliases: aliasState.aliases,\n declarations,\n localName,\n node,\n });\n\n return node === undefined\n ? undefined\n : {\n calledComponentRoots,\n clientRuntime,\n name,\n renderedComponentRoots,\n };\n })\n .filter((item): item is TopLevelExportRenderInfo => item !== undefined)\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\nfunction hasReachableLocalClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n roots: readonly string[];\n seen: Set<string>;\n}): boolean {\n for (const root of options.roots) {\n const resolved = options.aliases.get(root) ?? root;\n if (options.seen.has(resolved)) {\n continue;\n }\n\n const declaration = options.declarations.get(resolved);\n if (declaration === undefined) {\n continue;\n }\n\n if (hasClientRuntimeSyntaxNode(declaration)) {\n return true;\n }\n\n options.seen.add(resolved);\n const nestedCalledRoots = collectComponentCallRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n const nestedRenderedRoots = collectJsxComponentRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...nestedCalledRoots, ...nestedRenderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasReachableExportClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n localName: string;\n node: unknown;\n}): boolean {\n return hasReachableExportClientRuntimeNode({\n aliases: options.aliases,\n declarations: options.declarations,\n node: options.node,\n seen: new Set([options.localName]),\n });\n}\n\nfunction hasReachableExportClientRuntimeNode(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n node: unknown;\n seen: Set<string>;\n}): boolean {\n if (hasClientRuntimeSyntaxNode(options.node)) {\n return true;\n }\n\n const references = collectRuntimeReferenceRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n for (const reference of references) {\n const declaration = options.declarations.get(reference);\n if (\n declaration !== undefined &&\n !isFunctionLikeClientRuntimeDeclaration(declaration) &&\n hasClientRuntimeSyntaxNode(declaration)\n ) {\n return true;\n }\n }\n\n const calledRoots = collectRuntimeCallRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n const renderedRoots = collectJsxComponentRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...calledRoots, ...renderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction collectRuntimeReferenceRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeReferenceRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n undefined,\n undefined,\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeCallRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeCallRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeReferenceRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeReferenceRootNamesFromNode(\n child,\n names,\n state,\n shadowed,\n parent,\n parentKey,\n );\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (object.type === \"Identifier\" && typeof object.name === \"string\") {\n if (\n !shadowed.has(object.name) &&\n isRuntimeReferenceIdentifier(parent, parentKey)\n ) {\n names.add(state.aliases.get(object.name) ?? object.name);\n }\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeReferenceRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n object,\n \"body\",\n );\n return;\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeReferenceRootNamesFromNode(\n value,\n names,\n state,\n childShadowed,\n object,\n key,\n );\n }\n}\n\nfunction collectRuntimeCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeCallRootNamesFromNode(child, names, state, shadowed);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeCallRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n );\n return;\n }\n\n if (object.type === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && !shadowed.has(root)) {\n names.add(root);\n }\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeCallRootNamesFromNode(value, names, state, childShadowed);\n }\n}\n\nfunction shouldSkipRuntimeReferenceNode(node: Record<string, unknown>): boolean {\n return (\n (typeof node.type === \"string\" && node.type.startsWith(\"TS\")) ||\n node.type === \"ImportDeclaration\"\n );\n}\n\nfunction shouldSkipRuntimeReferenceProperty(\n node: Record<string, unknown>,\n key: string,\n): boolean {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n return true;\n }\n\n if (key === \"id\" && isDeclarationWithId(node)) {\n return true;\n }\n\n if (key === \"params\" && isFunctionLikeClientRuntimeDeclaration(node)) {\n return true;\n }\n\n if (key === \"key\" && isNonComputedPropertyKey(node)) {\n return true;\n }\n\n return false;\n}\n\nfunction isRuntimeReferenceIdentifier(\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\" && isDeclarationWithId(parent)) {\n return false;\n }\n\n if (parentKey === \"params\" && isFunctionLikeClientRuntimeDeclaration(parent)) {\n return false;\n }\n\n if (parentKey === \"key\" && isNonComputedPropertyKey(parent)) {\n return false;\n }\n\n return !(\n (parent.type === \"BreakStatement\" ||\n parent.type === \"ContinueStatement\" ||\n parent.type === \"LabeledStatement\") &&\n parentKey === \"label\"\n );\n}\n\nfunction addBlockBindingNames(\n node: unknown,\n names: Set<string>,\n): ReadonlySet<string> {\n const body = readArray(readObject(node).body);\n\n for (const statement of body) {\n const object = readObject(statement);\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectBindingNamesInto(readObject(declaration).id, names);\n }\n continue;\n }\n\n if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectBindingNamesInto(object.id, names);\n }\n }\n\n return names;\n}\n\nfunction collectBindingNamesInto(node: unknown, names: Set<string>): void {\n for (const name of bindingNames(node)) {\n names.add(name);\n }\n}\n\nfunction isFunctionLikeClientRuntimeDeclaration(node: unknown): boolean {\n const object = readObject(node);\n return (\n object.type === \"FunctionDeclaration\" ||\n object.type === \"FunctionExpression\" ||\n object.type === \"ArrowFunctionExpression\"\n );\n}\n\nfunction isDeclarationWithId(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 isNonComputedPropertyKey(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\nexport function hasModuleDirective(input: {\n code: string;\n directive: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasModuleDirectiveInProgram(parsed.program, input.directive);\n}\n\nfunction hasModuleDirectiveInProgram(program: unknown, expectedDirective: string): boolean {\n for (const statement of programBody(program)) {\n if (statement.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const directive = statement.directive;\n if (typeof directive !== \"string\") {\n return false;\n }\n\n if (directive === expectedDirective) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function hasClientRuntimeSyntax(input: {\n code: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasClientRuntimeSyntaxNode(parsed.program);\n}\n\ninterface Replacement {\n end: number;\n start: number;\n text: string;\n}\n\nfunction parseModule(code: string, filename: string | undefined) {\n return parseModuleContext(createCompilerModuleContext({ code, filename }));\n}\n\nfunction parseModuleContext(context: CompilerModuleContext): CompilerModuleContext {\n if (context.parseErrors.length > 0) {\n throw new Error(\n `${context.filename}: ${context.parseErrors\n .map((error) => readObject(error).message)\n .filter((message): message is string => typeof message === \"string\")\n .join(\"\\n\")}`,\n );\n }\n\n return context;\n}\n\nfunction programBody(program: unknown): Record<string, unknown>[] {\n const body = readObject(program).body;\n return Array.isArray(body) ? body.map(readObject) : [];\n}\n\nfunction exportedNames(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ExportDefaultDeclaration\") {\n return [\"default\"];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return [];\n }\n\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration !== undefined) {\n if (declaration.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n return typeof name === \"string\" ? [name] : [];\n }\n\n if (declaration.type === \"VariableDeclaration\") {\n const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];\n\n return declarations.flatMap((item) => bindingNames(readObject(item).id));\n }\n\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];\n return specifiers.flatMap((specifier) => {\n const name = exportedNameForSpecifier(readObject(specifier));\n\n return typeof name === \"string\" ? [name] : [];\n });\n}\n\nfunction collectTopLevelDeclarationReferences(\n statement: Record<string, unknown>,\n declarations: Map<string, unknown>,\n): void {\n const declaration =\n statement.type === \"ExportNamedDeclaration\"\n ? readOptionalObject(statement.declaration)\n : statement;\n\n if (declaration?.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n\n if (typeof name === \"string\") {\n declarations.set(name, declaration);\n }\n return;\n }\n\n if (declaration?.type !== \"VariableDeclaration\") {\n return;\n }\n\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n const id = readOptionalObject(declarator.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (name !== undefined) {\n declarations.set(name, readOptionalObject(declarator.init) ?? declarator);\n }\n }\n}\n\nfunction declarationForExportedName(\n declaration: Record<string, unknown>,\n name: string,\n): unknown | undefined {\n if (declaration.type === \"VariableDeclaration\") {\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n if (bindingNames(declarator.id).includes(name)) {\n return readOptionalObject(declarator.init) ?? declarator;\n }\n }\n }\n\n return declaration;\n}\n\nfunction localNameForExportSpecifier(specifier: Record<string, unknown>): string | undefined {\n const local = readOptionalObject(specifier.local);\n const name = local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction exportDeclarationDemotion(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n const exported = exportedNames(statement);\n\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return partialSpecifierExportReplacement(code, statement, names);\n }\n\n const range = statementRange(code, statement);\n\n if (range === undefined) {\n return undefined;\n }\n\n if (declaration?.type === \"FunctionDeclaration\" || declaration?.type === \"VariableDeclaration\") {\n return { ...range, text: `${nodeText(code, declaration)}\\n` };\n }\n\n return { ...range, text: \"\" };\n}\n\nfunction exportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type === \"ExportDefaultDeclaration\") {\n const range = statementRange(code, statement);\n return names.has(\"default\") && range !== undefined ? { ...range, text: \"\" } : undefined;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const partial = partialExportDeclarationReplacement(code, statement, names);\n\n if (partial !== undefined) {\n return partial;\n }\n\n const exported = exportedNames(statement);\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n}\n\nfunction partialExportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration?.type === \"VariableDeclaration\") {\n return partialVariableExportReplacement(code, statement, declaration, names);\n }\n\n if (declaration !== undefined) {\n return undefined;\n }\n\n return partialSpecifierExportReplacement(code, statement, names);\n}\n\nfunction partialVariableExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n declaration: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declarations = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n if (declarations.length <= 1) {\n return undefined;\n }\n\n const kept = declarations.filter((declarator) => {\n const declaredNames = bindingNames(declarator.id);\n return declaredNames.every((name) => !names.has(name));\n });\n\n if (kept.length === declarations.length) {\n return undefined;\n }\n\n if (kept.length === 0) {\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n }\n\n const range = statementRange(code, statement);\n const kind = typeof declaration.kind === \"string\" ? declaration.kind : \"const\";\n\n return range === undefined\n ? undefined\n : {\n ...range,\n text: `export ${kind} ${kept.map((item) => nodeText(code, item)).join(\", \")};\\n`,\n };\n}\n\nfunction partialSpecifierExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n if (specifiers.length <= 1) {\n return undefined;\n }\n\n const kept = specifiers.filter((specifier) => {\n const name = exportedNameForSpecifier(specifier);\n return typeof name !== \"string\" || !names.has(name);\n });\n\n if (kept.length === specifiers.length) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n if (range === undefined) {\n return undefined;\n }\n\n if (kept.length === 0) {\n return { ...range, text: \"\" };\n }\n\n const source = readOptionalObject(statement.source);\n const sourceText = source === undefined ? \"\" : ` from ${nodeText(code, source)}`;\n const exportKind = statement.exportKind === \"type\" ? \"export type\" : \"export\";\n\n return {\n ...range,\n text: `${exportKind} { ${kept.map((item) => nodeText(code, item)).join(\", \")} }${sourceText};\\n`,\n };\n}\n\nfunction staticModuleSpecifier(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ImportDeclaration\") {\n if (statement.importKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n if (statement.type === \"ExportAllDeclaration\" || statement.type === \"ExportNamedDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n return [];\n}\n\nfunction staticImportReference(\n statement: Record<string, unknown>,\n): ClientRouteStaticImportReference[] {\n if (statement.type !== \"ImportDeclaration\" || statement.importKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n const importSpecifiers = specifiers.flatMap(staticImportSpecifierReference);\n const localNames = specifiers\n .filter((specifier) => specifier.importKind !== \"type\")\n .flatMap((specifier) => {\n const local = readOptionalObject(specifier.local);\n return typeof local?.name === \"string\" ? [local.name] : [];\n });\n\n return [\n {\n localNames,\n sideEffect: localNames.length === 0,\n source,\n specifiers: importSpecifiers,\n },\n ];\n}\n\nfunction staticImportSpecifierReference(\n specifier: Record<string, unknown>,\n): StaticImportSpecifierReference[] {\n if (specifier.importKind === \"type\") {\n return [];\n }\n\n const localName = readOptionalObject(specifier.local)?.name;\n if (typeof localName !== \"string\") {\n return [];\n }\n\n if (specifier.type === \"ImportDefaultSpecifier\") {\n return [{ importedName: \"default\", kind: \"default\", localName }];\n }\n\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n return [{ importedName: \"*\", kind: \"namespace\", localName }];\n }\n\n const imported = readOptionalObject(specifier.imported);\n const importedName = imported?.name ?? imported?.value;\n return typeof importedName === \"string\"\n ? [{ importedName, kind: \"named\", localName }]\n : [];\n}\n\nfunction staticExportReference(statement: Record<string, unknown>): StaticExportReference[] {\n if (statement.type === \"ExportAllDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n return source === undefined\n ? []\n : [{ exportedNames: [], exportAll: true, source }];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\" || statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n return [\n {\n exportedNames: exportedNames(statement),\n exportAll: false,\n source,\n },\n ];\n}\n\nfunction sourceValue(statement: Record<string, unknown>): string[] {\n const source = readOptionalObject(statement.source);\n const value = source?.value;\n\n return typeof value === \"string\" ? [value] : [];\n}\n\nfunction collectJsxComponentRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectJsxComponentRootNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (object.type === \"JSXElement\") {\n const opening = readOptionalObject(object.openingElement);\n const nameNode = readOptionalObject(opening?.name);\n const name = jsxNameRoot(nameNode);\n if (name !== undefined && (nameNode?.type === \"JSXMemberExpression\" || /^[A-Z]/.test(name))) {\n names.add(name);\n }\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 collectJsxComponentRootNamesFromNode(value, names);\n }\n}\n\nfunction collectJsxComponentRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectJsxComponentRootNamesFromNode(node, names);\n collectSimpleComponentAliasesFromNode(node, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction collectComponentCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectComponentCallRootNamesFromNode(child, names, 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 === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && /^[A-Z]/.test(root)) {\n names.add(root);\n }\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 collectComponentCallRootNamesFromNode(value, names, state);\n }\n}\n\nfunction collectComponentCallRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectSimpleComponentAliasesFromNode(node, aliasState);\n collectComponentCallRootNamesFromNode(node, names, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction jsxNameRoot(node: Record<string, unknown> | undefined): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n return jsxNameRoot(readOptionalObject(node.object));\n }\n\n return undefined;\n}\n\nfunction collectSimpleComponentAliasesFromNode(\n node: unknown,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectSimpleComponentAliasesFromNode(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 const declarations = Array.isArray(object.declarations) ? object.declarations : [];\n for (const declaration of declarations) {\n collectVariableDeclaratorComponentAliases(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectVariableDeclaratorComponentAliases(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectAssignmentComponentAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectObjectAssignComponentAliases(object, state);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectSimpleComponentAliasesFromNode(value, state);\n }\n}\n\nfunction createComponentAliasState(\n aliases?: ReadonlyMap<string, string> | undefined,\n): ComponentAliasState {\n return {\n aliases: new Map(aliases),\n stringConstants: new Map(),\n };\n}\n\nfunction collectVariableDeclaratorComponentAliases(\n object: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n constant: boolean,\n): void {\n if (object?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(object.id);\n const init = readOptionalObject(object.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 collectObjectLiteralComponentAliases(aliasName, init, state);\n\n const rootName = expressionRootName(init, state);\n if (rootName !== undefined) {\n state.aliases.set(aliasName, rootName);\n }\n}\n\nfunction collectObjectLiteralComponentAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n const properties = Array.isArray(init.properties) ? init.properties : [];\n for (const propertyValue of 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 valueName = expressionRootName(readOptionalObject(property.value), state);\n if (keyName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectName}.${keyName}`, valueName);\n }\n }\n}\n\nfunction collectAssignmentComponentAlias(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n const right = readOptionalObject(node.right);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectRoot = expressionRootName(readOptionalObject(left.object), state);\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const valueName = expressionRootName(right, state);\n if (objectRoot !== undefined && memberName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectRoot}.${memberName}`, valueName);\n }\n}\n\nfunction collectObjectAssignComponentAliases(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = Array.isArray(node.arguments) ? node.arguments.map(readOptionalObject) : [];\n const target = expressionRootName(args[0], state);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectObjectLiteralComponentAliases(target, source, state);\n }\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 expandJsxComponentAliasRoots(\n names: Set<string>,\n aliases: ReadonlyMap<string, string>,\n): void {\n let changed = true;\n\n while (changed) {\n changed = false;\n\n for (const [alias, root] of aliases) {\n if (names.has(alias) && !names.has(root)) {\n names.add(root);\n changed = true;\n }\n }\n }\n}\n\nfunction expressionRootName(\n node: Record<string, unknown> | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"MemberExpression\") {\n const objectRoot = expressionRootName(readOptionalObject(node.object), state);\n const aliasedObjectRoot =\n objectRoot === undefined ? undefined : state?.aliases.get(objectRoot) ?? objectRoot;\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const memberAlias =\n objectRoot !== undefined && memberName !== undefined\n ? state?.aliases.get(`${objectRoot}.${memberName}`) ??\n (aliasedObjectRoot === undefined\n ? undefined\n : state?.aliases.get(`${aliasedObjectRoot}.${memberName}`))\n : undefined;\n\n return memberAlias ??\n (node.computed === true && memberName === undefined\n ? uniqueObjectMemberAlias(aliasedObjectRoot, state)\n : aliasedObjectRoot);\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueDefinedString([\n expressionRootName(readOptionalObject(node.consequent), state),\n expressionRootName(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 expressionRootName(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state?: ComponentAliasState | undefined,\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?: ComponentAliasState | undefined,\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 uniqueDefinedString([\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 uniqueObjectMemberAlias(\n objectName: string | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (objectName === undefined || state === undefined) {\n return undefined;\n }\n\n const prefix = `${objectName}.`;\n return uniqueDefinedString(\n Array.from(state.aliases.entries())\n .filter(([key]) => key.startsWith(prefix))\n .map(([, value]) => value),\n );\n}\n\nfunction uniqueDefinedString(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 collectIdentifierReferenceNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectIdentifierReferenceNamesFromNode(child, names);\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 === \"ImportDeclaration\") {\n return;\n }\n\n if (\n (object.type === \"Identifier\" || object.type === \"JSXIdentifier\") &&\n typeof object.name === \"string\"\n ) {\n names.add(object.name);\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 collectIdentifierReferenceNamesFromNode(value, names);\n }\n}\n\nfunction collectFormActionReferencesFromNode(\n node: unknown,\n references: FormActionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionReferencesFromNode(child, references);\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 === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n typeof expression.name === \"string\" &&\n start !== undefined &&\n end !== undefined\n ) {\n references.push({ end, name: expression.name, start });\n }\n }\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 collectFormActionReferencesFromNode(value, references);\n }\n}\n\nfunction jsxTagName(node: Record<string, unknown> | undefined): string {\n if (node === undefined) {\n return \"\";\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXIdentifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n const objectName = jsxTagName(readOptionalObject(node.object));\n const propertyName = jsxTagName(readOptionalObject(node.property));\n return `${objectName}.${propertyName}`;\n }\n\n return \"\";\n}\n\nfunction hasClientRuntimeSyntaxNode(node: unknown): boolean {\n if (Array.isArray(node)) {\n return node.some(hasClientRuntimeSyntaxNode);\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return false;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return false;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportAllDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\") {\n return hasClientRuntimeSyntaxNode(object.declaration);\n }\n\n if (object.type === \"JSXAttribute\") {\n const name = readOptionalObject(object.name)?.name;\n return typeof name === \"string\" && /^on[A-Z]/.test(name);\n }\n\n if (object.type === \"CallExpression\") {\n const callee = readOptionalObject(object.callee);\n if (callee?.type === \"Identifier\" && callee.name === \"cell\") {\n return true;\n }\n }\n\n if (object.type === \"Identifier\" && isClientRuntimeGlobal(object.name)) {\n return true;\n }\n\n if (object.type === \"MemberExpression\") {\n return (\n hasClientRuntimeSyntaxNode(object.object) ||\n (object.computed === true && hasClientRuntimeSyntaxNode(object.property))\n );\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 (hasClientRuntimeSyntaxNode(value)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isClientRuntimeGlobal(name: unknown): boolean {\n return name === \"window\" || name === \"document\" || name === \"localStorage\";\n}\n\nfunction exportedNameForSpecifier(specifier: Record<string, unknown>): string | undefined {\n const exported = readOptionalObject(specifier.exported);\n const local = readOptionalObject(specifier.local);\n const name = exported?.name ?? exported?.value ?? local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction bindingNames(node: unknown): string[] {\n const object = readObject(node);\n\n if (typeof object.name === \"string\") {\n return [object.name];\n }\n\n if (Array.isArray(object.properties)) {\n return object.properties.flatMap((property) => bindingNames(readObject(property).value));\n }\n\n if (Array.isArray(object.elements)) {\n return object.elements.flatMap((element) => (element === null ? [] : bindingNames(element)));\n }\n\n if (object.type === \"AssignmentPattern\") {\n return bindingNames(object.left);\n }\n\n if (object.type === \"RestElement\") {\n return bindingNames(object.argument);\n }\n\n return [];\n}\n\nfunction statementRange(\n code: string,\n statement: Record<string, unknown>,\n): { end: number; start: number } | undefined {\n const start = typeof statement.start === \"number\" ? statement.start : undefined;\n const end = typeof statement.end === \"number\" ? statement.end : undefined;\n\n if (start === undefined || end === undefined) {\n return undefined;\n }\n\n let removalStart = start;\n while (removalStart > 0 && code[removalStart - 1] !== \"\\n\") {\n if (!/\\s/.test(code[removalStart - 1] ?? \"\")) {\n break;\n }\n removalStart -= 1;\n }\n\n let removalEnd = end;\n while (removalEnd < code.length && /[ \\t]/.test(code[removalEnd] ?? \"\")) {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\r\") {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\n\") {\n removalEnd += 1;\n }\n\n return { start: removalStart, end: removalEnd };\n}\n\nfunction nodeText(code: string, node: Record<string, unknown>): string {\n const start = typeof node.start === \"number\" ? node.start : undefined;\n const end = typeof node.end === \"number\" ? node.end : undefined;\n\n return start === undefined || end === undefined ? \"\" : code.slice(start, end);\n}\n\nfunction readObject(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null ? (value as Record<string, unknown>) : {};\n}\n\nfunction readArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\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\nexport type {\n AsyncBoundaryIr,\n AttributeIr,\n ComponentIr,\n ComponentPropIr,\n ComponentRefIr,\n ConditionalIr,\n DynamicAttributeIr,\n EventAttributeIr,\n ExprIr,\n JsxElementIr,\n JsxFragmentIr,\n JsxNodeIr,\n ListIr,\n ModuleIr,\n SpreadAttributeIr,\n StaticAttributeIr,\n TextIr,\n} from \"./ir.js\";\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModuleIr } from \"./ir.js\";\nimport {\n analyzeCompilerModuleContextWithOxc,\n analyzeWithOxc,\n} from \"./oxc.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nexport { transformCompilerModuleContext } from \"./transform.js\";\nexport { stripTypeScriptWithOxc } from \"./oxc-transform.js\";\nexport type { CompilerModuleContext } from \"./compiler-module-context.js\";\nimport type {\n AnalyzeModuleOptions,\n CompileTarget,\n Diagnostic,\n} from \"./types.js\";\n\nexport interface AnalyzeToIrInput {\n code: string;\n filename: string;\n target: CompileTarget;\n options?: AnalyzeModuleOptions;\n}\n\nexport interface AnalyzeToIrOutput {\n ir: ModuleIr;\n diagnostics: Diagnostic[];\n usedTypescriptFallback?: boolean;\n}\n\nexport interface StaticImportReference {\n localNames: string[];\n sideEffect: boolean;\n source: string;\n}\n\nexport interface StaticImportSpecifierReference {\n importedName: string;\n kind: \"default\" | \"named\" | \"namespace\";\n localName: string;\n}\n\nexport interface ClientRouteStaticImportReference extends StaticImportReference {\n specifiers: StaticImportSpecifierReference[];\n}\n\nexport interface StaticExportReference {\n exportedNames: string[];\n exportAll: boolean;\n source: string;\n}\n\nexport interface TopLevelExportRenderInfo {\n calledComponentRoots: string[];\n clientRuntime: boolean;\n name: string;\n renderedComponentRoots: string[];\n}\n\nexport interface ClientRouteModuleAnalysis {\n clientRuntime: boolean;\n hasUseClientDirective: boolean;\n hasUseServerDirective: boolean;\n componentCallRoots: string[];\n identifierReferences: string[];\n jsxComponentRoots: string[];\n staticExports: StaticExportReference[];\n staticImports: ClientRouteStaticImportReference[];\n topLevelExportRenderInfo: TopLevelExportRenderInfo[];\n}\n\nexport interface FormActionReference {\n end: number;\n name: string;\n start: number;\n}\n\nexport interface FormActionExpressionReference {\n end: number;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n start: number;\n}\n\ninterface ComponentAliasState {\n aliases: Map<string, string>;\n stringConstants: Map<string, string>;\n}\n\nexport function analyzeToIr(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeWithOxc(input);\n}\n\nexport function analyzeCompilerModuleContextToIr(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(context, input);\n}\n\nexport function createCompilerModuleContext(input: {\n code: string;\n filename?: string | undefined;\n}): CompilerModuleContext {\n return createCompilerModuleContextWithOxc(input);\n}\n\nexport function hasTopLevelExportDeclaration(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): boolean {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).some((statement) =>\n exportedNames(statement).some((name) => names.has(name)),\n );\n}\n\nexport function stripTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationReplacement(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function demoteTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationDemotion(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function collectStaticModuleSpecifiers(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticModuleSpecifier);\n}\n\nexport function collectStaticImportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticImportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticImportReference);\n}\n\nexport function collectStaticExportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticExportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticExportReference);\n}\n\nexport function collectJsxComponentRootNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n const aliasState = createComponentAliasState();\n\n collectJsxComponentRootNamesFromNode(parsed.program, names);\n collectSimpleComponentAliasesFromNode(parsed.program, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nexport function collectIdentifierReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n collectIdentifierReferenceNamesFromNode(parsed.program, names);\n return Array.from(names).sort();\n}\n\nexport function collectFormActionReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n return Array.from(\n new Set(collectFormActionReferences(input).map((reference) => reference.name)),\n ).sort();\n}\n\nexport function collectFormActionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionReference[] = [];\n\n collectFormActionReferencesFromNode(parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start ? left.name.localeCompare(right.name) : left.start - right.start,\n );\n}\n\nexport function collectFormActionExpressionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionExpressionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionExpressionReference[] = [];\n\n collectFormActionExpressionReferencesFromNode(input.code, parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start\n ? left.expression.localeCompare(right.expression)\n : left.start - right.start,\n );\n}\n\nexport function collectTopLevelValueExportNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n for (const statement of programBody(parsed.program)) {\n for (const name of exportedNames(statement)) {\n names.add(name);\n }\n }\n\n return Array.from(names).sort();\n}\n\nexport function collectTopLevelExportRenderInfo(input: {\n code: string;\n filename?: string | undefined;\n}): TopLevelExportRenderInfo[] {\n const parsed = parseModule(input.code, input.filename);\n\n return collectTopLevelExportRenderInfoFromProgram(parsed.program);\n}\n\nexport function collectClientRouteModuleAnalysis(input: {\n code: string;\n filename?: string | undefined;\n}): ClientRouteModuleAnalysis {\n const parsed = parseModule(input.code, input.filename);\n\n return collectClientRouteModuleAnalysisFromContext(parsed);\n}\n\nexport function collectClientRouteModuleAnalysisFromContext(\n context: CompilerModuleContext,\n): ClientRouteModuleAnalysis {\n const parsed = parseModuleContext(context);\n const body = programBody(parsed.program);\n const identifierReferences = new Set<string>();\n\n collectIdentifierReferenceNamesFromNode(parsed.program, identifierReferences);\n\n return {\n clientRuntime: hasClientRuntimeSyntaxNode(parsed.program),\n componentCallRoots: collectComponentCallRootNamesFromSubtree(parsed.program),\n hasUseClientDirective: hasModuleDirectiveInProgram(parsed.program, \"use client\"),\n hasUseServerDirective: hasModuleDirectiveInProgram(parsed.program, \"use server\"),\n identifierReferences: Array.from(identifierReferences).sort(),\n jsxComponentRoots: collectJsxComponentRootNamesFromSubtree(parsed.program),\n staticExports: body.flatMap(staticExportReference),\n staticImports: body.flatMap(staticImportReference),\n topLevelExportRenderInfo: collectTopLevelExportRenderInfoFromProgram(parsed.program),\n };\n}\n\nfunction collectTopLevelExportRenderInfoFromProgram(program: unknown): TopLevelExportRenderInfo[] {\n const declarations = new Map<string, unknown>();\n const exported = new Map<string, string>();\n const directExports = new Map<string, unknown>();\n const aliasState = createComponentAliasState();\n\n collectSimpleComponentAliasesFromNode(program, aliasState);\n\n for (const statement of programBody(program)) {\n collectTopLevelDeclarationReferences(statement, declarations);\n\n if (statement.type === \"ExportDefaultDeclaration\") {\n const declaration = readOptionalObject(statement.declaration);\n directExports.set(\"default\", declaration);\n exported.set(\"default\", \"default\");\n continue;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n if (declaration !== undefined) {\n for (const name of exportedNames(statement)) {\n exported.set(name, name);\n directExports.set(name, declarationForExportedName(declaration, name) ?? declaration);\n }\n continue;\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers.map(readObject) : [];\n for (const specifier of specifiers) {\n const exportedName = exportedNameForSpecifier(specifier);\n const localName = localNameForExportSpecifier(specifier);\n\n if (exportedName !== undefined && localName !== undefined) {\n exported.set(exportedName, localName);\n }\n }\n }\n\n return [...exported.entries()]\n .map(([name, localName]) => {\n const node = directExports.get(name) ?? declarations.get(localName);\n const calledComponentRoots = node === undefined\n ? []\n : collectComponentCallRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const renderedComponentRoots = node === undefined\n ? []\n : collectJsxComponentRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const clientRuntime = node === undefined\n ? false\n : hasReachableExportClientRuntime({\n aliases: aliasState.aliases,\n declarations,\n localName,\n node,\n });\n\n return node === undefined\n ? undefined\n : {\n calledComponentRoots,\n clientRuntime,\n name,\n renderedComponentRoots,\n };\n })\n .filter((item): item is TopLevelExportRenderInfo => item !== undefined)\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\nfunction hasReachableLocalClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n roots: readonly string[];\n seen: Set<string>;\n}): boolean {\n for (const root of options.roots) {\n const resolved = options.aliases.get(root) ?? root;\n if (options.seen.has(resolved)) {\n continue;\n }\n\n const declaration = options.declarations.get(resolved);\n if (declaration === undefined) {\n continue;\n }\n\n if (hasClientRuntimeSyntaxNode(declaration)) {\n return true;\n }\n\n options.seen.add(resolved);\n const nestedCalledRoots = collectComponentCallRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n const nestedRenderedRoots = collectJsxComponentRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...nestedCalledRoots, ...nestedRenderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasReachableExportClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n localName: string;\n node: unknown;\n}): boolean {\n return hasReachableExportClientRuntimeNode({\n aliases: options.aliases,\n declarations: options.declarations,\n node: options.node,\n seen: new Set([options.localName]),\n });\n}\n\nfunction hasReachableExportClientRuntimeNode(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n node: unknown;\n seen: Set<string>;\n}): boolean {\n if (hasClientRuntimeSyntaxNode(options.node)) {\n return true;\n }\n\n const references = collectRuntimeReferenceRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n for (const reference of references) {\n const declaration = options.declarations.get(reference);\n if (\n declaration !== undefined &&\n !isFunctionLikeClientRuntimeDeclaration(declaration) &&\n hasClientRuntimeSyntaxNode(declaration)\n ) {\n return true;\n }\n }\n\n const calledRoots = collectRuntimeCallRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n const renderedRoots = collectJsxComponentRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...calledRoots, ...renderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction collectRuntimeReferenceRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeReferenceRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n undefined,\n undefined,\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeCallRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeCallRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeReferenceRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeReferenceRootNamesFromNode(\n child,\n names,\n state,\n shadowed,\n parent,\n parentKey,\n );\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (object.type === \"Identifier\" && typeof object.name === \"string\") {\n if (\n !shadowed.has(object.name) &&\n isRuntimeReferenceIdentifier(parent, parentKey)\n ) {\n names.add(state.aliases.get(object.name) ?? object.name);\n }\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeReferenceRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n object,\n \"body\",\n );\n return;\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeReferenceRootNamesFromNode(\n value,\n names,\n state,\n childShadowed,\n object,\n key,\n );\n }\n}\n\nfunction collectRuntimeCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeCallRootNamesFromNode(child, names, state, shadowed);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeCallRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n );\n return;\n }\n\n if (object.type === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && !shadowed.has(root)) {\n names.add(root);\n }\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeCallRootNamesFromNode(value, names, state, childShadowed);\n }\n}\n\nfunction shouldSkipRuntimeReferenceNode(node: Record<string, unknown>): boolean {\n return (\n (typeof node.type === \"string\" && node.type.startsWith(\"TS\")) ||\n node.type === \"ImportDeclaration\"\n );\n}\n\nfunction shouldSkipRuntimeReferenceProperty(\n node: Record<string, unknown>,\n key: string,\n): boolean {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n return true;\n }\n\n if (key === \"id\" && isDeclarationWithId(node)) {\n return true;\n }\n\n if (key === \"params\" && isFunctionLikeClientRuntimeDeclaration(node)) {\n return true;\n }\n\n if (key === \"key\" && isNonComputedPropertyKey(node)) {\n return true;\n }\n\n return false;\n}\n\nfunction isRuntimeReferenceIdentifier(\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\" && isDeclarationWithId(parent)) {\n return false;\n }\n\n if (parentKey === \"params\" && isFunctionLikeClientRuntimeDeclaration(parent)) {\n return false;\n }\n\n if (parentKey === \"key\" && isNonComputedPropertyKey(parent)) {\n return false;\n }\n\n return !(\n (parent.type === \"BreakStatement\" ||\n parent.type === \"ContinueStatement\" ||\n parent.type === \"LabeledStatement\") &&\n parentKey === \"label\"\n );\n}\n\nfunction addBlockBindingNames(\n node: unknown,\n names: Set<string>,\n): ReadonlySet<string> {\n const body = readArray(readObject(node).body);\n\n for (const statement of body) {\n const object = readObject(statement);\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectBindingNamesInto(readObject(declaration).id, names);\n }\n continue;\n }\n\n if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectBindingNamesInto(object.id, names);\n }\n }\n\n return names;\n}\n\nfunction collectBindingNamesInto(node: unknown, names: Set<string>): void {\n for (const name of bindingNames(node)) {\n names.add(name);\n }\n}\n\nfunction isFunctionLikeClientRuntimeDeclaration(node: unknown): boolean {\n const object = readObject(node);\n return (\n object.type === \"FunctionDeclaration\" ||\n object.type === \"FunctionExpression\" ||\n object.type === \"ArrowFunctionExpression\"\n );\n}\n\nfunction isDeclarationWithId(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 isNonComputedPropertyKey(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\nexport function hasModuleDirective(input: {\n code: string;\n directive: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasModuleDirectiveInProgram(parsed.program, input.directive);\n}\n\nfunction hasModuleDirectiveInProgram(program: unknown, expectedDirective: string): boolean {\n for (const statement of programBody(program)) {\n if (statement.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const directive = statement.directive;\n if (typeof directive !== \"string\") {\n return false;\n }\n\n if (directive === expectedDirective) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function hasClientRuntimeSyntax(input: {\n code: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasClientRuntimeSyntaxNode(parsed.program);\n}\n\ninterface Replacement {\n end: number;\n start: number;\n text: string;\n}\n\nfunction parseModule(code: string, filename: string | undefined) {\n return parseModuleContext(createCompilerModuleContext({ code, filename }));\n}\n\nfunction parseModuleContext(context: CompilerModuleContext): CompilerModuleContext {\n if (context.parseErrors.length > 0) {\n throw new Error(\n `${context.filename}: ${context.parseErrors\n .map((error) => readObject(error).message)\n .filter((message): message is string => typeof message === \"string\")\n .join(\"\\n\")}`,\n );\n }\n\n return context;\n}\n\nfunction programBody(program: unknown): Record<string, unknown>[] {\n const body = readObject(program).body;\n return Array.isArray(body) ? body.map(readObject) : [];\n}\n\nfunction exportedNames(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ExportDefaultDeclaration\") {\n return [\"default\"];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return [];\n }\n\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration !== undefined) {\n if (declaration.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n return typeof name === \"string\" ? [name] : [];\n }\n\n if (declaration.type === \"VariableDeclaration\") {\n const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];\n\n return declarations.flatMap((item) => bindingNames(readObject(item).id));\n }\n\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];\n return specifiers.flatMap((specifier) => {\n const name = exportedNameForSpecifier(readObject(specifier));\n\n return typeof name === \"string\" ? [name] : [];\n });\n}\n\nfunction collectTopLevelDeclarationReferences(\n statement: Record<string, unknown>,\n declarations: Map<string, unknown>,\n): void {\n const declaration =\n statement.type === \"ExportNamedDeclaration\"\n ? readOptionalObject(statement.declaration)\n : statement;\n\n if (declaration?.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n\n if (typeof name === \"string\") {\n declarations.set(name, declaration);\n }\n return;\n }\n\n if (declaration?.type !== \"VariableDeclaration\") {\n return;\n }\n\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n const id = readOptionalObject(declarator.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (name !== undefined) {\n declarations.set(name, readOptionalObject(declarator.init) ?? declarator);\n }\n }\n}\n\nfunction declarationForExportedName(\n declaration: Record<string, unknown>,\n name: string,\n): unknown | undefined {\n if (declaration.type === \"VariableDeclaration\") {\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n if (bindingNames(declarator.id).includes(name)) {\n return readOptionalObject(declarator.init) ?? declarator;\n }\n }\n }\n\n return declaration;\n}\n\nfunction localNameForExportSpecifier(specifier: Record<string, unknown>): string | undefined {\n const local = readOptionalObject(specifier.local);\n const name = local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction exportDeclarationDemotion(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n const exported = exportedNames(statement);\n\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return partialSpecifierExportReplacement(code, statement, names);\n }\n\n const range = statementRange(code, statement);\n\n if (range === undefined) {\n return undefined;\n }\n\n if (declaration?.type === \"FunctionDeclaration\" || declaration?.type === \"VariableDeclaration\") {\n return { ...range, text: `${nodeText(code, declaration)}\\n` };\n }\n\n return { ...range, text: \"\" };\n}\n\nfunction exportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type === \"ExportDefaultDeclaration\") {\n const range = statementRange(code, statement);\n return names.has(\"default\") && range !== undefined ? { ...range, text: \"\" } : undefined;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const partial = partialExportDeclarationReplacement(code, statement, names);\n\n if (partial !== undefined) {\n return partial;\n }\n\n const exported = exportedNames(statement);\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n}\n\nfunction partialExportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration?.type === \"VariableDeclaration\") {\n return partialVariableExportReplacement(code, statement, declaration, names);\n }\n\n if (declaration !== undefined) {\n return undefined;\n }\n\n return partialSpecifierExportReplacement(code, statement, names);\n}\n\nfunction partialVariableExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n declaration: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declarations = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n if (declarations.length <= 1) {\n return undefined;\n }\n\n const kept = declarations.filter((declarator) => {\n const declaredNames = bindingNames(declarator.id);\n return declaredNames.every((name) => !names.has(name));\n });\n\n if (kept.length === declarations.length) {\n return undefined;\n }\n\n if (kept.length === 0) {\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n }\n\n const range = statementRange(code, statement);\n const kind = typeof declaration.kind === \"string\" ? declaration.kind : \"const\";\n\n return range === undefined\n ? undefined\n : {\n ...range,\n text: `export ${kind} ${kept.map((item) => nodeText(code, item)).join(\", \")};\\n`,\n };\n}\n\nfunction partialSpecifierExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n if (specifiers.length <= 1) {\n return undefined;\n }\n\n const kept = specifiers.filter((specifier) => {\n const name = exportedNameForSpecifier(specifier);\n return typeof name !== \"string\" || !names.has(name);\n });\n\n if (kept.length === specifiers.length) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n if (range === undefined) {\n return undefined;\n }\n\n if (kept.length === 0) {\n return { ...range, text: \"\" };\n }\n\n const source = readOptionalObject(statement.source);\n const sourceText = source === undefined ? \"\" : ` from ${nodeText(code, source)}`;\n const exportKind = statement.exportKind === \"type\" ? \"export type\" : \"export\";\n\n return {\n ...range,\n text: `${exportKind} { ${kept.map((item) => nodeText(code, item)).join(\", \")} }${sourceText};\\n`,\n };\n}\n\nfunction staticModuleSpecifier(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ImportDeclaration\") {\n if (statement.importKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n if (statement.type === \"ExportAllDeclaration\" || statement.type === \"ExportNamedDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n return [];\n}\n\nfunction staticImportReference(\n statement: Record<string, unknown>,\n): ClientRouteStaticImportReference[] {\n if (statement.type !== \"ImportDeclaration\" || statement.importKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n const importSpecifiers = specifiers.flatMap(staticImportSpecifierReference);\n const localNames = specifiers\n .filter((specifier) => specifier.importKind !== \"type\")\n .flatMap((specifier) => {\n const local = readOptionalObject(specifier.local);\n return typeof local?.name === \"string\" ? [local.name] : [];\n });\n\n return [\n {\n localNames,\n sideEffect: localNames.length === 0,\n source,\n specifiers: importSpecifiers,\n },\n ];\n}\n\nfunction staticImportSpecifierReference(\n specifier: Record<string, unknown>,\n): StaticImportSpecifierReference[] {\n if (specifier.importKind === \"type\") {\n return [];\n }\n\n const localName = readOptionalObject(specifier.local)?.name;\n if (typeof localName !== \"string\") {\n return [];\n }\n\n if (specifier.type === \"ImportDefaultSpecifier\") {\n return [{ importedName: \"default\", kind: \"default\", localName }];\n }\n\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n return [{ importedName: \"*\", kind: \"namespace\", localName }];\n }\n\n const imported = readOptionalObject(specifier.imported);\n const importedName = imported?.name ?? imported?.value;\n return typeof importedName === \"string\"\n ? [{ importedName, kind: \"named\", localName }]\n : [];\n}\n\nfunction staticExportReference(statement: Record<string, unknown>): StaticExportReference[] {\n if (statement.type === \"ExportAllDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n return source === undefined\n ? []\n : [{ exportedNames: [], exportAll: true, source }];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\" || statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n return [\n {\n exportedNames: exportedNames(statement),\n exportAll: false,\n source,\n },\n ];\n}\n\nfunction sourceValue(statement: Record<string, unknown>): string[] {\n const source = readOptionalObject(statement.source);\n const value = source?.value;\n\n return typeof value === \"string\" ? [value] : [];\n}\n\nfunction collectJsxComponentRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectJsxComponentRootNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (object.type === \"JSXElement\") {\n const opening = readOptionalObject(object.openingElement);\n const nameNode = readOptionalObject(opening?.name);\n const name = jsxNameRoot(nameNode);\n if (name !== undefined && (nameNode?.type === \"JSXMemberExpression\" || /^[A-Z]/.test(name))) {\n names.add(name);\n }\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 collectJsxComponentRootNamesFromNode(value, names);\n }\n}\n\nfunction collectJsxComponentRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectJsxComponentRootNamesFromNode(node, names);\n collectSimpleComponentAliasesFromNode(node, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction collectComponentCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectComponentCallRootNamesFromNode(child, names, 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 === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && /^[A-Z]/.test(root)) {\n names.add(root);\n }\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 collectComponentCallRootNamesFromNode(value, names, state);\n }\n}\n\nfunction collectComponentCallRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectSimpleComponentAliasesFromNode(node, aliasState);\n collectComponentCallRootNamesFromNode(node, names, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction jsxNameRoot(node: Record<string, unknown> | undefined): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n return jsxNameRoot(readOptionalObject(node.object));\n }\n\n return undefined;\n}\n\nfunction collectSimpleComponentAliasesFromNode(\n node: unknown,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectSimpleComponentAliasesFromNode(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 const declarations = Array.isArray(object.declarations) ? object.declarations : [];\n for (const declaration of declarations) {\n collectVariableDeclaratorComponentAliases(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectVariableDeclaratorComponentAliases(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectAssignmentComponentAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectObjectAssignComponentAliases(object, state);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectSimpleComponentAliasesFromNode(value, state);\n }\n}\n\nfunction createComponentAliasState(\n aliases?: ReadonlyMap<string, string> | undefined,\n): ComponentAliasState {\n return {\n aliases: new Map(aliases),\n stringConstants: new Map(),\n };\n}\n\nfunction collectVariableDeclaratorComponentAliases(\n object: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n constant: boolean,\n): void {\n if (object?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(object.id);\n const init = readOptionalObject(object.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 collectObjectLiteralComponentAliases(aliasName, init, state);\n\n const rootName = expressionRootName(init, state);\n if (rootName !== undefined) {\n state.aliases.set(aliasName, rootName);\n }\n}\n\nfunction collectObjectLiteralComponentAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n const properties = Array.isArray(init.properties) ? init.properties : [];\n for (const propertyValue of 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 valueName = expressionRootName(readOptionalObject(property.value), state);\n if (keyName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectName}.${keyName}`, valueName);\n }\n }\n}\n\nfunction collectAssignmentComponentAlias(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n const right = readOptionalObject(node.right);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectRoot = expressionRootName(readOptionalObject(left.object), state);\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const valueName = expressionRootName(right, state);\n if (objectRoot !== undefined && memberName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectRoot}.${memberName}`, valueName);\n }\n}\n\nfunction collectObjectAssignComponentAliases(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = Array.isArray(node.arguments) ? node.arguments.map(readOptionalObject) : [];\n const target = expressionRootName(args[0], state);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectObjectLiteralComponentAliases(target, source, state);\n }\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 expandJsxComponentAliasRoots(\n names: Set<string>,\n aliases: ReadonlyMap<string, string>,\n): void {\n let changed = true;\n\n while (changed) {\n changed = false;\n\n for (const [alias, root] of aliases) {\n if (names.has(alias) && !names.has(root)) {\n names.add(root);\n changed = true;\n }\n }\n }\n}\n\nfunction expressionRootName(\n node: Record<string, unknown> | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"MemberExpression\") {\n const objectRoot = expressionRootName(readOptionalObject(node.object), state);\n const aliasedObjectRoot =\n objectRoot === undefined ? undefined : state?.aliases.get(objectRoot) ?? objectRoot;\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const memberAlias =\n objectRoot !== undefined && memberName !== undefined\n ? state?.aliases.get(`${objectRoot}.${memberName}`) ??\n (aliasedObjectRoot === undefined\n ? undefined\n : state?.aliases.get(`${aliasedObjectRoot}.${memberName}`))\n : undefined;\n\n return memberAlias ??\n (node.computed === true && memberName === undefined\n ? uniqueObjectMemberAlias(aliasedObjectRoot, state)\n : aliasedObjectRoot);\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueDefinedString([\n expressionRootName(readOptionalObject(node.consequent), state),\n expressionRootName(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 expressionRootName(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state?: ComponentAliasState | undefined,\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?: ComponentAliasState | undefined,\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 uniqueDefinedString([\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 uniqueObjectMemberAlias(\n objectName: string | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (objectName === undefined || state === undefined) {\n return undefined;\n }\n\n const prefix = `${objectName}.`;\n return uniqueDefinedString(\n Array.from(state.aliases.entries())\n .filter(([key]) => key.startsWith(prefix))\n .map(([, value]) => value),\n );\n}\n\nfunction uniqueDefinedString(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 collectIdentifierReferenceNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectIdentifierReferenceNamesFromNode(child, names);\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 === \"ImportDeclaration\") {\n return;\n }\n\n if (\n (object.type === \"Identifier\" || object.type === \"JSXIdentifier\") &&\n typeof object.name === \"string\"\n ) {\n names.add(object.name);\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 collectIdentifierReferenceNamesFromNode(value, names);\n }\n}\n\nfunction collectFormActionReferencesFromNode(\n node: unknown,\n references: FormActionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionReferencesFromNode(child, references);\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 === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n typeof expression.name === \"string\" &&\n start !== undefined &&\n end !== undefined\n ) {\n references.push({ end, name: expression.name, start });\n }\n }\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 collectFormActionReferencesFromNode(value, references);\n }\n}\n\nfunction collectFormActionExpressionReferencesFromNode(\n code: string,\n node: unknown,\n references: FormActionExpressionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionExpressionReferencesFromNode(code, child, references);\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 === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n const expressionStart = typeof expression.start === \"number\" ? expression.start : undefined;\n const expressionEnd = typeof expression.end === \"number\" ? expression.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n start !== undefined &&\n end !== undefined &&\n expressionStart !== undefined &&\n expressionEnd !== undefined\n ) {\n references.push({\n end,\n expression: code.slice(expressionStart, expressionEnd).trim(),\n expressionEnd,\n expressionStart,\n start,\n });\n }\n }\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 collectFormActionExpressionReferencesFromNode(code, value, references);\n }\n}\n\nfunction jsxTagName(node: Record<string, unknown> | undefined): string {\n if (node === undefined) {\n return \"\";\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXIdentifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n const objectName = jsxTagName(readOptionalObject(node.object));\n const propertyName = jsxTagName(readOptionalObject(node.property));\n return `${objectName}.${propertyName}`;\n }\n\n return \"\";\n}\n\nfunction hasClientRuntimeSyntaxNode(node: unknown): boolean {\n if (Array.isArray(node)) {\n return node.some(hasClientRuntimeSyntaxNode);\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return false;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return false;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportAllDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\") {\n return hasClientRuntimeSyntaxNode(object.declaration);\n }\n\n if (object.type === \"JSXAttribute\") {\n const name = readOptionalObject(object.name)?.name;\n return typeof name === \"string\" && /^on[A-Z]/.test(name);\n }\n\n if (object.type === \"CallExpression\") {\n const callee = readOptionalObject(object.callee);\n if (callee?.type === \"Identifier\" && callee.name === \"cell\") {\n return true;\n }\n }\n\n if (object.type === \"Identifier\" && isClientRuntimeGlobal(object.name)) {\n return true;\n }\n\n if (object.type === \"MemberExpression\") {\n return (\n hasClientRuntimeSyntaxNode(object.object) ||\n (object.computed === true && hasClientRuntimeSyntaxNode(object.property))\n );\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 (hasClientRuntimeSyntaxNode(value)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isClientRuntimeGlobal(name: unknown): boolean {\n return name === \"window\" || name === \"document\" || name === \"localStorage\";\n}\n\nfunction exportedNameForSpecifier(specifier: Record<string, unknown>): string | undefined {\n const exported = readOptionalObject(specifier.exported);\n const local = readOptionalObject(specifier.local);\n const name = exported?.name ?? exported?.value ?? local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction bindingNames(node: unknown): string[] {\n const object = readObject(node);\n\n if (typeof object.name === \"string\") {\n return [object.name];\n }\n\n if (Array.isArray(object.properties)) {\n return object.properties.flatMap((property) => bindingNames(readObject(property).value));\n }\n\n if (Array.isArray(object.elements)) {\n return object.elements.flatMap((element) => (element === null ? [] : bindingNames(element)));\n }\n\n if (object.type === \"AssignmentPattern\") {\n return bindingNames(object.left);\n }\n\n if (object.type === \"RestElement\") {\n return bindingNames(object.argument);\n }\n\n return [];\n}\n\nfunction statementRange(\n code: string,\n statement: Record<string, unknown>,\n): { end: number; start: number } | undefined {\n const start = typeof statement.start === \"number\" ? statement.start : undefined;\n const end = typeof statement.end === \"number\" ? statement.end : undefined;\n\n if (start === undefined || end === undefined) {\n return undefined;\n }\n\n let removalStart = start;\n while (removalStart > 0 && code[removalStart - 1] !== \"\\n\") {\n if (!/\\s/.test(code[removalStart - 1] ?? \"\")) {\n break;\n }\n removalStart -= 1;\n }\n\n let removalEnd = end;\n while (removalEnd < code.length && /[ \\t]/.test(code[removalEnd] ?? \"\")) {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\r\") {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\n\") {\n removalEnd += 1;\n }\n\n return { start: removalStart, end: removalEnd };\n}\n\nfunction nodeText(code: string, node: Record<string, unknown>): string {\n const start = typeof node.start === \"number\" ? node.start : undefined;\n const end = typeof node.end === \"number\" ? node.end : undefined;\n\n return start === undefined || end === undefined ? \"\" : code.slice(start, end);\n}\n\nfunction readObject(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null ? (value as Record<string, unknown>) : {};\n}\n\nfunction readArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\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\nexport type {\n AsyncBoundaryIr,\n AttributeIr,\n ComponentIr,\n ComponentPropIr,\n ComponentRefIr,\n ConditionalIr,\n DynamicAttributeIr,\n EventAttributeIr,\n ExprIr,\n JsxElementIr,\n JsxFragmentIr,\n JsxNodeIr,\n ListIr,\n ModuleIr,\n SpreadAttributeIr,\n StaticAttributeIr,\n TextIr,\n} from \"./ir.js\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reckona/mreact-compiler",
3
- "version": "0.0.73",
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.73"
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,
package/src/internal.ts CHANGED
@@ -76,6 +76,14 @@ export interface FormActionReference {
76
76
  start: number;
77
77
  }
78
78
 
79
+ export interface FormActionExpressionReference {
80
+ end: number;
81
+ expression: string;
82
+ expressionEnd: number;
83
+ expressionStart: number;
84
+ start: number;
85
+ }
86
+
79
87
  interface ComponentAliasState {
80
88
  aliases: Map<string, string>;
81
89
  stringConstants: Map<string, string>;
@@ -226,6 +234,21 @@ export function collectFormActionReferences(input: {
226
234
  );
227
235
  }
228
236
 
237
+ export function collectFormActionExpressionReferences(input: {
238
+ code: string;
239
+ filename?: string | undefined;
240
+ }): FormActionExpressionReference[] {
241
+ const parsed = parseModule(input.code, input.filename);
242
+ const references: FormActionExpressionReference[] = [];
243
+
244
+ collectFormActionExpressionReferencesFromNode(input.code, parsed.program, references);
245
+ return references.sort((left, right) =>
246
+ left.start === right.start
247
+ ? left.expression.localeCompare(right.expression)
248
+ : left.start - right.start,
249
+ );
250
+ }
251
+
229
252
  export function collectTopLevelValueExportNames(input: {
230
253
  code: string;
231
254
  filename?: string | undefined;
@@ -1708,6 +1731,78 @@ function collectFormActionReferencesFromNode(
1708
1731
  }
1709
1732
  }
1710
1733
 
1734
+ function collectFormActionExpressionReferencesFromNode(
1735
+ code: string,
1736
+ node: unknown,
1737
+ references: FormActionExpressionReference[],
1738
+ ): void {
1739
+ if (Array.isArray(node)) {
1740
+ for (const child of node) {
1741
+ collectFormActionExpressionReferencesFromNode(code, child, references);
1742
+ }
1743
+ return;
1744
+ }
1745
+
1746
+ const object = readOptionalObject(node);
1747
+ if (object === undefined) {
1748
+ return;
1749
+ }
1750
+
1751
+ if (typeof object.type === "string" && object.type.startsWith("TS")) {
1752
+ return;
1753
+ }
1754
+
1755
+ if (object.type === "ImportDeclaration") {
1756
+ return;
1757
+ }
1758
+
1759
+ if (
1760
+ object.type === "JSXOpeningElement" &&
1761
+ jsxTagName(readOptionalObject(object.name)) === "form"
1762
+ ) {
1763
+ const attributes = Array.isArray(object.attributes) ? object.attributes : [];
1764
+
1765
+ for (const attribute of attributes) {
1766
+ const attr = readObject(attribute);
1767
+
1768
+ if (attr.type !== "JSXAttribute" || readObject(attr.name).name !== "action") {
1769
+ continue;
1770
+ }
1771
+
1772
+ const value = readObject(attr.value);
1773
+ const expression = readObject(value.expression);
1774
+ const start = typeof object.start === "number" ? object.start : undefined;
1775
+ const end = typeof object.end === "number" ? object.end : undefined;
1776
+ const expressionStart = typeof expression.start === "number" ? expression.start : undefined;
1777
+ const expressionEnd = typeof expression.end === "number" ? expression.end : undefined;
1778
+
1779
+ if (
1780
+ value.type === "JSXExpressionContainer" &&
1781
+ start !== undefined &&
1782
+ end !== undefined &&
1783
+ expressionStart !== undefined &&
1784
+ expressionEnd !== undefined
1785
+ ) {
1786
+ references.push({
1787
+ end,
1788
+ expression: code.slice(expressionStart, expressionEnd).trim(),
1789
+ expressionEnd,
1790
+ expressionStart,
1791
+ start,
1792
+ });
1793
+ }
1794
+ }
1795
+ }
1796
+
1797
+ for (const [key, value] of Object.entries(object)) {
1798
+ if (key === "type" || key === "start" || key === "end" || key === "loc") {
1799
+ continue;
1800
+ }
1801
+
1802
+ collectFormActionExpressionReferencesFromNode(code, value, references);
1803
+ }
1804
+ }
1805
+
1711
1806
  function jsxTagName(node: Record<string, unknown> | undefined): string {
1712
1807
  if (node === undefined) {
1713
1808
  return "";