@reckona/mreact-router 0.0.96 → 0.0.98

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.
Files changed (100) hide show
  1. package/README.md +4 -0
  2. package/dist/actions.d.ts +7 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +26 -2
  5. package/dist/actions.js.map +1 -1
  6. package/dist/adapters/aws-lambda.d.ts.map +1 -1
  7. package/dist/adapters/aws-lambda.js +10 -7
  8. package/dist/adapters/aws-lambda.js.map +1 -1
  9. package/dist/adapters/static.d.ts.map +1 -1
  10. package/dist/adapters/static.js +13 -0
  11. package/dist/adapters/static.js.map +1 -1
  12. package/dist/build.d.ts +38 -1
  13. package/dist/build.d.ts.map +1 -1
  14. package/dist/build.js +1093 -307
  15. package/dist/build.js.map +1 -1
  16. package/dist/bundle-pipeline.d.ts +7 -0
  17. package/dist/bundle-pipeline.d.ts.map +1 -1
  18. package/dist/bundle-pipeline.js +121 -69
  19. package/dist/bundle-pipeline.js.map +1 -1
  20. package/dist/cache.d.ts.map +1 -1
  21. package/dist/cache.js +10 -8
  22. package/dist/cache.js.map +1 -1
  23. package/dist/cli-options.d.ts +1 -0
  24. package/dist/cli-options.d.ts.map +1 -1
  25. package/dist/cli-options.js +16 -0
  26. package/dist/cli-options.js.map +1 -1
  27. package/dist/cli.js +1 -0
  28. package/dist/cli.js.map +1 -1
  29. package/dist/client.d.ts +6 -1
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +120 -9
  32. package/dist/client.js.map +1 -1
  33. package/dist/csrf.d.ts.map +1 -1
  34. package/dist/csrf.js +7 -3
  35. package/dist/csrf.js.map +1 -1
  36. package/dist/http.d.ts.map +1 -1
  37. package/dist/http.js +18 -1
  38. package/dist/http.js.map +1 -1
  39. package/dist/import-policy.d.ts.map +1 -1
  40. package/dist/import-policy.js +7 -3
  41. package/dist/import-policy.js.map +1 -1
  42. package/dist/index.d.ts +4 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/link.d.ts +5 -3
  46. package/dist/link.d.ts.map +1 -1
  47. package/dist/link.js +92 -3
  48. package/dist/link.js.map +1 -1
  49. package/dist/logger.d.ts +7 -1
  50. package/dist/logger.d.ts.map +1 -1
  51. package/dist/logger.js.map +1 -1
  52. package/dist/module-runner.d.ts +2 -0
  53. package/dist/module-runner.d.ts.map +1 -1
  54. package/dist/module-runner.js +1 -0
  55. package/dist/module-runner.js.map +1 -1
  56. package/dist/native-route-matcher.d.ts +2 -1
  57. package/dist/native-route-matcher.d.ts.map +1 -1
  58. package/dist/native-route-matcher.js +13 -2
  59. package/dist/native-route-matcher.js.map +1 -1
  60. package/dist/render.d.ts.map +1 -1
  61. package/dist/render.js +121 -6
  62. package/dist/render.js.map +1 -1
  63. package/dist/route-source.d.ts +11 -11
  64. package/dist/route-source.d.ts.map +1 -1
  65. package/dist/route-source.js +32 -25
  66. package/dist/route-source.js.map +1 -1
  67. package/dist/route-styles.d.ts +6 -0
  68. package/dist/route-styles.d.ts.map +1 -1
  69. package/dist/route-styles.js +10 -1
  70. package/dist/route-styles.js.map +1 -1
  71. package/dist/serve.d.ts +5 -0
  72. package/dist/serve.d.ts.map +1 -1
  73. package/dist/serve.js +7 -4
  74. package/dist/serve.js.map +1 -1
  75. package/dist/vite.d.ts.map +1 -1
  76. package/dist/vite.js +32 -5
  77. package/dist/vite.js.map +1 -1
  78. package/package.json +11 -11
  79. package/src/actions.ts +42 -2
  80. package/src/adapters/aws-lambda.ts +33 -16
  81. package/src/adapters/static.ts +25 -0
  82. package/src/build.ts +1605 -421
  83. package/src/bundle-pipeline.ts +136 -70
  84. package/src/cache.ts +13 -8
  85. package/src/cli-options.ts +20 -0
  86. package/src/cli.ts +1 -0
  87. package/src/client.ts +152 -15
  88. package/src/csrf.ts +8 -3
  89. package/src/http.ts +21 -1
  90. package/src/import-policy.ts +8 -3
  91. package/src/index.ts +5 -0
  92. package/src/link.ts +135 -8
  93. package/src/logger.ts +9 -1
  94. package/src/module-runner.ts +4 -0
  95. package/src/native-route-matcher.ts +13 -2
  96. package/src/render.ts +181 -6
  97. package/src/route-source.ts +33 -20
  98. package/src/route-styles.ts +17 -1
  99. package/src/serve.ts +11 -6
  100. package/src/vite.ts +41 -5
