@reckona/mreact-router 0.0.201 → 0.0.202

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 (72) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/cloudflare.d.ts.map +1 -1
  3. package/dist/adapters/cloudflare.js +51 -4
  4. package/dist/adapters/cloudflare.js.map +1 -1
  5. package/dist/adapters/node.d.ts +7 -0
  6. package/dist/adapters/node.d.ts.map +1 -1
  7. package/dist/adapters/node.js +7 -1
  8. package/dist/adapters/node.js.map +1 -1
  9. package/dist/adapters/static.d.ts.map +1 -1
  10. package/dist/adapters/static.js +14 -3
  11. package/dist/adapters/static.js.map +1 -1
  12. package/dist/build.d.ts +3 -0
  13. package/dist/build.d.ts.map +1 -1
  14. package/dist/build.js +42 -5
  15. package/dist/build.js.map +1 -1
  16. package/dist/built-runtime.d.ts +4 -1
  17. package/dist/built-runtime.d.ts.map +1 -1
  18. package/dist/built-runtime.js.map +1 -1
  19. package/dist/cache.d.ts +26 -0
  20. package/dist/cache.d.ts.map +1 -1
  21. package/dist/cache.js +78 -12
  22. package/dist/cache.js.map +1 -1
  23. package/dist/cli-options.d.ts +4 -0
  24. package/dist/cli-options.d.ts.map +1 -1
  25. package/dist/cli-options.js +17 -0
  26. package/dist/cli-options.js.map +1 -1
  27. package/dist/cli.js +2 -1
  28. package/dist/cli.js.map +1 -1
  29. package/dist/node-server.d.ts +6 -0
  30. package/dist/node-server.d.ts.map +1 -1
  31. package/dist/node-server.js +19 -1
  32. package/dist/node-server.js.map +1 -1
  33. package/dist/prerender-entry.d.ts +5 -0
  34. package/dist/prerender-entry.d.ts.map +1 -0
  35. package/dist/prerender-entry.js +41 -0
  36. package/dist/prerender-entry.js.map +1 -0
  37. package/dist/render.d.ts +13 -0
  38. package/dist/render.d.ts.map +1 -1
  39. package/dist/render.js +139 -87
  40. package/dist/render.js.map +1 -1
  41. package/dist/request-header-tracking.d.ts +44 -0
  42. package/dist/request-header-tracking.d.ts.map +1 -0
  43. package/dist/request-header-tracking.js +116 -0
  44. package/dist/request-header-tracking.js.map +1 -0
  45. package/dist/route-source.d.ts +16 -0
  46. package/dist/route-source.d.ts.map +1 -1
  47. package/dist/route-source.js +55 -1
  48. package/dist/route-source.js.map +1 -1
  49. package/dist/security-headers.d.ts +16 -0
  50. package/dist/security-headers.d.ts.map +1 -1
  51. package/dist/security-headers.js +37 -0
  52. package/dist/security-headers.js.map +1 -1
  53. package/dist/serve.d.ts +7 -0
  54. package/dist/serve.d.ts.map +1 -1
  55. package/dist/serve.js +94 -28
  56. package/dist/serve.js.map +1 -1
  57. package/package.json +11 -11
  58. package/src/adapters/cloudflare.ts +81 -9
  59. package/src/adapters/node.ts +14 -1
  60. package/src/adapters/static.ts +18 -5
  61. package/src/build.ts +71 -4
  62. package/src/built-runtime.ts +2 -2
  63. package/src/cache.ts +117 -11
  64. package/src/cli-options.ts +24 -0
  65. package/src/cli.ts +5 -0
  66. package/src/node-server.ts +27 -1
  67. package/src/prerender-entry.ts +56 -0
  68. package/src/render.ts +188 -98
  69. package/src/request-header-tracking.ts +161 -0
  70. package/src/route-source.ts +71 -0
  71. package/src/security-headers.ts +41 -0
  72. package/src/serve.ts +133 -30
package/README.md CHANGED
@@ -332,7 +332,7 @@ MREACT_ROUTER_LOG=requests mreact-router dev
332
332
 
333
333
  Each line includes method, path, status, duration, and runtime. Query strings, headers, and request bodies are intentionally omitted.
