@angular/build 22.2.0-next.4 → 22.2.0-next.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/package.json +13 -12
- package/src/builders/application/build-action.js +47 -39
- package/src/builders/application/build-action.js.map +1 -1
- package/src/builders/application/execute-build.js +1 -1
- package/src/builders/application/execute-build.js.map +1 -1
- package/src/builders/application/execute-post-bundle.js +2 -5
- package/src/builders/application/execute-post-bundle.js.map +1 -1
- package/src/builders/application/i18n.js +20 -10
- package/src/builders/application/i18n.js.map +1 -1
- package/src/builders/application/index.js +2 -2
- package/src/builders/application/index.js.map +1 -1
- package/src/builders/application/results.d.ts +3 -2
- package/src/builders/application/setup-bundling.js +3 -1
- package/src/builders/application/setup-bundling.js.map +1 -1
- package/src/builders/dev-server/vite/index.js +4 -7
- package/src/builders/dev-server/vite/index.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +1 -1
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/dev-server/vite/utils.d.ts +1 -1
- package/src/builders/dev-server/vite/utils.js +9 -4
- package/src/builders/dev-server/vite/utils.js.map +1 -1
- package/src/builders/extract-i18n/application-extraction.js +6 -5
- package/src/builders/extract-i18n/application-extraction.js.map +1 -1
- package/src/builders/karma/application_builder.js +1 -1
- package/src/builders/karma/application_builder.js.map +1 -1
- package/src/builders/karma/assets-middleware.d.ts +2 -2
- package/src/builders/karma/assets-middleware.js +5 -2
- package/src/builders/karma/assets-middleware.js.map +1 -1
- package/src/builders/karma/progress-reporter.js +7 -5
- package/src/builders/karma/progress-reporter.js.map +1 -1
- package/src/builders/karma/utils.d.ts +2 -1
- package/src/builders/karma/utils.js +2 -2
- package/src/builders/karma/utils.js.map +1 -1
- package/src/builders/unit-test/builder.js +1 -1
- package/src/builders/unit-test/options.d.ts +1 -0
- package/src/builders/unit-test/options.js +2 -1
- package/src/builders/unit-test/options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +5 -6
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/executor.js +4 -4
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
- package/src/builders/unit-test/schema.d.ts +7 -0
- package/src/builders/unit-test/schema.js.map +1 -1
- package/src/builders/unit-test/schema.json +5 -0
- package/src/private.d.ts +1 -1
- package/src/private.js +4 -3
- package/src/private.js.map +1 -1
- package/src/tools/angular/compilation/angular-compilation.d.ts +3 -8
- package/src/tools/angular/compilation/angular-compilation.js +2 -88
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.d.ts +5 -5
- package/src/tools/angular/compilation/aot-compilation.js +9 -13
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- package/src/tools/angular/compilation/compiler-options.d.ts +24 -0
- package/src/tools/angular/compilation/compiler-options.js +135 -0
- package/src/tools/angular/compilation/compiler-options.js.map +1 -0
- package/src/tools/angular/compilation/index.d.ts +1 -1
- package/src/tools/angular/compilation/index.js +1 -3
- package/src/tools/angular/compilation/index.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.d.ts +5 -5
- package/src/tools/angular/compilation/jit-compilation.js +8 -15
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-compilation.d.ts +2 -7
- package/src/tools/angular/compilation/parallel-compilation.js +39 -41
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.d.ts +2 -2
- package/src/tools/angular/compilation/parallel-worker.js +79 -63
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/compilation/typescript-compilation.d.ts +24 -0
- package/src/tools/angular/compilation/typescript-compilation.js +107 -0
- package/src/tools/angular/compilation/typescript-compilation.js.map +1 -0
- package/src/tools/angular/linker/oxc-linker.d.ts +13 -17
- package/src/tools/angular/linker/oxc-linker.js +27 -89
- package/src/tools/angular/linker/oxc-linker.js.map +1 -1
- package/src/tools/esbuild/angular/compilation-state.d.ts +23 -3
- package/src/tools/esbuild/angular/compilation-state.js +51 -13
- package/src/tools/esbuild/angular/compilation-state.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +36 -101
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
- package/src/tools/esbuild/angular/component-stylesheets.js +42 -15
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
- package/src/tools/esbuild/application-code-bundle.js +5 -9
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/bundler-context.d.ts +4 -4
- package/src/tools/esbuild/bundler-context.js +93 -27
- package/src/tools/esbuild/bundler-context.js.map +1 -1
- package/src/tools/esbuild/bundler-execution-result.d.ts +1 -0
- package/src/tools/esbuild/bundler-execution-result.js +2 -2
- package/src/tools/esbuild/bundler-execution-result.js.map +1 -1
- package/src/tools/esbuild/cache.d.ts +10 -0
- package/src/tools/esbuild/cache.js +18 -0
- package/src/tools/esbuild/cache.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner-worker.d.ts +82 -37
- package/src/tools/esbuild/i18n-inliner-worker.js +134 -97
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner.d.ts +42 -11
- package/src/tools/esbuild/i18n-inliner.js +335 -121
- package/src/tools/esbuild/i18n-inliner.js.map +1 -1
- package/src/tools/esbuild/i18n-locale-plugin.d.ts +32 -0
- package/src/tools/esbuild/i18n-locale-plugin.js +112 -103
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
- package/src/tools/esbuild/i18n-translation-encoder.d.ts +21 -0
- package/src/tools/esbuild/i18n-translation-encoder.js +92 -0
- package/src/tools/esbuild/i18n-translation-encoder.js.map +1 -0
- package/src/tools/esbuild/i18n-translation-reader.d.ts +41 -0
- package/src/tools/esbuild/i18n-translation-reader.js +164 -0
- package/src/tools/esbuild/i18n-translation-reader.js.map +1 -0
- package/src/tools/esbuild/javascript-transformer-worker.js +41 -47
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer.js +53 -1
- package/src/tools/esbuild/javascript-transformer.js.map +1 -1
- package/src/tools/esbuild/load-result-cache.d.ts +1 -0
- package/src/tools/esbuild/load-result-cache.js +24 -11
- package/src/tools/esbuild/load-result-cache.js.map +1 -1
- package/src/tools/esbuild/sqlite-cache-store.d.ts +8 -0
- package/src/tools/esbuild/sqlite-cache-store.js +19 -7
- package/src/tools/esbuild/sqlite-cache-store.js.map +1 -1
- package/src/tools/esbuild/stylesheets/sass-language.js +19 -14
- package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -1
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +1 -1
- package/src/tools/esbuild/utils.d.ts +1 -1
- package/src/tools/esbuild/utils.js.map +1 -1
- package/src/tools/oxc/oxc-transform.d.ts +3 -0
- package/src/tools/oxc/oxc-transform.js +103 -124
- package/src/tools/oxc/oxc-transform.js.map +1 -1
- package/src/tools/oxc/traversal.d.ts +32 -0
- package/src/tools/oxc/traversal.js +299 -0
- package/src/tools/oxc/traversal.js.map +1 -0
- package/src/tools/sass/rebasing-importer.d.ts +8 -14
- package/src/tools/sass/rebasing-importer.js +18 -24
- package/src/tools/sass/rebasing-importer.js.map +1 -1
- package/src/tools/sass/sass-service.d.ts +11 -38
- package/src/tools/sass/sass-service.js +124 -187
- package/src/tools/sass/sass-service.js.map +1 -1
- package/src/utils/environment-options.d.ts +12 -0
- package/src/utils/environment-options.js +20 -12
- package/src/utils/environment-options.js.map +1 -1
- package/src/utils/i18n-options.d.ts +2 -1
- package/src/utils/i18n-options.js.map +1 -1
- package/src/utils/normalize-cache.d.ts +11 -1
- package/src/utils/normalize-cache.js +6 -3
- package/src/utils/normalize-cache.js.map +1 -1
- package/src/utils/purge-cache.js +24 -13
- package/src/utils/purge-cache.js.map +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.d.ts +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +12 -9
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/utils.d.ts +8 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js +30 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js.map +1 -1
- package/src/utils/server-rendering/prerender.d.ts +2 -1
- package/src/utils/server-rendering/prerender.js +83 -30
- package/src/utils/server-rendering/prerender.js.map +1 -1
- package/src/utils/server-rendering/render-worker.d.ts +10 -5
- package/src/utils/server-rendering/render-worker.js +31 -7
- package/src/utils/server-rendering/render-worker.js.map +1 -1
- package/src/utils/test-files.d.ts +2 -2
- package/src/utils/test-files.js +3 -3
- package/src/utils/test-files.js.map +1 -1
- package/src/tools/angular/compilation/noop-compilation.d.ts +0 -15
- package/src/tools/angular/compilation/noop-compilation.js +0 -27
- package/src/tools/angular/compilation/noop-compilation.js.map +0 -1
- package/src/tools/sass/worker.d.ts +0 -63
- package/src/tools/sass/worker.js +0 -202
- package/src/tools/sass/worker.js.map +0 -1
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.d.ts +0 -0
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js +0 -0
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js.map +0 -0
|
@@ -12,29 +12,77 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.I18nInliner = void 0;
|
|
14
14
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
15
|
+
const node_module_1 = require("node:module");
|
|
15
16
|
const node_path_1 = require("node:path");
|
|
16
17
|
const node_v8_1 = require("node:v8");
|
|
17
18
|
const hash_1 = require("../../utils/hash");
|
|
18
19
|
const worker_pool_1 = require("../../utils/worker-pool");
|
|
19
20
|
const bundler_files_1 = require("./bundler-files");
|
|
20
21
|
const cache_1 = require("./cache");
|
|
22
|
+
const i18n_translation_encoder_1 = require("./i18n-translation-encoder");
|
|
23
|
+
// TODO: Convert to import.meta usage during ESM transition
|
|
24
|
+
const localRequire = (0, node_module_1.createRequire)(__filename);
|
|
25
|
+
const INLINER_WORKER_PATH = localRequire.resolve('./i18n-inliner-worker');
|
|
21
26
|
/**
|
|
22
27
|
* A keyword used to indicate if a JavaScript file may require inlining of translations.
|
|
23
28
|
* This keyword is used to avoid processing files that would not otherwise need i18n processing.
|
|
24
29
|
*/
|
|
25
30
|
const LOCALIZE_KEYWORD = '$localize';
|
|
31
|
+
/**
|
|
32
|
+
* The baseline number of locales to process concurrently in a single sliding window.
|
|
33
|
+
* This caps peak worker memory on low-core machines while maintaining multi-locale batching throughput.
|
|
34
|
+
*/
|
|
35
|
+
const DEFAULT_LOCALE_WINDOW_SIZE = 8;
|
|
36
|
+
/**
|
|
37
|
+
* Minimum byte size threshold for a file to be eligible for multi-batch sharding.
|
|
38
|
+
* Files below this threshold (< 100 KB) are processed in a single batch to minimize IPC overhead.
|
|
39
|
+
*/
|
|
40
|
+
const SMALL_FILE_FLOOR_BYTES = 100 * 1024;
|
|
41
|
+
/**
|
|
42
|
+
* Ratio of the maximum file size in a window to consider a file "dominant".
|
|
43
|
+
* Files within 70% of the largest file are sharded across all workers for maximum concurrency.
|
|
44
|
+
*/
|
|
45
|
+
const DOMINANT_FILE_RATIO = 0.7;
|
|
26
46
|
/**
|
|
27
47
|
* Serializes the translation messages for a locale for transfer to an inliner Worker.
|
|
28
48
|
*
|
|
29
|
-
* A
|
|
30
|
-
*
|
|
31
|
-
*
|
|
49
|
+
* A SharedArrayBuffer is preferred because it enables zero-copy shared memory access
|
|
50
|
+
* and on-demand string decoding across all worker threads. Falls back to a Blob when
|
|
51
|
+
* SharedArrayBuffer is unavailable.
|
|
32
52
|
*
|
|
33
53
|
* @param translation The translation messages for a locale, if the locale has any.
|
|
34
|
-
* @
|
|
54
|
+
* @param translationIntegrity Optional content hash of the translation file for cache lookup.
|
|
55
|
+
* @param translationCache Optional Cache instance for binary translation buffers.
|
|
56
|
+
* @returns A SharedArrayBuffer or Blob containing the serialized messages, or undefined if none.
|
|
35
57
|
*/
|
|
36
|
-
function serializeTranslation(translation) {
|
|
37
|
-
|
|
58
|
+
async function serializeTranslation(translation, translationIntegrity, translationCache) {
|
|
59
|
+
if (!translation) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
if (typeof SharedArrayBuffer !== 'undefined') {
|
|
63
|
+
if (translationIntegrity && translationCache) {
|
|
64
|
+
// Look up or generate binary translation data in the persistent cache.
|
|
65
|
+
// A Uint8Array view is stored in the cache store to allow binary persistence.
|
|
66
|
+
const binaryData = await translationCache.getOrCreate(translationIntegrity, () => {
|
|
67
|
+
return new Uint8Array((0, i18n_translation_encoder_1.encodeTranslationToBuffer)(translation));
|
|
68
|
+
});
|
|
69
|
+
// On a cache miss, getOrCreate returns the newly created Uint8Array backed by the
|
|
70
|
+
// original SharedArrayBuffer. Return it directly to avoid an unnecessary allocation and copy.
|
|
71
|
+
if (binaryData.buffer instanceof SharedArrayBuffer &&
|
|
72
|
+
binaryData.byteOffset === 0 &&
|
|
73
|
+
binaryData.byteLength === binaryData.buffer.byteLength) {
|
|
74
|
+
return binaryData.buffer;
|
|
75
|
+
}
|
|
76
|
+
// On a warm cache hit, the restored data is backed by a standard ArrayBuffer from disk.
|
|
77
|
+
// Copy it into a SharedArrayBuffer so worker threads can access it via zero-copy shared memory.
|
|
78
|
+
const buffer = new SharedArrayBuffer(binaryData.byteLength);
|
|
79
|
+
new Uint8Array(buffer).set(binaryData);
|
|
80
|
+
return buffer;
|
|
81
|
+
}
|
|
82
|
+
// When persistent caching is not configured, encode directly into a SharedArrayBuffer.
|
|
83
|
+
return (0, i18n_translation_encoder_1.encodeTranslationToBuffer)(translation);
|
|
84
|
+
}
|
|
85
|
+
return new Blob([(0, node_v8_1.serialize)(translation)]);
|
|
38
86
|
}
|
|
39
87
|
/**
|
|
40
88
|
* A class that performs i18n translation inlining of JavaScript code.
|
|
@@ -46,16 +94,23 @@ class I18nInliner {
|
|
|
46
94
|
options;
|
|
47
95
|
#cacheInitFailed = false;
|
|
48
96
|
#workerPool;
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
97
|
+
#cacheStore;
|
|
98
|
+
#transformedFileCache;
|
|
99
|
+
#translationCache;
|
|
100
|
+
#generation = 0;
|
|
52
101
|
constructor(options, maxThreads) {
|
|
53
102
|
this.options = options;
|
|
54
|
-
this.#
|
|
55
|
-
|
|
56
|
-
|
|
103
|
+
this.#workerPool = new worker_pool_1.WorkerPool({
|
|
104
|
+
maxThreads,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
#partitionFiles(files) {
|
|
108
|
+
const filenames = [];
|
|
109
|
+
const localizeFiles = new Map();
|
|
110
|
+
const localizeMaps = new Map();
|
|
111
|
+
const unmodifiedFiles = [];
|
|
57
112
|
const pendingMaps = [];
|
|
58
|
-
for (const file of
|
|
113
|
+
for (const file of files) {
|
|
59
114
|
if (file.type === bundler_files_1.BuildOutputFileType.Root || file.type === bundler_files_1.BuildOutputFileType.ServerRoot) {
|
|
60
115
|
// Skip also the server entry-point.
|
|
61
116
|
// Skip stats and similar files.
|
|
@@ -69,7 +124,8 @@ class I18nInliner {
|
|
|
69
124
|
: Buffer.from(file.contents.buffer, file.contents.byteOffset, file.contents.byteLength);
|
|
70
125
|
const hasLocalize = contentBuffer.includes(LOCALIZE_KEYWORD);
|
|
71
126
|
if (hasLocalize) {
|
|
72
|
-
|
|
127
|
+
localizeFiles.set(file.path, file);
|
|
128
|
+
filenames.push(file.path);
|
|
73
129
|
continue;
|
|
74
130
|
}
|
|
75
131
|
}
|
|
@@ -79,128 +135,279 @@ class I18nInliner {
|
|
|
79
135
|
pendingMaps.push(file);
|
|
80
136
|
continue;
|
|
81
137
|
}
|
|
82
|
-
|
|
138
|
+
unmodifiedFiles.push(file);
|
|
83
139
|
}
|
|
84
140
|
// Check if any pending map files should be processed by checking if the parent JS file is present
|
|
85
141
|
for (const file of pendingMaps) {
|
|
86
|
-
|
|
87
|
-
|
|
142
|
+
const jsPath = file.path.slice(0, -4);
|
|
143
|
+
if (localizeFiles.has(jsPath)) {
|
|
144
|
+
localizeMaps.set(jsPath, file);
|
|
88
145
|
}
|
|
89
146
|
else {
|
|
90
|
-
|
|
147
|
+
unmodifiedFiles.push(file);
|
|
91
148
|
}
|
|
92
149
|
}
|
|
93
|
-
|
|
94
|
-
this.#workerPool = new worker_pool_1.WorkerPool({
|
|
95
|
-
filename: require.resolve('./i18n-inliner-worker'),
|
|
96
|
-
maxThreads,
|
|
97
|
-
// Extract options to ensure only the named options are serialized and sent to the worker
|
|
98
|
-
workerData: {
|
|
99
|
-
missingTranslation,
|
|
100
|
-
shouldOptimize,
|
|
101
|
-
// A Blob is an immutable data structure that allows sharing the data between workers
|
|
102
|
-
// without copying until the data is actually used within a Worker. This is useful here
|
|
103
|
-
// since each file may not actually be processed in each Worker and the Blob avoids
|
|
104
|
-
// unneeded repeat copying of potentially large JavaScript files.
|
|
105
|
-
files: new Map(Array.from(files, ([name, file]) => [name, new Blob([file.contents])])),
|
|
106
|
-
},
|
|
107
|
-
});
|
|
150
|
+
return { filenames, localizeFiles, localizeMaps, unmodifiedFiles };
|
|
108
151
|
}
|
|
109
152
|
/**
|
|
110
|
-
* Performs inlining of translations
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* @param
|
|
116
|
-
* @
|
|
153
|
+
* Performs inlining of translations across multiple locales in parallel.
|
|
154
|
+
*
|
|
155
|
+
* An adaptive 2D task-partitioning algorithm distributes (files x locales) work units
|
|
156
|
+
* across all worker threads while caching AST metadata and sourcemaps in worker memory.
|
|
157
|
+
*
|
|
158
|
+
* @param files The build output files to transform.
|
|
159
|
+
* @param locales The locales and translations to inline.
|
|
160
|
+
* @returns A map of locale names to their inlined output files and diagnostics.
|
|
117
161
|
*/
|
|
118
|
-
async
|
|
162
|
+
async inlineAll(files, locales) {
|
|
119
163
|
await this.initCache();
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
164
|
+
const generation = ++this.#generation;
|
|
165
|
+
const { missingTranslation, localizeVersion } = this.options;
|
|
166
|
+
const localeList = Array.from(locales);
|
|
167
|
+
if (localeList.length === 0) {
|
|
168
|
+
return new Map();
|
|
169
|
+
}
|
|
170
|
+
const { filenames, localizeFiles, localizeMaps, unmodifiedFiles } = this.#partitionFiles(files);
|
|
171
|
+
const fileResultsByLocale = new Map();
|
|
172
|
+
for (const { locale } of localeList) {
|
|
173
|
+
(0, node_assert_1.default)(!fileResultsByLocale.has(locale), 'Duplicate locale provided to inliner: ' + locale);
|
|
174
|
+
fileResultsByLocale.set(locale, new Map());
|
|
175
|
+
}
|
|
176
|
+
// Process locales in sliding windows to cap peak worker memory.
|
|
177
|
+
// Ensure the window has at least enough locales to saturate all available workers on high-core machines.
|
|
178
|
+
const windowSize = Math.max(DEFAULT_LOCALE_WINDOW_SIZE, this.#workerPool.maxThreads || 1);
|
|
179
|
+
for (let i = 0; i < localeList.length; i += windowSize) {
|
|
180
|
+
const windowLocales = localeList.slice(i, i + windowSize);
|
|
181
|
+
const activeLocales = windowLocales.map((item) => item.locale);
|
|
182
|
+
const isLastWindow = i + windowSize >= localeList.length;
|
|
183
|
+
// Pre-calculate cache key bases and serialized Blobs for each locale in this window
|
|
184
|
+
const localeCacheBases = new Map();
|
|
185
|
+
const localeBlobs = new Map();
|
|
186
|
+
await Promise.all(windowLocales.map(async ({ locale, translation, translationIntegrity }) => {
|
|
187
|
+
const serialized = await serializeTranslation(translation, translationIntegrity, this.#translationCache);
|
|
188
|
+
localeBlobs.set(locale, serialized);
|
|
189
|
+
if (this.#cacheStore) {
|
|
190
|
+
localeCacheBases.set(locale, (0, hash_1.calculateHash)(JSON.stringify({
|
|
191
|
+
locale,
|
|
192
|
+
translation: translationIntegrity || translation,
|
|
193
|
+
missingTranslation,
|
|
194
|
+
localizeVersion,
|
|
195
|
+
})));
|
|
196
|
+
}
|
|
197
|
+
}));
|
|
198
|
+
const uncachedByFile = new Map();
|
|
199
|
+
if (this.#transformedFileCache) {
|
|
200
|
+
const cache = this.#transformedFileCache;
|
|
201
|
+
const cacheChecks = [];
|
|
202
|
+
for (const filename of filenames) {
|
|
203
|
+
const file = localizeFiles.get(filename);
|
|
204
|
+
(0, node_assert_1.default)(file !== undefined, 'Localize file must exist: ' + filename);
|
|
205
|
+
const fileEntriesPromises = windowLocales.map(async ({ locale }) => {
|
|
206
|
+
const fileCacheKeyBase = localeCacheBases.get(locale);
|
|
207
|
+
(0, node_assert_1.default)(fileCacheKeyBase !== undefined, 'Cache base must exist for locale: ' + locale);
|
|
208
|
+
const hasher = (0, hash_1.createContentHash)();
|
|
209
|
+
hasher.update(file.hash);
|
|
210
|
+
hasher.update(filename);
|
|
211
|
+
hasher.update(fileCacheKeyBase);
|
|
212
|
+
const cacheKey = hasher.digest();
|
|
213
|
+
try {
|
|
214
|
+
const result = await cache.get(cacheKey);
|
|
215
|
+
if (result) {
|
|
216
|
+
fileResultsByLocale.get(locale)?.set(filename, result);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch { }
|
|
221
|
+
return {
|
|
222
|
+
locale,
|
|
223
|
+
cacheKey,
|
|
224
|
+
translation: localeBlobs.get(locale),
|
|
225
|
+
};
|
|
226
|
+
});
|
|
227
|
+
cacheChecks.push(Promise.all(fileEntriesPromises).then((entries) => {
|
|
228
|
+
const filtered = entries.filter((e) => e !== undefined);
|
|
229
|
+
if (filtered.length > 0) {
|
|
230
|
+
uncachedByFile.set(filename, filtered);
|
|
231
|
+
}
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
await Promise.all(cacheChecks);
|
|
151
235
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
236
|
+
else {
|
|
237
|
+
for (const filename of filenames) {
|
|
238
|
+
uncachedByFile.set(filename, windowLocales.map(({ locale }) => ({
|
|
239
|
+
locale,
|
|
240
|
+
translation: localeBlobs.get(locale),
|
|
241
|
+
})));
|
|
155
242
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
243
|
+
}
|
|
244
|
+
// Adaptive 2D Sharding for uncached tasks in this window
|
|
245
|
+
if (uncachedByFile.size > 0) {
|
|
246
|
+
await this.#processUncachedBatches(localizeFiles, localizeMaps, uncachedByFile, fileResultsByLocale, activeLocales, isLastWindow, generation);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Assemble final results in deterministic order per locale
|
|
250
|
+
const resultsByLocale = new Map();
|
|
251
|
+
for (const { locale } of localeList) {
|
|
252
|
+
const fileResults = fileResultsByLocale.get(locale);
|
|
253
|
+
const outputFiles = [];
|
|
254
|
+
const errors = [];
|
|
255
|
+
const warnings = [];
|
|
256
|
+
if (fileResults) {
|
|
257
|
+
for (const filename of filenames) {
|
|
258
|
+
const originalFile = localizeFiles.get(filename);
|
|
259
|
+
(0, node_assert_1.default)(originalFile !== undefined, 'Localize file must exist: ' + filename);
|
|
260
|
+
const fileResult = fileResults.get(filename);
|
|
261
|
+
if (!fileResult) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const type = originalFile.type;
|
|
265
|
+
if (fileResult.code != undefined) {
|
|
266
|
+
outputFiles.push((0, bundler_files_1.createOutputFile)(filename, fileResult.code, type));
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
outputFiles.push(originalFile.clone());
|
|
270
|
+
}
|
|
271
|
+
const originalMap = localizeMaps.get(filename);
|
|
272
|
+
if (fileResult.map !== undefined) {
|
|
273
|
+
outputFiles.push((0, bundler_files_1.createOutputFile)(filename + '.map', fileResult.map, type));
|
|
274
|
+
}
|
|
275
|
+
else if (originalMap !== undefined) {
|
|
276
|
+
outputFiles.push(originalMap.clone());
|
|
277
|
+
}
|
|
278
|
+
for (const message of fileResult.messages) {
|
|
279
|
+
if (message.type === 'error') {
|
|
280
|
+
errors.push(message.message);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
warnings.push(message.message);
|
|
284
|
+
}
|
|
165
285
|
}
|
|
166
|
-
catch { }
|
|
167
286
|
}
|
|
168
|
-
|
|
287
|
+
}
|
|
288
|
+
// Include cloned unmodified files for every locale
|
|
289
|
+
outputFiles.push(...unmodifiedFiles.map((file) => file.clone()));
|
|
290
|
+
resultsByLocale.set(locale, {
|
|
291
|
+
outputFiles,
|
|
292
|
+
errors,
|
|
293
|
+
warnings,
|
|
169
294
|
});
|
|
170
|
-
requests.push(fileResult);
|
|
171
295
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
296
|
+
return resultsByLocale;
|
|
297
|
+
}
|
|
298
|
+
async #processUncachedBatches(localizeFiles, localizeMaps, uncachedByFile, fileResultsByLocale, activeLocales, isLastWindow = true, generation) {
|
|
299
|
+
const workerCount = this.#workerPool.maxThreads || 1;
|
|
300
|
+
// Extract file data and identify the heaviest file size in a single pass
|
|
301
|
+
let maxFileSize = 0;
|
|
302
|
+
const sortedFiles = Array.from(uncachedByFile, ([filename, entries]) => {
|
|
303
|
+
const codeFile = localizeFiles.get(filename);
|
|
304
|
+
(0, node_assert_1.default)(codeFile !== undefined, 'Localize file must exist: ' + filename);
|
|
305
|
+
const fileSize = codeFile.contents.byteLength;
|
|
306
|
+
if (fileSize > maxFileSize) {
|
|
307
|
+
maxFileSize = fileSize;
|
|
308
|
+
}
|
|
309
|
+
return { filename, entries, codeFile, fileSize };
|
|
310
|
+
});
|
|
311
|
+
// Sort files descending by byte size (Longest Processing Time First / LPT).
|
|
312
|
+
// Heavy files (e.g. main.js) are queued first to saturate all worker threads immediately,
|
|
313
|
+
// while small files act as gap fillers near the window barrier to prevent tail stragglers.
|
|
314
|
+
sortedFiles.sort((a, b) => b.fileSize - a.fileSize);
|
|
315
|
+
const workerTasks = [];
|
|
316
|
+
for (const { filename, entries, codeFile, fileSize } of sortedFiles) {
|
|
317
|
+
const mapFile = localizeMaps.get(filename);
|
|
318
|
+
const codeBlob = new Blob([codeFile.contents]);
|
|
319
|
+
const mapBlob = mapFile ? new Blob([mapFile.contents]) : undefined;
|
|
320
|
+
let localesPerBatch;
|
|
321
|
+
if (uncachedByFile.size === 1) {
|
|
322
|
+
// Single file in window: shard across all workers to avoid idle threads
|
|
323
|
+
localesPerBatch = Math.max(1, Math.ceil(entries.length / workerCount));
|
|
324
|
+
}
|
|
325
|
+
else if (fileSize < SMALL_FILE_FLOOR_BYTES) {
|
|
326
|
+
// Small chunks (< 100 KB): process all locales in 1 batch to eliminate IPC overhead
|
|
327
|
+
localesPerBatch = entries.length;
|
|
328
|
+
}
|
|
329
|
+
else if (fileSize >= maxFileSize * DOMINANT_FILE_RATIO) {
|
|
330
|
+
// Dominant file(s): shard across all workers for maximum multi-core parallelism
|
|
331
|
+
localesPerBatch = Math.max(1, Math.ceil(entries.length / workerCount));
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
// Intermediate files: moderate sharding
|
|
335
|
+
localesPerBatch = Math.max(1, Math.ceil(entries.length / 2));
|
|
336
|
+
}
|
|
337
|
+
const ephemeral = isLastWindow && entries.length <= localesPerBatch;
|
|
338
|
+
for (let i = 0; i < entries.length; i += localesPerBatch) {
|
|
339
|
+
const batchEntries = entries.slice(i, i + localesPerBatch);
|
|
340
|
+
const task = (async () => {
|
|
341
|
+
const batchResult = await this.#runWorkerTask('inlineFileBatch', {
|
|
342
|
+
filename,
|
|
343
|
+
code: codeBlob,
|
|
344
|
+
map: mapBlob,
|
|
345
|
+
locales: new Map(batchEntries.map((e) => [e.locale, e.translation])),
|
|
346
|
+
missingTranslation: this.options.missingTranslation,
|
|
347
|
+
ephemeral,
|
|
348
|
+
activeLocales,
|
|
349
|
+
generation,
|
|
350
|
+
});
|
|
351
|
+
if (batchResult.unmodified) {
|
|
352
|
+
const unmodifiedResult = {
|
|
353
|
+
file: filename,
|
|
354
|
+
messages: batchResult.messages,
|
|
355
|
+
};
|
|
356
|
+
const cachePromises = [];
|
|
357
|
+
for (const { locale, cacheKey } of batchEntries) {
|
|
358
|
+
fileResultsByLocale.get(locale)?.set(filename, unmodifiedResult);
|
|
359
|
+
if (this.#transformedFileCache && cacheKey) {
|
|
360
|
+
cachePromises.push(this.#transformedFileCache.put(cacheKey, unmodifiedResult));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
await Promise.allSettled(cachePromises);
|
|
188
364
|
}
|
|
189
365
|
else {
|
|
190
|
-
|
|
366
|
+
const cachePromises = [];
|
|
367
|
+
for (const res of batchResult.results) {
|
|
368
|
+
const matchingEntry = batchEntries.find((e) => e.locale === res.locale);
|
|
369
|
+
const cacheKey = matchingEntry?.cacheKey;
|
|
370
|
+
const fileResult = {
|
|
371
|
+
file: filename,
|
|
372
|
+
code: res.code,
|
|
373
|
+
map: res.map,
|
|
374
|
+
messages: res.messages,
|
|
375
|
+
};
|
|
376
|
+
if (this.#transformedFileCache && cacheKey) {
|
|
377
|
+
cachePromises.push(this.#transformedFileCache.put(cacheKey, fileResult));
|
|
378
|
+
}
|
|
379
|
+
fileResultsByLocale.get(res.locale)?.set(filename, fileResult);
|
|
380
|
+
}
|
|
381
|
+
await Promise.allSettled(cachePromises);
|
|
191
382
|
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
383
|
+
})();
|
|
384
|
+
workerTasks.push(task);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
await Promise.all(workerTasks);
|
|
388
|
+
}
|
|
389
|
+
#runWorkerTask(name, request) {
|
|
390
|
+
return this.#workerPool.run(request, {
|
|
391
|
+
filename: INLINER_WORKER_PATH,
|
|
392
|
+
name,
|
|
393
|
+
});
|
|
202
394
|
}
|
|
203
|
-
|
|
395
|
+
/**
|
|
396
|
+
* Performs inlining of translations for the provided locale and translations.
|
|
397
|
+
*
|
|
398
|
+
* @param files The build output files to transform.
|
|
399
|
+
* @param locale The string representing the locale to inline.
|
|
400
|
+
* @param translation The translation messages to use when inlining.
|
|
401
|
+
* @param translationIntegrity An optional integrity value for the translation messages to use for caching.
|
|
402
|
+
* @returns A promise that resolves to an array of OutputFiles representing a translated result.
|
|
403
|
+
*/
|
|
404
|
+
async inlineForLocale(files, locale, translation, translationIntegrity) {
|
|
405
|
+
const results = await this.inlineAll(files, [{ locale, translation, translationIntegrity }]);
|
|
406
|
+
const result = results.get(locale);
|
|
407
|
+
(0, node_assert_1.default)(result !== undefined, `Result for locale '${locale}' should be present.`);
|
|
408
|
+
return result;
|
|
409
|
+
}
|
|
410
|
+
async inlineTemplateUpdate(locale, translation, templateCode, templateId, translationIntegrity) {
|
|
204
411
|
const hasLocalize = templateCode.includes(LOCALIZE_KEYWORD);
|
|
205
412
|
if (!hasLocalize) {
|
|
206
413
|
return {
|
|
@@ -209,12 +416,13 @@ class I18nInliner {
|
|
|
209
416
|
warnings: [],
|
|
210
417
|
};
|
|
211
418
|
}
|
|
212
|
-
const { output, messages } = await this.#
|
|
419
|
+
const { output, messages } = await this.#runWorkerTask('inlineCode', {
|
|
213
420
|
code: templateCode,
|
|
214
421
|
filename: templateId,
|
|
215
422
|
locale,
|
|
216
|
-
|
|
217
|
-
|
|
423
|
+
missingTranslation: this.options.missingTranslation,
|
|
424
|
+
translation: await serializeTranslation(translation, translationIntegrity, this.#translationCache),
|
|
425
|
+
});
|
|
218
426
|
const errors = [];
|
|
219
427
|
const warnings = [];
|
|
220
428
|
for (const message of messages) {
|
|
@@ -236,7 +444,7 @@ class I18nInliner {
|
|
|
236
444
|
* @returns A void promise that resolves when closing is complete.
|
|
237
445
|
*/
|
|
238
446
|
async close() {
|
|
239
|
-
await Promise.allSettled([this.#
|
|
447
|
+
await Promise.allSettled([this.#cacheStore?.close(), this.#workerPool.destroy()]);
|
|
240
448
|
}
|
|
241
449
|
/**
|
|
242
450
|
* Initializes the cache for storing translated bundles.
|
|
@@ -245,7 +453,7 @@ class I18nInliner {
|
|
|
245
453
|
* @returns A promise that resolves once the cache initialization process is complete.
|
|
246
454
|
*/
|
|
247
455
|
async initCache() {
|
|
248
|
-
if (this.#
|
|
456
|
+
if (this.#cacheStore || this.#cacheInitFailed) {
|
|
249
457
|
return;
|
|
250
458
|
}
|
|
251
459
|
const { persistentCachePath } = this.options;
|
|
@@ -255,7 +463,13 @@ class I18nInliner {
|
|
|
255
463
|
}
|
|
256
464
|
// Initialize a persistent cache for i18n transformations.
|
|
257
465
|
try {
|
|
258
|
-
|
|
466
|
+
const [, cacheStore] = await Promise.all([
|
|
467
|
+
(0, hash_1.initializeHash)(),
|
|
468
|
+
(0, cache_1.createPersistentCacheStore)((0, node_path_1.join)(persistentCachePath, 'angular-i18n')),
|
|
469
|
+
]);
|
|
470
|
+
this.#cacheStore = cacheStore;
|
|
471
|
+
this.#transformedFileCache = cacheStore.createCache('transforms');
|
|
472
|
+
this.#translationCache = cacheStore.createCache('translations');
|
|
259
473
|
}
|
|
260
474
|
catch {
|
|
261
475
|
this.#cacheInitFailed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-inliner.js","sourceRoot":"","sources":["i18n-inliner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18n-inliner.js","sourceRoot":"","sources":["i18n-inliner.ts"],"names":[],"mappings":"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"}
|