@prosopo/config 3.3.7 → 3.3.9
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 +7 -6
- package/.turbo/turbo-build$colon$tsc.log +4 -4
- package/.turbo/turbo-build.log +8 -7
- package/CHANGELOG.md +53 -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 +11 -3
- package/dist/index.js +2 -1
- 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/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 +11 -3
- package/dist/vite/vite.frontend.config.js.map +1 -1
- package/package.json +1 -1
- package/src/vite/index.ts +1 -0
- package/src/vite/modifyExportsFiles.test.ts +56 -0
- package/src/vite/vite-plugin-modify-exports-files.ts +64 -0
- package/src/vite/vite.frontend.config.ts +40 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/config@3.3.
|
|
2
|
+
> @prosopo/config@3.3.9 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-production}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -9,7 +9,7 @@ ViteCommonJSConfig: .
|
|
|
9
9
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
10
10
|
Bundle build started
|
|
11
11
|
[2K
|
|
12
|
-
✓
|
|
12
|
+
✓ 20 modules transformed.
|
|
13
13
|
rendering chunks...
|
|
14
14
|
computing gzip size...
|
|
15
15
|
dist/cjs/webpack/index.cjs 0.00 kB │ gzip: 0.02 kB
|
|
@@ -18,18 +18,19 @@ dist/cjs/vite/TsNoCheckPlugin.cjs 0.37 kB │ gzip:
|
|
|
18
18
|
dist/cjs/vite/vite-plugin-fix-absolute-imports.cjs 0.60 kB │ gzip: 0.34 kB
|
|
19
19
|
dist/cjs/vite/vite-plugin-externalize-obfuscator-deadcode.cjs 0.68 kB │ gzip: 0.37 kB
|
|
20
20
|
dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
|
|
21
|
+
dist/cjs/vite/vite-plugin-modify-exports-files.cjs 1.36 kB │ gzip: 0.70 kB
|
|
21
22
|
dist/cjs/vite/vite-plugin-copy.cjs 1.60 kB │ gzip: 0.65 kB
|
|
22
23
|
dist/cjs/vite/vite-plugin-close-and-copy.cjs 1.77 kB │ gzip: 0.67 kB
|
|
23
|
-
dist/cjs/vite/index.cjs 2.
|
|
24
|
+
dist/cjs/vite/index.cjs 2.26 kB │ gzip: 0.50 kB
|
|
24
25
|
dist/cjs/vite/vite-plugin-remove-unused-translations.cjs 2.34 kB │ gzip: 1.01 kB
|
|
25
26
|
dist/cjs/vite/vite.esm.config.cjs 2.39 kB │ gzip: 0.92 kB
|
|
26
27
|
dist/cjs/vite/vite.commonjs.config.cjs 2.52 kB │ gzip: 0.99 kB
|
|
27
28
|
dist/cjs/vite/vite.threads.test.config.cjs 2.52 kB │ gzip: 1.00 kB
|
|
28
|
-
dist/cjs/index.cjs 2.54 kB │ gzip: 0.57 kB
|
|
29
29
|
dist/cjs/vite/vite.test.config.cjs 2.72 kB │ gzip: 1.04 kB
|
|
30
|
+
dist/cjs/index.cjs 2.74 kB │ gzip: 0.61 kB
|
|
30
31
|
dist/cjs/vite/vite.backend.config.cjs 3.63 kB │ gzip: 1.35 kB
|
|
31
32
|
dist/cjs/webpack/webpack.config.cjs 3.72 kB │ gzip: 1.30 kB
|
|
32
33
|
dist/cjs/dependencies.cjs 5.87 kB │ gzip: 1.92 kB
|
|
33
|
-
dist/cjs/vite/vite.frontend.config.cjs 6.
|
|
34
|
+
dist/cjs/vite/vite.frontend.config.cjs 6.89 kB │ gzip: 2.40 kB
|
|
34
35
|
|
|
35
|
-
[32m✓ built in
|
|
36
|
+
[32m✓ built in 60ms[39m
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/config@3.3.
|
|
2
|
+
> @prosopo/config@3.3.9 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
8:00:57 PM - Projects in this build:
|
|
6
6
|
* tsconfig.json
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
8:00:57 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
8:00:57 PM - Building project '/home/runner/work/captcha/captcha/dev/config/tsconfig.json'...
|
|
11
11
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/config@3.3.
|
|
2
|
+
> @prosopo/config@3.3.9 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/config@3.3.
|
|
6
|
+
> @prosopo/config@3.3.9 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -13,7 +13,7 @@ ViteEsmConfig: .
|
|
|
13
13
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
14
14
|
Bundle build started
|
|
15
15
|
[2K
|
|
16
|
-
✓
|
|
16
|
+
✓ 20 modules transformed.
|
|
17
17
|
rendering chunks...
|
|
18
18
|
computing gzip size...
|
|
19
19
|
dist/webpack/index.js 0.01 kB │ gzip: 0.03 kB
|
|
@@ -23,10 +23,11 @@ dist/vite/TsNoCheckPlugin.js 0.36 kB │ gzip: 0.23
|
|
|
23
23
|
dist/vite/vite-plugin-fix-absolute-imports.js 0.59 kB │ gzip: 0.33 kB
|
|
24
24
|
dist/vite/vite-plugin-externalize-obfuscator-deadcode.js 0.69 kB │ gzip: 0.38 kB
|
|
25
25
|
dist/vite/vite-plugin-copy.js 1.22 kB │ gzip: 0.57 kB
|
|
26
|
+
dist/vite/vite-plugin-modify-exports-files.js 1.33 kB │ gzip: 0.70 kB
|
|
26
27
|
dist/vite/vite-plugin-close-and-copy.js 1.46 kB │ gzip: 0.61 kB
|
|
27
|
-
dist/vite/index.js 1.
|
|
28
|
-
dist/index.js 1.77 kB │ gzip: 0.48 kB
|
|
28
|
+
dist/vite/index.js 1.61 kB │ gzip: 0.44 kB
|
|
29
29
|
dist/vite/vite.esm.config.js 1.90 kB │ gzip: 0.84 kB
|
|
30
|
+
dist/index.js 1.91 kB │ gzip: 0.51 kB
|
|
30
31
|
dist/vite/vite.commonjs.config.js 2.00 kB │ gzip: 0.90 kB
|
|
31
32
|
dist/vite/vite-plugin-remove-unused-translations.js 2.03 kB │ gzip: 0.92 kB
|
|
32
33
|
dist/vite/vite.threads.test.config.js 2.19 kB │ gzip: 0.94 kB
|
|
@@ -34,6 +35,6 @@ dist/vite/vite.test.config.js 2.29 kB │ gzip: 0.96
|
|
|
34
35
|
dist/webpack/webpack.config.js 3.08 kB │ gzip: 1.23 kB
|
|
35
36
|
dist/vite/vite.backend.config.js 3.10 kB │ gzip: 1.27 kB
|
|
36
37
|
dist/dependencies.js 5.31 kB │ gzip: 1.81 kB
|
|
37
|
-
dist/vite/vite.frontend.config.js 5.
|
|
38
|
+
dist/vite/vite.frontend.config.js 5.91 kB │ gzip: 2.27 kB
|
|
38
39
|
|
|
39
|
-
[32m✓ built in
|
|
40
|
+
[32m✓ built in 46ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
# @prosopo/config
|
|
2
2
|
|
|
3
|
+
## 3.3.9
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- e46e0bd: Keep the server-only i18next backend out of frontend bundles.
|
|
7
|
+
|
|
8
|
+
`i18next-fs-backend` has been on the frontend config's exclusion list for a long
|
|
9
|
+
time, but it was still being bundled. `external` only ever matches a specifier
|
|
10
|
+
exactly, and `i18nBackend.ts` imports the subpath `i18next-fs-backend/cjs`
|
|
11
|
+
(i18next/i18next-fs-backend#57), which is a different string. So the fs backend
|
|
12
|
+
shipped in the browser artifact along with its YAML, JSON5 and JSONC parsers.
|
|
13
|
+
`i18next-http-middleware` — Express request handling — was never on the list at
|
|
14
|
+
all.
|
|
15
|
+
|
|
16
|
+
The subpath is now listed literally, and `i18next-http-middleware` joins the
|
|
17
|
+
exclusion list.
|
|
18
|
+
|
|
19
|
+
Both are listed one by one rather than by matching `pkg/*` against the whole
|
|
20
|
+
exclusion list. That broader rule looks tidier but is wrong: the `vite` filter
|
|
21
|
+
is a substring match, so it also selects `vite-plugin-node-polyfills`, and
|
|
22
|
+
`vite-plugin-node-polyfills/shims/process` is injected into the served and IIFE
|
|
23
|
+
bundles as a bare import. Externalising it leaves the browser unable to resolve
|
|
24
|
+
the specifier and the widget dies on load.
|
|
25
|
+
|
|
26
|
+
Measured on `@prosopo/procaptcha-bundle`, production mode:
|
|
27
|
+
|
|
28
|
+
| | before | after |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `i18nBackend` chunk, raw | 153,593 | 788 |
|
|
31
|
+
| all chunks, raw | 1,247,449 | 1,094,644 (−12.2%) |
|
|
32
|
+
| all chunks, gzip | 474,695 | 434,408 (−8.5%) |
|
|
33
|
+
|
|
34
|
+
This is not a first-paint change — the critical path is unchanged, because the
|
|
35
|
+
chunk is only reachable through `loadI18next(true)` and the widget always calls
|
|
36
|
+
`loadI18next(false, language)`. It is dead weight in the published artifact.
|
|
37
|
+
|
|
38
|
+
No browser behaviour can regress: that chunk already imported `node:path`, which
|
|
39
|
+
is already external, so it was never loadable in a browser to begin with. The
|
|
40
|
+
i18next packages the browser does use — `http-backend`,
|
|
41
|
+
`browser-languagedetector`, `chained-backend`, `resources-to-backend` — are
|
|
42
|
+
unaffected and still bundled.
|
|
43
|
+
|
|
44
|
+
## 3.3.8
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- bde0cb9: Enable whitespace minification for production frontend bundles.
|
|
48
|
+
|
|
49
|
+
For a `lib` + `es` build, Vite downgrades `build.minify: true` to
|
|
50
|
+
`{ compress: true, mangle: true, codegen: false }`, so bundles shipped compressed
|
|
51
|
+
and mangled but still pretty-printed. Setting `output.minify` explicitly fixes it.
|
|
52
|
+
|
|
53
|
+
On `@prosopo/procaptcha-bundle`, the critical path drops 22.5% raw (658KB → 510KB)
|
|
54
|
+
and 9.6% gzipped. Chunk membership is unchanged. Production builds only.
|
|
55
|
+
|
|
3
56
|
## 3.3.7
|
|
4
57
|
### Patch Changes
|
|
5
58
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -13,6 +13,7 @@ const require_vite_commonjs_config = require("./vite/vite.commonjs.config.cjs");
|
|
|
13
13
|
const require_vite_esm_config = require("./vite/vite.esm.config.cjs");
|
|
14
14
|
const require_vite_plugin_remove_unused_translations = require("./vite/vite-plugin-remove-unused-translations.cjs");
|
|
15
15
|
const require_TsNoCheckPlugin = require("./vite/TsNoCheckPlugin.cjs");
|
|
16
|
+
const require_vite_plugin_modify_exports_files = require("./vite/vite-plugin-modify-exports-files.cjs");
|
|
16
17
|
exports.ViteBackendConfig = require_vite_backend_config.default;
|
|
17
18
|
exports.ViteCommonJSConfig = require_vite_commonjs_config.default;
|
|
18
19
|
exports.ViteEsmConfig = require_vite_esm_config.default;
|
|
@@ -21,6 +22,7 @@ exports.VitePluginCloseAndCopy = require_vite_plugin_close_and_copy.default;
|
|
|
21
22
|
exports.VitePluginCopy = require_vite_plugin_copy.default;
|
|
22
23
|
exports.VitePluginExternalizeObfuscatorDeadCode = require_vite_plugin_externalize_obfuscator_deadcode.default;
|
|
23
24
|
exports.VitePluginFixAbsoluteImports = require_vite_plugin_fix_absolute_imports.default;
|
|
25
|
+
exports.VitePluginModifyExportsFiles = require_vite_plugin_modify_exports_files.default;
|
|
24
26
|
exports.VitePluginRemoveUnusedTranslations = require_vite_plugin_remove_unused_translations.default;
|
|
25
27
|
exports.VitePluginSourceMapExclude = require_vite_plugin_sourcemap_exclude.default;
|
|
26
28
|
exports.ViteTestConfig = require_vite_test_config.default;
|
package/dist/cjs/vite/index.cjs
CHANGED
|
@@ -11,6 +11,7 @@ const require_vite_commonjs_config = require("./vite.commonjs.config.cjs");
|
|
|
11
11
|
const require_vite_esm_config = require("./vite.esm.config.cjs");
|
|
12
12
|
const require_vite_plugin_remove_unused_translations = require("./vite-plugin-remove-unused-translations.cjs");
|
|
13
13
|
const require_TsNoCheckPlugin = require("./TsNoCheckPlugin.cjs");
|
|
14
|
+
const require_vite_plugin_modify_exports_files = require("./vite-plugin-modify-exports-files.cjs");
|
|
14
15
|
exports.ViteBackendConfig = require_vite_backend_config.default;
|
|
15
16
|
exports.ViteCommonJSConfig = require_vite_commonjs_config.default;
|
|
16
17
|
exports.ViteEsmConfig = require_vite_esm_config.default;
|
|
@@ -19,6 +20,7 @@ exports.VitePluginCloseAndCopy = require_vite_plugin_close_and_copy.default;
|
|
|
19
20
|
exports.VitePluginCopy = require_vite_plugin_copy.default;
|
|
20
21
|
exports.VitePluginExternalizeObfuscatorDeadCode = require_vite_plugin_externalize_obfuscator_deadcode.default;
|
|
21
22
|
exports.VitePluginFixAbsoluteImports = require_vite_plugin_fix_absolute_imports.default;
|
|
23
|
+
exports.VitePluginModifyExportsFiles = require_vite_plugin_modify_exports_files.default;
|
|
22
24
|
exports.VitePluginRemoveUnusedTranslations = require_vite_plugin_remove_unused_translations.default;
|
|
23
25
|
exports.VitePluginSourceMapExclude = require_vite_plugin_sourcemap_exclude.default;
|
|
24
26
|
exports.ViteTestConfig = require_vite_test_config.default;
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
exports.default = modifyExportsFilesPlugin;
|
|
43
|
+
exports.emptyExportsFiles = emptyExportsFiles;
|
|
@@ -50,13 +50,16 @@ async function vite_frontend_config_default(packageName, bundleName, dir, entry,
|
|
|
50
50
|
"aws",
|
|
51
51
|
"webpack",
|
|
52
52
|
"vite",
|
|
53
|
-
"i18next-fs-backend"
|
|
53
|
+
"i18next-fs-backend",
|
|
54
|
+
"i18next-http-middleware"
|
|
54
55
|
]);
|
|
56
|
+
const serverOnlySubpaths = ["i18next-fs-backend/cjs"];
|
|
55
57
|
const allExternal = [
|
|
56
58
|
...node_module.builtinModules,
|
|
57
59
|
...node_module.builtinModules.map((m) => `node:${m}`),
|
|
58
60
|
...external,
|
|
59
|
-
...optionalPeerDependencies
|
|
61
|
+
...optionalPeerDependencies,
|
|
62
|
+
...serverOnlySubpaths
|
|
60
63
|
];
|
|
61
64
|
console.debug(`Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`);
|
|
62
65
|
const proto = RegExp.prototype;
|
|
@@ -127,7 +130,12 @@ async function vite_frontend_config_default(packageName, bundleName, dir, entry,
|
|
|
127
130
|
watch: false,
|
|
128
131
|
output: {
|
|
129
132
|
dir: node_path.default.resolve(dir, "dist/bundle"),
|
|
130
|
-
entryFileNames: `${bundleName}.bundle.js
|
|
133
|
+
entryFileNames: `${bundleName}.bundle.js`,
|
|
134
|
+
...isProduction ? { minify: {
|
|
135
|
+
compress: true,
|
|
136
|
+
mangle: true,
|
|
137
|
+
codegen: true
|
|
138
|
+
} } : {}
|
|
131
139
|
},
|
|
132
140
|
plugins: [
|
|
133
141
|
(0, rollup_plugin_import_css.default)(),
|
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
|
-
|
|
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 };
|
package/dist/vite/index.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export { default as ViteEsmConfig } from "./vite.esm.config.js";
|
|
|
11
11
|
export { default as VitePluginRemoveUnusedTranslations } from "./vite-plugin-remove-unused-translations.js";
|
|
12
12
|
export * from "./TsNoCheckPlugin.js";
|
|
13
13
|
export { default as VitePluginCopy } from "./vite-plugin-copy.js";
|
|
14
|
+
export { default as VitePluginModifyExportsFiles } from "./vite-plugin-modify-exports-files.js";
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/vite/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AACtH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AAC5G,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AACtH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AAC5G,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC"}
|
package/dist/vite/index.js
CHANGED
|
@@ -11,4 +11,5 @@ import vite_commonjs_config_default from "./vite.commonjs.config.js";
|
|
|
11
11
|
import vite_esm_config_default from "./vite.esm.config.js";
|
|
12
12
|
import VitePluginRemoveUnusedTranslations from "./vite-plugin-remove-unused-translations.js";
|
|
13
13
|
import { tsNoCheckPlugin } from "./TsNoCheckPlugin.js";
|
|
14
|
-
|
|
14
|
+
import modifyExportsFilesPlugin from "./vite-plugin-modify-exports-files.js";
|
|
15
|
+
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, tsNoCheckPlugin };
|
package/dist/vite/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AACtH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AAC5G,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AACtH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AAC5G,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modifyExportsFiles.test.d.ts","sourceRoot":"","sources":["../../src/vite/modifyExportsFiles.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { emptyExportsFiles } from "./vite-plugin-modify-exports-files.js";
|
|
3
|
+
describe("emptyExportsFiles", () => {
|
|
4
|
+
test("empties an assignment and keeps the code around it", () => {
|
|
5
|
+
expect(emptyExportsFiles('a();\nexports2.FILES = ["a.js", "b.js"];\nb();')).toBe("a();\nexports2.FILES = [];\n\nb();");
|
|
6
|
+
});
|
|
7
|
+
test("empties every assignment, not just the first", () => {
|
|
8
|
+
const out = emptyExportsFiles('exports2.FILES = ["a"];exports2.FILES = ["b"];');
|
|
9
|
+
expect(out).toBe("exports2.FILES = [];\nexports2.FILES = [];\n");
|
|
10
|
+
});
|
|
11
|
+
test("spans newlines, as a formatted listing does", () => {
|
|
12
|
+
expect(emptyExportsFiles('exports2.FILES = [\n\t"a.js"\n];')).toBe("exports2.FILES = [];\n");
|
|
13
|
+
});
|
|
14
|
+
test("leaves code with no assignment untouched", () => {
|
|
15
|
+
expect(emptyExportsFiles("const FILES = [];")).toBe("const FILES = [];");
|
|
16
|
+
});
|
|
17
|
+
test("leaves an unterminated assignment alone rather than truncating", () => {
|
|
18
|
+
const code = 'exports2.FILES = ["a.js"';
|
|
19
|
+
expect(emptyExportsFiles(code)).toBe(code);
|
|
20
|
+
});
|
|
21
|
+
test("stays linear on many unterminated assignments", () => {
|
|
22
|
+
const code = "exports2.FILES = [".repeat(20000);
|
|
23
|
+
const started = performance.now();
|
|
24
|
+
expect(emptyExportsFiles(code)).toBe(code);
|
|
25
|
+
expect(performance.now() - started).toBeLessThan(1000);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=modifyExportsFiles.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modifyExportsFiles.test.js","sourceRoot":"","sources":["../../src/vite/modifyExportsFiles.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACL,iBAAiB,CAAC,gDAAgD,CAAC,CACnE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,iBAAiB,CAC5B,gDAAgD,CAChD,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CACjE,wBAAwB,CACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QAE3E,MAAM,IAAI,GAAG,0BAA0B,CAAC;QACxC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAG1D,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -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,CA8RrB"}
|
|
@@ -44,13 +44,16 @@ async function vite_frontend_config_default(packageName, bundleName, dir, entry,
|
|
|
44
44
|
"aws",
|
|
45
45
|
"webpack",
|
|
46
46
|
"vite",
|
|
47
|
-
"i18next-fs-backend"
|
|
47
|
+
"i18next-fs-backend",
|
|
48
|
+
"i18next-http-middleware"
|
|
48
49
|
]);
|
|
50
|
+
const serverOnlySubpaths = ["i18next-fs-backend/cjs"];
|
|
49
51
|
const allExternal = [
|
|
50
52
|
...builtinModules,
|
|
51
53
|
...builtinModules.map((m) => `node:${m}`),
|
|
52
54
|
...external,
|
|
53
|
-
...optionalPeerDependencies
|
|
55
|
+
...optionalPeerDependencies,
|
|
56
|
+
...serverOnlySubpaths
|
|
54
57
|
];
|
|
55
58
|
console.debug(`Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`);
|
|
56
59
|
const proto = RegExp.prototype;
|
|
@@ -121,7 +124,12 @@ async function vite_frontend_config_default(packageName, bundleName, dir, entry,
|
|
|
121
124
|
watch: false,
|
|
122
125
|
output: {
|
|
123
126
|
dir: path.resolve(dir, "dist/bundle"),
|
|
124
|
-
entryFileNames: `${bundleName}.bundle.js
|
|
127
|
+
entryFileNames: `${bundleName}.bundle.js`,
|
|
128
|
+
...isProduction ? { minify: {
|
|
129
|
+
compress: true,
|
|
130
|
+
mangle: true,
|
|
131
|
+
codegen: true
|
|
132
|
+
} } : {}
|
|
125
133
|
},
|
|
126
134
|
plugins: [
|
|
127
135
|
css(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.frontend.config.js","sourceRoot":"","sources":["../../src/vite/vite.frontend.config.ts"],"names":[],"mappings":"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
|
|
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;IAWlD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE;QACvD,KAAK;QACL,eAAe;QACf,KAAK;QACL,SAAS;QACT,MAAM;QACN,oBAAoB;QACpB,yBAAyB;KACzB,CAAC,CAAC;IAgBH,MAAM,kBAAkB,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAGtD,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;QAC3B,GAAG,kBAAkB;KACrB,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;oBAKzC,GAAG,CAAC,YAAY;wBACf,CAAC,CAAC;4BACA,MAAM,EAAE;gCACP,QAAQ,EAAE,IAAI;gCACd,MAAM,EAAE,IAAI;gCACZ,OAAO,EAAE,IAAI;6BACb;yBACD;wBACF,CAAC,CAAC,EAAE,CAAC;iBACN;gBAED,OAAO,EAAE;oBAER,GAAG,EAAS;oBAEZ,IAAI,EAAS;oBAEb,WAAW,CAAC;wBACX,OAAO,EAAE,IAAI;wBACb,cAAc,EAAE,KAAK;wBACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;wBACpC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;wBAC9B,WAAW,EAAE,IAAI;qBAEjB,CAAQ;oBAET;wBACC,IAAI,EAAE,4BAA4B;wBAClC,cAAc,CAAC,CAAC,EAAE,MAAM;4BACvB,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;gCAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gCAC/B,IACC,KAAK;oCACL,KAAK,CAAC,IAAI,KAAK,OAAO;oCACtB,MAAM,IAAI,KAAK;oCACf,KAAK,CAAC,IAAI,EACT,CAAC;oCACF,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAC9B,qLAAqL,EACrL,EAAE,CACF,CAAC;gCACH,CAAC;4BACF,CAAC;wBACF,CAAC;qBACD;oBAID,GAAG,CAAC,eAAe;wBAClB,CAAC,CAAC;4BACA,UAAU,CAAC;gCACV,IAAI,EAAE,IAAI;gCACV,QAAQ,EAAE,SAAS;gCACnB,QAAQ,EAAE,IAAI;gCACd,UAAU,EAAE,IAAI;6BAChB,CAAC;yBACF;wBACF,CAAC,CAAC,EAAE,CAAC;oBAKN,UAAU,CAAC;wBACV,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;wBACzC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBACnD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;qBACxC,CAAC;iBACF;aACD;SACD;QACD,OAAO,EAAE;YACR,uCAAuC,EAAE;YAIzC,aAAa,CAAC;gBACb,OAAO,EAAE,CAAC,QAAQ,CAAC;aACnB,CAAC;YAGF,SAAS,EAAE;YAGX,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;SACrE;KACD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
package/src/vite/index.ts
CHANGED
|
@@ -24,3 +24,4 @@ export { default as ViteEsmConfig } from "./vite.esm.config.js";
|
|
|
24
24
|
export { default as VitePluginRemoveUnusedTranslations } from "./vite-plugin-remove-unused-translations.js";
|
|
25
25
|
export * from "./TsNoCheckPlugin.js";
|
|
26
26
|
export { default as VitePluginCopy } from "./vite-plugin-copy.js";
|
|
27
|
+
export { default as VitePluginModifyExportsFiles } from "./vite-plugin-modify-exports-files.js";
|
|
@@ -0,0 +1,56 @@
|
|
|
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 { describe, expect, test } from "vitest";
|
|
16
|
+
import { emptyExportsFiles } from "./vite-plugin-modify-exports-files.js";
|
|
17
|
+
|
|
18
|
+
describe("emptyExportsFiles", () => {
|
|
19
|
+
test("empties an assignment and keeps the code around it", () => {
|
|
20
|
+
expect(
|
|
21
|
+
emptyExportsFiles('a();\nexports2.FILES = ["a.js", "b.js"];\nb();'),
|
|
22
|
+
).toBe("a();\nexports2.FILES = [];\n\nb();");
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test("empties every assignment, not just the first", () => {
|
|
26
|
+
const out = emptyExportsFiles(
|
|
27
|
+
'exports2.FILES = ["a"];exports2.FILES = ["b"];',
|
|
28
|
+
);
|
|
29
|
+
expect(out).toBe("exports2.FILES = [];\nexports2.FILES = [];\n");
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test("spans newlines, as a formatted listing does", () => {
|
|
33
|
+
expect(emptyExportsFiles('exports2.FILES = [\n\t"a.js"\n];')).toBe(
|
|
34
|
+
"exports2.FILES = [];\n",
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test("leaves code with no assignment untouched", () => {
|
|
39
|
+
expect(emptyExportsFiles("const FILES = [];")).toBe("const FILES = [];");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test("leaves an unterminated assignment alone rather than truncating", () => {
|
|
43
|
+
// Cutting to the end of the chunk here would delete real code.
|
|
44
|
+
const code = 'exports2.FILES = ["a.js"';
|
|
45
|
+
expect(emptyExportsFiles(code)).toBe(code);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("stays linear on many unterminated assignments", () => {
|
|
49
|
+
// The regex this replaced backtracked quadratically on exactly this
|
|
50
|
+
// shape, which is what CodeQL flagged.
|
|
51
|
+
const code = "exports2.FILES = [".repeat(20000);
|
|
52
|
+
const started = performance.now();
|
|
53
|
+
expect(emptyExportsFiles(code)).toBe(code);
|
|
54
|
+
expect(performance.now() - started).toBeLessThan(1000);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
import type { Plugin } from "vite";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Empties the generated `exports2.FILES` array in every emitted chunk so that
|
|
18
|
+
* bundled file listings are not leaked into the output.
|
|
19
|
+
*/
|
|
20
|
+
const ASSIGNMENT = "exports2.FILES = [";
|
|
21
|
+
const TERMINATOR = "];";
|
|
22
|
+
const REPLACEMENT = "exports2.FILES = [];\n";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Blank every `exports2.FILES = [...]` assignment in a chunk.
|
|
26
|
+
*
|
|
27
|
+
* Done with indexOf rather than a regex: `\[[\s\S]*?\];` backtracks
|
|
28
|
+
* quadratically on a chunk holding many unterminated assignments, and chunk
|
|
29
|
+
* contents are whatever the bundled sources happened to contain. Scanning
|
|
30
|
+
* forward is linear regardless.
|
|
31
|
+
*/
|
|
32
|
+
export const emptyExportsFiles = (code: string): string => {
|
|
33
|
+
let out = "";
|
|
34
|
+
let cursor = 0;
|
|
35
|
+
for (;;) {
|
|
36
|
+
const start = code.indexOf(ASSIGNMENT, cursor);
|
|
37
|
+
if (start === -1) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
const end = code.indexOf(TERMINATOR, start + ASSIGNMENT.length);
|
|
41
|
+
if (end === -1) {
|
|
42
|
+
// Unterminated: leave it and everything after it alone rather than
|
|
43
|
+
// truncating the chunk.
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
out += code.slice(cursor, start) + REPLACEMENT;
|
|
47
|
+
cursor = end + TERMINATOR.length;
|
|
48
|
+
}
|
|
49
|
+
return out + code.slice(cursor);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default function modifyExportsFilesPlugin(): Plugin {
|
|
53
|
+
return {
|
|
54
|
+
name: "modify-exports-files",
|
|
55
|
+
generateBundle(_options, bundle) {
|
|
56
|
+
for (const fileName in bundle) {
|
|
57
|
+
const chunk = bundle[fileName];
|
|
58
|
+
if (chunk && chunk.type === "chunk") {
|
|
59
|
+
chunk.code = emptyExportsFiles(chunk.code);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|