@angular/build 22.2.0-next.2 → 22.2.0-next.3
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 +10 -8
- package/src/builders/application/build-action.js +14 -3
- package/src/builders/application/build-action.js.map +1 -1
- package/src/builders/application/chunk-optimizer.js +1 -0
- package/src/builders/application/chunk-optimizer.js.map +1 -1
- package/src/builders/application/execute-build.js +2 -1
- package/src/builders/application/execute-build.js.map +1 -1
- package/src/builders/application/setup-bundling.js +2 -2
- package/src/builders/application/setup-bundling.js.map +1 -1
- package/src/builders/dev-server/internal.d.ts +1 -1
- package/src/builders/dev-server/internal.js +2 -2
- package/src/builders/dev-server/internal.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +6 -2
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/unit-test/options.js +1 -1
- package/src/builders/unit-test/options.js.map +1 -1
- package/src/builders/unit-test/test-discovery.js +3 -2
- package/src/builders/unit-test/test-discovery.js.map +1 -1
- package/src/private.d.ts +1 -1
- package/src/private.js +2 -2
- package/src/private.js.map +1 -1
- package/src/tools/angular/angular-host.js +3 -3
- package/src/tools/angular/angular-host.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.js +2 -0
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/linker/oxc-linker.d.ts +2 -1
- package/src/tools/angular/linker/oxc-linker.js +2 -10
- package/src/tools/angular/linker/oxc-linker.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +4 -7
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.js +5 -6
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
- package/src/tools/esbuild/application-code-bundle.js +2 -2
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/bundler-files.js +3 -5
- package/src/tools/esbuild/bundler-files.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner-worker.d.ts +8 -4
- package/src/tools/esbuild/i18n-inliner-worker.js +40 -7
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner.js +37 -10
- package/src/tools/esbuild/i18n-inliner.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer-worker.d.ts +0 -4
- package/src/tools/esbuild/javascript-transformer-worker.js +105 -54
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer.d.ts +1 -1
- package/src/tools/esbuild/javascript-transformer.js +63 -37
- package/src/tools/esbuild/javascript-transformer.js.map +1 -1
- package/src/tools/esbuild/persistent-load-result-cache.js +11 -13
- package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -1
- package/src/tools/esbuild/sqlite-cache-store.js +51 -1
- package/src/tools/esbuild/sqlite-cache-store.js.map +1 -1
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js +4 -8
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js.map +1 -1
- package/src/tools/esbuild/target.d.ts +29 -0
- package/src/tools/esbuild/target.js +105 -0
- package/src/tools/esbuild/target.js.map +1 -0
- package/src/tools/esbuild/utils.d.ts +0 -10
- package/src/tools/esbuild/utils.js +0 -58
- package/src/tools/esbuild/utils.js.map +1 -1
- package/src/tools/esbuild/watcher.d.ts +21 -2
- package/src/tools/esbuild/watcher.js +483 -60
- package/src/tools/esbuild/watcher.js.map +1 -1
- package/src/tools/oxc/oxc-transform.d.ts +2 -1
- package/src/tools/oxc/oxc-transform.js +5 -16
- package/src/tools/oxc/oxc-transform.js.map +1 -1
- package/src/tools/sass/rebasing-importer.d.ts +5 -5
- package/src/tools/sass/rebasing-importer.js +5 -2
- package/src/tools/sass/rebasing-importer.js.map +1 -1
- package/src/tools/sass/worker.d.ts +1 -1
- package/src/tools/sass/worker.js.map +1 -1
- package/src/tools/vite/middlewares/assets-middleware.js +3 -3
- package/src/tools/vite/middlewares/assets-middleware.js.map +1 -1
- package/src/tools/vite/utils.d.ts +2 -1
- package/src/tools/vite/utils.js +2 -1
- package/src/tools/vite/utils.js.map +1 -1
- package/src/utils/bundle-calculator.js +12 -3
- package/src/utils/bundle-calculator.js.map +1 -1
- package/src/utils/hash.d.ts +24 -0
- package/src/utils/hash.js +94 -0
- package/src/utils/hash.js.map +1 -0
- package/src/utils/index-file/inline-critical-css.js +153 -109
- package/src/utils/index-file/inline-critical-css.js.map +1 -1
- package/src/utils/normalize-cache.js +1 -1
- package/src/utils/server-rendering/manifest.js +9 -4
- package/src/utils/server-rendering/manifest.js.map +1 -1
- package/src/utils/source-map.d.ts +26 -2
- package/src/utils/source-map.js +172 -85
- package/src/utils/source-map.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-inliner-worker.js","sourceRoot":"","sources":["i18n-inliner-worker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"i18n-inliner-worker.js","sourceRoot":"","sources":["i18n-inliner-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,9 @@ 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_crypto_1 = require("node:crypto");
|
|
16
15
|
const node_path_1 = require("node:path");
|
|
16
|
+
const node_v8_1 = require("node:v8");
|
|
17
|
+
const hash_1 = require("../../utils/hash");
|
|
17
18
|
const worker_pool_1 = require("../../utils/worker-pool");
|
|
18
19
|
const bundler_files_1 = require("./bundler-files");
|
|
19
20
|
const cache_1 = require("./cache");
|
|
@@ -22,6 +23,19 @@ const cache_1 = require("./cache");
|
|
|
22
23
|
* This keyword is used to avoid processing files that would not otherwise need i18n processing.
|
|
23
24
|
*/
|
|
24
25
|
const LOCALIZE_KEYWORD = '$localize';
|
|
26
|
+
/**
|
|
27
|
+
* Serializes the translation messages for a locale for transfer to an inliner Worker.
|
|
28
|
+
*
|
|
29
|
+
* A Blob is used because cloning one shares its data by reference, whereas sending the messages
|
|
30
|
+
* themselves copies them into a Worker for every request that carries them. A locale can contain
|
|
31
|
+
* tens of thousands of messages, which makes that copy the dominant cost of inlining a locale.
|
|
32
|
+
*
|
|
33
|
+
* @param translation The translation messages for a locale, if the locale has any.
|
|
34
|
+
* @returns A Blob containing the serialized messages, or undefined if the locale has none.
|
|
35
|
+
*/
|
|
36
|
+
function serializeTranslation(translation) {
|
|
37
|
+
return translation && new Blob([(0, node_v8_1.serialize)(translation)]);
|
|
38
|
+
}
|
|
25
39
|
/**
|
|
26
40
|
* A class that performs i18n translation inlining of JavaScript code.
|
|
27
41
|
* A worker pool is used to distribute the transformation actions and allow
|
|
@@ -103,6 +117,8 @@ class I18nInliner {
|
|
|
103
117
|
async inlineForLocale(locale, translation) {
|
|
104
118
|
await this.initCache();
|
|
105
119
|
const { shouldOptimize, missingTranslation } = this.options;
|
|
120
|
+
// Serialized once here and then shared by the request for every file of this locale
|
|
121
|
+
const translationBlob = serializeTranslation(translation);
|
|
106
122
|
// Request inlining for each file that contains localize calls
|
|
107
123
|
const requests = [];
|
|
108
124
|
let fileCacheKeyBase;
|
|
@@ -113,14 +129,16 @@ class I18nInliner {
|
|
|
113
129
|
}
|
|
114
130
|
let cacheResultPromise = Promise.resolve(null);
|
|
115
131
|
if (this.#cache) {
|
|
116
|
-
|
|
132
|
+
// The options are digested here so that each file's key is derived from a fixed number
|
|
133
|
+
// of bytes. Hashing the options directly would re-hash the full set of messages, which
|
|
134
|
+
// can be several megabytes, once for every file.
|
|
135
|
+
fileCacheKeyBase ??= (0, hash_1.calculateHash)(JSON.stringify({ locale, translation, missingTranslation, shouldOptimize }));
|
|
117
136
|
// NOTE: If additional options are added, this may need to be updated.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.digest('hex');
|
|
137
|
+
const hasher = (0, hash_1.createContentHash)();
|
|
138
|
+
hasher.update(file.hash);
|
|
139
|
+
hasher.update(filename);
|
|
140
|
+
hasher.update(fileCacheKeyBase);
|
|
141
|
+
cacheKey = hasher.digest();
|
|
124
142
|
// Failure to get the value should not fail the transform
|
|
125
143
|
cacheResultPromise = this.#cache.get(cacheKey).catch(() => null);
|
|
126
144
|
}
|
|
@@ -128,7 +146,11 @@ class I18nInliner {
|
|
|
128
146
|
if (cachedResult) {
|
|
129
147
|
return cachedResult;
|
|
130
148
|
}
|
|
131
|
-
const result = await this.#workerPool.run({
|
|
149
|
+
const result = await this.#workerPool.run({
|
|
150
|
+
filename,
|
|
151
|
+
locale,
|
|
152
|
+
translation: translationBlob,
|
|
153
|
+
});
|
|
132
154
|
if (this.#cache && cacheKey) {
|
|
133
155
|
try {
|
|
134
156
|
// Failure to set the value should not fail the transform
|
|
@@ -180,7 +202,12 @@ class I18nInliner {
|
|
|
180
202
|
warnings: [],
|
|
181
203
|
};
|
|
182
204
|
}
|
|
183
|
-
const { output, messages } = await this.#workerPool.run({
|
|
205
|
+
const { output, messages } = await this.#workerPool.run({
|
|
206
|
+
code: templateCode,
|
|
207
|
+
filename: templateId,
|
|
208
|
+
locale,
|
|
209
|
+
translation: serializeTranslation(translation),
|
|
210
|
+
}, { name: 'inlineCode' });
|
|
184
211
|
const errors = [];
|
|
185
212
|
const warnings = [];
|
|
186
213
|
for (const message of messages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-inliner.js","sourceRoot":"","sources":["i18n-inliner.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,8DAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"i18n-inliner.js","sourceRoot":"","sources":["i18n-inliner.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,8DAAiC;AACjC,yCAA0C;AAC1C,qCAAoC;AACpC,2CAAoE;AACpE,yDAAqD;AACrD,mDAA8F;AAC9F,mCAAgF;AAEhF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,WAAgD;IAC5E,OAAO,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,IAAA,mBAAS,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAYD;;;;;GAKG;AACH,MAAa,WAAW;IAQH;IAPnB,gBAAgB,GAAG,KAAK,CAAC;IACzB,WAAW,CAAa;IACxB,MAAM,CAAmC;IAChC,cAAc,CAAuC;IACrD,gBAAgB,CAAyB;IAElD,YACmB,OAA2B,EAC5C,UAAmB;QADF,YAAO,GAAP,OAAO,CAAoB;QAG5C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;QACpE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEjD,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmB,CAAC,UAAU,EAAE,CAAC;gBAC3F,oCAAoC;gBACpC,gCAAgC;gBAChC,SAAS;YACX,CAAC;YAED,MAAM,aAAa,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;gBACxD,qCAAqC;gBACrC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAClD,CAAC,CAAC,IAAI,CAAC,QAAQ;oBACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC1F,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAE7D,IAAI,WAAW,EAAE,CAAC;oBAChB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAE3B,SAAS;gBACX,CAAC;YACH,CAAC;iBAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;gBACpC,sFAAsF;gBACtF,6EAA6E;gBAC7E,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,kGAAkG;QAClG,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAE5B,IAAI,CAAC,WAAW,GAAG,IAAI,wBAAU,CAAC;YAChC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC;YAClD,UAAU;YACV,yFAAyF;YACzF,UAAU,EAAE;gBACV,kBAAkB;gBAClB,cAAc;gBACd,qFAAqF;gBACrF,uFAAuF;gBACvF,mFAAmF;gBACnF,iEAAiE;gBACjE,KAAK,EAAE,IAAI,GAAG,CACZ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACvE;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,WAAgD;QAEhD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEvB,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5D,oFAAoF;QACpF,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAE1D,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,IAAI,gBAAoC,CAAC;QAEzC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACnD,IAAI,QAA4B,CAAC;YACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,IAAI,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,uFAAuF;gBACvF,uFAAuF;gBACvF,iDAAiD;gBACjD,gBAAgB,KAAK,IAAA,oBAAa,EAChC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC,CAC5E,CAAC;gBAEF,sEAAsE;gBACtE,MAAM,MAAM,GAAG,IAAA,wBAAiB,GAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACxB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAChC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAE3B,yDAAyD;gBACzD,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;gBAChE,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,YAAY,CAAC;gBACtB,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;oBACxC,QAAQ;oBACR,MAAM;oBACN,WAAW,EAAE,eAAe;iBAC7B,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,yDAAyD;wBACzD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAC1C,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,yCAAyC;QACzC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE/C,8EAA8E;QAC9E,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG;YAClB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACtD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;gBACjD,IAAA,qBAAM,EAAC,IAAI,KAAK,SAAS,EAAE,0CAA0C,GAAG,IAAI,CAAC,CAAC;gBAE9E,MAAM,WAAW,GAAG,CAAC,IAAA,gCAAgB,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACzD,IAAI,GAAG,EAAE,CAAC;oBACR,WAAW,CAAC,IAAI,CAAC,IAAA,gCAAgB,EAAC,IAAI,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBAED,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC;YACF,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;SACrD,CAAC;QAEF,OAAO;YACL,WAAW;YACX,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,MAAc,EACd,WAAgD,EAChD,YAAoB,EACpB,UAAkB;QAElB,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAE5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CACrD;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,UAAU;YACpB,MAAM;YACN,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;SAC/C,EACD,EAAE,IAAI,EAAE,YAAY,EAAE,CACvB,CAAC;QAEF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,SAAS;QACrB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7C,sEAAsE;QACtE,IAAI,CAAC,mBAAmB,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,MAAM,IAAA,kCAA0B,EAAC,IAAA,gBAAI,EAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,kDAAkD;gBAChD,gFAAgF,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAzQD,kCAyQC"}
|
|
@@ -8,12 +8,8 @@
|
|
|
8
8
|
interface JavaScriptTransformRequest {
|
|
9
9
|
filename: string;
|
|
10
10
|
data: string | Uint8Array;
|
|
11
|
-
sourcemap: boolean;
|
|
12
|
-
thirdPartySourcemaps: boolean;
|
|
13
|
-
advancedOptimizations: boolean;
|
|
14
11
|
skipLinker?: boolean;
|
|
15
12
|
sideEffects?: boolean;
|
|
16
|
-
jit: boolean;
|
|
17
13
|
instrumentForCoverage?: boolean;
|
|
18
14
|
}
|
|
19
15
|
export default function transformJavaScript(request: JavaScriptTransformRequest): Promise<unknown>;
|
|
@@ -44,20 +44,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
44
44
|
};
|
|
45
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
46
|
exports.default = transformJavaScript;
|
|
47
|
+
const remapping_1 = __importDefault(require("@ampproject/remapping"));
|
|
47
48
|
const core_1 = require("@babel/core");
|
|
48
49
|
const node_module_1 = require("node:module");
|
|
50
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
49
51
|
const piscina_1 = __importDefault(require("piscina"));
|
|
50
52
|
const environment_options_js_1 = require("../../utils/environment-options.js");
|
|
51
53
|
const source_map_1 = require("../../utils/source-map");
|
|
54
|
+
const oxc_linker_js_1 = require("../angular/linker/oxc-linker.js");
|
|
55
|
+
const oxc_transform_js_1 = require("../oxc/oxc-transform.js");
|
|
56
|
+
const { sourcemap = false, thirdPartySourcemaps = false, advancedOptimizations = false, jit = false, } = (node_worker_threads_1.workerData || {});
|
|
52
57
|
const textDecoder = new TextDecoder();
|
|
53
58
|
const textEncoder = new TextEncoder();
|
|
54
|
-
/**
|
|
55
|
-
* The function name prefix for all Angular partial compilation functions.
|
|
56
|
-
* Used to determine if linking of a JavaScript file is required.
|
|
57
|
-
* If any additional declarations are added or otherwise changed in the linker,
|
|
58
|
-
* the names MUST begin with this prefix.
|
|
59
|
-
*/
|
|
60
|
-
const LINKER_DECLARATION_PREFIX = 'ɵɵngDeclare';
|
|
61
59
|
async function instrumentCoverage(filename, data, useInputSourcemap) {
|
|
62
60
|
try {
|
|
63
61
|
let resolvedPath = 'istanbul-lib-instrument';
|
|
@@ -75,12 +73,13 @@ async function instrumentCoverage(filename, data, useInputSourcemap) {
|
|
|
75
73
|
});
|
|
76
74
|
const inputSourceMap = useInputSourcemap ? (0, source_map_1.loadInputSourceMap)(filename, data) : undefined;
|
|
77
75
|
const instrumentedCode = instrumenter.instrumentSync(data, filename, inputSourceMap);
|
|
78
|
-
const lastMap =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
const lastMap = useInputSourcemap
|
|
77
|
+
? instrumenter.lastSourceMap()
|
|
78
|
+
: undefined;
|
|
79
|
+
return {
|
|
80
|
+
code: instrumentedCode,
|
|
81
|
+
map: lastMap ?? undefined,
|
|
82
|
+
};
|
|
84
83
|
}
|
|
85
84
|
catch (error) {
|
|
86
85
|
throw new Error(`The 'istanbul-lib-instrument' package is required for code coverage but was not found. Please install the package.`, { cause: error });
|
|
@@ -88,22 +87,71 @@ async function instrumentCoverage(filename, data, useInputSourcemap) {
|
|
|
88
87
|
}
|
|
89
88
|
async function transformJavaScript(request) {
|
|
90
89
|
const { filename, data, ...options } = request;
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
const useInputSourcemap = sourcemap && (!!thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
|
|
91
|
+
let textData;
|
|
92
|
+
let inputSourceMap;
|
|
93
|
+
let isAlreadyStripped = false;
|
|
94
|
+
if (typeof data !== 'string') {
|
|
95
|
+
const trailing = (0, source_map_1.findTrailingSourceMapComment)(data);
|
|
96
|
+
if (trailing === null) {
|
|
97
|
+
// 0 comments: fast path, no sourcemap to load or strip
|
|
98
|
+
textData = textDecoder.decode(data);
|
|
99
|
+
isAlreadyStripped = true;
|
|
100
|
+
}
|
|
101
|
+
else if (trailing !== undefined) {
|
|
102
|
+
if (useInputSourcemap) {
|
|
103
|
+
inputSourceMap = (0, source_map_1.loadInputSourceMapFromUrl)(filename, trailing.urlLine);
|
|
104
|
+
if (inputSourceMap !== undefined) {
|
|
105
|
+
// Valid trailing sourcemap comment confirmed: safe to slice code buffer for transformation passes.
|
|
106
|
+
// Note: If no passes modify the code, the untouched original `data` buffer is returned below.
|
|
107
|
+
textData = textDecoder.decode(trailing.code);
|
|
108
|
+
isAlreadyStripped = true;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Not a valid trailing sourcemap (e.g. inside template literal): fallback to full decode
|
|
112
|
+
textData = textDecoder.decode(data);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if ((0, source_map_1.isTrailingSourceMapComment)(trailing.urlLine)) {
|
|
116
|
+
// Valid trailing sourcemap comment confirmed: safe to slice code buffer
|
|
117
|
+
textData = textDecoder.decode(trailing.code);
|
|
118
|
+
isAlreadyStripped = true;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Fallback to full decode and state-machine stripping
|
|
122
|
+
textData = textDecoder.decode(data);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Multiple comments or comment not at line start: fall back to full decode and string parser
|
|
127
|
+
textData = textDecoder.decode(data);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
textData = data;
|
|
132
|
+
}
|
|
133
|
+
const transformedData = await transformJavaScriptImpl(filename, textData, {
|
|
134
|
+
...options,
|
|
135
|
+
inputSourceMap,
|
|
136
|
+
isAlreadyStripped,
|
|
137
|
+
});
|
|
138
|
+
// If no transformations modified the code, return the original untouched data buffer via `move`.
|
|
139
|
+
// This preserves any original trailing sourcemap comment and avoids re-encoding.
|
|
140
|
+
if (transformedData === textData && typeof data !== 'string') {
|
|
141
|
+
return piscina_1.default.move(data);
|
|
142
|
+
}
|
|
94
143
|
return piscina_1.default.move(textEncoder.encode(transformedData));
|
|
95
144
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Cached instance of the OXC linker module.
|
|
98
|
-
*/
|
|
99
|
-
let oxcLinkerModule;
|
|
100
145
|
async function transformJavaScriptImpl(filename, data, options) {
|
|
101
|
-
const shouldLink = !options.skipLinker
|
|
102
|
-
const useInputSourcemap =
|
|
103
|
-
(!!options.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
|
|
146
|
+
const shouldLink = !options.skipLinker;
|
|
147
|
+
const useInputSourcemap = sourcemap && (!!thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
|
|
104
148
|
let code = data;
|
|
149
|
+
const maps = [];
|
|
150
|
+
let coverageMap;
|
|
105
151
|
if (options.instrumentForCoverage) {
|
|
106
|
-
|
|
152
|
+
const result = await instrumentCoverage(filename, code, useInputSourcemap);
|
|
153
|
+
code = result.code;
|
|
154
|
+
coverageMap = result.map;
|
|
107
155
|
}
|
|
108
156
|
if (shouldLink) {
|
|
109
157
|
if (environment_options_js_1.useBabelLinker) {
|
|
@@ -111,8 +159,8 @@ async function transformJavaScriptImpl(filename, data, options) {
|
|
|
111
159
|
const { ConsoleLogger, LogLevel } = await Promise.resolve().then(() => __importStar(require('@angular/compiler-cli')));
|
|
112
160
|
const result = await (0, core_1.transformAsync)(code, {
|
|
113
161
|
filename,
|
|
114
|
-
inputSourceMap:
|
|
115
|
-
sourceMaps: useInputSourcemap
|
|
162
|
+
inputSourceMap: false,
|
|
163
|
+
sourceMaps: !!useInputSourcemap,
|
|
116
164
|
compact: false,
|
|
117
165
|
configFile: false,
|
|
118
166
|
babelrc: false,
|
|
@@ -127,60 +175,63 @@ async function transformJavaScriptImpl(filename, data, options) {
|
|
|
127
175
|
relative: (_from, to) => to,
|
|
128
176
|
},
|
|
129
177
|
logger: new ConsoleLogger(LogLevel.info),
|
|
130
|
-
linkerJitMode:
|
|
178
|
+
linkerJitMode: jit,
|
|
131
179
|
// This is a workaround until https://github.com/angular/angular/issues/42769 is fixed.
|
|
132
180
|
sourceMapping: false,
|
|
133
181
|
}),
|
|
134
182
|
],
|
|
135
183
|
});
|
|
136
184
|
code = result?.code ?? code;
|
|
185
|
+
if (result?.map) {
|
|
186
|
+
maps.push(result.map);
|
|
187
|
+
}
|
|
137
188
|
}
|
|
138
189
|
else {
|
|
139
|
-
|
|
140
|
-
const result = oxcLinkerModule.linkWithOxc(filename, code, {
|
|
190
|
+
const result = (0, oxc_linker_js_1.linkWithOxc)(filename, code, {
|
|
141
191
|
sourcemap: useInputSourcemap,
|
|
142
|
-
jit
|
|
192
|
+
jit,
|
|
143
193
|
skipCheck: true,
|
|
144
194
|
});
|
|
145
195
|
code = result.code;
|
|
146
|
-
if (
|
|
147
|
-
|
|
148
|
-
const base64Map = Buffer.from(result.map).toString('base64');
|
|
149
|
-
code += `\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
|
|
196
|
+
if (result.map) {
|
|
197
|
+
maps.push(result.map);
|
|
150
198
|
}
|
|
151
199
|
}
|
|
152
200
|
}
|
|
153
201
|
// Run advanced optimizations using our fast oxc-transform
|
|
154
|
-
if (
|
|
155
|
-
const { transform } = await Promise.resolve().then(() => __importStar(require('../oxc/oxc-transform.js')));
|
|
202
|
+
if (advancedOptimizations) {
|
|
156
203
|
const sideEffectFree = options.sideEffects === false;
|
|
157
204
|
const safeAngularPackage = sideEffectFree && /[\\/]node_modules[\\/]@angular[\\/]/.test(filename);
|
|
158
205
|
const topLevelSafeMode = !safeAngularPackage;
|
|
159
|
-
const result = transform(filename, code, {
|
|
206
|
+
const result = (0, oxc_transform_js_1.transform)(filename, code, {
|
|
160
207
|
sourcemap: useInputSourcemap,
|
|
161
208
|
sideEffects: options.sideEffects,
|
|
162
209
|
topLevelSafeMode,
|
|
163
210
|
});
|
|
164
211
|
code = result.code;
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
code = (0, source_map_1.removeSourceMappingURL)(code);
|
|
168
|
-
const base64Map = Buffer.from(result.map).toString('base64');
|
|
169
|
-
code += `\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
|
|
212
|
+
if (result.map) {
|
|
213
|
+
maps.push(result.map);
|
|
170
214
|
}
|
|
171
215
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
216
|
+
if (useInputSourcemap) {
|
|
217
|
+
const baseMap = coverageMap ?? options.inputSourceMap ?? (0, source_map_1.loadInputSourceMap)(filename, data);
|
|
218
|
+
if (maps.length > 0 || coverageMap) {
|
|
219
|
+
if (!options.isAlreadyStripped) {
|
|
220
|
+
code = (0, source_map_1.removeSourceMappingURL)(code);
|
|
221
|
+
}
|
|
222
|
+
const remappingChain = maps.reverse();
|
|
223
|
+
if (baseMap) {
|
|
224
|
+
remappingChain.push(baseMap);
|
|
225
|
+
}
|
|
226
|
+
if (remappingChain.length > 0) {
|
|
227
|
+
const finalMap = (0, remapping_1.default)(remappingChain, () => null).toString();
|
|
228
|
+
const base64Map = Buffer.from(finalMap).toString('base64');
|
|
229
|
+
code += `\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return code;
|
|
180
233
|
}
|
|
181
|
-
//
|
|
182
|
-
|
|
183
|
-
// and the result would be an unnecessary no-op additional plugin pass.
|
|
184
|
-
return source.includes(LINKER_DECLARATION_PREFIX);
|
|
234
|
+
// Strip sourcemaps if they should not be used
|
|
235
|
+
return options.isAlreadyStripped ? code : (0, source_map_1.removeSourceMappingURL)(code);
|
|
185
236
|
}
|
|
186
237
|
//# sourceMappingURL=javascript-transformer-worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript-transformer-worker.js","sourceRoot":"","sources":["javascript-transformer-worker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"javascript-transformer-worker.js","sourceRoot":"","sources":["javascript-transformer-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,7 @@ export declare class JavaScriptTransformer {
|
|
|
45
45
|
* @param sideEffects If false, and `advancedOptimizations` is enabled tslib decorators are wrapped.
|
|
46
46
|
* @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
|
|
47
47
|
*/
|
|
48
|
-
transformData(filename: string, data: string, skipLinker: boolean, sideEffects?: boolean, instrumentForCoverage?: boolean): Promise<Uint8Array>;
|
|
48
|
+
transformData(filename: string, data: string | Uint8Array, skipLinker: boolean, sideEffects?: boolean, instrumentForCoverage?: boolean): Promise<Uint8Array>;
|
|
49
49
|
/**
|
|
50
50
|
* Stops all active transformation tasks and shuts down all workers.
|
|
51
51
|
* @returns A void promise that resolves when closing is complete.
|
|
@@ -8,11 +8,34 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.JavaScriptTransformer = void 0;
|
|
11
|
-
const node_crypto_1 = require("node:crypto");
|
|
12
11
|
const promises_1 = require("node:fs/promises");
|
|
12
|
+
const hash_1 = require("../../utils/hash");
|
|
13
13
|
const utils_1 = require("../../utils/server-rendering/esm-in-memory-loader/utils");
|
|
14
14
|
const source_map_1 = require("../../utils/source-map");
|
|
15
15
|
const worker_pool_1 = require("../../utils/worker-pool");
|
|
16
|
+
const LINKER_DECLARATION_PREFIX = 'ɵɵngDeclare';
|
|
17
|
+
const LINKER_DECLARATION_PREFIX_BYTES = Buffer.from(LINKER_DECLARATION_PREFIX, 'utf-8');
|
|
18
|
+
/**
|
|
19
|
+
* Determines whether JavaScript code requires Angular linker processing.
|
|
20
|
+
*
|
|
21
|
+
* @param path The full path to the file.
|
|
22
|
+
* @param data The data (string or Buffer) of the file.
|
|
23
|
+
* @returns True if the code contains an Angular partial declaration; otherwise false.
|
|
24
|
+
*/
|
|
25
|
+
function requiresLinking(path, data) {
|
|
26
|
+
// @angular/core and @angular/compiler will cause false positives
|
|
27
|
+
// Also, TypeScript files do not require linking
|
|
28
|
+
if (/[\\/]@angular[\\/](?:compiler|core)[\\/]|\.[cm]?tsx?$/.test(path)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (typeof data === 'string') {
|
|
32
|
+
return data.includes(LINKER_DECLARATION_PREFIX);
|
|
33
|
+
}
|
|
34
|
+
const dataBuffer = Buffer.isBuffer(data)
|
|
35
|
+
? data
|
|
36
|
+
: Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
37
|
+
return dataBuffer.includes(LINKER_DECLARATION_PREFIX_BYTES);
|
|
38
|
+
}
|
|
16
39
|
/**
|
|
17
40
|
* A class that performs transformation of JavaScript files and raw data.
|
|
18
41
|
* A worker pool is used to distribute the transformation actions and allow
|
|
@@ -46,6 +69,7 @@ class JavaScriptTransformer {
|
|
|
46
69
|
jit,
|
|
47
70
|
};
|
|
48
71
|
this.#fileCacheKeyBase = Buffer.from(JSON.stringify(this.#commonOptions), 'utf-8');
|
|
72
|
+
this.#workerPool = this.#ensureWorkerPool();
|
|
49
73
|
}
|
|
50
74
|
/**
|
|
51
75
|
* Executes a transformation action using a semaphore-based backpressure throttle.
|
|
@@ -82,6 +106,8 @@ class JavaScriptTransformer {
|
|
|
82
106
|
const workerPoolOptions = {
|
|
83
107
|
filename: require.resolve('./javascript-transformer-worker'),
|
|
84
108
|
maxThreads: this.maxThreads,
|
|
109
|
+
minThreads: this.maxThreads,
|
|
110
|
+
workerData: this.#commonOptions,
|
|
85
111
|
};
|
|
86
112
|
// Prevent passing SSR `--import` (loader-hooks) from parent to child worker.
|
|
87
113
|
const filteredExecArgv = process.execArgv.filter((v) => v !== utils_1.IMPORT_EXEC_ARGV);
|
|
@@ -102,46 +128,32 @@ class JavaScriptTransformer {
|
|
|
102
128
|
async transformFile(filename, skipLinker, sideEffects, instrumentForCoverage) {
|
|
103
129
|
return this.#runWithThrottle(async () => {
|
|
104
130
|
const data = await (0, promises_1.readFile)(filename);
|
|
105
|
-
let result;
|
|
106
131
|
let cacheKey;
|
|
107
132
|
if (this.cache) {
|
|
108
133
|
// Create a cache key from the file data and options that effect the output.
|
|
109
134
|
// NOTE: If additional options are added, this may need to be updated.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
cacheKey = hash.digest('hex');
|
|
135
|
+
const hasher = (0, hash_1.createContentHash)();
|
|
136
|
+
hasher.update(`${!!skipLinker}--${!!sideEffects}`);
|
|
137
|
+
hasher.update(data);
|
|
138
|
+
hasher.update(this.#fileCacheKeyBase);
|
|
139
|
+
cacheKey = hasher.digest();
|
|
116
140
|
try {
|
|
117
|
-
|
|
141
|
+
const cached = await this.cache.get(cacheKey);
|
|
142
|
+
if (cached !== undefined) {
|
|
143
|
+
return cached;
|
|
144
|
+
}
|
|
118
145
|
}
|
|
119
146
|
catch {
|
|
120
147
|
// Failure to get the value should not fail the transform
|
|
121
148
|
}
|
|
122
149
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
instrumentForCoverage,
|
|
131
|
-
...this.#commonOptions,
|
|
132
|
-
}, {
|
|
133
|
-
// The below is disable as with Yarn PNP this causes build failures with the below message
|
|
134
|
-
// `Unable to deserialize cloned data`.
|
|
135
|
-
transferList: process.versions.pnp ? undefined : [data.buffer],
|
|
136
|
-
}));
|
|
137
|
-
// If there is a cache then store the result
|
|
138
|
-
if (this.cache && cacheKey) {
|
|
139
|
-
try {
|
|
140
|
-
await this.cache.put(cacheKey, result);
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
// Failure to store the value in the cache should not fail the transform
|
|
144
|
-
}
|
|
150
|
+
const result = await this.transformData(filename, data, !!skipLinker, sideEffects, instrumentForCoverage);
|
|
151
|
+
if (this.cache && cacheKey) {
|
|
152
|
+
try {
|
|
153
|
+
await this.cache.put(cacheKey, result);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Failure to store the value in the cache should not fail the transform
|
|
145
157
|
}
|
|
146
158
|
}
|
|
147
159
|
return result;
|
|
@@ -157,21 +169,35 @@ class JavaScriptTransformer {
|
|
|
157
169
|
* @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
|
|
158
170
|
*/
|
|
159
171
|
async transformData(filename, data, skipLinker, sideEffects, instrumentForCoverage) {
|
|
172
|
+
const shouldLink = !skipLinker && requiresLinking(filename, data);
|
|
160
173
|
// Perform a quick test to determine if the data needs any transformations.
|
|
161
174
|
// This allows directly returning the data without the worker communication overhead.
|
|
162
|
-
if (
|
|
175
|
+
if (!shouldLink && !this.#commonOptions.advancedOptimizations && !instrumentForCoverage) {
|
|
163
176
|
const keepSourcemap = this.#commonOptions.sourcemap &&
|
|
164
177
|
(!!this.#commonOptions.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
|
|
165
|
-
|
|
178
|
+
if (typeof data === 'string') {
|
|
179
|
+
return Buffer.from(keepSourcemap ? data : (0, source_map_1.removeSourceMappingURL)(data), 'utf-8');
|
|
180
|
+
}
|
|
181
|
+
return keepSourcemap ? data : (0, source_map_1.removeSourceMappingURL)(data);
|
|
166
182
|
}
|
|
167
|
-
|
|
183
|
+
// Only standalone (non-pooled) ArrayBuffers can be transferred across worker threads.
|
|
184
|
+
// Node.js shares an internal 8KB ArrayBuffer pool for small buffers, and transferring
|
|
185
|
+
// a pooled buffer will throw a DataCloneError because detaching it invalidates other slices.
|
|
186
|
+
// In addition, SharedArrayBuffers cannot be transferred, and Yarn PnP has deserialization issues.
|
|
187
|
+
const isTransferable = typeof data !== 'string' &&
|
|
188
|
+
data.buffer instanceof ArrayBuffer &&
|
|
189
|
+
data.byteOffset === 0 &&
|
|
190
|
+
data.byteLength === data.buffer.byteLength &&
|
|
191
|
+
!process.versions.pnp;
|
|
192
|
+
return this.#ensureWorkerPool().run({
|
|
168
193
|
filename,
|
|
169
194
|
data,
|
|
170
|
-
skipLinker,
|
|
195
|
+
skipLinker: !shouldLink,
|
|
171
196
|
sideEffects,
|
|
172
197
|
instrumentForCoverage,
|
|
173
|
-
|
|
174
|
-
|
|
198
|
+
}, {
|
|
199
|
+
transferList: isTransferable ? [data.buffer] : undefined,
|
|
200
|
+
});
|
|
175
201
|
}
|
|
176
202
|
/**
|
|
177
203
|
* Stops all active transformation tasks and shuts down all workers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript-transformer.js","sourceRoot":"","sources":["javascript-transformer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH
|
|
1
|
+
{"version":3,"file":"javascript-transformer.js","sourceRoot":"","sources":["javascript-transformer.ts"],"names":[],"mappings":"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"}
|