@@ -1,5 +1,5 @@
1
- export declare function stripRouteModuleExports(code: string): string;
2
- export declare function stripRouteClientOnlyExports(code: string): string;
1
+ export declare function stripRouteModuleExports(code: string, filename?: string | undefined): string;
2
+ export declare function stripRouteClientOnlyExports(code: string, filename?: string | undefined): string;
3
3
  export declare function stripRouteClientSource(input: {
4
4
  code: string;
5
5
  filename?: string | undefined;
@@ -8,12 +8,12 @@ export declare function stripRouteClientFormActionExpressions(input: {
8
8
  code: string;
9
9
  filename?: string | undefined;
10
10
  }): string;
11
- export declare function stripRouteBuildExports(code: string): string;
12
- export declare function stripRouteRequestOnlyExports(code: string): string;
13
- export declare function stripRouteLoaderOnlyExports(code: string): string;
14
- export declare function stripRouteMetadataOnlyExports(code: string): string;
15
- export declare function stripRouteConfigExports(code: string): string;
16
- export declare function isStreamRouteSource(code: string): boolean;
11
+ export declare function stripRouteBuildExports(code: string, filename?: string | undefined): string;
12
+ export declare function stripRouteRequestOnlyExports(code: string, filename?: string | undefined): string;
13
+ export declare function stripRouteLoaderOnlyExports(code: string, filename?: string | undefined): string;
14
+ export declare function stripRouteMetadataOnlyExports(code: string, filename?: string | undefined): string;
15
+ export declare function stripRouteConfigExports(code: string, filename?: string | undefined): string;
16
+ export declare function isStreamRouteSource(code: string, filename?: string | undefined): boolean;
17
17
  export declare function mayUseAwaitBoundarySource(code: string): boolean;
18
18
  export declare function routeClosureMayUseAwaitBoundary(options: {
19
19
  filename: string;
@@ -22,7 +22,7 @@ export declare function routeClosureMayUseAwaitBoundary(options: {
22
22
  seen?: Set<string> | undefined;
23
23
  source: string;
24
24
  }): boolean;
25
- export declare function hasPrerenderExport(code: string): boolean;
26
- export declare function hasGenerateStaticParamsExport(code: string): boolean;
27
- export declare function hasLoaderExport(code: string): boolean;
25
+ export declare function hasPrerenderExport(code: string, filename?: string | undefined): boolean;
26
+ export declare function hasGenerateStaticParamsExport(code: string, filename?: string | undefined): boolean;
27
+ export declare function hasLoaderExport(code: string, filename?: string | undefined): boolean;
28
28
  //# sourceMappingURL=route-source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"AAuCA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAShE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,MAAM,CAKT;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,MAAM,CAST;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CA0DV;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"AAuCA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM3F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAa/F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,MAAM,CAKT;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,MAAM,CAST;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE1F;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUhG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU/F;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUjG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM3F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAExF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CA0DV;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAElG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEpF"}
@@ -24,23 +24,26 @@ const routeRequestExportNames = new Set([
24
24
  ]);
25
25
  const routeLoaderOnlyExportNames = new Set(["loader"]);
26
26
  const routeMetadataOnlyExportNames = new Set(["generateMetadata", "metadata"]);
27
- export function stripRouteModuleExports(code) {
27
+ export function stripRouteModuleExports(code, filename) {
28
28
  return demoteRouteHelperExports(stripTopLevelExportDeclarations({
29
29
  code,
30
+ filename,
30
31
  names: routeModuleExportNames,
31
- }));
32
+ }), routeRenderExportNames, filename);
32
33
  }
33
- export function stripRouteClientOnlyExports(code) {
34
+ export function stripRouteClientOnlyExports(code, filename) {
34
35
  return stripUnusedStaticValueImports({
35
36
  code: demoteRouteHelperExports(stripTopLevelExportDeclarations({
36
37
  code,
38
+ filename,
37
39
  names: routeClientOnlyExportNames,
38
- })),
40
+ }), routeRenderExportNames, filename),
41
+ filename,
39
42
  });
40
43
  }
41
44
  export function stripRouteClientSource(input) {
42
45
  return stripRouteClientFormActionExpressions({
43
- code: stripRouteClientOnlyExports(input.code),
46
+ code: stripRouteClientOnlyExports(input.code, input.filename),
44
47
  filename: input.filename,
45
48
  });
46
49
  }
@@ -52,35 +55,39 @@ export function stripRouteClientFormActionExpressions(input) {
52
55
  }
53
56
  return code;
54
57
  }
