@prosopo/config 3.3.6 → 3.3.8

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 (66) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +8 -7
  2. package/.turbo/turbo-build$colon$tsc.log +4 -4
  3. package/.turbo/turbo-build.log +9 -8
  4. package/CHANGELOG.md +20 -0
  5. package/dist/cjs/index.cjs +2 -0
  6. package/dist/cjs/vite/index.cjs +2 -0
  7. package/dist/cjs/vite/vite-plugin-modify-exports-files.cjs +43 -0
  8. package/dist/cjs/vite/vite.frontend.config.cjs +6 -1
  9. package/dist/cjs/vite/vite.test.config.cjs +3 -1
  10. package/dist/dependencies.test.d.ts +2 -0
  11. package/dist/dependencies.test.d.ts.map +1 -0
  12. package/dist/dependencies.test.js +160 -0
  13. package/dist/dependencies.test.js.map +1 -0
  14. package/dist/getDependencies.test.d.ts +2 -0
  15. package/dist/getDependencies.test.d.ts.map +1 -0
  16. package/dist/getDependencies.test.js +258 -0
  17. package/dist/getDependencies.test.js.map +1 -0
  18. package/dist/index.js +2 -1
  19. package/dist/vite/bundleConfigs.test.d.ts +2 -0
  20. package/dist/vite/bundleConfigs.test.d.ts.map +1 -0
  21. package/dist/vite/bundleConfigs.test.js +252 -0
  22. package/dist/vite/bundleConfigs.test.js.map +1 -0
  23. package/dist/vite/configs.test.d.ts +2 -0
  24. package/dist/vite/configs.test.d.ts.map +1 -0
  25. package/dist/vite/configs.test.js +163 -0
  26. package/dist/vite/configs.test.js.map +1 -0
  27. package/dist/vite/index.d.ts +1 -0
  28. package/dist/vite/index.d.ts.map +1 -1
  29. package/dist/vite/index.js +2 -1
  30. package/dist/vite/index.js.map +1 -1
  31. package/dist/vite/modifyExportsFiles.test.d.ts +2 -0
  32. package/dist/vite/modifyExportsFiles.test.d.ts.map +1 -0
  33. package/dist/vite/modifyExportsFiles.test.js +28 -0
  34. package/dist/vite/modifyExportsFiles.test.js.map +1 -0
  35. package/dist/vite/plugins.test.d.ts +2 -0
  36. package/dist/vite/plugins.test.d.ts.map +1 -0
  37. package/dist/vite/plugins.test.js +232 -0
  38. package/dist/vite/plugins.test.js.map +1 -0
  39. package/dist/vite/translations.test.d.ts +2 -0
  40. package/dist/vite/translations.test.d.ts.map +1 -0
  41. package/dist/vite/translations.test.js +96 -0
  42. package/dist/vite/translations.test.js.map +1 -0
  43. package/dist/vite/vite-plugin-modify-exports-files.d.ts +4 -0
  44. package/dist/vite/vite-plugin-modify-exports-files.d.ts.map +1 -0
  45. package/dist/vite/vite-plugin-modify-exports-files.js +42 -0
  46. package/dist/vite/vite-plugin-modify-exports-files.js.map +1 -0
  47. package/dist/vite/vite.frontend.config.d.ts.map +1 -1
  48. package/dist/vite/vite.frontend.config.js +6 -1
  49. package/dist/vite/vite.frontend.config.js.map +1 -1
  50. package/dist/vite/vite.test.config.d.ts.map +1 -1
  51. package/dist/vite/vite.test.config.js +3 -1
  52. package/dist/vite/vite.test.config.js.map +1 -1
  53. package/package.json +3 -2
  54. package/src/dependencies.test.ts +249 -0
  55. package/src/getDependencies.test.ts +385 -0
  56. package/src/vite/bundleConfigs.test.ts +405 -0
  57. package/src/vite/configs.test.ts +217 -0
  58. package/src/vite/index.ts +1 -0
  59. package/src/vite/modifyExportsFiles.test.ts +56 -0
  60. package/src/vite/plugins.test.ts +348 -0
  61. package/src/vite/translations.test.ts +164 -0
  62. package/src/vite/vite-plugin-modify-exports-files.ts +64 -0
  63. package/src/vite/vite.frontend.config.ts +13 -0
  64. package/src/vite/vite.test.config.ts +5 -0
  65. package/tsconfig.tsbuildinfo +1 -1
  66. package/vite.test.config.ts +37 -0