334
334
 
335
- Built Node output binds to `127.0.0.1` by default. Use `mreact-router start .mreact --host 0.0.0.0 --host-policy=strict` or `HOST=0.0.0.0 MREACT_ROUTER_HOST_POLICY=strict mreact-router start .mreact` inside containers behind explicit port publishing or a reverse proxy. This bind address is separate from Host header trust; configure `--allowed-hosts`, `MREACT_ROUTER_ALLOWED_HOSTS`, or `hostPolicy` for public deployments.
335
+ Built Node output binds to `127.0.0.1` by default. Use `mreact-router start .mreact --host 0.0.0.0 --host-policy=strict` or `HOST=0.0.0.0 MREACT_ROUTER_HOST_POLICY=strict mreact-router start .mreact` inside containers behind explicit port publishing or a reverse proxy. This bind address is separate from Host header trust; configure `--allowed-hosts`, `MREACT_ROUTER_ALLOWED_HOSTS`, or `hostPolicy` for public deployments. Node ignores `X-Forwarded-Proto` by default. Use `--trust-forwarded-proto`, `MREACT_ROUTER_TRUST_FORWARDED_PROTO=1`, or `trustForwardedProto: true` only when a trusted proxy overwrites the header and the Node port is inaccessible to untrusted clients. `hostPolicy: "trusted-proxy"` does not enable protocol trust.
336
336
 
337
337
  Use `mreact-router --help`, `mreact-router help build`, or command-level help such as `mreact-router build --help` to inspect supported commands, build targets, and generated artifacts.
338
338
 
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { validateRouteMetadata } from "../metadata.js";
9
9
  import { routeSecurityHeaders } from "../security-headers.js";
10
10
  import { emitRouterDevtoolsEvent } from "./devtools.js";
11
11
  import { escapeHtmlAttribute, escapeHtmlText } from "@reckona/mreact-shared/html-escape";
12
+ import { isCurrentPrerenderedRoute } from "../prerender-entry.js";
12
13
  const clientPrefix = "/_mreact/client/";
13
14
  const cloudflareMiddlewareRouteModuleKey = "__middleware__";
14
15
  const defaultPrerenderCacheOrigin = "https://mreact.local";
@@ -81,7 +82,25 @@ export function createCloudflareRouteModuleRenderer(options) {
81
82
  if (middlewareResult.type === "response") {
82
83
  return middlewareResult.response;
83
84
  }
84
- request = middlewareResult.request;
85
+ if (middlewareResult.request !== request) {
86
+ // The route was matched against the pre-middleware URL, so a rewrite has
87
+ // to re-match: otherwise the rewritten path would still render the module
88
+ // the visitor asked for, which is the module a rewrite is often used to
89
+ // keep them away from. The built runtime re-matches the same way.
90
+ request = middlewareResult.request;
91
+ const rematched = matchCloudflareRoute(sortedCloudflareRoutes(context.serverManifest), new URL(request.url).pathname);
92
+ if (rematched === undefined) {
93
+ return new Response("Not Found", { status: 404 });
94
+ }
95
+ context = { ...context, params: rematched.params, route: rematched.route };
96
+ }
97
+ // Middleware apps skip the prerendered fast path in `handleCloudflareRequest`
98
+ // so that access gates run first, so the stored HTML is resolved here
99
+ // instead, against the post-middleware path.
100
+ const prerendered = prerenderedResponse(context.serverManifest.prerenderedRoutes, normalizeRoutePath(new URL(request.url).pathname), request.method, isCloudflareNavigationRequest(request));
101
+ if (prerendered !== undefined) {
102
+ return prerendered;
103
+ }
85
104
  if (context.route.kind !== "server" && isCloudflareNavigationRequest(request)) {
86
105
  return cloudflareDocumentReloadNavigationResponse();
87
106
  }
@@ -605,7 +624,13 @@ async function handleCloudflareRequest(options, request, env, context) {
605
624
  });
606
625
  return assetResponse;
607
626
  }
