@reckona/mreact-router 0.0.2 → 0.0.4

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/build.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { cp, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
3
3
  import { dirname, join, relative, sep } from "node:path";
4
- import { transform } from "@reckona/mreact-compiler";
5
- import { buildClientRouteOutput, clientScriptForPath, createClientRouteInferenceCache, detectClientNavigationHint, inferClientRouteModule, isClientRouteModule, routeIdForPath, } from "./client.js";
4
+ import { collectTopLevelValueExportNames, formatDiagnostic, hasModuleDirective, transform, } from "@reckona/mreact-compiler";
5
+ import { buildClientRouteOutput, clientScriptForPath, createClientRouteInferenceCache, detectClientNavigationHint, formatClientRouteInferenceDiagnostic, inferClientRouteModule, isClientRouteModule, routeIdForPath, } from "./client.js";
6
6
  import { importAppRouterSourceModule } from "./module-runner.js";
7
7
  import { scanAppRoutes } from "./routes.js";
8
8
  import { resolveAppRouterProjectOptions, } from "./config.js";
@@ -10,7 +10,7 @@ import { renderAppRequest } from "./render.js";
10
10
  import { hasGenerateStaticParamsExport, hasPrerenderExport, isStreamRouteSource, stripRouteBuildExports, stripRouteClientOnlyExports, } from "./route-source.js";
11
11
  const nativeEscapeTransform = {
12
12
  batchImportName: "escapeHtmlBatch",
13
- batchImportSource: "@reckona/mreact-router/internal/native-escape",
13
+ batchImportSource: "@reckona/mreact-router/native-escape",
14
14
  };
15
15
  export async function buildApp(options) {
16
16
  const project = resolveAppRouterProjectOptions(options);
@@ -25,6 +25,11 @@ export async function buildApp(options) {
25
25
  await mkdir(join(clientDir, "assets", "routes"), { recursive: true });
26
26
  await copyPublicAssets(project.publicDir, join(clientDir, "public"));
27
27
  const files = await collectBuildFiles(project.projectRoot, project.allowedSourceDirs);
28
+ const serverActionManifest = collectBuildServerActionManifest({
29
+ files,
30
+ projectRoot: project.projectRoot,
31
+ routesDir: project.routesDir,
32
+ });
28
33
  const clientRouteInferenceCache = createClientRouteInferenceCache();
29
34
  const serverModules = await buildServerModuleArtifacts({
30
35
  clientRouteInferenceCache,
@@ -54,12 +59,41 @@ export async function buildApp(options) {
54
59
  ...(project.publicAssetBaseUrl === undefined
55
60
  ? {}
56
61
  : { publicAssetBaseUrl: project.publicAssetBaseUrl }),
62
+ ...(serverActionManifest.length === 0 ? {} : { serverActionManifest }),
57
63
  serverModules,
58
64
  }, null, 2));
59
65
  await writeFile(join(clientDir, "manifest.json"), JSON.stringify({ routes: clientRoutes }, null, 2));
60
66
  await writeFile(join(clientDir, ".vite", "manifest.json"), JSON.stringify(viteManifestFromClientRoutes(clientRoutes), null, 2));
61
67
  return { routes };
62
68
  }
69
+ function collectBuildServerActionManifest(options) {
70
+ const entries = [];
71
+ const relativeRoutesDir = relative(options.projectRoot, options.routesDir);
72
+ for (const [file, code] of Object.entries(options.files)) {
73
+ if (!isAppRelativeFile(file, relativeRoutesDir) || !isSourceModuleFile(file)) {
74
+ continue;
75
+ }
76
+ if (!hasModuleDirective({ code, directive: "use server", filename: file })) {
77
+ continue;
78
+ }
79
+ const moduleId = moduleIdForBuildFile(file, relativeRoutesDir);
80
+ for (const exportName of collectTopLevelValueExportNames({ code, filename: file })) {
81
+ entries.push({ moduleId, exportName });
82
+ }
83
+ }
84
+ return entries.sort((left, right) => left.moduleId === right.moduleId
85
+ ? left.exportName.localeCompare(right.exportName)
86
+ : left.moduleId.localeCompare(right.moduleId));
87
+ }
88
+ function isSourceModuleFile(file) {
89
+ return /\.(?:mreact\.tsx|tsx?|jsx?|mjs|mts|cjs|cts)$/.test(file);
90
+ }
91
+ function isAppRelativeFile(file, relativeRoutesDir) {
92
+ return relativeRoutesDir === "" || file === relativeRoutesDir || file.startsWith(`${relativeRoutesDir}/`);
93
+ }
94
+ function moduleIdForBuildFile(file, relativeRoutesDir) {
95
+ return relativeRoutesDir === "" ? file : file.slice(relativeRoutesDir.length + 1);
96
+ }
63
97
  async function copyPublicAssets(publicDir, outDir) {
64
98
  try {
65
99
  await cp(publicDir, outDir, { force: true, recursive: true });
@@ -153,15 +187,19 @@ async function buildServerModuleArtifacts(options) {
153
187
  ? ["stream", "string"]
154
188
  : ["string"];
155
189
  const code = route === undefined ? source : stripRouteBuildExports(source);
156
- const clientBoundaryImports = route === undefined
157
- ? []
158
- : (await inferClientRouteModule({
190
+ const clientInference = route === undefined
191
+ ? { clientBoundaryImports: [], diagnostics: [] }
192
+ : await inferClientRouteModule({
159
193
  cache: options.clientRouteInferenceCache,
160
194
  code: stripRouteClientOnlyExports(source),
161
195
  filename: join(options.projectRoot, file),
162
196
  routePath: route.path,
163
- })).clientBoundaryImports;
197
+ });
198
+ const clientBoundaryImports = clientInference.clientBoundaryImports;
164
199
  const artifact = {};
200
+ for (const diagnostic of clientInference.diagnostics) {
201
+ console.warn(formatClientRouteInferenceDiagnostic(diagnostic));
202
+ }
165
203
  for (const serverOutput of serverOutputs) {
166
204
  const output = transform({
167
205
  code,
@@ -174,9 +212,7 @@ async function buildServerModuleArtifacts(options) {
174
212
  });
175
213
  const fatalDiagnostics = output.diagnostics.filter((diagnostic) => diagnostic.code !== "MR_UNSUPPORTED_SERVER_EVENT_HANDLER");
176
214
  if (fatalDiagnostics.length > 0) {
177
- throw new Error(`${file}: ${fatalDiagnostics
178
- .map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`)
179
- .join("\n")}`);
215
+ throw new Error(fatalDiagnostics.map((diagnostic) => formatDiagnostic(file, diagnostic)).join("\n"));
180
216
  }
181
217
  artifact[serverOutput] = {
182
218
  code: output.code,
@@ -279,9 +315,7 @@ async function validateProductionRoutes(routes) {
279
315
  });
280
316
  const fatalDiagnostics = output.diagnostics.filter((diagnostic) => diagnostic.code !== "MR_UNSUPPORTED_SERVER_EVENT_HANDLER");
281
317
  if (fatalDiagnostics.length > 0) {
282
- throw new Error(`${route.file}: ${fatalDiagnostics
283
- .map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`)
284
- .join("\n")}`);
318
+ throw new Error(fatalDiagnostics.map((diagnostic) => formatDiagnostic(route.file, diagnostic)).join("\n"));
285
319
  }
286
320
  }
287
321
  }
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EACL,8BAA8B,GAE/B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,qBAAqB,GAAG;IAC5B,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,+CAA+C;CAC1D,CAAC;AAyCX,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,OAAO,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEjD,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtF,MAAM,yBAAyB,GAAG,+BAA+B,EAAE,CAAC;IACpE,MAAM,aAAa,GAAG,MAAM,0BAA0B,CAAC;QACrD,yBAAyB;QACzB,KAAK;QACL,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM;KACP,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,GAAG,KAAK;QACR,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC,CAAC;IACJ,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAC3F,CAAC;IACF,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC;QACpD,MAAM,EAAE,OAAO,CAAC,SAAS;QACzB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY;QACZ,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,SAAS,CACb,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,IAAI,CAAC,SAAS,CACZ;QACE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7D,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CACzC;QACD,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;QACrF,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC;QAC3D,KAAK;QACL,iBAAiB;QACjB,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACvD,aAAa;KACgB,EAC/B,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,MAAM,SAAS,CACb,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAClD,CAAC;IACF,MAAM,SAAS,CACb,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,EACzC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACpE,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,MAAc;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAKpC;IACC,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACrC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC/E,CACF,CAAC;IACF,MAAM,WAAW,GAA0C,EAAE,CAAC;IAE9D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;gBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,aAAa;gBACb,OAAO,EAAE,IAAI,OAAO,CAAC,sBAAsB,QAAQ,EAAE,CAAC;aACvD,CAAC,CAAC;YACH,MAAM,OAAO,GAA2B,EAAE,CAAC;YAE3C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,QAAQ,CAAC,GAAG;gBACtB,OAAO;gBACP,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;gBAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,KAAe,EAAE,MAAc;IACnE,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAE7C;QACD,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,0BAA0B,KAAK,CAAC,IAAI,EAAE;QAC7C,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,UAAU,EAAE,KAAK,CAAC,IAAI;KACvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAErD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe,EAAE,MAAoB;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,wCAAwC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEvE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,OAKzC;IACC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAClF,CAAC;IACF,MAAM,SAAS,GAA8C,EAAE,CAAC;IAEhE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,aAAa,GACjB,KAAK,KAAK,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC;YAChD,CAAC,CAAE,CAAC,QAAQ,EAAE,QAAQ,CAAW;YACjC,CAAC,CAAE,CAAC,QAAQ,CAAW,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,qBAAqB,GAAG,KAAK,KAAK,SAAS;YAC/C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CACA,MAAM,sBAAsB,CAAC;gBAC3B,KAAK,EAAE,OAAO,CAAC,yBAAyB;gBACxC,IAAI,EAAE,2BAA2B,CAAC,MAAM,CAAC;gBACzC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;gBACzC,SAAS,EAAE,KAAK,CAAC,IAAI;aACtB,CAAC,CACH,CAAC,qBAAqB,CAAC;QAC1B,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAE/C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,SAAS,CAAC;gBACvB,IAAI;gBACJ,qBAAqB;gBACrB,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;gBACzC,YAAY,EAAE,qBAAqB;gBACnC,YAAY;gBACZ,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAChD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,qCAAqC,CAC1E,CAAC;YAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,KAAK,gBAAgB;qBACzB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;qBAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;YACJ,CAAC;YAED,QAAQ,CAAC,YAAY,CAAC,GAAG;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;aAC3B,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,6EAA6E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAkC;IAStE,MAAM,QAAQ,GAQV,EAAE,CAAC;IAEP,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjF,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;YAC1B,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;YACjD,GAAG,EAAE,KAAK,CAAC,SAAS;SACrB,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAe,EACf,SAAiB,EACjB,yBAAoD;IAEpD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAEzD,IACE,CAAC,CAAC,MAAM,mBAAmB,CAAC;QAC1B,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK,CAAC,IAAI;KACtB,CAAC,CAAC,EACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,MAA0D,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,sBAAsB,CAAC;YACpC,IAAI,EAAE,YAAY;YAClB,gBAAgB,EAAE,0BAA0B,CAAC,MAAM,CAAC;YACpD,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,EAC1F,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;SACnB,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,iBAAiB,OAAO,IAAI,IAAI,KAAK,CAAC;IACrD,MAAM,SAAS,GAAG,GAAG,MAAM,MAAM,CAAC;IAClC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;IAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAC3C,2CAA2C,EAC3C,wBAAwB,cAAc,MAAM,CAC7C,CAAC;IACF,MAAM,IAAI,GACR,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,iBAAiB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACzE,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,GAAG,iBAAiB,0BAA0B,cAAc,MAAM,CAAC;IAEzE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,OAAO;QACP,MAAM;QACN,SAAS;QACT,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,MAAkB;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,SAAS,CAAC;YACvB,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC;YACpC,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,YAAY,EAAE,qBAAqB;YACnC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YAC/D,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAChD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,qCAAqC,CAC1E,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,CAAC,IAAI,KAAK,gBAAgB;iBAC/B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;iBAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,WAAmB,EACnB,iBAAoC;IAEpC,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEjD,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YAED,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,SAAiB;IAC3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type ClientReferenceMetadata } from "@reckona/mreact-compiler";
1
+ import { type ClientReferenceMetadata, type StaticExportReference, type StaticImportReference } from "@reckona/mreact-compiler";
2
2
  import type { AppRoute } from "./routes.js";
3
3
  export interface ClientRouteManifestEntry {
4
4
  bytes?: number;
@@ -11,13 +11,23 @@ export interface ClientRouteManifestEntry {
11
11
  sourceMap?: string;
12
12
  }
13
13
  export interface ClientRouteInferenceCache {
14
- importsByFile: Map<string, Promise<string[]>>;
14
+ exportsByFile: Map<string, Promise<StaticExportReference[]>>;
15
+ importsByFile: Map<string, Promise<StaticImportReference[]>>;
15
16
  resolvedByImport: Map<string, Promise<string | undefined>>;
16
17
  sourceByFile: Map<string, Promise<string>>;
17
18
  }
18
19
  export interface ClientRouteInferenceResult {
19
20
  client: boolean;
20
21
  clientBoundaryImports: string[];
22
+ diagnostics: ClientRouteInferenceDiagnostic[];
23
+ }
24
+ export interface ClientRouteInferenceDiagnostic {
25
+ code: "MR_CLIENT_BOUNDARY_INFERENCE_UNSUPPORTED_REFERENCE";
26
+ filename: string;
27
+ level: "warn";
28
+ localNames: string[];
29
+ message: string;
30
+ source: string;
21
31
  }
22
32
  export declare function routeToClientManifestEntry(route: AppRoute): Promise<ClientRouteManifestEntry>;
23
33
  export declare function createClientRouteInferenceCache(): ClientRouteInferenceCache;
@@ -34,6 +44,7 @@ export declare function inferClientRouteModule(options: {
34
44
  routePath?: string | undefined;
35
45
  }): Promise<ClientRouteInferenceResult>;
36
46
  export declare function isClientRouteSource(code: string): boolean;
47
+ export declare function formatClientRouteInferenceDiagnostic(diagnostic: ClientRouteInferenceDiagnostic): string;
37
48
  export declare function routeIdForPath(path: string): string;
38
49
  export declare function clientScriptForPath(path: string): string;
39
50
  export declare function withHydrationMarkers(options: {
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { readFile, stat } from "node:fs/promises";
3
3
  import { dirname, extname, join } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { collectStaticModuleSpecifiers, transform, } from "@reckona/mreact-compiler";
5
+ import { collectIdentifierReferenceNames, collectJsxComponentRootNames, collectStaticExportReferences, collectStaticImportReferences, formatDiagnostic, hasClientRuntimeSyntax, transform, } from "@reckona/mreact-compiler";
6
6
  import { build } from "esbuild";
7
7
  import { assetPath } from "./assets.js";
8
8
  import { stripRouteClientOnlyExports } from "./route-source.js";
@@ -29,6 +29,7 @@ export async function routeToClientManifestEntry(route) {
29
29
  }
30
30
  export function createClientRouteInferenceCache() {
31
31
  return {
32
+ exportsByFile: new Map(),
32
33
  importsByFile: new Map(),
33
34
  resolvedByImport: new Map(),
34
35
  sourceByFile: new Map(),
@@ -44,6 +45,7 @@ export async function inferClientRouteModule(options) {
44
45
  cache,
45
46
  code: options.code,
46
47
  filename: options.filename,
48
+ root: true,
47
49
  seen: new Set(),
48
50
  });
49
51
  }
@@ -52,54 +54,150 @@ export async function inferClientRouteModule(options) {
52
54
  }
53
55
  }
54
56
  export function isClientRouteSource(code) {
55
- return /\bon[A-Z][A-Za-z0-9_]*=|\bcell\s*\(|\bwindow\b|\bdocument\b|\blocalStorage\b/.test(stripCommentsAndStringLiterals(code));
57
+ return hasClientRuntimeSyntax({ code });
56
58
  }
57
59
  async function inferClientRouteModuleSource(options) {
58
60
  if (isClientRouteSource(options.code)) {
59
- return { client: true, clientBoundaryImports: [] };
61
+ return { client: true, clientBoundaryImports: [], diagnostics: [] };
60
62
  }
61
63
  if (options.seen.has(options.filename)) {
62
- return { client: false, clientBoundaryImports: [] };
64
+ return { client: false, clientBoundaryImports: [], diagnostics: [] };
63
65
  }
64
66
  options.seen.add(options.filename);
65
- const clientBoundaryImports = [];
66
- for (const specifier of await staticImportSpecifiersForSource(options)) {
67
- const resolved = await resolveAppLocalModule({
68
- cache: options.cache,
69
- importer: options.filename,
70
- specifier,
71
- });
72
- if (resolved === undefined) {
73
- continue;
67
+ try {
68
+ const clientBoundaryImports = [];
69
+ const diagnostics = [];
70
+ let clientProxy = false;
71
+ const jsxComponentRoots = new Set(collectJsxComponentRootNames({
72
+ code: options.code,
73
+ filename: options.filename,
74
+ }));
75
+ const identifierReferences = new Set(collectIdentifierReferenceNames({
76
+ code: options.code,
77
+ filename: options.filename,
78
+ }));
79
+ for (const reference of await staticImportReferencesForSource(options)) {
80
+ const resolved = await resolveAppLocalModule({
81
+ cache: options.cache,
82
+ importer: options.filename,
83
+ specifier: reference.source,
84
+ });
85
+ if (resolved === undefined) {
86
+ continue;
87
+ }
88
+ const source = await readCachedFile(options.cache, resolved);
89
+ const imported = await inferClientRouteModuleSource({
90
+ cache: options.cache,
91
+ code: source,
92
+ filename: resolved,
93
+ root: false,
94
+ seen: options.seen,
95
+ });
96
+ diagnostics.push(...imported.diagnostics);
97
+ if (!imported.client) {
98
+ continue;
99
+ }
100
+ if (isRenderedImportReference(reference, jsxComponentRoots)) {
101
+ clientBoundaryImports.push(reference.source);
102
+ continue;
103
+ }
104
+ const diagnostic = unsupportedClientImportReferenceDiagnostic({
105
+ filename: options.filename,
106
+ identifierReferences,
107
+ reference,
108
+ });
109
+ if (diagnostic !== undefined) {
110
+ diagnostics.push(diagnostic);
111
+ }
74
112
  }
75
- const source = await readCachedFile(options.cache, resolved);
76
- const imported = await inferClientRouteModuleSource({
77
- cache: options.cache,
78
- code: source,
79
- filename: resolved,
80
- seen: options.seen,
81
- });
82
- if (imported.client) {
83
- clientBoundaryImports.push(specifier);
113
+ if (!options.root) {
114
+ for (const reference of await staticExportReferencesForSource(options)) {
115
+ const resolved = await resolveAppLocalModule({
116
+ cache: options.cache,
117
+ importer: options.filename,
118
+ specifier: reference.source,
119
+ });
120
+ if (resolved === undefined) {
121
+ continue;
122
+ }
123
+ const source = await readCachedFile(options.cache, resolved);
124
+ const exported = await inferClientRouteModuleSource({
125
+ cache: options.cache,
126
+ code: source,
127
+ filename: resolved,
128
+ root: false,
129
+ seen: options.seen,
130
+ });
131
+ diagnostics.push(...exported.diagnostics);
132
+ if (exported.client) {
133
+ clientProxy = true;
134
+ }
135
+ }
84
136
  }
137
+ return {
138
+ client: clientBoundaryImports.length > 0 || clientProxy,
139
+ clientBoundaryImports,
140
+ diagnostics,
141
+ };
142
+ }
143
+ finally {
144
+ options.seen.delete(options.filename);
85
145
  }
86
- return {
87
- client: clientBoundaryImports.length > 0,
88
- clientBoundaryImports,
89
- };
90
146
  }
91
- async function staticImportSpecifiersForSource(options) {
147
+ async function staticImportReferencesForSource(options) {
92
148
  const cached = options.cache.importsByFile.get(options.filename);
93
149
  if (cached !== undefined) {
94
150
  return cached;
95
151
  }
96
- const imports = Promise.resolve().then(() => collectStaticModuleSpecifiers({
152
+ const imports = Promise.resolve().then(() => collectStaticImportReferences({
97
153
  code: options.code,
98
154
  filename: options.filename,
99
155
  }));
100
156
  options.cache.importsByFile.set(options.filename, imports);
101
157
  return imports;
102
158
  }
159
+ async function staticExportReferencesForSource(options) {
160
+ const cached = options.cache.exportsByFile.get(options.filename);
161
+ if (cached !== undefined) {
162
+ return cached;
163
+ }
164
+ const exports = Promise.resolve().then(() => collectStaticExportReferences({
165
+ code: options.code,
166
+ filename: options.filename,
167
+ }));
168
+ options.cache.exportsByFile.set(options.filename, exports);
169
+ return exports;
170
+ }
171
+ function isRenderedImportReference(reference, jsxComponentRoots) {
172
+ return (reference.sideEffect ||
173
+ reference.localNames.some((localName) => jsxComponentRoots.has(localName)));
174
+ }
175
+ function unsupportedClientImportReferenceDiagnostic(options) {
176
+ if (options.reference.sideEffect) {
177
+ return undefined;
178
+ }
179
+ const localNames = options.reference.localNames.filter((name) => options.identifierReferences.has(name));
180
+ if (localNames.length === 0) {
181
+ return undefined;
182
+ }
183
+ return {
184
+ code: "MR_CLIENT_BOUNDARY_INFERENCE_UNSUPPORTED_REFERENCE",
185
+ filename: options.filename,
186
+ level: "warn",
187
+ localNames,
188
+ message: `${options.filename}: client component import ${JSON.stringify(options.reference.source)} ` +
189
+ `is referenced as ${localNames.map((name) => JSON.stringify(name)).join(", ")} but ` +
190
+ "was not rendered through a supported static JSX pattern. Automatic client boundary " +
191
+ "detection supports direct JSX such as <Counter />, JSX member roots such as " +
192
+ "<components.Counter />, and simple aliases such as const Alias = Counter. For dynamic " +
193
+ `registries or computed component selection, add ${JSON.stringify(options.reference.source)} ` +
194
+ "to clientBoundaryImports.",
195
+ source: options.reference.source,
196
+ };
197
+ }
198
+ export function formatClientRouteInferenceDiagnostic(diagnostic) {
199
+ return `${diagnostic.code}: ${diagnostic.message}`;
200
+ }
103
201
  async function resolveAppLocalModule(options) {
104
202
  if (!options.specifier.startsWith(".")) {
105
203
  return undefined;
@@ -189,135 +287,6 @@ function readCachedFile(cache, filename) {
189
287
  cache.sourceByFile.set(filename, source);
190
288
  return source;
191
289
  }
192
- function stripCommentsAndStringLiterals(code) {
193
- let output = "";
194
- let index = 0;
195
- while (index < code.length) {
196
- index = appendCodeOrMaskedLiteral(code, index, (value) => {
197
- output += value;
198
- });
199
- }
200
- return output;
201
- }
202
- function appendCodeOrMaskedLiteral(code, index, append) {
203
- const char = code[index];
204
- const next = code[index + 1];
205
- if ((char === "'" || char === '"') && char !== undefined) {
206
- return appendMaskedQuotedString(code, index, char, append);
207
- }
208
- if (char === "`") {
209
- return appendMaskedTemplateLiteral(code, index, append);
210
- }
211
- if (char === "/" && next === "/") {
212
- return appendMaskedLineComment(code, index, append);
213
- }
214
- if (char === "/" && next === "*") {
215
- return appendMaskedBlockComment(code, index, append);
216
- }
217
- append(char ?? "");
218
- return index + 1;
219
- }
220
- function appendMaskedQuotedString(code, start, quote, append) {
221
- append(maskedChar(code[start] ?? ""));
222
- let index = start + 1;
223
- while (index < code.length) {
224
- const char = code[index] ?? "";
225
- append(maskedChar(char));
226
- index += 1;
227
- if (char === "\\") {
228
- append(maskedChar(code[index] ?? ""));
229
- index += 1;
230
- continue;
231
- }
232
- if (char === quote) {
233
- break;
234
- }
235
- }
236
- return index;
237
- }
238
- function appendMaskedTemplateLiteral(code, start, append) {
239
- append(maskedChar(code[start] ?? ""));
240
- let index = start + 1;
241
- while (index < code.length) {
242
- const char = code[index] ?? "";
243
- const next = code[index + 1];
244
- if (char === "\\") {
245
- append(maskedChar(char));
246
- append(maskedChar(next ?? ""));
247
- index += 2;
248
- continue;
249
- }
250
- if (char === "`") {
251
- append(maskedChar(char));
252
- return index + 1;
253
- }
254
- if (char === "$" && next === "{") {
255
- append(maskedChar(char));
256
- append(maskedChar(next));
257
- index = appendTemplateExpression(code, index + 2, append);
258
- continue;
259
- }
260
- append(maskedChar(char));
261
- index += 1;
262
- }
263
- return index;
264
- }
265
- function appendTemplateExpression(code, start, append) {
266
- let index = start;
267
- let depth = 1;
268
- while (index < code.length) {
269
- const char = code[index];
270
- if (char === "{") {
271
- depth += 1;
272
- append(char);
273
- index += 1;
274
- continue;
275
- }
276
- if (char === "}") {
277
- depth -= 1;
278
- append(depth === 0 ? " " : char);
279
- index += 1;
280
- if (depth === 0) {
281
- return index;
282
- }
283
- continue;
284
- }
285
- index = appendCodeOrMaskedLiteral(code, index, append);
286
- }
287
- return index;
288
- }
289
- function appendMaskedLineComment(code, start, append) {
290
- let index = start;
291
- while (index < code.length) {
292
- const char = code[index] ?? "";
293
- append(maskedChar(char));
294
- index += 1;
295
- if (char === "\n") {
296
- break;
297
- }
298
- }
299
- return index;
300
- }
301
- function appendMaskedBlockComment(code, start, append) {
302
- append(maskedChar(code[start] ?? ""));
303
- append(maskedChar(code[start + 1] ?? ""));
304
- let index = start + 2;
305
- while (index < code.length) {
306
- const char = code[index] ?? "";
307
- const next = code[index + 1];
308
- append(maskedChar(char));
309
- index += 1;
310
- if (char === "*" && next === "/") {
311
- append(maskedChar(next));
312
- index += 1;
313
- break;
314
- }
315
- }
316
- return index;
317
- }
318
- function maskedChar(char) {
319
- return char === "\n" || char === "\r" ? char : " ";
320
- }
321
290
  export function routeIdForPath(path) {
322
291
  if (path === "/") {
323
292
  return "index";
@@ -377,9 +346,9 @@ export async function buildClientRouteOutput(options) {
377
346
  dev: options.minify !== true,
378
347
  });
379
348
  if (compiled.diagnostics.length > 0) {
380
- throw new Error(`${options.filename}: ${compiled.diagnostics
381
- .map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`)
382
- .join("\n")}`);
349
+ throw new Error(compiled.diagnostics
350
+ .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))
351
+ .join("\n"));
383
352
  }
384
353
  const clientNavigation = options.clientNavigation ?? detectClientNavigationHint(options.code);
385
354
  const clientReferenceManifest = options.clientReferenceManifest ?? await inferClientReferenceManifestForBundle(options);
@@ -1088,6 +1057,7 @@ function workspaceRuntimePlugin(options) {
1088
1057
  const packageFile = (packageName, basename) => join(rootDir, "packages", packageName, "src", `${basename}.ts`);
1089
1058
  const runtimePaths = new Map([
1090
1059
  ["@reckona/mreact-compat", packageFile("react-compat", "index")],
1060
+ ["@reckona/mreact-compat/event-priority", packageFile("react-compat", "event-priority")],
1091
1061
  ["@reckona/mreact-compat/flight", packageFile("react-compat", "flight")],
1092
1062
  ["@reckona/mreact-compat/internal", packageFile("react-compat", "internal")],
1093
1063
  ["@reckona/mreact-compat/jsx-dev-runtime", packageFile("react-compat", "jsx-dev-runtime")],
@@ -1106,7 +1076,7 @@ function workspaceRuntimePlugin(options) {
1106
1076
  path: "reactive-core",
1107
1077
  }));
1108
1078
  buildApi.onResolve({
1109
- filter: /^@reckona\/mreact-(?:compat|reactive-dom)(?:\/(?:flight|internal|jsx-dev-runtime|jsx-runtime|scheduler))?$/,
1079
+ filter: /^@reckona\/mreact-(?:compat|reactive-dom)(?:\/(?:event-priority|flight|internal|jsx-dev-runtime|jsx-runtime|scheduler))?$/,
1110
1080
  }, (args) => {
1111
1081
  const path = runtimePaths.get(args.path);
1112
1082
  return path === undefined ? undefined : { path };
@@ -1139,9 +1109,9 @@ export function currentDevtoolsEmitter() { return undefined; }`,
1139
1109
  target: "client",
1140
1110
  });
1141
1111
  if (output.diagnostics.length > 0) {
1142
- throw new Error(`${args.path}: ${output.diagnostics
1143
- .map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`)
1144
- .join("\n")}`);
1112
+ throw new Error(output.diagnostics
1113
+ .map((diagnostic) => formatDiagnostic(args.path, diagnostic))
1114
+ .join("\n"));
1145
1115
  }
1146
1116
  return {
1147
1117
  contents: output.code,