@nifrajs/web 5.0.0 → 5.1.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/README.md +8 -0
- package/dist/client.d.ts +5 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +25 -15
- 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 +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- 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.map +1 -1
- package/dist/internal/page-execution.js +60 -6
- 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 +4 -44
- package/dist/internal/render-document.d.ts.map +1 -1
- package/dist/internal/render-document.js +23 -58
- 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/web-app.d.ts +4 -2
- package/dist/internal/web-app.d.ts.map +1 -1
- package/dist/internal/web-app.js +8 -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/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 +23 -2
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +9 -5
- 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/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 +8 -3
- package/src/client.ts +27 -15
- package/src/dev-port.ts +4 -10
- package/src/index.ts +2 -4
- package/src/internal/package-entries.ts +331 -0
- package/src/internal/page-execution.ts +67 -6
- package/src/internal/parity.ts +15 -2
- package/src/internal/private-env.ts +27 -13
- package/src/internal/render-document.ts +40 -78
- package/src/internal/route-path.ts +16 -0
- package/src/internal/secret-scan.ts +101 -1
- package/src/internal/web-app.ts +10 -5
- 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/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 +28 -2
- package/src/router.ts +9 -5
- package/src/seo.ts +68 -0
- package/src/zones.ts +237 -52
package/dist/zones.js
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { closeSync, existsSync, openSync, readFileSync, readSync, realpathSync } from "node:fs";
|
|
13
13
|
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
14
|
+
import { entryKey, entryOwnership, parseEnvironment, } from "./internal/package-entries.js";
|
|
14
15
|
import { SERVER_FN_MODULE } from "./internal/server-boundary.js";
|
|
16
|
+
import { withoutQuery } from "./internal/without-query.js";
|
|
15
17
|
const PACKAGE_ENVIRONMENTS = new Set([
|
|
16
18
|
"frontend",
|
|
17
19
|
"backend",
|
|
@@ -109,9 +111,10 @@ const recordOf = (value) => typeof value === "object" && value !== null && !Arra
|
|
|
109
111
|
? Object.fromEntries(Object.entries(value))
|
|
110
112
|
: undefined;
|
|
111
113
|
/**
|
|
112
|
-
* Validate a `zones` setting. `source` names where it came from in the error. Folders are
|
|
113
|
-
* app-relative paths (a trailing `/**` is accepted and dropped); any other glob is refused, so
|
|
114
|
-
* pattern can never match less than its author meant without saying so.
|
|
114
|
+
* Validate a `zones` setting. `source` names where it came from in the error. Folders and files are
|
|
115
|
+
* plain app-relative paths (a trailing `/**` is accepted and dropped); any other glob is refused, so
|
|
116
|
+
* a pattern can never match less than its author meant without saying so. One path under two sides
|
|
117
|
+
* is refused; a path nested in another's folder is not, since the most specific one decides.
|
|
115
118
|
*/
|
|
116
119
|
export function parseZoneConfig(value, source) {
|
|
117
120
|
const fail = (message) => {
|
|
@@ -144,7 +147,7 @@ export function parseZoneConfig(value, source) {
|
|
|
144
147
|
continue;
|
|
145
148
|
const entries = Array.isArray(raw)
|
|
146
149
|
? raw
|
|
147
|
-
: fail(`"${side}" must be an array of app-relative folders`);
|
|
150
|
+
: fail(`"${side}" must be an array of app-relative folders or files`);
|
|
148
151
|
const folders = [];
|
|
149
152
|
for (const entry of entries) {
|
|
150
153
|
const folder = (typeof entry === "string" ? entry : fail(`"${side}" must hold strings`))
|
|
@@ -154,18 +157,16 @@ export function parseZoneConfig(value, source) {
|
|
|
154
157
|
.replace(/\/+$/, "");
|
|
155
158
|
const top = folder.split("/")[0] ?? "";
|
|
156
159
|
if (folder === "" || folder.startsWith("/") || /^[a-z]:/i.test(folder))
|
|
157
|
-
fail(`"${side}" entry "${entry}" must be a folder relative to the app`);
|
|
160
|
+
fail(`"${side}" entry "${entry}" must be a folder or file relative to the app`);
|
|
158
161
|
if (folder.split("/").includes(".."))
|
|
159
162
|
fail(`"${side}" entry "${entry}" may not contain ".."`);
|
|
160
163
|
if (/[*?[\]{}!]/.test(folder))
|
|
161
|
-
fail(`"${side}" entry "${entry}" must be a plain
|
|
164
|
+
fail(`"${side}" entry "${entry}" must be a plain path (a trailing "/**" is allowed)`);
|
|
162
165
|
if (RESERVED_FOLDERS.has(top) || top.startsWith(".nifra"))
|
|
163
166
|
fail(`"${side}" entry "${entry}" is inside ${top}/, which already has its own rules`);
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
fail(`"${folder}" (${side}) overlaps "${other}" (${otherSide}); a folder has one side`);
|
|
168
|
-
}
|
|
167
|
+
const other = owner.get(folder);
|
|
168
|
+
if (other !== undefined && other !== side)
|
|
169
|
+
fail(`"${folder}" is listed as both ${other} and ${side}; a path has one side`);
|
|
169
170
|
owner.set(folder, side);
|
|
170
171
|
folders.push(folder);
|
|
171
172
|
}
|
|
@@ -261,6 +262,16 @@ function nodeModulesPackage(path) {
|
|
|
261
262
|
return undefined;
|
|
262
263
|
return first.startsWith("@") && parts[1] !== undefined ? `${first}/${parts[1]}` : first;
|
|
263
264
|
}
|
|
265
|
+
const DECLARATION_FILE = /\.d\.[cm]?ts$/;
|
|
266
|
+
/** The one side a file reached by several mapped entries takes: what each entry's importers may import. */
|
|
267
|
+
function ownersSide(owners) {
|
|
268
|
+
const [only] = owners;
|
|
269
|
+
if (owners.size === 1 && only !== undefined)
|
|
270
|
+
return only;
|
|
271
|
+
return owners.has("library") || (owners.has("frontend") && owners.has("backend"))
|
|
272
|
+
? "library"
|
|
273
|
+
: "shared";
|
|
274
|
+
}
|
|
264
275
|
/**
|
|
265
276
|
* Create a classifier for one app. Cheap to create; it caches per file and per package directory,
|
|
266
277
|
* so build plugins and dev servers keep one for the life of a build or a session.
|
|
@@ -276,12 +287,9 @@ export function createZoneClassifier(options) {
|
|
|
276
287
|
for (const side of FOLDER_SIDES)
|
|
277
288
|
for (const folder of zones[side] ?? [])
|
|
278
289
|
configuredFolders.push([folder, side]);
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
return side;
|
|
283
|
-
return undefined;
|
|
284
|
-
};
|
|
290
|
+
// Longest first, so the most specific entry covering a file decides its side.
|
|
291
|
+
configuredFolders.sort(([a], [b]) => b.length - a.length);
|
|
292
|
+
const configuredPath = (rel) => configuredFolders.find(([folder]) => rel === folder || rel.startsWith(`${folder}/`));
|
|
285
293
|
const cache = new Map();
|
|
286
294
|
const packages = new Map();
|
|
287
295
|
/** The nearest `package.json` at or above `dir`, cached by directory. */
|
|
@@ -300,7 +308,7 @@ export function createZoneClassifier(options) {
|
|
|
300
308
|
if (existsSync(manifest)) {
|
|
301
309
|
let parsed = {};
|
|
302
310
|
try {
|
|
303
|
-
parsed = JSON.parse(readFileSync(manifest, "utf8"));
|
|
311
|
+
parsed = recordOf(JSON.parse(readFileSync(manifest, "utf8"))) ?? {};
|
|
304
312
|
}
|
|
305
313
|
catch {
|
|
306
314
|
// An unreadable manifest declares nothing; the caller reports the missing declaration.
|
|
@@ -308,7 +316,8 @@ export function createZoneClassifier(options) {
|
|
|
308
316
|
const info = {
|
|
309
317
|
dir: current,
|
|
310
318
|
name: typeof parsed.name === "string" ? parsed.name : undefined,
|
|
311
|
-
|
|
319
|
+
declaration: parseEnvironment(recordOf(parsed.nifra)?.environment),
|
|
320
|
+
manifest: parsed,
|
|
312
321
|
};
|
|
313
322
|
for (const visited of seen)
|
|
314
323
|
packages.set(visited, info);
|
|
@@ -323,15 +332,80 @@ export function createZoneClassifier(options) {
|
|
|
323
332
|
current = parent;
|
|
324
333
|
}
|
|
325
334
|
};
|
|
335
|
+
const ownerships = new Map();
|
|
336
|
+
const ownershipOf = (info, entries) => {
|
|
337
|
+
let found = ownerships.get(info.dir);
|
|
338
|
+
if (found === undefined) {
|
|
339
|
+
found = entryOwnership(info.dir, info.manifest, entries);
|
|
340
|
+
ownerships.set(info.dir, found);
|
|
341
|
+
}
|
|
342
|
+
return found;
|
|
343
|
+
};
|
|
344
|
+
/** The package `file` is part of, when that package is not the app: installed, or a workspace sibling. */
|
|
345
|
+
const packageOf = (file) => {
|
|
346
|
+
const thirdParty = nodeModulesPackage(file);
|
|
347
|
+
if (thirdParty !== undefined) {
|
|
348
|
+
const at = file.lastIndexOf("/node_modules/") + "/node_modules/".length;
|
|
349
|
+
return packageFor(file.slice(0, at + thirdParty.length));
|
|
350
|
+
}
|
|
351
|
+
return isInside(file, appRoot) ? undefined : packageFor(toPosix(dirname(file)));
|
|
352
|
+
};
|
|
353
|
+
/** What a side declared for `file` (by its package, an entry of it, or the app) makes it. */
|
|
354
|
+
const declaredAs = (file, info, side, entry) => {
|
|
355
|
+
const thirdParty = nodeModulesPackage(file);
|
|
356
|
+
const named = entry === undefined || info?.name === undefined ? {} : { packageName: info.name };
|
|
357
|
+
const decided = entry === undefined ? {} : { entry };
|
|
358
|
+
if (thirdParty !== undefined) {
|
|
359
|
+
return {
|
|
360
|
+
zone: "library",
|
|
361
|
+
packageName: thirdParty,
|
|
362
|
+
modulePath: file.slice(file.lastIndexOf("/node_modules/") + "/node_modules/".length),
|
|
363
|
+
declared: side,
|
|
364
|
+
...decided,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
if (side !== "library")
|
|
368
|
+
return { zone: side, ...named, ...decided };
|
|
369
|
+
return {
|
|
370
|
+
zone: "library",
|
|
371
|
+
...(info?.name ? { packageName: info.name } : {}),
|
|
372
|
+
declared: "library",
|
|
373
|
+
...decided,
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
/** A file of a package that declares a side per entry, judged by the entries that reach it. */
|
|
377
|
+
const byOwners = (file, info, entries) => {
|
|
378
|
+
const ownership = ownershipOf(info, entries);
|
|
379
|
+
const owners = ownership.owners.get(file);
|
|
380
|
+
if (owners !== undefined)
|
|
381
|
+
return declaredAs(file, info, ownersSide(owners));
|
|
382
|
+
const shown = nodeModulesPackage(file) === undefined ? file : file.slice(info.dir.length + 1);
|
|
383
|
+
const left = ownership.unmapped.length === 0
|
|
384
|
+
? ""
|
|
385
|
+
: ` (the map leaves out ${ownership.unmapped.map((key) => `"${key}"`).join(", ")})`;
|
|
386
|
+
return {
|
|
387
|
+
zone: "error",
|
|
388
|
+
reason: `"${shown}" is in package "${info.name ?? info.dir}", whose "nifra.environment" gives each entry its own side, and no mapped entry reaches this file${left}. Import the package through a mapped entry`,
|
|
389
|
+
};
|
|
390
|
+
};
|
|
391
|
+
const invalidDeclaration = (info, problem) => {
|
|
392
|
+
const reason = `${info.dir}/package.json "nifra.environment": ${problem}`;
|
|
393
|
+
return info.name === undefined
|
|
394
|
+
? { zone: "error", reason }
|
|
395
|
+
: { zone: "error", reason, package: info.name };
|
|
396
|
+
};
|
|
326
397
|
const classifyUncached = (file) => {
|
|
327
398
|
if (generated.has(file))
|
|
328
399
|
return { zone: "generated" };
|
|
329
400
|
const thirdParty = nodeModulesPackage(file);
|
|
330
401
|
if (thirdParty !== undefined) {
|
|
331
|
-
const info =
|
|
332
|
-
const
|
|
333
|
-
|
|
334
|
-
|
|
402
|
+
const info = packageOf(file);
|
|
403
|
+
const declaration = info?.declaration ?? { kind: "none" };
|
|
404
|
+
if (info !== undefined && declaration.kind === "invalid")
|
|
405
|
+
return invalidDeclaration(info, declaration.problem);
|
|
406
|
+
if (info !== undefined && declaration.kind === "entries")
|
|
407
|
+
return byOwners(file, info, declaration.entries);
|
|
408
|
+
const declared = declaration.kind === "package" ? declaration.side : mappedSide(zones.packages, thirdParty);
|
|
335
409
|
return {
|
|
336
410
|
zone: "library",
|
|
337
411
|
packageName: thirdParty,
|
|
@@ -378,15 +452,21 @@ export function createZoneClassifier(options) {
|
|
|
378
452
|
return { zone: "shared" };
|
|
379
453
|
return { zone: "route-frontend" };
|
|
380
454
|
}
|
|
381
|
-
const
|
|
455
|
+
const configured = ZONE_FOLDERS[top] === undefined ? configuredPath(rel) : undefined;
|
|
456
|
+
const folder = ZONE_FOLDERS[top] ?? configured?.[1];
|
|
382
457
|
if (folder !== undefined) {
|
|
383
458
|
if (suffix === undefined || suffix === folder)
|
|
384
459
|
return { zone: folder };
|
|
385
460
|
if (suffix === "fn" && folder === "backend")
|
|
386
461
|
return { zone: "fn" };
|
|
462
|
+
const where = configured === undefined
|
|
463
|
+
? `sits in ${top}/`
|
|
464
|
+
: configured[0] === rel
|
|
465
|
+
? `is listed as ${folder} in "nifra.zones"`
|
|
466
|
+
: `sits in ${configured[0]}/, which "nifra.zones" lists as ${folder},`;
|
|
387
467
|
return {
|
|
388
468
|
zone: "error",
|
|
389
|
-
reason: `"${rel}"
|
|
469
|
+
reason: `"${rel}" ${where} but its ".${suffix}" suffix says otherwise. A file belongs to one side: move it, or drop the suffix`,
|
|
390
470
|
};
|
|
391
471
|
}
|
|
392
472
|
if (suffix !== undefined)
|
|
@@ -395,18 +475,14 @@ export function createZoneClassifier(options) {
|
|
|
395
475
|
}
|
|
396
476
|
// First-party code outside the app: a workspace package, or a relative import out of the app.
|
|
397
477
|
const info = packageFor(toPosix(dirname(file)));
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
if (
|
|
402
|
-
return
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
declared: "library",
|
|
407
|
-
}
|
|
408
|
-
: { zone: environment };
|
|
409
|
-
}
|
|
478
|
+
const declaration = info?.declaration ?? { kind: "none" };
|
|
479
|
+
if (info !== undefined && declaration.kind === "invalid")
|
|
480
|
+
return invalidDeclaration(info, declaration.problem);
|
|
481
|
+
if (info !== undefined && declaration.kind === "entries")
|
|
482
|
+
return byOwners(file, info, declaration.entries);
|
|
483
|
+
const environment = declaration.kind === "package" ? declaration.side : mappedSide(zones.packages, info?.name);
|
|
484
|
+
if (environment !== undefined)
|
|
485
|
+
return declaredAs(file, info, environment);
|
|
410
486
|
const declare = `"nifra": { "environment": "frontend" | "backend" | "shared" | "library" }`;
|
|
411
487
|
if (info?.name === undefined) {
|
|
412
488
|
return {
|
|
@@ -421,17 +497,58 @@ export function createZoneClassifier(options) {
|
|
|
421
497
|
reason: `package "${info.name}" is first-party code outside the app and declares no side. Add ${declare} to ${info.dir}/package.json, or give it a side from the app's package.json: "nifra": { "zones": { "packages": { "${suggestedPattern(info.name)}": "backend" } } } (or "library" if the browser may load it)`,
|
|
422
498
|
};
|
|
423
499
|
};
|
|
500
|
+
const byPath = (file) => {
|
|
501
|
+
const cached = cache.get(file);
|
|
502
|
+
if (cached !== undefined)
|
|
503
|
+
return cached;
|
|
504
|
+
const result = classifyUncached(file);
|
|
505
|
+
cache.set(file, result);
|
|
506
|
+
return result;
|
|
507
|
+
};
|
|
508
|
+
// Keyed by file and subpath: two entries may share one file and declare different sides.
|
|
509
|
+
const imports = new Map();
|
|
510
|
+
const byImport = (file, specifier) => {
|
|
511
|
+
const name = specifierPackage(specifier);
|
|
512
|
+
const info = name === undefined ? undefined : packageOf(file);
|
|
513
|
+
if (name === undefined || info?.name !== name || info.declaration.kind !== "entries")
|
|
514
|
+
return byPath(file);
|
|
515
|
+
const subpath = entrySubpath(specifier, name);
|
|
516
|
+
const cacheKey = `${file}\0${subpath}`;
|
|
517
|
+
const cached = imports.get(cacheKey);
|
|
518
|
+
if (cached !== undefined)
|
|
519
|
+
return cached;
|
|
520
|
+
const { entries } = info.declaration;
|
|
521
|
+
const key = entryKey(entries, subpath);
|
|
522
|
+
const side = key === undefined ? undefined : entries[key];
|
|
523
|
+
let result;
|
|
524
|
+
if (side === undefined) {
|
|
525
|
+
const mapped = Object.keys(entries)
|
|
526
|
+
.map((entry) => `"${entry}"`)
|
|
527
|
+
.join(", ");
|
|
528
|
+
result = {
|
|
529
|
+
zone: "error",
|
|
530
|
+
reason: `"${specifier}" names the "${subpath}" entry of package "${name}", whose "nifra.environment" map gives it no side (it maps ${mapped}). Map the entry, or import one that is mapped`,
|
|
531
|
+
entry: subpath,
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
// The resolver's pick must belong to the named entry; a file only other entries reach (an alias
|
|
536
|
+
// pointed at it) is judged by its path. A declaration file is types only and erased.
|
|
537
|
+
const owners = ownershipOf(info, entries).owners.get(file);
|
|
538
|
+
result =
|
|
539
|
+
owners !== undefined && !owners.has(side) && !DECLARATION_FILE.test(file)
|
|
540
|
+
? byPath(file)
|
|
541
|
+
: declaredAs(file, info, side, subpath);
|
|
542
|
+
}
|
|
543
|
+
imports.set(cacheKey, result);
|
|
544
|
+
return result;
|
|
545
|
+
};
|
|
424
546
|
return {
|
|
425
547
|
appRoot,
|
|
426
|
-
classify(input) {
|
|
548
|
+
classify(input, specifier) {
|
|
427
549
|
const absolute = isAbsolute(input) ? input : resolve(appRoot, input);
|
|
428
550
|
const file = realFile(absolute);
|
|
429
|
-
|
|
430
|
-
if (cached !== undefined)
|
|
431
|
-
return cached;
|
|
432
|
-
const result = classifyUncached(file);
|
|
433
|
-
cache.set(file, result);
|
|
434
|
-
return result;
|
|
551
|
+
return specifier === undefined ? byPath(file) : byImport(file, specifier);
|
|
435
552
|
},
|
|
436
553
|
};
|
|
437
554
|
}
|
|
@@ -459,6 +576,23 @@ export function specifierPackage(specifier) {
|
|
|
459
576
|
const parts = specifier.split("/");
|
|
460
577
|
return specifier.startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
|
|
461
578
|
}
|
|
579
|
+
/** The export subpath (`"."`, `"./react"`) a bare specifier of package `name` names. */
|
|
580
|
+
const entrySubpath = (specifier, name) => `.${withoutQuery(specifier.slice(name.length))}`;
|
|
581
|
+
/**
|
|
582
|
+
* The side a package's `"nifra": { "environment": ... }` value gives the bare import `specifier` of it:
|
|
583
|
+
* the package-wide string, or the side of the entry it names - the map's exact subpath, else its most
|
|
584
|
+
* specific `*` pattern. `undefined` when it gives none, as a map that leaves the entry out does.
|
|
585
|
+
*/
|
|
586
|
+
export function declaredSide(environment, specifier) {
|
|
587
|
+
const declaration = parseEnvironment(environment);
|
|
588
|
+
if (declaration.kind === "package")
|
|
589
|
+
return declaration.side;
|
|
590
|
+
const name = specifierPackage(specifier);
|
|
591
|
+
if (declaration.kind !== "entries" || name === undefined)
|
|
592
|
+
return undefined;
|
|
593
|
+
const key = entryKey(declaration.entries, entrySubpath(specifier, name));
|
|
594
|
+
return key === undefined ? undefined : declaration.entries[key];
|
|
595
|
+
}
|
|
462
596
|
/**
|
|
463
597
|
* Why a classified file may not ship to a browser, or `undefined` when it may. A `drizzle-orm` driver
|
|
464
598
|
* entry is recognized by the import as written (`specifier`) or by the file's path in the package.
|
|
@@ -467,6 +601,8 @@ export function browserDenial(classification, specifier) {
|
|
|
467
601
|
if (classification.zone === "error")
|
|
468
602
|
return classification.reason;
|
|
469
603
|
if (!BROWSER_ZONES.has(classification.zone)) {
|
|
604
|
+
if (classification.entry !== undefined)
|
|
605
|
+
return `package "${classification.packageName}" declares its "${classification.entry}" entry ${classification.zone}-only`;
|
|
470
606
|
return classification.zone === "route-backend"
|
|
471
607
|
? "it is a route's backend half, which runs on the server only"
|
|
472
608
|
: "it is backend code";
|
|
@@ -474,8 +610,11 @@ export function browserDenial(classification, specifier) {
|
|
|
474
610
|
if (classification.zone !== "library")
|
|
475
611
|
return undefined;
|
|
476
612
|
const name = classification.packageName;
|
|
477
|
-
if (classification.declared === "backend")
|
|
478
|
-
return
|
|
613
|
+
if (classification.declared === "backend") {
|
|
614
|
+
return classification.entry === undefined
|
|
615
|
+
? `package "${name}" declares itself backend-only`
|
|
616
|
+
: `package "${name}" declares its "${classification.entry}" entry backend-only`;
|
|
617
|
+
}
|
|
479
618
|
if (name !== undefined && SERVER_PACKAGES.includes(name)) {
|
|
480
619
|
return `package "${name}" is server code (a driver, server SDK or credential helper)`;
|
|
481
620
|
}
|
package/dist/zones.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zones.js","sourceRoot":"","sources":["../src/zones.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zones.js","sourceRoot":"","sources":["../src/zones.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/web",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Framework-agnostic SSR core for nifra - the render seam + HTML document orchestration.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"types": "./dist/client.d.ts",
|
|
43
43
|
"default": "./dist/client.js"
|
|
44
44
|
},
|
|
45
|
+
"./seo": {
|
|
46
|
+
"bun": "./src/seo.ts",
|
|
47
|
+
"types": "./dist/seo.d.ts",
|
|
48
|
+
"default": "./dist/seo.js"
|
|
49
|
+
},
|
|
45
50
|
"./vitals": {
|
|
46
51
|
"bun": "./src/vitals.ts",
|
|
47
52
|
"types": "./dist/vitals.d.ts",
|
|
@@ -314,8 +319,8 @@
|
|
|
314
319
|
"access": "public"
|
|
315
320
|
},
|
|
316
321
|
"dependencies": {
|
|
317
|
-
"@nifrajs/core": "5.
|
|
318
|
-
"@nifrajs/island-trigger": "5.
|
|
322
|
+
"@nifrajs/core": "5.1.0",
|
|
323
|
+
"@nifrajs/island-trigger": "5.1.0",
|
|
319
324
|
"parse5": "8.0.1"
|
|
320
325
|
},
|
|
321
326
|
"peerDependencies": {
|
package/src/client.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* a full page load). DOM-only - never imported on the server, so the store stays SSR-safe.
|
|
6
6
|
*/
|
|
7
7
|
import { trustedHeadAttributes } from "./internal/head-attributes.ts"
|
|
8
|
+
import { appUrl } from "./internal/route-path.ts"
|
|
8
9
|
import { EXECUTABLE_SCRIPT_TYPES, INERT_SCRIPT_TYPES } from "./internal/script-types.ts"
|
|
9
10
|
import type { Meta } from "./manifest.ts"
|
|
10
11
|
import {
|
|
@@ -232,7 +233,7 @@ export function installHistory(
|
|
|
232
233
|
router: ClientRouter,
|
|
233
234
|
options: InstallHistoryOptions = {},
|
|
234
235
|
): () => void {
|
|
235
|
-
const fallback = options.fallback ?? ((path: string) => location.assign(path))
|
|
236
|
+
const fallback = options.fallback ?? ((path: string) => location.assign(appUrl(path)))
|
|
236
237
|
|
|
237
238
|
// We manage scroll ourselves (save per history entry, restore after the navigated content
|
|
238
239
|
// renders), so disable the browser's native restoration which would otherwise fight us.
|
|
@@ -364,7 +365,7 @@ export function installHistory(
|
|
|
364
365
|
if (mode === "replace") {
|
|
365
366
|
// Replace the current entry (same index) with the new URL. The entry we're leaving is discarded, so
|
|
366
367
|
// its scroll isn't worth saving; the new route scrolls to its fragment target, else the top.
|
|
367
|
-
history.replaceState(entryState, "", path)
|
|
368
|
+
history.replaceState(entryState, "", appUrl(path))
|
|
368
369
|
pendingScroll = url.hash !== "" ? { hash: hashId(url.hash) } : { pos: [0, 0] }
|
|
369
370
|
} else {
|
|
370
371
|
// Save the leaving entry's scroll (spread keeps its nifraIndex), push a fresh higher-indexed entry
|
|
@@ -372,7 +373,7 @@ export function installHistory(
|
|
|
372
373
|
history.replaceState({ ...(history.state ?? {}), nifraScroll: [scrollX, scrollY] }, "")
|
|
373
374
|
index += 1
|
|
374
375
|
entryState.nifraIndex = index
|
|
375
|
-
history.pushState(entryState, "", path)
|
|
376
|
+
history.pushState(entryState, "", appUrl(path))
|
|
376
377
|
pendingScroll = url.hash !== "" ? { hash: hashId(url.hash) } : { pos: [0, 0] }
|
|
377
378
|
}
|
|
378
379
|
here = url.pathname + url.search + url.hash
|
|
@@ -555,9 +556,9 @@ export function installHistory(
|
|
|
555
556
|
if (expected === undefined) {
|
|
556
557
|
history.replaceState({ ...(history.state ?? {}), nifraScroll: [scrollX, scrollY] }, "")
|
|
557
558
|
index += 1
|
|
558
|
-
history.pushState({ nifraIndex: index }, "", path)
|
|
559
|
+
history.pushState({ nifraIndex: index }, "", appUrl(path))
|
|
559
560
|
} else {
|
|
560
|
-
history.replaceState(history.state, "", path + location.hash)
|
|
561
|
+
history.replaceState(history.state, "", appUrl(path) + location.hash)
|
|
561
562
|
}
|
|
562
563
|
here = location.pathname + location.search + location.hash
|
|
563
564
|
pendingScroll = location.hash !== "" ? { hash: hashId(location.hash) } : { pos: [0, 0] }
|
|
@@ -610,11 +611,6 @@ export function installHistory(
|
|
|
610
611
|
}
|
|
611
612
|
}
|
|
612
613
|
|
|
613
|
-
/**
|
|
614
|
-
* Intercept submissions of same-origin `<form method="post">` whose action targets an app route:
|
|
615
|
-
* submit via the router (no full reload - POST the action, then revalidate the active loader). On
|
|
616
|
-
* failure it falls back to a native submit, so the form still works. Returns a teardown function.
|
|
617
|
-
*/
|
|
618
614
|
/**
|
|
619
615
|
* Sync the document head to a route's resolved {@link Meta} on client navigation. Sets the title
|
|
620
616
|
* (when provided) and replaces the **managed** (`data-nifra`) `<meta>`/`<link>` tags - static head
|
|
@@ -689,6 +685,17 @@ export function applyHead(head: Meta): void {
|
|
|
689
685
|
}
|
|
690
686
|
}
|
|
691
687
|
|
|
688
|
+
// A control named like a form property shadows it (`<input name="target">` makes `form.target` that
|
|
689
|
+
// input), so the form's own state is read through the prototype accessors.
|
|
690
|
+
function formProperty(form: HTMLFormElement, name: "action" | "method" | "target"): string {
|
|
691
|
+
return String(Reflect.get(HTMLFormElement.prototype, name, form))
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
/**
|
|
695
|
+
* Intercept submissions of same-origin `<form method="post">` whose action targets an app route:
|
|
696
|
+
* submit via the router (no full reload - POST the action, then revalidate the active loader). On
|
|
697
|
+
* failure it falls back to a native submit, so the form still works. Returns a teardown function.
|
|
698
|
+
*/
|
|
692
699
|
export function installForms(router: ClientRouter): () => void {
|
|
693
700
|
// Forms whose data submit failed before the server answered: their next submit event is the native
|
|
694
701
|
// post that replaces it.
|
|
@@ -702,20 +709,25 @@ export function installForms(router: ClientRouter): () => void {
|
|
|
702
709
|
// name=value is part of the submission (`<button name="intent" value="delete">`).
|
|
703
710
|
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: a submit event's submitter is the submit button or input that fired it, or null
|
|
704
711
|
const submitter = event.submitter as HTMLButtonElement | null
|
|
705
|
-
const method = submitter?.hasAttribute("formmethod")
|
|
712
|
+
const method = submitter?.hasAttribute("formmethod")
|
|
713
|
+
? submitter.formMethod
|
|
714
|
+
: formProperty(form, "method")
|
|
706
715
|
if (method.toLowerCase() !== "post") return // GET forms submit natively
|
|
707
|
-
const target = submitter?.hasAttribute("formtarget")
|
|
716
|
+
const target = submitter?.hasAttribute("formtarget")
|
|
717
|
+
? submitter.formTarget
|
|
718
|
+
: formProperty(form, "target")
|
|
708
719
|
if (target !== "" && target !== "_self") return // it loads in another browsing context
|
|
709
720
|
// Resolved (or the current document URL if unset).
|
|
710
721
|
const url = sameDocumentUrl(
|
|
711
|
-
submitter?.hasAttribute("formaction") ? submitter.formAction : form
|
|
722
|
+
submitter?.hasAttribute("formaction") ? submitter.formAction : formProperty(form, "action"),
|
|
712
723
|
)
|
|
713
724
|
if (url === null) return
|
|
714
725
|
if (router.match(url.pathname) === null) return // not an app route → native submit
|
|
715
726
|
event.preventDefault()
|
|
716
727
|
// `data-nifra-revalidate="false"` opts out of the post-action loader revalidation (the action's
|
|
717
728
|
// actionData drives the update); absent or any other value keeps the default revalidation.
|
|
718
|
-
const revalidate =
|
|
729
|
+
const revalidate =
|
|
730
|
+
Element.prototype.getAttribute.call(form, "data-nifra-revalidate") !== "false"
|
|
719
731
|
const body = new FormData(form, submitter)
|
|
720
732
|
router.submit(url.pathname + url.search, body, { revalidate }).catch((error) => {
|
|
721
733
|
const to = redirectOf(error)
|
|
@@ -724,7 +736,7 @@ export function installForms(router: ClientRouter): () => void {
|
|
|
724
736
|
else {
|
|
725
737
|
// Nothing reached the server - post natively, through the same button.
|
|
726
738
|
native.add(form)
|
|
727
|
-
|
|
739
|
+
HTMLFormElement.prototype.requestSubmit.call(form, submitter)
|
|
728
740
|
}
|
|
729
741
|
})
|
|
730
742
|
}
|
package/src/dev-port.ts
CHANGED
|
@@ -38,13 +38,14 @@ export const explainBindFailure = (err: unknown, port: number): Error =>
|
|
|
38
38
|
|
|
39
39
|
/** The bits of a Node server {@link listenOrExplain} touches - structural, so a test can fake it. */
|
|
40
40
|
export interface ListenTarget {
|
|
41
|
-
listen(port: number, cb: () => void): void
|
|
41
|
+
listen(port: number, hostname: string, cb: () => void): void
|
|
42
42
|
once(event: "error", cb: (err: unknown) => void): void
|
|
43
43
|
removeListener(event: "error", cb: (err: unknown) => void): void
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* `listen`, but a bind failure becomes a readable nifra error instead of Node's raw internal throw.
|
|
48
|
+
* The hostname is required: omitting it binds every interface, and a dev server is local-only.
|
|
48
49
|
*
|
|
49
50
|
* Without an `error` listener attached, Node throws from deep inside `node:events`, the new process dies
|
|
50
51
|
* in the background, and nothing connects that death to the stale page in front of you.
|
|
@@ -52,7 +53,7 @@ export interface ListenTarget {
|
|
|
52
53
|
export function listenOrExplain(
|
|
53
54
|
server: ListenTarget,
|
|
54
55
|
port: number,
|
|
55
|
-
hostname
|
|
56
|
+
hostname: string,
|
|
56
57
|
): Promise<void> {
|
|
57
58
|
return new Promise<void>((resolve, reject) => {
|
|
58
59
|
const onError = (err: unknown): void => reject(explainBindFailure(err, port))
|
|
@@ -63,13 +64,6 @@ export function listenOrExplain(
|
|
|
63
64
|
server.removeListener("error", onError)
|
|
64
65
|
resolve()
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
-
else {
|
|
68
|
-
;(
|
|
69
|
-
server as ListenTarget & {
|
|
70
|
-
listen(port: number, hostname: string, cb: () => void): void
|
|
71
|
-
}
|
|
72
|
-
).listen(port, hostname, onListening)
|
|
73
|
-
}
|
|
67
|
+
server.listen(port, hostname, onListening)
|
|
74
68
|
})
|
|
75
69
|
}
|