@reckona/mreact-router 0.0.137 → 0.0.139
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/README.md +1 -1
- package/dist/actions.d.ts +1 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +32 -12
- package/dist/actions.js.map +1 -1
- package/dist/adapters/static.js +10 -4
- package/dist/adapters/static.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +28 -21
- package/dist/build.js.map +1 -1
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +23 -1
- package/dist/cache.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +49 -12
- package/dist/client.js.map +1 -1
- package/dist/dev-server.d.ts +1 -0
- package/dist/dev-server.d.ts.map +1 -1
- package/dist/dev-server.js +6 -4
- package/dist/dev-server.js.map +1 -1
- package/dist/link.js +17 -3
- package/dist/link.js.map +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +10 -7
- package/dist/middleware.js.map +1 -1
- package/dist/multipart.d.ts +5 -0
- package/dist/multipart.d.ts.map +1 -1
- package/dist/multipart.js +24 -1
- package/dist/multipart.js.map +1 -1
- package/dist/native-route-matcher.d.ts +9 -0
- package/dist/native-route-matcher.d.ts.map +1 -1
- package/dist/native-route-matcher.js +23 -11
- package/dist/native-route-matcher.js.map +1 -1
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +8 -1
- package/dist/navigation.js.map +1 -1
- package/dist/render.d.ts +5 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +239 -95
- package/dist/render.js.map +1 -1
- package/dist/route-source.d.ts +3 -1
- package/dist/route-source.d.ts.map +1 -1
- package/dist/route-source.js +13 -11
- package/dist/route-source.js.map +1 -1
- package/dist/route-styles.d.ts +4 -0
- package/dist/route-styles.d.ts.map +1 -1
- package/dist/route-styles.js +15 -3
- package/dist/route-styles.js.map +1 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +39 -9
- package/dist/serve.js.map +1 -1
- package/dist/server-action-inference.d.ts.map +1 -1
- package/dist/server-action-inference.js +57 -0
- package/dist/server-action-inference.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +47 -11
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/actions.ts +44 -10
- package/src/adapters/static.ts +11 -4
- package/src/build.ts +28 -17
- package/src/cache.ts +33 -1
- package/src/client.ts +49 -12
- package/src/dev-server.ts +11 -4
- package/src/link.ts +24 -3
- package/src/middleware.ts +12 -7
- package/src/multipart.ts +32 -1
- package/src/native-route-matcher.ts +34 -13
- package/src/navigation.ts +11 -2
- package/src/render.ts +321 -113
- package/src/route-source.ts +14 -10
- package/src/route-styles.ts +28 -3
- package/src/serve.ts +68 -15
- package/src/server-action-inference.ts +86 -0
- package/src/vite.ts +59 -12
package/dist/route-source.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare function isStreamRouteSource(code: string, filename?: string | un
|
|
|
17
17
|
export declare function mayUseAwaitBoundarySource(code: string): boolean;
|
|
18
18
|
export declare function routeClosureMayUseAwaitBoundary(options: {
|
|
19
19
|
filename: string;
|
|
20
|
-
files:
|
|
20
|
+
files: RouteSourceLookup;
|
|
21
21
|
projectRoot: string;
|
|
22
22
|
seen?: Set<string> | undefined;
|
|
23
23
|
source: string;
|
|
@@ -25,4 +25,6 @@ export declare function routeClosureMayUseAwaitBoundary(options: {
|
|
|
25
25
|
export declare function hasPrerenderExport(code: string, filename?: string | undefined): boolean;
|
|
26
26
|
export declare function hasGenerateStaticParamsExport(code: string, filename?: string | undefined): boolean;
|
|
27
27
|
export declare function hasLoaderExport(code: string, filename?: string | undefined): boolean;
|
|
28
|
+
type RouteSourceLookup = Record<string, string> | ((file: string) => string | undefined);
|
|
29
|
+
export {};
|
|
28
30
|
//# 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,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,
|
|
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,iBAAiB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAuDV;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;AA+CD,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC"}
|
package/dist/route-source.js
CHANGED
|
@@ -119,15 +119,13 @@ export function routeClosureMayUseAwaitBoundary(options) {
|
|
|
119
119
|
if (resolved === undefined) {
|
|
120
120
|
continue;
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
source: importedSource,
|
|
130
|
-
})) {
|
|
122
|
+
if (routeClosureMayUseAwaitBoundary({
|
|
123
|
+
filename: resolved.filename,
|
|
124
|
+
files: options.files,
|
|
125
|
+
projectRoot: options.projectRoot,
|
|
126
|
+
seen,
|
|
127
|
+
source: resolved.source,
|
|
128
|
+
})) {
|
|
131
129
|
return true;
|
|
132
130
|
}
|
|
133
131
|
}
|
|
@@ -165,12 +163,16 @@ function resolveLocalSourceImport(files, importer, specifier) {
|
|
|
165
163
|
}
|
|
166
164
|
const base = join(dirname(importer), specifier);
|
|
167
165
|
for (const candidate of sourceModuleCandidates(base)) {
|
|
168
|
-
|
|
169
|
-
|
|
166
|
+
const source = readRouteSourceLookup(files, candidate);
|
|
167
|
+
if (source !== undefined) {
|
|
168
|
+
return { filename: candidate, source };
|
|
170
169
|
}
|
|
171
170
|
}
|
|
172
171
|
return undefined;
|
|
173
172
|
}
|
|
173
|
+
function readRouteSourceLookup(files, file) {
|
|
174
|
+
return typeof files === "function" ? files(file) : files[file];
|
|
175
|
+
}
|
|
174
176
|
function sourceFilenameForCompiler(projectRoot, filename) {
|
|
175
177
|
return isAbsolute(filename) ? filename : join(projectRoot, filename);
|
|
176
178
|
}
|
package/dist/route-source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-source.js","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,qCAAqC,EACrC,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,gCAAgC,EAChC,kBAAkB,EAClB,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,sBAAsB,GAAG;IAC7B,MAAM;IACN,sBAAsB;IACtB,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,QAAQ;CACA,CAAC;AACX,MAAM,0BAA0B,GAAG;IACjC,GAAG,sBAAsB;IACzB,kBAAkB;IAClB,UAAU;CACF,CAAC;AACX,MAAM,6BAA6B,GAAG,CAAC,SAAS,EAAE,OAAO,CAAU,CAAC;AACpE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACrE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAS;IAC9C,GAAG,0BAA0B;IAC7B,kBAAkB;IAClB,UAAU;CACX,CAAC,CAAC;AACH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAS,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;AAEvF,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,QAA6B;IACjF,OAAO,wBAAwB,CAAC,+BAA+B,CAAC;QAC9D,IAAI;QACJ,QAAQ;QACR,KAAK,EAAE,sBAAsB;KAC9B,CAAC,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,QAA6B;IACrF,OAAO,6BAA6B,CAAC;QACnC,IAAI,EAAE,wBAAwB,CAC5B,+BAA+B,CAAC;YAC9B,IAAI;YACJ,QAAQ;YACR,KAAK,EAAE,0BAA0B;SAClC,CAAC,EACF,sBAAsB,EACtB,QAAQ,CACT;QACD,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAGtC;IACC,OAAO,qCAAqC,CAAC;QAC3C,IAAI,EAAE,2BAA2B,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,KAGrD;IACC,MAAM,UAAU,GAAG,qCAAqC,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAEtB,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;IACtG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,QAA6B;IAChF,OAAO,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAY,EAAE,QAA6B;IACtF,OAAO,wBAAwB,CAC7B,+BAA+B,CAAC;QAC9B,IAAI;QACJ,QAAQ;QACR,KAAK,EAAE,6BAA6B;KACrC,CAAC,EACF,uBAAuB,EACvB,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,QAA6B;IACrF,OAAO,wBAAwB,CAC7B,+BAA+B,CAAC;QAC9B,IAAI;QACJ,QAAQ;QACR,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;KAC/I,CAAC,EACF,0BAA0B,EAC1B,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,QAA6B;IACvF,OAAO,wBAAwB,CAC7B,+BAA+B,CAAC;QAC9B,IAAI;QACJ,QAAQ;QACR,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;KACzH,CAAC,EACF,4BAA4B,EAC5B,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,QAA6B;IACjF,OAAO,+BAA+B,CAAC;QACrC,IAAI;QACJ,QAAQ;QACR,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC;KACrD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,QAA6B;IAC7E,OAAO,4BAA4B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,4BAA4B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAM/C;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,GAAG,EAAU,CAAC;IAC/C,IACE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1B,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EACrE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3B,IAAI,CAAC;QACH,IAAI,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,4BAA4B,CAAC;YAC3B,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,QAAQ,EAAE,cAAc;SACzB,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,6BAA6B,CAAC;YACpD,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,QAAQ,EAAE,cAAc;SACzB,CAAC,EAAE,CAAC;YACH,IAAI,CAAC,+BAA+B,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC;gBACnE,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAE7F,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE/C,IACE,cAAc,KAAK,SAAS;gBAC5B,+BAA+B,CAAC;oBAC9B,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,IAAI;oBACJ,MAAM,EAAE,cAAc;iBACvB,CAAC,EACF,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,QAA6B;IAC5E,OAAO,4BAA4B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,QAA6B;IACvF,OAAO,4BAA4B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAA6B;IACzE,OAAO,4BAA4B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAY,EACZ,uBAA4C,sBAAsB,EAClE,QAA6B;IAE7B,MAAM,WAAW,GAAG,+BAA+B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACpE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,gCAAgC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,+BAA+B,CACtC,SAAgC,EAChC,iBAAsC;IAEtC,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAA6B,EAC7B,QAAgB,EAChB,SAAiB;IAEjB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAEhD,KAAK,MAAM,SAAS,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAAC,WAAmB,EAAE,QAAgB;IACtE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC","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"]}
|
|
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: RouteSourceLookup;\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 if (\n routeClosureMayUseAwaitBoundary({\n filename: resolved.filename,\n files: options.files,\n projectRoot: options.projectRoot,\n seen,\n source: resolved.source,\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: RouteSourceLookup,\n importer: string,\n specifier: string,\n): { filename: string; source: 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 const source = readRouteSourceLookup(files, candidate);\n if (source !== undefined) {\n return { filename: candidate, source };\n }\n }\n\n return undefined;\n}\n\ntype RouteSourceLookup = Record<string, string> | ((file: string) => string | undefined);\n\nfunction readRouteSourceLookup(files: RouteSourceLookup, file: string): string | undefined {\n return typeof files === \"function\" ? files(file) : files[file];\n}\n\nfunction sourceFilenameForCompiler(projectRoot: string, filename: string): string {\n return isAbsolute(filename) ? filename : join(projectRoot, filename);\n}\n"]}
|
package/dist/route-styles.d.ts
CHANGED
|
@@ -2,9 +2,11 @@ export declare function collectRouteCssFiles(options: {
|
|
|
2
2
|
appDir: string;
|
|
3
3
|
pageFile: string;
|
|
4
4
|
projectRoot: string;
|
|
5
|
+
readSource?: ((file: string) => Promise<string | undefined> | string | undefined) | undefined;
|
|
5
6
|
}): Promise<string[]>;
|
|
6
7
|
export declare function collectRouteCssFilesFromSources(options: {
|
|
7
8
|
appDir: string;
|
|
9
|
+
isFile?: ((file: string) => Promise<boolean> | boolean) | undefined;
|
|
8
10
|
pageFile: string;
|
|
9
11
|
projectRoot: string;
|
|
10
12
|
readSource: (file: string) => Promise<string | undefined> | string | undefined;
|
|
@@ -14,6 +16,8 @@ export declare function collectRouteCssHrefs(options: {
|
|
|
14
16
|
hrefPrefix?: string | undefined;
|
|
15
17
|
pageFile: string;
|
|
16
18
|
projectRoot: string;
|
|
19
|
+
readSource?: ((file: string) => Promise<string | undefined> | string | undefined) | undefined;
|
|
17
20
|
}): Promise<string[]>;
|
|
21
|
+
export declare function createCachedRouteSourceReader(readSource?: (file: string) => Promise<string | undefined> | string | undefined): (file: string) => Promise<string | undefined>;
|
|
18
22
|
export declare function collectSpecialBoundaryFiles(directory: string): Promise<string[]>;
|
|
19
23
|
//# sourceMappingURL=route-styles.d.ts.map
|
|
@@ -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;
|
|
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;IACpB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CAC/F,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKpB;AAED,wBAAsB,+BAA+B,CAAC,OAAO,EAAE;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;IACpE,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,CAmCpB;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;IACpB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CAC/F,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAC7C,GACvB,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa/C;AAED,wBAAsB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBtF"}
|
package/dist/route-styles.js
CHANGED
|
@@ -5,12 +5,12 @@ import { existingRouteShellCandidates } from "./route-shells.js";
|
|
|
5
5
|
export async function collectRouteCssFiles(options) {
|
|
6
6
|
return await collectRouteCssFilesFromSources({
|
|
7
7
|
...options,
|
|
8
|
-
readSource: (file) => readFile(file, "utf8"),
|
|
8
|
+
readSource: options.readSource ?? ((file) => readFile(file, "utf8")),
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
export async function collectRouteCssFilesFromSources(options) {
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const fileExists = options.isFile ?? isFile;
|
|
13
|
+
const shellFiles = (await existingRouteShellCandidates(options.appDir, options.pageFile, async (file) => fileExists(file))).map((candidate) => candidate.file);
|
|
14
14
|
const files = [...shellFiles, options.pageFile];
|
|
15
15
|
const seen = new Set();
|
|
16
16
|
const cssFiles = [];
|
|
@@ -40,6 +40,18 @@ export async function collectRouteCssHrefs(options) {
|
|
|
40
40
|
return options.hrefPrefix === undefined ? href : `${options.hrefPrefix}${href.slice(1)}`;
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
+
export function createCachedRouteSourceReader(readSource = (file) => readFile(file, "utf8")) {
|
|
44
|
+
const cache = new Map();
|
|
45
|
+
return (file) => {
|
|
46
|
+
const cached = cache.get(file);
|
|
47
|
+
if (cached !== undefined) {
|
|
48
|
+
return cached;
|
|
49
|
+
}
|
|
50
|
+
const loaded = Promise.resolve(readSource(file));
|
|
51
|
+
cache.set(file, loaded);
|
|
52
|
+
return loaded;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
43
55
|
export async function collectSpecialBoundaryFiles(directory) {
|
|
44
56
|
const entries = await readdir(directory, { withFileTypes: true });
|
|
45
57
|
const files = [];
|
package/dist/route-styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-styles.js","sourceRoot":"","sources":["../src/route-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"route-styles.js","sourceRoot":"","sources":["../src/route-styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, readdir, readFile } from \"node:fs/promises\";\nimport { dirname, join, 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 readSource?: ((file: string) => Promise<string | undefined> | string | undefined) | undefined;\n}): Promise<string[]> {\n return await collectRouteCssFilesFromSources({\n ...options,\n readSource: options.readSource ?? ((file) => readFile(file, \"utf8\")),\n });\n}\n\nexport async function collectRouteCssFilesFromSources(options: {\n appDir: string;\n isFile?: ((file: string) => Promise<boolean> | boolean) | undefined;\n pageFile: string;\n projectRoot: string;\n readSource: (file: string) => Promise<string | undefined> | string | undefined;\n}): Promise<string[]> {\n const fileExists = options.isFile ?? isFile;\n const shellFiles = (\n await existingRouteShellCandidates(options.appDir, options.pageFile, async (file) =>\n fileExists(file),\n )\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 readSource?: ((file: string) => Promise<string | undefined> | string | undefined) | undefined;\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\nexport function createCachedRouteSourceReader(\n readSource: (file: string) => Promise<string | undefined> | string | undefined = (file) =>\n readFile(file, \"utf8\"),\n): (file: string) => Promise<string | undefined> {\n const cache = new Map<string, Promise<string | undefined>>();\n\n return (file) => {\n const cached = cache.get(file);\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = Promise.resolve(readSource(file));\n cache.set(file, loaded);\n return loaded;\n };\n}\n\nexport async function collectSpecialBoundaryFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const files: string[] = [];\n\n for (const entry of entries) {\n const path = join(directory, entry.name);\n\n if (entry.isDirectory()) {\n if (entry.name === \".vite\" || entry.name === \"node_modules\") {\n continue;\n }\n\n files.push(...(await collectSpecialBoundaryFiles(path)));\n continue;\n }\n\n if (entry.isFile() && isSpecialBoundaryFilename(entry.name)) {\n files.push(path);\n }\n }\n\n return files.sort();\n}\n\nfunction isSpecialBoundaryFilename(filename: string): boolean {\n return /^(?:error|not-found)(?:\\.mreact)?\\.tsx$/u.test(filename);\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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAItD,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
|
package/dist/serve.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createServer } from "node:http";
|
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
4
4
|
import { dirname, isAbsolute, join, normalize, sep } from "node:path";
|
|
5
|
-
import { createRouteMatcher } from "./routes.js";
|
|
5
|
+
import { createRouteMatcher, } from "./routes.js";
|
|
6
6
|
import { preloadBuiltRequestModules, renderAppRequest, resolveAppRouterMiddleware, } from "./render.js";
|
|
7
7
|
import { bytesResponse, htmlResponse, nodeRequestToWebRequest, rawNodeRequestUrl, sendResponse, } from "./http.js";
|
|
8
8
|
import { emitRouterLog, logDurationMs, logError, logNow, nodeRequestPath, requestLogFields, } from "./logger.js";
|
|
@@ -175,9 +175,11 @@ async function renderBuiltAppRequestWithRuntime(options) {
|
|
|
175
175
|
emitBuiltRenderTiming(options, request, timing, middlewareResult.response.status);
|
|
176
176
|
return middlewareResult.response;
|
|
177
177
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
if (middlewareResult.request !== request) {
|
|
179
|
+
request = middlewareResult.request;
|
|
180
|
+
normalizedPath = normalizeRoutePath(new URL(request.url).pathname);
|
|
181
|
+
matched = options.runtime.routeMatcher.match(normalizedPath);
|
|
182
|
+
}
|
|
181
183
|
if (request.method === "GET" && options.runtime.prerenderableRoutes.has(normalizedPath)) {
|
|
182
184
|
await loadBuiltServerModuleArtifactsForRequest(options.runtime, matched?.route.file, {
|
|
183
185
|
includeRender: false,
|
|
@@ -187,7 +189,12 @@ async function renderBuiltAppRequestWithRuntime(options) {
|
|
|
187
189
|
await loadBuiltServerModuleArtifactsForRequest(options.runtime, matched?.route.file, {
|
|
188
190
|
includeRender: false,
|
|
189
191
|
});
|
|
190
|
-
const response = await renderBuiltDynamicResponse({
|
|
192
|
+
const response = await renderBuiltDynamicResponse({
|
|
193
|
+
...options,
|
|
194
|
+
matchedRoute: matched,
|
|
195
|
+
request,
|
|
196
|
+
requestUrl: new URL(request.url),
|
|
197
|
+
});
|
|
191
198
|
await applyBuiltPrerenderInvalidations(options.runtime, response, options.prerenderStore);
|
|
192
199
|
return options.sinkStrategy === "buffer"
|
|
193
200
|
? await materializeResponseAsBuffer(response)
|
|
@@ -576,6 +583,7 @@ async function materializeBuiltRuntime(options) {
|
|
|
576
583
|
? {}
|
|
577
584
|
: { serverActionManifest: serverManifest.serverActionManifest }),
|
|
578
585
|
serverModuleArtifactLoads: new Map(),
|
|
586
|
+
serverModuleClosureFiles: new Map(),
|
|
579
587
|
serverModuleFiles,
|
|
580
588
|
serverModuleRenderFiles,
|
|
581
589
|
serverModuleRequestFiles,
|
|
@@ -760,11 +768,30 @@ async function loadBuiltServerModuleArtifactsForRequest(runtime, routeFile, opti
|
|
|
760
768
|
}
|
|
761
769
|
}
|
|
762
770
|
async function loadBuiltServerModuleArtifactClosure(runtime, file, seen, kind) {
|
|
771
|
+
for (const closureFile of builtServerModuleClosureFiles(runtime, file)) {
|
|
772
|
+
if (seen.has(closureFile)) {
|
|
773
|
+
continue;
|
|
774
|
+
}
|
|
775
|
+
seen.add(closureFile);
|
|
776
|
+
await loadBuiltServerModuleArtifact(runtime, closureFile, kind);
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
function builtServerModuleClosureFiles(runtime, file) {
|
|
780
|
+
const cached = runtime.serverModuleClosureFiles.get(file);
|
|
781
|
+
if (cached !== undefined) {
|
|
782
|
+
return cached;
|
|
783
|
+
}
|
|
784
|
+
const closure = [];
|
|
785
|
+
collectBuiltServerModuleClosureFiles(runtime, file, new Set(), closure);
|
|
786
|
+
runtime.serverModuleClosureFiles.set(file, closure);
|
|
787
|
+
return closure;
|
|
788
|
+
}
|
|
789
|
+
function collectBuiltServerModuleClosureFiles(runtime, file, seen, closure) {
|
|
763
790
|
if (seen.has(file)) {
|
|
764
791
|
return;
|
|
765
792
|
}
|
|
766
793
|
seen.add(file);
|
|
767
|
-
|
|
794
|
+
closure.push(file);
|
|
768
795
|
const source = runtime.serverSourceFiles.get(file);
|
|
769
796
|
if (source === undefined) {
|
|
770
797
|
return;
|
|
@@ -772,14 +799,15 @@ async function loadBuiltServerModuleArtifactClosure(runtime, file, seen, kind) {
|
|
|
772
799
|
for (const specifier of localServerModuleSpecifiers(source)) {
|
|
773
800
|
const resolved = resolveBuiltLocalServerSourceImport(runtime, file, specifier);
|
|
774
801
|
if (resolved !== undefined) {
|
|
775
|
-
|
|
802
|
+
collectBuiltServerModuleClosureFiles(runtime, resolved, seen, closure);
|
|
776
803
|
}
|
|
777
804
|
}
|
|
778
805
|
}
|
|
806
|
+
const localServerModuleImportPattern = /\b(?:import|export)\s+(?:type\s+)?(?:[^"']*?\s+from\s*)?["'](?<source>\.{1,2}\/[^"']+)["']/g;
|
|
779
807
|
function localServerModuleSpecifiers(code) {
|
|
780
808
|
const specifiers = new Set();
|
|
781
|
-
|
|
782
|
-
for (const match of code.matchAll(
|
|
809
|
+
localServerModuleImportPattern.lastIndex = 0;
|
|
810
|
+
for (const match of code.matchAll(localServerModuleImportPattern)) {
|
|
783
811
|
const source = match.groups?.source;
|
|
784
812
|
if (source !== undefined) {
|
|
785
813
|
specifiers.add(source);
|
|
@@ -849,9 +877,11 @@ function builtRenderAppRequestOptions(options) {
|
|
|
849
877
|
request: options.request,
|
|
850
878
|
instrumentation: options.instrumentation,
|
|
851
879
|
logger: options.logger,
|
|
880
|
+
matchedRoute: options.matchedRoute,
|
|
852
881
|
navigationScripts: options.runtime.navigationScripts,
|
|
853
882
|
routeCache: options.routeCache,
|
|
854
883
|
routeMatcher: options.runtime.routeMatcher,
|
|
884
|
+
requestUrl: options.requestUrl,
|
|
855
885
|
routes: options.runtime.routes,
|
|
856
886
|
__mreactLoadServerRenderArtifacts: async (routeFile) => {
|
|
857
887
|
await loadBuiltServerModuleArtifactsForRequest(options.runtime, routeFile, {
|