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.
Files changed (208) hide show
  1. package/bin/hook.d.mts +20 -0
  2. package/bin/hook.mjs +11 -2
  3. package/bin/plgg-bundle.mjs +9 -0
  4. package/bin/relocate.mjs +108 -0
  5. package/package.json +2 -5
  6. package/src/Dev/fixtures/aliasDir/index.ts +6 -0
  7. package/src/Dev/node/devServer.ts +5 -5
  8. package/src/Dev/node/httpAdapter.ts +1 -1
  9. package/src/Dev/node/scanGraph.ts +2 -2
  10. package/src/Dev/node/watch.ts +1 -1
  11. package/src/Dev/usecase/selfAliasResolve.spec.ts +68 -0
  12. package/src/domain/usecase/build.ts +2 -2
  13. package/src/domain/usecase/collectModules.ts +2 -2
  14. package/src/domain/usecase/deriveExternal.ts +2 -2
  15. package/src/domain/usecase/discoverWorkspace.ts +2 -2
  16. package/src/domain/usecase/emitDts.ts +4 -4
  17. package/src/domain/usecase/resolveSpecifier.ts +2 -2
  18. package/src/domain/usecase/resolveWorkspaceSpecifier.ts +1 -1
  19. package/src/domain/usecase/rewriteDtsAliases.ts +2 -2
  20. package/src/vendors/nodeFs.ts +22 -0
  21. package/src/vendors/nodeHttp.ts +14 -0
  22. package/src/vendors/nodePath.ts +15 -0
  23. package/src/vendors/nodeProc.ts +12 -0
  24. package/src/vendors/nodeUrl.ts +6 -0
  25. package/dist/Dev/fixtures/devPoc.spec.d.ts +0 -2
  26. package/dist/Dev/fixtures/devPoc.spec.d.ts.map +0 -1
  27. package/dist/Dev/fixtures/devPoc.spec.js +0 -145
  28. package/dist/Dev/fixtures/devPoc.spec.js.map +0 -1
  29. package/dist/Dev/model/Fetch.d.ts +0 -20
  30. package/dist/Dev/model/Fetch.d.ts.map +0 -1
  31. package/dist/Dev/model/Fetch.js +0 -8
  32. package/dist/Dev/model/Fetch.js.map +0 -1
  33. package/dist/Dev/model/ModuleGraph.d.ts +0 -27
  34. package/dist/Dev/model/ModuleGraph.d.ts.map +0 -1
  35. package/dist/Dev/model/ModuleGraph.js +0 -2
  36. package/dist/Dev/model/ModuleGraph.js.map +0 -1
  37. package/dist/Dev/model/Protocol.d.ts +0 -22
  38. package/dist/Dev/model/Protocol.d.ts.map +0 -1
  39. package/dist/Dev/model/Protocol.js +0 -31
  40. package/dist/Dev/model/Protocol.js.map +0 -1
  41. package/dist/Dev/node/devServer.d.ts +0 -21
  42. package/dist/Dev/node/devServer.d.ts.map +0 -1
  43. package/dist/Dev/node/devServer.js +0 -298
  44. package/dist/Dev/node/devServer.js.map +0 -1
  45. package/dist/Dev/node/httpAdapter.d.ts +0 -19
  46. package/dist/Dev/node/httpAdapter.d.ts.map +0 -1
  47. package/dist/Dev/node/httpAdapter.js +0 -76
  48. package/dist/Dev/node/httpAdapter.js.map +0 -1
  49. package/dist/Dev/node/scanGraph.d.ts +0 -21
  50. package/dist/Dev/node/scanGraph.d.ts.map +0 -1
  51. package/dist/Dev/node/scanGraph.js +0 -145
  52. package/dist/Dev/node/scanGraph.js.map +0 -1
  53. package/dist/Dev/node/watch.d.ts +0 -10
  54. package/dist/Dev/node/watch.d.ts.map +0 -1
  55. package/dist/Dev/node/watch.js +0 -44
  56. package/dist/Dev/node/watch.js.map +0 -1
  57. package/dist/Dev/usecase/allowedHost.d.ts +0 -16
  58. package/dist/Dev/usecase/allowedHost.d.ts.map +0 -1
  59. package/dist/Dev/usecase/allowedHost.js +0 -33
  60. package/dist/Dev/usecase/allowedHost.js.map +0 -1
  61. package/dist/Dev/usecase/allowedHost.spec.d.ts +0 -2
  62. package/dist/Dev/usecase/allowedHost.spec.d.ts.map +0 -1
  63. package/dist/Dev/usecase/allowedHost.spec.js +0 -13
  64. package/dist/Dev/usecase/allowedHost.spec.js.map +0 -1
  65. package/dist/Dev/usecase/buildGraph.d.ts +0 -12
  66. package/dist/Dev/usecase/buildGraph.d.ts.map +0 -1
  67. package/dist/Dev/usecase/buildGraph.js +0 -24
  68. package/dist/Dev/usecase/buildGraph.js.map +0 -1
  69. package/dist/Dev/usecase/buildGraph.spec.d.ts +0 -2
  70. package/dist/Dev/usecase/buildGraph.spec.d.ts.map +0 -1
  71. package/dist/Dev/usecase/buildGraph.spec.js +0 -16
  72. package/dist/Dev/usecase/buildGraph.spec.js.map +0 -1
  73. package/dist/Dev/usecase/decorateDevHtml.d.ts +0 -12
  74. package/dist/Dev/usecase/decorateDevHtml.d.ts.map +0 -1
  75. package/dist/Dev/usecase/decorateDevHtml.js +0 -15
  76. package/dist/Dev/usecase/decorateDevHtml.js.map +0 -1
  77. package/dist/Dev/usecase/decorateDevHtml.spec.d.ts +0 -2
  78. package/dist/Dev/usecase/decorateDevHtml.spec.d.ts.map +0 -1
  79. package/dist/Dev/usecase/decorateDevHtml.spec.js +0 -19
  80. package/dist/Dev/usecase/decorateDevHtml.spec.js.map +0 -1
  81. package/dist/Dev/usecase/invalidate.d.ts +0 -17
  82. package/dist/Dev/usecase/invalidate.d.ts.map +0 -1
  83. package/dist/Dev/usecase/invalidate.js +0 -57
  84. package/dist/Dev/usecase/invalidate.js.map +0 -1
  85. package/dist/Dev/usecase/invalidate.spec.d.ts +0 -2
  86. package/dist/Dev/usecase/invalidate.spec.d.ts.map +0 -1
  87. package/dist/Dev/usecase/invalidate.spec.js +0 -64
  88. package/dist/Dev/usecase/invalidate.spec.js.map +0 -1
  89. package/dist/Dev/usecase/parseImports.d.ts +0 -24
  90. package/dist/Dev/usecase/parseImports.d.ts.map +0 -1
  91. package/dist/Dev/usecase/parseImports.js +0 -40
  92. package/dist/Dev/usecase/parseImports.js.map +0 -1
  93. package/dist/Dev/usecase/parseImports.spec.d.ts +0 -2
  94. package/dist/Dev/usecase/parseImports.spec.d.ts.map +0 -1
  95. package/dist/Dev/usecase/parseImports.spec.js +0 -24
  96. package/dist/Dev/usecase/parseImports.spec.js.map +0 -1
  97. package/dist/Dev/usecase/reloadDecision.d.ts +0 -20
  98. package/dist/Dev/usecase/reloadDecision.d.ts.map +0 -1
  99. package/dist/Dev/usecase/reloadDecision.js +0 -52
  100. package/dist/Dev/usecase/reloadDecision.js.map +0 -1
  101. package/dist/Dev/usecase/reloadDecision.spec.d.ts +0 -2
  102. package/dist/Dev/usecase/reloadDecision.spec.d.ts.map +0 -1
  103. package/dist/Dev/usecase/reloadDecision.spec.js +0 -17
  104. package/dist/Dev/usecase/reloadDecision.spec.js.map +0 -1
  105. package/dist/domain/model/BundleConfig.d.ts +0 -136
  106. package/dist/domain/model/BundleConfig.d.ts.map +0 -1
  107. package/dist/domain/model/BundleConfig.js +0 -18
  108. package/dist/domain/model/BundleConfig.js.map +0 -1
  109. package/dist/domain/model/BundleConfig.spec.d.ts +0 -2
  110. package/dist/domain/model/BundleConfig.spec.d.ts.map +0 -1
  111. package/dist/domain/model/BundleConfig.spec.js +0 -8
  112. package/dist/domain/model/BundleConfig.spec.js.map +0 -1
  113. package/dist/domain/usecase/asBundleConfig.d.ts +0 -17
  114. package/dist/domain/usecase/asBundleConfig.d.ts.map +0 -1
  115. package/dist/domain/usecase/asBundleConfig.js +0 -179
  116. package/dist/domain/usecase/asBundleConfig.js.map +0 -1
  117. package/dist/domain/usecase/asBundleConfig.spec.d.ts +0 -2
  118. package/dist/domain/usecase/asBundleConfig.spec.d.ts.map +0 -1
  119. package/dist/domain/usecase/asBundleConfig.spec.js +0 -119
  120. package/dist/domain/usecase/asBundleConfig.spec.js.map +0 -1
  121. package/dist/domain/usecase/build.d.ts +0 -14
  122. package/dist/domain/usecase/build.d.ts.map +0 -1
  123. package/dist/domain/usecase/build.js +0 -177
  124. package/dist/domain/usecase/build.js.map +0 -1
  125. package/dist/domain/usecase/collectModules.d.ts +0 -53
  126. package/dist/domain/usecase/collectModules.d.ts.map +0 -1
  127. package/dist/domain/usecase/collectModules.js +0 -118
  128. package/dist/domain/usecase/collectModules.js.map +0 -1
  129. package/dist/domain/usecase/deriveExternal.d.ts +0 -25
  130. package/dist/domain/usecase/deriveExternal.d.ts.map +0 -1
  131. package/dist/domain/usecase/deriveExternal.js +0 -79
  132. package/dist/domain/usecase/deriveExternal.js.map +0 -1
  133. package/dist/domain/usecase/deriveExternal.spec.d.ts +0 -2
  134. package/dist/domain/usecase/deriveExternal.spec.d.ts.map +0 -1
  135. package/dist/domain/usecase/deriveExternal.spec.js +0 -56
  136. package/dist/domain/usecase/deriveExternal.spec.js.map +0 -1
  137. package/dist/domain/usecase/discoverWorkspace.d.ts +0 -27
  138. package/dist/domain/usecase/discoverWorkspace.d.ts.map +0 -1
  139. package/dist/domain/usecase/discoverWorkspace.js +0 -116
  140. package/dist/domain/usecase/discoverWorkspace.js.map +0 -1
  141. package/dist/domain/usecase/discoverWorkspace.spec.d.ts +0 -2
  142. package/dist/domain/usecase/discoverWorkspace.spec.d.ts.map +0 -1
  143. package/dist/domain/usecase/discoverWorkspace.spec.js +0 -23
  144. package/dist/domain/usecase/discoverWorkspace.spec.js.map +0 -1
  145. package/dist/domain/usecase/emitBundle.d.ts +0 -43
  146. package/dist/domain/usecase/emitBundle.d.ts.map +0 -1
  147. package/dist/domain/usecase/emitBundle.js +0 -157
  148. package/dist/domain/usecase/emitBundle.js.map +0 -1
  149. package/dist/domain/usecase/emitBundle.spec.d.ts +0 -2
  150. package/dist/domain/usecase/emitBundle.spec.d.ts.map +0 -1
  151. package/dist/domain/usecase/emitBundle.spec.js +0 -80
  152. package/dist/domain/usecase/emitBundle.spec.js.map +0 -1
  153. package/dist/domain/usecase/emitDts.d.ts +0 -32
  154. package/dist/domain/usecase/emitDts.d.ts.map +0 -1
  155. package/dist/domain/usecase/emitDts.js +0 -99
  156. package/dist/domain/usecase/emitDts.js.map +0 -1
  157. package/dist/domain/usecase/isExternal.d.ts +0 -12
  158. package/dist/domain/usecase/isExternal.d.ts.map +0 -1
  159. package/dist/domain/usecase/isExternal.js +0 -16
  160. package/dist/domain/usecase/isExternal.js.map +0 -1
  161. package/dist/domain/usecase/isExternal.spec.d.ts +0 -2
  162. package/dist/domain/usecase/isExternal.spec.d.ts.map +0 -1
  163. package/dist/domain/usecase/isExternal.spec.js +0 -16
  164. package/dist/domain/usecase/isExternal.spec.js.map +0 -1
  165. package/dist/domain/usecase/resolveSpecifier.d.ts +0 -35
  166. package/dist/domain/usecase/resolveSpecifier.d.ts.map +0 -1
  167. package/dist/domain/usecase/resolveSpecifier.js +0 -83
  168. package/dist/domain/usecase/resolveSpecifier.js.map +0 -1
  169. package/dist/domain/usecase/resolveSpecifier.spec.d.ts +0 -2
  170. package/dist/domain/usecase/resolveSpecifier.spec.d.ts.map +0 -1
  171. package/dist/domain/usecase/resolveSpecifier.spec.js +0 -44
  172. package/dist/domain/usecase/resolveSpecifier.spec.js.map +0 -1
  173. package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts +0 -29
  174. package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts.map +0 -1
  175. package/dist/domain/usecase/resolveWorkspaceSpecifier.js +0 -89
  176. package/dist/domain/usecase/resolveWorkspaceSpecifier.js.map +0 -1
  177. package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts +0 -2
  178. package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts.map +0 -1
  179. package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js +0 -27
  180. package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js.map +0 -1
  181. package/dist/domain/usecase/rewriteDtsAliases.d.ts +0 -25
  182. package/dist/domain/usecase/rewriteDtsAliases.d.ts.map +0 -1
  183. package/dist/domain/usecase/rewriteDtsAliases.js +0 -71
  184. package/dist/domain/usecase/rewriteDtsAliases.js.map +0 -1
  185. package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts +0 -2
  186. package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts.map +0 -1
  187. package/dist/domain/usecase/rewriteDtsAliases.spec.js +0 -35
  188. package/dist/domain/usecase/rewriteDtsAliases.spec.js.map +0 -1
  189. package/dist/entrypoints/cli.d.ts +0 -2
  190. package/dist/entrypoints/cli.d.ts.map +0 -1
  191. package/dist/entrypoints/cli.js +0 -79
  192. package/dist/entrypoints/cli.js.map +0 -1
  193. package/dist/index.d.ts +0 -21
  194. package/dist/index.d.ts.map +0 -1
  195. package/dist/index.js +0 -28
  196. package/dist/index.js.map +0 -1
  197. package/dist/vendors/runner.d.ts +0 -20
  198. package/dist/vendors/runner.d.ts.map +0 -1
  199. package/dist/vendors/runner.js +0 -60
  200. package/dist/vendors/runner.js.map +0 -1
  201. package/dist/vendors/runner.spec.d.ts +0 -2
  202. package/dist/vendors/runner.spec.d.ts.map +0 -1
  203. package/dist/vendors/runner.spec.js +0 -20
  204. package/dist/vendors/runner.spec.js.map +0 -1
  205. package/dist/vendors/transpiler.d.ts +0 -19
  206. package/dist/vendors/transpiler.d.ts.map +0 -1
  207. package/dist/vendors/transpiler.js +0 -42
  208. package/dist/vendors/transpiler.js.map +0 -1
