@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/internal/codegen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/internal/codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { BunPlugin } from "bun";
|
|
2
|
+
/** A chunk file the build wrote. */
|
|
3
|
+
export interface CopyChunkFile {
|
|
4
|
+
/** The file name, served under the build's public path. */
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly text: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CopySplit {
|
|
9
|
+
/** The client build's plugin, registered after every other one. */
|
|
10
|
+
readonly plugin: BunPlugin;
|
|
11
|
+
/** A module with its tables replaced by chunk ids, or `undefined` when it has none to split. */
|
|
12
|
+
rewrite(file: string, source: string): string | undefined;
|
|
13
|
+
/** One chunk per locale for the tables this build split, and each one's URL by locale key. */
|
|
14
|
+
chunks(publicPath: string): {
|
|
15
|
+
readonly urls: Readonly<Record<string, string>>;
|
|
16
|
+
readonly files: readonly CopyChunkFile[];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The copy split for an app, or `undefined` when it defines no copy tables. An app that does, but whose
|
|
21
|
+
* TypeScript has no compiler API, builds with its tables whole, with a warning.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadCopySplit(root: string, options?: {
|
|
24
|
+
readonly skip?: readonly string[];
|
|
25
|
+
readonly warn?: (message: string) => void;
|
|
26
|
+
}): Promise<CopySplit | undefined>;
|
|
27
|
+
//# sourceMappingURL=copy-split.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-split.d.ts","sourceRoot":"","sources":["../../src/internal/copy-split.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAgDpC,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,gGAAgG;IAChG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACzD,8FAA8F;IAC9F,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG;QAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAA;KACzC,CAAA;CACF;AAmCD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAC7F,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAmGhC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Copy tables (`@nifrajs/i18n/copy`) in a production client build. Each table a module declares is
|
|
11
|
+
* replaced by its chunk id, and its values move into one chunk per locale, so a page's JavaScript carries
|
|
12
|
+
* the copy of the locale it renders in and none of the others. The server bundle keeps every table whole.
|
|
13
|
+
*
|
|
14
|
+
* The tables are found by `@nifrajs/i18n/extract` with the app's own TypeScript, both resolved from the
|
|
15
|
+
* app root: `@nifrajs/web` depends on neither. An app with no `defineCopy` pays one source scan.
|
|
16
|
+
*/
|
|
17
|
+
import { createHash } from "node:crypto";
|
|
18
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
19
|
+
import { createRequire } from "node:module";
|
|
20
|
+
import { join, resolve as resolvePath } from "node:path";
|
|
21
|
+
import { pathToFileURL } from "node:url";
|
|
22
|
+
import { addSourceTransform, normalizeFilePath } from "../plugins/kit.js";
|
|
23
|
+
import { isTypeScriptCompiler } from "./typescript-api.js";
|
|
24
|
+
const COPY_MODULE = "@nifrajs/i18n/copy";
|
|
25
|
+
const EXTRACT_MODULE = "@nifrajs/i18n/extract";
|
|
26
|
+
const SCRIPT = /\.[cm]?[jt]sx?$/;
|
|
27
|
+
const REWRITABLE = /\.m?[jt]sx?(\?|$)/;
|
|
28
|
+
const DEPENDENCY = /[\\/]node_modules[\\/]/;
|
|
29
|
+
const MAX_DEPTH = 32;
|
|
30
|
+
const isExtract = (value) => typeof value === "object" &&
|
|
31
|
+
value !== null &&
|
|
32
|
+
"createCopyScanner" in value &&
|
|
33
|
+
typeof value.createCopyScanner === "function" &&
|
|
34
|
+
"copyChunks" in value &&
|
|
35
|
+
typeof value.copyChunks === "function";
|
|
36
|
+
const readText = (file) => {
|
|
37
|
+
try {
|
|
38
|
+
return readFileSync(file, "utf8");
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
/** Whether a module under `dir` imports the copy module: the only way an app defines copy tables. */
|
|
45
|
+
function definesCopy(dir, skip, depth = 0) {
|
|
46
|
+
let entries;
|
|
47
|
+
try {
|
|
48
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
for (const entry of entries) {
|
|
54
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules")
|
|
55
|
+
continue;
|
|
56
|
+
const path = join(dir, entry.name);
|
|
57
|
+
if (entry.isDirectory()) {
|
|
58
|
+
if (depth < MAX_DEPTH && !skip.has(path) && definesCopy(path, skip, depth + 1))
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
else if (entry.isFile() && SCRIPT.test(entry.name)) {
|
|
62
|
+
if (readText(path)?.includes(COPY_MODULE) === true)
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const loaderOf = (path) => {
|
|
69
|
+
if (path.endsWith("x"))
|
|
70
|
+
return path.endsWith(".tsx") ? "tsx" : "jsx";
|
|
71
|
+
return /\.m?ts$/.test(path) ? "ts" : "js";
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* The copy split for an app, or `undefined` when it defines no copy tables. An app that does, but whose
|
|
75
|
+
* TypeScript has no compiler API, builds with its tables whole, with a warning.
|
|
76
|
+
*/
|
|
77
|
+
export async function loadCopySplit(root, options = {}) {
|
|
78
|
+
const appRoot = resolvePath(root);
|
|
79
|
+
const require = createRequire(join(appRoot, "package.json"));
|
|
80
|
+
let extractPath;
|
|
81
|
+
try {
|
|
82
|
+
extractPath = require.resolve(EXTRACT_MODULE);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
if (!definesCopy(appRoot, new Set((options.skip ?? []).map((dir) => resolvePath(dir))))) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
const warn = options.warn ?? console.warn;
|
|
91
|
+
let ts;
|
|
92
|
+
try {
|
|
93
|
+
ts = require("typescript");
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
ts = undefined;
|
|
97
|
+
}
|
|
98
|
+
if (!isTypeScriptCompiler(ts)) {
|
|
99
|
+
warn("[nifra/web] copy tables ship every locale in the client bundle: splitting them by locale reads the source with the TypeScript compiler API, and the app's TypeScript has none (TypeScript 7 ships none; install typescript@^6 as a dev dependency).");
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const extract = await import(__rewriteRelativeImportExtension(pathToFileURL(extractPath).href));
|
|
103
|
+
if (!isExtract(extract)) {
|
|
104
|
+
warn(`[nifra/web] copy tables ship every locale in the client bundle: ${EXTRACT_MODULE} at ${extractPath} predates the client split; update @nifrajs/i18n.`);
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const scanner = extract.createCopyScanner(ts, {
|
|
108
|
+
root: appRoot.replaceAll("\\", "/"),
|
|
109
|
+
read: readText,
|
|
110
|
+
resolve: (specifier, from) => {
|
|
111
|
+
try {
|
|
112
|
+
return createRequire(from).resolve(specifier);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
const split = new Map();
|
|
120
|
+
const rewrite = (file, source) => {
|
|
121
|
+
const path = normalizeFilePath(file);
|
|
122
|
+
// The scanner reads the file off disk: text another transform changed first is left alone, since
|
|
123
|
+
// its tables' positions are no longer the file's.
|
|
124
|
+
if (!REWRITABLE.test(path) || DEPENDENCY.test(path) || readText(path) !== source) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const out = scanner.rewrite(path);
|
|
128
|
+
if (out === undefined)
|
|
129
|
+
return undefined;
|
|
130
|
+
split.set(path, scanner.tables(path).flatMap((site) => {
|
|
131
|
+
const locales = site.values === undefined ? undefined : scanner.definition(site.definition)?.locales;
|
|
132
|
+
return site.values === undefined || locales === undefined
|
|
133
|
+
? []
|
|
134
|
+
: [{ id: site.id, values: site.values, locales }];
|
|
135
|
+
}));
|
|
136
|
+
return out;
|
|
137
|
+
};
|
|
138
|
+
return {
|
|
139
|
+
plugin: {
|
|
140
|
+
name: "nifra-copy-split",
|
|
141
|
+
setup(build) {
|
|
142
|
+
addSourceTransform(build, rewrite);
|
|
143
|
+
build.onLoad({ filter: REWRITABLE }, async (args) => {
|
|
144
|
+
if (args.namespace !== "file")
|
|
145
|
+
return undefined;
|
|
146
|
+
const path = normalizeFilePath(args.path);
|
|
147
|
+
const contents = rewrite(path, await Bun.file(path).text());
|
|
148
|
+
return contents === undefined ? undefined : { contents, loader: loaderOf(path) };
|
|
149
|
+
});
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
rewrite,
|
|
153
|
+
chunks(publicPath) {
|
|
154
|
+
// Sorted, so a chunk's bytes, and so its name, do not depend on the order modules loaded in.
|
|
155
|
+
const tables = [...split.values()].flat().sort((a, b) => (a.id < b.id ? -1 : 1));
|
|
156
|
+
const urls = {};
|
|
157
|
+
const files = [];
|
|
158
|
+
if (tables.length === 0)
|
|
159
|
+
return { urls, files };
|
|
160
|
+
const chunks = [...extract.copyChunks(tables)].sort(([a], [b]) => (a < b ? -1 : 1));
|
|
161
|
+
for (const [locale, chunk] of chunks) {
|
|
162
|
+
// A JSON string parses faster than the same object as a literal.
|
|
163
|
+
const text = `export default JSON.parse(${JSON.stringify(JSON.stringify(chunk))})\n`;
|
|
164
|
+
const hash = createHash("sha256").update(text).digest("hex").slice(0, 12);
|
|
165
|
+
const name = `copy-${locale.replace(/[^A-Za-z0-9-]/g, "_")}-${hash}.js`;
|
|
166
|
+
urls[locale] = `${publicPath}${name}`;
|
|
167
|
+
files.push({ name, text });
|
|
168
|
+
}
|
|
169
|
+
return { urls, files };
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=copy-split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-split.js","sourceRoot":"","sources":["../../src/internal/copy-split.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PackageEnvironment } from "../zones.js";
|
|
2
|
+
export type EnvironmentDeclaration = {
|
|
3
|
+
readonly kind: "none";
|
|
4
|
+
} | {
|
|
5
|
+
readonly kind: "package";
|
|
6
|
+
readonly side: PackageEnvironment;
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: "entries";
|
|
9
|
+
readonly entries: Readonly<Record<string, PackageEnvironment>>;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: "invalid";
|
|
12
|
+
readonly problem: string;
|
|
13
|
+
};
|
|
14
|
+
/** A manifest's `nifra.environment`. A string naming no side declares nothing, as it always has. */
|
|
15
|
+
export declare function parseEnvironment(value: unknown): EnvironmentDeclaration;
|
|
16
|
+
/**
|
|
17
|
+
* The mapped key that decides `subpath`: the exact key, else the `*` pattern with the longest prefix,
|
|
18
|
+
* then the longest key, where `*` matches at least one character - as Node matches `exports`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function entryKey(entries: Readonly<Record<string, PackageEnvironment>>, subpath: string): string | undefined;
|
|
21
|
+
export interface EntryOwnership {
|
|
22
|
+
/** Each file a mapped entry reaches, by real path, with the sides of every entry that reaches it. */
|
|
23
|
+
readonly owners: ReadonlyMap<string, ReadonlySet<PackageEnvironment>>;
|
|
24
|
+
/** Export subpaths the map gives no side. */
|
|
25
|
+
readonly unmapped: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
/** Which mapped entries reach each file of the package at `dir` (a real path). */
|
|
28
|
+
export declare function entryOwnership(dir: string, manifest: Readonly<Record<string, unknown>>, entries: Readonly<Record<string, PackageEnvironment>>): EntryOwnership;
|
|
29
|
+
/**
|
|
30
|
+
* The `package.json` of the installed package `name`, as Node finds it: the nearest
|
|
31
|
+
* `node_modules/<name>` at or above `fromDir`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function installedManifest(fromDir: string, name: string): string | undefined;
|
|
34
|
+
//# sourceMappingURL=package-entries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-entries.d.ts","sourceRoot":"","sources":["../../src/internal/package-entries.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIrD,MAAM,MAAM,sBAAsB,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAM1D,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAyBvE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EACrD,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAYpB;AAED,MAAM,WAAW,cAAc;IAC7B,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACrE,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAuKD,kFAAkF;AAClF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC3C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,GACpD,cAAc,CAiEhB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASnF"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-entry package sides: `"nifra": { "environment": { ".": "backend", "./react": "frontend" } }`.
|
|
3
|
+
*
|
|
4
|
+
* An import names an entry, and that entry's side decides it. A path names no entry, so a file is owned
|
|
5
|
+
* by every mapped entry that reaches it inside the package: the entry's targets under any export
|
|
6
|
+
* condition, followed through relative imports. A stage that sees only paths decides by those owners;
|
|
7
|
+
* which entry an import may name is decided where the import is written, from its specifier.
|
|
8
|
+
*/
|
|
9
|
+
import { readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
10
|
+
import { dirname, extname, join, relative } from "node:path";
|
|
11
|
+
import { tokenize } from "./private-env.js";
|
|
12
|
+
import { withoutQuery } from "./without-query.js";
|
|
13
|
+
const SIDES = new Set(["frontend", "backend", "shared", "library"]);
|
|
14
|
+
const isSide = (value) => typeof value === "string" && SIDES.has(value);
|
|
15
|
+
/** A manifest's `nifra.environment`. A string naming no side declares nothing, as it always has. */
|
|
16
|
+
export function parseEnvironment(value) {
|
|
17
|
+
if (isSide(value))
|
|
18
|
+
return { kind: "package", side: value };
|
|
19
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
20
|
+
return { kind: "none" };
|
|
21
|
+
const entries = {};
|
|
22
|
+
for (const [key, side] of Object.entries(value)) {
|
|
23
|
+
if (key !== "." && !key.startsWith("./"))
|
|
24
|
+
return {
|
|
25
|
+
kind: "invalid",
|
|
26
|
+
problem: `key "${key}" must be "." or a subpath starting with "./"`,
|
|
27
|
+
};
|
|
28
|
+
if (key.indexOf("*") !== key.lastIndexOf("*"))
|
|
29
|
+
return { kind: "invalid", problem: `key "${key}" may hold one "*"` };
|
|
30
|
+
if (!isSide(side))
|
|
31
|
+
return {
|
|
32
|
+
kind: "invalid",
|
|
33
|
+
problem: `"${key}" must be one of frontend, backend, shared, library`,
|
|
34
|
+
};
|
|
35
|
+
entries[key] = side;
|
|
36
|
+
}
|
|
37
|
+
return Object.keys(entries).length === 0
|
|
38
|
+
? {
|
|
39
|
+
kind: "invalid",
|
|
40
|
+
problem: 'maps no entry; give each export subpath (".", "./react") a side',
|
|
41
|
+
}
|
|
42
|
+
: { kind: "entries", entries };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The mapped key that decides `subpath`: the exact key, else the `*` pattern with the longest prefix,
|
|
46
|
+
* then the longest key, where `*` matches at least one character - as Node matches `exports`.
|
|
47
|
+
*/
|
|
48
|
+
export function entryKey(entries, subpath) {
|
|
49
|
+
if (Object.hasOwn(entries, subpath))
|
|
50
|
+
return subpath;
|
|
51
|
+
let best;
|
|
52
|
+
for (const key of Object.keys(entries)) {
|
|
53
|
+
const star = key.indexOf("*");
|
|
54
|
+
if (star === -1 || subpath.length < key.length)
|
|
55
|
+
continue;
|
|
56
|
+
if (!subpath.startsWith(key.slice(0, star)) || !subpath.endsWith(key.slice(star + 1)))
|
|
57
|
+
continue;
|
|
58
|
+
const bestStar = best?.indexOf("*") ?? -1;
|
|
59
|
+
if (best === undefined || star > bestStar || (star === bestStar && key.length > best.length))
|
|
60
|
+
best = key;
|
|
61
|
+
}
|
|
62
|
+
return best;
|
|
63
|
+
}
|
|
64
|
+
const isFile = (path) => statSync(path, { throwIfNoEntry: false })?.isFile() ?? false;
|
|
65
|
+
const real = (path) => {
|
|
66
|
+
try {
|
|
67
|
+
return realpathSync.native(path).replaceAll("\\", "/");
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return path.replaceAll("\\", "/");
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const SCRIPT = /\.(?:[cm]?[jt]sx?|svelte|vue)$/;
|
|
74
|
+
const STYLESHEET = /\.(?:css|scss|sass|less|styl)$/;
|
|
75
|
+
const DECLARATION = /\.d\.[cm]?ts$/;
|
|
76
|
+
const PROBE_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs", ".json"];
|
|
77
|
+
/** A TypeScript source imports its sibling by the extension it compiles to. */
|
|
78
|
+
const SOURCE_TWINS = {
|
|
79
|
+
".js": [".ts", ".tsx"],
|
|
80
|
+
".jsx": [".tsx"],
|
|
81
|
+
".mjs": [".mts"],
|
|
82
|
+
".cjs": [".cts"],
|
|
83
|
+
};
|
|
84
|
+
function probe(base) {
|
|
85
|
+
if (isFile(base))
|
|
86
|
+
return base;
|
|
87
|
+
const extension = extname(base);
|
|
88
|
+
for (const twin of SOURCE_TWINS[extension] ?? []) {
|
|
89
|
+
const candidate = `${base.slice(0, -extension.length)}${twin}`;
|
|
90
|
+
if (isFile(candidate))
|
|
91
|
+
return candidate;
|
|
92
|
+
}
|
|
93
|
+
for (const candidate of PROBE_EXTENSIONS.map((ext) => `${base}${ext}`)) {
|
|
94
|
+
if (isFile(candidate))
|
|
95
|
+
return candidate;
|
|
96
|
+
}
|
|
97
|
+
for (const candidate of PROBE_EXTENSIONS.map((ext) => join(base, `index${ext}`))) {
|
|
98
|
+
if (isFile(candidate))
|
|
99
|
+
return candidate;
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
const CLAUSE_PUNCT = new Set(["{", "}", ",", "*"]);
|
|
104
|
+
const isPunct = (token, value) => token?.kind === "punct" && token.value === value;
|
|
105
|
+
const isId = (token, value) => token?.kind === "id" && token.value === value;
|
|
106
|
+
/**
|
|
107
|
+
* Whether the `import`/`export` clause ending at the `from` token `at` binds only types: `import type`,
|
|
108
|
+
* `export type`, or a `{ }` list whose every specifier is `type`. Such an edge grants no ownership - a
|
|
109
|
+
* backend file a frontend entry merely types against stays backend. `import { type A }` survives as
|
|
110
|
+
* `import {}` under Vite with `verbatimModuleSyntax`; dropping it then fails closed, since the guard
|
|
111
|
+
* judges that load by the file's remaining owners.
|
|
112
|
+
*/
|
|
113
|
+
function typeOnlyClause(tokens, at) {
|
|
114
|
+
let start = at - 1;
|
|
115
|
+
for (; start >= 0; start--) {
|
|
116
|
+
const token = tokens[start];
|
|
117
|
+
if (isId(token, "import") || isId(token, "export"))
|
|
118
|
+
break;
|
|
119
|
+
if (token?.kind !== "id" && !(token?.kind === "punct" && CLAUSE_PUNCT.has(token.value)))
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
if (start < 0)
|
|
123
|
+
return false;
|
|
124
|
+
const clause = tokens.slice(start + 1, at);
|
|
125
|
+
// `import type from "./x"` and `import type, { a } from` bind a default import named `type`.
|
|
126
|
+
if (isId(clause[0], "type"))
|
|
127
|
+
return clause.length > 1 && !isPunct(clause[1], ",");
|
|
128
|
+
if (!isPunct(clause[0], "{") || !isPunct(clause.at(-1), "}"))
|
|
129
|
+
return false;
|
|
130
|
+
const specifiers = [[]];
|
|
131
|
+
for (const token of clause.slice(1, -1)) {
|
|
132
|
+
if (isPunct(token, ","))
|
|
133
|
+
specifiers.push([]);
|
|
134
|
+
else
|
|
135
|
+
specifiers.at(-1)?.push(token);
|
|
136
|
+
}
|
|
137
|
+
const named = specifiers.filter((specifier) => specifier.length > 0);
|
|
138
|
+
// `{ type as x }` imports a value named `type`; `{ type A }` and `{ type A as B }` import types.
|
|
139
|
+
return (named.length > 0 &&
|
|
140
|
+
named.every((specifier) => isId(specifier[0], "type") &&
|
|
141
|
+
(specifier.length === 2 || (specifier.length === 4 && isId(specifier[2], "as")))));
|
|
142
|
+
}
|
|
143
|
+
/** The relative specifiers a module loads: imports, re-exports, `import()`s, `require`s and
|
|
144
|
+
* `new URL()`s (a worker or an asset beside it). A clause binding only types loads nothing. */
|
|
145
|
+
function relativeImports(code) {
|
|
146
|
+
const tokens = tokenize(code);
|
|
147
|
+
const found = [];
|
|
148
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
149
|
+
const token = tokens[i];
|
|
150
|
+
if (token?.kind !== "id")
|
|
151
|
+
continue;
|
|
152
|
+
const previous = tokens[i - 1];
|
|
153
|
+
if (previous?.kind === "punct" && previous.value === ".")
|
|
154
|
+
continue;
|
|
155
|
+
let next = tokens[i + 1];
|
|
156
|
+
const call = next?.kind === "punct" && next.value === "(";
|
|
157
|
+
const url = token.value === "URL" && previous?.kind === "id" && previous.value === "new";
|
|
158
|
+
if (token.value === "require" || url || (token.value === "import" && call)) {
|
|
159
|
+
if (!call)
|
|
160
|
+
continue;
|
|
161
|
+
next = tokens[i + 2];
|
|
162
|
+
}
|
|
163
|
+
else if (token.value !== "from" && token.value !== "import")
|
|
164
|
+
continue;
|
|
165
|
+
if (next?.kind !== "string" || !/^\.\.?\//.test(next.value))
|
|
166
|
+
continue;
|
|
167
|
+
if (token.value === "from" && typeOnlyClause(tokens, i))
|
|
168
|
+
continue;
|
|
169
|
+
found.push(next.value);
|
|
170
|
+
}
|
|
171
|
+
return found;
|
|
172
|
+
}
|
|
173
|
+
/** What a stylesheet pulls in beside it: `@import`s and `url()`s that name no scheme or root. */
|
|
174
|
+
function stylesheetImports(code) {
|
|
175
|
+
const text = code.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
176
|
+
const found = [];
|
|
177
|
+
for (const match of text.matchAll(/@import\s+(?:url\(\s*)?["']?([^"'()\s;]+)|url\(\s*["']?([^"'()\s]+)/g)) {
|
|
178
|
+
const reference = match[1] ?? match[2] ?? "";
|
|
179
|
+
if (reference !== "" && !/^(?:[a-z][\w+.-]*:|\/|#|~)/i.test(reference))
|
|
180
|
+
found.push(reference);
|
|
181
|
+
}
|
|
182
|
+
return found;
|
|
183
|
+
}
|
|
184
|
+
/** Every string target of an export value, under every condition. */
|
|
185
|
+
function targetsOf(value) {
|
|
186
|
+
if (typeof value === "string")
|
|
187
|
+
return value.startsWith("./") ? [value] : [];
|
|
188
|
+
if (Array.isArray(value))
|
|
189
|
+
return value.flatMap(targetsOf);
|
|
190
|
+
if (typeof value === "object" && value !== null)
|
|
191
|
+
return Object.values(value).flatMap(targetsOf);
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
/** `exports` as subpath entries; without it, the root is `main`/`module`/`browser` and any file a subpath. */
|
|
195
|
+
function exportEntries(manifest, entries) {
|
|
196
|
+
const exports = manifest.exports;
|
|
197
|
+
if (exports === undefined || exports === null) {
|
|
198
|
+
const roots = [manifest.main, manifest.module, manifest.browser]
|
|
199
|
+
.filter((root) => typeof root === "string")
|
|
200
|
+
.map((root) => (root.startsWith("./") ? root : `./${root}`));
|
|
201
|
+
return [
|
|
202
|
+
[".", roots.length > 0 ? roots : ["./index.js"]],
|
|
203
|
+
...Object.keys(entries)
|
|
204
|
+
.filter((key) => key !== ".")
|
|
205
|
+
.map((key) => [key, [key]]),
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
if (typeof exports !== "object" || Array.isArray(exports))
|
|
209
|
+
return [[".", targetsOf(exports)]];
|
|
210
|
+
const keys = Object.keys(exports);
|
|
211
|
+
if (keys.length === 0 || !keys.every((key) => key.startsWith(".")))
|
|
212
|
+
return [[".", targetsOf(exports)]];
|
|
213
|
+
return Object.entries(exports).map(([key, value]) => [key, targetsOf(value)]);
|
|
214
|
+
}
|
|
215
|
+
/** Every file under `dir`, outside `node_modules`. */
|
|
216
|
+
function filesUnder(dir) {
|
|
217
|
+
let names;
|
|
218
|
+
try {
|
|
219
|
+
names = readdirSync(dir, { recursive: true, encoding: "utf8" });
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
return names
|
|
225
|
+
.filter((name) => !/(?:^|[\\/])node_modules(?:[\\/]|$)/.test(name))
|
|
226
|
+
.map((name) => join(dir, name))
|
|
227
|
+
.filter(isFile);
|
|
228
|
+
}
|
|
229
|
+
/** Which mapped entries reach each file of the package at `dir` (a real path). */
|
|
230
|
+
export function entryOwnership(dir, manifest, entries) {
|
|
231
|
+
const owners = new Map();
|
|
232
|
+
const unmapped = new Set();
|
|
233
|
+
const queue = [];
|
|
234
|
+
const reach = (path, side) => {
|
|
235
|
+
const file = real(path);
|
|
236
|
+
if (!file.startsWith(`${dir}/`) || file.slice(dir.length).includes("/node_modules/"))
|
|
237
|
+
return;
|
|
238
|
+
const sides = owners.get(file) ?? new Set();
|
|
239
|
+
if (sides.has(side))
|
|
240
|
+
return;
|
|
241
|
+
sides.add(side);
|
|
242
|
+
owners.set(file, sides);
|
|
243
|
+
queue.push([file, side]);
|
|
244
|
+
};
|
|
245
|
+
const sideOf = (subpath, exportKey = subpath) => {
|
|
246
|
+
const key = entryKey(entries, subpath);
|
|
247
|
+
if (key === undefined)
|
|
248
|
+
unmapped.add(exportKey);
|
|
249
|
+
return key === undefined ? undefined : entries[key];
|
|
250
|
+
};
|
|
251
|
+
for (const [key, targets] of exportEntries(manifest, entries)) {
|
|
252
|
+
const star = key.indexOf("*");
|
|
253
|
+
if (star === -1) {
|
|
254
|
+
const side = sideOf(key);
|
|
255
|
+
if (side === undefined)
|
|
256
|
+
continue;
|
|
257
|
+
for (const target of targets) {
|
|
258
|
+
const file = target.includes("*") ? undefined : probe(join(dir, target));
|
|
259
|
+
if (file !== undefined)
|
|
260
|
+
reach(file, side);
|
|
261
|
+
}
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
// A pattern entry: each file a target pattern matches is the subpath its `*` spells.
|
|
265
|
+
for (const target of targets) {
|
|
266
|
+
const at = target.indexOf("*");
|
|
267
|
+
if (at === -1)
|
|
268
|
+
continue;
|
|
269
|
+
const prefix = target.slice(0, at);
|
|
270
|
+
const suffix = target.slice(at + 1);
|
|
271
|
+
for (const file of filesUnder(join(dir, prefix.slice(0, prefix.lastIndexOf("/") + 1)))) {
|
|
272
|
+
const path = `./${relative(dir, file).replaceAll("\\", "/")}`;
|
|
273
|
+
if (path.length <= prefix.length + suffix.length)
|
|
274
|
+
continue;
|
|
275
|
+
if (!path.startsWith(prefix) || !path.endsWith(suffix))
|
|
276
|
+
continue;
|
|
277
|
+
const matched = path.slice(prefix.length, path.length - suffix.length);
|
|
278
|
+
const side = sideOf(`${key.slice(0, star)}${matched}${key.slice(star + 1)}`, key);
|
|
279
|
+
if (side !== undefined)
|
|
280
|
+
reach(file, side);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const imports = new Map();
|
|
285
|
+
for (const [file, side] of queue) {
|
|
286
|
+
const script = SCRIPT.test(file) && !DECLARATION.test(file);
|
|
287
|
+
if (!script && !STYLESHEET.test(file))
|
|
288
|
+
continue;
|
|
289
|
+
let specifiers = imports.get(file);
|
|
290
|
+
if (specifiers === undefined) {
|
|
291
|
+
try {
|
|
292
|
+
const code = readFileSync(file, "utf8");
|
|
293
|
+
specifiers = script ? relativeImports(code) : stylesheetImports(code);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
specifiers = [];
|
|
297
|
+
}
|
|
298
|
+
imports.set(file, specifiers);
|
|
299
|
+
}
|
|
300
|
+
for (const specifier of specifiers) {
|
|
301
|
+
const found = probe(join(dirname(file), withoutQuery(specifier)));
|
|
302
|
+
if (found !== undefined)
|
|
303
|
+
reach(found, side);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return { owners, unmapped: [...unmapped].sort() };
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* The `package.json` of the installed package `name`, as Node finds it: the nearest
|
|
310
|
+
* `node_modules/<name>` at or above `fromDir`.
|
|
311
|
+
*/
|
|
312
|
+
export function installedManifest(fromDir, name) {
|
|
313
|
+
let dir = fromDir;
|
|
314
|
+
for (;;) {
|
|
315
|
+
const manifest = join(dir, "node_modules", name, "package.json");
|
|
316
|
+
if (isFile(manifest))
|
|
317
|
+
return manifest;
|
|
318
|
+
const parent = dirname(dir);
|
|
319
|
+
if (parent === dir)
|
|
320
|
+
return undefined;
|
|
321
|
+
dir = parent;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=package-entries.js.map
|