@reckona/mreact-router 0.0.180 → 0.0.181
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/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +53 -18
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +65 -12
- package/dist/build.js.map +1 -1
- package/package.json +11 -11
- package/src/adapters/cloudflare.ts +98 -41
- package/src/build.ts +93 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,uBAAuB,EAGvB,aAAa,EAEd,MAAM,aAAa,CAAC;AACrB,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { clientManifestAssetPaths } from "../client-manifest-assets.js";
|
|
2
2
|
import { __MREACT_QUERY_STATE_SCRIPT_ID, createQueryClient, dehydrate, installQueryAsyncStorage, isQueryClientScopeUnavailableError, runWithQueryClient, } from "@reckona/mreact-query";
|
|
3
3
|
import { emitRouterLog, logDurationMs, logError, logNow, requestLogFields, } from "../logger.js";
|
|
4
|
+
import { middlewareMatches } from "../middleware.js";
|
|
4
5
|
import { normalizeRoutePath } from "../route-path.js";
|
|
5
6
|
import { contentSecurityPolicy } from "../csp.js";
|
|
6
|
-
import { isNotFoundError } from "../navigation.js";
|
|
7
|
+
import { isNotFoundError, rewriteLocation } from "../navigation.js";
|
|
7
8
|
import { validateRouteMetadata } from "../metadata.js";
|
|
8
9
|
import { routeSecurityHeaders } from "../security-headers.js";
|
|
9
10
|
import { emitRouterDevtoolsEvent } from "./devtools.js";
|
|
10
11
|
import { escapeHtmlAttribute, escapeHtmlText } from "@reckona/mreact-shared/html-escape";
|
|
11
12
|
const clientPrefix = "/_mreact/client/";
|
|
13
|
+
const cloudflareMiddlewareRouteModuleKey = "__middleware__";
|
|
12
14
|
const defaultPrerenderCacheOrigin = "https://mreact.local";
|
|
13
15
|
const defaultPrerenderCachePrefix = "/_mreact/prerender";
|
|
14
16
|
/**
|
|
@@ -75,6 +77,11 @@ export function createCloudflareBuiltRequestHandler(options) {
|
|
|
75
77
|
*/
|
|
76
78
|
export function createCloudflareRouteModuleRenderer(options) {
|
|
77
79
|
return async (request, context) => {
|
|
80
|
+
const middlewareResult = await resolveCloudflareRouteModuleMiddleware(options.modules, request);
|
|
81
|
+
if (middlewareResult.type === "response") {
|
|
82
|
+
return middlewareResult.response;
|
|
83
|
+
}
|
|
84
|
+
request = middlewareResult.request;
|
|
78
85
|
if (context.route.kind !== "server" && isCloudflareNavigationRequest(request)) {
|
|
79
86
|
return cloudflareDocumentReloadNavigationResponse();
|
|
80
87
|
}
|
|
@@ -171,6 +178,28 @@ export function createCloudflareRouteModuleRenderer(options) {
|
|
|
171
178
|
}), request, metadata);
|
|
172
179
|
};
|
|
173
180
|
}
|
|
181
|
+
async function resolveCloudflareRouteModuleMiddleware(modules, request) {
|
|
182
|
+
const module = (await loadCloudflareRouteModule(modules, cloudflareMiddlewareRouteModuleKey));
|
|
183
|
+
if (module === undefined || !middlewareMatches(module.config, new URL(request.url).pathname)) {
|
|
184
|
+
return { request, type: "continue" };
|
|
185
|
+
}
|
|
186
|
+
const middleware = module.middleware ?? module.default;
|
|
187
|
+
if (typeof middleware !== "function") {
|
|
188
|
+
return { request, type: "continue" };
|
|
189
|
+
}
|
|
190
|
+
const response = await middleware(request);
|
|
191
|
+
if (!(response instanceof Response)) {
|
|
192
|
+
return { request, type: "continue" };
|
|
193
|
+
}
|
|
194
|
+
const location = rewriteLocation(response);
|
|
195
|
+
if (location !== undefined) {
|
|
196
|
+
return {
|
|
197
|
+
request: new Request(new URL(location, request.url), request),
|
|
198
|
+
type: "continue",
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
return { response, type: "response" };
|
|
202
|
+
}
|
|
174
203
|
async function injectCloudflareQueryState(document, state) {
|
|
175
204
|
if (state.queries.length === 0) {
|
|
176
205
|
return document;
|
|
@@ -270,7 +299,9 @@ function isPromiseLike(value) {
|
|
|
270
299
|
typeof value.then === "function");
|
|
271
300
|
}
|
|
272
301
|
async function dispatchCloudflareServerRoute(module, request, context) {
|
|
273
|
-
const handler = module[request.method] ??
|
|
302
|
+
const handler = module[request.method] ??
|
|
303
|
+
module.ALL ??
|
|
304
|
+
module.default;
|
|
274
305
|
if (typeof handler !== "function") {
|
|
275
306
|
return new Response("Method Not Allowed", { status: 405 });
|
|
276
307
|
}
|
|
@@ -325,8 +356,7 @@ function selectCloudflarePageComponent(module) {
|
|
|
325
356
|
}
|
|
326
357
|
for (const name of Object.keys(module)) {
|
|
327
358
|
const value = readCloudflareModuleExport(module, name);
|
|
328
|
-
if (!cloudflareReservedPageModuleExportNames.has(name) &&
|
|
329
|
-
typeof value === "function") {
|
|
359
|
+
if (!cloudflareReservedPageModuleExportNames.has(name) && typeof value === "function") {
|
|
330
360
|
return value;
|
|
331
361
|
}
|
|
332
362
|
}
|
|
@@ -342,7 +372,12 @@ function readCloudflareModuleExport(module, name) {
|
|
|
342
372
|
}
|
|
343
373
|
return descriptor.get?.call(module);
|
|
344
374
|
}
|
|
345
|
-
const cloudflareDiagnosticPageModuleExportNames = [
|
|
375
|
+
const cloudflareDiagnosticPageModuleExportNames = [
|
|
376
|
+
"default",
|
|
377
|
+
"App",
|
|
378
|
+
"CloudflareRouteComponent",
|
|
379
|
+
"slots",
|
|
380
|
+
];
|
|
346
381
|
// Fixed names + typeof only (never values) so the 500 response is useful without
|
|
347
382
|
// listing app-specific export names. Accessors are not invoked.
|
|
348
383
|
function describeCloudflareModuleExports(module) {
|
|
@@ -653,9 +688,7 @@ function cacheControlHasDirective(cacheControl, directive) {
|
|
|
653
688
|
return false;
|
|
654
689
|
}
|
|
655
690
|
const normalizedDirective = directive.toLowerCase();
|
|
656
|
-
return cacheControl
|
|
657
|
-
.split(",")
|
|
658
|
-
.some((part) => part.trim().toLowerCase() === normalizedDirective);
|
|
691
|
+
return cacheControl.split(",").some((part) => part.trim().toLowerCase() === normalizedDirective);
|
|
659
692
|
}
|
|
660
693
|
function prerenderedResponse(prerenderedRoutes, path, method, isNavigation) {
|
|
661
694
|
if (method !== "GET" && method !== "HEAD") {
|
|
@@ -683,14 +716,10 @@ function cloudflareRouteRequiresModule(route, manifest) {
|
|
|
683
716
|
function cloudflareRouteGlobKeyMatchesRoute(key, routeFile) {
|
|
684
717
|
const normalizedKey = normalizeCloudflareRouteModulePath(key);
|
|
685
718
|
const normalizedRoute = normalizeCloudflareRouteModulePath(routeFile);
|
|
686
|
-
return
|
|
687
|
-
normalizedKey.endsWith(`/${normalizedRoute}`));
|
|
719
|
+
return normalizedKey === normalizedRoute || normalizedKey.endsWith(`/${normalizedRoute}`);
|
|
688
720
|
}
|
|
689
721
|
function normalizeCloudflareRouteModulePath(path) {
|
|
690
|
-
const withoutPrefix = path
|
|
691
|
-
.replace(/\\/g, "/")
|
|
692
|
-
.replace(/^\.\//, "")
|
|
693
|
-
.replace(/^\/+/, "");
|
|
722
|
+
const withoutPrefix = path.replace(/\\/g, "/").replace(/^\.\//, "").replace(/^\/+/, "");
|
|
694
723
|
return withoutPrefix.replace(/\.(?:mjs|js|ts|tsx)$/, "");
|
|
695
724
|
}
|
|
696
725
|
function matchCloudflareRoute(routes, pathname) {
|
|
@@ -703,8 +732,7 @@ function matchCloudflareRoute(routes, pathname) {
|
|
|
703
732
|
continue;
|
|
704
733
|
}
|
|
705
734
|
if (catchAllIndex !== -1 &&
|
|
706
|
-
pathSegments.length <
|
|
707
|
-
catchAllIndex + 1 + route.segments.length - catchAllIndex - 1) {
|
|
735
|
+
pathSegments.length < catchAllIndex + 1 + route.segments.length - catchAllIndex - 1) {
|
|
708
736
|
continue;
|
|
709
737
|
}
|
|
710
738
|
let matched = true;
|
|
@@ -782,7 +810,9 @@ function matchCloudflareRoute(routes, pathname) {
|
|
|
782
810
|
}
|
|
783
811
|
function compareCloudflareRoutes(a, b) {
|
|
784
812
|
const scoreDelta = routeSpecificityScore(b) - routeSpecificityScore(a);
|
|
785
|
-
return scoreDelta === 0
|
|
813
|
+
return scoreDelta === 0
|
|
814
|
+
? a.path.localeCompare(b.path) || a.kind.localeCompare(b.kind)
|
|
815
|
+
: scoreDelta;
|
|
786
816
|
}
|
|
787
817
|
function routeSpecificityScore(route) {
|
|
788
818
|
return route.segments.reduce((score, segment) => {
|
|
@@ -910,7 +940,12 @@ function mergeCloudflareRouteMetadata(metadata) {
|
|
|
910
940
|
...(icons === undefined ? {} : { icons }),
|
|
911
941
|
...(openGraph === undefined && openGraphImages === undefined
|
|
912
942
|
? {}
|
|
913
|
-
: {
|
|
943
|
+
: {
|
|
944
|
+
openGraph: {
|
|
945
|
+
...openGraph,
|
|
946
|
+
...(openGraphImages === undefined ? {} : { images: openGraphImages }),
|
|
947
|
+
},
|
|
948
|
+
}),
|
|
914
949
|
};
|
|
915
950
|
return mergedMetadata;
|
|
916
951
|
}, {});
|