55
- export function stripRouteBuildExports(code) {
56
- return stripRouteClientOnlyExports(code);
58
+ export function stripRouteBuildExports(code, filename) {
59
+ return stripRouteClientOnlyExports(code, filename);
57
60
  }
58
- export function stripRouteRequestOnlyExports(code) {
61
+ export function stripRouteRequestOnlyExports(code, filename) {
59
62
  return demoteRouteHelperExports(stripTopLevelExportDeclarations({
60
63
  code,
64
+ filename,
61
65
  names: routeRequestRenderExportNames,
62
- }), routeRequestExportNames);
66
+ }), routeRequestExportNames, filename);
63
67
  }
64
- export function stripRouteLoaderOnlyExports(code) {
68
+ export function stripRouteLoaderOnlyExports(code, filename) {
65
69
  return demoteRouteHelperExports(stripTopLevelExportDeclarations({
66
70
  code,
71
+ filename,
67
72
  names: ["auth", "default", "generateMetadata", "generateStaticParams", "metadata", "middleware", "prerender", "revalidate", "slots", "stream"],
68
- }), routeLoaderOnlyExportNames);
73
+ }), routeLoaderOnlyExportNames, filename);
69
74
  }
70
- export function stripRouteMetadataOnlyExports(code) {
75
+ export function stripRouteMetadataOnlyExports(code, filename) {
71
76
  return demoteRouteHelperExports(stripTopLevelExportDeclarations({
72
77
  code,
78
+ filename,
73
79
  names: ["auth", "default", "generateStaticParams", "loader", "middleware", "prerender", "revalidate", "slots", "stream"],
74
- }), routeMetadataOnlyExportNames);
80
+ }), routeMetadataOnlyExportNames, filename);
75
81
  }
