@nifrajs/web 5.0.0 → 5.2.0
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/CHANGELOG.md +2970 -0
- package/README.md +8 -0
- package/dist/build-plan.d.ts +7 -0
- package/dist/build-plan.d.ts.map +1 -1
- package/dist/build-plan.js +19 -0
- package/dist/build-plan.js.map +1 -1
- package/dist/build-vite.d.ts +1 -0
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +51 -3
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +12 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +43 -6
- package/dist/build.js.map +1 -1
- package/dist/client.d.ts +7 -6
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -22
- package/dist/client.js.map +1 -1
- package/dist/dev-port.d.ts +3 -2
- package/dist/dev-port.d.ts.map +1 -1
- package/dist/dev-port.js +2 -6
- package/dist/dev-port.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/codegen.d.ts +6 -0
- package/dist/internal/codegen.d.ts.map +1 -1
- package/dist/internal/codegen.js +23 -5
- package/dist/internal/codegen.js.map +1 -1
- package/dist/internal/copy-split.d.ts +27 -0
- package/dist/internal/copy-split.d.ts.map +1 -0
- package/dist/internal/copy-split.js +173 -0
- package/dist/internal/copy-split.js.map +1 -0
- package/dist/internal/package-entries.d.ts +34 -0
- package/dist/internal/package-entries.d.ts.map +1 -0
- package/dist/internal/package-entries.js +324 -0
- package/dist/internal/package-entries.js.map +1 -0
- package/dist/internal/page-execution.d.ts +19 -1
- package/dist/internal/page-execution.d.ts.map +1 -1
- package/dist/internal/page-execution.js +123 -14
- package/dist/internal/page-execution.js.map +1 -1
- package/dist/internal/parity.d.ts.map +1 -1
- package/dist/internal/parity.js +15 -2
- package/dist/internal/parity.js.map +1 -1
- package/dist/internal/private-env.d.ts +8 -0
- package/dist/internal/private-env.d.ts.map +1 -1
- package/dist/internal/private-env.js +25 -10
- package/dist/internal/private-env.js.map +1 -1
- package/dist/internal/render-document.d.ts +15 -46
- package/dist/internal/render-document.d.ts.map +1 -1
- package/dist/internal/render-document.js +59 -62
- package/dist/internal/render-document.js.map +1 -1
- package/dist/internal/route-path.d.ts +6 -0
- package/dist/internal/route-path.d.ts.map +1 -1
- package/dist/internal/route-path.js +11 -0
- package/dist/internal/route-path.js.map +1 -1
- package/dist/internal/secret-scan.d.ts.map +1 -1
- package/dist/internal/secret-scan.js +103 -1
- package/dist/internal/secret-scan.js.map +1 -1
- package/dist/internal/typescript-api.d.ts +4 -0
- package/dist/internal/typescript-api.d.ts.map +1 -0
- package/dist/internal/typescript-api.js +8 -0
- package/dist/internal/typescript-api.js.map +1 -0
- package/dist/internal/vite-plugin-compat.d.ts +28 -0
- package/dist/internal/vite-plugin-compat.d.ts.map +1 -0
- package/dist/internal/vite-plugin-compat.js +82 -0
- package/dist/internal/vite-plugin-compat.js.map +1 -0
- package/dist/internal/web-app.d.ts +38 -2
- package/dist/internal/web-app.d.ts.map +1 -1
- package/dist/internal/web-app.js +30 -3
- package/dist/internal/web-app.js.map +1 -1
- package/dist/internal/without-query.d.ts +4 -0
- package/dist/internal/without-query.d.ts.map +1 -0
- package/dist/internal/without-query.js +9 -0
- package/dist/internal/without-query.js.map +1 -0
- package/dist/internal/zone-graph.d.ts.map +1 -1
- package/dist/internal/zone-graph.js +17 -6
- package/dist/internal/zone-graph.js.map +1 -1
- package/dist/isr.d.ts +1 -1
- package/dist/isr.d.ts.map +1 -1
- package/dist/isr.js +15 -2
- package/dist/isr.js.map +1 -1
- package/dist/manifest.d.ts +9 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +1 -0
- package/dist/manifest.js.map +1 -1
- package/dist/plugins/import-glob.d.ts +20 -0
- package/dist/plugins/import-glob.d.ts.map +1 -0
- package/dist/plugins/import-glob.js +401 -0
- package/dist/plugins/import-glob.js.map +1 -0
- package/dist/plugins/kit.d.ts +11 -0
- package/dist/plugins/kit.d.ts.map +1 -1
- package/dist/plugins/kit.js +32 -0
- package/dist/plugins/kit.js.map +1 -1
- package/dist/plugins/stylex.d.ts.map +1 -1
- package/dist/plugins/stylex.js +2 -2
- package/dist/plugins/stylex.js.map +1 -1
- package/dist/plugins/vite-leak-guard.d.ts +6 -0
- package/dist/plugins/vite-leak-guard.d.ts.map +1 -1
- package/dist/plugins/vite-leak-guard.js +80 -7
- package/dist/plugins/vite-leak-guard.js.map +1 -1
- package/dist/plugins/vite-zone-guard.d.ts.map +1 -1
- package/dist/plugins/vite-zone-guard.js +17 -21
- package/dist/plugins/vite-zone-guard.js.map +1 -1
- package/dist/plugins/zone-guard.d.ts.map +1 -1
- package/dist/plugins/zone-guard.js +44 -3
- package/dist/plugins/zone-guard.js.map +1 -1
- package/dist/prerender.d.ts +5 -1
- package/dist/prerender.d.ts.map +1 -1
- package/dist/prerender.js +41 -19
- package/dist/prerender.js.map +1 -1
- package/dist/render-seam.d.ts +60 -2
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js +33 -0
- package/dist/render-seam.js.map +1 -1
- package/dist/router.d.ts +3 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +13 -9
- package/dist/router.js.map +1 -1
- package/dist/seo.d.ts +49 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +48 -0
- package/dist/seo.js.map +1 -0
- package/dist/server-components/typescript.d.ts.map +1 -1
- package/dist/server-components/typescript.js +2 -7
- package/dist/server-components/typescript.js.map +1 -1
- package/dist/vite.d.ts +1 -28
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +3 -69
- package/dist/vite.js.map +1 -1
- package/dist/zones.d.ts +30 -8
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +185 -46
- package/dist/zones.js.map +1 -1
- package/package.json +10 -4
- package/src/build-plan.ts +21 -0
- package/src/build-vite.ts +60 -3
- package/src/build.ts +57 -4
- package/src/client.ts +42 -22
- package/src/dev-port.ts +4 -10
- package/src/index.ts +8 -4
- package/src/internal/codegen.ts +32 -3
- package/src/internal/copy-split.ts +220 -0
- package/src/internal/package-entries.ts +331 -0
- package/src/internal/page-execution.ts +150 -13
- package/src/internal/parity.ts +15 -2
- package/src/internal/private-env.ts +27 -13
- package/src/internal/render-document.ts +100 -81
- package/src/internal/route-path.ts +16 -0
- package/src/internal/secret-scan.ts +101 -1
- package/src/internal/typescript-api.ts +11 -0
- package/src/internal/vite-plugin-compat.ts +81 -0
- package/src/internal/web-app.ts +71 -6
- package/src/internal/without-query.ts +8 -0
- package/src/internal/zone-graph.ts +19 -6
- package/src/isr.ts +13 -2
- package/src/manifest.ts +10 -0
- package/src/plugins/import-glob.ts +392 -0
- package/src/plugins/kit.ts +36 -0
- package/src/plugins/stylex.ts +2 -1
- package/src/plugins/vite-leak-guard.ts +99 -7
- package/src/plugins/vite-zone-guard.ts +21 -19
- package/src/plugins/zone-guard.ts +41 -2
- package/src/prerender.ts +39 -18
- package/src/render-seam.ts +88 -2
- package/src/router.ts +16 -11
- package/src/seo.ts +68 -0
- package/src/server-components/typescript.ts +2 -10
- package/src/vite.ts +3 -81
- package/src/zones.ts +237 -52
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-entries.js","sourceRoot":"","sources":["../../src/internal/package-entries.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { CspPolicy } from "../csp.js";
|
|
|
4
4
|
import { type CssLoadingMode } from "../css-contract.js";
|
|
5
5
|
import type { Manifest, RouteEntry } from "../manifest.js";
|
|
6
6
|
import type { NonceResolver } from "../nonce.js";
|
|
7
|
-
import type { RenderAdapter } from "../render-seam.js";
|
|
7
|
+
import type { PageLocales, RenderAdapter } from "../render-seam.js";
|
|
8
8
|
import { type RenderedPage } from "./render-document.js";
|
|
9
9
|
import { type CoreResponseControls } from "./response-controls.js";
|
|
10
10
|
export type { NonceResolver } from "../nonce.js";
|
|
@@ -20,6 +20,20 @@ export interface PageRouteContext<Env = unknown> {
|
|
|
20
20
|
readonly clientIp?: string | undefined;
|
|
21
21
|
readonly waitUntil?: (promise: Promise<unknown>) => void;
|
|
22
22
|
}
|
|
23
|
+
/** The app's locale routing, as page execution reads it. */
|
|
24
|
+
export interface PageI18n {
|
|
25
|
+
readonly locales: PageLocales;
|
|
26
|
+
/** The served locale key a `pathname + search` is in. */
|
|
27
|
+
localeOf(path: string): string;
|
|
28
|
+
/** The answer for a `[lang]` / `[[lang]]` segment's value (`undefined` when an optional one is
|
|
29
|
+
* absent), as `@nifrajs/i18n/routing`'s `matchSegment` gives it. */
|
|
30
|
+
matchSegment(value: string | undefined, pathname: string): {
|
|
31
|
+
readonly kind: "ok" | "not-found";
|
|
32
|
+
} | {
|
|
33
|
+
readonly kind: "redirect";
|
|
34
|
+
readonly location: string;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
23
37
|
export interface PageExecutionOptions<Env = unknown> {
|
|
24
38
|
readonly serverComponents?: import("../server-components/types.js").ServerComponentRuntime;
|
|
25
39
|
readonly rerenderOwnerGET?: (request: Request, context: PageRouteContext<Env>) => Promise<Response>;
|
|
@@ -36,6 +50,10 @@ export interface PageExecutionOptions<Env = unknown> {
|
|
|
36
50
|
readonly prerenderedPaths?: readonly string[];
|
|
37
51
|
/** Where pages fetch {@link prerenderedPaths} from when the list is too large to inline. */
|
|
38
52
|
readonly prerenderedListUrl?: string;
|
|
53
|
+
/** Locale key -> copy chunk URL, from a build that split copy tables by locale. */
|
|
54
|
+
readonly copyChunks?: Readonly<Record<string, string>>;
|
|
55
|
+
/** The app's locale routing: each document's locale, and the check on a `[lang]` segment. */
|
|
56
|
+
readonly i18n?: PageI18n;
|
|
39
57
|
readonly staticFallbacks?: Readonly<Record<string, "ssr" | "404">>;
|
|
40
58
|
readonly staticBoundaryCache?: StaticBoundaryCache;
|
|
41
59
|
/** Per-request CSP nonce for framework-owned executable document scripts. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-execution.d.ts","sourceRoot":"","sources":["../../src/internal/page-execution.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"page-execution.d.ts","sourceRoot":"","sources":["../../src/internal/page-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NIFRA_BACKEND_BIND_PLATFORM, NIFRA_PLATFORM_CLIENT_IP_DERIVED, } from "@nifrajs/core/mount";
|
|
2
|
-
import { status as statusResult } from "@nifrajs/core/server";
|
|
2
|
+
import { isSameOriginForm, status as statusResult, } from "@nifrajs/core/server";
|
|
3
3
|
import { boundaryDescriptors, resolveStaticBoundaries, startDynamicBoundaries, } from "../boundary.js";
|
|
4
4
|
import { DEFAULT_CSS_LOADING, normalizeCssLoading } from "../css-contract.js";
|
|
5
5
|
import { defer, ndjsonStream, prepareDeferred } from "../deferred.js";
|
|
@@ -8,7 +8,7 @@ import { routeTags } from "../isr.js";
|
|
|
8
8
|
import { createMatcher, DATA_HEADER, NAV_FROM_HEADER, REDIRECT_HEADER, RETAIN_HEADER, REVALIDATE_HEADER, STATUS_HEADER, } from "../router.js";
|
|
9
9
|
import { searchOf, searchOfChain } from "../search.js";
|
|
10
10
|
import { mergeHeads, resolveChainMeta } from "./head-merge.js";
|
|
11
|
-
import { EMPTY_RETAIN, isControlFlow, isResponseResult, isStatusSignal, layoutErrorId, renderPageResult, STATUS_SIGNAL, STATUS_TEXT, scopeParams, tagLayoutError, withDuplicateInstanceHint, } from "./render-document.js";
|
|
11
|
+
import { EMPTY_RETAIN, isControlFlow, isResponseResult, isStatusSignal, layoutErrorId, notFound, redirect, renderPageResult, STATUS_SIGNAL, STATUS_TEXT, scopeParams, tagLayoutError, withDuplicateInstanceHint, } from "./render-document.js";
|
|
12
12
|
import { urlPartsFor } from "./request-url.js";
|
|
13
13
|
import { ACTION_SCOPE, DATA_RESPONSE_HEADERS, MIDDLEWARE_SCOPE, PAGE_SCOPE, PageResponseControls, PRIVATE_NO_STORE, PRIVATE_PAGE_HEADERS, privateOutcome, varyOnDataHeader, } from "./response-controls.js";
|
|
14
14
|
/** The page slot of an `ssr = false` route with no `HydrateFallback`: a component that renders nothing. */
|
|
@@ -92,10 +92,15 @@ function appTarget(location, requestUrl) {
|
|
|
92
92
|
catch {
|
|
93
93
|
return location; // the browser fails on it the same way when it loads it
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
if (target.origin !== new URL(requestUrl).origin)
|
|
96
|
+
return location;
|
|
97
|
+
// A path starting `//` (from `/.//host`) is a protocol-relative URL to whoever resolves it next.
|
|
98
|
+
return target.pathname.startsWith("//")
|
|
99
|
+
? target.href
|
|
100
|
+
: target.pathname + target.search + target.hash;
|
|
98
101
|
}
|
|
102
|
+
// The route directories whose first segment names the locale.
|
|
103
|
+
const LOCALE_SEGMENTS = new Set(["[lang]", "[[lang]]"]);
|
|
99
104
|
/**
|
|
100
105
|
* Own the page request program behind one private seam.
|
|
101
106
|
*
|
|
@@ -121,6 +126,26 @@ export function createPageRequestExecutor(options) {
|
|
|
121
126
|
const prerenderedHandover = options.prerenderedListUrl === undefined
|
|
122
127
|
? { prerenderedPaths: options.prerenderedPaths ?? [] }
|
|
123
128
|
: { prerenderedListUrl: options.prerenderedListUrl };
|
|
129
|
+
const copyOption = options.copyChunks === undefined ? {} : { copyChunks: options.copyChunks };
|
|
130
|
+
const { i18n } = options;
|
|
131
|
+
const pageLocales = new Map(i18n?.locales.locales.map((locale) => [locale.key, locale]));
|
|
132
|
+
/** The request's locale for a document, with the served locales the client names locales from. */
|
|
133
|
+
const localeOption = (req) => {
|
|
134
|
+
if (i18n === undefined)
|
|
135
|
+
return {};
|
|
136
|
+
const locale = pageLocales.get(i18n.localeOf(pathOf(req)));
|
|
137
|
+
return locale === undefined ? { locales: i18n.locales } : { locale, locales: i18n.locales };
|
|
138
|
+
};
|
|
139
|
+
/** Whether a route sits under a `[lang]` or `[[lang]]` directory, which the locale routing checks. */
|
|
140
|
+
const localeGuarded = (route) => {
|
|
141
|
+
if (i18n === undefined)
|
|
142
|
+
return false;
|
|
143
|
+
for (const segment of route.id.split("/")) {
|
|
144
|
+
if (!(segment.startsWith("(") && segment.endsWith(")")))
|
|
145
|
+
return LOCALE_SEGMENTS.has(segment);
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
};
|
|
124
149
|
const matchManifestRoute = createMatcher(manifest.routes.map((route) => ({ routeId: route.id, pattern: route.pattern })));
|
|
125
150
|
const routeById = new Map(manifest.routes.map((route) => [route.id, route]));
|
|
126
151
|
// A nested `_404` answers an unmatched URL from inside the catch-all, never as a route of its own:
|
|
@@ -213,6 +238,23 @@ export function createPageRequestExecutor(options) {
|
|
|
213
238
|
throw tagLayoutError(value, route.layoutIds[index]);
|
|
214
239
|
return value;
|
|
215
240
|
};
|
|
241
|
+
// Development only. A layout loader that refuses access reads as a guard, and is not one: a client
|
|
242
|
+
// navigation can skip it and an action below it runs without it.
|
|
243
|
+
const warnsUngatedRefusal = typeof process !== "undefined" && process.env?.NODE_ENV === "development";
|
|
244
|
+
const warnedUngated = new Set();
|
|
245
|
+
const warnUngatedRefusal = (layoutId, outcome) => {
|
|
246
|
+
if (warnedUngated.has(layoutId))
|
|
247
|
+
return;
|
|
248
|
+
// notFound() and gone() say the record is missing, which a layout may decide without guarding.
|
|
249
|
+
const refusesAccess = isStatusSignal(outcome)
|
|
250
|
+
? outcome.status === 401 || outcome.status === 403
|
|
251
|
+
: isControlFlow(outcome);
|
|
252
|
+
if (!refusesAccess)
|
|
253
|
+
return;
|
|
254
|
+
warnedUngated.add(layoutId);
|
|
255
|
+
const file = manifest.layouts?.[layoutId]?.file ?? layoutId;
|
|
256
|
+
console.warn(`[nifra/web] the loader in "${file}" refused a request, but that layout is not a gate. A client navigation that keeps the layout on screen can skip its loader, and an action below it runs without it, so it does not protect the pages under it. Export \`gate = true\` from that file, or move the check into middleware. (Shown in development only.)`);
|
|
257
|
+
};
|
|
216
258
|
/**
|
|
217
259
|
* Run layout loaders, awaiting gates before starting the page loader and retaining only safe data.
|
|
218
260
|
* `gated` carries gates that already ran for this request, so none runs twice.
|
|
@@ -263,18 +305,31 @@ export function createPageRequestExecutor(options) {
|
|
|
263
305
|
// assimilation: property-presence and prototype probes are unsafe for proxies.
|
|
264
306
|
if (value !== null && (typeof value === "object" || typeof value === "function")) {
|
|
265
307
|
pending.push((async () => {
|
|
308
|
+
let settled;
|
|
266
309
|
try {
|
|
267
|
-
|
|
310
|
+
settled = await value;
|
|
268
311
|
}
|
|
269
312
|
catch (err) {
|
|
313
|
+
if (warnsUngatedRefusal)
|
|
314
|
+
warnUngatedRefusal(layoutId, err);
|
|
270
315
|
throw tagLayoutError(err, layoutId);
|
|
271
316
|
}
|
|
317
|
+
// A returned redirect or Response refuses exactly as a thrown one: kept as layout data,
|
|
318
|
+
// it would ship beside the page loader's data.
|
|
319
|
+
if (isControlFlow(settled)) {
|
|
320
|
+
if (warnsUngatedRefusal)
|
|
321
|
+
warnUngatedRefusal(layoutId, settled);
|
|
322
|
+
throw tagLayoutError(settled, layoutId);
|
|
323
|
+
}
|
|
324
|
+
results[index] = settled;
|
|
272
325
|
})());
|
|
273
326
|
}
|
|
274
327
|
else
|
|
275
328
|
results[index] = value;
|
|
276
329
|
}
|
|
277
330
|
catch (err) {
|
|
331
|
+
if (warnsUngatedRefusal)
|
|
332
|
+
warnUngatedRefusal(layoutId, err);
|
|
278
333
|
// Preserve a synchronous throw as a pending layout failure, just like the async lane.
|
|
279
334
|
pending.push(Promise.reject(tagLayoutError(err, layoutId)));
|
|
280
335
|
}
|
|
@@ -304,6 +359,22 @@ export function createPageRequestExecutor(options) {
|
|
|
304
359
|
};
|
|
305
360
|
/** Outermost first; a failure carries its directory so the nearest `_error` above it renders. */
|
|
306
361
|
const runMiddleware = async (route, ctx, controls) => {
|
|
362
|
+
if (i18n !== undefined && localeGuarded(route)) {
|
|
363
|
+
// Before any app middleware, as a root `_middleware` would run: an unserved locale, or a page
|
|
364
|
+
// missing from it, never reaches the app's code.
|
|
365
|
+
const match = i18n.matchSegment(ctx.params.lang, pathOf(ctx.request));
|
|
366
|
+
if (match.kind === "redirect") {
|
|
367
|
+
throw tagLayoutError(redirect(match.location, { status: 308 }), "_layout");
|
|
368
|
+
}
|
|
369
|
+
if (match.kind === "not-found") {
|
|
370
|
+
try {
|
|
371
|
+
notFound();
|
|
372
|
+
}
|
|
373
|
+
catch (signal) {
|
|
374
|
+
throw tagLayoutError(signal, "_layout");
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
307
378
|
const ids = route.middlewareIds ?? [];
|
|
308
379
|
for (let i = 0; i < ids.length; i++) {
|
|
309
380
|
const id = ids[i];
|
|
@@ -484,6 +555,7 @@ export function createPageRequestExecutor(options) {
|
|
|
484
555
|
chain: components,
|
|
485
556
|
data,
|
|
486
557
|
...(wrapped === undefined ? {} : { head: wrapped.head }),
|
|
558
|
+
...localeOption(req),
|
|
487
559
|
clientEntry,
|
|
488
560
|
routeId: errorId,
|
|
489
561
|
status: 500,
|
|
@@ -620,6 +692,8 @@ export function createPageRequestExecutor(options) {
|
|
|
620
692
|
// The build keys stylesheets by route, so a page inside the root layout links the whole-app one.
|
|
621
693
|
...(chain === undefined ? stylesOf(routeId) : stylesFrom(options.styles)),
|
|
622
694
|
...prerenderedHandover,
|
|
695
|
+
...copyOption,
|
|
696
|
+
...localeOption(req),
|
|
623
697
|
...titleOption,
|
|
624
698
|
};
|
|
625
699
|
if (chain === undefined)
|
|
@@ -736,6 +810,8 @@ export function createPageRequestExecutor(options) {
|
|
|
736
810
|
...preloadOf(route.id),
|
|
737
811
|
...stylesOf(route.id),
|
|
738
812
|
...prerenderedHandover,
|
|
813
|
+
...copyOption,
|
|
814
|
+
...localeOption(req),
|
|
739
815
|
...(responseHeaders === undefined ? {} : { headers: responseHeaders }),
|
|
740
816
|
// A response that sets a cookie is one visitor's: it never advertises ISR freshness.
|
|
741
817
|
...(mod.revalidate !== undefined && !personalized && options.cacheChannel?.enabled === true
|
|
@@ -830,6 +906,7 @@ export function createPageRequestExecutor(options) {
|
|
|
830
906
|
matchChain: matchChainOf(page.layoutIds, layoutModules, id, mod),
|
|
831
907
|
status: 404,
|
|
832
908
|
hydrate: false,
|
|
909
|
+
...localeOption(req),
|
|
833
910
|
...(layoutData !== undefined ? { layoutData } : {}),
|
|
834
911
|
...stylesOf(id),
|
|
835
912
|
...(headers === undefined ? {} : { headers }),
|
|
@@ -897,10 +974,11 @@ export function createPageRequestExecutor(options) {
|
|
|
897
974
|
return {
|
|
898
975
|
get: (route) => {
|
|
899
976
|
const is404Fallback = options.staticFallbacks?.[route.pattern] === "404";
|
|
900
|
-
|
|
977
|
+
// One shell per locale: `<html lang>` is in it, and one route serves every locale.
|
|
978
|
+
let assemblySlots = new Map();
|
|
901
979
|
let assemblySlotMod;
|
|
902
980
|
let assemblySlotLayouts;
|
|
903
|
-
const assemblyCacheFor = (mod, layouts) => {
|
|
981
|
+
const assemblyCacheFor = (mod, layouts, req) => {
|
|
904
982
|
if (typeof mod.meta === "function")
|
|
905
983
|
return undefined;
|
|
906
984
|
for (const layout of layouts)
|
|
@@ -910,11 +988,17 @@ export function createPageRequestExecutor(options) {
|
|
|
910
988
|
assemblySlotLayouts.length === layouts.length &&
|
|
911
989
|
assemblySlotLayouts.every((layout, index) => layout === layouts[index]);
|
|
912
990
|
if (assemblySlotMod !== mod || !layoutsUnchanged) {
|
|
913
|
-
|
|
991
|
+
assemblySlots = new Map();
|
|
914
992
|
assemblySlotMod = mod;
|
|
915
993
|
assemblySlotLayouts = layouts;
|
|
916
994
|
}
|
|
917
|
-
|
|
995
|
+
const key = i18n === undefined ? "" : i18n.localeOf(pathOf(req));
|
|
996
|
+
let slot = assemblySlots.get(key);
|
|
997
|
+
if (slot === undefined) {
|
|
998
|
+
slot = {};
|
|
999
|
+
assemblySlots.set(key, slot);
|
|
1000
|
+
}
|
|
1001
|
+
return slot;
|
|
918
1002
|
};
|
|
919
1003
|
return withResponseControls(async (c, controls) => {
|
|
920
1004
|
const componentRuntime = options.serverComponents;
|
|
@@ -956,8 +1040,9 @@ export function createPageRequestExecutor(options) {
|
|
|
956
1040
|
search: loaderSearch(mod.searchSchema, c.req),
|
|
957
1041
|
set: controls.scope(PAGE_SCOPE),
|
|
958
1042
|
};
|
|
959
|
-
if (route.middlewareIds !== undefined)
|
|
1043
|
+
if (route.middlewareIds !== undefined || localeGuarded(route)) {
|
|
960
1044
|
await runMiddleware(route, ctx, controls);
|
|
1045
|
+
}
|
|
961
1046
|
run = await runLayoutChain(route, ctx, controls, componentOwner ? undefined : retainContextOf(c.req));
|
|
962
1047
|
layoutModules = run.modules;
|
|
963
1048
|
layoutRetained = run.retained;
|
|
@@ -1049,7 +1134,7 @@ export function createPageRequestExecutor(options) {
|
|
|
1049
1134
|
if (nested !== undefined)
|
|
1050
1135
|
return nested;
|
|
1051
1136
|
}
|
|
1052
|
-
return handleDataOrDocument(c.req, c.env, route, c.params, mod, data, layoutData, layoutModules ?? (await loadLayoutModules(route)), layoutRetained, boundaryStates, layoutModules === undefined ? undefined : assemblyCacheFor(mod, layoutModules), responseHeaders, controls.personalized, componentState);
|
|
1137
|
+
return handleDataOrDocument(c.req, c.env, route, c.params, mod, data, layoutData, layoutModules ?? (await loadLayoutModules(route)), layoutRetained, boundaryStates, layoutModules === undefined ? undefined : assemblyCacheFor(mod, layoutModules, c.req), responseHeaders, controls.personalized, componentState);
|
|
1053
1138
|
});
|
|
1054
1139
|
},
|
|
1055
1140
|
post: (route) => withResponseControls(async (c, controls) => {
|
|
@@ -1063,6 +1148,28 @@ export function createPageRequestExecutor(options) {
|
|
|
1063
1148
|
headers: { allow: "GET", "content-type": "text/plain; charset=utf-8" },
|
|
1064
1149
|
});
|
|
1065
1150
|
}
|
|
1151
|
+
const isDataRequest = c.req.headers.get(DATA_HEADER) !== null;
|
|
1152
|
+
// Before anything runs: a form posts cross-site without a preflight and carries the visitor's
|
|
1153
|
+
// cookies, so an action is a CSRF target unless its route names the origins it accepts.
|
|
1154
|
+
const origin = c.req.headers.get("origin");
|
|
1155
|
+
const allowedOrigins = mod.allowedOrigins;
|
|
1156
|
+
const allowed = allowedOrigins === undefined
|
|
1157
|
+
? origin === null ||
|
|
1158
|
+
isSameOriginForm(origin, c.req.headers.get("sec-fetch-site"), c.req)
|
|
1159
|
+
: typeof allowedOrigins === "function"
|
|
1160
|
+
? allowedOrigins(origin) === true
|
|
1161
|
+
: origin !== null && allowedOrigins.includes(origin);
|
|
1162
|
+
if (!allowed) {
|
|
1163
|
+
return isDataRequest
|
|
1164
|
+
? Response.json({ ok: false, error: "forbidden_origin" }, { status: 403, headers: { "cache-control": PRIVATE_NO_STORE } })
|
|
1165
|
+
: new Response("Forbidden", {
|
|
1166
|
+
status: 403,
|
|
1167
|
+
headers: {
|
|
1168
|
+
"content-type": "text/plain; charset=utf-8",
|
|
1169
|
+
"cache-control": PRIVATE_NO_STORE,
|
|
1170
|
+
},
|
|
1171
|
+
});
|
|
1172
|
+
}
|
|
1066
1173
|
const requestApi = apiFor(c);
|
|
1067
1174
|
const actionContext = {
|
|
1068
1175
|
params: c.params,
|
|
@@ -1074,12 +1181,12 @@ export function createPageRequestExecutor(options) {
|
|
|
1074
1181
|
search: loaderSearch(mod.searchSchema, c.req),
|
|
1075
1182
|
set: controls.scope(ACTION_SCOPE),
|
|
1076
1183
|
};
|
|
1077
|
-
const isDataRequest = c.req.headers.get(DATA_HEADER) !== null;
|
|
1078
1184
|
let gated;
|
|
1079
1185
|
let result;
|
|
1080
1186
|
try {
|
|
1081
|
-
if (route.middlewareIds !== undefined)
|
|
1187
|
+
if (route.middlewareIds !== undefined || localeGuarded(route)) {
|
|
1082
1188
|
await runMiddleware(route, actionContext, controls);
|
|
1189
|
+
}
|
|
1083
1190
|
gated = await runLayoutGates(route, actionContext, controls);
|
|
1084
1191
|
result = await mod.action(actionContext);
|
|
1085
1192
|
}
|
|
@@ -1239,6 +1346,8 @@ export function createPageRequestExecutor(options) {
|
|
|
1239
1346
|
...preloadOf(route.id),
|
|
1240
1347
|
...stylesOf(route.id),
|
|
1241
1348
|
...prerenderedHandover,
|
|
1349
|
+
...copyOption,
|
|
1350
|
+
...localeOption(c.req),
|
|
1242
1351
|
...(responseHeaders === undefined ? {} : { headers: responseHeaders }),
|
|
1243
1352
|
...(nonce === undefined ? {} : { nonce }),
|
|
1244
1353
|
...cspOption,
|