@@ -0,0 +1,258 @@
1
+ import path from "node:path";
2
+ import { promisify } from "node:util";
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+ let commands = [];
5
+ let responses = [];
6
+ const fakeExec = (command, callback) => {
7
+ commands.push(command);
8
+ const next = responses.shift();
9
+ if (next === undefined) {
10
+ throw new Error(`unexpected exec: ${command}`);
11
+ }
12
+ if (next instanceof Error) {
13
+ callback(next, "", "");
14
+ return;
15
+ }
16
+ callback(null, next.stdout, next.stderr);
17
+ };
18
+ Object.defineProperty(fakeExec, promisify.custom, {
19
+ value: (command) => new Promise((resolve, reject) => {
20
+ fakeExec(command, (error, stdout, stderr) => {
21
+ if (error) {
22
+ reject(error);
23
+ }
24
+ else {
25
+ resolve({ stdout, stderr });
26
+ }
27
+ });
28
+ }),
29
+ });
30
+ vi.mock("node:child_process", () => ({ default: { exec: fakeExec } }));
31
+ const { getDependencies } = await import("./dependencies.js");
32
+ beforeEach(() => {
33
+ commands = [];
34
+ responses = [];
35
+ });
36
+ afterEach(() => {
37
+ expect(responses).toEqual([]);
38
+ });
39
+ const ok = (stdout, stderr = "") => ({ stdout, stderr });
40
+ const failing = (stdout, stderr = "") => {
41
+ const error = Object.assign(new Error("npm ls exited 1"), { stdout, stderr });
42
+ return error;
43
+ };
44
+ const TREE = [
45
+ "@prosopo/root@1.0.0 /repo",
46
+ "├─┬ mongodb@6.3.0",
47
+ "│ └── bson@6.2.0",
48
+ "└── zod@3.22.4",
49
+ ].join("\n");
50
+ describe("getDependencies", () => {
51
+ it("parses every package name out of the npm ls tree", async () => {
52
+ responses = [ok(TREE)];
53
+ const { dependencies } = await getDependencies();
54
+ expect(dependencies).toEqual(["mongodb", "bson", "zod"]);
55
+ });
56
+ it("does not treat the root package line as a dependency", async () => {
57
+ responses = [ok(TREE)];
58
+ const { dependencies } = await getDependencies();
59
+ expect(dependencies).not.toContain("@prosopo/root");
60
+ });
61
+ it("collects unmet optional peers separately", async () => {
62
+ responses = [
63
+ ok([
64
+ "│ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1",
65
+ "│ ├── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2",
66
+ "└── zod@3.22.4",
67
+ ].join("\n")),
68
+ ];
69
+ const { dependencies, optionalPeerDependencies } = await getDependencies();
70
+ expect(optionalPeerDependencies).toEqual(["bufferutil", "utf-8-validate"]);
71
+ expect(dependencies).toEqual(["zod"]);
72
+ });
73
+ it("deduplicates packages that appear all over the tree", async () => {
74
+ responses = [ok(["├── zod@3.22.4", "│ └── zod@3.22.4"].join("\n"))];
75
+ await expect(getDependencies()).resolves.toEqual({
76
+ dependencies: ["zod"],
77
+ optionalPeerDependencies: [],
78
+ });
79
+ });
80
+ it("returns empty lists for an empty tree", async () => {
81
+ responses = [ok("")];
82
+ await expect(getDependencies()).resolves.toEqual({
83
+ dependencies: [],
84
+ optionalPeerDependencies: [],
85
+ });
86
+ });
87
+ it("omits dev dependencies when asked for a production tree", async () => {
88
+ responses = [ok(TREE)];
89
+ await getDependencies(undefined, true);
90
+ expect(commands[0]).toContain("--omit=dev");
91
+ });
92
+ it("keeps dev dependencies otherwise", async () => {
93
+ responses = [ok(TREE)];
94
+ await getDependencies(undefined, false);
95
+ expect(commands[0]).not.toContain("--omit=dev");
96
+ });
97
+ it("resolves the package directory first and runs npm ls inside it", async () => {
98
+ responses = [ok("/repo/packages/server\n"), ok(TREE)];
99
+ await getDependencies("@prosopo/server");
100
+ expect(commands[0]).toBe("npm list @prosopo/server -ap");
101
+ expect(commands[1]).toContain("cd /repo/packages/server &&");
102
+ });
103
+ it("prefixes a bare package name with the scope", async () => {
104
+ responses = [ok("/repo/packages/server\n"), ok(TREE)];
105
+ await getDependencies("server");
106
+ expect(commands[0]).toBe("npm list @prosopo/server -ap");
107
+ });
108
+ it("leaves an already-scoped name alone", async () => {
109
+ responses = [ok("/repo/packages/server\n"), ok(TREE)];
110
+ await getDependencies("@prosopo/server");
111
+ expect(commands[0]).toBe("npm list @prosopo/server -ap");
112
+ });
113
+ it("falls back to the working directory when npm prints no path", async () => {
114
+ responses = [ok(" \n"), ok(TREE)];
115
+ await getDependencies("@prosopo/server");
116
+ expect(commands[1]).toContain(`cd ${process.cwd()} &&`);
117
+ });
118
+ it("rejects when the package cannot be located", async () => {
119
+ responses = [ok("", "npm ERR! code E404")];
120
+ await expect(getDependencies("@prosopo/absent")).rejects.toThrow("CONFIG.INVALID_PACKAGE_DIR");
121
+ });
122
+ it("tolerates npm warnings on stderr that are not errors", async () => {
123
+ responses = [
124
+ ok("/repo/packages/server\n", "npm warn deprecated"),
125
+ ok(TREE),
126
+ ];
127
+ await expect(getDependencies("@prosopo/server")).resolves.toMatchObject({
128
+ dependencies: ["mongodb", "bson", "zod"],
129
+ });
130
+ });
131
+ it("still parses the tree when npm ls exits non-zero", async () => {
132
+ responses = [failing(TREE)];
133
+ const { dependencies } = await getDependencies();
134
+ expect(dependencies).toEqual(["mongodb", "bson", "zod"]);
135
+ });
136
+ it("rethrows when a failing npm ls produced no output at all", async () => {
137
+ const error = new Error("npm not found");
138
+ responses = [error];
139
+ await expect(getDependencies()).rejects.toThrow("npm not found");
140
+ });
141
+ it("reads stderr as well as stdout, since npm splits the tree across both", async () => {
142
+ responses = [ok("├── zod@3.22.4", "\n└── axios@1.6.0")];
143
+ const { dependencies } = await getDependencies();
144
+ expect(dependencies).toEqual(["zod", "axios"]);
145
+ });
146
+ });
147
+ const { default: ViteBackendConfig } = await import("./vite/vite.backend.config.js");
148
+ const npmLsResponses = () => [
149
+ ok("/repo/packages/server\n"),
150
+ ok(TREE),
151
+ ];
152
+ const externalsOf = (config) => {
153
+ const external = config.build?.rollupOptions?.external;
154
+ if (!Array.isArray(external)) {
155
+ throw new Error("expected an array of externals");
156
+ }
157
+ return external.map(String);
158
+ };
159
+ const flattenDeep = (value) => Array.isArray(value) ? value.flatMap(flattenDeep) : [value];
160
+ const pluginNamesOf = (plugins) => flattenDeep(plugins ?? []).map((plugin) => {
161
+ if (plugin && typeof plugin === "object" && "name" in plugin) {
162
+ return String(plugin.name);
163
+ }
164
+ return "";
165
+ });
166
+ describe("ViteBackendConfig", () => {
167
+ const build = (command, mode, outputDir) => {
168
+ responses = npmLsResponses();
169
+ return ViteBackendConfig("@prosopo/server", "1.2.3", "server", "/repo/packages/server", "src/index.ts", command, mode, outputDir);
170
+ };
171
+ it("emits an esm bundle named after the bundle name", async () => {
172
+ const config = await build();
173
+ expect(config.build?.lib).toMatchObject({
174
+ name: "server",
175
+ formats: ["es"],
176
+ fileName: "server.[name].bundle.js",
177
+ });
178
+ expect(config.build?.rollupOptions?.output).toMatchObject({
179
+ entryFileNames: "server.[name].bundle.js",
180
+ });
181
+ });
182
+ it("defaults the output to dist/bundle inside the package", async () => {
183
+ const config = await build();
184
+ expect(config.build?.outDir).toBe(path.resolve("/repo/packages/server", "dist/bundle"));
185
+ });
186
+ it("honours an explicit output directory", async () => {
187
+ const config = await build(undefined, undefined, "/tmp/out");
188
+ expect(config.build?.outDir).toBe(path.resolve("/tmp/out"));
189
+ });
190
+ it("minifies only in production", async () => {
191
+ await expect(build(undefined, "production")).resolves.toMatchObject({
192
+ build: { minify: true },
193
+ });
194
+ await expect(build(undefined, "development")).resolves.toMatchObject({
195
+ build: { minify: false },
196
+ });
197
+ });
198
+ it("bakes the package version into the bundle", async () => {
199
+ const config = await build();
200
+ expect(config.define).toMatchObject({
201
+ "process.env.PROSOPO_PACKAGE_VERSION": '"1.2.3"',
202
+ });
203
+ });
204
+ it("stubs out the optional websocket native helpers", async () => {
205
+ const config = await build();
206
+ expect(config.define).toMatchObject({
207
+ "process.env.WS_NO_BUFFER_UTIL": "true",
208
+ "process.env.WS_NO_UTF_8_VALIDATE": "true",
209
+ });
210
+ });
211
+ it("bundles punycode rather than externalising it", async () => {
212
+ const config = await build();
213
+ expect(externalsOf(config)).not.toContain("punycode");
214
+ expect(externalsOf(config)).toContain("node:punycode");
215
+ });
216
+ it("externalises the remaining node builtins", async () => {
217
+ const list = externalsOf(await build());
218
+ expect(list).toContain("fs");
219
+ expect(list).toContain("node:fs");
220
+ });
221
+ it("resolves the entry against the package directory", async () => {
222
+ const config = await build();
223
+ expect(config.build?.lib).toMatchObject({
224
+ entry: [path.resolve("/repo/packages/server", "src/index.ts")],
225
+ });
226
+ });
227
+ it("resolves a list of entries", async () => {
228
+ responses = npmLsResponses();
229
+ const config = await ViteBackendConfig("@prosopo/server", "1.2.3", "server", "/repo/packages/server", ["src/a.ts", "src/b.ts"]);
230
+ expect(config.build?.lib).toMatchObject({
231
+ entry: [
232
+ path.resolve("/repo/packages/server", "src/a.ts"),
233
+ path.resolve("/repo/packages/server", "src/b.ts"),
234
+ ],
235
+ });
236
+ });
237
+ it("resolves a named entry map", async () => {
238
+ responses = npmLsResponses();
239
+ const config = await ViteBackendConfig("@prosopo/server", "1.2.3", "server", "/repo/packages/server", { cli: "src/cli.ts" });
240
+ expect(config.build?.lib).toMatchObject({
241
+ entry: { cli: path.resolve("/repo/packages/server", "src/cli.ts") },
242
+ });
243
+ });
244
+ it("skips the close plugin while serving, so the dev server stays up", async () => {
245
+ const serving = (await build("serve")).plugins ?? [];
246
+ const building = (await build("build")).plugins ?? [];
247
+ expect(pluginNamesOf(serving)).not.toContain("close-plugin");
248
+ expect(pluginNamesOf(building)).toContain("close-plugin");
249
+ });
250
+ it("keeps module side effects when treeshaking", async () => {
251
+ const config = await build();
252
+ expect(config.build?.rollupOptions?.treeshake).toMatchObject({
253
+ annotations: true,
254
+ moduleSideEffects: true,
255
+ });
256
+ });
257
+ });
258
+ //# sourceMappingURL=getDependencies.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDependencies.test.js","sourceRoot":"","sources":["../src/getDependencies.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,4 +13,5 @@ import vite_commonjs_config_default from "./vite/vite.commonjs.config.js";
13
13
  import vite_esm_config_default from "./vite/vite.esm.config.js";