76
- export function stripRouteConfigExports(code) {
82
+ export function stripRouteConfigExports(code, filename) {
77
83
  return stripTopLevelExportDeclarations({
78
84
  code,
85
+ filename,
79
86
  names: ["auth", "prerender", "revalidate", "stream"],
80
87
  });
81
88
  }
82
- export function isStreamRouteSource(code) {
83
- return hasTopLevelExportDeclaration({ code, names: ["stream"] });
89
+ export function isStreamRouteSource(code, filename) {
90
+ return hasTopLevelExportDeclaration({ code, filename, names: ["stream"] });
84
91
  }
85
92
  export function mayUseAwaitBoundarySource(code) {
86
93
  return collectJsxComponentRootNames({ code }).includes("Await");
@@ -130,21 +137,21 @@ export function routeClosureMayUseAwaitBoundary(options) {
130
137
  seen.delete(options.filename);
131
138
  }
132
139
  }
133
- export function hasPrerenderExport(code) {
134
- return hasTopLevelExportDeclaration({ code, names: ["prerender"] });
140
+ export function hasPrerenderExport(code, filename) {
141
+ return hasTopLevelExportDeclaration({ code, filename, names: ["prerender"] });
135
142
  }
136
- export function hasGenerateStaticParamsExport(code) {
137
- return hasTopLevelExportDeclaration({ code, names: ["generateStaticParams"] });
143
+ export function hasGenerateStaticParamsExport(code, filename) {
144
+ return hasTopLevelExportDeclaration({ code, filename, names: ["generateStaticParams"] });
138
145
  }
139
- export function hasLoaderExport(code) {
140
- return hasTopLevelExportDeclaration({ code, names: ["loader"] });
146
+ export function hasLoaderExport(code, filename) {
147
+ return hasTopLevelExportDeclaration({ code, filename, names: ["loader"] });
141
148
  }
142
- function demoteRouteHelperExports(code, preservedExportNames = routeRenderExportNames) {
143
- const helperNames = collectTopLevelValueExportNames({ code })
149
+ function demoteRouteHelperExports(code, preservedExportNames = routeRenderExportNames, filename) {
150
+ const helperNames = collectTopLevelValueExportNames({ code, filename })
144
151
  .filter((name) => !preservedExportNames.has(name) && startsLowercase(name));
145
152
  return helperNames.length === 0
146
153
  ? code
147
- : demoteTopLevelExportDeclarations({ code, names: helperNames });
154
+ : demoteTopLevelExportDeclarations({ code, filename, names: helperNames });
148
155
  }
149
156
  function startsLowercase(value) {
150
157
  return /^[a-z]/.test(value);
@@ -1 +1 @@
1
- {"version":3,"file":"route-source.js","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, isAbsolute, join } from \"node:path\";\nimport {\n collectFormActionExpressionReferences,\n collectTopLevelValueExportNames,\n collectJsxComponentRootNames,\n collectStaticImportReferences,\n demoteTopLevelExportDeclarations,\n hasModuleDirective,\n hasTopLevelExportDeclaration,\n stripTopLevelExportDeclarations,\n stripUnusedStaticValueImports,\n} from \"@reckona/mreact-compiler\";\nimport type { StaticImportReference } from \"@reckona/mreact-compiler\";\nimport { sourceModuleCandidates } from \"./source-modules.js\";\n\nconst routeModuleExportNames = [\n \"auth\",\n \"generateStaticParams\",\n \"loader\",\n \"middleware\",\n \"prerender\",\n \"revalidate\",\n \"stream\",\n] as const;\nconst routeClientOnlyExportNames = [\n ...routeModuleExportNames,\n \"generateMetadata\",\n \"metadata\",\n] as const;\nconst routeRequestRenderExportNames = [\"default\", \"slots\"] as const;\nconst routeRenderExportNames = new Set<string>([\"default\", \"slots\"]);\nconst routeRequestExportNames = new Set<string>([\n ...routeClientOnlyExportNames,\n \"generateMetadata\",\n \"metadata\",\n]);\nconst routeLoaderOnlyExportNames = new Set<string>([\"loader\"]);\nconst routeMetadataOnlyExportNames = new Set<string>([\"generateMetadata\", \"metadata\"]);\n\nexport function stripRouteModuleExports(code: string): string {\n return demoteRouteHelperExports(stripTopLevelExportDeclarations({\n code,\n names: routeModuleExportNames,\n }));\n}\n\nexport function stripRouteClientOnlyExports(code: string): string {\n return stripUnusedStaticValueImports({\n code: demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n names: routeClientOnlyExportNames,\n }),\n ),\n });\n}\n\nexport function stripRouteClientSource(input: {\n code: string;\n filename?: string | undefined;\n}): string {\n return stripRouteClientFormActionExpressions({\n code: stripRouteClientOnlyExports(input.code),\n filename: input.filename,\n });\n}\n\nexport function stripRouteClientFormActionExpressions(input: {\n code: string;\n filename?: string | undefined;\n}): string {\n const references = collectFormActionExpressionReferences(input);\n let code = input.code;\n\n for (const reference of [...references].reverse()) {\n code = `${code.slice(0, reference.expressionStart)}undefined${code.slice(reference.expressionEnd)}`;\n }\n\n return code;\n}\n\nexport function stripRouteBuildExports(code: string): string {\n return stripRouteClientOnlyExports(code);\n}\n\nexport function stripRouteRequestOnlyExports(code: string): string {\n return demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n names: routeRequestRenderExportNames,\n }),\n routeRequestExportNames,\n );\n}\n\nexport function stripRouteLoaderOnlyExports(code: string): string {\n return demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n names: [\"auth\", \"default\", \"generateMetadata\", \"generateStaticParams\", \"metadata\", \"middleware\", \"prerender\", \"revalidate\", \"slots\", \"stream\"],\n }),\n routeLoaderOnlyExportNames,\n );\n}\n\nexport function stripRouteMetadataOnlyExports(code: string): string {\n return demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n names: [\"auth\", \"default\", \"generateStaticParams\", \"loader\", \"middleware\", \"prerender\", \"revalidate\", \"slots\", \"stream\"],\n }),\n routeMetadataOnlyExportNames,\n );\n}\n\nexport function stripRouteConfigExports(code: string): string {\n return stripTopLevelExportDeclarations({\n code,\n names: [\"auth\", \"prerender\", \"revalidate\", \"stream\"],\n });\n}\n\nexport function isStreamRouteSource(code: string): boolean {\n return hasTopLevelExportDeclaration({ code, names: [\"stream\"] });\n}\n\nexport function mayUseAwaitBoundarySource(code: string): boolean {\n return collectJsxComponentRootNames({ code }).includes(\"Await\");\n}\n\nexport function routeClosureMayUseAwaitBoundary(options: {\n filename: string;\n files: Record<string, string>;\n projectRoot: string;\n seen?: Set<string> | undefined;\n source: string;\n}): boolean {\n const seen = options.seen ?? new Set<string>();\n if (\n seen.has(options.filename) ||\n hasModuleDirective({ code: options.source, directive: \"use client\" })\n ) {\n return false;\n }\n\n seen.add(options.filename);\n\n try {\n if (mayUseAwaitBoundarySource(options.source)) {\n return true;\n }\n\n const sourceFilename = sourceFilenameForCompiler(options.projectRoot, options.filename);\n const jsxComponentRoots = new Set(\n collectJsxComponentRootNames({\n code: options.source,\n filename: sourceFilename,\n }),\n );\n\n for (const reference of collectStaticImportReferences({\n code: options.source,\n filename: sourceFilename,\n })) {\n if (!isRenderedStaticImportReference(reference, jsxComponentRoots)) {\n continue;\n }\n\n const resolved = resolveLocalSourceImport(options.files, options.filename, reference.source);\n\n if (resolved === undefined) {\n continue;\n }\n\n const importedSource = options.files[resolved];\n\n if (\n importedSource !== undefined &&\n routeClosureMayUseAwaitBoundary({\n filename: resolved,\n files: options.files,\n projectRoot: options.projectRoot,\n seen,\n source: importedSource,\n })\n ) {\n return true;\n }\n }\n\n return false;\n } finally {\n seen.delete(options.filename);\n }\n}\n\nexport function hasPrerenderExport(code: string): boolean {\n return hasTopLevelExportDeclaration({ code, names: [\"prerender\"] });\n}\n\nexport function hasGenerateStaticParamsExport(code: string): boolean {\n return hasTopLevelExportDeclaration({ code, names: [\"generateStaticParams\"] });\n}\n\nexport function hasLoaderExport(code: string): boolean {\n return hasTopLevelExportDeclaration({ code, names: [\"loader\"] });\n}\n\nfunction demoteRouteHelperExports(\n code: string,\n preservedExportNames: ReadonlySet<string> = routeRenderExportNames,\n): string {\n const helperNames = collectTopLevelValueExportNames({ code })\n .filter((name) => !preservedExportNames.has(name) && startsLowercase(name));\n\n return helperNames.length === 0\n ? code\n : demoteTopLevelExportDeclarations({ code, names: helperNames });\n}\n\nfunction startsLowercase(value: string): boolean {\n return /^[a-z]/.test(value);\n}\n\nfunction isRenderedStaticImportReference(\n reference: StaticImportReference,\n jsxComponentRoots: ReadonlySet<string>,\n): boolean {\n return reference.localNames.some((localName) => jsxComponentRoots.has(localName));\n}\n\nfunction resolveLocalSourceImport(\n files: Record<string, string>,\n importer: string,\n specifier: string,\n): string | undefined {\n if (!specifier.startsWith(\".\")) {\n return undefined;\n }\n\n const base = join(dirname(importer), specifier);\n\n for (const candidate of sourceModuleCandidates(base)) {\n if (files[candidate] !== undefined) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction sourceFilenameForCompiler(projectRoot: string, filename: string): string {\n return isAbsolute(filename) ? filename : join(projectRoot, filename);\n}\n"]}
1
+ {"version":3,"file":"route-source.js","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, isAbsolute, join } from \"node:path\";\nimport {\n collectFormActionExpressionReferences,\n collectTopLevelValueExportNames,\n collectJsxComponentRootNames,\n collectStaticImportReferences,\n demoteTopLevelExportDeclarations,\n hasModuleDirective,\n hasTopLevelExportDeclaration,\n stripTopLevelExportDeclarations,\n stripUnusedStaticValueImports,\n} from \"@reckona/mreact-compiler\";\nimport type { StaticImportReference } from \"@reckona/mreact-compiler\";\nimport { sourceModuleCandidates } from \"./source-modules.js\";\n\nconst routeModuleExportNames = [\n \"auth\",\n \"generateStaticParams\",\n \"loader\",\n \"middleware\",\n \"prerender\",\n \"revalidate\",\n \"stream\",\n] as const;\nconst routeClientOnlyExportNames = [\n ...routeModuleExportNames,\n \"generateMetadata\",\n \"metadata\",\n] as const;\nconst routeRequestRenderExportNames = [\"default\", \"slots\"] as const;\nconst routeRenderExportNames = new Set<string>([\"default\", \"slots\"]);\nconst routeRequestExportNames = new Set<string>([\n ...routeClientOnlyExportNames,\n \"generateMetadata\",\n \"metadata\",\n]);\nconst routeLoaderOnlyExportNames = new Set<string>([\"loader\"]);\nconst routeMetadataOnlyExportNames = new Set<string>([\"generateMetadata\", \"metadata\"]);\n\nexport function stripRouteModuleExports(code: string, filename?: string | undefined): string {\n return demoteRouteHelperExports(stripTopLevelExportDeclarations({\n code,\n filename,\n names: routeModuleExportNames,\n }), routeRenderExportNames, filename);\n}\n\nexport function stripRouteClientOnlyExports(code: string, filename?: string | undefined): string {\n return stripUnusedStaticValueImports({\n code: demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n filename,\n names: routeClientOnlyExportNames,\n }),\n routeRenderExportNames,\n filename,\n ),\n filename,\n });\n}\n\nexport function stripRouteClientSource(input: {\n code: string;\n filename?: string | undefined;\n}): string {\n return stripRouteClientFormActionExpressions({\n code: stripRouteClientOnlyExports(input.code, input.filename),\n filename: input.filename,\n });\n}\n\nexport function stripRouteClientFormActionExpressions(input: {\n code: string;\n filename?: string | undefined;\n}): string {\n const references = collectFormActionExpressionReferences(input);\n let code = input.code;\n\n for (const reference of [...references].reverse()) {\n code = `${code.slice(0, reference.expressionStart)}undefined${code.slice(reference.expressionEnd)}`;\n }\n\n return code;\n}\n\nexport function stripRouteBuildExports(code: string, filename?: string | undefined): string {\n return stripRouteClientOnlyExports(code, filename);\n}\n\nexport function stripRouteRequestOnlyExports(code: string, filename?: string | undefined): string {\n return demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n filename,\n names: routeRequestRenderExportNames,\n }),\n routeRequestExportNames,\n filename,\n );\n}\n\nexport function stripRouteLoaderOnlyExports(code: string, filename?: string | undefined): string {\n return demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n filename,\n names: [\"auth\", \"default\", \"generateMetadata\", \"generateStaticParams\", \"metadata\", \"middleware\", \"prerender\", \"revalidate\", \"slots\", \"stream\"],\n }),\n routeLoaderOnlyExportNames,\n filename,\n );\n}\n\nexport function stripRouteMetadataOnlyExports(code: string, filename?: string | undefined): string {\n return demoteRouteHelperExports(\n stripTopLevelExportDeclarations({\n code,\n filename,\n names: [\"auth\", \"default\", \"generateStaticParams\", \"loader\", \"middleware\", \"prerender\", \"revalidate\", \"slots\", \"stream\"],\n }),\n routeMetadataOnlyExportNames,\n filename,\n );\n}\n\nexport function stripRouteConfigExports(code: string, filename?: string | undefined): string {\n return stripTopLevelExportDeclarations({\n code,\n filename,\n names: [\"auth\", \"prerender\", \"revalidate\", \"stream\"],\n });\n}\n\nexport function isStreamRouteSource(code: string, filename?: string | undefined): boolean {\n return hasTopLevelExportDeclaration({ code, filename, names: [\"stream\"] });\n}\n\nexport function mayUseAwaitBoundarySource(code: string): boolean {\n return collectJsxComponentRootNames({ code }).includes(\"Await\");\n}\n\nexport function routeClosureMayUseAwaitBoundary(options: {\n filename: string;\n files: Record<string, string>;\n projectRoot: string;\n seen?: Set<string> | undefined;\n source: string;\n}): boolean {\n const seen = options.seen ?? new Set<string>();\n if (\n seen.has(options.filename) ||\n hasModuleDirective({ code: options.source, directive: \"use client\" })\n ) {\n return false;\n }\n\n seen.add(options.filename);\n\n try {\n if (mayUseAwaitBoundarySource(options.source)) {\n return true;\n }\n\n const sourceFilename = sourceFilenameForCompiler(options.projectRoot, options.filename);\n const jsxComponentRoots = new Set(\n collectJsxComponentRootNames({\n code: options.source,\n filename: sourceFilename,\n }),\n );\n\n for (const reference of collectStaticImportReferences({\n code: options.source,\n filename: sourceFilename,\n })) {\n if (!isRenderedStaticImportReference(reference, jsxComponentRoots)) {\n continue;\n }\n\n const resolved = resolveLocalSourceImport(options.files, options.filename, reference.source);\n\n if (resolved === undefined) {\n continue;\n }\n\n const importedSource = options.files[resolved];\n\n if (\n importedSource !== undefined &&\n routeClosureMayUseAwaitBoundary({\n filename: resolved,\n files: options.files,\n projectRoot: options.projectRoot,\n seen,\n source: importedSource,\n })\n ) {\n return true;\n }\n }\n\n return false;\n } finally {\n seen.delete(options.filename);\n }\n}\n\nexport function hasPrerenderExport(code: string, filename?: string | undefined): boolean {\n return hasTopLevelExportDeclaration({ code, filename, names: [\"prerender\"] });\n}\n\nexport function hasGenerateStaticParamsExport(code: string, filename?: string | undefined): boolean {\n return hasTopLevelExportDeclaration({ code, filename, names: [\"generateStaticParams\"] });\n}\n\nexport function hasLoaderExport(code: string, filename?: string | undefined): boolean {\n return hasTopLevelExportDeclaration({ code, filename, names: [\"loader\"] });\n}\n\nfunction demoteRouteHelperExports(\n code: string,\n preservedExportNames: ReadonlySet<string> = routeRenderExportNames,\n filename?: string | undefined,\n): string {\n const helperNames = collectTopLevelValueExportNames({ code, filename })\n .filter((name) => !preservedExportNames.has(name) && startsLowercase(name));\n\n return helperNames.length === 0\n ? code\n : demoteTopLevelExportDeclarations({ code, filename, names: helperNames });\n}\n\nfunction startsLowercase(value: string): boolean {\n return /^[a-z]/.test(value);\n}\n\nfunction isRenderedStaticImportReference(\n reference: StaticImportReference,\n jsxComponentRoots: ReadonlySet<string>,\n): boolean {\n return reference.localNames.some((localName) => jsxComponentRoots.has(localName));\n}\n\nfunction resolveLocalSourceImport(\n files: Record<string, string>,\n importer: string,\n specifier: string,\n): string | undefined {\n if (!specifier.startsWith(\".\")) {\n return undefined;\n }\n\n const base = join(dirname(importer), specifier);\n\n for (const candidate of sourceModuleCandidates(base)) {\n if (files[candidate] !== undefined) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction sourceFilenameForCompiler(projectRoot: string, filename: string): string {\n return isAbsolute(filename) ? filename : join(projectRoot, filename);\n}\n"]}
@@ -3,6 +3,12 @@ export declare function collectRouteCssFiles(options: {
3
3
  pageFile: string;
4
4
  projectRoot: string;
5
5
  }): Promise<string[]>;
6
+ export declare function collectRouteCssFilesFromSources(options: {
7
+ appDir: string;
8
+ pageFile: string;
9
+ projectRoot: string;
10
+ readSource: (file: string) => Promise<string | undefined> | string | undefined;
11
+ }): Promise<string[]>;
6
12
  export declare function collectRouteCssHrefs(options: {
7
13
  appDir: string;
8
14
  hrefPrefix?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"route-styles.d.ts","sourceRoot":"","sources":["../src/route-styles.ts"],"names":[],"mappings":"AAKA,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BpB;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpB"}
1
+ {"version":3,"file":"route-styles.d.ts","sourceRoot":"","sources":["../src/route-styles.ts"],"names":[],"mappings":"AAKA,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKpB;AAED,wBAAsB,+BAA+B,CAAC,OAAO,EAAE;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CAChF,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BpB;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpB"}
@@ -3,13 +3,22 @@ import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
3
3
  import { collectStaticImportReferences } from "@reckona/mreact-compiler";
4
4
  import { existingRouteShellCandidates } from "./route-shells.js";
5
5
  export async function collectRouteCssFiles(options) {
6
+ return await collectRouteCssFilesFromSources({
7
+ ...options,
8
+ readSource: (file) => readFile(file, "utf8"),
9
+ });
10
+ }
11
+ export async function collectRouteCssFilesFromSources(options) {
6
12
  const shellFiles = (await existingRouteShellCandidates(options.appDir, options.pageFile, isFile))
7
13
  .map((candidate) => candidate.file);
8
14
  const files = [...shellFiles, options.pageFile];
9
15
  const seen = new Set();
10
16
  const cssFiles = [];
11
17
  for (const file of files) {
12
- const source = await readFile(file, "utf8");
18
+ const source = await options.readSource(file);
19
+ if (source === undefined) {
20
+ continue;
21
+ }
13
22
  for (const reference of collectStaticImportReferences({ code: source, filename: file })) {
14
23
  const cssFile = resolveCssImport({
15
24
  importer: file,
@@ -1 +1 @@
1
- {"version":3,"file":"route-styles.js","sourceRoot":"","sources":["../src/route-styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, readFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { collectStaticImportReferences } from \"@reckona/mreact-compiler\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\n\nexport async function collectRouteCssFiles(options: {\n appDir: string;\n pageFile: string;\n projectRoot: string;\n}): Promise<string[]> {\n const shellFiles = (await existingRouteShellCandidates(options.appDir, options.pageFile, isFile))\n .map((candidate) => candidate.file);\n const files = [...shellFiles, options.pageFile];\n const seen = new Set<string>();\n const cssFiles: string[] = [];\n\n for (const file of files) {\n const source = await readFile(file, \"utf8\");\n\n for (const reference of collectStaticImportReferences({ code: source, filename: file })) {\n const cssFile = resolveCssImport({\n importer: file,\n projectRoot: options.projectRoot,\n source: reference.source,\n });\n\n if (cssFile === undefined || seen.has(cssFile)) {\n continue;\n }\n\n seen.add(cssFile);\n cssFiles.push(cssFile);\n }\n }\n\n return cssFiles;\n}\n\nexport async function collectRouteCssHrefs(options: {\n appDir: string;\n hrefPrefix?: string | undefined;\n pageFile: string;\n projectRoot: string;\n}): Promise<string[]> {\n return (await collectRouteCssFiles(options)).map((file) => {\n const href = `/${relative(options.projectRoot, file).split(sep).join(\"/\")}`;\n\n return options.hrefPrefix === undefined ? href : `${options.hrefPrefix}${href.slice(1)}`;\n });\n}\n\nfunction resolveCssImport(options: {\n importer: string;\n projectRoot: string;\n source: string;\n}): string | undefined {\n if (!isCssSource(options.source)) {\n return undefined;\n }\n\n const resolved = isAbsolute(options.source)\n ? normalizeInsideProject(options.projectRoot, options.source)\n : options.source.startsWith(\".\")\n ? normalizeInsideProject(options.projectRoot, resolve(dirname(options.importer), options.source))\n : undefined;\n\n return resolved;\n}\n\nfunction normalizeInsideProject(projectRoot: string, file: string): string | undefined {\n const normalized = resolve(file);\n const root = resolve(projectRoot);\n const relativePath = relative(root, normalized);\n\n return relativePath === \"\" || relativePath.startsWith(\"..\") || isAbsolute(relativePath)\n ? undefined\n : normalized;\n}\n\nfunction isCssSource(source: string): boolean {\n return /\\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source);\n}\n\nasync function isFile(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"route-styles.js","sourceRoot":"","sources":["../src/route-styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, readFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { collectStaticImportReferences } from \"@reckona/mreact-compiler\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\n\nexport async function collectRouteCssFiles(options: {\n appDir: string;\n pageFile: string;\n projectRoot: string;\n}): Promise<string[]> {\n return await collectRouteCssFilesFromSources({\n ...options,\n readSource: (file) => readFile(file, \"utf8\"),\n });\n}\n\nexport async function collectRouteCssFilesFromSources(options: {\n appDir: string;\n pageFile: string;\n projectRoot: string;\n readSource: (file: string) => Promise<string | undefined> | string | undefined;\n}): Promise<string[]> {\n const shellFiles = (await existingRouteShellCandidates(options.appDir, options.pageFile, isFile))\n .map((candidate) => candidate.file);\n const files = [...shellFiles, options.pageFile];\n const seen = new Set<string>();\n const cssFiles: string[] = [];\n\n for (const file of files) {\n const source = await options.readSource(file);\n\n if (source === undefined) {\n continue;\n }\n\n for (const reference of collectStaticImportReferences({ code: source, filename: file })) {\n const cssFile = resolveCssImport({\n importer: file,\n projectRoot: options.projectRoot,\n source: reference.source,\n });\n\n if (cssFile === undefined || seen.has(cssFile)) {\n continue;\n }\n\n seen.add(cssFile);\n cssFiles.push(cssFile);\n }\n }\n\n return cssFiles;\n}\n\nexport async function collectRouteCssHrefs(options: {\n appDir: string;\n hrefPrefix?: string | undefined;\n pageFile: string;\n projectRoot: string;\n}): Promise<string[]> {\n return (await collectRouteCssFiles(options)).map((file) => {\n const href = `/${relative(options.projectRoot, file).split(sep).join(\"/\")}`;\n\n return options.hrefPrefix === undefined ? href : `${options.hrefPrefix}${href.slice(1)}`;\n });\n}\n\nfunction resolveCssImport(options: {\n importer: string;\n projectRoot: string;\n source: string;\n}): string | undefined {\n if (!isCssSource(options.source)) {\n return undefined;\n }\n\n const resolved = isAbsolute(options.source)\n ? normalizeInsideProject(options.projectRoot, options.source)\n : options.source.startsWith(\".\")\n ? normalizeInsideProject(options.projectRoot, resolve(dirname(options.importer), options.source))\n : undefined;\n\n return resolved;\n}\n\nfunction normalizeInsideProject(projectRoot: string, file: string): string | undefined {\n const normalized = resolve(file);\n const root = resolve(projectRoot);\n const relativePath = relative(root, normalized);\n\n return relativePath === \"\" || relativePath.startsWith(\"..\") || isAbsolute(relativePath)\n ? undefined\n : normalized;\n}\n\nfunction isCssSource(source: string): boolean {\n return /\\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source);\n}\n\nasync function isFile(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n"]}
package/dist/serve.d.ts CHANGED
@@ -103,4 +103,9 @@ export declare function startServer(options: StartServerOptions): Promise<{
103
103
  server: Server;
104
104
  url: string;
105
105
  }>;
106
+ declare function readBuiltPublicAsset(outDir: string, pathname: string): Promise<Response | undefined>;
107
+ export declare const __readBuiltPublicAssetForTest: typeof readBuiltPublicAsset;
108
+ export declare function __clearBuiltPublicAssetCacheForTest(): void;
109
+ export declare function __getBuiltPublicAssetCacheSizeForTest(): number;
110
+ export {};
106
111
  //# sourceMappingURL=serve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -367,9 +367,6 @@ async function readBuiltPublicAsset(outDir, pathname) {
367
367
  try {
368
368
  const cacheKey = `${outDir}\0${normalized}`;
369
369
  const cached = builtPublicAssetCache.get(cacheKey);
370
- if (cached === null) {
371
- return undefined;
372
- }
373
370
  if (cached !== undefined) {
374
371
  return bytesResponse(cached.bytes, {
375
372
  headers: cached.headers,
@@ -384,10 +381,16 @@ async function readBuiltPublicAsset(outDir, pathname) {
384
381
  return bytesResponse(bytes, { headers });
385
382
  }
386
383
  catch {
387
- builtPublicAssetCache.set(`${outDir}\0${normalized}`, null);
388
384
  return undefined;
389
385
  }
390
386
  }
387
+ export const __readBuiltPublicAssetForTest = readBuiltPublicAsset;
388
+ export function __clearBuiltPublicAssetCacheForTest() {
389
+ builtPublicAssetCache.clear();
390
+ }
391
+ export function __getBuiltPublicAssetCacheSizeForTest() {
392
+ return builtPublicAssetCache.size;
393
+ }
391
394
  async function readBuiltRuntime(options) {
392
395
  const outDir = options.outDir;
393
396
  const runtimeDir = options.runtimeDir ?? join(outDir, "server", "runtime");