608
- const staticResponse = prerenderedResponse(options.serverManifest.prerenderedRoutes, normalizeRoutePath(url.pathname), request.method, isCloudflareNavigationRequest(request));
627
+ // Prerendered HTML may only short-circuit `render` when the app has no
628
+ // middleware. Middleware runs inside `render`, so serving stored HTML here
629
+ // would bypass auth, geo blocking and maintenance gates for exactly the
630
+ // routes they are most often used to protect.
631
+ const staticResponse = builtServerManifestHasMiddleware(options.serverManifest)
632
+ ? undefined
633
+ : prerenderedResponse(options.serverManifest.prerenderedRoutes, normalizeRoutePath(url.pathname), request.method, isCloudflareNavigationRequest(request));
609
634
  if (staticResponse !== undefined) {
610
635
  emitRouterDevtoolsEvent({
611
636
  method: request.method,
@@ -690,12 +715,22 @@ function cacheControlHasDirective(cacheControl, directive) {
690
715
  const normalizedDirective = directive.toLowerCase();
691
716
  return cacheControl.split(",").some((part) => part.trim().toLowerCase() === normalizedDirective);
692
717
  }
718
+ // `serverManifest.files` is keyed on paths relative to the project root, so a
719
+ // default `src/app` project stores the middleware as "src/app/middleware.ts".
720
+ // This mirrors `hasMiddleware` in built-runtime.ts, which resolves the same two
721
+ // names against the routes directory.
722
+ function builtServerManifestHasMiddleware(manifest) {
723
+ const routesDir = (manifest.routesDir ?? "").replaceAll("\\", "/").replace(/\/+$/, "");
724
+ const prefix = routesDir === "" ? "" : `${routesDir}/`;
725
+ return (manifest.files[`${prefix}middleware.ts`] !== undefined ||
726
+ manifest.files[`${prefix}middleware.mreact.ts`] !== undefined);
727
+ }
693
728
  function prerenderedResponse(prerenderedRoutes, path, method, isNavigation) {
694
729
  if (method !== "GET" && method !== "HEAD") {
695
730
  return undefined;
696
731
  }
697
732
  const prerendered = prerenderedRoutes?.[path];
698
- if (prerendered === undefined) {
733
+ if (!isCurrentPrerenderedRoute(prerendered)) {
699
734
  return undefined;
700
735
  }
701
736
  if (isNavigation && !prerendered.html.includes("data-mreact-route-id")) {
@@ -711,7 +746,7 @@ function cloudflareRouteRequiresModule(route, manifest) {
711
746
  route.kind === "server" ||
712
747
  (route.kind === "page" &&
713
748
  (route.segments.some((segment) => segment.kind !== "static") ||
714
- manifest.prerenderedRoutes?.[route.path] === undefined)));
749
+ !isCurrentPrerenderedRoute(manifest.prerenderedRoutes?.[route.path]))));
715
750
  }
716
751
  function cloudflareRouteGlobKeyMatchesRoute(key, routeFile) {
717
752
  const normalizedKey = normalizeCloudflareRouteModulePath(key);
@@ -722,6 +757,18 @@ function normalizeCloudflareRouteModulePath(path) {
722
757
  const withoutPrefix = path.replace(/\\/g, "/").replace(/^\.\//, "").replace(/^\/+/, "");
723
758
  return withoutPrefix.replace(/\.(?:mjs|js|ts|tsx)$/, "");
724
759
  }
760
+ // The manifest is the same object across requests, so a rewrite-heavy app pays
761
+ // for the specificity sort once rather than on every rewritten request.
762
+ const sortedRoutesByManifest = new WeakMap();
763
+ function sortedCloudflareRoutes(manifest) {
764
+ const cached = sortedRoutesByManifest.get(manifest);
765
+ if (cached !== undefined) {
766
+ return cached;
767
+ }
768
+ const sorted = [...manifest.routes].sort(compareCloudflareRoutes);
769
+ sortedRoutesByManifest.set(manifest, sorted);
770
+ return sorted;
771
+ }
725
772
  function matchCloudflareRoute(routes, pathname) {
726
773
  const normalizedPath = normalizeRoutePath(pathname);
727
774
  const pathSegments = normalizedPath === "/" ? [] : normalizedPath.slice(1).split("/");