plgg-bundle 0.0.1 → 0.0.3
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/bin/hook.d.mts +20 -0
- package/bin/hook.mjs +11 -2
- package/bin/plgg-bundle.mjs +9 -0
- package/bin/relocate.mjs +108 -0
- package/package.json +2 -5
- package/src/Dev/fixtures/aliasDir/index.ts +6 -0
- package/src/Dev/node/devServer.ts +5 -5
- package/src/Dev/node/httpAdapter.ts +1 -1
- package/src/Dev/node/scanGraph.ts +2 -2
- package/src/Dev/node/watch.ts +1 -1
- package/src/Dev/usecase/selfAliasResolve.spec.ts +68 -0
- package/src/domain/usecase/build.ts +2 -2
- package/src/domain/usecase/collectModules.ts +2 -2
- package/src/domain/usecase/deriveExternal.ts +2 -2
- package/src/domain/usecase/discoverWorkspace.ts +2 -2
- package/src/domain/usecase/emitDts.ts +4 -4
- package/src/domain/usecase/resolveSpecifier.ts +2 -2
- package/src/domain/usecase/resolveWorkspaceSpecifier.ts +1 -1
- package/src/domain/usecase/rewriteDtsAliases.ts +2 -2
- package/src/vendors/nodeFs.ts +22 -0
- package/src/vendors/nodeHttp.ts +14 -0
- package/src/vendors/nodePath.ts +15 -0
- package/src/vendors/nodeProc.ts +12 -0
- package/src/vendors/nodeUrl.ts +6 -0
- package/dist/Dev/fixtures/devPoc.spec.d.ts +0 -2
- package/dist/Dev/fixtures/devPoc.spec.d.ts.map +0 -1
- package/dist/Dev/fixtures/devPoc.spec.js +0 -145
- package/dist/Dev/fixtures/devPoc.spec.js.map +0 -1
- package/dist/Dev/model/Fetch.d.ts +0 -20
- package/dist/Dev/model/Fetch.d.ts.map +0 -1
- package/dist/Dev/model/Fetch.js +0 -8
- package/dist/Dev/model/Fetch.js.map +0 -1
- package/dist/Dev/model/ModuleGraph.d.ts +0 -27
- package/dist/Dev/model/ModuleGraph.d.ts.map +0 -1
- package/dist/Dev/model/ModuleGraph.js +0 -2
- package/dist/Dev/model/ModuleGraph.js.map +0 -1
- package/dist/Dev/model/Protocol.d.ts +0 -22
- package/dist/Dev/model/Protocol.d.ts.map +0 -1
- package/dist/Dev/model/Protocol.js +0 -31
- package/dist/Dev/model/Protocol.js.map +0 -1
- package/dist/Dev/node/devServer.d.ts +0 -21
- package/dist/Dev/node/devServer.d.ts.map +0 -1
- package/dist/Dev/node/devServer.js +0 -298
- package/dist/Dev/node/devServer.js.map +0 -1
- package/dist/Dev/node/httpAdapter.d.ts +0 -19
- package/dist/Dev/node/httpAdapter.d.ts.map +0 -1
- package/dist/Dev/node/httpAdapter.js +0 -76
- package/dist/Dev/node/httpAdapter.js.map +0 -1
- package/dist/Dev/node/scanGraph.d.ts +0 -21
- package/dist/Dev/node/scanGraph.d.ts.map +0 -1
- package/dist/Dev/node/scanGraph.js +0 -145
- package/dist/Dev/node/scanGraph.js.map +0 -1
- package/dist/Dev/node/watch.d.ts +0 -10
- package/dist/Dev/node/watch.d.ts.map +0 -1
- package/dist/Dev/node/watch.js +0 -44
- package/dist/Dev/node/watch.js.map +0 -1
- package/dist/Dev/usecase/allowedHost.d.ts +0 -16
- package/dist/Dev/usecase/allowedHost.d.ts.map +0 -1
- package/dist/Dev/usecase/allowedHost.js +0 -33
- package/dist/Dev/usecase/allowedHost.js.map +0 -1
- package/dist/Dev/usecase/allowedHost.spec.d.ts +0 -2
- package/dist/Dev/usecase/allowedHost.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/allowedHost.spec.js +0 -13
- package/dist/Dev/usecase/allowedHost.spec.js.map +0 -1
- package/dist/Dev/usecase/buildGraph.d.ts +0 -12
- package/dist/Dev/usecase/buildGraph.d.ts.map +0 -1
- package/dist/Dev/usecase/buildGraph.js +0 -24
- package/dist/Dev/usecase/buildGraph.js.map +0 -1
- package/dist/Dev/usecase/buildGraph.spec.d.ts +0 -2
- package/dist/Dev/usecase/buildGraph.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/buildGraph.spec.js +0 -16
- package/dist/Dev/usecase/buildGraph.spec.js.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.d.ts +0 -12
- package/dist/Dev/usecase/decorateDevHtml.d.ts.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.js +0 -15
- package/dist/Dev/usecase/decorateDevHtml.js.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.spec.d.ts +0 -2
- package/dist/Dev/usecase/decorateDevHtml.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.spec.js +0 -19
- package/dist/Dev/usecase/decorateDevHtml.spec.js.map +0 -1
- package/dist/Dev/usecase/invalidate.d.ts +0 -17
- package/dist/Dev/usecase/invalidate.d.ts.map +0 -1
- package/dist/Dev/usecase/invalidate.js +0 -57
- package/dist/Dev/usecase/invalidate.js.map +0 -1
- package/dist/Dev/usecase/invalidate.spec.d.ts +0 -2
- package/dist/Dev/usecase/invalidate.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/invalidate.spec.js +0 -64
- package/dist/Dev/usecase/invalidate.spec.js.map +0 -1
- package/dist/Dev/usecase/parseImports.d.ts +0 -24
- package/dist/Dev/usecase/parseImports.d.ts.map +0 -1
- package/dist/Dev/usecase/parseImports.js +0 -40
- package/dist/Dev/usecase/parseImports.js.map +0 -1
- package/dist/Dev/usecase/parseImports.spec.d.ts +0 -2
- package/dist/Dev/usecase/parseImports.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/parseImports.spec.js +0 -24
- package/dist/Dev/usecase/parseImports.spec.js.map +0 -1
- package/dist/Dev/usecase/reloadDecision.d.ts +0 -20
- package/dist/Dev/usecase/reloadDecision.d.ts.map +0 -1
- package/dist/Dev/usecase/reloadDecision.js +0 -52
- package/dist/Dev/usecase/reloadDecision.js.map +0 -1
- package/dist/Dev/usecase/reloadDecision.spec.d.ts +0 -2
- package/dist/Dev/usecase/reloadDecision.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/reloadDecision.spec.js +0 -17
- package/dist/Dev/usecase/reloadDecision.spec.js.map +0 -1
- package/dist/domain/model/BundleConfig.d.ts +0 -136
- package/dist/domain/model/BundleConfig.d.ts.map +0 -1
- package/dist/domain/model/BundleConfig.js +0 -18
- package/dist/domain/model/BundleConfig.js.map +0 -1
- package/dist/domain/model/BundleConfig.spec.d.ts +0 -2
- package/dist/domain/model/BundleConfig.spec.d.ts.map +0 -1
- package/dist/domain/model/BundleConfig.spec.js +0 -8
- package/dist/domain/model/BundleConfig.spec.js.map +0 -1
- package/dist/domain/usecase/asBundleConfig.d.ts +0 -17
- package/dist/domain/usecase/asBundleConfig.d.ts.map +0 -1
- package/dist/domain/usecase/asBundleConfig.js +0 -179
- package/dist/domain/usecase/asBundleConfig.js.map +0 -1
- package/dist/domain/usecase/asBundleConfig.spec.d.ts +0 -2
- package/dist/domain/usecase/asBundleConfig.spec.d.ts.map +0 -1
- package/dist/domain/usecase/asBundleConfig.spec.js +0 -119
- package/dist/domain/usecase/asBundleConfig.spec.js.map +0 -1
- package/dist/domain/usecase/build.d.ts +0 -14
- package/dist/domain/usecase/build.d.ts.map +0 -1
- package/dist/domain/usecase/build.js +0 -177
- package/dist/domain/usecase/build.js.map +0 -1
- package/dist/domain/usecase/collectModules.d.ts +0 -53
- package/dist/domain/usecase/collectModules.d.ts.map +0 -1
- package/dist/domain/usecase/collectModules.js +0 -118
- package/dist/domain/usecase/collectModules.js.map +0 -1
- package/dist/domain/usecase/deriveExternal.d.ts +0 -25
- package/dist/domain/usecase/deriveExternal.d.ts.map +0 -1
- package/dist/domain/usecase/deriveExternal.js +0 -79
- package/dist/domain/usecase/deriveExternal.js.map +0 -1
- package/dist/domain/usecase/deriveExternal.spec.d.ts +0 -2
- package/dist/domain/usecase/deriveExternal.spec.d.ts.map +0 -1
- package/dist/domain/usecase/deriveExternal.spec.js +0 -56
- package/dist/domain/usecase/deriveExternal.spec.js.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.d.ts +0 -27
- package/dist/domain/usecase/discoverWorkspace.d.ts.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.js +0 -116
- package/dist/domain/usecase/discoverWorkspace.js.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.spec.d.ts +0 -2
- package/dist/domain/usecase/discoverWorkspace.spec.d.ts.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.spec.js +0 -23
- package/dist/domain/usecase/discoverWorkspace.spec.js.map +0 -1
- package/dist/domain/usecase/emitBundle.d.ts +0 -43
- package/dist/domain/usecase/emitBundle.d.ts.map +0 -1
- package/dist/domain/usecase/emitBundle.js +0 -157
- package/dist/domain/usecase/emitBundle.js.map +0 -1
- package/dist/domain/usecase/emitBundle.spec.d.ts +0 -2
- package/dist/domain/usecase/emitBundle.spec.d.ts.map +0 -1
- package/dist/domain/usecase/emitBundle.spec.js +0 -80
- package/dist/domain/usecase/emitBundle.spec.js.map +0 -1
- package/dist/domain/usecase/emitDts.d.ts +0 -32
- package/dist/domain/usecase/emitDts.d.ts.map +0 -1
- package/dist/domain/usecase/emitDts.js +0 -99
- package/dist/domain/usecase/emitDts.js.map +0 -1
- package/dist/domain/usecase/isExternal.d.ts +0 -12
- package/dist/domain/usecase/isExternal.d.ts.map +0 -1
- package/dist/domain/usecase/isExternal.js +0 -16
- package/dist/domain/usecase/isExternal.js.map +0 -1
- package/dist/domain/usecase/isExternal.spec.d.ts +0 -2
- package/dist/domain/usecase/isExternal.spec.d.ts.map +0 -1
- package/dist/domain/usecase/isExternal.spec.js +0 -16
- package/dist/domain/usecase/isExternal.spec.js.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.d.ts +0 -35
- package/dist/domain/usecase/resolveSpecifier.d.ts.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.js +0 -83
- package/dist/domain/usecase/resolveSpecifier.js.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.spec.d.ts +0 -2
- package/dist/domain/usecase/resolveSpecifier.spec.d.ts.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.spec.js +0 -44
- package/dist/domain/usecase/resolveSpecifier.spec.js.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts +0 -29
- package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.js +0 -89
- package/dist/domain/usecase/resolveWorkspaceSpecifier.js.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts +0 -2
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js +0 -27
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.d.ts +0 -25
- package/dist/domain/usecase/rewriteDtsAliases.d.ts.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.js +0 -71
- package/dist/domain/usecase/rewriteDtsAliases.js.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts +0 -2
- package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.spec.js +0 -35
- package/dist/domain/usecase/rewriteDtsAliases.spec.js.map +0 -1
- package/dist/entrypoints/cli.d.ts +0 -2
- package/dist/entrypoints/cli.d.ts.map +0 -1
- package/dist/entrypoints/cli.js +0 -79
- package/dist/entrypoints/cli.js.map +0 -1
- package/dist/index.d.ts +0 -21
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -28
- package/dist/index.js.map +0 -1
- package/dist/vendors/runner.d.ts +0 -20
- package/dist/vendors/runner.d.ts.map +0 -1
- package/dist/vendors/runner.js +0 -60
- package/dist/vendors/runner.js.map +0 -1
- package/dist/vendors/runner.spec.d.ts +0 -2
- package/dist/vendors/runner.spec.d.ts.map +0 -1
- package/dist/vendors/runner.spec.js +0 -20
- package/dist/vendors/runner.spec.js.map +0 -1
- package/dist/vendors/transpiler.d.ts +0 -19
- package/dist/vendors/transpiler.d.ts.map +0 -1
- package/dist/vendors/transpiler.js +0 -42
- package/dist/vendors/transpiler.js.map +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { test, check, all, toBe, } from "plgg-test";
|
|
2
|
-
import { asBundleConfig } from "plgg-bundle/domain/usecase/asBundleConfig";
|
|
3
|
-
const valid = {
|
|
4
|
-
root: "/pkg",
|
|
5
|
-
rootDir: "src",
|
|
6
|
-
outDir: "dist",
|
|
7
|
-
fileNamePattern: "[name].[format].js",
|
|
8
|
-
entries: [{ name: "index", input: "index.ts" }],
|
|
9
|
-
formats: ["es", "cjs"],
|
|
10
|
-
alias: { prefix: "plgg", srcRoot: "src" },
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* True when `asBundleConfig(input)` throws a ConfigError
|
|
14
|
-
* (plain-TS validators throw rather than return a
|
|
15
|
-
* `Result`, so the spec catches at the boundary).
|
|
16
|
-
*/
|
|
17
|
-
const rejects = (input) => {
|
|
18
|
-
try {
|
|
19
|
-
asBundleConfig(input);
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
return (e instanceof Error &&
|
|
24
|
-
e.message.startsWith("ConfigError"));
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
test("asBundleConfig accepts a well-formed config", () => {
|
|
28
|
-
const c = asBundleConfig(valid);
|
|
29
|
-
return all([
|
|
30
|
-
check(c.root, toBe("/pkg")),
|
|
31
|
-
check(c.fileNamePattern, toBe("[name].[format].js")),
|
|
32
|
-
check(c.formats.length, toBe(2)),
|
|
33
|
-
check(c.entries.length, toBe(1)),
|
|
34
|
-
check(c.alias.prefix, toBe("plgg")),
|
|
35
|
-
]);
|
|
36
|
-
});
|
|
37
|
-
test("asBundleConfig rejects a non-object", () => check(rejects(42), toBe(true)));
|
|
38
|
-
test("asBundleConfig rejects a missing field", () => check(rejects({ ...valid, formats: undefined }), toBe(true)));
|
|
39
|
-
test("asBundleConfig rejects an invalid format", () => check(rejects({ ...valid, formats: ["es", "umd"] }), toBe(true)));
|
|
40
|
-
const validDev = {
|
|
41
|
-
entry: "devEntry.ts",
|
|
42
|
-
port: 5181,
|
|
43
|
-
watch: ["src", "docs"],
|
|
44
|
-
allowedHosts: ["plgg-guide.qmu.dev"],
|
|
45
|
-
};
|
|
46
|
-
test("asBundleConfig leaves dev absent for a build-only config", () => check(asBundleConfig(valid).dev, toBe(undefined)));
|
|
47
|
-
test("asBundleConfig accepts and narrows a dev section", () => {
|
|
48
|
-
const c = asBundleConfig({
|
|
49
|
-
...valid,
|
|
50
|
-
dev: validDev,
|
|
51
|
-
});
|
|
52
|
-
return all([
|
|
53
|
-
check(c.dev?.entry, toBe("devEntry.ts")),
|
|
54
|
-
check(c.dev?.port, toBe(5181)),
|
|
55
|
-
check(c.dev?.watch.length, toBe(2)),
|
|
56
|
-
check(c.dev?.allowedHosts[0], toBe("plgg-guide.qmu.dev")),
|
|
57
|
-
]);
|
|
58
|
-
});
|
|
59
|
-
test("asBundleConfig rejects a non-object dev section", () => check(rejects({ ...valid, dev: 42 }), toBe(true)));
|
|
60
|
-
test("asBundleConfig rejects a dev section with a bad port", () => check(rejects({
|
|
61
|
-
...valid,
|
|
62
|
-
dev: { ...validDev, port: "5181" },
|
|
63
|
-
}), toBe(true)));
|
|
64
|
-
test("asBundleConfig rejects a dev section with a non-string watch entry", () => check(rejects({
|
|
65
|
-
...valid,
|
|
66
|
-
dev: { ...validDev, watch: ["src", 7] },
|
|
67
|
-
}), toBe(true)));
|
|
68
|
-
test("asBundleConfig rejects a dev section with non-array allowedHosts", () => check(rejects({
|
|
69
|
-
...valid,
|
|
70
|
-
dev: {
|
|
71
|
-
...validDev,
|
|
72
|
-
allowedHosts: "nope",
|
|
73
|
-
},
|
|
74
|
-
}), toBe(true)));
|
|
75
|
-
test("asBundleConfig accepts target \"app\"", () => check(asBundleConfig({ ...valid, target: "app" })
|
|
76
|
-
.target, toBe("app")));
|
|
77
|
-
test("asBundleConfig rejects an invalid target", () => check(rejects({ ...valid, target: "umd" }), toBe(true)));
|
|
78
|
-
test("asBundleConfig rejects a non-string required field", () => check(rejects({ ...valid, root: 7 }), toBe(true)));
|
|
79
|
-
test("asBundleConfig rejects a malformed entry", () => all([
|
|
80
|
-
check(rejects({
|
|
81
|
-
...valid,
|
|
82
|
-
entries: [{ name: "x" }],
|
|
83
|
-
}), toBe(true)),
|
|
84
|
-
check(rejects({ ...valid, entries: [42] }), toBe(true)),
|
|
85
|
-
]));
|
|
86
|
-
test("asBundleConfig rejects a malformed alias", () => all([
|
|
87
|
-
check(rejects({ ...valid, alias: { prefix: "p" } }), toBe(true)),
|
|
88
|
-
check(rejects({ ...valid, alias: "nope" }), toBe(true)),
|
|
89
|
-
]));
|
|
90
|
-
test("asBundleConfig rejects a non-string format element", () => check(rejects({ ...valid, formats: [7] }), toBe(true)));
|
|
91
|
-
test("asBundleConfig defaults dev.sourceAliases to [] when absent", () => check(asBundleConfig({ ...valid, dev: validDev })
|
|
92
|
-
.dev?.sourceAliases.length, toBe(0)));
|
|
93
|
-
test("asBundleConfig accepts dev.sourceAliases", () => {
|
|
94
|
-
const c = asBundleConfig({
|
|
95
|
-
...valid,
|
|
96
|
-
dev: {
|
|
97
|
-
...validDev,
|
|
98
|
-
sourceAliases: [
|
|
99
|
-
{ prefix: "plggpress", srcDir: "../plggpress/src" },
|
|
100
|
-
],
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
return all([
|
|
104
|
-
check(c.dev?.sourceAliases[0]?.prefix, toBe("plggpress")),
|
|
105
|
-
check(c.dev?.sourceAliases[0]?.srcDir, toBe("../plggpress/src")),
|
|
106
|
-
]);
|
|
107
|
-
});
|
|
108
|
-
test("asBundleConfig rejects a non-array sourceAliases", () => check(rejects({
|
|
109
|
-
...valid,
|
|
110
|
-
dev: { ...validDev, sourceAliases: "nope" },
|
|
111
|
-
}), toBe(true)));
|
|
112
|
-
test("asBundleConfig rejects a malformed sourceAlias element", () => check(rejects({
|
|
113
|
-
...valid,
|
|
114
|
-
dev: {
|
|
115
|
-
...validDev,
|
|
116
|
-
sourceAliases: [{ prefix: "x" }],
|
|
117
|
-
},
|
|
118
|
-
}), toBe(true)));
|
|
119
|
-
//# sourceMappingURL=asBundleConfig.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"asBundleConfig.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/asBundleConfig.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type BundleConfig } from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
-
/**
|
|
3
|
-
* Build one package's `dist` from its
|
|
4
|
-
* {@link BundleConfig}. Dispatches on the config
|
|
5
|
-
* `target`: a `"library"` (dual `es`/`cjs` per entry +
|
|
6
|
-
* per-file `.d.ts`, deps external) or the `"app"` leaf (a
|
|
7
|
-
* single self-contained `es` bundle, siblings inlined, no
|
|
8
|
-
* `.d.ts`). Both build into a private staging dir and
|
|
9
|
-
* publish with one atomic swap. Returns the relative
|
|
10
|
-
* paths written. Throws on the first failure (caught at
|
|
11
|
-
* the bin boundary). Fully synchronous.
|
|
12
|
-
*/
|
|
13
|
-
export declare const build: (config: BundleConfig) => ReadonlyArray<string>;
|
|
14
|
-
//# sourceMappingURL=build.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/build.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,uCAAuC,CAAC;AAe/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,YAAY,KACnB,aAAa,CAAC,MAAM,CAuBtB,CAAC"}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { writeFileSync, mkdirSync, rmSync, renameSync, existsSync, } from "node:fs";
|
|
2
|
-
import { join, dirname } from "node:path";
|
|
3
|
-
import { applyFileName, } from "plgg-bundle/domain/model/BundleConfig";
|
|
4
|
-
import { collectModules, } from "plgg-bundle/domain/usecase/collectModules";
|
|
5
|
-
import { emitCjsBundle, emitEsmBundle, } from "plgg-bundle/domain/usecase/emitBundle";
|
|
6
|
-
import { emitDts } from "plgg-bundle/domain/usecase/emitDts";
|
|
7
|
-
import { deriveExternal } from "plgg-bundle/domain/usecase/deriveExternal";
|
|
8
|
-
import { readExportNames } from "plgg-bundle/vendors/runner";
|
|
9
|
-
import { discoverWorkspace } from "plgg-bundle/domain/usecase/discoverWorkspace";
|
|
10
|
-
import { resolveWorkspaceSpecifier } from "plgg-bundle/domain/usecase/resolveWorkspaceSpecifier";
|
|
11
|
-
/**
|
|
12
|
-
* Build one package's `dist` from its
|
|
13
|
-
* {@link BundleConfig}. Dispatches on the config
|
|
14
|
-
* `target`: a `"library"` (dual `es`/`cjs` per entry +
|
|
15
|
-
* per-file `.d.ts`, deps external) or the `"app"` leaf (a
|
|
16
|
-
* single self-contained `es` bundle, siblings inlined, no
|
|
17
|
-
* `.d.ts`). Both build into a private staging dir and
|
|
18
|
-
* publish with one atomic swap. Returns the relative
|
|
19
|
-
* paths written. Throws on the first failure (caught at
|
|
20
|
-
* the bin boundary). Fully synchronous.
|
|
21
|
-
*/
|
|
22
|
-
export const build = (config) => {
|
|
23
|
-
const outDir = join(config.root, config.outDir);
|
|
24
|
-
// Build into a PRIVATE staging dir, then swap it into
|
|
25
|
-
// place as the final step (see swapIntoPlace). The live
|
|
26
|
-
// `dist` must never be observed half-built: it is read
|
|
27
|
-
// concurrently — by a downstream package's `tsc`/runner
|
|
28
|
-
// resolving this package as a dependency, and by any
|
|
29
|
-
// overlapping build invocation. The old emptyDir-on-live
|
|
30
|
-
// pattern left a multi-second window where `dist` was
|
|
31
|
-
// missing or partial; a reader hitting it resolved the
|
|
32
|
-
// dependency to its `.js` (TS7016 implicit-any), to a
|
|
33
|
-
// not-yet-complete barrel (TS2305 "no exported member"),
|
|
34
|
-
// or found no `index.cjs.js` at all — the
|
|
35
|
-
// non-deterministic dts-emit flake. Staging shrinks that
|
|
36
|
-
// window from the whole build to a single rename.
|
|
37
|
-
const stageDir = `${outDir}.stage`;
|
|
38
|
-
emptyDir(stageDir);
|
|
39
|
-
const written = config.target === "app"
|
|
40
|
-
? buildApp(config, stageDir)
|
|
41
|
-
: buildLibrary(config, stageDir);
|
|
42
|
-
swapIntoPlace(stageDir, outDir);
|
|
43
|
-
return written;
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Library build: per entry, emit the dual `es`/`cjs`
|
|
47
|
-
* bundle (CJS first so its runtime keys give ESM its
|
|
48
|
-
* export surface), then the per-file `.d.ts` tree once.
|
|
49
|
-
* Deps are external (ruling B), derived from the
|
|
50
|
-
* package's declared dependency graph (+ `node:*`) so a
|
|
51
|
-
* bundle stays faithful to its manifest and an undeclared
|
|
52
|
-
* import fails loudly.
|
|
53
|
-
*/
|
|
54
|
-
const buildLibrary = (config, stageDir) => {
|
|
55
|
-
const external = deriveExternal(config.root);
|
|
56
|
-
const written = [];
|
|
57
|
-
for (const entry of config.entries) {
|
|
58
|
-
const graph = collectModules({
|
|
59
|
-
entryFile: join(config.root, config.rootDir, entry.input),
|
|
60
|
-
root: config.root,
|
|
61
|
-
aliasPrefix: config.alias.prefix,
|
|
62
|
-
aliasSrcRoot: join(config.root, config.alias.srcRoot),
|
|
63
|
-
external,
|
|
64
|
-
});
|
|
65
|
-
written.push(...buildEntry(config, entry, graph, stageDir));
|
|
66
|
-
}
|
|
67
|
-
emitDts({
|
|
68
|
-
root: config.root,
|
|
69
|
-
rootDir: config.rootDir,
|
|
70
|
-
outDir: stageDir,
|
|
71
|
-
aliasPrefix: config.alias.prefix,
|
|
72
|
-
});
|
|
73
|
-
return written;
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* App build: a single self-contained `es` bundle per
|
|
77
|
-
* entry with every workspace sibling INLINED from source
|
|
78
|
-
* (the mirror of the library externalization — a browser
|
|
79
|
-
* cannot resolve a bare `import "plgg"`). Only `node:*`
|
|
80
|
-
* stays external. No CJS, no export-surface discovery
|
|
81
|
-
* (an app entry has side effects and no exports, and the
|
|
82
|
-
* vm sandbox has no DOM to run it), and no `.d.ts`
|
|
83
|
-
* (nothing consumes the app).
|
|
84
|
-
*/
|
|
85
|
-
const buildApp = (config, stageDir) => {
|
|
86
|
-
const packages = discoverWorkspace(config.root);
|
|
87
|
-
const written = [];
|
|
88
|
-
for (const entry of config.entries) {
|
|
89
|
-
const graph = collectModules({
|
|
90
|
-
entryFile: join(config.root, config.rootDir, entry.input),
|
|
91
|
-
root: config.root,
|
|
92
|
-
aliasPrefix: config.alias.prefix,
|
|
93
|
-
aliasSrcRoot: join(config.root, config.alias.srcRoot),
|
|
94
|
-
external: NODE_EXTERNAL,
|
|
95
|
-
resolve: (specifier, fromFile) => resolveWorkspaceSpecifier({
|
|
96
|
-
specifier,
|
|
97
|
-
fromFile,
|
|
98
|
-
packages,
|
|
99
|
-
}),
|
|
100
|
-
});
|
|
101
|
-
const rel = applyFileName(config.fileNamePattern, entry.name, "es");
|
|
102
|
-
writeOut(join(stageDir, rel), emitEsmBundle(graph, []));
|
|
103
|
-
written.push(rel);
|
|
104
|
-
}
|
|
105
|
-
return written;
|
|
106
|
-
};
|
|
107
|
-
/**
|
|
108
|
-
* The app's only external: Node built-ins. Everything
|
|
109
|
-
* else (plgg + siblings) is inlined.
|
|
110
|
-
*/
|
|
111
|
-
const NODE_EXTERNAL = /^node:/;
|
|
112
|
-
/**
|
|
113
|
-
* Replace `outDir` with the freshly-built `stageDir` in a
|
|
114
|
-
* single rename, so a concurrent reader sees only a
|
|
115
|
-
* complete `dist` (old or new) — never a torn one. The
|
|
116
|
-
* destructive window is one `rename`, not the whole build.
|
|
117
|
-
*/
|
|
118
|
-
const swapIntoPlace = (stageDir, outDir) => {
|
|
119
|
-
const backup = `${outDir}.old`;
|
|
120
|
-
rmSync(backup, {
|
|
121
|
-
recursive: true,
|
|
122
|
-
force: true,
|
|
123
|
-
});
|
|
124
|
-
if (existsSync(outDir)) {
|
|
125
|
-
renameSync(outDir, backup);
|
|
126
|
-
}
|
|
127
|
-
renameSync(stageDir, outDir);
|
|
128
|
-
rmSync(backup, {
|
|
129
|
-
recursive: true,
|
|
130
|
-
force: true,
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* Build every configured format for one entry, returning
|
|
135
|
-
* the relative paths written.
|
|
136
|
-
*/
|
|
137
|
-
const buildEntry = (config, entry, graph, destDir) => {
|
|
138
|
-
const cjs = emitCjsBundle(graph);
|
|
139
|
-
// Discover the exact export surface by running the CJS
|
|
140
|
-
// bundle and reading its keys — ESM cannot declare
|
|
141
|
-
// exports dynamically. The bundle's external requires
|
|
142
|
-
// resolve against the target package's node_modules.
|
|
143
|
-
const esm = emitEsmBundle(graph, readExportNames(cjs, config.root));
|
|
144
|
-
const written = [];
|
|
145
|
-
for (const format of config.formats) {
|
|
146
|
-
const code = format === "es" ? esm : cjs;
|
|
147
|
-
const rel = applyFileName(config.fileNamePattern, entry.name, format);
|
|
148
|
-
writeOut(join(destDir, rel), code);
|
|
149
|
-
written.push(rel);
|
|
150
|
-
}
|
|
151
|
-
return written;
|
|
152
|
-
};
|
|
153
|
-
/**
|
|
154
|
-
* Empty (and recreate) the output directory. The
|
|
155
|
-
* recursive remove is the bundler's own build output —
|
|
156
|
-
* `force` tolerates a not-yet-existing dir.
|
|
157
|
-
*/
|
|
158
|
-
const emptyDir = (dir) => {
|
|
159
|
-
rmSync(dir, { recursive: true, force: true });
|
|
160
|
-
mkdirSync(dir, { recursive: true });
|
|
161
|
-
};
|
|
162
|
-
/**
|
|
163
|
-
* Write a file, creating parent dirs; re-throws with
|
|
164
|
-
* context on failure.
|
|
165
|
-
*/
|
|
166
|
-
const writeOut = (path, code) => {
|
|
167
|
-
try {
|
|
168
|
-
mkdirSync(dirname(path), { recursive: true });
|
|
169
|
-
writeFileSync(path, code, "utf8");
|
|
170
|
-
}
|
|
171
|
-
catch (cause) {
|
|
172
|
-
throw new Error(`IoError: cannot write ${path}: ${cause instanceof Error
|
|
173
|
-
? cause.message
|
|
174
|
-
: String(cause)}`);
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
//# sourceMappingURL=build.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/domain/usecase/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { type External } from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
-
/**
|
|
3
|
-
* One bundled module: its stable id (path relative to
|
|
4
|
-
* the package root, the same string the runtime keys
|
|
5
|
-
* on), its transpiled-and-rewritten CJS body, and the
|
|
6
|
-
* external specifiers it still requires at runtime.
|
|
7
|
-
*/
|
|
8
|
-
export type Module = Readonly<{
|
|
9
|
-
id: string;
|
|
10
|
-
code: string;
|
|
11
|
-
externals: ReadonlyArray<string>;
|
|
12
|
-
}>;
|
|
13
|
-
/**
|
|
14
|
-
* The module graph reachable from an entry — the set of
|
|
15
|
-
* reachable modules plus the entry's own id. Dependency
|
|
16
|
-
* order is not required: the registry runtime links
|
|
17
|
-
* lazily by id.
|
|
18
|
-
*/
|
|
19
|
-
export type Graph = Readonly<{
|
|
20
|
-
entryId: string;
|
|
21
|
-
modules: ReadonlyArray<Module>;
|
|
22
|
-
}>;
|
|
23
|
-
/**
|
|
24
|
-
* Walk the import graph from `entryFile`, transpiling
|
|
25
|
-
* each `.ts` to CJS, resolving every `require(...)`
|
|
26
|
-
* specifier to either an intra-bundle module id (to
|
|
27
|
-
* inline) or an external (to keep as a runtime
|
|
28
|
-
* require), and rewriting the inlined `require("spec")`
|
|
29
|
-
* calls to `require("<id>")`. Pure in-house graph logic;
|
|
30
|
-
* only the per-file TS→JS step is vendored. Throws on an
|
|
31
|
-
* unresolvable import or a read failure.
|
|
32
|
-
*/
|
|
33
|
-
export declare const collectModules: (args: {
|
|
34
|
-
entryFile: string;
|
|
35
|
-
root: string;
|
|
36
|
-
aliasPrefix: string;
|
|
37
|
-
aliasSrcRoot: string;
|
|
38
|
-
external: External;
|
|
39
|
-
/**
|
|
40
|
-
* App-mode override: resolve a specifier to a source
|
|
41
|
-
* file (inlining workspace siblings). When absent, the
|
|
42
|
-
* library default resolves only relative imports and
|
|
43
|
-
* the package's own self-alias.
|
|
44
|
-
*/
|
|
45
|
-
resolve?: Resolve;
|
|
46
|
-
}) => Graph;
|
|
47
|
-
/**
|
|
48
|
-
* Resolve an import specifier (from `fromFile`) to an
|
|
49
|
-
* absolute source file, or `undefined` if it is not a
|
|
50
|
-
* bundled module (external / unresolvable).
|
|
51
|
-
*/
|
|
52
|
-
export type Resolve = (specifier: string, fromFile: string) => string | undefined;
|
|
53
|
-
//# sourceMappingURL=collectModules.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collectModules.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/collectModules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAKtE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAClC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAG,KAoBH,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,KACb,MAAM,GAAG,SAAS,CAAC"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { relative } from "node:path";
|
|
3
|
-
import {} from "plgg-bundle/domain/model/BundleConfig";
|
|
4
|
-
import { resolveSpecifier } from "plgg-bundle/domain/usecase/resolveSpecifier";
|
|
5
|
-
import { isExternal } from "plgg-bundle/domain/usecase/isExternal";
|
|
6
|
-
import { transpileToCjs } from "plgg-bundle/vendors/transpiler";
|
|
7
|
-
/**
|
|
8
|
-
* Walk the import graph from `entryFile`, transpiling
|
|
9
|
-
* each `.ts` to CJS, resolving every `require(...)`
|
|
10
|
-
* specifier to either an intra-bundle module id (to
|
|
11
|
-
* inline) or an external (to keep as a runtime
|
|
12
|
-
* require), and rewriting the inlined `require("spec")`
|
|
13
|
-
* calls to `require("<id>")`. Pure in-house graph logic;
|
|
14
|
-
* only the per-file TS→JS step is vendored. Throws on an
|
|
15
|
-
* unresolvable import or a read failure.
|
|
16
|
-
*/
|
|
17
|
-
export const collectModules = (args) => {
|
|
18
|
-
const ctx = {
|
|
19
|
-
root: args.root,
|
|
20
|
-
external: args.external,
|
|
21
|
-
resolve: args.resolve ??
|
|
22
|
-
((specifier, fromFile) => resolveSpecifier({
|
|
23
|
-
specifier,
|
|
24
|
-
fromFile,
|
|
25
|
-
aliasPrefix: args.aliasPrefix,
|
|
26
|
-
aliasSrcRoot: args.aliasSrcRoot,
|
|
27
|
-
})),
|
|
28
|
-
};
|
|
29
|
-
const acc = new Map();
|
|
30
|
-
walk(ctx, args.entryFile, acc);
|
|
31
|
-
return {
|
|
32
|
-
entryId: idOf(args.root, args.entryFile),
|
|
33
|
-
modules: [...acc.values()],
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Depth-first accumulation into a Map keyed by id, so a
|
|
38
|
-
* diamond import is transpiled once. Mutates `acc`.
|
|
39
|
-
*/
|
|
40
|
-
const walk = (ctx, file, acc) => {
|
|
41
|
-
const id = idOf(ctx.root, file);
|
|
42
|
-
if (acc.has(id)) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const cjs = transpileToCjs(file, readSource(file));
|
|
46
|
-
const deps = linkModule(ctx, file, id, cjs, acc);
|
|
47
|
-
for (const depFile of deps) {
|
|
48
|
-
walk(ctx, depFile, acc);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Resolve and rewrite every `require(...)` in a
|
|
53
|
-
* transpiled module, register it in `acc`, and return
|
|
54
|
-
* the resolved file paths of its intra-bundle deps.
|
|
55
|
-
* Throws on an unresolvable (non-external) specifier.
|
|
56
|
-
*/
|
|
57
|
-
const linkModule = (ctx, file, id, cjs, acc) => {
|
|
58
|
-
const specifiers = requireSpecifiers(cjs);
|
|
59
|
-
const externals = [];
|
|
60
|
-
const deps = [];
|
|
61
|
-
let rewritten = cjs;
|
|
62
|
-
for (const spec of specifiers) {
|
|
63
|
-
if (isExternal(ctx.external, spec)) {
|
|
64
|
-
externals.push(spec);
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
const resolved = ctx.resolve(spec, file);
|
|
68
|
-
if (resolved === undefined) {
|
|
69
|
-
throw new Error(`ResolveError: cannot resolve "${spec}" from ${id}`);
|
|
70
|
-
}
|
|
71
|
-
deps.push(resolved);
|
|
72
|
-
rewritten = replaceRequire(rewritten, spec, idOf(ctx.root, resolved));
|
|
73
|
-
}
|
|
74
|
-
acc.set(id, {
|
|
75
|
-
id,
|
|
76
|
-
code: rewritten,
|
|
77
|
-
externals,
|
|
78
|
-
});
|
|
79
|
-
return deps;
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Read a source file, re-throwing with context.
|
|
83
|
-
*/
|
|
84
|
-
const readSource = (file) => {
|
|
85
|
-
try {
|
|
86
|
-
return readFileSync(file, "utf8");
|
|
87
|
-
}
|
|
88
|
-
catch (cause) {
|
|
89
|
-
throw new Error(`IoError: cannot read ${file}: ${cause instanceof Error
|
|
90
|
-
? cause.message
|
|
91
|
-
: String(cause)}`);
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* A module's stable id: its path relative to the
|
|
96
|
-
* package root, POSIX-normalized. The runtime keys on
|
|
97
|
-
* exactly this string.
|
|
98
|
-
*/
|
|
99
|
-
const idOf = (root, file) => relative(root, file).split("\\").join("/");
|
|
100
|
-
/**
|
|
101
|
-
* Extract the literal string specifiers of all
|
|
102
|
-
* top-level `require("...")` / `require('...')` calls
|
|
103
|
-
* a transpiled CJS module makes.
|
|
104
|
-
*/
|
|
105
|
-
const requireSpecifiers = (cjs) => [
|
|
106
|
-
...cjs.matchAll(/require\(\s*["']([^"']+)["']\s*\)/g),
|
|
107
|
-
].flatMap((m) => m[1] === undefined ? [] : [m[1]]);
|
|
108
|
-
/**
|
|
109
|
-
* Rewrite every `require("spec")` occurrence to
|
|
110
|
-
* `require("id")`. Operates on the exact specifier
|
|
111
|
-
* string so distinct specifiers do not interfere.
|
|
112
|
-
*/
|
|
113
|
-
const replaceRequire = (cjs, spec, id) => cjs
|
|
114
|
-
.split(`require("${spec}")`)
|
|
115
|
-
.join(`require("${id}")`)
|
|
116
|
-
.split(`require('${spec}')`)
|
|
117
|
-
.join(`require("${id}")`);
|
|
118
|
-
//# sourceMappingURL=collectModules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collectModules.js","sourceRoot":"","sources":["../../../src/domain/usecase/collectModules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { type External } from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
-
/**
|
|
3
|
-
* Derive a package's externals from its `package.json`
|
|
4
|
-
* (the declared dependency graph) plus Node builtins —
|
|
5
|
-
* the ruling-B rule, so externals cannot drift from what
|
|
6
|
-
* the manifest says the package depends on. Anything a
|
|
7
|
-
* module imports that is neither the package's own
|
|
8
|
-
* source (self-alias / relative) nor a declared
|
|
9
|
-
* dependency nor `node:*` is an *undeclared* dependency
|
|
10
|
-
* and the graph walk fails loudly rather than silently
|
|
11
|
-
* inlining or externalizing it.
|
|
12
|
-
*
|
|
13
|
-
* Declared = keys of `dependencies` + `peerDependencies`
|
|
14
|
-
* + `optionalDependencies`. A specifier is external when
|
|
15
|
-
* it is a declared dep exactly (`plgg-view`) OR a PUBLIC
|
|
16
|
-
* SUBPATH export of one (`plgg-view/style`,
|
|
17
|
-
* `plgg-server/ssg`) — the consumer resolves the subpath
|
|
18
|
-
* at runtime via the dep's own `exports` map, so a library
|
|
19
|
-
* bundle must never inline it. `node:*` is matched by
|
|
20
|
-
* prefix. An undeclared specifier (neither a dep nor a
|
|
21
|
-
* dep subpath nor `node:*`) still fails the graph walk
|
|
22
|
-
* loudly.
|
|
23
|
-
*/
|
|
24
|
-
export declare const deriveExternal: (root: string) => External;
|
|
25
|
-
//# sourceMappingURL=deriveExternal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deriveExternal.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/deriveExternal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,KACX,QAQF,CAAC"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import {} from "plgg-bundle/domain/model/BundleConfig";
|
|
4
|
-
/**
|
|
5
|
-
* Derive a package's externals from its `package.json`
|
|
6
|
-
* (the declared dependency graph) plus Node builtins —
|
|
7
|
-
* the ruling-B rule, so externals cannot drift from what
|
|
8
|
-
* the manifest says the package depends on. Anything a
|
|
9
|
-
* module imports that is neither the package's own
|
|
10
|
-
* source (self-alias / relative) nor a declared
|
|
11
|
-
* dependency nor `node:*` is an *undeclared* dependency
|
|
12
|
-
* and the graph walk fails loudly rather than silently
|
|
13
|
-
* inlining or externalizing it.
|
|
14
|
-
*
|
|
15
|
-
* Declared = keys of `dependencies` + `peerDependencies`
|
|
16
|
-
* + `optionalDependencies`. A specifier is external when
|
|
17
|
-
* it is a declared dep exactly (`plgg-view`) OR a PUBLIC
|
|
18
|
-
* SUBPATH export of one (`plgg-view/style`,
|
|
19
|
-
* `plgg-server/ssg`) — the consumer resolves the subpath
|
|
20
|
-
* at runtime via the dep's own `exports` map, so a library
|
|
21
|
-
* bundle must never inline it. `node:*` is matched by
|
|
22
|
-
* prefix. An undeclared specifier (neither a dep nor a
|
|
23
|
-
* dep subpath nor `node:*`) still fails the graph walk
|
|
24
|
-
* loudly.
|
|
25
|
-
*/
|
|
26
|
-
export const deriveExternal = (root) => {
|
|
27
|
-
const declared = declaredDeps(root);
|
|
28
|
-
return (specifier) => declared.has(specifier) ||
|
|
29
|
-
[...declared].some((dep) => specifier.startsWith(`${dep}/`)) ||
|
|
30
|
-
specifier.startsWith("node:");
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* The set of declared dependency names from a package's
|
|
34
|
-
* `package.json`. Throws (re-thrown with context) if the
|
|
35
|
-
* manifest is missing or unparseable.
|
|
36
|
-
*/
|
|
37
|
-
const declaredDeps = (root) => {
|
|
38
|
-
const path = join(root, "package.json");
|
|
39
|
-
const parsed = parse(path, read(path));
|
|
40
|
-
return new Set([
|
|
41
|
-
...keysOf(parsed, "dependencies"),
|
|
42
|
-
...keysOf(parsed, "peerDependencies"),
|
|
43
|
-
...keysOf(parsed, "optionalDependencies"),
|
|
44
|
-
]);
|
|
45
|
-
};
|
|
46
|
-
const read = (path) => {
|
|
47
|
-
try {
|
|
48
|
-
return readFileSync(path, "utf8");
|
|
49
|
-
}
|
|
50
|
-
catch (cause) {
|
|
51
|
-
throw new Error(`IoError: cannot read ${path}: ${messageOf(cause)}`);
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
const parse = (path, text) => {
|
|
55
|
-
try {
|
|
56
|
-
return JSON.parse(text);
|
|
57
|
-
}
|
|
58
|
-
catch (cause) {
|
|
59
|
-
throw new Error(`ConfigError: ${path} is not valid JSON: ${messageOf(cause)}`);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* The keys of one dependency map on a parsed
|
|
64
|
-
* package.json, narrowing at the `unknown` boundary.
|
|
65
|
-
*/
|
|
66
|
-
const keysOf = (pkg, field) => {
|
|
67
|
-
if (!isRecord(pkg)) {
|
|
68
|
-
return [];
|
|
69
|
-
}
|
|
70
|
-
const map = pkg[field];
|
|
71
|
-
return isRecord(map) ? Object.keys(map) : [];
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Whether a value is a non-null object (records the
|
|
75
|
-
* narrowing for property reads).
|
|
76
|
-
*/
|
|
77
|
-
const isRecord = (v) => typeof v === "object" && v !== null;
|
|
78
|
-
const messageOf = (e) => e instanceof Error ? e.message : String(e);
|
|
79
|
-
//# sourceMappingURL=deriveExternal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deriveExternal.js","sourceRoot":"","sources":["../../../src/domain/usecase/deriveExternal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAiB,MAAM,uCAAuC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAY,EACF,EAAE;IACZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,SAAiB,EAAW,EAAE,CACpC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QACvB,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAW,EAAW,EAAE,CAC1C,SAAS,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAChC;QACD,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,CACnB,IAAY,EACS,EAAE;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;QACjC,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;QACrC,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE;IACpC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,KAAK,SAAS,CACxC,KAAK,CACN,EAAE,CACJ,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CACZ,IAAY,EACZ,IAAY,EACH,EAAE;IACX,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,uBAAuB,SAAS,CAClD,KAAK,CACN,EAAE,CACJ,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,GAAG,CACb,GAAY,EACZ,KAAa,EACU,EAAE;IACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,QAAQ,GAAG,CACf,CAAU,EACoB,EAAE,CAChC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AAEtC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAU,EAAE,CACvC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deriveExternal.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/deriveExternal.spec.ts"],"names":[],"mappings":""}
|