@prosopo/config 3.3.7 → 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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/config@3.3.7 build:cjs
2
+ > @prosopo/config@3.3.8 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
  vite v8.1.5 building ssr environment for production...
10
10
  Bundle build started
11
11
  
12
- ✓ 19 modules transformed.
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.07 kB │ gzip: 0.46 kB
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.66 kB │ gzip: 2.32 kB
34
+ dist/cjs/vite/vite.frontend.config.cjs 6.78 kB │ gzip: 2.36 kB
34
35
 
35
- ✓ built in 67ms
36
+ ✓ built in 62ms
@@ -1,11 +1,11 @@
1
1
 
2
- > @prosopo/config@3.3.7 build:tsc
2
+ > @prosopo/config@3.3.8 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 1:56:26 PM - Projects in this build:
5
+ 3:30:33 PM - Projects in this build:
6
6
  * tsconfig.json
7
7
 
8
- 1:56:27 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
8
+ 3:30:33 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
9
9
 
10
- 1:56:27 PM - Building project '/home/runner/work/captcha/captcha/dev/config/tsconfig.json'...
10
+ 3:30:33 PM - Building project '/home/runner/work/captcha/captcha/dev/config/tsconfig.json'...
11
11
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/config@3.3.7 build
2
+ > @prosopo/config@3.3.8 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/config@3.3.7 build:cross-env
6
+ > @prosopo/config@3.3.8 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
  vite v8.1.5 building ssr environment for production...
14
14
  Bundle build started
15
15
  
16
- ✓ 19 modules transformed.
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.47 kB │ gzip: 0.40 kB
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.68 kB │ gzip: 2.19 kB
38
+ dist/vite/vite.frontend.config.js 5.80 kB │ gzip: 2.23 kB
38
39
 
39
- ✓ built in 53ms
40
+ ✓ built in 51ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @prosopo/config
2
2
 
3
+ ## 3.3.8
4
+ ### Patch Changes
5
+
6
+ - bde0cb9: Enable whitespace minification for production frontend bundles.
7
+
8
+ For a `lib` + `es` build, Vite downgrades `build.minify: true` to
9
+ `{ compress: true, mangle: true, codegen: false }`, so bundles shipped compressed
10
+ and mangled but still pretty-printed. Setting `output.minify` explicitly fixes it.
11
+
12
+ On `@prosopo/procaptcha-bundle`, the critical path drops 22.5% raw (658KB → 510KB)
13
+ and 9.6% gzipped. Chunk membership is unchanged. Production builds only.
14
+
3
15
  ## 3.3.7
4
16
  ### Patch Changes
5
17
 
@@ -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;
@@ -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;
@@ -127,7 +127,12 @@ async function vite_frontend_config_default(packageName, bundleName, dir, entry,
127
127
  watch: false,
128
128
  output: {
129
129
  dir: node_path.default.resolve(dir, "dist/bundle"),
130
- entryFileNames: `${bundleName}.bundle.js`
130
+ entryFileNames: `${bundleName}.bundle.js`,
131
+ ...isProduction ? { minify: {
132
+ compress: true,
133
+ mangle: true,
134
+ codegen: true
135
+ } } : {}
131
136
  },
132
137
  plugins: [
133
138
  (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
- export { vite_backend_config_default as ViteBackendConfig, vite_commonjs_config_default as ViteCommonJSConfig, vite_esm_config_default as ViteEsmConfig, vite_frontend_config_default as ViteFrontendConfig, VitePluginCloseAndCopy, VitePluginCopy, VitePluginExternalizeObfuscatorDeadCode, VitePluginFixAbsoluteImports, VitePluginRemoveUnusedTranslations, VitePluginSourcemapExclude as VitePluginSourceMapExclude, vite_test_config_default as ViteTestConfig, vite_threads_test_config_default as ViteThreadsTestConfig, filterDependencies, getDependencies, getExternalsFromReferences, getTsConfigs, tsNoCheckPlugin };
16
+ import modifyExportsFilesPlugin from "./vite/vite-plugin-modify-exports-files.js";
17
+ export { vite_backend_config_default as ViteBackendConfig, vite_commonjs_config_default as ViteCommonJSConfig, vite_esm_config_default as ViteEsmConfig, vite_frontend_config_default as ViteFrontendConfig, VitePluginCloseAndCopy, VitePluginCopy, VitePluginExternalizeObfuscatorDeadCode, VitePluginFixAbsoluteImports, modifyExportsFilesPlugin as VitePluginModifyExportsFiles, VitePluginRemoveUnusedTranslations, VitePluginSourcemapExclude as VitePluginSourceMapExclude, vite_test_config_default as ViteTestConfig, vite_threads_test_config_default as ViteThreadsTestConfig, filterDependencies, getDependencies, getExternalsFromReferences, getTsConfigs, tsNoCheckPlugin };
@@ -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
@@ -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"}
@@ -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
- export { vite_backend_config_default as ViteBackendConfig, vite_commonjs_config_default as ViteCommonJSConfig, vite_esm_config_default as ViteEsmConfig, vite_frontend_config_default as ViteFrontendConfig, VitePluginCloseAndCopy, VitePluginCopy, VitePluginExternalizeObfuscatorDeadCode, VitePluginFixAbsoluteImports, VitePluginRemoveUnusedTranslations, VitePluginSourcemapExclude as VitePluginSourceMapExclude, vite_test_config_default as ViteTestConfig, vite_threads_test_config_default as ViteThreadsTestConfig, tsNoCheckPlugin };
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 };
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=modifyExportsFiles.test.d.ts.map
@@ -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,4 @@
1
+ import type { Plugin } from "vite";
2
+ export declare const emptyExportsFiles: (code: string) => string;
3
+ export default function modifyExportsFilesPlugin(): Plugin;
4
+ //# sourceMappingURL=vite-plugin-modify-exports-files.d.ts.map
@@ -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,CAuPrB"}
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":"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"}
1
+ {"version":3,"file":"vite.frontend.config.js","sourceRoot":"","sources":["../../src/vite/vite.frontend.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.7",
3
+ "version": "3.3.8",
4
4
  "description": "Prosopo config library",
5
5
  "type": "module",
6
6
  "scripts": {
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
+ }
@@ -209,6 +209,19 @@ export default async function (
209
209
  output: {
210
210
  dir: path.resolve(dir, "dist/bundle"),
211
211
  entryFileNames: `${bundleName}.bundle.js`,
212
+ // For a lib + es build, Vite downgrades `build.minify: true` to
213
+ // `{ compress, mangle, codegen: false }`, which leaves the output
214
+ // pretty-printed. Set it here to get whitespace removal too;
215
+ // output options win over the build-level default.
216
+ ...(isProduction
217
+ ? {
218
+ minify: {
219
+ compress: true,
220
+ mangle: true,
221
+ codegen: true,
222
+ },
223
+ }
224
+ : {}),
212
225
  },
213
226
 
214
227
  plugins: [