@prosopo/config 3.3.4 → 3.3.6
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 +27 -24
- package/.turbo/turbo-build$colon$tsc.log +4 -4
- package/.turbo/turbo-build.log +28 -24
- package/CHANGELOG.md +32 -0
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/dependencies.cjs +130 -137
- package/dist/cjs/index.cjs +31 -32
- package/dist/cjs/vite/TsNoCheckPlugin.cjs +11 -15
- package/dist/cjs/vite/index.cjs +26 -26
- package/dist/cjs/vite/vite-plugin-close-and-copy.cjs +42 -42
- package/dist/cjs/vite/vite-plugin-copy.cjs +39 -38
- package/dist/cjs/vite/vite-plugin-externalize-obfuscator-deadcode.cjs +25 -0
- package/dist/cjs/vite/vite-plugin-fix-absolute-imports.cjs +16 -24
- package/dist/cjs/vite/vite-plugin-remove-unused-translations.cjs +53 -74
- package/dist/cjs/vite/vite-plugin-sourcemap-exclude.cjs +12 -15
- package/dist/cjs/vite/vite.backend.config.cjs +87 -104
- package/dist/cjs/vite/vite.commonjs.config.cjs +69 -74
- package/dist/cjs/vite/vite.esm.config.cjs +71 -70
- package/dist/cjs/vite/vite.frontend.config.cjs +173 -210
- package/dist/cjs/vite/vite.test.config.cjs +70 -80
- package/dist/cjs/vite/vite.threads.test.config.cjs +67 -78
- package/dist/cjs/webpack/index.cjs +0 -2
- package/dist/cjs/webpack/webpack.config.cjs +108 -146
- package/dist/dependencies.d.ts.map +1 -1
- package/dist/dependencies.js +123 -138
- package/dist/dependencies.js.map +1 -1
- package/dist/index.js +14 -31
- package/dist/vite/TsNoCheckPlugin.js +12 -16
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +13 -25
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/vite-plugin-close-and-copy.js +37 -41
- package/dist/vite/vite-plugin-copy.js +32 -36
- package/dist/vite/vite-plugin-externalize-obfuscator-deadcode.d.ts +3 -0
- package/dist/vite/vite-plugin-externalize-obfuscator-deadcode.d.ts.map +1 -0
- package/dist/vite/vite-plugin-externalize-obfuscator-deadcode.js +25 -0
- package/dist/vite/vite-plugin-externalize-obfuscator-deadcode.js.map +1 -0
- package/dist/vite/vite-plugin-fix-absolute-imports.js +15 -24
- package/dist/vite/vite-plugin-remove-unused-translations.js +50 -76
- package/dist/vite/vite-plugin-sourcemap-exclude.js +12 -16
- package/dist/vite/vite.backend.config.d.ts.map +1 -1
- package/dist/vite/vite.backend.config.js +80 -101
- package/dist/vite/vite.backend.config.js.map +1 -1
- package/dist/vite/vite.commonjs.config.d.ts.map +1 -1
- package/dist/vite/vite.commonjs.config.js +61 -71
- package/dist/vite/vite.commonjs.config.js.map +1 -1
- package/dist/vite/vite.esm.config.d.ts.map +1 -1
- package/dist/vite/vite.esm.config.js +63 -67
- package/dist/vite/vite.esm.config.js.map +1 -1
- package/dist/vite/vite.frontend.config.d.ts.map +1 -1
- package/dist/vite/vite.frontend.config.js +158 -202
- 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 +63 -78
- package/dist/vite/vite.test.config.js.map +1 -1
- package/dist/vite/vite.threads.test.config.d.ts.map +1 -1
- package/dist/vite/vite.threads.test.config.js +61 -76
- package/dist/vite/vite.threads.test.config.js.map +1 -1
- package/dist/webpack/index.js +1 -1
- package/dist/webpack/webpack.config.d.ts +2 -0
- package/dist/webpack/webpack.config.d.ts.map +1 -1
- package/dist/webpack/webpack.config.js +96 -119
- package/dist/webpack/webpack.config.js.map +1 -1
- package/package.json +9 -9
- package/src/dependencies.ts +15 -2
- package/src/vite/index.ts +1 -0
- package/src/vite/vite-plugin-externalize-obfuscator-deadcode.ts +43 -0
- package/src/vite/vite.backend.config.ts +19 -2
- package/src/vite/vite.commonjs.config.ts +2 -0
- package/src/vite/vite.esm.config.ts +12 -0
- package/src/vite/vite.frontend.config.ts +19 -8
- package/src/vite/vite.test.config.ts +15 -10
- package/src/vite/vite.threads.test.config.ts +6 -9
- package/src/webpack/webpack.config.ts +8 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/vite.cjs.config.ts +4 -0
- package/vite.esm.config.ts +9 -1
- package/.turbo/turbo-typecheck.log +0 -4
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/vite/vite-plugin-externalize-obfuscator-deadcode.ts
|
|
2
|
+
var OBFUSCATOR_DEADCODE_SPECIFIERS = /* @__PURE__ */ new Set([
|
|
3
|
+
"../../package",
|
|
4
|
+
"../redacted.js",
|
|
5
|
+
"../utils/isStandaloneExecutable",
|
|
6
|
+
"./resolve-local-redacted-path",
|
|
7
|
+
"@redacted/components/package",
|
|
8
|
+
"@redacted/enterprise-plugin",
|
|
9
|
+
"@redacted/enterprise-plugin/package"
|
|
10
|
+
]);
|
|
11
|
+
function VitePluginExternalizeObfuscatorDeadCode() {
|
|
12
|
+
return {
|
|
13
|
+
name: "externalize-obfuscator-deadcode",
|
|
14
|
+
enforce: "pre",
|
|
15
|
+
resolveId(source) {
|
|
16
|
+
if (OBFUSCATOR_DEADCODE_SPECIFIERS.has(source)) return {
|
|
17
|
+
id: source,
|
|
18
|
+
external: true
|
|
19
|
+
};
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { VitePluginExternalizeObfuscatorDeadCode as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-externalize-obfuscator-deadcode.js","sourceRoot":"","sources":["../../src/vite/vite-plugin-externalize-obfuscator-deadcode.ts"],"names":[],"mappings":"AAqBA,MAAM,8BAA8B,GAAwB,IAAI,GAAG,CAAC;IACnE,eAAe;IACf,gBAAgB;IAChB,iCAAiC;IACjC,+BAA+B;IAC/B,8BAA8B;IAC9B,6BAA6B;IAC7B,qCAAqC;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,UAAU,uCAAuC;IAC9D,OAAO;QACN,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE,KAAK;QACd,SAAS,CAAC,MAAc;YACvB,IAAI,8BAA8B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACvC,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
import { builtinModules } from "node:module";
|
|
2
|
+
//#region src/vite/vite-plugin-fix-absolute-imports.ts
|
|
2
3
|
function VitePluginFixAbsoluteImports() {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
code
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
enforce: "post"
|
|
23
|
-
};
|
|
4
|
+
return {
|
|
5
|
+
name: "fix-absolute-imports",
|
|
6
|
+
transform(code, id) {
|
|
7
|
+
for (const module of builtinModules) {
|
|
8
|
+
const moduleImportRegex = new RegExp(`from "(${module}(/.*)*/.*.js)";`, "g");
|
|
9
|
+
const matches = code.match(moduleImportRegex);
|
|
10
|
+
if (matches) for (const match of matches) code = code.replace(match, `from "${module}";`);
|
|
11
|
+
}
|
|
12
|
+
return { code };
|
|
13
|
+
},
|
|
14
|
+
enforce: "post"
|
|
15
|
+
};
|
|
24
16
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { VitePluginFixAbsoluteImports as default };
|
|
@@ -1,81 +1,55 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
1
|
import fg from "fast-glob";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return flattenedObj;
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
//#region src/vite/vite-plugin-remove-unused-translations.ts
|
|
4
|
+
var used = /* @__PURE__ */ new Set();
|
|
5
|
+
var flatten = (obj, prefix = "") => {
|
|
6
|
+
const flattenedObj = {};
|
|
7
|
+
for (const [key, value] of Object.entries(obj)) if (value instanceof Object) Object.assign(flattenedObj, flatten(value, `${prefix + key}.`));
|
|
8
|
+
else flattenedObj[prefix + key] = value;
|
|
9
|
+
return flattenedObj;
|
|
14
10
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
return acc[k];
|
|
28
|
-
}, result);
|
|
29
|
-
}
|
|
30
|
-
return result;
|
|
11
|
+
var unflatten = (obj) => {
|
|
12
|
+
const result = {};
|
|
13
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
14
|
+
const keys = key.split(".");
|
|
15
|
+
keys.reduce((acc, k, i) => {
|
|
16
|
+
if (i === keys.length - 1) acc[k] = value;
|
|
17
|
+
else if (!acc[k]) acc[k] = Number.isNaN(Number(keys[i + 1])) ? {} : [];
|
|
18
|
+
return acc[k];
|
|
19
|
+
}, result);
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
31
22
|
};
|
|
32
23
|
function VitePluginRemoveUnusedTranslations(translationKeys, jsonPattern) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"utf-8"
|
|
63
|
-
).then(() => {
|
|
64
|
-
console.info(`Updated ${filePath}`);
|
|
65
|
-
}).catch((e) => {
|
|
66
|
-
console.error(`Failed to update ${filePath}:`, e);
|
|
67
|
-
})
|
|
68
|
-
);
|
|
69
|
-
} catch (error) {
|
|
70
|
-
console.error(`Failed to process ${filePath}:`, error);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
await Promise.all(filePromises);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
24
|
+
return {
|
|
25
|
+
name: "remove-unused-translations",
|
|
26
|
+
transform(code) {
|
|
27
|
+
for (const key of translationKeys) if (code.includes(key) && !used.has(key)) {
|
|
28
|
+
console.info(`Found key: ${key}`);
|
|
29
|
+
used.add(key);
|
|
30
|
+
}
|
|
31
|
+
return { code };
|
|
32
|
+
},
|
|
33
|
+
enforce: "post",
|
|
34
|
+
async writeBundle() {
|
|
35
|
+
const jsonFiles = await fg(jsonPattern, { absolute: true });
|
|
36
|
+
console.info(`Found ${jsonFiles.length} JSON files at ${jsonPattern}`);
|
|
37
|
+
const filePromises = [];
|
|
38
|
+
for (const filePath of jsonFiles) try {
|
|
39
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
40
|
+
const jsonDataFlattened = flatten(JSON.parse(content));
|
|
41
|
+
const unflattened = unflatten(Object.fromEntries(Object.entries(jsonDataFlattened).filter(([key]) => used.has(key))));
|
|
42
|
+
filePromises.push(fs.writeFile(filePath, JSON.stringify(unflattened, null, 2), "utf-8").then(() => {
|
|
43
|
+
console.info(`Updated ${filePath}`);
|
|
44
|
+
}).catch((e) => {
|
|
45
|
+
console.error(`Failed to update ${filePath}:`, e);
|
|
46
|
+
}));
|
|
47
|
+
} catch (error) {
|
|
48
|
+
console.error(`Failed to process ${filePath}:`, error);
|
|
49
|
+
}
|
|
50
|
+
await Promise.all(filePromises);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
76
53
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
flatten,
|
|
80
|
-
unflatten
|
|
81
|
-
};
|
|
54
|
+
//#endregion
|
|
55
|
+
export { VitePluginRemoveUnusedTranslations as default, flatten, unflatten };
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
+
//#region src/vite/vite-plugin-sourcemap-exclude.ts
|
|
1
2
|
function VitePluginSourcemapExclude(opts) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
3
|
+
return {
|
|
4
|
+
name: "sourcemap-exclude",
|
|
5
|
+
transform(code, id) {
|
|
6
|
+
if (opts?.excludeNodeModules && id.includes("node_modules")) return {
|
|
7
|
+
code,
|
|
8
|
+
map: { mappings: "" }
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
};
|
|
15
12
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { VitePluginSourcemapExclude as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.backend.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.backend.config.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vite.backend.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.backend.config.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMvC,yBACC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjD,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAkIrB"}
|
|
@@ -1,106 +1,85 @@
|
|
|
1
|
+
import VitePluginCloseAndCopy from "./vite-plugin-close-and-copy.js";
|
|
2
|
+
import VitePluginExternalizeObfuscatorDeadCode from "./vite-plugin-externalize-obfuscator-deadcode.js";
|
|
3
|
+
import { filterDependencies, getDependencies } from "../dependencies.js";
|
|
4
|
+
import VitePluginFixAbsoluteImports from "./vite-plugin-fix-absolute-imports.js";
|
|
1
5
|
import { builtinModules } from "node:module";
|
|
2
6
|
import path from "node:path";
|
|
3
7
|
import { wasm } from "@rollup/plugin-wasm";
|
|
4
8
|
import css from "rollup-plugin-import-css";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
entry: entriesAbsolute,
|
|
80
|
-
name: bundleName,
|
|
81
|
-
fileName: `${bundleName}.[name].bundle.js`,
|
|
82
|
-
formats: ["es"]
|
|
83
|
-
},
|
|
84
|
-
modulePreload: { polyfill: false },
|
|
85
|
-
rollupOptions: {
|
|
86
|
-
treeshake: "smallest",
|
|
87
|
-
external: allExternal,
|
|
88
|
-
watch: false,
|
|
89
|
-
output: {
|
|
90
|
-
entryFileNames: `${bundleName}.[name].bundle.js`
|
|
91
|
-
},
|
|
92
|
-
// biome-ignore lint/suspicious/noExplicitAny: has to be any to represent object prototype
|
|
93
|
-
plugins: [css(), wasm()]
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
plugins: [
|
|
97
|
-
// plugin to replace stuff like import blah from string_encoder/lib/string_encoder.js with import blah from string_encoder
|
|
98
|
-
VitePluginFixAbsoluteImports(),
|
|
99
|
-
// plugin to close the bundle after build if not in serve mode
|
|
100
|
-
command !== "serve" ? VitePluginCloseAndCopy() : void 0
|
|
101
|
-
]
|
|
102
|
-
};
|
|
9
|
+
//#region src/vite/vite.backend.config.ts
|
|
10
|
+
async function vite_backend_config_default(packageName, packageVersion, bundleName, packageDir, entry, command, mode, outputDir) {
|
|
11
|
+
const isProduction = mode === "production";
|
|
12
|
+
const { dependencies: deps, optionalPeerDependencies } = await getDependencies(packageName, true);
|
|
13
|
+
const outDir = outputDir ? path.resolve(outputDir) : path.resolve(packageDir, "dist/bundle");
|
|
14
|
+
const { external, internal } = filterDependencies(deps, [
|
|
15
|
+
"aws",
|
|
16
|
+
"webpack",
|
|
17
|
+
"vite",
|
|
18
|
+
"biome"
|
|
19
|
+
]);
|
|
20
|
+
const allExternal = [
|
|
21
|
+
...builtinModules.filter((m) => m !== "punycode"),
|
|
22
|
+
...builtinModules.map((m) => `node:${m}`),
|
|
23
|
+
...external,
|
|
24
|
+
...optionalPeerDependencies
|
|
25
|
+
];
|
|
26
|
+
console.info(`Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`);
|
|
27
|
+
const define = {
|
|
28
|
+
"process.env.WS_NO_BUFFER_UTIL": "true",
|
|
29
|
+
"process.env.WS_NO_UTF_8_VALIDATE": "true",
|
|
30
|
+
"process.env.PROSOPO_PACKAGE_VERSION": JSON.stringify(packageVersion),
|
|
31
|
+
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || mode),
|
|
32
|
+
...process.env.PROSOPO_DEFAULT_ENVIRONMENT && { "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify(process.env.PROSOPO_DEFAULT_ENVIRONMENT) }
|
|
33
|
+
};
|
|
34
|
+
console.info(`Defined vars ${JSON.stringify(define, null, 2)}`);
|
|
35
|
+
let entriesAbsolute;
|
|
36
|
+
if (typeof entry === "string") entriesAbsolute = [path.resolve(packageDir, entry)];
|
|
37
|
+
else if (Array.isArray(entry)) entriesAbsolute = entry.map((e) => path.resolve(packageDir, e));
|
|
38
|
+
else entriesAbsolute = Object.fromEntries(Object.entries(entry).map(([key, value]) => [key, path.resolve(packageDir, value)]));
|
|
39
|
+
return {
|
|
40
|
+
ssr: {
|
|
41
|
+
noExternal: true,
|
|
42
|
+
external: allExternal
|
|
43
|
+
},
|
|
44
|
+
optimizeDeps: {
|
|
45
|
+
include: ["linked-dep", "node_modules"],
|
|
46
|
+
esbuildOptions: { loader: { ".node": "file" } }
|
|
47
|
+
},
|
|
48
|
+
esbuild: {
|
|
49
|
+
platform: "node",
|
|
50
|
+
target: "node24",
|
|
51
|
+
legalComments: "none"
|
|
52
|
+
},
|
|
53
|
+
define,
|
|
54
|
+
build: {
|
|
55
|
+
outDir,
|
|
56
|
+
minify: isProduction,
|
|
57
|
+
ssr: true,
|
|
58
|
+
target: "node24",
|
|
59
|
+
lib: {
|
|
60
|
+
entry: entriesAbsolute,
|
|
61
|
+
name: bundleName,
|
|
62
|
+
fileName: `${bundleName}.[name].bundle.js`,
|
|
63
|
+
formats: ["es"]
|
|
64
|
+
},
|
|
65
|
+
modulePreload: { polyfill: false },
|
|
66
|
+
rollupOptions: {
|
|
67
|
+
treeshake: {
|
|
68
|
+
annotations: true,
|
|
69
|
+
moduleSideEffects: true
|
|
70
|
+
},
|
|
71
|
+
external: allExternal,
|
|
72
|
+
watch: false,
|
|
73
|
+
output: { entryFileNames: `${bundleName}.[name].bundle.js` },
|
|
74
|
+
plugins: [css(), wasm()]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
plugins: [
|
|
78
|
+
VitePluginExternalizeObfuscatorDeadCode(),
|
|
79
|
+
VitePluginFixAbsoluteImports(),
|
|
80
|
+
command !== "serve" ? VitePluginCloseAndCopy() : void 0
|
|
81
|
+
]
|
|
82
|
+
};
|
|
103
83
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
};
|
|
84
|
+
//#endregion
|
|
85
|
+
export { vite_backend_config_default as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.backend.config.js","sourceRoot":"","sources":["../../src/vite/vite.backend.config.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,4BAA4B,MAAM,uCAAuC,CAAC;AAEjF,MAAM,CAAC,OAAO,CAAC,KAAK,WACnB,WAAmB,EACnB,cAAsB,EACtB,UAAkB,EAClB,UAAkB,EAClB,KAAiD,EACjD,OAAgB,EAChB,IAAa,EACb,SAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,KAAK,YAAY,CAAC;IAG3C,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE,GACrD,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAG1C,MAAM,MAAM,GAAG,SAAS;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACzB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAG3C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE;QACvD,KAAK;QACL,SAAS;QACT,MAAM;QACN,OAAO;KACP,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"vite.backend.config.js","sourceRoot":"","sources":["../../src/vite/vite.backend.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.commonjs.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.commonjs.config.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vite.commonjs.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.commonjs.config.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,MAAM,CAAC;AAQrD,yBACC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChD,OAAO,CAAC,UAAU,CAAC,CAqErB"}
|
|
@@ -1,76 +1,66 @@
|
|
|
1
|
+
import VitePluginCloseAndCopy from "./vite-plugin-close-and-copy.js";
|
|
2
|
+
import VitePluginExternalizeObfuscatorDeadCode from "./vite-plugin-externalize-obfuscator-deadcode.js";
|
|
3
|
+
import { getExternalsFromReferences } from "../dependencies.js";
|
|
4
|
+
import VitePluginCopy from "./vite-plugin-copy.js";
|
|
1
5
|
import { builtinModules } from "node:module";
|
|
2
6
|
import path from "node:path";
|
|
7
|
+
import tsconfigPaths from "vite-tsconfig-paths";
|
|
3
8
|
import { defineConfig } from "vite";
|
|
4
9
|
import noBundlePlugin from "vite-plugin-no-bundle";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// required
|
|
60
|
-
},
|
|
61
|
-
rollupOptions: {
|
|
62
|
-
treeshake: false,
|
|
63
|
-
external: allExternal
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
esbuild: {
|
|
67
|
-
jsx: "automatic",
|
|
68
|
-
// Use standard React JSX for library packages
|
|
69
|
-
// Frontend apps using ViteFrontendConfig will override to Emotion
|
|
70
|
-
jsxDev: process.env.NODE_ENV === "development"
|
|
71
|
-
}
|
|
72
|
-
});
|
|
10
|
+
//#region src/vite/vite.commonjs.config.ts
|
|
11
|
+
async function vite_commonjs_config_default(name, tsConfigPath, entry) {
|
|
12
|
+
console.info(`ViteCommonJSConfig: ${name}`);
|
|
13
|
+
const projectExternal = await getExternalsFromReferences(tsConfigPath, [/dev/]);
|
|
14
|
+
const allExternal = [
|
|
15
|
+
...builtinModules,
|
|
16
|
+
...builtinModules.map((m) => `node:${m}`),
|
|
17
|
+
...projectExternal
|
|
18
|
+
];
|
|
19
|
+
return defineConfig({
|
|
20
|
+
ssr: { external: allExternal },
|
|
21
|
+
plugins: [
|
|
22
|
+
VitePluginExternalizeObfuscatorDeadCode(),
|
|
23
|
+
{
|
|
24
|
+
name: "string-replace-import.meta.url",
|
|
25
|
+
generateBundle(_, bundle) {
|
|
26
|
+
for (const fileName in bundle) {
|
|
27
|
+
const chunk = bundle[fileName];
|
|
28
|
+
if (chunk && chunk.type === "chunk" && "code" in chunk && chunk.code) chunk.code = chunk.code.replace(/import\.meta\.url/g, "require('url').pathToFileURL(__filename).href");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
noBundlePlugin({
|
|
33
|
+
root: "src",
|
|
34
|
+
copy: "**/*.css"
|
|
35
|
+
}),
|
|
36
|
+
VitePluginCopy({
|
|
37
|
+
srcDir: "src",
|
|
38
|
+
destDir: "dist",
|
|
39
|
+
include: ["**/*.json"]
|
|
40
|
+
}),
|
|
41
|
+
tsconfigPaths({ projects: [path.resolve(tsConfigPath)] }),
|
|
42
|
+
VitePluginCloseAndCopy()
|
|
43
|
+
],
|
|
44
|
+
build: {
|
|
45
|
+
emptyOutDir: false,
|
|
46
|
+
ssr: true,
|
|
47
|
+
target: "node24",
|
|
48
|
+
outDir: "dist/cjs",
|
|
49
|
+
lib: {
|
|
50
|
+
name,
|
|
51
|
+
formats: ["cjs"],
|
|
52
|
+
entry: entry || "src/index.ts"
|
|
53
|
+
},
|
|
54
|
+
rollupOptions: {
|
|
55
|
+
treeshake: false,
|
|
56
|
+
external: allExternal
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
esbuild: {
|
|
60
|
+
jsx: "automatic",
|
|
61
|
+
jsxDev: process.env.NODE_ENV === "development"
|
|
62
|
+
}
|
|
63
|
+
});
|
|
73
64
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { vite_commonjs_config_default as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.commonjs.config.js","sourceRoot":"","sources":["../../src/vite/vite.commonjs.config.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAmB,YAAY,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AACrE,OAAO,cAAc,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"vite.commonjs.config.js","sourceRoot":"","sources":["../../src/vite/vite.commonjs.config.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAmB,YAAY,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AACrE,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,uCAAuC,MAAM,kDAAkD,CAAC;AAEvG,MAAM,CAAC,OAAO,CAAC,KAAK,WACnB,IAAY,EACZ,YAAoB,EACpB,KAAkD;IAElD,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC,YAAY,EAAE;QACtE,KAAK;KACL,CAAC,CAAC;IACH,MAAM,WAAW,GAAG;QACnB,GAAG,cAAc;QACjB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,GAAG,eAAe;KAClB,CAAC;IACF,OAAO,YAAY,CAAC;QACnB,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;QAC9B,OAAO,EAAE;YACR,uCAAuC,EAAE;YAEzC;gBACC,IAAI,EAAE,gCAAgC;gBACtC,cAAc,CAAC,CAAC,EAAE,MAAM;oBACvB,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;wBAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAC/B,IACC,KAAK;4BACL,KAAK,CAAC,IAAI,KAAK,OAAO;4BACtB,MAAM,IAAI,KAAK;4BACf,KAAK,CAAC,IAAI,EACT,CAAC;4BACF,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAC9B,oBAAoB,EACpB,+CAA+C,CAC/C,CAAC;wBACH,CAAC;oBACF,CAAC;gBACF,CAAC;aACD;YAED,cAAc,CAAC;gBACd,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,UAAU;aAChB,CAAC;YACF,cAAc,CAAC;gBACd,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,CAAC,WAAW,CAAC;aACtB,CAAC;YACF,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzD,sBAAsB,EAAE;SACxB;QACD,KAAK,EAAE;YACN,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE;gBACJ,IAAI;gBACJ,OAAO,EAAE,CAAC,KAAK,CAAC;gBAChB,KAAK,EAAE,KAAK,IAAI,cAAc;aAC9B;YACD,aAAa,EAAE;gBACd,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,WAAW;aACrB;SACD;QACD,OAAO,EAAE;YACR,GAAG,EAAE,WAAW;YAGhB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;SAC9C;KACD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.esm.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.esm.config.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vite.esm.config.d.ts","sourceRoot":"","sources":["../../src/vite/vite.esm.config.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,MAAM,CAAC;AAQrD,yBACC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChD,OAAO,CAAC,UAAU,CAAC,CAsErB"}
|