14
14
  import VitePluginRemoveUnusedTranslations from "./vite/vite-plugin-remove-unused-translations.js";
15
15
  import { tsNoCheckPlugin } from "./vite/TsNoCheckPlugin.js";
16
- export { vite_backend_config_default as ViteBackendConfig, vite_commonjs_config_default as ViteCommonJSConfig, vite_esm_config_default as ViteEsmConfig, vite_frontend_config_default as ViteFrontendConfig, VitePluginCloseAndCopy, VitePluginCopy, VitePluginExternalizeObfuscatorDeadCode, VitePluginFixAbsoluteImports, VitePluginRemoveUnusedTranslations, VitePluginSourcemapExclude as VitePluginSourceMapExclude, vite_test_config_default as ViteTestConfig, vite_threads_test_config_default as ViteThreadsTestConfig, filterDependencies, getDependencies, getExternalsFromReferences, getTsConfigs, tsNoCheckPlugin };
16
+ import modifyExportsFilesPlugin from "./vite/vite-plugin-modify-exports-files.js";
17
+ export { vite_backend_config_default as ViteBackendConfig, vite_commonjs_config_default as ViteCommonJSConfig, vite_esm_config_default as ViteEsmConfig, vite_frontend_config_default as ViteFrontendConfig, VitePluginCloseAndCopy, VitePluginCopy, VitePluginExternalizeObfuscatorDeadCode, VitePluginFixAbsoluteImports, modifyExportsFilesPlugin as VitePluginModifyExportsFiles, VitePluginRemoveUnusedTranslations, VitePluginSourcemapExclude as VitePluginSourceMapExclude, vite_test_config_default as ViteTestConfig, vite_threads_test_config_default as ViteThreadsTestConfig, filterDependencies, getDependencies, getExternalsFromReferences, getTsConfigs, tsNoCheckPlugin };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bundleConfigs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundleConfigs.test.d.ts","sourceRoot":"","sources":["../../src/vite/bundleConfigs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,252 @@
1
+ import fs from "node:fs";
2
+ import { builtinModules } from "node:module";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
6
+ import { nodejsPolarsNativeFilePlugin } from "./NodejsPolarsNativeFilePlugin.js";
7
+ import VitePluginCloseAndCopy from "./vite-plugin-close-and-copy.js";
8
+ import ViteCommonJSConfig from "./vite.commonjs.config.js";
9
+ import ViteEsmConfig from "./vite.esm.config.js";
10
+ let root;
11
+ let cwd;
12
+ beforeEach(() => {
13
+ root = fs.mkdtempSync(path.join(os.tmpdir(), "prosopo-bundle-config-test-"));
14
+ cwd = process.cwd();
15
+ });
16
+ afterEach(() => {
17
+ process.chdir(cwd);
18
+ fs.rmSync(root, { recursive: true, force: true });
19
+ });
20
+ const leafTsConfig = () => {
21
+ const dir = path.join(root, "pkg");
22
+ fs.mkdirSync(dir, { recursive: true });
23
+ fs.writeFileSync(path.join(dir, "package.json"), JSON.stringify({ name: "@prosopo/pkg" }));
24
+ const tsConfigPath = path.join(dir, "tsconfig.json");
25
+ fs.writeFileSync(tsConfigPath, JSON.stringify({ references: [] }));
26
+ return tsConfigPath;
27
+ };
28
+ const flattenDeep = (value) => Array.isArray(value) ? value.flatMap(flattenDeep) : [value];
29
+ const pluginNames = (config) => flattenDeep(config.plugins ?? []).map((plugin) => {
30
+ if (plugin && typeof plugin === "object" && "name" in plugin) {
31
+ return String(plugin.name);
32
+ }
33
+ return "";
34
+ });
35
+ const generateBundle = async (config, bundle) => {
36
+ for (const plugin of flattenDeep(config.plugins ?? [])) {
37
+ if (!plugin ||
38
+ typeof plugin !== "object" ||
39
+ !("generateBundle" in plugin)) {
40
+ continue;
41
+ }
42
+ const hook = plugin.generateBundle;
43
+ if (typeof hook === "function") {
44
+ await callHook(hook, {}, bundle);
45
+ }
46
+ }
47
+ };
48
+ const externals = (config) => {
49
+ const external = config.build?.rollupOptions?.external;
50
+ if (!Array.isArray(external)) {
51
+ throw new Error("expected an array of externals");
52
+ }
53
+ return external.map(String);
54
+ };
55
+ describe("ViteEsmConfig", () => {
56
+ it("emits a single esm library targeting the runtime node version", async () => {
57
+ const config = await ViteEsmConfig("my-lib", leafTsConfig());
58
+ expect(config.build?.lib).toMatchObject({
59
+ name: "my-lib",
60
+ formats: ["es"],
61
+ entry: "src/index.ts",
62
+ });
63
+ expect(config.build?.target).toBe("node24");
64
+ expect(config.build?.outDir).toBe("dist");
65
+ });
66
+ it("accepts an explicit entry, including a multi-entry map", async () => {
67
+ const tsConfigPath = leafTsConfig();
68
+ await expect(ViteEsmConfig("my-lib", tsConfigPath, "src/other.ts")).resolves.toMatchObject({ build: { lib: { entry: "src/other.ts" } } });
69
+ await expect(ViteEsmConfig("my-lib", tsConfigPath, { a: "src/a.ts", b: "src/b.ts" })).resolves.toMatchObject({
70
+ build: { lib: { entry: { a: "src/a.ts", b: "src/b.ts" } } },
71
+ });
72
+ });
73
+ it("externalises every node builtin under both bare and node: specifiers", async () => {
74
+ const list = externals(await ViteEsmConfig("my-lib", leafTsConfig()));
75
+ for (const builtin of builtinModules) {
76
+ expect(list).toContain(builtin);
77
+ expect(list).toContain(`node:${builtin}`);
78
+ }
79
+ });
80
+ it("externalises the webpack toolchain, which vite must not bundle", async () => {
81
+ const list = externals(await ViteEsmConfig("my-lib", leafTsConfig()));
82
+ expect(list).toContain("webpack");
83
+ expect(list).toContain("html-webpack-plugin");
84
+ expect(list).toContain("babel-loader");
85
+ });
86
+ it("uses the same external list for ssr and for rollup", async () => {
87
+ const config = await ViteEsmConfig("my-lib", leafTsConfig());
88
+ expect(config.ssr?.external).toEqual(externals(config));
89
+ });
90
+ it("pulls package names out of the referenced projects", async () => {
91
+ const dep = path.join(root, "dep");
92
+ fs.mkdirSync(dep, { recursive: true });
93
+ fs.writeFileSync(path.join(dep, "package.json"), JSON.stringify({ name: "@prosopo/dep" }));
94
+ fs.writeFileSync(path.join(dep, "tsconfig.json"), JSON.stringify({ references: [] }));
95
+ const tsConfigPath = leafTsConfig();
96
+ fs.writeFileSync(tsConfigPath, JSON.stringify({ references: [{ path: "../dep" }] }));
97
+ expect(externals(await ViteEsmConfig("my-lib", tsConfigPath))).toContain("@prosopo/dep");
98
+ });
99
+ it("disables treeshaking and keeps the output directory intact", async () => {
100
+ const config = await ViteEsmConfig("my-lib", leafTsConfig());
101
+ expect(config.build?.rollupOptions?.treeshake).toBe(false);
102
+ expect(config.build?.emptyOutDir).toBe(false);
103
+ });
104
+ it("suppresses the CJS require polyfill so browsers can load the output", async () => {
105
+ const config = await ViteEsmConfig("my-lib", leafTsConfig());
106
+ const output = config.build?.rollupOptions?.output;
107
+ expect(output).toMatchObject({ polyfillRequire: false });
108
+ });
109
+ it("registers the copy and tsconfig-paths plugins", async () => {
110
+ const names = pluginNames(await ViteEsmConfig("my-lib", leafTsConfig()));
111
+ expect(names).toContain("close-plugin");
112
+ expect(names).toContain("vite-tsconfig-paths");
113
+ });
114
+ it("uses the automatic jsx runtime", async () => {
115
+ const config = await ViteEsmConfig("my-lib", leafTsConfig());
116
+ expect(config.esbuild).toMatchObject({ jsx: "automatic" });
117
+ });
118
+ it("rejects a tsconfig path that does not exist", async () => {
119
+ await expect(ViteEsmConfig("my-lib", path.join(root, "missing.json"))).rejects.toBeDefined();
120
+ });
121
+ });
122
+ describe("ViteCommonJSConfig", () => {
123
+ it("emits cjs into its own subdirectory so it cannot clash with the esm build", async () => {
124
+ const config = await ViteCommonJSConfig("my-lib", leafTsConfig());
125
+ expect(config.build?.lib).toMatchObject({
126
+ name: "my-lib",
127
+ formats: ["cjs"],
128
+ });
129
+ expect(config.build?.outDir).toBe("dist/cjs");
130
+ });
131
+ it("does not externalise the webpack toolchain, unlike the esm config", async () => {
132
+ const tsConfigPath = leafTsConfig();
133
+ expect(externals(await ViteCommonJSConfig("my-lib", tsConfigPath))).not.toContain("html-webpack-plugin");
134
+ expect(externals(await ViteEsmConfig("my-lib", tsConfigPath))).toContain("html-webpack-plugin");
135
+ });
136
+ it("rewrites import.meta.url in every emitted chunk, since cjs has none", async () => {
137
+ const bundle = {
138
+ "a.js": { type: "chunk", code: "const a = import.meta.url;" },
139
+ "b.js": { type: "chunk", code: "const b = import.meta.url + 1;" },
140
+ };
141
+ await generateBundle(await ViteCommonJSConfig("my-lib", leafTsConfig()), bundle);
142
+ expect(bundle["a.js"]?.code).toBe("const a = require('url').pathToFileURL(__filename).href;");
143
+ expect(bundle["b.js"]?.code).toBe("const b = require('url').pathToFileURL(__filename).href + 1;");
144
+ });
145
+ it("leaves assets and empty chunks alone", async () => {
146
+ const bundle = {
147
+ "style.css": { type: "asset" },
148
+ "empty.js": { type: "chunk", code: "" },
149
+ };
150
+ await expect(generateBundle(await ViteCommonJSConfig("my-lib", leafTsConfig()), bundle)).resolves.toBeUndefined();
151
+ expect(bundle["empty.js"]?.code).toBe("");
152
+ });
153
+ it("honours an explicit entry", async () => {
154
+ await expect(ViteCommonJSConfig("my-lib", leafTsConfig(), "src/cli.ts")).resolves.toMatchObject({ build: { lib: { entry: "src/cli.ts" } } });
155
+ });
156
+ });
157
+ describe("nodejsPolarsNativeFilePlugin", () => {
158
+ it("claims a native file by basename, wherever it is imported from", () => {
159
+ const plugin = nodejsPolarsNativeFilePlugin(["/abs/polars.node"], "dist");
160
+ expect(plugin.resolveId("./polars.node", "/src/a.ts", {})).toBe("./polars.node");
161
+ expect(plugin.resolveId("./other.node", "/src/a.ts", {})).toBeNull();
162
+ });
163
+ it("replaces the module with a createRequire shim", () => {
164
+ const plugin = nodejsPolarsNativeFilePlugin(["polars.node"], "dist");
165
+ const transformed = plugin.transform("ignored", "/abs/polars.node");
166
+ expect(transformed).toContain("createRequire");
167
+ expect(transformed).toContain("'./polars.node'");
168
+ expect(transformed).toContain("export default content");
169
+ });
170
+ it("leaves every other module untouched", () => {
171
+ const plugin = nodejsPolarsNativeFilePlugin(["polars.node"], "dist");
172
+ expect(plugin.transform("const a = 1;", "/src/index.ts")).toBe("const a = 1;");
173
+ });
174
+ it("loads a native file as empty so the bundler never parses it as js", () => {
175
+ const plugin = nodejsPolarsNativeFilePlugin(["polars.node"], "dist");
176
+ expect(plugin.load("/abs/polars.node")).toBe("");
177
+ expect(plugin.load("/src/index.ts")).toBeNull();
178
+ });
179
+ it("copies the native files into the output directory verbatim", () => {
180
+ const src = path.join(root, "polars.node");
181
+ const outDir = path.join(root, "nested", "dist");
182
+ const bytes = Buffer.from([0, 1, 2, 255]);
183
+ fs.writeFileSync(src, bytes);
184
+ nodejsPolarsNativeFilePlugin([src], outDir).generateBundle({}, {});
185
+ expect(fs.readFileSync(path.join(outDir, "polars.node"))).toEqual(bytes);
186
+ });
187
+ it("throws when a declared native file is missing", () => {
188
+ const plugin = nodejsPolarsNativeFilePlugin([path.join(root, "absent.node")], path.join(root, "dist"));
189
+ expect(() => plugin.generateBundle({}, {})).toThrow();
190
+ });
191
+ it("does nothing at all when there are no native files", () => {
192
+ const plugin = nodejsPolarsNativeFilePlugin([], "dist");
193
+ expect(plugin.resolveId("anything", undefined, {})).toBeNull();
194
+ expect(plugin.load("anything")).toBeNull();
195
+ expect(() => plugin.generateBundle({}, {})).not.toThrow();
196
+ });
197
+ });
198
+ describe("VitePluginCloseAndCopy", () => {
199
+ it("is a no-op at close time when no copy options are given", () => {
200
+ const plugin = VitePluginCloseAndCopy();
201
+ expect(plugin.name).toBe("close-plugin");
202
+ expect(() => callHook(plugin.closeBundle)).not.toThrow();
203
+ });
204
+ it("clears the js already in the destination, then copies the bundle over", () => {
205
+ process.chdir(root);
206
+ fs.mkdirSync(path.join(root, "src"));
207
+ fs.writeFileSync(path.join(root, "src", "new.js"), "new");
208
+ fs.mkdirSync(path.join(root, "dest"));
209
+ fs.writeFileSync(path.join(root, "dest", "stale.js"), "stale");
210
+ fs.writeFileSync(path.join(root, "dest", "keep.css"), "keep");
211
+ const plugin = VitePluginCloseAndCopy({
212
+ srcDir: "src",
213
+ destDir: ["dest"],
214
+ });
215
+ callHook(plugin.closeBundle);
216
+ expect(fs.readdirSync(path.join(root, "dest")).sort()).toEqual([
217
+ "keep.css",
218
+ "new.js",
219
+ ]);
220
+ });
221
+ it("copies into every destination", () => {
222
+ process.chdir(root);
223
+ fs.mkdirSync(path.join(root, "src"));
224
+ fs.writeFileSync(path.join(root, "src", "a.js"), "a");
225
+ fs.mkdirSync(path.join(root, "one"));
226
+ fs.mkdirSync(path.join(root, "two"));
227
+ callHook(VitePluginCloseAndCopy({ srcDir: "src", destDir: ["one", "two"] })
228
+ .closeBundle);
229
+ expect(fs.existsSync(path.join(root, "one", "a.js"))).toBe(true);
230
+ expect(fs.existsSync(path.join(root, "two", "a.js"))).toBe(true);
231
+ });
232
+ it("throws when a destination does not exist", () => {
233
+ process.chdir(root);
234
+ expect(() => callHook(VitePluginCloseAndCopy({ srcDir: "src", destDir: ["absent"] })
235
+ .closeBundle)).toThrow();
236
+ });
237
+ it("logs the build error it is handed rather than swallowing it", () => {
238
+ const plugin = VitePluginCloseAndCopy();
239
+ expect(() => callHook(plugin.buildEnd, new Error("bundle blew up"))).not.toThrow();
240
+ });
241
+ it("announces the start of the build", () => {
242
+ expect(() => callHook(VitePluginCloseAndCopy().buildStart, {})).not.toThrow();
243
+ });
244
+ });
245
+ const callHook = (hook, ...args) => {
246
+ if (!hook) {
247
+ throw new Error("plugin does not define the hook");
248
+ }
249
+ const handler = typeof hook === "function" ? hook : hook.handler;
250
+ return handler(...args);
251
+ };
252
+ //# sourceMappingURL=bundleConfigs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundleConfigs.test.js","sourceRoot":"","sources":["../../src/vite/bundleConfigs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=configs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configs.test.d.ts","sourceRoot":"","sources":["../../src/vite/configs.test.ts"],"names":[],"mappings":""}