@reckona/mreact-compiler 0.0.160 → 0.0.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boundary-graph.d.ts +13 -0
- package/dist/boundary-graph.d.ts.map +1 -1
- package/dist/boundary-graph.js +1 -0
- package/dist/boundary-graph.js.map +1 -1
- package/dist/compiler-module-context.d.ts +2 -0
- package/dist/compiler-module-context.d.ts.map +1 -1
- package/dist/compiler-module-context.js +1 -0
- package/dist/compiler-module-context.js.map +1 -1
- package/dist/diagnostics.d.ts +1 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +1 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +35 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +24 -15
- package/dist/internal.js.map +1 -1
- package/dist/ir.d.ts +21 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/oxc-transform.d.ts +1 -0
- package/dist/oxc-transform.d.ts.map +1 -1
- package/dist/oxc-transform.js +1 -0
- package/dist/oxc-transform.js.map +1 -1
- package/dist/oxc.d.ts +4 -0
- package/dist/oxc.d.ts.map +1 -1
- package/dist/oxc.js +3 -0
- package/dist/oxc.js.map +1 -1
- package/dist/transform.d.ts +2 -0
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +2 -0
- package/dist/transform.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/src/boundary-graph.ts +13 -0
- package/src/compiler-module-context.ts +2 -0
- package/src/diagnostics.ts +1 -0
- package/src/index.ts +2 -0
- package/src/internal.ts +35 -15
- package/src/ir.ts +21 -0
- package/src/oxc-transform.ts +1 -0
- package/src/oxc.ts +4 -0
- package/src/transform.ts +2 -0
- package/src/types.ts +34 -0
package/dist/boundary-graph.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import type { Diagnostic } from "./types.js";
|
|
2
|
+
/** Classifies the route role of a module used as a boundary graph entry. */
|
|
2
3
|
export type BoundaryGraphEntryKind = "module" | "route-layout" | "route-page" | "route-template";
|
|
4
|
+
/** Classifies how a module or export participates in client, server, and shared execution. */
|
|
3
5
|
export type BoundaryClassification = "client-boundary" | "client-route" | "server-action" | "server-only" | "server-render" | "shared" | "unknown";
|
|
6
|
+
/** Describes an entry module passed to boundary graph analysis. */
|
|
4
7
|
export interface BoundaryGraphEntry {
|
|
5
8
|
file: string;
|
|
6
9
|
kind: BoundaryGraphEntryKind;
|
|
7
10
|
}
|
|
11
|
+
/** Supplies entry modules and module loading hooks for boundary graph analysis. */
|
|
8
12
|
export interface BoundaryGraphInput {
|
|
9
13
|
entries: readonly BoundaryGraphEntry[];
|
|
10
14
|
readModule(file: string): Promise<string | undefined> | string | undefined;
|
|
@@ -13,21 +17,25 @@ export interface BoundaryGraphInput {
|
|
|
13
17
|
source: string;
|
|
14
18
|
}): Promise<string | undefined> | string | undefined;
|
|
15
19
|
}
|
|
20
|
+
/** Describes the boundary classification assigned to one named export. */
|
|
16
21
|
export interface BoundaryGraphExport {
|
|
17
22
|
classification: BoundaryClassification;
|
|
18
23
|
name: string;
|
|
19
24
|
}
|
|
25
|
+
/** Describes one analyzed module and the classifications for its exports. */
|
|
20
26
|
export interface BoundaryGraphModule {
|
|
21
27
|
classification: BoundaryClassification;
|
|
22
28
|
exports: BoundaryGraphExport[];
|
|
23
29
|
file: string;
|
|
24
30
|
}
|
|
31
|
+
/** Describes an import that crosses from server-rendered code into a client boundary. */
|
|
25
32
|
export interface BoundaryGraphClientBoundary {
|
|
26
33
|
exportNames?: readonly string[];
|
|
27
34
|
importerFile: string;
|
|
28
35
|
moduleFile: string;
|
|
29
36
|
source: string;
|
|
30
37
|
}
|
|
38
|
+
/** Describes an inferred or explicit server action reference discovered in the graph. */
|
|
31
39
|
export interface BoundaryGraphServerActionSite {
|
|
32
40
|
end: number;
|
|
33
41
|
exportName: string;
|
|
@@ -39,8 +47,11 @@ export interface BoundaryGraphServerActionSite {
|
|
|
39
47
|
moduleFile: string;
|
|
40
48
|
start: number;
|
|
41
49
|
}
|
|
50
|
+
/** Names the kind of boundary graph trace event. */
|
|
42
51
|
export type BoundaryGraphTraceKind = "client-boundary" | "export" | "module" | "server-action";
|
|
52
|
+
/** Names the analysis reason attached to a boundary graph trace event. */
|
|
43
53
|
export type BoundaryGraphTraceReason = "client-runtime-export" | "module-classification" | "node-builtin-import" | "rendered-import" | "server-action-expression" | "server-render-export" | "static-export" | "use-client-directive" | "unknown-module" | "use-server-directive";
|
|
54
|
+
/** Records one decision made while classifying a boundary graph. */
|
|
44
55
|
export interface BoundaryGraphTraceEvent {
|
|
45
56
|
classification: BoundaryClassification;
|
|
46
57
|
exportName?: string;
|
|
@@ -55,6 +66,7 @@ export interface BoundaryGraphTraceEvent {
|
|
|
55
66
|
source?: string;
|
|
56
67
|
viaExportName?: string;
|
|
57
68
|
}
|
|
69
|
+
/** Contains modules, client boundaries, server actions, diagnostics, and trace events for a graph analysis run. */
|
|
58
70
|
export interface BoundaryGraphResult {
|
|
59
71
|
clientBoundaries: BoundaryGraphClientBoundary[];
|
|
60
72
|
diagnostics: Diagnostic[];
|
|
@@ -62,5 +74,6 @@ export interface BoundaryGraphResult {
|
|
|
62
74
|
serverActions: BoundaryGraphServerActionSite[];
|
|
63
75
|
trace: BoundaryGraphTraceEvent[];
|
|
64
76
|
}
|
|
77
|
+
/** Analyzes route modules and static imports to classify server, client, shared, and action boundaries. */
|
|
65
78
|
export declare function analyzeBoundaryGraph(input: BoundaryGraphInput): Promise<BoundaryGraphResult>;
|
|
66
79
|
//# sourceMappingURL=boundary-graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary-graph.d.ts","sourceRoot":"","sources":["../src/boundary-graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boundary-graph.d.ts","sourceRoot":"","sources":["../src/boundary-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/boundary-graph.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { collectClientRouteModuleAnalysis, collectFormActionExpressionReferences, hasModuleDirective, } from "./internal.js";
|
|
2
|
+
/** Analyzes route modules and static imports to classify server, client, shared, and action boundaries. */
|
|
2
3
|
export async function analyzeBoundaryGraph(input) {
|
|
3
4
|
const modules = new Map();
|
|
4
5
|
const clientBoundaries = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary-graph.js","sourceRoot":"","sources":["../src/boundary-graph.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n collectClientRouteModuleAnalysis,\n collectFormActionExpressionReferences,\n hasModuleDirective,\n} from \"./internal.js\";\nimport type {\n ClientRouteModuleAnalysis,\n ClientRouteStaticImportReference,\n StaticExportReference,\n StaticImportSpecifierReference,\n TopLevelExportRenderInfo,\n} from \"./internal.js\";\nimport type { Diagnostic } from \"./types.js\";\n\nexport type BoundaryGraphEntryKind =\n | \"module\"\n | \"route-layout\"\n | \"route-page\"\n | \"route-template\";\n\nexport type BoundaryClassification =\n | \"client-boundary\"\n | \"client-route\"\n | \"server-action\"\n | \"server-only\"\n | \"server-render\"\n | \"shared\"\n | \"unknown\";\n\nexport interface BoundaryGraphEntry {\n file: string;\n kind: BoundaryGraphEntryKind;\n}\n\nexport interface BoundaryGraphInput {\n entries: readonly BoundaryGraphEntry[];\n readModule(file: string): Promise<string | undefined> | string | undefined;\n resolveModule(input: {\n importer: string;\n source: string;\n }): Promise<string | undefined> | string | undefined;\n}\n\nexport interface BoundaryGraphExport {\n classification: BoundaryClassification;\n name: string;\n}\n\nexport interface BoundaryGraphModule {\n classification: BoundaryClassification;\n exports: BoundaryGraphExport[];\n file: string;\n}\n\nexport interface BoundaryGraphClientBoundary {\n exportNames?: readonly string[];\n importerFile: string;\n moduleFile: string;\n source: string;\n}\n\nexport interface BoundaryGraphServerActionSite {\n end: number;\n exportName: string;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n file: string;\n inferred: boolean;\n moduleFile: string;\n start: number;\n}\n\nexport type BoundaryGraphTraceKind =\n | \"client-boundary\"\n | \"export\"\n | \"module\"\n | \"server-action\";\n\nexport type BoundaryGraphTraceReason =\n | \"client-runtime-export\"\n | \"module-classification\"\n | \"node-builtin-import\"\n | \"rendered-import\"\n | \"server-action-expression\"\n | \"server-render-export\"\n | \"static-export\"\n | \"use-client-directive\"\n | \"unknown-module\"\n | \"use-server-directive\";\n\nexport interface BoundaryGraphTraceEvent {\n classification: BoundaryClassification;\n exportName?: string;\n exportNames?: readonly string[];\n expression?: string;\n file: string;\n importerFile?: string;\n inferred?: boolean;\n kind: BoundaryGraphTraceKind;\n moduleFile?: string;\n reason: BoundaryGraphTraceReason;\n source?: string;\n viaExportName?: string;\n}\n\nexport interface BoundaryGraphResult {\n clientBoundaries: BoundaryGraphClientBoundary[];\n diagnostics: Diagnostic[];\n modules: BoundaryGraphModule[];\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n}\n\ninterface ResolvedServerActionTarget {\n exportName: string;\n inferred: boolean;\n moduleFile: string;\n}\n\nexport async function analyzeBoundaryGraph(\n input: BoundaryGraphInput,\n): Promise<BoundaryGraphResult> {\n const modules = new Map<string, BoundaryGraphModule>();\n const clientBoundaries: BoundaryGraphClientBoundary[] = [];\n const diagnostics: Diagnostic[] = [];\n const serverActions: BoundaryGraphServerActionSite[] = [];\n const trace: BoundaryGraphTraceEvent[] = [];\n const visiting = new Set<string>();\n\n for (const entry of input.entries) {\n await analyzeModule({\n diagnostics,\n entryKind: entry.kind,\n file: entry.file,\n input,\n clientBoundaries,\n modules,\n serverActions,\n trace,\n visiting,\n });\n }\n\n return {\n clientBoundaries,\n diagnostics,\n modules: Array.from(modules.values()),\n serverActions,\n trace,\n };\n}\n\nasync function analyzeModule(options: {\n diagnostics: Diagnostic[];\n entryKind: BoundaryGraphEntryKind;\n file: string;\n input: BoundaryGraphInput;\n clientBoundaries: BoundaryGraphClientBoundary[];\n modules: Map<string, BoundaryGraphModule>;\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n visiting: Set<string>;\n}): Promise<void> {\n if (options.modules.has(options.file) || options.visiting.has(options.file)) {\n return;\n }\n\n options.visiting.add(options.file);\n\n try {\n const code = await options.input.readModule(options.file);\n\n if (code === undefined) {\n options.diagnostics.push({\n code: \"MR_BOUNDARY_GRAPH_MODULE_NOT_FOUND\",\n level: \"warn\",\n message: `Boundary graph could not read module ${JSON.stringify(options.file)}.`,\n });\n options.modules.set(options.file, {\n classification: \"unknown\",\n exports: [],\n file: options.file,\n });\n options.trace.push({\n classification: \"unknown\",\n file: options.file,\n kind: \"module\",\n reason: \"unknown-module\",\n });\n return;\n }\n\n const analysis = collectClientRouteModuleAnalysis({\n code,\n filename: options.file,\n });\n const serverOnly = isServerOnlyModule(analysis);\n const explicitClient = analysis.hasUseClientDirective;\n const exports = analysis.topLevelExportRenderInfo.map((info) => ({\n classification: serverOnly\n ? \"server-only\"\n : exportClassification({\n explicitClient,\n info,\n entryKind: options.entryKind,\n }),\n name: info.name,\n }));\n\n options.modules.set(options.file, {\n classification: moduleClassification(exports.map((item) => item.classification)),\n exports,\n file: options.file,\n });\n const module = options.modules.get(options.file);\n\n if (module !== undefined) {\n options.trace.push({\n classification: module.classification,\n file: options.file,\n kind: \"module\",\n reason: \"module-classification\",\n });\n }\n options.trace.push(\n ...analysis.topLevelExportRenderInfo.map((info) => {\n const classification = serverOnly\n ? \"server-only\"\n : exportClassification({\n explicitClient,\n info,\n entryKind: options.entryKind,\n });\n\n return {\n classification,\n exportName: info.name,\n file: options.file,\n kind: \"export\" as const,\n reason: exportTraceReason({ analysis, classification, explicitClient, serverOnly }),\n };\n }),\n );\n\n const inferredServerActions = await inferServerActionSites({\n analysis,\n code,\n file: options.file,\n input: options.input,\n });\n options.serverActions.push(...inferredServerActions);\n options.trace.push(\n ...inferredServerActions.map((action) => ({\n classification: \"server-action\" as const,\n exportName: action.exportName,\n expression: action.expression,\n file: action.file,\n inferred: action.inferred,\n kind: \"server-action\" as const,\n moduleFile: action.moduleFile,\n reason: \"server-action-expression\" as const,\n })),\n );\n await analyzeStaticExports({\n analysis,\n diagnostics: options.diagnostics,\n file: options.file,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n await analyzeRenderedImports({\n analysis,\n diagnostics: options.diagnostics,\n file: options.file,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n } finally {\n options.visiting.delete(options.file);\n }\n}\n\nfunction exportTraceReason(options: {\n analysis: ClientRouteModuleAnalysis;\n classification: BoundaryClassification;\n explicitClient: boolean;\n serverOnly: boolean;\n}): BoundaryGraphTraceReason {\n if (options.serverOnly) {\n return options.analysis.hasUseServerDirective ? \"use-server-directive\" : \"node-builtin-import\";\n }\n\n if (options.explicitClient) {\n return \"use-client-directive\";\n }\n\n return options.classification === \"server-render\"\n ? \"server-render-export\"\n : \"client-runtime-export\";\n}\n\nfunction isServerOnlyModule(analysis: ClientRouteModuleAnalysis): boolean {\n return (\n analysis.hasUseServerDirective ||\n analysis.staticImports.some((reference) => nodeBuiltinPackages.has(reference.source))\n );\n}\n\nconst nodeBuiltinPackages = new Set([\n \"assert\",\n \"async_hooks\",\n \"buffer\",\n \"child_process\",\n \"cluster\",\n \"console\",\n \"crypto\",\n \"dgram\",\n \"diagnostics_channel\",\n \"dns\",\n \"domain\",\n \"events\",\n \"fs\",\n \"fs/promises\",\n \"http\",\n \"http2\",\n \"https\",\n \"module\",\n \"net\",\n \"os\",\n \"path\",\n \"perf_hooks\",\n \"process\",\n \"punycode\",\n \"querystring\",\n \"readline\",\n \"repl\",\n \"stream\",\n \"stream/consumers\",\n \"stream/promises\",\n \"stream/web\",\n \"string_decoder\",\n \"timers\",\n \"timers/promises\",\n \"tls\",\n \"trace_events\",\n \"tty\",\n \"url\",\n \"util\",\n \"v8\",\n \"vm\",\n \"wasi\",\n \"worker_threads\",\n \"zlib\",\n].flatMap((name) => [name, `node:${name}`]));\n\nasync function inferServerActionSites(options: {\n analysis: ClientRouteModuleAnalysis;\n code: string;\n file: string;\n input: BoundaryGraphInput;\n}): Promise<BoundaryGraphServerActionSite[]> {\n const actions: BoundaryGraphServerActionSite[] = [];\n const references = collectFormActionExpressionReferences({\n code: options.code,\n filename: options.file,\n });\n\n for (const reference of references) {\n const target = await resolveServerActionExpression({\n analysis: options.analysis,\n code: options.code,\n expression: reference.expression,\n file: options.file,\n input: options.input,\n seen: new Set(),\n });\n\n if (target !== undefined) {\n actions.push({\n end: reference.end,\n exportName: target.exportName,\n expression: reference.expression,\n expressionEnd: reference.expressionEnd,\n expressionStart: reference.expressionStart,\n file: options.file,\n inferred: target.inferred,\n moduleFile: target.moduleFile,\n start: reference.start,\n });\n }\n }\n\n return actions;\n}\n\nasync function resolveServerActionExpression(options: {\n analysis: ClientRouteModuleAnalysis;\n code: string;\n expression: string;\n file: string;\n input: BoundaryGraphInput;\n seen: Set<string>;\n}): Promise<ResolvedServerActionTarget | undefined> {\n const expression = options.expression.trim();\n\n if (options.seen.has(expression)) {\n return undefined;\n }\n\n options.seen.add(expression);\n\n if (identifierPattern.test(expression)) {\n const imported = await importedActionReference({\n analysis: options.analysis,\n expression,\n file: options.file,\n input: options.input,\n });\n\n if (imported !== undefined) {\n return imported;\n }\n\n const alias = localAliasExpression(options.code, expression);\n\n return alias === undefined\n ? undefined\n : await resolveServerActionExpression({\n ...options,\n expression: alias,\n });\n }\n\n const member = memberExpressionPattern.exec(expression);\n\n if (member !== null) {\n const objectName = member.groups?.object;\n const propertyName = member.groups?.property;\n const namespace =\n objectName === undefined || propertyName === undefined\n ? undefined\n : await namespaceActionReference({\n analysis: options.analysis,\n exportName: propertyName,\n file: options.file,\n input: options.input,\n localName: objectName,\n });\n\n if (namespace !== undefined) {\n return namespace;\n }\n\n const propertyExpression =\n objectName === undefined || propertyName === undefined\n ? undefined\n : objectLiteralPropertyExpression(options.code, objectName, propertyName);\n\n return propertyExpression === undefined\n ? undefined\n : await resolveServerActionExpression({\n ...options,\n expression: propertyExpression,\n });\n }\n\n return undefined;\n}\n\nasync function namespaceActionReference(options: {\n analysis: ClientRouteModuleAnalysis;\n exportName: string;\n file: string;\n input: BoundaryGraphInput;\n localName: string;\n}): Promise<ResolvedServerActionTarget | undefined> {\n for (const staticImport of options.analysis.staticImports) {\n const specifier = staticImport.specifiers.find(\n (candidate) => candidate.kind === \"namespace\" && candidate.localName === options.localName,\n );\n\n if (specifier === undefined) {\n continue;\n }\n\n const moduleFile = await options.input.resolveModule({\n importer: options.file,\n source: staticImport.source,\n });\n\n if (moduleFile === undefined) {\n continue;\n }\n\n return {\n exportName: options.exportName,\n inferred: await isInferredServerAction(options.input, moduleFile),\n moduleFile,\n };\n }\n\n return undefined;\n}\n\nasync function importedActionReference(options: {\n analysis: ClientRouteModuleAnalysis;\n expression: string;\n file: string;\n input: BoundaryGraphInput;\n}): Promise<ResolvedServerActionTarget | undefined> {\n for (const staticImport of options.analysis.staticImports) {\n const specifier = staticImport.specifiers.find(\n (candidate) => candidate.localName === options.expression,\n );\n\n if (specifier === undefined || specifier.kind === \"namespace\") {\n continue;\n }\n\n const moduleFile = await options.input.resolveModule({\n importer: options.file,\n source: staticImport.source,\n });\n\n if (moduleFile === undefined) {\n continue;\n }\n\n return {\n exportName: importedActionExportName(specifier),\n inferred: await isInferredServerAction(options.input, moduleFile),\n moduleFile,\n };\n }\n\n return undefined;\n}\n\nfunction localAliasExpression(code: string, name: string): string | undefined {\n const match = new RegExp(\n String.raw`\\b(?:const|let|var)\\s+${escapeRegExp(name)}\\s*=\\s*(?<expression>[^;]+);`,\n ).exec(code);\n const expression = match?.groups?.expression;\n\n return expression === undefined ? undefined : expression.trim();\n}\n\nfunction objectLiteralPropertyExpression(\n code: string,\n objectName: string,\n propertyName: string,\n): string | undefined {\n const object = new RegExp(\n String.raw`\\b(?:const|let|var)\\s+${escapeRegExp(objectName)}\\s*=\\s*\\{(?<body>[\\s\\S]*?)\\}\\s*;`,\n ).exec(code);\n const body = object?.groups?.body;\n\n if (body === undefined) {\n return undefined;\n }\n\n const property = escapeRegExp(propertyName);\n const assignment = new RegExp(\n String.raw`(?:^|,)\\s*${property}\\s*:\\s*(?<expression>[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)?)\\s*(?:,|$)`,\n ).exec(body);\n\n if (assignment?.groups?.expression !== undefined) {\n return assignment.groups.expression;\n }\n\n const shorthand = new RegExp(String.raw`(?:^|,)\\s*(?<name>${property})\\s*(?:,|$)`).exec(body);\n\n return shorthand?.groups?.name;\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction importedActionExportName(specifier: StaticImportSpecifierReference): string {\n return specifier.kind === \"default\" ? \"default\" : specifier.importedName;\n}\n\nasync function isInferredServerAction(\n input: BoundaryGraphInput,\n moduleFile: string,\n): Promise<boolean> {\n const code = await input.readModule(moduleFile);\n\n if (code === undefined) {\n return true;\n }\n\n return !hasModuleDirective({ code, directive: \"use server\", filename: moduleFile });\n}\n\nconst identifierPattern = /^[A-Za-z_$][\\w$]*$/;\nconst memberExpressionPattern =\n /^(?<object>[A-Za-z_$][\\w$]*)\\.(?<property>[A-Za-z_$][\\w$]*)$/;\n\nasync function analyzeStaticExports(options: {\n analysis: ClientRouteModuleAnalysis;\n diagnostics: Diagnostic[];\n file: string;\n input: BoundaryGraphInput;\n clientBoundaries: BoundaryGraphClientBoundary[];\n modules: Map<string, BoundaryGraphModule>;\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n visiting: Set<string>;\n}): Promise<void> {\n for (const reference of options.analysis.staticExports) {\n const resolved = await options.input.resolveModule({\n importer: options.file,\n source: reference.source,\n });\n\n if (resolved === undefined) {\n continue;\n }\n\n await analyzeModule({\n diagnostics: options.diagnostics,\n entryKind: \"module\",\n file: resolved,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n\n propagateStaticExport({\n file: options.file,\n modules: options.modules,\n reference,\n resolved,\n trace: options.trace,\n });\n }\n}\n\nfunction propagateStaticExport(options: {\n file: string;\n modules: Map<string, BoundaryGraphModule>;\n reference: StaticExportReference;\n resolved: string;\n trace: BoundaryGraphTraceEvent[];\n}): void {\n const module = options.modules.get(options.file);\n const exported = options.modules.get(options.resolved);\n\n if (module === undefined || exported === undefined) {\n return;\n }\n\n const propagated = propagatedStaticExports(options.reference, exported);\n\n if (propagated.length === 0) {\n return;\n }\n\n const exportsByName = new Map(module.exports.map((item) => [item.name, item]));\n\n for (const item of propagated) {\n exportsByName.set(item.export.name, item.export);\n options.trace.push({\n classification: item.export.classification,\n exportName: item.export.name,\n file: options.file,\n kind: \"export\",\n moduleFile: options.resolved,\n reason: \"static-export\",\n source: options.reference.source,\n viaExportName: item.viaExportName,\n });\n }\n\n const exports = Array.from(exportsByName.values()).sort((left, right) =>\n left.name.localeCompare(right.name),\n );\n const classification = moduleClassification(exports.map((item) => item.classification));\n options.modules.set(options.file, {\n ...module,\n classification,\n exports,\n });\n options.trace.push({\n classification,\n file: options.file,\n kind: \"module\",\n moduleFile: options.resolved,\n reason: \"static-export\",\n source: options.reference.source,\n });\n}\n\nfunction propagatedStaticExports(\n reference: StaticExportReference,\n exported: BoundaryGraphModule,\n): { export: BoundaryGraphExport; viaExportName: string }[] {\n if (reference.exportAll) {\n return exported.exports.map((item) => ({\n export: item,\n viaExportName: item.name,\n }));\n }\n\n if (reference.specifiers.length === 0) {\n return exported.exports\n .filter((item) => reference.exportedNames.includes(item.name))\n .map((item) => ({\n export: item,\n viaExportName: item.name,\n }));\n }\n\n return reference.specifiers.flatMap((specifier) => {\n const item = exported.exports.find((candidate) => candidate.name === specifier.localName);\n\n return item === undefined\n ? []\n : [\n {\n export: { ...item, name: specifier.exportedName },\n viaExportName: specifier.localName,\n },\n ];\n });\n}\n\nasync function analyzeRenderedImports(options: {\n analysis: ClientRouteModuleAnalysis;\n diagnostics: Diagnostic[];\n file: string;\n input: BoundaryGraphInput;\n clientBoundaries: BoundaryGraphClientBoundary[];\n modules: Map<string, BoundaryGraphModule>;\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n visiting: Set<string>;\n}): Promise<void> {\n const renderedRoots = new Set(\n options.analysis.topLevelExportRenderInfo.flatMap((info) => [\n ...info.renderedComponentRoots,\n ...info.calledComponentRoots,\n ]),\n );\n\n for (const reference of options.analysis.staticImports) {\n if (reference.sideEffect && isStyleModuleSpecifier(reference.source)) {\n continue;\n }\n\n if (!isRenderedImport(reference, renderedRoots)) {\n continue;\n }\n\n const resolved = await options.input.resolveModule({\n importer: options.file,\n source: reference.source,\n });\n\n if (resolved === undefined) {\n continue;\n }\n\n const exportNames = renderedImportedExportNames(reference, renderedRoots);\n await analyzeModule({\n diagnostics: options.diagnostics,\n entryKind: \"module\",\n file: resolved,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n\n const module = options.modules.get(resolved);\n\n if (module !== undefined && hasClientBoundaryExport(module, exportNames)) {\n options.clientBoundaries.push({\n ...(exportNames === undefined ? {} : { exportNames }),\n importerFile: options.file,\n moduleFile: resolved,\n source: reference.source,\n });\n options.trace.push({\n classification: \"client-boundary\",\n ...(exportNames === undefined ? {} : { exportNames }),\n file: options.file,\n importerFile: options.file,\n kind: \"client-boundary\",\n moduleFile: resolved,\n reason: \"rendered-import\",\n source: reference.source,\n });\n }\n }\n}\n\nfunction renderedImportedExportNames(\n reference: ClientRouteStaticImportReference,\n renderedRoots: ReadonlySet<string>,\n): string[] | undefined {\n if (reference.sideEffect) {\n return undefined;\n }\n\n const names: string[] = [];\n\n for (const specifier of reference.specifiers) {\n if (!renderedRoots.has(specifier.localName)) {\n continue;\n }\n\n if (specifier.kind === \"namespace\") {\n return undefined;\n }\n\n names.push(specifier.kind === \"default\" ? \"default\" : specifier.importedName);\n }\n\n return names;\n}\n\nfunction hasClientBoundaryExport(\n module: BoundaryGraphModule,\n exportNames: readonly string[] | undefined,\n): boolean {\n return module.exports.some(\n (item) =>\n item.classification === \"client-boundary\" &&\n (exportNames === undefined || exportNames.includes(item.name)),\n );\n}\n\nfunction isRenderedImport(\n reference: ClientRouteStaticImportReference,\n renderedRoots: ReadonlySet<string>,\n): boolean {\n return (\n reference.sideEffect ||\n reference.localNames.some((localName) => renderedRoots.has(localName))\n );\n}\n\nfunction isStyleModuleSpecifier(source: string): boolean {\n return /\\.(?:css|less|sass|scss|styl|stylus)(?:[?#].*)?$/u.test(source);\n}\n\nfunction exportClassification(options: {\n explicitClient: boolean;\n info: TopLevelExportRenderInfo;\n entryKind: BoundaryGraphEntryKind;\n}): BoundaryClassification {\n if (!options.explicitClient && !options.info.clientRuntime) {\n return \"server-render\";\n }\n\n return isRouteEntryKind(options.entryKind) ? \"client-route\" : \"client-boundary\";\n}\n\nfunction isRouteEntryKind(kind: BoundaryGraphEntryKind): boolean {\n return kind === \"route-layout\" || kind === \"route-page\" || kind === \"route-template\";\n}\n\nfunction moduleClassification(\n classifications: readonly BoundaryClassification[],\n): BoundaryClassification {\n if (classifications.includes(\"client-route\")) {\n return \"client-route\";\n }\n\n if (classifications.includes(\"client-boundary\")) {\n return \"client-boundary\";\n }\n\n if (classifications.includes(\"server-action\")) {\n return \"server-action\";\n }\n\n if (classifications.includes(\"unknown\")) {\n return \"unknown\";\n }\n\n if (classifications.includes(\"server-only\")) {\n return \"server-only\";\n }\n\n return \"server-render\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"boundary-graph.js","sourceRoot":"","sources":["../src/boundary-graph.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n collectClientRouteModuleAnalysis,\n collectFormActionExpressionReferences,\n hasModuleDirective,\n} from \"./internal.js\";\nimport type {\n ClientRouteModuleAnalysis,\n ClientRouteStaticImportReference,\n StaticExportReference,\n StaticImportSpecifierReference,\n TopLevelExportRenderInfo,\n} from \"./internal.js\";\nimport type { Diagnostic } from \"./types.js\";\n\n/** Classifies the route role of a module used as a boundary graph entry. */\nexport type BoundaryGraphEntryKind =\n | \"module\"\n | \"route-layout\"\n | \"route-page\"\n | \"route-template\";\n\n/** Classifies how a module or export participates in client, server, and shared execution. */\nexport type BoundaryClassification =\n | \"client-boundary\"\n | \"client-route\"\n | \"server-action\"\n | \"server-only\"\n | \"server-render\"\n | \"shared\"\n | \"unknown\";\n\n/** Describes an entry module passed to boundary graph analysis. */\nexport interface BoundaryGraphEntry {\n file: string;\n kind: BoundaryGraphEntryKind;\n}\n\n/** Supplies entry modules and module loading hooks for boundary graph analysis. */\nexport interface BoundaryGraphInput {\n entries: readonly BoundaryGraphEntry[];\n readModule(file: string): Promise<string | undefined> | string | undefined;\n resolveModule(input: {\n importer: string;\n source: string;\n }): Promise<string | undefined> | string | undefined;\n}\n\n/** Describes the boundary classification assigned to one named export. */\nexport interface BoundaryGraphExport {\n classification: BoundaryClassification;\n name: string;\n}\n\n/** Describes one analyzed module and the classifications for its exports. */\nexport interface BoundaryGraphModule {\n classification: BoundaryClassification;\n exports: BoundaryGraphExport[];\n file: string;\n}\n\n/** Describes an import that crosses from server-rendered code into a client boundary. */\nexport interface BoundaryGraphClientBoundary {\n exportNames?: readonly string[];\n importerFile: string;\n moduleFile: string;\n source: string;\n}\n\n/** Describes an inferred or explicit server action reference discovered in the graph. */\nexport interface BoundaryGraphServerActionSite {\n end: number;\n exportName: string;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n file: string;\n inferred: boolean;\n moduleFile: string;\n start: number;\n}\n\n/** Names the kind of boundary graph trace event. */\nexport type BoundaryGraphTraceKind =\n | \"client-boundary\"\n | \"export\"\n | \"module\"\n | \"server-action\";\n\n/** Names the analysis reason attached to a boundary graph trace event. */\nexport type BoundaryGraphTraceReason =\n | \"client-runtime-export\"\n | \"module-classification\"\n | \"node-builtin-import\"\n | \"rendered-import\"\n | \"server-action-expression\"\n | \"server-render-export\"\n | \"static-export\"\n | \"use-client-directive\"\n | \"unknown-module\"\n | \"use-server-directive\";\n\n/** Records one decision made while classifying a boundary graph. */\nexport interface BoundaryGraphTraceEvent {\n classification: BoundaryClassification;\n exportName?: string;\n exportNames?: readonly string[];\n expression?: string;\n file: string;\n importerFile?: string;\n inferred?: boolean;\n kind: BoundaryGraphTraceKind;\n moduleFile?: string;\n reason: BoundaryGraphTraceReason;\n source?: string;\n viaExportName?: string;\n}\n\n/** Contains modules, client boundaries, server actions, diagnostics, and trace events for a graph analysis run. */\nexport interface BoundaryGraphResult {\n clientBoundaries: BoundaryGraphClientBoundary[];\n diagnostics: Diagnostic[];\n modules: BoundaryGraphModule[];\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n}\n\ninterface ResolvedServerActionTarget {\n exportName: string;\n inferred: boolean;\n moduleFile: string;\n}\n\n/** Analyzes route modules and static imports to classify server, client, shared, and action boundaries. */\nexport async function analyzeBoundaryGraph(\n input: BoundaryGraphInput,\n): Promise<BoundaryGraphResult> {\n const modules = new Map<string, BoundaryGraphModule>();\n const clientBoundaries: BoundaryGraphClientBoundary[] = [];\n const diagnostics: Diagnostic[] = [];\n const serverActions: BoundaryGraphServerActionSite[] = [];\n const trace: BoundaryGraphTraceEvent[] = [];\n const visiting = new Set<string>();\n\n for (const entry of input.entries) {\n await analyzeModule({\n diagnostics,\n entryKind: entry.kind,\n file: entry.file,\n input,\n clientBoundaries,\n modules,\n serverActions,\n trace,\n visiting,\n });\n }\n\n return {\n clientBoundaries,\n diagnostics,\n modules: Array.from(modules.values()),\n serverActions,\n trace,\n };\n}\n\nasync function analyzeModule(options: {\n diagnostics: Diagnostic[];\n entryKind: BoundaryGraphEntryKind;\n file: string;\n input: BoundaryGraphInput;\n clientBoundaries: BoundaryGraphClientBoundary[];\n modules: Map<string, BoundaryGraphModule>;\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n visiting: Set<string>;\n}): Promise<void> {\n if (options.modules.has(options.file) || options.visiting.has(options.file)) {\n return;\n }\n\n options.visiting.add(options.file);\n\n try {\n const code = await options.input.readModule(options.file);\n\n if (code === undefined) {\n options.diagnostics.push({\n code: \"MR_BOUNDARY_GRAPH_MODULE_NOT_FOUND\",\n level: \"warn\",\n message: `Boundary graph could not read module ${JSON.stringify(options.file)}.`,\n });\n options.modules.set(options.file, {\n classification: \"unknown\",\n exports: [],\n file: options.file,\n });\n options.trace.push({\n classification: \"unknown\",\n file: options.file,\n kind: \"module\",\n reason: \"unknown-module\",\n });\n return;\n }\n\n const analysis = collectClientRouteModuleAnalysis({\n code,\n filename: options.file,\n });\n const serverOnly = isServerOnlyModule(analysis);\n const explicitClient = analysis.hasUseClientDirective;\n const exports = analysis.topLevelExportRenderInfo.map((info) => ({\n classification: serverOnly\n ? \"server-only\"\n : exportClassification({\n explicitClient,\n info,\n entryKind: options.entryKind,\n }),\n name: info.name,\n }));\n\n options.modules.set(options.file, {\n classification: moduleClassification(exports.map((item) => item.classification)),\n exports,\n file: options.file,\n });\n const module = options.modules.get(options.file);\n\n if (module !== undefined) {\n options.trace.push({\n classification: module.classification,\n file: options.file,\n kind: \"module\",\n reason: \"module-classification\",\n });\n }\n options.trace.push(\n ...analysis.topLevelExportRenderInfo.map((info) => {\n const classification = serverOnly\n ? \"server-only\"\n : exportClassification({\n explicitClient,\n info,\n entryKind: options.entryKind,\n });\n\n return {\n classification,\n exportName: info.name,\n file: options.file,\n kind: \"export\" as const,\n reason: exportTraceReason({ analysis, classification, explicitClient, serverOnly }),\n };\n }),\n );\n\n const inferredServerActions = await inferServerActionSites({\n analysis,\n code,\n file: options.file,\n input: options.input,\n });\n options.serverActions.push(...inferredServerActions);\n options.trace.push(\n ...inferredServerActions.map((action) => ({\n classification: \"server-action\" as const,\n exportName: action.exportName,\n expression: action.expression,\n file: action.file,\n inferred: action.inferred,\n kind: \"server-action\" as const,\n moduleFile: action.moduleFile,\n reason: \"server-action-expression\" as const,\n })),\n );\n await analyzeStaticExports({\n analysis,\n diagnostics: options.diagnostics,\n file: options.file,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n await analyzeRenderedImports({\n analysis,\n diagnostics: options.diagnostics,\n file: options.file,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n } finally {\n options.visiting.delete(options.file);\n }\n}\n\nfunction exportTraceReason(options: {\n analysis: ClientRouteModuleAnalysis;\n classification: BoundaryClassification;\n explicitClient: boolean;\n serverOnly: boolean;\n}): BoundaryGraphTraceReason {\n if (options.serverOnly) {\n return options.analysis.hasUseServerDirective ? \"use-server-directive\" : \"node-builtin-import\";\n }\n\n if (options.explicitClient) {\n return \"use-client-directive\";\n }\n\n return options.classification === \"server-render\"\n ? \"server-render-export\"\n : \"client-runtime-export\";\n}\n\nfunction isServerOnlyModule(analysis: ClientRouteModuleAnalysis): boolean {\n return (\n analysis.hasUseServerDirective ||\n analysis.staticImports.some((reference) => nodeBuiltinPackages.has(reference.source))\n );\n}\n\nconst nodeBuiltinPackages = new Set([\n \"assert\",\n \"async_hooks\",\n \"buffer\",\n \"child_process\",\n \"cluster\",\n \"console\",\n \"crypto\",\n \"dgram\",\n \"diagnostics_channel\",\n \"dns\",\n \"domain\",\n \"events\",\n \"fs\",\n \"fs/promises\",\n \"http\",\n \"http2\",\n \"https\",\n \"module\",\n \"net\",\n \"os\",\n \"path\",\n \"perf_hooks\",\n \"process\",\n \"punycode\",\n \"querystring\",\n \"readline\",\n \"repl\",\n \"stream\",\n \"stream/consumers\",\n \"stream/promises\",\n \"stream/web\",\n \"string_decoder\",\n \"timers\",\n \"timers/promises\",\n \"tls\",\n \"trace_events\",\n \"tty\",\n \"url\",\n \"util\",\n \"v8\",\n \"vm\",\n \"wasi\",\n \"worker_threads\",\n \"zlib\",\n].flatMap((name) => [name, `node:${name}`]));\n\nasync function inferServerActionSites(options: {\n analysis: ClientRouteModuleAnalysis;\n code: string;\n file: string;\n input: BoundaryGraphInput;\n}): Promise<BoundaryGraphServerActionSite[]> {\n const actions: BoundaryGraphServerActionSite[] = [];\n const references = collectFormActionExpressionReferences({\n code: options.code,\n filename: options.file,\n });\n\n for (const reference of references) {\n const target = await resolveServerActionExpression({\n analysis: options.analysis,\n code: options.code,\n expression: reference.expression,\n file: options.file,\n input: options.input,\n seen: new Set(),\n });\n\n if (target !== undefined) {\n actions.push({\n end: reference.end,\n exportName: target.exportName,\n expression: reference.expression,\n expressionEnd: reference.expressionEnd,\n expressionStart: reference.expressionStart,\n file: options.file,\n inferred: target.inferred,\n moduleFile: target.moduleFile,\n start: reference.start,\n });\n }\n }\n\n return actions;\n}\n\nasync function resolveServerActionExpression(options: {\n analysis: ClientRouteModuleAnalysis;\n code: string;\n expression: string;\n file: string;\n input: BoundaryGraphInput;\n seen: Set<string>;\n}): Promise<ResolvedServerActionTarget | undefined> {\n const expression = options.expression.trim();\n\n if (options.seen.has(expression)) {\n return undefined;\n }\n\n options.seen.add(expression);\n\n if (identifierPattern.test(expression)) {\n const imported = await importedActionReference({\n analysis: options.analysis,\n expression,\n file: options.file,\n input: options.input,\n });\n\n if (imported !== undefined) {\n return imported;\n }\n\n const alias = localAliasExpression(options.code, expression);\n\n return alias === undefined\n ? undefined\n : await resolveServerActionExpression({\n ...options,\n expression: alias,\n });\n }\n\n const member = memberExpressionPattern.exec(expression);\n\n if (member !== null) {\n const objectName = member.groups?.object;\n const propertyName = member.groups?.property;\n const namespace =\n objectName === undefined || propertyName === undefined\n ? undefined\n : await namespaceActionReference({\n analysis: options.analysis,\n exportName: propertyName,\n file: options.file,\n input: options.input,\n localName: objectName,\n });\n\n if (namespace !== undefined) {\n return namespace;\n }\n\n const propertyExpression =\n objectName === undefined || propertyName === undefined\n ? undefined\n : objectLiteralPropertyExpression(options.code, objectName, propertyName);\n\n return propertyExpression === undefined\n ? undefined\n : await resolveServerActionExpression({\n ...options,\n expression: propertyExpression,\n });\n }\n\n return undefined;\n}\n\nasync function namespaceActionReference(options: {\n analysis: ClientRouteModuleAnalysis;\n exportName: string;\n file: string;\n input: BoundaryGraphInput;\n localName: string;\n}): Promise<ResolvedServerActionTarget | undefined> {\n for (const staticImport of options.analysis.staticImports) {\n const specifier = staticImport.specifiers.find(\n (candidate) => candidate.kind === \"namespace\" && candidate.localName === options.localName,\n );\n\n if (specifier === undefined) {\n continue;\n }\n\n const moduleFile = await options.input.resolveModule({\n importer: options.file,\n source: staticImport.source,\n });\n\n if (moduleFile === undefined) {\n continue;\n }\n\n return {\n exportName: options.exportName,\n inferred: await isInferredServerAction(options.input, moduleFile),\n moduleFile,\n };\n }\n\n return undefined;\n}\n\nasync function importedActionReference(options: {\n analysis: ClientRouteModuleAnalysis;\n expression: string;\n file: string;\n input: BoundaryGraphInput;\n}): Promise<ResolvedServerActionTarget | undefined> {\n for (const staticImport of options.analysis.staticImports) {\n const specifier = staticImport.specifiers.find(\n (candidate) => candidate.localName === options.expression,\n );\n\n if (specifier === undefined || specifier.kind === \"namespace\") {\n continue;\n }\n\n const moduleFile = await options.input.resolveModule({\n importer: options.file,\n source: staticImport.source,\n });\n\n if (moduleFile === undefined) {\n continue;\n }\n\n return {\n exportName: importedActionExportName(specifier),\n inferred: await isInferredServerAction(options.input, moduleFile),\n moduleFile,\n };\n }\n\n return undefined;\n}\n\nfunction localAliasExpression(code: string, name: string): string | undefined {\n const match = new RegExp(\n String.raw`\\b(?:const|let|var)\\s+${escapeRegExp(name)}\\s*=\\s*(?<expression>[^;]+);`,\n ).exec(code);\n const expression = match?.groups?.expression;\n\n return expression === undefined ? undefined : expression.trim();\n}\n\nfunction objectLiteralPropertyExpression(\n code: string,\n objectName: string,\n propertyName: string,\n): string | undefined {\n const object = new RegExp(\n String.raw`\\b(?:const|let|var)\\s+${escapeRegExp(objectName)}\\s*=\\s*\\{(?<body>[\\s\\S]*?)\\}\\s*;`,\n ).exec(code);\n const body = object?.groups?.body;\n\n if (body === undefined) {\n return undefined;\n }\n\n const property = escapeRegExp(propertyName);\n const assignment = new RegExp(\n String.raw`(?:^|,)\\s*${property}\\s*:\\s*(?<expression>[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)?)\\s*(?:,|$)`,\n ).exec(body);\n\n if (assignment?.groups?.expression !== undefined) {\n return assignment.groups.expression;\n }\n\n const shorthand = new RegExp(String.raw`(?:^|,)\\s*(?<name>${property})\\s*(?:,|$)`).exec(body);\n\n return shorthand?.groups?.name;\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction importedActionExportName(specifier: StaticImportSpecifierReference): string {\n return specifier.kind === \"default\" ? \"default\" : specifier.importedName;\n}\n\nasync function isInferredServerAction(\n input: BoundaryGraphInput,\n moduleFile: string,\n): Promise<boolean> {\n const code = await input.readModule(moduleFile);\n\n if (code === undefined) {\n return true;\n }\n\n return !hasModuleDirective({ code, directive: \"use server\", filename: moduleFile });\n}\n\nconst identifierPattern = /^[A-Za-z_$][\\w$]*$/;\nconst memberExpressionPattern =\n /^(?<object>[A-Za-z_$][\\w$]*)\\.(?<property>[A-Za-z_$][\\w$]*)$/;\n\nasync function analyzeStaticExports(options: {\n analysis: ClientRouteModuleAnalysis;\n diagnostics: Diagnostic[];\n file: string;\n input: BoundaryGraphInput;\n clientBoundaries: BoundaryGraphClientBoundary[];\n modules: Map<string, BoundaryGraphModule>;\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n visiting: Set<string>;\n}): Promise<void> {\n for (const reference of options.analysis.staticExports) {\n const resolved = await options.input.resolveModule({\n importer: options.file,\n source: reference.source,\n });\n\n if (resolved === undefined) {\n continue;\n }\n\n await analyzeModule({\n diagnostics: options.diagnostics,\n entryKind: \"module\",\n file: resolved,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n\n propagateStaticExport({\n file: options.file,\n modules: options.modules,\n reference,\n resolved,\n trace: options.trace,\n });\n }\n}\n\nfunction propagateStaticExport(options: {\n file: string;\n modules: Map<string, BoundaryGraphModule>;\n reference: StaticExportReference;\n resolved: string;\n trace: BoundaryGraphTraceEvent[];\n}): void {\n const module = options.modules.get(options.file);\n const exported = options.modules.get(options.resolved);\n\n if (module === undefined || exported === undefined) {\n return;\n }\n\n const propagated = propagatedStaticExports(options.reference, exported);\n\n if (propagated.length === 0) {\n return;\n }\n\n const exportsByName = new Map(module.exports.map((item) => [item.name, item]));\n\n for (const item of propagated) {\n exportsByName.set(item.export.name, item.export);\n options.trace.push({\n classification: item.export.classification,\n exportName: item.export.name,\n file: options.file,\n kind: \"export\",\n moduleFile: options.resolved,\n reason: \"static-export\",\n source: options.reference.source,\n viaExportName: item.viaExportName,\n });\n }\n\n const exports = Array.from(exportsByName.values()).sort((left, right) =>\n left.name.localeCompare(right.name),\n );\n const classification = moduleClassification(exports.map((item) => item.classification));\n options.modules.set(options.file, {\n ...module,\n classification,\n exports,\n });\n options.trace.push({\n classification,\n file: options.file,\n kind: \"module\",\n moduleFile: options.resolved,\n reason: \"static-export\",\n source: options.reference.source,\n });\n}\n\nfunction propagatedStaticExports(\n reference: StaticExportReference,\n exported: BoundaryGraphModule,\n): { export: BoundaryGraphExport; viaExportName: string }[] {\n if (reference.exportAll) {\n return exported.exports.map((item) => ({\n export: item,\n viaExportName: item.name,\n }));\n }\n\n if (reference.specifiers.length === 0) {\n return exported.exports\n .filter((item) => reference.exportedNames.includes(item.name))\n .map((item) => ({\n export: item,\n viaExportName: item.name,\n }));\n }\n\n return reference.specifiers.flatMap((specifier) => {\n const item = exported.exports.find((candidate) => candidate.name === specifier.localName);\n\n return item === undefined\n ? []\n : [\n {\n export: { ...item, name: specifier.exportedName },\n viaExportName: specifier.localName,\n },\n ];\n });\n}\n\nasync function analyzeRenderedImports(options: {\n analysis: ClientRouteModuleAnalysis;\n diagnostics: Diagnostic[];\n file: string;\n input: BoundaryGraphInput;\n clientBoundaries: BoundaryGraphClientBoundary[];\n modules: Map<string, BoundaryGraphModule>;\n serverActions: BoundaryGraphServerActionSite[];\n trace: BoundaryGraphTraceEvent[];\n visiting: Set<string>;\n}): Promise<void> {\n const renderedRoots = new Set(\n options.analysis.topLevelExportRenderInfo.flatMap((info) => [\n ...info.renderedComponentRoots,\n ...info.calledComponentRoots,\n ]),\n );\n\n for (const reference of options.analysis.staticImports) {\n if (reference.sideEffect && isStyleModuleSpecifier(reference.source)) {\n continue;\n }\n\n if (!isRenderedImport(reference, renderedRoots)) {\n continue;\n }\n\n const resolved = await options.input.resolveModule({\n importer: options.file,\n source: reference.source,\n });\n\n if (resolved === undefined) {\n continue;\n }\n\n const exportNames = renderedImportedExportNames(reference, renderedRoots);\n await analyzeModule({\n diagnostics: options.diagnostics,\n entryKind: \"module\",\n file: resolved,\n input: options.input,\n clientBoundaries: options.clientBoundaries,\n modules: options.modules,\n serverActions: options.serverActions,\n trace: options.trace,\n visiting: options.visiting,\n });\n\n const module = options.modules.get(resolved);\n\n if (module !== undefined && hasClientBoundaryExport(module, exportNames)) {\n options.clientBoundaries.push({\n ...(exportNames === undefined ? {} : { exportNames }),\n importerFile: options.file,\n moduleFile: resolved,\n source: reference.source,\n });\n options.trace.push({\n classification: \"client-boundary\",\n ...(exportNames === undefined ? {} : { exportNames }),\n file: options.file,\n importerFile: options.file,\n kind: \"client-boundary\",\n moduleFile: resolved,\n reason: \"rendered-import\",\n source: reference.source,\n });\n }\n }\n}\n\nfunction renderedImportedExportNames(\n reference: ClientRouteStaticImportReference,\n renderedRoots: ReadonlySet<string>,\n): string[] | undefined {\n if (reference.sideEffect) {\n return undefined;\n }\n\n const names: string[] = [];\n\n for (const specifier of reference.specifiers) {\n if (!renderedRoots.has(specifier.localName)) {\n continue;\n }\n\n if (specifier.kind === \"namespace\") {\n return undefined;\n }\n\n names.push(specifier.kind === \"default\" ? \"default\" : specifier.importedName);\n }\n\n return names;\n}\n\nfunction hasClientBoundaryExport(\n module: BoundaryGraphModule,\n exportNames: readonly string[] | undefined,\n): boolean {\n return module.exports.some(\n (item) =>\n item.classification === \"client-boundary\" &&\n (exportNames === undefined || exportNames.includes(item.name)),\n );\n}\n\nfunction isRenderedImport(\n reference: ClientRouteStaticImportReference,\n renderedRoots: ReadonlySet<string>,\n): boolean {\n return (\n reference.sideEffect ||\n reference.localNames.some((localName) => renderedRoots.has(localName))\n );\n}\n\nfunction isStyleModuleSpecifier(source: string): boolean {\n return /\\.(?:css|less|sass|scss|styl|stylus)(?:[?#].*)?$/u.test(source);\n}\n\nfunction exportClassification(options: {\n explicitClient: boolean;\n info: TopLevelExportRenderInfo;\n entryKind: BoundaryGraphEntryKind;\n}): BoundaryClassification {\n if (!options.explicitClient && !options.info.clientRuntime) {\n return \"server-render\";\n }\n\n return isRouteEntryKind(options.entryKind) ? \"client-route\" : \"client-boundary\";\n}\n\nfunction isRouteEntryKind(kind: BoundaryGraphEntryKind): boolean {\n return kind === \"route-layout\" || kind === \"route-page\" || kind === \"route-template\";\n}\n\nfunction moduleClassification(\n classifications: readonly BoundaryClassification[],\n): BoundaryClassification {\n if (classifications.includes(\"client-route\")) {\n return \"client-route\";\n }\n\n if (classifications.includes(\"client-boundary\")) {\n return \"client-boundary\";\n }\n\n if (classifications.includes(\"server-action\")) {\n return \"server-action\";\n }\n\n if (classifications.includes(\"unknown\")) {\n return \"unknown\";\n }\n\n if (classifications.includes(\"server-only\")) {\n return \"server-only\";\n }\n\n return \"server-render\";\n}\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/** Stores parsed OXC program data and parse errors for a compiler module. */
|
|
1
2
|
export interface CompilerModuleContext {
|
|
2
3
|
code: string;
|
|
3
4
|
filename: string;
|
|
4
5
|
parseErrors: readonly unknown[];
|
|
5
6
|
program: unknown;
|
|
6
7
|
}
|
|
8
|
+
/** Parses source code with OXC and returns a compiler module context. */
|
|
7
9
|
export declare function createCompilerModuleContextWithOxc(input: {
|
|
8
10
|
code: string;
|
|
9
11
|
filename?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler-module-context.d.ts","sourceRoot":"","sources":["../src/compiler-module-context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,qBAAqB,CAcxB"}
|
|
1
|
+
{"version":3,"file":"compiler-module-context.d.ts","sourceRoot":"","sources":["../src/compiler-module-context.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,yEAAyE;AACzE,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,qBAAqB,CAcxB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseSync } from "oxc-parser";
|
|
2
|
+
/** Parses source code with OXC and returns a compiler module context. */
|
|
2
3
|
export function createCompilerModuleContextWithOxc(input) {
|
|
3
4
|
const filename = input.filename ?? "module.tsx";
|
|
4
5
|
const parsed = parseSync(filename, input.code, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler-module-context.js","sourceRoot":"","sources":["../src/compiler-module-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler-module-context.js","sourceRoot":"","sources":["../src/compiler-module-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvC,yEAAyE;AACzE,MAAM,UAAU,kCAAkC,CAAC,KAGlD;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;QAC7C,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,6BAA6B,CAAC,QAAQ,CAAC;QAC7C,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ;QACR,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,QAAgB;IACrD,OAAO,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC","sourcesContent":["import { parseSync } from \"oxc-parser\";\n\n/** Stores parsed OXC program data and parse errors for a compiler module. */\nexport interface CompilerModuleContext {\n code: string;\n filename: string;\n parseErrors: readonly unknown[];\n program: unknown;\n}\n\n/** Parses source code with OXC and returns a compiler module context. */\nexport function createCompilerModuleContextWithOxc(input: {\n code: string;\n filename?: string | undefined;\n}): CompilerModuleContext {\n const filename = input.filename ?? \"module.tsx\";\n const parsed = parseSync(filename, input.code, {\n astType: \"ts\",\n lang: compilerModuleContextLanguage(filename),\n sourceType: \"module\",\n });\n\n return {\n code: input.code,\n filename,\n parseErrors: parsed.errors,\n program: parsed.program,\n };\n}\n\nfunction compilerModuleContextLanguage(filename: string): \"ts\" | \"tsx\" {\n return /\\.(?:cts|mts|ts)$/i.test(filename) ? \"ts\" : \"tsx\";\n}\n"]}
|
package/dist/diagnostics.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Diagnostic, SourceLocation } from "./types.js";
|
|
2
|
+
/** Formats a compiler diagnostic with filename, location, code, message, and suggestion details. */
|
|
2
3
|
export declare function formatDiagnostic(filename: string, diagnostic: Diagnostic): string;
|
|
3
4
|
export declare function unsupportedComponentReferenceDiagnostic(name: string, loc?: SourceLocation): Diagnostic;
|
|
4
5
|
export declare function unsupportedServerEventHandlerDiagnostic(name: string, loc?: SourceLocation): Diagnostic;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,MAAM,CAiBR;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,iCAAiC,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,CAQlF;AAED,wBAAgB,uCAAuC,IAAI,UAAU,CAOpE;AAED,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAMlF;AAED,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,gCAAgC,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,CAQjF;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAWZ;AAED,wBAAgB,qCAAqC,CACnD,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAQZ;AAED,wBAAgB,2CAA2C,CACzD,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAQZ;AAED,wBAAgB,mCAAmC,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,CAQpF;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,CAAC,EAAE,cAAc,EACpB,OAAO,GAAE,MAAM,GAAG,WAAW,GAAG,SAAqB,GACpD,UAAU,CAuCZ"}
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,oGAAoG;AACpG,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,MAAM,CAiBR;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,iCAAiC,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,CAQlF;AAED,wBAAgB,uCAAuC,IAAI,UAAU,CAOpE;AAED,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAMlF;AAED,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAOZ;AAED,wBAAgB,gCAAgC,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,CAQjF;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAWZ;AAED,wBAAgB,qCAAqC,CACnD,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAQZ;AAED,wBAAgB,2CAA2C,CACzD,GAAG,CAAC,EAAE,cAAc,GACnB,UAAU,CAQZ;AAED,wBAAgB,mCAAmC,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,CAQpF;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,CAAC,EAAE,cAAc,EACpB,OAAO,GAAE,MAAM,GAAG,WAAW,GAAG,SAAqB,GACpD,UAAU,CAuCZ"}
|
package/dist/diagnostics.js
CHANGED
package/dist/diagnostics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Diagnostic, SourceLocation } from \"./types.js\";\n\nexport function formatDiagnostic(\n filename: string,\n diagnostic: Diagnostic,\n): string {\n const loc =\n diagnostic.loc === undefined\n ? \"\"\n : `:${diagnostic.loc.line}:${diagnostic.loc.column}`;\n const suggestion =\n diagnostic.suggestion === undefined\n ? \"\"\n : [\n ` Suggestion: ${diagnostic.suggestion.title}`,\n diagnostic.suggestion.replacement === undefined\n ? \"\"\n : ` Replacement: ${diagnostic.suggestion.replacement}`,\n diagnostic.suggestion.link === undefined ? \"\" : ` See: ${diagnostic.suggestion.link}`,\n ].join(\"\");\n\n return `${filename}${loc} [${diagnostic.code}] ${diagnostic.message}${suggestion}`;\n}\n\nexport function unsupportedComponentReferenceDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPONENT_REFERENCE\",\n message: `Component reference '${name}' is not a supported same-module component.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedServerEventHandlerDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n message: `Event handler '${name}' cannot be emitted by the server target.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedServerDynamicAttributeDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_SERVER_DYNAMIC_ATTRIBUTE\",\n message: `Dynamic attribute '${name}' cannot be emitted by the server target.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedRefAttributeDiagnostic(loc?: SourceLocation): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_REF_ATTRIBUTE\",\n message:\n \"JSX ref attributes are only supported by compat client output. Server and reactive output cannot attach React-style refs yet.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedCompatServerTargetDiagnostic(): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPAT_SERVER_TARGET\",\n message:\n \"Compat mode does not support server output yet. Use the reactive server output for server-rendered routes, or compile compat components for the client boundary.\",\n };\n}\n\nexport function unsupportedClientAsyncComponentDiagnostic(name: string): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_ASYNC_COMPONENT_CLIENT_UNSUPPORTED\",\n message: `Async component '${name}' cannot be emitted by the client target. Async components are server-only; move data fetching into a route loader with <Await>, or fetch on the client with an effect or query library.`,\n };\n}\n\nexport function unsupportedAwaitInnerComponentDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_AWAIT_INNER_COMPONENT\",\n message: `Component reference '${name}' cannot be emitted inside an <Await> renderer until compat boundary hydration lowering is implemented.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedNestedAwaitDiagnostic(loc?: SourceLocation): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_NESTED_AWAIT\",\n message:\n \"Nested <Await> renderers are not supported by the server stream target yet. Move the inner <Await> outside the outer renderer or resolve the nested value before rendering.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unserializableAwaitValueDiagnostic(\n reason: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"warn\",\n code: \"MR_UNSERIALIZABLE_AWAIT_VALUE\",\n message:\n `<Await value={...}> contains a non-JSON-serializable value (${reason}). ` +\n `The wire format uses JSON.stringify, so the client-side renderer will receive a different shape ` +\n `after the round-trip. Pass JSON-compatible data or serialize the value before it reaches <Await>. ` +\n `See https://github.com/t-k/mreact#streaming-loading-and-await.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedBodyStatementJsxDiagnostic(\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_BODY_STATEMENT_JSX\",\n message:\n \"JSX inside component body statements is not lowered yet. Move the JSX into the return tree or create it with runtime helpers.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedTopLevelJsxInitializerDiagnostic(\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_TOP_LEVEL_JSX_INITIALIZER\",\n message:\n \"Top-level variable initializers that contain JSX are not lowered yet. Move the JSX into a function component declaration or a component body statement.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedJsxSpreadChildDiagnostic(loc?: SourceLocation): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_JSX_SPREAD_CHILD\",\n message:\n \"JSX spread children are not supported yet. Pass an array expression as a normal JSX expression child instead of using `{...children}` syntax.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function invalidJsxExpressionDiagnostic(\n loc?: SourceLocation,\n context: \"text\" | \"attribute\" | \"unknown\" = \"unknown\",\n): Diagnostic {\n if (context === \"text\") {\n return {\n level: \"error\",\n code: \"MR_INVALID_JSX_EXPRESSION\",\n message:\n \"JSX text contains an empty or unparseable expression. To include literal braces in text, use { / } or {'{'} / {'}'} escapes.\",\n suggestion: {\n title: \"Escape literal braces in text as HTML entities or JSX string expressions.\",\n replacement: \"{ / }\",\n },\n ...(loc === undefined ? {} : { loc }),\n };\n }\n\n if (context === \"attribute\") {\n return {\n level: \"error\",\n code: \"MR_INVALID_JSX_EXPRESSION\",\n message:\n \"JSX attribute expression is empty or unparseable. Attribute braces must contain a valid JavaScript expression.\",\n suggestion: {\n title: \"Use a valid JavaScript expression in braces, or quote literal attribute text.\",\n replacement: 'title=\"literal text\"',\n },\n ...(loc === undefined ? {} : { loc }),\n };\n }\n\n return {\n level: \"error\",\n code: \"MR_INVALID_JSX_EXPRESSION\",\n message:\n \"JSX expression is empty or unparseable. To include literal braces in text, use { / } or {'{'} / {'}'} escapes.\",\n suggestion: {\n title: \"Check the JSX expression syntax at this location.\",\n },\n ...(loc === undefined ? {} : { loc }),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Diagnostic, SourceLocation } from \"./types.js\";\n\n/** Formats a compiler diagnostic with filename, location, code, message, and suggestion details. */\nexport function formatDiagnostic(\n filename: string,\n diagnostic: Diagnostic,\n): string {\n const loc =\n diagnostic.loc === undefined\n ? \"\"\n : `:${diagnostic.loc.line}:${diagnostic.loc.column}`;\n const suggestion =\n diagnostic.suggestion === undefined\n ? \"\"\n : [\n ` Suggestion: ${diagnostic.suggestion.title}`,\n diagnostic.suggestion.replacement === undefined\n ? \"\"\n : ` Replacement: ${diagnostic.suggestion.replacement}`,\n diagnostic.suggestion.link === undefined ? \"\" : ` See: ${diagnostic.suggestion.link}`,\n ].join(\"\");\n\n return `${filename}${loc} [${diagnostic.code}] ${diagnostic.message}${suggestion}`;\n}\n\nexport function unsupportedComponentReferenceDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPONENT_REFERENCE\",\n message: `Component reference '${name}' is not a supported same-module component.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedServerEventHandlerDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n message: `Event handler '${name}' cannot be emitted by the server target.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedServerDynamicAttributeDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_SERVER_DYNAMIC_ATTRIBUTE\",\n message: `Dynamic attribute '${name}' cannot be emitted by the server target.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedRefAttributeDiagnostic(loc?: SourceLocation): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_REF_ATTRIBUTE\",\n message:\n \"JSX ref attributes are only supported by compat client output. Server and reactive output cannot attach React-style refs yet.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedCompatServerTargetDiagnostic(): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPAT_SERVER_TARGET\",\n message:\n \"Compat mode does not support server output yet. Use the reactive server output for server-rendered routes, or compile compat components for the client boundary.\",\n };\n}\n\nexport function unsupportedClientAsyncComponentDiagnostic(name: string): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_ASYNC_COMPONENT_CLIENT_UNSUPPORTED\",\n message: `Async component '${name}' cannot be emitted by the client target. Async components are server-only; move data fetching into a route loader with <Await>, or fetch on the client with an effect or query library.`,\n };\n}\n\nexport function unsupportedAwaitInnerComponentDiagnostic(\n name: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_AWAIT_INNER_COMPONENT\",\n message: `Component reference '${name}' cannot be emitted inside an <Await> renderer until compat boundary hydration lowering is implemented.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedNestedAwaitDiagnostic(loc?: SourceLocation): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_NESTED_AWAIT\",\n message:\n \"Nested <Await> renderers are not supported by the server stream target yet. Move the inner <Await> outside the outer renderer or resolve the nested value before rendering.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unserializableAwaitValueDiagnostic(\n reason: string,\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"warn\",\n code: \"MR_UNSERIALIZABLE_AWAIT_VALUE\",\n message:\n `<Await value={...}> contains a non-JSON-serializable value (${reason}). ` +\n `The wire format uses JSON.stringify, so the client-side renderer will receive a different shape ` +\n `after the round-trip. Pass JSON-compatible data or serialize the value before it reaches <Await>. ` +\n `See https://github.com/t-k/mreact#streaming-loading-and-await.`,\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedBodyStatementJsxDiagnostic(\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_BODY_STATEMENT_JSX\",\n message:\n \"JSX inside component body statements is not lowered yet. Move the JSX into the return tree or create it with runtime helpers.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedTopLevelJsxInitializerDiagnostic(\n loc?: SourceLocation,\n): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_TOP_LEVEL_JSX_INITIALIZER\",\n message:\n \"Top-level variable initializers that contain JSX are not lowered yet. Move the JSX into a function component declaration or a component body statement.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function unsupportedJsxSpreadChildDiagnostic(loc?: SourceLocation): Diagnostic {\n return {\n level: \"error\",\n code: \"MR_UNSUPPORTED_JSX_SPREAD_CHILD\",\n message:\n \"JSX spread children are not supported yet. Pass an array expression as a normal JSX expression child instead of using `{...children}` syntax.\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nexport function invalidJsxExpressionDiagnostic(\n loc?: SourceLocation,\n context: \"text\" | \"attribute\" | \"unknown\" = \"unknown\",\n): Diagnostic {\n if (context === \"text\") {\n return {\n level: \"error\",\n code: \"MR_INVALID_JSX_EXPRESSION\",\n message:\n \"JSX text contains an empty or unparseable expression. To include literal braces in text, use { / } or {'{'} / {'}'} escapes.\",\n suggestion: {\n title: \"Escape literal braces in text as HTML entities or JSX string expressions.\",\n replacement: \"{ / }\",\n },\n ...(loc === undefined ? {} : { loc }),\n };\n }\n\n if (context === \"attribute\") {\n return {\n level: \"error\",\n code: \"MR_INVALID_JSX_EXPRESSION\",\n message:\n \"JSX attribute expression is empty or unparseable. Attribute braces must contain a valid JavaScript expression.\",\n suggestion: {\n title: \"Use a valid JavaScript expression in braces, or quote literal attribute text.\",\n replacement: 'title=\"literal text\"',\n },\n ...(loc === undefined ? {} : { loc }),\n };\n }\n\n return {\n level: \"error\",\n code: \"MR_INVALID_JSX_EXPRESSION\",\n message:\n \"JSX expression is empty or unparseable. To include literal braces in text, use { / } or {'{'} / {'}'} escapes.\",\n suggestion: {\n title: \"Check the JSX expression syntax at this location.\",\n },\n ...(loc === undefined ? {} : { loc }),\n };\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
/** Re-exports compiler module analysis helpers from the internal compiler API. */
|
|
1
2
|
export { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectClientRouteModuleAnalysis, collectFormActionExpressionReferences, collectFormActionReferences, collectFormActionReferenceNames, collectStaticExportReferences, collectStaticImportReferences, collectStaticModuleSpecifiers, collectTopLevelExportRenderInfo, collectTopLevelValueExportNames, demoteTopLevelExportDeclarations, hasClientRuntimeSyntax, hasModuleDirective, hasTopLevelExportDeclaration, stripTopLevelExportDeclarations, stripUnusedStaticValueImports, } from "./internal.js";
|
|
3
|
+
/** Re-exports compiler module analysis types from the internal compiler API. */
|
|
2
4
|
export type { StaticExportReference, StaticExportSpecifierReference, FormActionExpressionReference, FormActionReference, StaticImportReference, StaticImportSpecifierReference, ClientRouteModuleAnalysis, ClientRouteStaticImportReference, TopLevelExportRenderInfo, } from "./internal.js";
|
|
3
5
|
export { analyzeBoundaryGraph } from "./boundary-graph.js";
|
|
4
6
|
export type { BoundaryClassification, BoundaryGraphClientBoundary, BoundaryGraphEntry, BoundaryGraphEntryKind, BoundaryGraphExport, BoundaryGraphInput, BoundaryGraphModule, BoundaryGraphResult, BoundaryGraphServerActionSite, BoundaryGraphTraceEvent, BoundaryGraphTraceKind, BoundaryGraphTraceReason, } from "./boundary-graph.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,gFAAgF;AAChF,YAAY,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Re-exports compiler module analysis helpers from the internal compiler API. */
|
|
1
2
|
export { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectClientRouteModuleAnalysis, collectFormActionExpressionReferences, collectFormActionReferences, collectFormActionReferenceNames, collectStaticExportReferences, collectStaticImportReferences, collectStaticModuleSpecifiers, collectTopLevelExportRenderInfo, collectTopLevelValueExportNames, demoteTopLevelExportDeclarations, hasClientRuntimeSyntax, hasModuleDirective, hasTopLevelExportDeclaration, stripTopLevelExportDeclarations, stripUnusedStaticValueImports, } from "./internal.js";
|
|
2
3
|
export { analyzeBoundaryGraph } from "./boundary-graph.js";
|
|
3
4
|
export { formatDiagnostic } from "./diagnostics.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAavB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAe3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["/** Re-exports compiler module analysis helpers from the internal compiler API. */\nexport {\n collectIdentifierReferenceNames,\n collectJsxComponentRootNames,\n collectClientRouteModuleAnalysis,\n collectFormActionExpressionReferences,\n collectFormActionReferences,\n collectFormActionReferenceNames,\n collectStaticExportReferences,\n collectStaticImportReferences,\n collectStaticModuleSpecifiers,\n collectTopLevelExportRenderInfo,\n collectTopLevelValueExportNames,\n demoteTopLevelExportDeclarations,\n hasClientRuntimeSyntax,\n hasModuleDirective,\n hasTopLevelExportDeclaration,\n stripTopLevelExportDeclarations,\n stripUnusedStaticValueImports,\n} from \"./internal.js\";\n/** Re-exports compiler module analysis types from the internal compiler API. */\nexport type {\n StaticExportReference,\n StaticExportSpecifierReference,\n FormActionExpressionReference,\n FormActionReference,\n StaticImportReference,\n StaticImportSpecifierReference,\n ClientRouteModuleAnalysis,\n ClientRouteStaticImportReference,\n TopLevelExportRenderInfo,\n} from \"./internal.js\";\nexport { analyzeBoundaryGraph } from \"./boundary-graph.js\";\nexport type {\n BoundaryClassification,\n BoundaryGraphClientBoundary,\n BoundaryGraphEntry,\n BoundaryGraphEntryKind,\n BoundaryGraphExport,\n BoundaryGraphInput,\n BoundaryGraphModule,\n BoundaryGraphResult,\n BoundaryGraphServerActionSite,\n BoundaryGraphTraceEvent,\n BoundaryGraphTraceKind,\n BoundaryGraphTraceReason,\n} from \"./boundary-graph.js\";\nexport { formatDiagnostic } from \"./diagnostics.js\";\nexport { transform } from \"./transform.js\";\nexport type {\n CompileTarget,\n CompilerFrontend,\n CompilerMetadata,\n ClientReferenceMetadata,\n ComponentMetadata,\n Diagnostic,\n ModuleMetadata,\n ServerBootstrapMode,\n ServerEscapeOptions,\n RuntimeImport,\n ServerOutputMode,\n SourceLocation,\n TransformInput,\n TransformOutput,\n} from \"./types.js\";\n"]}
|