@reckona/mreact-compiler 0.0.72 → 0.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"oxc-child-analysis.d.ts","sourceRoot":"","sources":["../src/oxc-child-analysis.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiC,SAAS,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAYvE,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AA4BhC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,YAAY,EAAE,eAAe,CAAC;IAC9B,wBAAwB,EAAE,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,UAAU,EAAE,EACzB,gBAAgB,EAAE,uBAAuB,KACtC,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,uBAAuB,EAChC,gBAAgB,0BAAsC,GACrD,SAAS,CA6HX;AAqHD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,uBAAuB,EAChC,gBAAgB,0BAAsC,GACrD,SAAS,EAAE,CAyBb;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,uBAAuB,EAChC,gBAAgB,0BAAsC,GACrD,SAAS,EAAE,CA8Ib"}
1
+ {"version":3,"file":"oxc-child-analysis.d.ts","sourceRoot":"","sources":["../src/oxc-child-analysis.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiC,SAAS,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAYvE,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AA2BhC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,YAAY,EAAE,eAAe,CAAC;IAC9B,wBAAwB,EAAE,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,UAAU,EAAE,EACzB,gBAAgB,EAAE,uBAAuB,KACtC,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,uBAAuB,EAChC,gBAAgB,0BAAsC,GACrD,SAAS,CA6HX;AAqHD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,uBAAuB,EAChC,gBAAgB,0BAAsC,GACrD,SAAS,EAAE,CAyBb;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,uBAAuB,EAChC,gBAAgB,0BAAsC,GACrD,SAAS,EAAE,CAqJb"}
@@ -3,7 +3,7 @@ import { detectUnserializableAwaitValueReason, readOxcExpressionAttribute, readO
3
3
  import { analyzeOxcArrowJsxRenderer, analyzeOxcComponentProp, analyzeOxcSingleArrowJsxChild, readOxcConsumerRenderProp, } from "./oxc-component-props.js";
4
4
  import { formatOxcBodyStatement, lowerOxcBodyStatementJsx, } from "./oxc-body-lowering.js";
5
5
  import { normalizeOxcExpressionCode, stripOxcGeneratedImports } from "./oxc-code-utils.js";
6
- import { findOxcKeyCodeInChildren, isOxcJsxBranch, readOxcReturnExpressionFromStatement, } from "./oxc-expression-utils.js";
6
+ import { findOxcKeyCodeInChildren, readOxcReturnExpressionFromStatement, } from "./oxc-expression-utils.js";
7
7
  import { analyzeOxcAttribute, findOxcJsxAttributeCode, readOxcJsxTagName, } from "./oxc-jsx-attributes.js";
8
8
  import { normalizeOxcJsxText } from "./oxc-jsx-text.js";
9
9
  import { getOxcLocation, readArray, readObject, readSource, unwrapOxcParentheses, } from "./oxc-node-utils.js";
@@ -195,7 +195,7 @@ export function analyzeOxcExpressionChild(code, expression, context, bodyStateme
195
195
  ];
196
196
  }
197
197
  if (unwrappedExpression.type === "LogicalExpression" &&
198
- isOxcJsxBranch(readObject(unwrappedExpression.right))) {
198
+ containsOxcJsxSyntax(readObject(unwrappedExpression.right))) {
199
199
  const rightBranch = analyzeOxcDynamicBranch(code, readObject(unwrappedExpression.right), context, bodyStatementJsx);
200
200
  if (unwrappedExpression.operator === "&&") {
201
201
  return [
@@ -238,25 +238,33 @@ export function analyzeOxcExpressionChild(code, expression, context, bodyStateme
238
238
  : context.componentNames;
239
239
  const sameModuleComponentCall = sameModuleComponentStreamCall !== undefined ||
240
240
  isOxcSameModuleComponentCallExpression(expression, componentCallNamesForRenderMode);
241
+ const containsNestedJsx = containsOxcJsxSyntax(unwrappedExpression);
242
+ const loweredNestedJsx = containsNestedJsx
243
+ ? context.lowerNestedJsxExpression(code, expression, context.componentNames, context.target, context.diagnostics, bodyStatementJsx)
244
+ : undefined;
245
+ const isKnownRenderValue = isOxcRenderValueExpression(expression) || sameModuleComponentCall;
246
+ const renderMode = sameModuleComponentStreamCall !== undefined
247
+ ? "stream-node"
248
+ : isKnownRenderValue
249
+ ? bodyStatementJsx === "server-string"
250
+ ? "html"
251
+ : "dynamic"
252
+ : loweredNestedJsx !== undefined && bodyStatementJsx === "server-string"
253
+ ? "html"
254
+ : loweredNestedJsx !== undefined && bodyStatementJsx === "dom-node"
255
+ ? "dynamic"
256
+ : undefined;
241
257
  return [
242
258
  {
243
259
  kind: "expr",
244
260
  code: sameModuleComponentStreamCall ??
245
- (containsOxcJsxSyntax(unwrappedExpression)
246
- ? normalizeOxcExpressionCode(context.lowerNestedJsxExpression(code, expression, context.componentNames, context.target, context.diagnostics, bodyStatementJsx) ??
261
+ (containsNestedJsx
262
+ ? normalizeOxcExpressionCode(loweredNestedJsx ??
247
263
  (bodyStatementJsx === "compat-object"
248
264
  ? stripOxcGeneratedImports(transformJsxWithOxc(readSource(code, expression)))
249
265
  : readOxcReactiveExpressionCode(code, expression, context)))
250
266
  : readOxcReactiveExpressionCode(code, expression, context)),
251
- ...(isOxcRenderValueExpression(expression) || sameModuleComponentCall
252
- ? {
253
- renderMode: sameModuleComponentStreamCall !== undefined
254
- ? "stream-node"
255
- : bodyStatementJsx === "server-string"
256
- ? "html"
257
- : "dynamic",
258
- }
259
- : {}),
267
+ ...(renderMode === undefined ? {} : { renderMode }),
260
268
  },
261
269
  ];
262
270
  }