plgg-bundle 0.0.1
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 +68 -0
- package/bin/appAliasHook.mjs +89 -0
- package/bin/hook.mjs +94 -0
- package/bin/plgg-bundle.mjs +16 -0
- package/dist/Dev/fixtures/devPoc.spec.d.ts +2 -0
- package/dist/Dev/fixtures/devPoc.spec.d.ts.map +1 -0
- package/dist/Dev/fixtures/devPoc.spec.js +145 -0
- package/dist/Dev/fixtures/devPoc.spec.js.map +1 -0
- package/dist/Dev/model/Fetch.d.ts +20 -0
- package/dist/Dev/model/Fetch.d.ts.map +1 -0
- package/dist/Dev/model/Fetch.js +8 -0
- package/dist/Dev/model/Fetch.js.map +1 -0
- package/dist/Dev/model/ModuleGraph.d.ts +27 -0
- package/dist/Dev/model/ModuleGraph.d.ts.map +1 -0
- package/dist/Dev/model/ModuleGraph.js +2 -0
- package/dist/Dev/model/ModuleGraph.js.map +1 -0
- package/dist/Dev/model/Protocol.d.ts +22 -0
- package/dist/Dev/model/Protocol.d.ts.map +1 -0
- package/dist/Dev/model/Protocol.js +31 -0
- package/dist/Dev/model/Protocol.js.map +1 -0
- package/dist/Dev/node/devServer.d.ts +21 -0
- package/dist/Dev/node/devServer.d.ts.map +1 -0
- package/dist/Dev/node/devServer.js +298 -0
- package/dist/Dev/node/devServer.js.map +1 -0
- package/dist/Dev/node/httpAdapter.d.ts +19 -0
- package/dist/Dev/node/httpAdapter.d.ts.map +1 -0
- package/dist/Dev/node/httpAdapter.js +76 -0
- package/dist/Dev/node/httpAdapter.js.map +1 -0
- package/dist/Dev/node/scanGraph.d.ts +21 -0
- package/dist/Dev/node/scanGraph.d.ts.map +1 -0
- package/dist/Dev/node/scanGraph.js +145 -0
- package/dist/Dev/node/scanGraph.js.map +1 -0
- package/dist/Dev/node/watch.d.ts +10 -0
- package/dist/Dev/node/watch.d.ts.map +1 -0
- package/dist/Dev/node/watch.js +44 -0
- package/dist/Dev/node/watch.js.map +1 -0
- package/dist/Dev/usecase/allowedHost.d.ts +16 -0
- package/dist/Dev/usecase/allowedHost.d.ts.map +1 -0
- package/dist/Dev/usecase/allowedHost.js +33 -0
- package/dist/Dev/usecase/allowedHost.js.map +1 -0
- package/dist/Dev/usecase/allowedHost.spec.d.ts +2 -0
- package/dist/Dev/usecase/allowedHost.spec.d.ts.map +1 -0
- package/dist/Dev/usecase/allowedHost.spec.js +13 -0
- package/dist/Dev/usecase/allowedHost.spec.js.map +1 -0
- package/dist/Dev/usecase/buildGraph.d.ts +12 -0
- package/dist/Dev/usecase/buildGraph.d.ts.map +1 -0
- package/dist/Dev/usecase/buildGraph.js +24 -0
- package/dist/Dev/usecase/buildGraph.js.map +1 -0
- package/dist/Dev/usecase/buildGraph.spec.d.ts +2 -0
- package/dist/Dev/usecase/buildGraph.spec.d.ts.map +1 -0
- package/dist/Dev/usecase/buildGraph.spec.js +16 -0
- package/dist/Dev/usecase/buildGraph.spec.js.map +1 -0
- package/dist/Dev/usecase/decorateDevHtml.d.ts +12 -0
- package/dist/Dev/usecase/decorateDevHtml.d.ts.map +1 -0
- package/dist/Dev/usecase/decorateDevHtml.js +15 -0
- package/dist/Dev/usecase/decorateDevHtml.js.map +1 -0
- package/dist/Dev/usecase/decorateDevHtml.spec.d.ts +2 -0
- package/dist/Dev/usecase/decorateDevHtml.spec.d.ts.map +1 -0
- package/dist/Dev/usecase/decorateDevHtml.spec.js +19 -0
- package/dist/Dev/usecase/decorateDevHtml.spec.js.map +1 -0
- package/dist/Dev/usecase/invalidate.d.ts +17 -0
- package/dist/Dev/usecase/invalidate.d.ts.map +1 -0
- package/dist/Dev/usecase/invalidate.js +57 -0
- package/dist/Dev/usecase/invalidate.js.map +1 -0
- package/dist/Dev/usecase/invalidate.spec.d.ts +2 -0
- package/dist/Dev/usecase/invalidate.spec.d.ts.map +1 -0
- package/dist/Dev/usecase/invalidate.spec.js +64 -0
- package/dist/Dev/usecase/invalidate.spec.js.map +1 -0
- package/dist/Dev/usecase/parseImports.d.ts +24 -0
- package/dist/Dev/usecase/parseImports.d.ts.map +1 -0
- package/dist/Dev/usecase/parseImports.js +40 -0
- package/dist/Dev/usecase/parseImports.js.map +1 -0
- package/dist/Dev/usecase/parseImports.spec.d.ts +2 -0
- package/dist/Dev/usecase/parseImports.spec.d.ts.map +1 -0
- package/dist/Dev/usecase/parseImports.spec.js +24 -0
- package/dist/Dev/usecase/parseImports.spec.js.map +1 -0
- package/dist/Dev/usecase/reloadDecision.d.ts +20 -0
- package/dist/Dev/usecase/reloadDecision.d.ts.map +1 -0
- package/dist/Dev/usecase/reloadDecision.js +52 -0
- package/dist/Dev/usecase/reloadDecision.js.map +1 -0
- package/dist/Dev/usecase/reloadDecision.spec.d.ts +2 -0
- package/dist/Dev/usecase/reloadDecision.spec.d.ts.map +1 -0
- package/dist/Dev/usecase/reloadDecision.spec.js +17 -0
- package/dist/Dev/usecase/reloadDecision.spec.js.map +1 -0
- package/dist/domain/model/BundleConfig.d.ts +136 -0
- package/dist/domain/model/BundleConfig.d.ts.map +1 -0
- package/dist/domain/model/BundleConfig.js +18 -0
- package/dist/domain/model/BundleConfig.js.map +1 -0
- package/dist/domain/model/BundleConfig.spec.d.ts +2 -0
- package/dist/domain/model/BundleConfig.spec.d.ts.map +1 -0
- package/dist/domain/model/BundleConfig.spec.js +8 -0
- package/dist/domain/model/BundleConfig.spec.js.map +1 -0
- package/dist/domain/usecase/asBundleConfig.d.ts +17 -0
- package/dist/domain/usecase/asBundleConfig.d.ts.map +1 -0
- package/dist/domain/usecase/asBundleConfig.js +179 -0
- package/dist/domain/usecase/asBundleConfig.js.map +1 -0
- package/dist/domain/usecase/asBundleConfig.spec.d.ts +2 -0
- package/dist/domain/usecase/asBundleConfig.spec.d.ts.map +1 -0
- package/dist/domain/usecase/asBundleConfig.spec.js +119 -0
- package/dist/domain/usecase/asBundleConfig.spec.js.map +1 -0
- package/dist/domain/usecase/build.d.ts +14 -0
- package/dist/domain/usecase/build.d.ts.map +1 -0
- package/dist/domain/usecase/build.js +177 -0
- package/dist/domain/usecase/build.js.map +1 -0
- package/dist/domain/usecase/collectModules.d.ts +53 -0
- package/dist/domain/usecase/collectModules.d.ts.map +1 -0
- package/dist/domain/usecase/collectModules.js +118 -0
- package/dist/domain/usecase/collectModules.js.map +1 -0
- package/dist/domain/usecase/deriveExternal.d.ts +25 -0
- package/dist/domain/usecase/deriveExternal.d.ts.map +1 -0
- package/dist/domain/usecase/deriveExternal.js +79 -0
- package/dist/domain/usecase/deriveExternal.js.map +1 -0
- package/dist/domain/usecase/deriveExternal.spec.d.ts +2 -0
- package/dist/domain/usecase/deriveExternal.spec.d.ts.map +1 -0
- package/dist/domain/usecase/deriveExternal.spec.js +56 -0
- package/dist/domain/usecase/deriveExternal.spec.js.map +1 -0
- package/dist/domain/usecase/discoverWorkspace.d.ts +27 -0
- package/dist/domain/usecase/discoverWorkspace.d.ts.map +1 -0
- package/dist/domain/usecase/discoverWorkspace.js +116 -0
- package/dist/domain/usecase/discoverWorkspace.js.map +1 -0
- package/dist/domain/usecase/discoverWorkspace.spec.d.ts +2 -0
- package/dist/domain/usecase/discoverWorkspace.spec.d.ts.map +1 -0
- package/dist/domain/usecase/discoverWorkspace.spec.js +23 -0
- package/dist/domain/usecase/discoverWorkspace.spec.js.map +1 -0
- package/dist/domain/usecase/emitBundle.d.ts +43 -0
- package/dist/domain/usecase/emitBundle.d.ts.map +1 -0
- package/dist/domain/usecase/emitBundle.js +157 -0
- package/dist/domain/usecase/emitBundle.js.map +1 -0
- package/dist/domain/usecase/emitBundle.spec.d.ts +2 -0
- package/dist/domain/usecase/emitBundle.spec.d.ts.map +1 -0
- package/dist/domain/usecase/emitBundle.spec.js +80 -0
- package/dist/domain/usecase/emitBundle.spec.js.map +1 -0
- package/dist/domain/usecase/emitDts.d.ts +32 -0
- package/dist/domain/usecase/emitDts.d.ts.map +1 -0
- package/dist/domain/usecase/emitDts.js +99 -0
- package/dist/domain/usecase/emitDts.js.map +1 -0
- package/dist/domain/usecase/isExternal.d.ts +12 -0
- package/dist/domain/usecase/isExternal.d.ts.map +1 -0
- package/dist/domain/usecase/isExternal.js +16 -0
- package/dist/domain/usecase/isExternal.js.map +1 -0
- package/dist/domain/usecase/isExternal.spec.d.ts +2 -0
- package/dist/domain/usecase/isExternal.spec.d.ts.map +1 -0
- package/dist/domain/usecase/isExternal.spec.js +16 -0
- package/dist/domain/usecase/isExternal.spec.js.map +1 -0
- package/dist/domain/usecase/resolveSpecifier.d.ts +35 -0
- package/dist/domain/usecase/resolveSpecifier.d.ts.map +1 -0
- package/dist/domain/usecase/resolveSpecifier.js +83 -0
- package/dist/domain/usecase/resolveSpecifier.js.map +1 -0
- package/dist/domain/usecase/resolveSpecifier.spec.d.ts +2 -0
- package/dist/domain/usecase/resolveSpecifier.spec.d.ts.map +1 -0
- package/dist/domain/usecase/resolveSpecifier.spec.js +44 -0
- package/dist/domain/usecase/resolveSpecifier.spec.js.map +1 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts +29 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts.map +1 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.js +89 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.js.map +1 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts +2 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts.map +1 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js +27 -0
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js.map +1 -0
- package/dist/domain/usecase/rewriteDtsAliases.d.ts +25 -0
- package/dist/domain/usecase/rewriteDtsAliases.d.ts.map +1 -0
- package/dist/domain/usecase/rewriteDtsAliases.js +71 -0
- package/dist/domain/usecase/rewriteDtsAliases.js.map +1 -0
- package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts +2 -0
- package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts.map +1 -0
- package/dist/domain/usecase/rewriteDtsAliases.spec.js +35 -0
- package/dist/domain/usecase/rewriteDtsAliases.spec.js.map +1 -0
- package/dist/entrypoints/cli.d.ts +2 -0
- package/dist/entrypoints/cli.d.ts.map +1 -0
- package/dist/entrypoints/cli.js +79 -0
- package/dist/entrypoints/cli.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/vendors/runner.d.ts +20 -0
- package/dist/vendors/runner.d.ts.map +1 -0
- package/dist/vendors/runner.js +60 -0
- package/dist/vendors/runner.js.map +1 -0
- package/dist/vendors/runner.spec.d.ts +2 -0
- package/dist/vendors/runner.spec.d.ts.map +1 -0
- package/dist/vendors/runner.spec.js +20 -0
- package/dist/vendors/runner.spec.js.map +1 -0
- package/dist/vendors/transpiler.d.ts +19 -0
- package/dist/vendors/transpiler.d.ts.map +1 -0
- package/dist/vendors/transpiler.js +42 -0
- package/dist/vendors/transpiler.js.map +1 -0
- package/package.json +31 -0
- package/src/Dev/fixtures/devPoc.spec.ts +235 -0
- package/src/Dev/model/Fetch.ts +31 -0
- package/src/Dev/model/ModuleGraph.ts +30 -0
- package/src/Dev/model/Protocol.ts +35 -0
- package/src/Dev/node/devServer.ts +503 -0
- package/src/Dev/node/httpAdapter.ts +162 -0
- package/src/Dev/node/scanGraph.ts +203 -0
- package/src/Dev/node/watch.ts +54 -0
- package/src/Dev/usecase/allowedHost.spec.ts +50 -0
- package/src/Dev/usecase/allowedHost.ts +39 -0
- package/src/Dev/usecase/buildGraph.spec.ts +30 -0
- package/src/Dev/usecase/buildGraph.ts +31 -0
- package/src/Dev/usecase/decorateDevHtml.spec.ts +39 -0
- package/src/Dev/usecase/decorateDevHtml.ts +21 -0
- package/src/Dev/usecase/invalidate.spec.ts +88 -0
- package/src/Dev/usecase/invalidate.ts +67 -0
- package/src/Dev/usecase/parseImports.spec.ts +58 -0
- package/src/Dev/usecase/parseImports.ts +50 -0
- package/src/Dev/usecase/reloadDecision.spec.ts +50 -0
- package/src/Dev/usecase/reloadDecision.ts +65 -0
- package/src/domain/model/BundleConfig.spec.ts +35 -0
- package/src/domain/model/BundleConfig.ts +162 -0
- package/src/domain/usecase/asBundleConfig.spec.ts +230 -0
- package/src/domain/usecase/asBundleConfig.ts +257 -0
- package/src/domain/usecase/build.ts +259 -0
- package/src/domain/usecase/collectModules.ts +226 -0
- package/src/domain/usecase/deriveExternal.spec.ts +125 -0
- package/src/domain/usecase/deriveExternal.ts +108 -0
- package/src/domain/usecase/discoverWorkspace.spec.ts +63 -0
- package/src/domain/usecase/discoverWorkspace.ts +183 -0
- package/src/domain/usecase/emitBundle.spec.ts +162 -0
- package/src/domain/usecase/emitBundle.ts +215 -0
- package/src/domain/usecase/emitDts.ts +156 -0
- package/src/domain/usecase/isExternal.spec.ts +53 -0
- package/src/domain/usecase/isExternal.ts +20 -0
- package/src/domain/usecase/resolveSpecifier.spec.ts +112 -0
- package/src/domain/usecase/resolveSpecifier.ts +127 -0
- package/src/domain/usecase/resolveWorkspaceSpecifier.spec.ts +79 -0
- package/src/domain/usecase/resolveWorkspaceSpecifier.ts +120 -0
- package/src/domain/usecase/rewriteDtsAliases.spec.ts +123 -0
- package/src/domain/usecase/rewriteDtsAliases.ts +133 -0
- package/src/entrypoints/cli.ts +105 -0
- package/src/index.ts +28 -0
- package/src/vendors/runner.spec.ts +50 -0
- package/src/vendors/runner.ts +78 -0
- package/src/vendors/transpiler.ts +48 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { test, check, all, toBe, } from "plgg-test";
|
|
2
|
+
import { buildGraph } from "plgg-bundle/Dev/usecase/buildGraph";
|
|
3
|
+
import { shouldReload } from "plgg-bundle/Dev/usecase/reloadDecision";
|
|
4
|
+
const graph = buildGraph([
|
|
5
|
+
{ from: "/a.ts", to: "/b.ts" },
|
|
6
|
+
]);
|
|
7
|
+
test("shouldReload is true for a file that imports (graph key)", () => check(shouldReload(graph, "/a.ts"), toBe(true)));
|
|
8
|
+
test("shouldReload is true for an imported file (graph value)", () => check(shouldReload(graph, "/b.ts"), toBe(true)));
|
|
9
|
+
test("shouldReload is false for a source file outside the served graph", () => check(shouldReload(graph, "/unrelated.ts"), toBe(false)));
|
|
10
|
+
test("shouldReload is true for a content (non-code) file edit", () => all([
|
|
11
|
+
check(shouldReload(graph, "/docs/guide.md"), toBe(true)),
|
|
12
|
+
check(shouldReload(graph, "/assets/x.css"), toBe(true)),
|
|
13
|
+
]));
|
|
14
|
+
test("shouldReload falls back to true for an empty graph", () => all([
|
|
15
|
+
check(shouldReload(buildGraph([]), "/x.ts"), toBe(true)),
|
|
16
|
+
]));
|
|
17
|
+
//# sourceMappingURL=reloadDecision.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reloadDecision.spec.js","sourceRoot":"","sources":["../../../src/Dev/usecase/reloadDecision.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GACL,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAEtE,MAAM,KAAK,GAAG,UAAU,CAAC;IACvB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;CAC/B,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE,CACpE,KAAK,CACH,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,IAAI,CAAC,CACX,CAAC,CAAC;AAEL,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE,CACnE,KAAK,CACH,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,IAAI,CAAC,CACX,CAAC,CAAC;AAEL,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE,CAC5E,KAAK,CACH,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,EACpC,IAAI,CAAC,KAAK,CAAC,CACZ,CAAC,CAAC;AAEL,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE,CACnE,GAAG,CAAC;IACF,KAAK,CACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,EACrC,IAAI,CAAC,IAAI,CAAC,CACX;IACD,KAAK,CACH,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,EACpC,IAAI,CAAC,IAAI,CAAC,CACX;CACF,CAAC,CAAC,CAAC;AAEN,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE,CAC9D,GAAG,CAAC;IACF,KAAK,CACH,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EACrC,IAAI,CAAC,IAAI,CAAC,CACX;CACF,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The output module formats. `"es"` → ESM, `"cjs"` →
|
|
3
|
+
* CommonJS — both emitted today by every library
|
|
4
|
+
* package.
|
|
5
|
+
*/
|
|
6
|
+
export type Format = "es" | "cjs";
|
|
7
|
+
/**
|
|
8
|
+
* What kind of artifact a config builds.
|
|
9
|
+
* - `"library"` (default): a consumed package — dual
|
|
10
|
+
* `es`/`cjs` per entry, a per-file `.d.ts` tree, and
|
|
11
|
+
* sibling/`node:*` deps left EXTERNAL (ruling B), so the
|
|
12
|
+
* bundle stays faithful to its declared dependencies.
|
|
13
|
+
* - `"app"`: the leaf application (the `example` client) —
|
|
14
|
+
* a single self-contained `es` bundle with every
|
|
15
|
+
* workspace sibling INLINED from source (the mirror of
|
|
16
|
+
* the library decision: the app is where bundling deps
|
|
17
|
+
* is correct, since a browser cannot resolve a bare
|
|
18
|
+
* `import "plgg"`). No `.d.ts` (nothing consumes it) and
|
|
19
|
+
* only `node:*` stays external.
|
|
20
|
+
*/
|
|
21
|
+
export type Target = "library" | "app";
|
|
22
|
+
/**
|
|
23
|
+
* A way to decide whether an imported specifier is
|
|
24
|
+
* *external* (left as a runtime `import`/`require`,
|
|
25
|
+
* not inlined into the bundle). Mirrors the three
|
|
26
|
+
* shapes used across the vite configs:
|
|
27
|
+
* - a string array of exact specifiers,
|
|
28
|
+
* - a `RegExp` (e.g. `/^node:/`),
|
|
29
|
+
* - a predicate function (plgg-fetch's
|
|
30
|
+
* `isFrameworkDep`).
|
|
31
|
+
*/
|
|
32
|
+
export type External = ReadonlyArray<string> | RegExp | ((specifier: string) => boolean);
|
|
33
|
+
/**
|
|
34
|
+
* One build entry. `name` is the output key — for most
|
|
35
|
+
* packages it equals the file stem, but `plgg-view`'s
|
|
36
|
+
* `styleEntry` / `plgg-server`'s `ssgEntry` use a
|
|
37
|
+
* distinct output key so `dist/styleEntry.*` does not
|
|
38
|
+
* case-collide with the `dist/Style/` declaration tree
|
|
39
|
+
* on case-insensitive filesystems (the U0 fix). The
|
|
40
|
+
* emitted JS file is `name` run through the config's
|
|
41
|
+
* `fileNamePattern`.
|
|
42
|
+
*/
|
|
43
|
+
export type Entry = {
|
|
44
|
+
name: string;
|
|
45
|
+
input: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* The optional `dev` section: everything `plgg-bundle dev`
|
|
49
|
+
* needs to serve + hot-reload an app. Absent for a plain
|
|
50
|
+
* library config (build-only), so existing configs need no
|
|
51
|
+
* change.
|
|
52
|
+
*
|
|
53
|
+
* - `entry` — the app's dev-entry module (absolute or
|
|
54
|
+
* `root`-relative), default-exporting a `FetchFactory`.
|
|
55
|
+
* - `port` — the port the node:http server binds.
|
|
56
|
+
* - `watch` — source roots (absolute or `root`-relative)
|
|
57
|
+
* watched for code/content edits.
|
|
58
|
+
* - `allowedHosts` — extra `Host` headers accepted beyond
|
|
59
|
+
* loopback (e.g. a tunnel domain).
|
|
60
|
+
* - `sourceAliases` — cross-package self-aliases to resolve
|
|
61
|
+
* to SOURCE during dev, so a dependency's `<prefix>/*`
|
|
62
|
+
* imports (e.g. a theme package's) load from its `.ts`
|
|
63
|
+
* and hot-reload, instead of its built dist. Empty for a
|
|
64
|
+
* self-contained app.
|
|
65
|
+
*/
|
|
66
|
+
export type DevConfig = Readonly<{
|
|
67
|
+
entry: string;
|
|
68
|
+
port: number;
|
|
69
|
+
watch: ReadonlyArray<string>;
|
|
70
|
+
allowedHosts: ReadonlyArray<string>;
|
|
71
|
+
sourceAliases: ReadonlyArray<SourceAlias>;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* A dev-time source resolution rule: resolve `<prefix>`
|
|
75
|
+
* and `<prefix>/<sub>` specifiers to `<srcDir>` /
|
|
76
|
+
* `<srcDir>/<sub>` (`.ts`/`/index.ts`), so a dependency
|
|
77
|
+
* package's source participates in hot-reload.
|
|
78
|
+
*/
|
|
79
|
+
export type SourceAlias = Readonly<{
|
|
80
|
+
prefix: string;
|
|
81
|
+
srcDir: string;
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* The bundler's typed configuration, replacing
|
|
85
|
+
* vite.config's `lib` + `rollupOptions`. Parsed and
|
|
86
|
+
* validated at the `unknown` boundary by
|
|
87
|
+
* `asBundleConfig` before any build runs.
|
|
88
|
+
*/
|
|
89
|
+
export type BundleConfig = Readonly<{
|
|
90
|
+
/**
|
|
91
|
+
* The artifact kind (see {@link Target}). Optional in
|
|
92
|
+
* the config file; defaults to `"library"`.
|
|
93
|
+
*/
|
|
94
|
+
target: Target;
|
|
95
|
+
/** Package root (absolute). */
|
|
96
|
+
root: string;
|
|
97
|
+
/** Source root under `root` (e.g. "src"). */
|
|
98
|
+
rootDir: string;
|
|
99
|
+
/** Output dir under `root` (e.g. "dist"). */
|
|
100
|
+
outDir: string;
|
|
101
|
+
/** One entry (single-entry) or several (multi). */
|
|
102
|
+
entries: ReadonlyArray<Entry>;
|
|
103
|
+
/** Formats to emit (es and/or cjs). */
|
|
104
|
+
formats: ReadonlyArray<Format>;
|
|
105
|
+
/**
|
|
106
|
+
* Output file-name template with `[name]` and
|
|
107
|
+
* `[format]` placeholders, e.g.
|
|
108
|
+
* `"[name].[format].js"` → `index.es.js` /
|
|
109
|
+
* `index.cjs.js` for the `index` entry,
|
|
110
|
+
* `styleEntry.es.js` for `styleEntry`. Reproduces
|
|
111
|
+
* vite's `index.${format}.js` / `${name}.${format}.js`.
|
|
112
|
+
*/
|
|
113
|
+
fileNamePattern: string;
|
|
114
|
+
/**
|
|
115
|
+
* The package self-alias prefix and its source root,
|
|
116
|
+
* e.g. `{ prefix: "plgg", srcRoot: "src" }` so
|
|
117
|
+
* `plgg/Atomics/Num` resolves to `src/Atomics/Num`.
|
|
118
|
+
*/
|
|
119
|
+
alias: Readonly<{
|
|
120
|
+
prefix: string;
|
|
121
|
+
srcRoot: string;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* The dev-server section. Present only for a config that
|
|
125
|
+
* `plgg-bundle dev` serves; a build-only library omits
|
|
126
|
+
* it. See {@link DevConfig}.
|
|
127
|
+
*/
|
|
128
|
+
dev?: DevConfig;
|
|
129
|
+
}>;
|
|
130
|
+
/**
|
|
131
|
+
* Apply a {@link BundleConfig#fileNamePattern} to an
|
|
132
|
+
* entry name and format, substituting `[name]` and
|
|
133
|
+
* `[format]`. Pure string templating.
|
|
134
|
+
*/
|
|
135
|
+
export declare const applyFileName: (pattern: string, name: string, format: Format) => string;
|
|
136
|
+
//# sourceMappingURL=BundleConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BundleConfig.d.ts","sourceRoot":"","sources":["../../../src/domain/model/BundleConfig.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAElC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAChB,aAAa,CAAC,MAAM,CAAC,GACrB,MAAM,GACN,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,uCAAuC;IACvC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B;;;;;;;OAOG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,KAAK,EAAE,QAAQ,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH;;;;OAIG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB,CAAC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,MAAM,EACf,MAAM,MAAM,EACZ,QAAQ,MAAM,KACb,MAKc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Plain-TS build tool: a foundation bundler must not
|
|
2
|
+
// depend on the library it builds (plgg), so this
|
|
3
|
+
// package is written in plain TypeScript — native
|
|
4
|
+
// control flow, throw-on-failure caught at the bin
|
|
5
|
+
// boundary — rather than plgg's Result/Option idiom.
|
|
6
|
+
// See README. The CLAUDE.md no-`as`/`any`/`ts-ignore`
|
|
7
|
+
// rule still holds.
|
|
8
|
+
/**
|
|
9
|
+
* Apply a {@link BundleConfig#fileNamePattern} to an
|
|
10
|
+
* entry name and format, substituting `[name]` and
|
|
11
|
+
* `[format]`. Pure string templating.
|
|
12
|
+
*/
|
|
13
|
+
export const applyFileName = (pattern, name, format) => pattern
|
|
14
|
+
.split("[name]")
|
|
15
|
+
.join(name)
|
|
16
|
+
.split("[format]")
|
|
17
|
+
.join(format);
|
|
18
|
+
//# sourceMappingURL=BundleConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BundleConfig.js","sourceRoot":"","sources":["../../../src/domain/model/BundleConfig.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,kDAAkD;AAClD,kDAAkD;AAClD,mDAAmD;AACnD,qDAAqD;AACrD,sDAAsD;AACtD,oBAAoB;AA6IpB;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAe,EACf,IAAY,EACZ,MAAc,EACN,EAAE,CACV,OAAO;KACJ,KAAK,CAAC,QAAQ,CAAC;KACf,IAAI,CAAC,IAAI,CAAC;KACV,KAAK,CAAC,UAAU,CAAC;KACjB,IAAI,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BundleConfig.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/model/BundleConfig.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { test, check, all, toBe, } from "plgg-test";
|
|
2
|
+
import { applyFileName } from "plgg-bundle/domain/model/BundleConfig";
|
|
3
|
+
test("applyFileName substitutes name and format", () => all([
|
|
4
|
+
check(applyFileName("[name].[format].js", "index", "es"), toBe("index.es.js")),
|
|
5
|
+
check(applyFileName("[name].[format].js", "index", "cjs"), toBe("index.cjs.js")),
|
|
6
|
+
check(applyFileName("[name].[format].js", "styleEntry", "es"), toBe("styleEntry.es.js")),
|
|
7
|
+
]));
|
|
8
|
+
//# sourceMappingURL=BundleConfig.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BundleConfig.spec.js","sourceRoot":"","sources":["../../../src/domain/model/BundleConfig.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GACL,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE,CACrD,GAAG,CAAC;IACF,KAAK,CACH,aAAa,CACX,oBAAoB,EACpB,OAAO,EACP,IAAI,CACL,EACD,IAAI,CAAC,aAAa,CAAC,CACpB;IACD,KAAK,CACH,aAAa,CACX,oBAAoB,EACpB,OAAO,EACP,KAAK,CACN,EACD,IAAI,CAAC,cAAc,CAAC,CACrB;IACD,KAAK,CACH,aAAa,CACX,oBAAoB,EACpB,YAAY,EACZ,IAAI,CACL,EACD,IAAI,CAAC,kBAAkB,CAAC,CACzB;CACF,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type BundleConfig } from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
+
/**
|
|
3
|
+
* Validate an `unknown` value (a dynamically-imported
|
|
4
|
+
* config module's default export) into a typed
|
|
5
|
+
* {@link BundleConfig}. The config is the bundler's
|
|
6
|
+
* `unknown` boundary, so every field is narrowed with a
|
|
7
|
+
* real guard (`typeof`, `Array.isArray`) — no `as`, no
|
|
8
|
+
* `any`. Throws a `ConfigError` on the first invalid
|
|
9
|
+
* field.
|
|
10
|
+
*
|
|
11
|
+
* Externals are NOT a config field: the bundler derives
|
|
12
|
+
* them from the package's `package.json` dependency
|
|
13
|
+
* graph (see `deriveExternal`), so they cannot drift
|
|
14
|
+
* from the manifest.
|
|
15
|
+
*/
|
|
16
|
+
export declare const asBundleConfig: (value: unknown) => BundleConfig;
|
|
17
|
+
//# sourceMappingURL=asBundleConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asBundleConfig.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/asBundleConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,OAAO,KACb,YAwBF,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import {} from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
+
/**
|
|
3
|
+
* Validate an `unknown` value (a dynamically-imported
|
|
4
|
+
* config module's default export) into a typed
|
|
5
|
+
* {@link BundleConfig}. The config is the bundler's
|
|
6
|
+
* `unknown` boundary, so every field is narrowed with a
|
|
7
|
+
* real guard (`typeof`, `Array.isArray`) — no `as`, no
|
|
8
|
+
* `any`. Throws a `ConfigError` on the first invalid
|
|
9
|
+
* field.
|
|
10
|
+
*
|
|
11
|
+
* Externals are NOT a config field: the bundler derives
|
|
12
|
+
* them from the package's `package.json` dependency
|
|
13
|
+
* graph (see `deriveExternal`), so they cannot drift
|
|
14
|
+
* from the manifest.
|
|
15
|
+
*/
|
|
16
|
+
export const asBundleConfig = (value) => {
|
|
17
|
+
if (!isRecord(value)) {
|
|
18
|
+
return fail("config is not an object");
|
|
19
|
+
}
|
|
20
|
+
const devSection = dev(value);
|
|
21
|
+
return {
|
|
22
|
+
target: target(value),
|
|
23
|
+
root: str(value, "root"),
|
|
24
|
+
rootDir: str(value, "rootDir"),
|
|
25
|
+
outDir: str(value, "outDir"),
|
|
26
|
+
fileNamePattern: str(value, "fileNamePattern"),
|
|
27
|
+
entries: entries(value),
|
|
28
|
+
formats: formats(value),
|
|
29
|
+
alias: alias(value),
|
|
30
|
+
// `exactOptionalPropertyTypes`: only attach `dev` when
|
|
31
|
+
// the config actually declared it (never `dev:
|
|
32
|
+
// undefined`).
|
|
33
|
+
...(devSection === undefined
|
|
34
|
+
? {}
|
|
35
|
+
: { dev: devSection }),
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* The optional `dev` section (see {@link DevConfig}).
|
|
40
|
+
* Absent → `undefined` (a build-only library). Present →
|
|
41
|
+
* every field narrowed at the boundary.
|
|
42
|
+
*/
|
|
43
|
+
const dev = (o) => {
|
|
44
|
+
const raw = o["dev"];
|
|
45
|
+
if (raw === undefined) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
if (!isRecord(raw)) {
|
|
49
|
+
return fail(`"dev" must be an object`);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
entry: str(raw, "entry"),
|
|
53
|
+
port: num(raw, "port"),
|
|
54
|
+
watch: strArray(raw, "watch"),
|
|
55
|
+
allowedHosts: strArray(raw, "allowedHosts"),
|
|
56
|
+
sourceAliases: sourceAliases(raw),
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* The optional `sourceAliases` array (defaults to `[]`):
|
|
61
|
+
* each element `{ prefix, srcDir }` — both strings.
|
|
62
|
+
*/
|
|
63
|
+
const sourceAliases = (o) => {
|
|
64
|
+
const raw = o["sourceAliases"];
|
|
65
|
+
return raw === undefined
|
|
66
|
+
? []
|
|
67
|
+
: Array.isArray(raw)
|
|
68
|
+
? raw.map(sourceAlias)
|
|
69
|
+
: fail(`"sourceAliases" must be an array`);
|
|
70
|
+
};
|
|
71
|
+
const sourceAlias = (raw) => isRecord(raw) &&
|
|
72
|
+
typeof raw["prefix"] === "string" &&
|
|
73
|
+
typeof raw["srcDir"] === "string"
|
|
74
|
+
? {
|
|
75
|
+
prefix: raw["prefix"],
|
|
76
|
+
srcDir: raw["srcDir"],
|
|
77
|
+
}
|
|
78
|
+
: fail(`each sourceAlias needs string "prefix" and "srcDir"`);
|
|
79
|
+
/**
|
|
80
|
+
* A required finite-number field.
|
|
81
|
+
*/
|
|
82
|
+
const num = (o, key) => {
|
|
83
|
+
const v = o[key];
|
|
84
|
+
return typeof v === "number" &&
|
|
85
|
+
Number.isFinite(v)
|
|
86
|
+
? v
|
|
87
|
+
: fail(`"${key}" must be a number`);
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* A required array-of-strings field. Maps each element
|
|
91
|
+
* through a string guard (mirroring `entries`/`formats`)
|
|
92
|
+
* so the result is a real `string[]` — never a leaked
|
|
93
|
+
* `any[]` from `Array.isArray`.
|
|
94
|
+
*/
|
|
95
|
+
const strArray = (o, key) => {
|
|
96
|
+
const v = o[key];
|
|
97
|
+
return Array.isArray(v)
|
|
98
|
+
? v.map((e) => strElem(e, key))
|
|
99
|
+
: fail(`"${key}" must be an array`);
|
|
100
|
+
};
|
|
101
|
+
const strElem = (e, key) => typeof e === "string"
|
|
102
|
+
? e
|
|
103
|
+
: fail(`each "${key}" entry must be a string`);
|
|
104
|
+
/**
|
|
105
|
+
* The optional `target` field — `"library"` (default) or
|
|
106
|
+
* `"app"`. Absent means a library, so the existing
|
|
107
|
+
* library configs need no change.
|
|
108
|
+
*/
|
|
109
|
+
const target = (o) => {
|
|
110
|
+
const v = o["target"];
|
|
111
|
+
return v === undefined || v === "library"
|
|
112
|
+
? "library"
|
|
113
|
+
: v === "app"
|
|
114
|
+
? "app"
|
|
115
|
+
: fail(`"target" must be "library" or "app"`);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Throw a config validation error. Return type `never`
|
|
119
|
+
* so a failed check is a dead end at the call site.
|
|
120
|
+
*/
|
|
121
|
+
const fail = (message) => {
|
|
122
|
+
throw new Error(`ConfigError: ${message}`);
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Whether a value is a non-null object (records the
|
|
126
|
+
* narrowing for property reads).
|
|
127
|
+
*/
|
|
128
|
+
const isRecord = (v) => typeof v === "object" && v !== null;
|
|
129
|
+
/**
|
|
130
|
+
* A required string field.
|
|
131
|
+
*/
|
|
132
|
+
const str = (o, key) => {
|
|
133
|
+
const v = o[key];
|
|
134
|
+
return typeof v === "string"
|
|
135
|
+
? v
|
|
136
|
+
: fail(`"${key}" must be a string`);
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* The `entries` array: each element an object with
|
|
140
|
+
* string `name` and `input`.
|
|
141
|
+
*/
|
|
142
|
+
const entries = (o) => {
|
|
143
|
+
const raw = o["entries"];
|
|
144
|
+
return Array.isArray(raw)
|
|
145
|
+
? raw.map(entry)
|
|
146
|
+
: fail(`"entries" must be an array`);
|
|
147
|
+
};
|
|
148
|
+
const entry = (raw) => isRecord(raw) &&
|
|
149
|
+
typeof raw["name"] === "string" &&
|
|
150
|
+
typeof raw["input"] === "string"
|
|
151
|
+
? { name: raw["name"], input: raw["input"] }
|
|
152
|
+
: fail(`each entry needs string "name" and "input"`);
|
|
153
|
+
/**
|
|
154
|
+
* The `formats` array: each `"es"` or `"cjs"`.
|
|
155
|
+
*/
|
|
156
|
+
const formats = (o) => {
|
|
157
|
+
const raw = o["formats"];
|
|
158
|
+
return Array.isArray(raw)
|
|
159
|
+
? raw.map(format)
|
|
160
|
+
: fail(`"formats" must be an array`);
|
|
161
|
+
};
|
|
162
|
+
const format = (raw) => raw === "es" || raw === "cjs"
|
|
163
|
+
? raw
|
|
164
|
+
: fail(`each format must be "es" or "cjs"`);
|
|
165
|
+
/**
|
|
166
|
+
* The `alias` object: string `prefix` and `srcRoot`.
|
|
167
|
+
*/
|
|
168
|
+
const alias = (o) => {
|
|
169
|
+
const raw = o["alias"];
|
|
170
|
+
return isRecord(raw) &&
|
|
171
|
+
typeof raw["prefix"] === "string" &&
|
|
172
|
+
typeof raw["srcRoot"] === "string"
|
|
173
|
+
? {
|
|
174
|
+
prefix: raw["prefix"],
|
|
175
|
+
srcRoot: raw["srcRoot"],
|
|
176
|
+
}
|
|
177
|
+
: fail(`"alias" needs string "prefix" and "srcRoot"`);
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=asBundleConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asBundleConfig.js","sourceRoot":"","sources":["../../../src/domain/usecase/asBundleConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asBundleConfig.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/asBundleConfig.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asBundleConfig.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/asBundleConfig.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|