@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.
- package/.turbo/turbo-build$colon$cjs.log +8 -7
- package/.turbo/turbo-build$colon$tsc.log +4 -4
- package/.turbo/turbo-build.log +9 -8
- package/CHANGELOG.md +20 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/vite/index.cjs +2 -0
- package/dist/cjs/vite/vite-plugin-modify-exports-files.cjs +43 -0
- package/dist/cjs/vite/vite.frontend.config.cjs +6 -1
- package/dist/cjs/vite/vite.test.config.cjs +3 -1
- package/dist/dependencies.test.d.ts +2 -0
- package/dist/dependencies.test.d.ts.map +1 -0
- package/dist/dependencies.test.js +160 -0
- package/dist/dependencies.test.js.map +1 -0
- package/dist/getDependencies.test.d.ts +2 -0
- package/dist/getDependencies.test.d.ts.map +1 -0
- package/dist/getDependencies.test.js +258 -0
- package/dist/getDependencies.test.js.map +1 -0
- package/dist/index.js +2 -1
- package/dist/vite/bundleConfigs.test.d.ts +2 -0
- package/dist/vite/bundleConfigs.test.d.ts.map +1 -0
- package/dist/vite/bundleConfigs.test.js +252 -0
- package/dist/vite/bundleConfigs.test.js.map +1 -0
- package/dist/vite/configs.test.d.ts +2 -0
- package/dist/vite/configs.test.d.ts.map +1 -0
- package/dist/vite/configs.test.js +163 -0
- package/dist/vite/configs.test.js.map +1 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +2 -1
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/modifyExportsFiles.test.d.ts +2 -0
- package/dist/vite/modifyExportsFiles.test.d.ts.map +1 -0
- package/dist/vite/modifyExportsFiles.test.js +28 -0
- package/dist/vite/modifyExportsFiles.test.js.map +1 -0
- package/dist/vite/plugins.test.d.ts +2 -0
- package/dist/vite/plugins.test.d.ts.map +1 -0
- package/dist/vite/plugins.test.js +232 -0
- package/dist/vite/plugins.test.js.map +1 -0
- package/dist/vite/translations.test.d.ts +2 -0
- package/dist/vite/translations.test.d.ts.map +1 -0
- package/dist/vite/translations.test.js +96 -0
- package/dist/vite/translations.test.js.map +1 -0
- package/dist/vite/vite-plugin-modify-exports-files.d.ts +4 -0
- package/dist/vite/vite-plugin-modify-exports-files.d.ts.map +1 -0
- package/dist/vite/vite-plugin-modify-exports-files.js +42 -0
- package/dist/vite/vite-plugin-modify-exports-files.js.map +1 -0
- package/dist/vite/vite.frontend.config.d.ts.map +1 -1
- package/dist/vite/vite.frontend.config.js +6 -1
- package/dist/vite/vite.frontend.config.js.map +1 -1
- package/dist/vite/vite.test.config.d.ts.map +1 -1
- package/dist/vite/vite.test.config.js +3 -1
- package/dist/vite/vite.test.config.js.map +1 -1
- package/package.json +3 -2
- package/src/dependencies.test.ts +249 -0
- package/src/getDependencies.test.ts +385 -0
- package/src/vite/bundleConfigs.test.ts +405 -0
- package/src/vite/configs.test.ts +217 -0
- package/src/vite/index.ts +1 -0
- package/src/vite/modifyExportsFiles.test.ts +56 -0
- package/src/vite/plugins.test.ts +348 -0
- package/src/vite/translations.test.ts +164 -0
- package/src/vite/vite-plugin-modify-exports-files.ts +64 -0
- package/src/vite/vite.frontend.config.ts +13 -0
- package/src/vite/vite.test.config.ts +5 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vite.test.config.ts +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-modify-exports-files.d.ts","sourceRoot":"","sources":["../../src/vite/vite-plugin-modify-exports-files.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAkBnC,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,MAkBhD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,wBAAwB,IAAI,MAAM,CAYzD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/vite/vite-plugin-modify-exports-files.ts
|
|
2
|
+
/**
|
|
3
|
+
* Empties the generated `exports2.FILES` array in every emitted chunk so that
|
|
4
|
+
* bundled file listings are not leaked into the output.
|
|
5
|
+
*/
|
|
6
|
+
var ASSIGNMENT = "exports2.FILES = [";
|
|
7
|
+
var TERMINATOR = "];";
|
|
8
|
+
var REPLACEMENT = "exports2.FILES = [];\n";
|
|
9
|
+
/**
|
|
10
|
+
* Blank every `exports2.FILES = [...]` assignment in a chunk.
|
|
11
|
+
*
|
|
12
|
+
* Done with indexOf rather than a regex: `\[[\s\S]*?\];` backtracks
|
|
13
|
+
* quadratically on a chunk holding many unterminated assignments, and chunk
|
|
14
|
+
* contents are whatever the bundled sources happened to contain. Scanning
|
|
15
|
+
* forward is linear regardless.
|
|
16
|
+
*/
|
|
17
|
+
var emptyExportsFiles = (code) => {
|
|
18
|
+
let out = "";
|
|
19
|
+
let cursor = 0;
|
|
20
|
+
for (;;) {
|
|
21
|
+
const start = code.indexOf(ASSIGNMENT, cursor);
|
|
22
|
+
if (start === -1) break;
|
|
23
|
+
const end = code.indexOf(TERMINATOR, start + 18);
|
|
24
|
+
if (end === -1) break;
|
|
25
|
+
out += code.slice(cursor, start) + REPLACEMENT;
|
|
26
|
+
cursor = end + 2;
|
|
27
|
+
}
|
|
28
|
+
return out + code.slice(cursor);
|
|
29
|
+
};
|
|
30
|
+
function modifyExportsFilesPlugin() {
|
|
31
|
+
return {
|
|
32
|
+
name: "modify-exports-files",
|
|
33
|
+
generateBundle(_options, bundle) {
|
|
34
|
+
for (const fileName in bundle) {
|
|
35
|
+
const chunk = bundle[fileName];
|
|
36
|
+
if (chunk && chunk.type === "chunk") chunk.code = emptyExportsFiles(chunk.code);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { modifyExportsFilesPlugin as default, emptyExportsFiles };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-modify-exports-files.js","sourceRoot":"","sources":["../../src/vite/vite-plugin-modify-exports-files.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACxC,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAU7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE;IACzD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,SAAS,CAAC;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM;QACP,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YAGhB,MAAM;QACP,CAAC;QACD,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC/C,OAAO;QACN,IAAI,EAAE,sBAAsB;QAC5B,cAAc,CAAC,QAAQ,EAAE,MAAM;YAC9B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrC,KAAK,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.frontend.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.frontend.config.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,yBACC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,kBAAkB,EAChC,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,aAAa,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"vite.frontend.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.frontend.config.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,yBACC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,kBAAkB,EAChC,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,aAAa,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,UAAU,CAAC,CAoQrB"}
|
|
@@ -121,7 +121,12 @@ async function vite_frontend_config_default(packageName, bundleName, dir, entry,
|
|
|
121
121
|
watch: false,
|
|
122
122
|
output: {
|
|
123
123
|
dir: path.resolve(dir, "dist/bundle"),
|
|
124
|
-
entryFileNames: `${bundleName}.bundle.js
|
|
124
|
+
entryFileNames: `${bundleName}.bundle.js`,
|
|
125
|
+
...isProduction ? { minify: {
|
|
126
|
+
compress: true,
|
|
127
|
+
mangle: true,
|
|
128
|
+
codegen: true
|
|
129
|
+
} } : {}
|
|
125
130
|
},
|
|
126
131
|
plugins: [
|
|
127
132
|
css(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.frontend.config.js","sourceRoot":"","sources":["../../src/vite/vite.frontend.config.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,uCAAuC,MAAM,kDAAkD,CAAC;AAEvG,MAAM,CAAC,OAAO,CAAC,KAAK,WACnB,WAAmB,EACnB,UAAkB,EAClB,GAAW,EACX,KAAa,EACb,OAAgB,EAChB,IAAa,EACb,WAAgC,EAChC,aAAwB,EACxB,aAAsB;IAGtB,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC3B,IAAI,GAAG,aAAa,CAAC;IACtB,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,kBAAkB,GACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;QACtB,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,KAAK,YAAY,CAAC;IAI3C,MAAM,eAAe,GACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IAInE,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAGlD,MAAM,MAAM,GAAG;QAEd,+BAA+B,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvD,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC1D,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5D,yCAAyC,EACxC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACnC,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAC/C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAC9B;QACD,oCAAoC,EAAE,IAAI,CAAC,SAAS,CACnD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAClC;QACD,sCAAsC,EAAE,IAAI,CAAC,SAAS,CACrD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CACpC;QACD,qCAAqC,EAAE,IAAI,CAAC,SAAS,CACpD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CACnC;QACD,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAC5B;QACD,+BAA+B,EAAE,IAAI,CAAC,SAAS,CAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAC7B;QAED,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAC5B;KACD,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAG7D,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE,GACrD,MAAM,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAGlD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE;QACvD,KAAK;QACL,eAAe;QACf,KAAK;QACL,SAAS;QACT,MAAM;QACN,oBAAoB;KACpB,CAAC,CAAC;IAGH,MAAM,WAAW,GAAG;QACnB,GAAG,cAAc;QACjB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,GAAG,QAAQ;QACX,GAAG,wBAAwB;KAC3B,CAAC;IACF,OAAO,CAAC,KAAK,CACZ,aAAa,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,MAAM,OAAO,CACxF,CAAC;IAIF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAgB,CAAC;IACtC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;IAGzC,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,YAAY,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,cAAc,GAAmB,WAAW,CAAC;IAEnD,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC;IAC5C,OAAO;QACN,MAAM,EAAE;YACP,IAAI,EAAE,WAAW;SACjB;QACD,IAAI,EAAE,IAAI,IAAI,aAAa;QAC3B,YAAY,EAAE;YACb,OAAO,EAAE,CAAC,cAAc,CAAC;YACzB,KAAK,EAAE,IAAI;SACX;QACD,MAAM,EAAE;YACP,MAAM,EAAE,IAAI;SACZ;QACD,OAAO,EAAE;YACR,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE;gBACP,QAAQ;gBACR,UAAU;gBACV,QAAQ;gBACR,WAAW;gBACX,QAAQ;gBACR,UAAU;aACV;YACD,IAAI;YACJ,IAAI;YACJ,aAAa,EAAE,MAAM;YACrB,GAAG,EAAE,WAAW;YAChB,eAAe,EAAE,gBAAgB;YACjC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;SAC9C;QACD,MAAM;QAEN,KAAK,EAAE;YACN,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;YACxC,MAAM,EAAE,YAAY;YACpB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC/B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,GAAG,UAAU,YAAY;gBACnC,OAAO,EAAE,CAAC,IAAI,CAAC;aACf;YACD,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjC,eAAe,EAAE;gBAChB,OAAO,EAAE,CAAC,WAAW,CAAC;gBACtB,uBAAuB,EAAE,IAAI;gBAC7B,cAAc,EAAE,OAAO;aACvB;YAED,aAAa,EAAE;gBACd,SAAS,EAAE;oBAKV,WAAW,EAAE,IAAI;oBACjB,uBAAuB,EAAE,KAAK;oBAM9B,iBAAiB,EAAE,aAAa;oBAChC,wBAAwB,EAAE,KAAK;iBAC/B;gBACD,QAAQ,EAAE,cAAc;gBACxB,KAAK,EAAE,KAAK;gBAEZ,MAAM,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;oBACrC,cAAc,EAAE,GAAG,UAAU,YAAY;
|
|
1
|
+
{"version":3,"file":"vite.frontend.config.js","sourceRoot":"","sources":["../../src/vite/vite.frontend.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.test.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.test.config.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"vite.test.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.test.config.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC,EAAE,MAAM,6BAmG7C"}
|
|
@@ -25,7 +25,9 @@ function vite_test_config_default(tsConfigPath) {
|
|
|
25
25
|
"src/**/*.test.ts",
|
|
26
26
|
"src/**/*.spec.ts",
|
|
27
27
|
"src/**/*.test.tsx",
|
|
28
|
-
"src/**/*.spec.tsx"
|
|
28
|
+
"src/**/*.spec.tsx",
|
|
29
|
+
"src/**/*.test-d.ts",
|
|
30
|
+
"src/**/*.test-d.tsx"
|
|
29
31
|
] : [
|
|
30
32
|
"**/tests/**/*",
|
|
31
33
|
"**/*.d.ts",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.test.config.js","sourceRoot":"","sources":["../../src/vite/vite.test.config.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AACrE,OAAO,0BAA0B,MAAM,oCAAoC,CAAC;AAE5E,MAAM,CAAC,OAAO,WAAW,YAAqB;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAGnE,MAAM,YAAY,GACjB,SAAS,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QACjD,CAAC,CAAC,MAAM,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IAUxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,oBAAoB,GACzB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAItC,MAAM,eAAe,GAAG,oBAAoB;QAC3C,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC;QAChE,CAAC,CAAC,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,oBAAoB;QAC3C,CAAC,CAAC;YACA,gBAAgB;YAChB,eAAe;YACf,kBAAkB;YAClB,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"vite.test.config.js","sourceRoot":"","sources":["../../src/vite/vite.test.config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/config",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.8",
|
|
4
4
|
"description": "Prosopo config library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"build:tsc": "tsc --build --verbose",
|
|
10
10
|
"build:cjs": "NODE_ENV=${NODE_ENV:-production}; vite build --config vite.cjs.config.ts --mode $NODE_ENV",
|
|
11
11
|
"clean": "del-cli --verbose dist tsconfig.tsbuildinfo",
|
|
12
|
-
"typecheck": "tsc --project tsconfig.types.json"
|
|
12
|
+
"typecheck": "tsc --project tsconfig.types.json",
|
|
13
|
+
"test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts --mode $NODE_ENV"
|
|
13
14
|
},
|
|
14
15
|
"engines": {
|
|
15
16
|
"node": "^24",
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// Copyright 2021-2026 Prosopo (UK) Ltd.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
import fs from "node:fs";
|
|
16
|
+
import os from "node:os";
|
|
17
|
+
import path from "node:path";
|
|
18
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
19
|
+
import {
|
|
20
|
+
filterDependencies,
|
|
21
|
+
getExternalsFromReferences,
|
|
22
|
+
getTsConfigs,
|
|
23
|
+
} from "./dependencies.js";
|
|
24
|
+
|
|
25
|
+
let root: string;
|
|
26
|
+
|
|
27
|
+
/** Write a tsconfig, and optionally a sibling package.json, under `root`. */
|
|
28
|
+
const writeProject = (
|
|
29
|
+
dir: string,
|
|
30
|
+
references: string[],
|
|
31
|
+
packageName?: string,
|
|
32
|
+
): string => {
|
|
33
|
+
const absolute = path.join(root, dir);
|
|
34
|
+
fs.mkdirSync(absolute, { recursive: true });
|
|
35
|
+
const tsConfigPath = path.join(absolute, "tsconfig.json");
|
|
36
|
+
fs.writeFileSync(
|
|
37
|
+
tsConfigPath,
|
|
38
|
+
JSON.stringify({ references: references.map((p) => ({ path: p })) }),
|
|
39
|
+
);
|
|
40
|
+
if (packageName) {
|
|
41
|
+
fs.writeFileSync(
|
|
42
|
+
path.join(absolute, "package.json"),
|
|
43
|
+
JSON.stringify({ name: packageName }),
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
return tsConfigPath;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
root = fs.mkdtempSync(path.join(os.tmpdir(), "prosopo-config-test-"));
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
afterEach(() => {
|
|
54
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe("getTsConfigs", () => {
|
|
58
|
+
it("returns just the starting config when it has no references", () => {
|
|
59
|
+
const entry = writeProject("a", []);
|
|
60
|
+
expect(getTsConfigs(entry)).toEqual([entry]);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("returns nothing when the starting config is excluded and has no references", () => {
|
|
64
|
+
const entry = writeProject("a", []);
|
|
65
|
+
expect(getTsConfigs(entry, [], [], false)).toEqual([]);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("walks references transitively", () => {
|
|
69
|
+
const c = writeProject("c", []);
|
|
70
|
+
const b = writeProject("b", ["../c"]);
|
|
71
|
+
const a = writeProject("a", ["../b"]);
|
|
72
|
+
|
|
73
|
+
expect(getTsConfigs(a, [/nothing-matches/], []).sort()).toEqual(
|
|
74
|
+
[a, b, c].sort(),
|
|
75
|
+
);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("skips references matching an ignore pattern, and everything under them", () => {
|
|
79
|
+
writeProject("keep", []);
|
|
80
|
+
writeProject("skip", []);
|
|
81
|
+
const a = writeProject("a", ["../keep/", "../skip/"]);
|
|
82
|
+
|
|
83
|
+
expect(getTsConfigs(a, [/skip/], [])).toEqual([
|
|
84
|
+
a,
|
|
85
|
+
path.join(root, "keep", "tsconfig.json"),
|
|
86
|
+
]);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it("builds the ignore expression from the stringified patterns, delimiters included", () => {
|
|
90
|
+
// `ignorePatterns.join("|")` calls `toString()` on each RegExp, so the
|
|
91
|
+
// enclosing slashes end up in the pattern. `/skip/` therefore matches
|
|
92
|
+
// the *path segment* "/skip/" rather than the bare word, which is why
|
|
93
|
+
// callers pass directory-shaped patterns.
|
|
94
|
+
writeProject("skip", []);
|
|
95
|
+
const a = writeProject("a", ["../skip"]);
|
|
96
|
+
|
|
97
|
+
// No trailing slash on the reference, so "/skip/" does not match and
|
|
98
|
+
// the reference is followed after all.
|
|
99
|
+
expect(getTsConfigs(a, [/skip/], [])).toHaveLength(2);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it("drops every reference when no ignore pattern is given", () => {
|
|
103
|
+
writeProject("b", []);
|
|
104
|
+
const a = writeProject("a", ["../b"]);
|
|
105
|
+
expect(getTsConfigs(a)).toEqual([a]);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it("appends tsconfig.json to a reference that names a directory", () => {
|
|
109
|
+
writeProject("b", []);
|
|
110
|
+
const a = writeProject("a", ["../b"]);
|
|
111
|
+
expect(getTsConfigs(a, [/\.\./], [])).toContain(
|
|
112
|
+
path.join(root, "b", "tsconfig.json"),
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("honours a reference that names a config file explicitly", () => {
|
|
117
|
+
fs.mkdirSync(path.join(root, "b"), { recursive: true });
|
|
118
|
+
const explicit = path.join(root, "b", "tsconfig.build.json");
|
|
119
|
+
fs.writeFileSync(explicit, JSON.stringify({ references: [] }));
|
|
120
|
+
const a = writeProject("a", ["../b/tsconfig.build.json"]);
|
|
121
|
+
|
|
122
|
+
expect(getTsConfigs(a, [/\.\./], [])).toContain(explicit);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("does not loop forever on a reference cycle", () => {
|
|
126
|
+
// A cycle in the project graph would otherwise recurse until the stack
|
|
127
|
+
// blew, which is a build hang rather than a readable error.
|
|
128
|
+
const a = path.join(root, "a", "tsconfig.json");
|
|
129
|
+
const b = path.join(root, "b", "tsconfig.json");
|
|
130
|
+
writeProject("a", ["../b"]);
|
|
131
|
+
writeProject("b", ["../a"]);
|
|
132
|
+
|
|
133
|
+
expect(getTsConfigs(a, [/\.\./], []).sort()).toEqual([a, b].sort());
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it("visits a diamond dependency only once", () => {
|
|
137
|
+
writeProject("d", []);
|
|
138
|
+
writeProject("b", ["../d"]);
|
|
139
|
+
writeProject("c", ["../d"]);
|
|
140
|
+
const a = writeProject("a", ["../b", "../c"]);
|
|
141
|
+
|
|
142
|
+
const result = getTsConfigs(a, [/\.\./], []);
|
|
143
|
+
expect(new Set(result).size).toBe(result.length);
|
|
144
|
+
expect(result).toHaveLength(4);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it("keeps configs that were already accumulated", () => {
|
|
148
|
+
const existing = "/already/seen/tsconfig.json";
|
|
149
|
+
const a = writeProject("a", []);
|
|
150
|
+
expect(getTsConfigs(a, [], [existing])).toEqual([existing, a]);
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it("returns the accumulator untouched when the config was already seen", () => {
|
|
154
|
+
const a = writeProject("a", []);
|
|
155
|
+
expect(getTsConfigs(a, [], [a])).toEqual([a]);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
it("throws for a config path that does not exist", () => {
|
|
159
|
+
expect(() => getTsConfigs(path.join(root, "missing.json"))).toThrow();
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it("throws for a config that is not valid JSON", () => {
|
|
163
|
+
const broken = path.join(root, "broken.json");
|
|
164
|
+
fs.writeFileSync(broken, "{ not json");
|
|
165
|
+
expect(() => getTsConfigs(broken)).toThrow();
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
describe("getExternalsFromReferences", () => {
|
|
170
|
+
it("returns the package name of every referenced project", async () => {
|
|
171
|
+
writeProject("b", [], "@prosopo/b");
|
|
172
|
+
writeProject("c", [], "@prosopo/c");
|
|
173
|
+
const a = writeProject("a", ["../b", "../c"], "@prosopo/a");
|
|
174
|
+
|
|
175
|
+
// The starting project is excluded, so a package never externalises
|
|
176
|
+
// itself.
|
|
177
|
+
await expect(getExternalsFromReferences(a, [/\.\./])).resolves.toEqual([
|
|
178
|
+
"@prosopo/b",
|
|
179
|
+
"@prosopo/c",
|
|
180
|
+
]);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
it("returns nothing when there are no followed references", async () => {
|
|
184
|
+
const a = writeProject("a", [], "@prosopo/a");
|
|
185
|
+
await expect(getExternalsFromReferences(a)).resolves.toEqual([]);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it("rejects when a referenced project has no package.json", async () => {
|
|
189
|
+
writeProject("b", []);
|
|
190
|
+
const a = writeProject("a", ["../b"], "@prosopo/a");
|
|
191
|
+
await expect(getExternalsFromReferences(a, [/\.\./])).rejects.toBeDefined();
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
describe("filterDependencies", () => {
|
|
196
|
+
it("splits on the filter patterns, sorted", () => {
|
|
197
|
+
expect(
|
|
198
|
+
filterDependencies(["zod", "@prosopo/util", "axios"], ["@prosopo"]),
|
|
199
|
+
).toEqual({
|
|
200
|
+
internal: ["axios", "zod"],
|
|
201
|
+
external: ["@prosopo/util"],
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("treats the filters as alternatives in a single expression", () => {
|
|
206
|
+
expect(
|
|
207
|
+
filterDependencies(["a-one", "b-two", "c-three"], ["one", "two"]),
|
|
208
|
+
).toEqual({ internal: ["c-three"], external: ["a-one", "b-two"] });
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
it("deduplicates before splitting", () => {
|
|
212
|
+
expect(
|
|
213
|
+
filterDependencies(["zod", "zod", "zod"], ["nope"]).internal,
|
|
214
|
+
).toEqual(["zod"]);
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it("drops empty strings", () => {
|
|
218
|
+
// `npm ls` output can yield blank captures; an empty external pattern
|
|
219
|
+
// would otherwise match everything downstream.
|
|
220
|
+
expect(filterDependencies(["", "zod", ""], ["nope"])).toEqual({
|
|
221
|
+
internal: ["zod"],
|
|
222
|
+
external: [],
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it("returns two empty lists for no dependencies", () => {
|
|
227
|
+
expect(filterDependencies([], ["@prosopo"])).toEqual({
|
|
228
|
+
internal: [],
|
|
229
|
+
external: [],
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
it("puts everything in external when a filter matches all", () => {
|
|
234
|
+
expect(filterDependencies(["a", "b"], [""]).external).toEqual(["a", "b"]);
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
it("puts everything in internal when no filter is supplied", () => {
|
|
238
|
+
// An empty filter list joins to an empty pattern, which matches
|
|
239
|
+
// everything — so this is the same all-external case, documented so
|
|
240
|
+
// the surprise is not discovered during a build.
|
|
241
|
+
expect(filterDependencies(["a", "b"], []).external).toEqual(["a", "b"]);
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
it("does not mutate the input", () => {
|
|
245
|
+
const deps = ["zod", "axios"];
|
|
246
|
+
filterDependencies(deps, ["zod"]);
|
|
247
|
+
expect(deps).toEqual(["zod", "axios"]);
|
|
248
|
+
});
|
|
249
|
+
});
|