@@ -1,56 +0,0 @@
1
- import { test, check, all, toBe, } from "plgg-test";
2
- import { join } from "node:path";
3
- import { mkdtempSync, writeFileSync, } from "node:fs";
4
- import { tmpdir } from "node:os";
5
- import { deriveExternal } from "plgg-bundle/domain/usecase/deriveExternal";
6
- import { isExternal } from "plgg-bundle/domain/usecase/isExternal";
7
- /** True when `deriveExternal(root)` throws an Error. */
8
- const rejects = (root) => {
9
- try {
10
- deriveExternal(root);
11
- return false;
12
- }
13
- catch (e) {
14
- return e instanceof Error;
15
- }
16
- };
17
- /** A temp dir carrying a specific package.json body. */
18
- const withManifest = (body) => {
19
- const dir = mkdtempSync(join(tmpdir(), "plgg-derive-"));
20
- writeFileSync(join(dir, "package.json"), body);
21
- return dir;
22
- };
23
- // plgg-bundle's own root: its package.json declares
24
- // `typescript` as the sole dependency.
25
- const root = join(import.meta.dirname, "..", "..", "..");
26
- const external = deriveExternal(root);
27
- test("deriveExternal externalizes declared deps and node builtins", () => all([
28
- check(isExternal(external, "typescript"), toBe(true)),
29
- check(isExternal(external, "node:fs"), toBe(true)),
30
- check(isExternal(external, "node:child_process"), toBe(true)),
31
- ]));
32
- test("deriveExternal externalizes a PUBLIC SUBPATH of a declared dep", () =>
33
- // `typescript/lib/...` is a subpath of the declared
34
- // `typescript` dep → external (resolved at runtime via
35
- // the dep's own exports), mirroring `plgg-server/ssg`.
36
- check(isExternal(external, "typescript/lib/typescript"), toBe(true)));
37
- test("deriveExternal does NOT externalize undeclared / own-source specifiers", () => all([
38
- // plgg is not a dependency of plgg-bundle → not
39
- // external (an import of it would fail loudly).
40
- check(isExternal(external, "plgg"), toBe(false)),
41
- check(isExternal(external, "./resolveSpecifier"), toBe(false)),
42
- check(isExternal(external, "plgg-bundle/domain/model/BundleConfig"), toBe(false)),
43
- ]));
44
- test("deriveExternal throws when package.json is missing", () => check(rejects(join(tmpdir(), "plgg-derive-missing-xyz")), toBe(true)));
45
- test("deriveExternal throws on an unparseable package.json", () => check(rejects(withManifest("{ not valid json")), toBe(true)));
46
- test("deriveExternal treats a non-object manifest as zero declared deps", () => {
47
- const ext = deriveExternal(withManifest(`"just a string"`));
48
- return all([
49
- // node:* is still external by prefix …
50
- check(isExternal(ext, "node:fs"), toBe(true)),
51
- // … but nothing is declared, so any package specifier
52
- // is undeclared (not external).
53
- check(isExternal(ext, "whatever"), toBe(false)),
54
- ]);
55
- });
56
- //# sourceMappingURL=deriveExternal.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deriveExternal.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/deriveExternal.spec.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * A workspace sibling the app bundler can INLINE from
3
- * source: its package `name`, its `dir`, and the map from
4
- * each public export subpath (`"."`, `"./client"`, …) to
5
- * the `import.default` dist path declared in its
6
- * `package.json` `exports`. The app resolver reverses
7
- * that dist path to the entry's source file (so the
8
- * `./style` → `dist/styleEntry.es.js` → `src/styleEntry`
9
- * rename is honoured), and falls back to a self-alias
10
- * `name/<path>` → `src/<path>` for non-export internal
11
- * imports.
12
- */
13
- export type WorkspacePackage = Readonly<{
14
- name: string;
15
- dir: string;
16
- /** export subpath (`"."` | `"./x"`) → dist default. */
17
- exports: ReadonlyMap<string, string>;
18
- }>;
19
- /**
20
- * Discover every sibling package under the directory that
21
- * holds `packageRoot` (the monorepo `packages/` dir) —
22
- * each entry that has a `package.json` with a `name`.
23
- * Sorted longest-name-first so a later prefix match picks
24
- * `plgg-view` over `plgg`. Throws on a read/parse failure.
25
- */
26
- export declare const discoverWorkspace: (packageRoot: string) => ReadonlyArray<WorkspacePackage>;
27
- //# sourceMappingURL=discoverWorkspace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discoverWorkspace.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/discoverWorkspace.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,KAClB,aAAa,CAAC,gBAAgB,CAUhC,CAAC"}
@@ -1,116 +0,0 @@
1
- import { readdirSync, readFileSync, existsSync, statSync, } from "node:fs";
2
- import { join, dirname } from "node:path";
3
- /**
4
- * Discover every sibling package under the directory that
5
- * holds `packageRoot` (the monorepo `packages/` dir) —
6
- * each entry that has a `package.json` with a `name`.
7
- * Sorted longest-name-first so a later prefix match picks
8
- * `plgg-view` over `plgg`. Throws on a read/parse failure.
9
- */
10
- export const discoverWorkspace = (packageRoot) => {
11
- const siblingsDir = dirname(packageRoot);
12
- return readdirSync(siblingsDir)
13
- .map((name) => join(siblingsDir, name))
14
- .filter(isPackageDir)
15
- .map(readPackage)
16
- .flatMap((p) => (p === undefined ? [] : [p]))
17
- .sort((a, b) => b.name.length - a.name.length);
18
- };
19
- /**
20
- * Whether a path is a directory holding a
21
- * `package.json`.
22
- */
23
- const isPackageDir = (dir) => statSync(dir).isDirectory() &&
24
- existsSync(join(dir, "package.json"));
25
- /**
26
- * Read one package's manifest into a
27
- * {@link WorkspacePackage}, or `undefined` when it
28
- * declares no `name`. Throws on unreadable/invalid JSON.
29
- */
30
- const readPackage = (dir) => {
31
- const pkg = parseJson(join(dir, "package.json"));
32
- const name = pkg["name"];
33
- return typeof name === "string"
34
- ? { name, dir, exports: exportMap(pkg) }
35
- : undefined;
36
- };
37
- /**
38
- * Parse a `package.json`, re-throwing with context.
39
- */
40
- const parseJson = (path) => {
41
- try {
42
- const parsed = JSON.parse(readFileSync(path, "utf8"));
43
- return isRecord(parsed) ? parsed : {};
44
- }
45
- catch (cause) {
46
- throw new Error(`WorkspaceError: cannot read ${path}: ${cause instanceof Error
47
- ? cause.message
48
- : String(cause)}`);
49
- }
50
- };
51
- /**
52
- * Build the subpath → dist-default map from an `exports`
53
- * field, tolerating both shapes used in the repo:
54
- * - a subpath map (`{ ".": …, "./client": … }`), and
55
- * - a bare conditions object (`{ import: …, require: … }`)
56
- * which IS the `"."` export.
57
- */
58
- const exportMap = (pkg) => {
59
- const exports = pkg["exports"];
60
- const out = new Map();
61
- if (!isRecord(exports)) {
62
- return out;
63
- }
64
- if (isSubpathMap(exports)) {
65
- for (const [key, val] of Object.entries(exports)) {
66
- const def = conditionDefault(val);
67
- if (def !== undefined) {
68
- out.set(key, def);
69
- }
70
- }
71
- return out;
72
- }
73
- const def = conditionDefault(exports);
74
- if (def !== undefined) {
75
- out.set(".", def);
76
- }
77
- return out;
78
- };
79
- /**
80
- * Whether an `exports` object is a subpath map (its keys
81
- * are `.`/`./…` paths) rather than a bare conditions
82
- * object (keys like `import`/`require`).
83
- */
84
- const isSubpathMap = (exports) => Object.keys(exports).some((k) => k.startsWith("."));
85
- /**
86
- * Extract the resolved default file from a conditions
87
- * object: the `import` (or `require`) branch's `default`,
88
- * or a directly-stringed condition. Returns `undefined`
89
- * when none is present.
90
- */
91
- const conditionDefault = (conditions) => {
92
- if (typeof conditions === "string") {
93
- return conditions;
94
- }
95
- if (!isRecord(conditions)) {
96
- return undefined;
97
- }
98
- return (branchDefault(conditions["import"]) ??
99
- branchDefault(conditions["require"]) ??
100
- branchDefault(conditions["default"]));
101
- };
102
- /**
103
- * The `default` of one condition branch, where the branch
104
- * is either a string or a `{ types, default }` object.
105
- */
106
- const branchDefault = (branch) => typeof branch === "string"
107
- ? branch
108
- : isRecord(branch) &&
109
- typeof branch["default"] === "string"
110
- ? branch["default"]
111
- : undefined;
112
- /**
113
- * Whether a value is a non-null object.
114
- */
115
- const isRecord = (v) => typeof v === "object" && v !== null;
116
- //# sourceMappingURL=discoverWorkspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discoverWorkspace.js","sourceRoot":"","sources":["../../../src/domain/usecase/discoverWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqB1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,WAAmB,EACc,EAAE;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,WAAW,CAAC,WAAW,CAAC;SAC5B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACtC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,WAAW,CAAC;SAChB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5C,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CACxC,CAAC;AACN,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,GAAW,EAAW,EAAE,CAC5C,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;IAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AAExC;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAClB,GAAW,EACmB,EAAE;IAChC,MAAM,GAAG,GAAG,SAAS,CACnB,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAC1B,CAAC;IACF,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,OAAO,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;QACxC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,SAAS,GAAG,CAChB,IAAY,EACa,EAAE;IAC3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAChC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAC3B,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,KACjC,KAAK,YAAY,KAAK;YACpB,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAClB,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,CAChB,GAA4B,EACC,EAAE;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CACrC,OAAO,CACR,EAAE,CAAC;YACF,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,CACnB,OAAgC,EACvB,EAAE,CACX,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAClB,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,CACvB,UAAmB,EACC,EAAE;IACtB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CACL,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CACrC,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,aAAa,GAAG,CACpB,MAAe,EACK,EAAE,CACtB,OAAO,MAAM,KAAK,QAAQ;IACxB,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACd,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ;QACvC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACnB,CAAC,CAAC,SAAS,CAAC;AAElB;;GAEG;AACH,MAAM,QAAQ,GAAG,CACf,CAAU,EACoB,EAAE,CAChC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=discoverWorkspace.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discoverWorkspace.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/discoverWorkspace.spec.ts"],"names":[],"mappings":""}
@@ -1,23 +0,0 @@
1
- import { test, check, all, toBe, } from "plgg-test";
2
- import { join } from "node:path";
3
- import { discoverWorkspace } from "plgg-bundle/domain/usecase/discoverWorkspace";
4
- // Run against the real monorepo: this package's root is
5
- // `packages/plgg-bundle`, so discovery scans `packages/*`.
6
- const bundleRoot = join(import.meta.dirname, "..", "..", "..");
7
- const packages = discoverWorkspace(bundleRoot);
8
- const byName = (name) => packages.find((p) => p.name === name);
9
- test("discoverWorkspace finds sibling packages", () => all([
10
- check(byName("plgg") !== undefined, toBe(true)),
11
- check(byName("plgg-view") !== undefined, toBe(true)),
12
- ]));
13
- test("discoverWorkspace reads the conditions-only '.' export (plgg)", () => check(byName("plgg")?.exports.get("."), toBe("./dist/index.es.js")));
14
- test("discoverWorkspace reads a subpath export incl. the styleEntry rename", () => all([
15
- check(byName("plgg-view")?.exports.get("./client"), toBe("./dist/client.es.js")),
16
- check(byName("plgg-view")?.exports.get("./style"), toBe("./dist/styleEntry.es.js")),
17
- ]));
18
- test("discoverWorkspace sorts longest-name first (so plgg-view beats plgg)", () => {
19
- const iView = packages.findIndex((p) => p.name === "plgg-view");
20
- const iCore = packages.findIndex((p) => p.name === "plgg");
21
- return check(iView < iCore, toBe(true));
22
- });
23
- //# sourceMappingURL=discoverWorkspace.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discoverWorkspace.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/discoverWorkspace.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GACL,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF,wDAAwD;AACxD,2DAA2D;AAC3D,MAAM,UAAU,GAAG,IAAI,CACrB,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;AAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC/C,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAExC,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE,CACpD,GAAG,CAAC;IACF,KAAK,CACH,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,EAC5B,IAAI,CAAC,IAAI,CAAC,CACX;IACD,KAAK,CACH,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,EACjC,IAAI,CAAC,IAAI,CAAC,CACX;CACF,CAAC,CAAC,CAAC;AAEN,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE,CACzE,KAAK,CACH,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAChC,IAAI,CAAC,oBAAoB,CAAC,CAC3B,CAAC,CAAC;AAEL,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE,CAChF,GAAG,CAAC;IACF,KAAK,CACH,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,CAC9B,UAAU,CACX,EACD,IAAI,CAAC,qBAAqB,CAAC,CAC5B;IACD,KAAK,CACH,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAC3C,IAAI,CAAC,yBAAyB,CAAC,CAChC;CACF,CAAC,CAAC,CAAC;AAEN,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;IAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAC9B,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CACzB,CAAC;IACF,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC"}
@@ -1,43 +0,0 @@
1
- import { type Format } from "plgg-bundle/domain/model/BundleConfig";
2
- import { type Graph } from "plgg-bundle/domain/usecase/collectModules";
3
- /**
4
- * Render a resolved {@link Graph} into one bundle's
5
- * source text for the given {@link Format}, using an
6
- * in-house module-registry runtime: every module body
7
- * is wrapped in its own `(module, exports, require)`
8
- * closure keyed by id, and a cached `__require` links
9
- * them at runtime. This is collision-free by
10
- * construction (each module keeps its own scope), so it
11
- * needs none of rolldown's scope-hoisting/renaming and
12
- * stays pure JS.
13
- *
14
- * Externals (specifiers left out of the bundle —
15
- * `node:*`, sibling `plgg*` packages, …) are handled
16
- * per format:
17
- * - CJS: an un-rewritten `require("<external>")` in a
18
- * module body falls through the registry to the host
19
- * `require`.
20
- * - ESM: there is no host `require`, so the bundle emits
21
- * a real top-level `import * as __extN from
22
- * "<external>"` for each distinct external and the
23
- * registry routes `__require("<external>")` to that
24
- * namespace.
25
- */
26
- export declare const emitCjsBundle: (graph: Graph) => string;
27
- /**
28
- * ESM bundle. `exportNames` is the exact public surface
29
- * (the entry's enumerable export keys), supplied by the
30
- * orchestrator from the CJS bundle's runtime keys —
31
- * ESM cannot declare exports dynamically. Externals are
32
- * imported as namespaces at the top and resolved by the
33
- * registry; an id that is neither a bundled module nor a
34
- * declared external falls back to a native dynamic
35
- * `import(id)` (see {@link externalFallback}).
36
- */
37
- export declare const emitEsmBundle: (graph: Graph, exportNames: ReadonlyArray<string>) => string;
38
- /**
39
- * Dispatch on format for callers that hold the names
40
- * regardless.
41
- */
42
- export declare const emitBundle: (graph: Graph, format: Format, exportNames: ReadonlyArray<string>) => string;
43
- //# sourceMappingURL=emitBundle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emitBundle.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/emitBundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EACL,KAAK,KAAK,EAEX,MAAM,2CAA2C,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,KACX,MAOW,CAAC;AAEf;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,EACZ,aAAa,aAAa,CAAC,MAAM,CAAC,KACjC,MAYF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,aAAa,aAAa,CAAC,MAAM,CAAC,KACjC,MAGuB,CAAC"}
@@ -1,157 +0,0 @@
1
- import {} from "plgg-bundle/domain/model/BundleConfig";
2
- import {} from "plgg-bundle/domain/usecase/collectModules";
3
- /**
4
- * Render a resolved {@link Graph} into one bundle's
5
- * source text for the given {@link Format}, using an
6
- * in-house module-registry runtime: every module body
7
- * is wrapped in its own `(module, exports, require)`
8
- * closure keyed by id, and a cached `__require` links
9
- * them at runtime. This is collision-free by
10
- * construction (each module keeps its own scope), so it
11
- * needs none of rolldown's scope-hoisting/renaming and
12
- * stays pure JS.
13
- *
14
- * Externals (specifiers left out of the bundle —
15
- * `node:*`, sibling `plgg*` packages, …) are handled
16
- * per format:
17
- * - CJS: an un-rewritten `require("<external>")` in a
18
- * module body falls through the registry to the host
19
- * `require`.
20
- * - ESM: there is no host `require`, so the bundle emits
21
- * a real top-level `import * as __extN from
22
- * "<external>"` for each distinct external and the
23
- * registry routes `__require("<external>")` to that
24
- * namespace.
25
- */
26
- export const emitCjsBundle = (graph) => [
27
- `"use strict";`,
28
- runtime(graph, `return require(id);`),
29
- `module.exports = __require(${entryArg(graph)});`,
30
- ].join("\n");
31
- /**
32
- * ESM bundle. `exportNames` is the exact public surface
33
- * (the entry's enumerable export keys), supplied by the
34
- * orchestrator from the CJS bundle's runtime keys —
35
- * ESM cannot declare exports dynamically. Externals are
36
- * imported as namespaces at the top and resolved by the
37
- * registry; an id that is neither a bundled module nor a
38
- * declared external falls back to a native dynamic
39
- * `import(id)` (see {@link externalFallback}).
40
- */
41
- export const emitEsmBundle = (graph, exportNames) => {
42
- const externals = collectExternals(graph);
43
- return [
44
- externalImports(externals),
45
- externalTable(externals),
46
- runtime(graph, externalFallback()),
47
- `const __entry = __require(${entryArg(graph)});`,
48
- `export default __entry;`,
49
- namedExports(exportNames),
50
- ].join("\n");
51
- };
52
- /**
53
- * Dispatch on format for callers that hold the names
54
- * regardless.
55
- */
56
- export const emitBundle = (graph, format, exportNames) => format === "es"
57
- ? emitEsmBundle(graph, exportNames)
58
- : emitCjsBundle(graph);
59
- /**
60
- * The shared registry runtime: a module table plus a
61
- * caching `__require` that runs a module body once and
62
- * memoizes its `exports`. An id with no bundled module
63
- * runs `unknownBody` (the format-specific external
64
- * fallback).
65
- */
66
- const runtime = (graph, unknownBody) => [
67
- `const __modules = {`,
68
- graph.modules.map(moduleEntry).join(",\n"),
69
- `};`,
70
- `const __cache = {};`,
71
- `function __require(id) {`,
72
- ` if (id in __cache) return __cache[id].exports;`,
73
- ` const fn = __modules[id];`,
74
- ` if (!fn) { ${unknownBody} }`,
75
- ` const module = { exports: {} };`,
76
- ` __cache[id] = module;`,
77
- ` fn(module, module.exports, __require);`,
78
- ` return module.exports;`,
79
- `}`,
80
- ].join("\n");
81
- /**
82
- * The ESM fallback body for an id with no bundled
83
- * module: resolve it from the external namespace table
84
- * (interop: a CJS consumer reads named members off the
85
- * namespace; `default` carries the whole module), or
86
- * fall back to a native dynamic `import(id)`. Static
87
- * imports are always bundled or declared external, so
88
- * only a transpiled dynamic `import(x)` — emitted as
89
- * `Promise.resolve(x).then(s => __require(s))`, an
90
- * async context where the returned Promise flattens —
91
- * ever reaches the fallback; it lets bundled code load
92
- * runtime files (e.g. a user's config) the registry
93
- * cannot know. The CJS runtime keeps its host
94
- * `require(id)` fall-through instead: its unknown-id
95
- * branch is also reached by synchronous requires, where
96
- * a returned Promise would corrupt the module value.
97
- */
98
- const externalFallback = () => [
99
- `if (id in __externals) return __externals[id];`,
100
- `return import(id);`,
101
- ].join(" ");
102
- /**
103
- * Distinct external specifiers across the whole graph,
104
- * sorted for deterministic output.
105
- */
106
- const collectExternals = (graph) => [
107
- ...new Set(graph.modules.flatMap((m) => m.externals)),
108
- ].sort();
109
- /**
110
- * Top-level namespace imports, one per external, named
111
- * `__ext0`, `__ext1`, … in the externals' sorted order.
112
- */
113
- const externalImports = (externals) => externals
114
- .map((spec, i) => `import * as ${extVar(i)} from ${JSON.stringify(spec)};`)
115
- .join("\n");
116
- /**
117
- * The `__externals` lookup mapping each specifier to its
118
- * imported namespace var.
119
- */
120
- const externalTable = (externals) => [
121
- `const __externals = {`,
122
- externals
123
- .map((spec, i) => ` ${JSON.stringify(spec)}: ${extVar(i)}`)
124
- .join(",\n"),
125
- `};`,
126
- ].join("\n");
127
- /**
128
- * The namespace variable name for the i-th external.
129
- */
130
- const extVar = (i) => `__ext${i}`;
131
- /**
132
- * One module's registry entry: `"id": function (module,
133
- * exports, require) { <body> }`.
134
- */
135
- const moduleEntry = (m) => [
136
- `${JSON.stringify(m.id)}: `,
137
- `function (module, exports, require) {\n`,
138
- m.code,
139
- `\n}`,
140
- ].join("");
141
- /**
142
- * Static named re-exports of the entry namespace. Each
143
- * name is a valid identifier (a JS export name), so the
144
- * `export const` list is itself valid ESM.
145
- */
146
- const namedExports = (names) => names.length === 0
147
- ? ``
148
- : [
149
- `export const {`,
150
- names.map((n) => ` ${n}`).join(",\n"),
151
- `} = __entry;`,
152
- ].join("\n");
153
- /**
154
- * The JSON-quoted entry id used as `__require`'s arg.
155
- */
156
- const entryArg = (graph) => JSON.stringify(graph.entryId);
157
- //# sourceMappingURL=emitBundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emitBundle.js","sourceRoot":"","sources":["../../../src/domain/usecase/emitBundle.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=emitBundle.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emitBundle.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/emitBundle.spec.ts"],"names":[],"mappings":""}
@@ -1,80 +0,0 @@
1
- import { test, check, all, toBe, } from "plgg-test";
2
- import { emitCjsBundle, emitEsmBundle, } from "plgg-bundle/domain/usecase/emitBundle";
3
- import {} from "plgg-bundle/domain/usecase/collectModules";
4
- const graph = {
5
- entryId: "index.ts",
6
- modules: [
7
- {
8
- id: "index.ts",
9
- code: 'exports.x = require("dep.ts").x;',
10
- externals: [],
11
- },
12
- {
13
- id: "dep.ts",
14
- code: "exports.x = 1;",
15
- externals: [],
16
- },
17
- ],
18
- };
19
- test("emitCjsBundle wires the registry and entry export", () => all([
20
- check(emitCjsBundle(graph).includes("function __require(id)"), toBe(true)),
21
- check(emitCjsBundle(graph).includes('module.exports = __require("index.ts")'), toBe(true)),
22
- check(emitCjsBundle(graph).includes('"dep.ts":'), toBe(true)),
23
- ]));
24
- test("emitEsmBundle emits static named exports", () => all([
25
- check(emitEsmBundle(graph, ["x"]).includes("export default __entry;"), toBe(true)),
26
- check(emitEsmBundle(graph, ["x"]).includes("} = __entry;"), toBe(true)),
27
- check(emitEsmBundle(graph, ["x"]).includes(" x"), toBe(true)),
28
- ]));
29
- test("the emitted CJS bundle actually runs", () => {
30
- // Evaluate the emitted CJS in a fresh module scope
31
- // and confirm the entry's export resolves through the
32
- // registry runtime.
33
- const code = emitCjsBundle(graph);
34
- const mod = {
35
- exports: {},
36
- };
37
- new Function("module", "exports", "require", code)(mod, mod.exports, () => ({}));
38
- return check(mod.exports.x, toBe(1));
39
- });
40
- // A graph whose entry keeps an un-bundled external
41
- // require (e.g. a node builtin).
42
- const externalGraph = {
43
- entryId: "index.ts",
44
- modules: [
45
- {
46
- id: "index.ts",
47
- code: 'exports.read = require("node:fs").readFileSync;',
48
- externals: ["node:fs"],
49
- },
50
- ],
51
- };
52
- test("emitEsmBundle imports externals and routes the registry to them", () => all([
53
- check(emitEsmBundle(externalGraph, [
54
- "read",
55
- ]).includes('import * as __ext0 from "node:fs";'), toBe(true)),
56
- check(emitEsmBundle(externalGraph, [
57
- "read",
58
- ]).includes('"node:fs": __ext0'), toBe(true)),
59
- check(emitEsmBundle(externalGraph, [
60
- "read",
61
- ]).includes("if (id in __externals) return __externals[id];"), toBe(true)),
62
- ]));
63
- test("emitEsmBundle falls back to native dynamic import for unresolved ids", () => all([
64
- // A runtime-only id (e.g. a config file path from a
65
- // transpiled dynamic import) resolves natively …
66
- check(emitEsmBundle(externalGraph, [
67
- "read",
68
- ]).includes("return import(id);"), toBe(true)),
69
- // … instead of throwing as a build mistake.
70
- check(emitEsmBundle(externalGraph, [
71
- "read",
72
- ]).includes("Cannot resolve external"), toBe(false)),
73
- ]));
74
- test("emitCjsBundle leaves externals to the host require", () => all([
75
- // No external import machinery in CJS …
76
- check(emitCjsBundle(externalGraph).includes("__externals"), toBe(false)),
77
- // … the un-rewritten require falls through to host.
78
- check(emitCjsBundle(externalGraph).includes("return require(id);"), toBe(true)),
79
- ]));
80
- //# sourceMappingURL=emitBundle.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emitBundle.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/emitBundle.spec.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Emit the per-file `.d.ts` tree for a package — the
3
- * single declaration mode every package uses. Rides on
4
- * the project's own `tsc` in declaration-only mode (no
5
- * new dependency); a single rolled-up `index.d.ts` was
6
- * a vite-plugin-dts stylistic choice, not a correctness
7
- * requirement, so it is dropped (breaking-changes-OK)
8
- * to keep the bundler at zero new dependencies. Throws
9
- * on a tsc failure.
10
- *
11
- * `emitDeclarationOnly` guarantees no `.js`/`.js.map`
12
- * leaks into `dist` (the reproduction trap). The
13
- * synthesized config reuses the package's
14
- * `tsconfig.build.json` when present, else
15
- * `tsconfig.json`, and adds the two things the
16
- * declaration build needs but the package config must
17
- * not carry permanently:
18
- * - `emitDeclarationOnly` (the package config drives
19
- * `tsc --noEmit` type-checking),
20
- * - exclusion of `*.spec.ts` and `dist`. Spec files are
21
- * not published API and, in a clean build, would pull
22
- * the package's own not-yet-built dist types through
23
- * plgg-test; excluding them also avoids the TS5055
24
- * "overwrite input" collision with a prior `dist`.
25
- */
26
- export declare const emitDts: (args: {
27
- root: string;
28
- rootDir: string;
29
- outDir: string;
30
- aliasPrefix: string;
31
- }) => void;
32
- //# sourceMappingURL=emitDts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emitDts.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/emitDts.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,KAAG,IA8CH,CAAC"}