From 255cb729b79d9492aeb471f61c5a1c6977ef4c16 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 28 Sep 2026 13:14:52 -0400 Subject: [PATCH] refactor(@angular/build): lazy load sourcemap remapping in js transform worker Previously, `@ampproject/remapping` was statically imported at the top level of `javascript-transformer-worker.ts`, eagerly pulling in 5 packages (`@ampproject/remapping` and 4 sub-dependencies) upon worker initialization. In standard Angular CLI configurations (`ng build` and `ng serve`), vendor sourcemaps are disabled by default (`thirdPartySourcemaps = false`), causing `useInputSourcemap` to evaluate to false for all transformed `node_modules` files. As a result, sourcemap remapping is never executed in typical builds. --- .../javascript-transformer/javascript-transformer-worker.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/tools/javascript-transformer/javascript-transformer-worker.ts b/packages/angular/build/src/tools/javascript-transformer/javascript-transformer-worker.ts index 99ef235f3279..87df19ee81eb 100644 --- a/packages/angular/build/src/tools/javascript-transformer/javascript-transformer-worker.ts +++ b/packages/angular/build/src/tools/javascript-transformer/javascript-transformer-worker.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import remapping, { type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping'; +import type { DecodedSourceMap, EncodedSourceMap } from '@ampproject/remapping'; import type { PluginItem } from '@babel/core'; import { createRequire } from 'node:module'; import { workerData } from 'node:worker_threads'; @@ -52,6 +52,8 @@ let babelLinkerDeps: > | undefined; +let remapping: typeof import('@ampproject/remapping').default | undefined; + const textDecoder = new TextDecoder(); const textEncoder = new TextEncoder(); @@ -253,6 +255,7 @@ async function transformJavaScriptImpl( } if (remappingChain.length > 0) { + remapping ??= (await import('@ampproject/remapping')).default; const finalMap = remapping(remappingChain, () => null).toString(); const base64Map = Buffer.from(finalMap).toString('base64'); code += `\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;