@nifrajs/web 2.14.1 → 3.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/dist/boundary.d.ts +158 -0
- package/dist/boundary.d.ts.map +1 -0
- package/dist/boundary.js +237 -0
- package/dist/boundary.js.map +1 -0
- package/dist/build-plan.d.ts +228 -0
- package/dist/build-plan.d.ts.map +1 -0
- package/dist/build-plan.js +514 -0
- package/dist/build-plan.js.map +1 -0
- package/dist/build-vite.d.ts +2 -1
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +5 -3
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +2 -197
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +92 -515
- package/dist/build.js.map +1 -1
- package/dist/chunk-names.d.ts.map +1 -1
- package/dist/chunk-names.js +3 -2
- package/dist/chunk-names.js.map +1 -1
- package/dist/dev-ssr-graph.d.ts.map +1 -1
- package/dist/dev-ssr-graph.js +63 -28
- package/dist/dev-ssr-graph.js.map +1 -1
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +9 -2
- package/dist/diagnostic.js.map +1 -1
- package/dist/fonts-google.d.ts.map +1 -1
- package/dist/fonts-google.js +3 -1
- package/dist/fonts-google.js.map +1 -1
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +2 -1
- package/dist/fs.js.map +1 -1
- package/dist/index.d.ts +16 -589
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -1824
- package/dist/index.js.map +1 -1
- package/dist/internal/codegen.d.ts +68 -0
- package/dist/internal/codegen.d.ts.map +1 -0
- package/dist/internal/codegen.js +317 -0
- package/dist/internal/codegen.js.map +1 -0
- package/dist/internal/fetcher-runtime.d.ts +19 -0
- package/dist/internal/fetcher-runtime.d.ts.map +1 -0
- package/dist/internal/fetcher-runtime.js +26 -0
- package/dist/internal/fetcher-runtime.js.map +1 -0
- package/dist/internal/head-merge.d.ts +2 -0
- package/dist/internal/head-merge.d.ts.map +1 -1
- package/dist/internal/head-merge.js +17 -1
- package/dist/internal/head-merge.js.map +1 -1
- package/dist/internal/identity-policy.d.ts +51 -0
- package/dist/internal/identity-policy.d.ts.map +1 -0
- package/dist/internal/identity-policy.js +67 -0
- package/dist/internal/identity-policy.js.map +1 -0
- package/dist/internal/parity.d.ts +104 -8
- package/dist/internal/parity.d.ts.map +1 -1
- package/dist/internal/parity.js +472 -56
- package/dist/internal/parity.js.map +1 -1
- package/dist/internal/query-runtime.d.ts +8 -0
- package/dist/internal/query-runtime.d.ts.map +1 -0
- package/dist/internal/query-runtime.js +29 -0
- package/dist/internal/query-runtime.js.map +1 -0
- package/dist/internal/render-document.d.ts +372 -0
- package/dist/internal/render-document.d.ts.map +1 -0
- package/dist/internal/render-document.js +744 -0
- package/dist/internal/render-document.js.map +1 -0
- package/dist/internal/runtime-contract.d.ts +48 -0
- package/dist/internal/runtime-contract.d.ts.map +1 -0
- package/dist/internal/runtime-contract.js +27 -0
- package/dist/internal/runtime-contract.js.map +1 -0
- package/dist/internal/web-app.d.ts +171 -0
- package/dist/internal/web-app.d.ts.map +1 -0
- package/dist/internal/web-app.js +844 -0
- package/dist/internal/web-app.js.map +1 -0
- package/dist/islands.d.ts +50 -2
- package/dist/islands.d.ts.map +1 -1
- package/dist/islands.js +96 -36
- package/dist/islands.js.map +1 -1
- package/dist/manifest.d.ts +41 -6
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/module-graph.d.ts.map +1 -1
- package/dist/module-graph.js +22 -9
- package/dist/module-graph.js.map +1 -1
- package/dist/nano.d.ts +125 -0
- package/dist/nano.d.ts.map +1 -0
- package/dist/nano.js +190 -0
- package/dist/nano.js.map +1 -0
- package/dist/plugins/css-modules.js +2 -2
- package/dist/plugins/css-modules.js.map +1 -1
- package/dist/plugins/kit.d.ts +12 -0
- package/dist/plugins/kit.d.ts.map +1 -1
- package/dist/plugins/kit.js +62 -12
- package/dist/plugins/kit.js.map +1 -1
- package/dist/plugins/postcss.js +2 -2
- package/dist/plugins/postcss.js.map +1 -1
- package/dist/plugins/scss.js +2 -2
- package/dist/plugins/scss.js.map +1 -1
- package/dist/plugins/stylex.d.ts +70 -0
- package/dist/plugins/stylex.d.ts.map +1 -0
- package/dist/plugins/stylex.js +166 -0
- package/dist/plugins/stylex.js.map +1 -0
- package/dist/plugins/svg.js +2 -2
- package/dist/plugins/svg.js.map +1 -1
- package/dist/render-seam.d.ts +5 -0
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js +10 -0
- package/dist/render-seam.js.map +1 -1
- package/dist/router.d.ts +11 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +254 -47
- package/dist/router.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +34 -16
- package/dist/vite.js.map +1 -1
- package/package.json +49 -2
- package/src/boundary.ts +407 -0
- package/src/build-plan.ts +741 -0
- package/src/build-vite.ts +6 -7
- package/src/build.ts +120 -730
- package/src/chunk-names.ts +3 -2
- package/src/dev-ssr-graph.ts +63 -28
- package/src/diagnostic.ts +14 -2
- package/src/fonts-google.ts +3 -1
- package/src/fs.ts +2 -1
- package/src/index.ts +107 -2553
- package/src/internal/codegen.ts +400 -0
- package/src/internal/fetcher-runtime.ts +36 -0
- package/src/internal/head-merge.ts +19 -1
- package/src/internal/identity-policy.ts +94 -0
- package/src/internal/parity.ts +603 -71
- package/src/internal/query-runtime.ts +31 -0
- package/src/internal/render-document.ts +1116 -0
- package/src/internal/runtime-contract.ts +54 -0
- package/src/internal/web-app.ts +1114 -0
- package/src/islands.ts +106 -40
- package/src/manifest.ts +50 -3
- package/src/module-graph.ts +23 -9
- package/src/nano.ts +246 -0
- package/src/plugins/css-modules.ts +2 -2
- package/src/plugins/kit.ts +65 -12
- package/src/plugins/postcss.ts +2 -2
- package/src/plugins/scss.ts +2 -2
- package/src/plugins/stylex.ts +298 -0
- package/src/plugins/svg.ts +2 -2
- package/src/render-seam.ts +6 -0
- package/src/router.ts +293 -51
- package/src/vite.ts +41 -15
package/dist/vite.js
CHANGED
|
@@ -12,21 +12,33 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { writeFileSync } from "node:fs";
|
|
14
14
|
import { createServer as createHttpServer, } from "node:http";
|
|
15
|
-
import { relative, resolve as resolvePath } from "node:path";
|
|
15
|
+
import { isAbsolute, join, relative, resolve as resolvePath, sep } from "node:path";
|
|
16
16
|
import { createDevDiagnostics } from "./dev-diagnostics.js";
|
|
17
17
|
import { listenOrExplain } from "./dev-port.js";
|
|
18
18
|
import { discoverRoutes } from "./fs.js";
|
|
19
19
|
import { DEFAULT_DEV_PORT, generateClientEntry, setSsrModuleLoader } from "./index.js";
|
|
20
|
+
import { viteDedupePackages } from "./internal/identity-policy.js";
|
|
20
21
|
import { assertIdentityParity, collectIdentityParity, formatIdentityParityFindings, identityParityHeadline, } from "./internal/parity.js";
|
|
21
22
|
import { vitePublicEnvPrefix } from "./internal/server-boundary.js";
|
|
22
23
|
import { importVite } from "./internal/vite-import.js";
|
|
23
24
|
import { scopedName } from "./plugins/css-modules.js";
|
|
24
|
-
import { DEV_ROOT_ENV, DEV_ROUTES_ENV, reproduciblePath } from "./plugins/kit.js";
|
|
25
|
+
import { DEV_ROOT_ENV, DEV_ROUTES_ENV, normalizeFilePath, portablePath, reproduciblePath, } from "./plugins/kit.js";
|
|
25
26
|
import { viteServerFnStub } from "./plugins/vite-server-fn.js";
|
|
26
27
|
import { viteServerOnlyEmpty } from "./plugins/vite-server-only.js";
|
|
27
28
|
export { LAST_ERROR_PATH } from "./diagnostic.js";
|
|
28
29
|
// The codegen'd client entry is written here (at the Vite root) so Vite serves + HMRs it.
|
|
29
30
|
const DEV_ENTRY = ".nifra-vite-entry.tsx";
|
|
31
|
+
/** Candidate spellings for Vite's module-graph map. Vite has used native and slash-normalized
|
|
32
|
+
* absolute Windows paths across versions, while watcher events can additionally arrive as a file URL. */
|
|
33
|
+
const modulePathCandidates = (path) => {
|
|
34
|
+
const native = normalizeFilePath(path);
|
|
35
|
+
const portable = portablePath(path);
|
|
36
|
+
return [...new Set([path, native, portable])];
|
|
37
|
+
};
|
|
38
|
+
const pathInside = (root, path) => {
|
|
39
|
+
const rel = relative(resolvePath(root), resolvePath(normalizeFilePath(path)));
|
|
40
|
+
return rel === "" || (rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute(rel));
|
|
41
|
+
};
|
|
30
42
|
const readNodeBody = async (req) => {
|
|
31
43
|
if (req.method === "GET" || req.method === "HEAD")
|
|
32
44
|
return undefined;
|
|
@@ -206,7 +218,7 @@ export async function createViteDevServer(options) {
|
|
|
206
218
|
process.env[DEV_ROOT_ENV] = root;
|
|
207
219
|
process.env[DEV_ROUTES_ENV] = routesDir;
|
|
208
220
|
// Codegen the client entry with Vite-servable, root-relative specifiers (e.g. `/routes/index.tsx`).
|
|
209
|
-
const toUrl = (file) => `/${relative(root,
|
|
221
|
+
const toUrl = (file) => `/${relative(root, join(routesDir, file)).replaceAll("\\", "/")}`;
|
|
210
222
|
const writeClientEntry = () => {
|
|
211
223
|
const manifest = discoverRoutes(routesDir);
|
|
212
224
|
writeFileSync(resolvePath(root, DEV_ENTRY), generateClientEntry(manifest, { clientModule: options.clientModule, resolve: toUrl }));
|
|
@@ -324,12 +336,13 @@ export async function createViteDevServer(options) {
|
|
|
324
336
|
plugins: [viteServerFnStub(), viteServerOnlyEmpty(), ...plugins],
|
|
325
337
|
resolve: {
|
|
326
338
|
conditions: resolveConditions,
|
|
327
|
-
// Dedupe
|
|
328
|
-
// from a SIBLING app's node_modules, so the dev server
|
|
329
|
-
// dispatcher → `resolveDispatcher().useState` null
|
|
330
|
-
//
|
|
331
|
-
//
|
|
332
|
-
|
|
339
|
+
// Dedupe each framework runtime to ONE copy. In a multi-root workspace a shared package can pull
|
|
340
|
+
// react/react-dom (or preact, or svelte) from a SIBLING app's node_modules, so the dev server
|
|
341
|
+
// loads two cores → a second hook dispatcher/options global → `resolveDispatcher().useState` null
|
|
342
|
+
// on any hook-using route (the error points at the component, not the resolution - brutal to
|
|
343
|
+
// diagnose). Same policy table the production builds read, so dev matches prod. No-op per
|
|
344
|
+
// framework the app does not use (the package simply isn't present to dedupe).
|
|
345
|
+
dedupe: [...viteDedupePackages()],
|
|
333
346
|
},
|
|
334
347
|
ssr: {
|
|
335
348
|
// Explicit listing forces external even for workspace-LINKED packages (Vite's default keeps
|
|
@@ -376,11 +389,15 @@ export async function createViteDevServer(options) {
|
|
|
376
389
|
const graph = vite.moduleGraph;
|
|
377
390
|
if (graph === undefined)
|
|
378
391
|
return;
|
|
379
|
-
const roots = graph.getModulesByFile(path);
|
|
380
|
-
if (roots === undefined)
|
|
381
|
-
return;
|
|
382
392
|
const seen = new Set();
|
|
383
|
-
const stack = [
|
|
393
|
+
const stack = [];
|
|
394
|
+
for (const candidate of modulePathCandidates(path)) {
|
|
395
|
+
const roots = graph.getModulesByFile(candidate);
|
|
396
|
+
if (roots !== undefined)
|
|
397
|
+
stack.push(...roots);
|
|
398
|
+
}
|
|
399
|
+
if (stack.length === 0)
|
|
400
|
+
return;
|
|
384
401
|
for (let mod = stack.pop(); mod !== undefined; mod = stack.pop()) {
|
|
385
402
|
if (seen.has(mod))
|
|
386
403
|
continue;
|
|
@@ -406,12 +423,13 @@ export async function createViteDevServer(options) {
|
|
|
406
423
|
})
|
|
407
424
|
.catch((err) => console.error("[nifra/web/vite] app re-create failed:", err));
|
|
408
425
|
};
|
|
409
|
-
vite.watcher.on("change", refreshApp);
|
|
426
|
+
vite.watcher.on("change", (path) => refreshApp(normalizeFilePath(path)));
|
|
410
427
|
for (const event of ["add", "unlink"]) {
|
|
411
428
|
vite.watcher.on(event, (path) => {
|
|
412
|
-
|
|
429
|
+
const filePath = normalizeFilePath(path);
|
|
430
|
+
if (pathInside(routesDir, filePath))
|
|
413
431
|
writeClientEntry();
|
|
414
|
-
refreshApp(
|
|
432
|
+
refreshApp(filePath);
|
|
415
433
|
});
|
|
416
434
|
}
|
|
417
435
|
try {
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/web",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Framework-agnostic SSR core for nifra - the render seam + HTML document orchestration.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -59,6 +59,11 @@
|
|
|
59
59
|
"types": "./dist/islands.d.ts",
|
|
60
60
|
"default": "./dist/islands.js"
|
|
61
61
|
},
|
|
62
|
+
"./nano": {
|
|
63
|
+
"bun": "./src/nano.ts",
|
|
64
|
+
"types": "./dist/nano.d.ts",
|
|
65
|
+
"default": "./dist/nano.js"
|
|
66
|
+
},
|
|
62
67
|
"./service-worker": {
|
|
63
68
|
"bun": "./src/service-worker.ts",
|
|
64
69
|
"types": "./dist/service-worker.d.ts",
|
|
@@ -119,6 +124,11 @@
|
|
|
119
124
|
"types": "./dist/plugins/postcss.d.ts",
|
|
120
125
|
"default": "./dist/plugins/postcss.js"
|
|
121
126
|
},
|
|
127
|
+
"./plugins/stylex": {
|
|
128
|
+
"bun": "./src/plugins/stylex.ts",
|
|
129
|
+
"types": "./dist/plugins/stylex.d.ts",
|
|
130
|
+
"default": "./dist/plugins/stylex.js"
|
|
131
|
+
},
|
|
122
132
|
"./plugins/svg": {
|
|
123
133
|
"bun": "./src/plugins/svg.ts",
|
|
124
134
|
"types": "./dist/plugins/svg.d.ts",
|
|
@@ -159,6 +169,16 @@
|
|
|
159
169
|
"bun": "./src/internal/parity.ts",
|
|
160
170
|
"types": "./dist/internal/parity.d.ts",
|
|
161
171
|
"default": "./dist/internal/parity.js"
|
|
172
|
+
},
|
|
173
|
+
"./internal/query-runtime": {
|
|
174
|
+
"bun": "./src/internal/query-runtime.ts",
|
|
175
|
+
"types": "./dist/internal/query-runtime.d.ts",
|
|
176
|
+
"default": "./dist/internal/query-runtime.js"
|
|
177
|
+
},
|
|
178
|
+
"./internal/fetcher-runtime": {
|
|
179
|
+
"bun": "./src/internal/fetcher-runtime.ts",
|
|
180
|
+
"types": "./dist/internal/fetcher-runtime.d.ts",
|
|
181
|
+
"default": "./dist/internal/fetcher-runtime.js"
|
|
162
182
|
}
|
|
163
183
|
},
|
|
164
184
|
"files": [
|
|
@@ -176,13 +196,34 @@
|
|
|
176
196
|
"access": "public"
|
|
177
197
|
},
|
|
178
198
|
"dependencies": {
|
|
179
|
-
"@nifrajs/core": "2.
|
|
199
|
+
"@nifrajs/core": "3.2.0",
|
|
200
|
+
"@nifrajs/island-trigger": "3.2.0"
|
|
180
201
|
},
|
|
181
202
|
"peerDependencies": {
|
|
203
|
+
"@babel/core": "^7.26.0",
|
|
204
|
+
"@babel/plugin-syntax-flow": "^7.26.0",
|
|
205
|
+
"@babel/plugin-syntax-jsx": "^7.25.9",
|
|
206
|
+
"@babel/plugin-syntax-typescript": "^7.25.9",
|
|
207
|
+
"@stylexjs/babel-plugin": "^0.19.0",
|
|
182
208
|
"sass": "^1.0.0",
|
|
183
209
|
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
|
|
184
210
|
},
|
|
185
211
|
"peerDependenciesMeta": {
|
|
212
|
+
"@babel/core": {
|
|
213
|
+
"optional": true
|
|
214
|
+
},
|
|
215
|
+
"@babel/plugin-syntax-flow": {
|
|
216
|
+
"optional": true
|
|
217
|
+
},
|
|
218
|
+
"@babel/plugin-syntax-jsx": {
|
|
219
|
+
"optional": true
|
|
220
|
+
},
|
|
221
|
+
"@babel/plugin-syntax-typescript": {
|
|
222
|
+
"optional": true
|
|
223
|
+
},
|
|
224
|
+
"@stylexjs/babel-plugin": {
|
|
225
|
+
"optional": true
|
|
226
|
+
},
|
|
186
227
|
"sass": {
|
|
187
228
|
"optional": true
|
|
188
229
|
},
|
|
@@ -191,10 +232,16 @@
|
|
|
191
232
|
}
|
|
192
233
|
},
|
|
193
234
|
"devDependencies": {
|
|
235
|
+
"@babel/core": "^7.29.7",
|
|
236
|
+
"@babel/plugin-syntax-flow": "^7.29.7",
|
|
237
|
+
"@babel/plugin-syntax-jsx": "^7.29.7",
|
|
238
|
+
"@babel/plugin-syntax-typescript": "^7.29.7",
|
|
194
239
|
"@nifrajs/client": "workspace:*",
|
|
195
240
|
"@nifrajs/schema": "workspace:*",
|
|
196
241
|
"@nifrajs/test-utils": "workspace:*",
|
|
197
242
|
"@nifrajs/web-react": "workspace:*",
|
|
243
|
+
"@stylexjs/babel-plugin": "^0.19.0",
|
|
244
|
+
"@stylexjs/stylex": "^0.19.0",
|
|
198
245
|
"sass": "^1.77.0",
|
|
199
246
|
"vite": "^8.2.1"
|
|
200
247
|
},
|
package/src/boundary.ts
ADDED
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-neutral async boundaries. A boundary owns one named piece of UI data; the web core owns
|
|
3
|
+
* lifecycle, concurrency, and isolation while each adapter decides how its `render` result is mounted.
|
|
4
|
+
* The contract deliberately contains no React/Svelte/Vue/Preact types.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Request-scoped inputs available to dynamic and intercepting boundaries. */
|
|
8
|
+
export interface BoundaryRequestCtx {
|
|
9
|
+
readonly request: Request
|
|
10
|
+
readonly params: Readonly<Record<string, string>>
|
|
11
|
+
readonly api: unknown
|
|
12
|
+
readonly env: unknown
|
|
13
|
+
readonly draft: boolean
|
|
14
|
+
readonly search: Readonly<Record<string, unknown>>
|
|
15
|
+
readonly signal: AbortSignal
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Build-safe inputs available to a static boundary. It intentionally has no request/session/params API. */
|
|
19
|
+
export interface StaticCtx {
|
|
20
|
+
readonly phase: "build"
|
|
21
|
+
readonly origin?: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type BoundaryMode = "static" | "dynamic" | { readonly intercept: string }
|
|
25
|
+
|
|
26
|
+
interface BoundaryBase<Data, UI> {
|
|
27
|
+
readonly name: string
|
|
28
|
+
readonly render: (data: Data) => UI
|
|
29
|
+
readonly fallback?: UI
|
|
30
|
+
/** Adapter-provided error slot name. The neutral core never imports a UI component. */
|
|
31
|
+
readonly errorId?: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type StaticBoundary<Data, UI> = BoundaryBase<Data, UI> & {
|
|
35
|
+
readonly mode: "static"
|
|
36
|
+
readonly load?: (ctx: StaticCtx) => Data | Promise<Data>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type DynamicBoundary<Data, UI> = BoundaryBase<Data, UI> & {
|
|
40
|
+
readonly mode: "dynamic"
|
|
41
|
+
readonly load?: (ctx: BoundaryRequestCtx) => Data | Promise<Data>
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type InterceptBoundary<Data, UI> = BoundaryBase<Data, UI> & {
|
|
45
|
+
readonly mode: { readonly intercept: string }
|
|
46
|
+
readonly load?: (ctx: BoundaryRequestCtx) => Data | Promise<Data>
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** A discriminated union: the `mode` selects the context type accepted by `load`. */
|
|
50
|
+
export type Boundary<Data, UI> =
|
|
51
|
+
| StaticBoundary<Data, UI>
|
|
52
|
+
| DynamicBoundary<Data, UI>
|
|
53
|
+
| InterceptBoundary<Data, UI>
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Erased runtime registration shape used by a route/layout manifest. This is intentionally a
|
|
57
|
+
* structural union rather than `Boundary<never, unknown>`: a registration keeps its loader's
|
|
58
|
+
* concrete data type at the declaration site, and function-parameter variance must not turn that
|
|
59
|
+
* loader into `Promise<never>` when the manifest erases it.
|
|
60
|
+
*/
|
|
61
|
+
type ErasedBoundaryBase = {
|
|
62
|
+
readonly name: string
|
|
63
|
+
readonly render: (data: never) => unknown
|
|
64
|
+
readonly fallback?: unknown
|
|
65
|
+
readonly errorId?: string
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export type BoundaryRegistration =
|
|
69
|
+
| (ErasedBoundaryBase & {
|
|
70
|
+
readonly mode: "static"
|
|
71
|
+
readonly load?: (ctx: StaticCtx) => unknown | Promise<unknown>
|
|
72
|
+
})
|
|
73
|
+
| (ErasedBoundaryBase & {
|
|
74
|
+
readonly mode: "dynamic"
|
|
75
|
+
readonly load?: (ctx: BoundaryRequestCtx) => unknown | Promise<unknown>
|
|
76
|
+
})
|
|
77
|
+
| (ErasedBoundaryBase & {
|
|
78
|
+
readonly mode: { readonly intercept: string }
|
|
79
|
+
readonly load?: (ctx: BoundaryRequestCtx) => unknown | Promise<unknown>
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
/** Neutral manifest descriptor: no framework component crosses the web core boundary. */
|
|
83
|
+
export interface BoundaryDescriptor {
|
|
84
|
+
readonly name: string
|
|
85
|
+
readonly mode: BoundaryMode
|
|
86
|
+
readonly hasLoad: boolean
|
|
87
|
+
readonly errorId?: string
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export type BoundaryStatus = "unresolved" | "pending" | "ready" | "error"
|
|
91
|
+
|
|
92
|
+
export interface BoundaryError {
|
|
93
|
+
readonly name: string
|
|
94
|
+
readonly message: string
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Serializable boundary state passed to the adapter's render seam. */
|
|
98
|
+
export interface BoundaryState {
|
|
99
|
+
readonly name: string
|
|
100
|
+
readonly mode: BoundaryMode
|
|
101
|
+
readonly status: BoundaryStatus
|
|
102
|
+
readonly data?: unknown
|
|
103
|
+
readonly error?: BoundaryError
|
|
104
|
+
readonly errorId?: string
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export type BoundaryStates = Readonly<Record<string, BoundaryState>>
|
|
108
|
+
|
|
109
|
+
/** A dynamic load that has started but is not part of the initial render barrier. */
|
|
110
|
+
export interface PendingBoundary {
|
|
111
|
+
readonly name: string
|
|
112
|
+
readonly mode: BoundaryMode
|
|
113
|
+
readonly errorId?: string
|
|
114
|
+
readonly promise: Promise<unknown>
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Runtime handles for a concurrent boundary batch. `initial` is renderable immediately. */
|
|
118
|
+
export interface DynamicBoundaryBatch {
|
|
119
|
+
readonly initial: BoundaryStates
|
|
120
|
+
readonly pending: ReadonlyArray<PendingBoundary>
|
|
121
|
+
/** Resolves to final per-boundary states for non-streaming consumers and tests. */
|
|
122
|
+
readonly complete: Promise<BoundaryStates>
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Public in-memory reference cache for build-safe static boundary values. It holds no payload outside
|
|
126
|
+
* the process and is intentionally not a durable or tenant-aware cache implementation. */
|
|
127
|
+
export interface StaticBoundaryCache {
|
|
128
|
+
get(boundary: BoundaryRegistration): Promise<unknown> | undefined
|
|
129
|
+
set(boundary: BoundaryRegistration, value: Promise<unknown>): void
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export class MemoryStaticBoundaryCache implements StaticBoundaryCache {
|
|
133
|
+
readonly #values = new WeakMap<object, Promise<unknown>>()
|
|
134
|
+
|
|
135
|
+
get(boundary: BoundaryRegistration): Promise<unknown> | undefined {
|
|
136
|
+
return this.#values.get(boundary as object)
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
set(boundary: BoundaryRegistration, value: Promise<unknown>): void {
|
|
140
|
+
this.#values.set(boundary as object, value)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface StaticBoundaryImportEdge {
|
|
145
|
+
readonly from: string
|
|
146
|
+
readonly to: string
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface StaticBoundaryRoot {
|
|
150
|
+
readonly name: string
|
|
151
|
+
readonly module: string
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Enforce the second half of the static-boundary safety boundary. A build adapter supplies the
|
|
156
|
+
* transitive module graph and the modules it has classified as request-scoped; a static root that
|
|
157
|
+
* reaches one fails before any shared shell is emitted. Keeping this check graph-shaped makes it
|
|
158
|
+
* usable by Bun/Vite without making the neutral web runtime depend on either bundler.
|
|
159
|
+
*/
|
|
160
|
+
export function assertStaticBoundaryImports(
|
|
161
|
+
roots: readonly StaticBoundaryRoot[],
|
|
162
|
+
edges: readonly StaticBoundaryImportEdge[],
|
|
163
|
+
requestScopedModules: ReadonlySet<string>,
|
|
164
|
+
): void {
|
|
165
|
+
const next = new Map<string, string[]>()
|
|
166
|
+
for (const edge of edges) {
|
|
167
|
+
const children = next.get(edge.from)
|
|
168
|
+
if (children === undefined) next.set(edge.from, [edge.to])
|
|
169
|
+
else children.push(edge.to)
|
|
170
|
+
}
|
|
171
|
+
for (const root of roots) {
|
|
172
|
+
const seen = new Set<string>([root.module])
|
|
173
|
+
const queue = [root.module]
|
|
174
|
+
for (let cursor = 0; cursor < queue.length; cursor++) {
|
|
175
|
+
const module = queue[cursor]
|
|
176
|
+
if (module === undefined) continue
|
|
177
|
+
if (requestScopedModules.has(module)) {
|
|
178
|
+
throw new TypeError(
|
|
179
|
+
`[nifra/web] static boundary "${root.name}" reaches request-scoped module "${module}"`,
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
for (const child of next.get(module) ?? []) {
|
|
183
|
+
if (!seen.has(child)) {
|
|
184
|
+
seen.add(child)
|
|
185
|
+
queue.push(child)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const BOUNDARY_NAME = /^[A-Za-z][A-Za-z0-9_-]{0,63}$/
|
|
193
|
+
const MAX_INTERCEPT_PATH = 2048
|
|
194
|
+
|
|
195
|
+
const modeKey = (mode: BoundaryMode): string =>
|
|
196
|
+
typeof mode === "string" ? mode : `intercept:${mode.intercept}`
|
|
197
|
+
|
|
198
|
+
const assertMode = (mode: BoundaryMode): void => {
|
|
199
|
+
if (mode === "static" || mode === "dynamic") return
|
|
200
|
+
if (
|
|
201
|
+
typeof mode !== "object" ||
|
|
202
|
+
mode === null ||
|
|
203
|
+
typeof mode.intercept !== "string" ||
|
|
204
|
+
mode.intercept.length === 0 ||
|
|
205
|
+
mode.intercept.length > MAX_INTERCEPT_PATH ||
|
|
206
|
+
!mode.intercept.startsWith("/") ||
|
|
207
|
+
mode.intercept.startsWith("//")
|
|
208
|
+
) {
|
|
209
|
+
throw new TypeError("[nifra/web] boundary intercept must be a same-origin path")
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/** Validate and serialize the neutral boundary manifest. Duplicate names fail closed at startup. */
|
|
214
|
+
export function boundaryDescriptors(
|
|
215
|
+
boundaries: readonly BoundaryRegistration[],
|
|
216
|
+
): ReadonlyArray<BoundaryDescriptor> {
|
|
217
|
+
const seen = new Set<string>()
|
|
218
|
+
return boundaries.map((boundary) => {
|
|
219
|
+
if (!BOUNDARY_NAME.test(boundary.name) || seen.has(boundary.name)) {
|
|
220
|
+
throw new TypeError(`[nifra/web] invalid or duplicate boundary name "${boundary.name}"`)
|
|
221
|
+
}
|
|
222
|
+
assertMode(boundary.mode)
|
|
223
|
+
seen.add(boundary.name)
|
|
224
|
+
return {
|
|
225
|
+
name: boundary.name,
|
|
226
|
+
mode: boundary.mode,
|
|
227
|
+
hasLoad: boundary.load !== undefined,
|
|
228
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
229
|
+
}
|
|
230
|
+
})
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
const scopedContext = (context: BoundaryRequestCtx): BoundaryRequestCtx =>
|
|
234
|
+
Object.freeze({
|
|
235
|
+
request: context.request,
|
|
236
|
+
params: Object.freeze({ ...context.params }),
|
|
237
|
+
api: context.api,
|
|
238
|
+
env: context.env,
|
|
239
|
+
draft: context.draft,
|
|
240
|
+
search: Object.freeze({ ...context.search }),
|
|
241
|
+
signal: context.signal,
|
|
242
|
+
})
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Redact a failed load into the client-visible slot. Boundary states are serialized into the document
|
|
246
|
+
* (`window.__NIFRA_BOUNDARIES__`), so the thrown error's own message never crosses: a driver or fetch
|
|
247
|
+
* failure carries hosts, credentials, and query text that a page is not allowed to publish. An `Error`
|
|
248
|
+
* subclass name is withheld for the same reason - it names the internal library. The real error goes to
|
|
249
|
+
* a generic server-console event, the same split `deferred.ts` uses for a rejected deferred value. The
|
|
250
|
+
* log deliberately carries only the failure kind: exception messages can contain credentials, query
|
|
251
|
+
* text, or user data and must not be copied into an operational sink by default.
|
|
252
|
+
*
|
|
253
|
+
* A boundary that wants to show the user something specific catches its own failure inside `load` and
|
|
254
|
+
* returns that as data; the framework never guesses which parts of an exception are publishable.
|
|
255
|
+
*/
|
|
256
|
+
const boundaryError = (error: unknown): BoundaryError => {
|
|
257
|
+
if (error !== undefined) {
|
|
258
|
+
console.error("[nifra/web] boundary load failed", {
|
|
259
|
+
kind: error instanceof Error ? "error" : typeof error,
|
|
260
|
+
})
|
|
261
|
+
}
|
|
262
|
+
return { name: "Error", message: "Boundary failed" }
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Resolve all dynamic boundaries concurrently. Each receives a fresh frozen context object; one
|
|
267
|
+
* failure becomes that boundary's error state and never rejects a sibling or exposes sibling data.
|
|
268
|
+
* Static/intercepting modes remain `unresolved` until their phase-specific runtime owns them.
|
|
269
|
+
*/
|
|
270
|
+
export async function resolveDynamicBoundaries(
|
|
271
|
+
boundaries: readonly BoundaryRegistration[],
|
|
272
|
+
context: BoundaryRequestCtx,
|
|
273
|
+
): Promise<BoundaryStates> {
|
|
274
|
+
return startDynamicBoundaries(boundaries, context).complete
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Start all dynamic boundary loads at once without making the page wait for the slowest sibling.
|
|
279
|
+
* The initial states contain `status: "pending"`; callers that support deferred values can attach
|
|
280
|
+
* each `pending.promise` to its own slot. `complete` still provides settled, isolated states to
|
|
281
|
+
* non-streaming callers, preserving the simple reference API.
|
|
282
|
+
*/
|
|
283
|
+
export function startDynamicBoundaries(
|
|
284
|
+
boundaries: readonly BoundaryRegistration[],
|
|
285
|
+
context: BoundaryRequestCtx,
|
|
286
|
+
): DynamicBoundaryBatch {
|
|
287
|
+
// Validation only: a bad name, a duplicate, or a malformed intercept path throws here rather than
|
|
288
|
+
// producing a half-registered batch. It cannot return holes, so no slot below tests for one.
|
|
289
|
+
boundaryDescriptors(boundaries)
|
|
290
|
+
const initial: Record<string, BoundaryState> = {}
|
|
291
|
+
const pending: PendingBoundary[] = []
|
|
292
|
+
|
|
293
|
+
for (const boundary of boundaries) {
|
|
294
|
+
const base = {
|
|
295
|
+
name: boundary.name,
|
|
296
|
+
mode: boundary.mode,
|
|
297
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
298
|
+
}
|
|
299
|
+
if (boundary.mode !== "dynamic") {
|
|
300
|
+
initial[boundary.name] = { ...base, status: "unresolved" }
|
|
301
|
+
continue
|
|
302
|
+
}
|
|
303
|
+
if (boundary.load === undefined) {
|
|
304
|
+
initial[boundary.name] = { ...base, status: "ready" }
|
|
305
|
+
continue
|
|
306
|
+
}
|
|
307
|
+
// Promise.resolve().then() converts a synchronous throw into this boundary's rejection, so it
|
|
308
|
+
// cannot abort siblings or escape before the caller attaches the deferred consumer.
|
|
309
|
+
const promise = Promise.resolve().then(() => boundary.load?.(scopedContext(context)))
|
|
310
|
+
pending.push({
|
|
311
|
+
name: boundary.name,
|
|
312
|
+
mode: boundary.mode,
|
|
313
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
314
|
+
promise,
|
|
315
|
+
})
|
|
316
|
+
initial[boundary.name] = { ...base, status: "pending" }
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const complete = Promise.all(
|
|
320
|
+
boundaries.map(async (boundary) => {
|
|
321
|
+
const base = {
|
|
322
|
+
name: boundary.name,
|
|
323
|
+
mode: boundary.mode,
|
|
324
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
325
|
+
}
|
|
326
|
+
if (boundary.mode !== "dynamic") return { ...base, status: "unresolved" as const }
|
|
327
|
+
if (boundary.load === undefined) return { ...base, status: "ready" as const }
|
|
328
|
+
const load = pending.find((entry) => entry.name === boundary.name)
|
|
329
|
+
if (load === undefined)
|
|
330
|
+
return { ...base, status: "error" as const, error: boundaryError(undefined) }
|
|
331
|
+
try {
|
|
332
|
+
const data = await load.promise
|
|
333
|
+
return { ...base, status: "ready" as const, ...(data !== undefined ? { data } : {}) }
|
|
334
|
+
} catch (error) {
|
|
335
|
+
return { ...base, status: "error" as const, error: boundaryError(error) }
|
|
336
|
+
}
|
|
337
|
+
}),
|
|
338
|
+
).then((states) => Object.fromEntries(states.map((state) => [state.name, state])))
|
|
339
|
+
|
|
340
|
+
return { initial, pending, complete }
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Resolve only explicitly annotated static boundaries with a request-free build context. Dynamic
|
|
345
|
+
* and intercepting boundaries remain unresolved. Values are cached by boundary object identity in
|
|
346
|
+
* the supplied in-memory cache, so a worker instance does not repeat a build-safe computation per
|
|
347
|
+
* request. A rejected static load becomes that slot's error state; it never fabricates shared data.
|
|
348
|
+
*/
|
|
349
|
+
export async function resolveStaticBoundaries(
|
|
350
|
+
boundaries: readonly BoundaryRegistration[],
|
|
351
|
+
context: StaticCtx,
|
|
352
|
+
cache: StaticBoundaryCache = DEFAULT_STATIC_CACHE,
|
|
353
|
+
): Promise<BoundaryStates> {
|
|
354
|
+
// Validation only - see `startDynamicBoundaries`; the descriptor list has no holes to test for.
|
|
355
|
+
boundaryDescriptors(boundaries)
|
|
356
|
+
const states = await Promise.all(
|
|
357
|
+
boundaries.map(async (boundary) => {
|
|
358
|
+
if (boundary.mode !== "static") {
|
|
359
|
+
return {
|
|
360
|
+
name: boundary.name,
|
|
361
|
+
mode: boundary.mode,
|
|
362
|
+
status: "unresolved" as const,
|
|
363
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (boundary.load === undefined) {
|
|
367
|
+
return {
|
|
368
|
+
name: boundary.name,
|
|
369
|
+
mode: boundary.mode,
|
|
370
|
+
status: "ready" as const,
|
|
371
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
let value = cache.get(boundary)
|
|
375
|
+
if (value === undefined) {
|
|
376
|
+
value = Promise.resolve().then(() => boundary.load?.(context))
|
|
377
|
+
cache.set(boundary, value)
|
|
378
|
+
}
|
|
379
|
+
try {
|
|
380
|
+
const data = await value
|
|
381
|
+
return {
|
|
382
|
+
name: boundary.name,
|
|
383
|
+
mode: boundary.mode,
|
|
384
|
+
status: "ready" as const,
|
|
385
|
+
...(data !== undefined ? { data } : {}),
|
|
386
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
387
|
+
}
|
|
388
|
+
} catch (error) {
|
|
389
|
+
return {
|
|
390
|
+
name: boundary.name,
|
|
391
|
+
mode: boundary.mode,
|
|
392
|
+
status: "error" as const,
|
|
393
|
+
error: boundaryError(error),
|
|
394
|
+
...(boundary.errorId !== undefined ? { errorId: boundary.errorId } : {}),
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}),
|
|
398
|
+
)
|
|
399
|
+
return Object.fromEntries(states.map((state) => [state.name, state]))
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
const DEFAULT_STATIC_CACHE = new MemoryStaticBoundaryCache()
|
|
403
|
+
|
|
404
|
+
/** Stable mode label for adapter registries and diagnostics. */
|
|
405
|
+
export function boundaryModeKey(mode: BoundaryMode): string {
|
|
406
|
+
return modeKey(mode)
|
|
407
|
+
}
|