@angular/build 22.2.0-next.0 → 22.2.0-next.1

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.
Files changed (68) hide show
  1. package/package.json +5 -7
  2. package/src/builders/application/build-action.js +2 -2
  3. package/src/builders/application/build-action.js.map +1 -1
  4. package/src/builders/application/execute-build.js +153 -140
  5. package/src/builders/application/execute-build.js.map +1 -1
  6. package/src/private.d.ts +0 -1
  7. package/src/private.js +0 -2
  8. package/src/private.js.map +1 -1
  9. package/src/tools/angular/linker/oxc-ast-host.d.ts +33 -0
  10. package/src/tools/angular/linker/oxc-ast-host.js +204 -0
  11. package/src/tools/angular/linker/oxc-ast-host.js.map +1 -0
  12. package/src/tools/angular/linker/oxc-linker.d.ts +25 -0
  13. package/src/tools/angular/linker/oxc-linker.js +145 -0
  14. package/src/tools/angular/linker/oxc-linker.js.map +1 -0
  15. package/src/tools/angular/linker/string-ast-factory.d.ts +86 -0
  16. package/src/tools/angular/linker/string-ast-factory.js +223 -0
  17. package/src/tools/angular/linker/string-ast-factory.js.map +1 -0
  18. package/src/tools/babel/plugins/oxc-transform.js +9 -9
  19. package/src/tools/babel/plugins/oxc-transform.js.map +1 -1
  20. package/src/tools/babel/plugins/types.d.ts +8 -8
  21. package/src/tools/esbuild/angular/compilation-state.js +6 -6
  22. package/src/tools/esbuild/angular/compilation-state.js.map +1 -1
  23. package/src/tools/esbuild/angular/source-file-cache.d.ts +6 -0
  24. package/src/tools/esbuild/angular/source-file-cache.js +12 -0
  25. package/src/tools/esbuild/angular/source-file-cache.js.map +1 -1
  26. package/src/tools/esbuild/bundler-execution-result.d.ts +2 -1
  27. package/src/tools/esbuild/bundler-execution-result.js +15 -6
  28. package/src/tools/esbuild/bundler-execution-result.js.map +1 -1
  29. package/src/tools/esbuild/i18n-inliner.js +2 -2
  30. package/src/tools/esbuild/i18n-inliner.js.map +1 -1
  31. package/src/tools/esbuild/javascript-transformer-worker.js +78 -83
  32. package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
  33. package/src/tools/esbuild/license-extractor.js +18 -11
  34. package/src/tools/esbuild/license-extractor.js.map +1 -1
  35. package/src/tools/esbuild/load-result-cache.d.ts +2 -1
  36. package/src/tools/esbuild/load-result-cache.js +22 -2
  37. package/src/tools/esbuild/load-result-cache.js.map +1 -1
  38. package/src/tools/esbuild/persistent-load-result-cache.d.ts +87 -0
  39. package/src/tools/esbuild/persistent-load-result-cache.js +267 -0
  40. package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -0
  41. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.d.ts +35 -0
  42. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js +68 -0
  43. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js.map +1 -0
  44. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +1 -0
  45. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js.map +1 -1
  46. package/src/utils/environment-options.d.ts +6 -0
  47. package/src/utils/environment-options.js +7 -1
  48. package/src/utils/environment-options.js.map +1 -1
  49. package/src/utils/normalize-cache.js +1 -1
  50. package/src/tools/babel/plugins/add-code-coverage.d.ts +0 -14
  51. package/src/tools/babel/plugins/add-code-coverage.js +0 -44
  52. package/src/tools/babel/plugins/add-code-coverage.js.map +0 -1
  53. package/src/tools/babel/plugins/adjust-static-class-members.d.ts +0 -25
  54. package/src/tools/babel/plugins/adjust-static-class-members.js +0 -349
  55. package/src/tools/babel/plugins/adjust-static-class-members.js.map +0 -1
  56. package/src/tools/babel/plugins/adjust-typescript-enums.d.ts +0 -21
  57. package/src/tools/babel/plugins/adjust-typescript-enums.js +0 -113
  58. package/src/tools/babel/plugins/adjust-typescript-enums.js.map +0 -1
  59. package/src/tools/babel/plugins/elide-angular-metadata.d.ts +0 -23
  60. package/src/tools/babel/plugins/elide-angular-metadata.js +0 -110
  61. package/src/tools/babel/plugins/elide-angular-metadata.js.map +0 -1
  62. package/src/tools/babel/plugins/index.d.ts +0 -11
  63. package/src/tools/babel/plugins/index.js +0 -22
  64. package/src/tools/babel/plugins/index.js.map +0 -1
  65. package/src/tools/babel/plugins/pure-toplevel-functions.d.ts +0 -13
  66. package/src/tools/babel/plugins/pure-toplevel-functions.js +0 -128
  67. package/src/tools/babel/plugins/pure-toplevel-functions.js.map +0 -1
  68. package/src/tools/babel/typings.d.ts +0 -21
@@ -45,10 +45,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
45
45
  Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.default = transformJavaScript;
47
47
  const core_1 = require("@babel/core");
48
- const node_fs_1 = __importDefault(require("node:fs"));
49
48
  const node_module_1 = require("node:module");
50
- const node_path_1 = __importDefault(require("node:path"));
51
49
  const piscina_1 = __importDefault(require("piscina"));
50
+ const environment_options_js_1 = require("../../utils/environment-options.js");
52
51
  const source_map_1 = require("../../utils/source-map");
53
52
  const textDecoder = new TextDecoder();
54
53
  const textEncoder = new TextEncoder();
@@ -59,6 +58,34 @@ const textEncoder = new TextEncoder();
59
58
  * the names MUST begin with this prefix.
60
59
  */
61
60
  const LINKER_DECLARATION_PREFIX = 'ɵɵngDeclare';
61
+ async function instrumentCoverage(filename, data, useInputSourcemap) {
62
+ try {
63
+ let resolvedPath = 'istanbul-lib-instrument';
64
+ try {
65
+ const requireFn = (0, node_module_1.createRequire)(filename);
66
+ resolvedPath = requireFn.resolve('istanbul-lib-instrument');
67
+ }
68
+ catch {
69
+ // Fallback to pool worker import traversal
70
+ }
71
+ const { createInstrumenter } = (await Promise.resolve(`${resolvedPath}`).then(s => __importStar(require(s))));
72
+ const instrumenter = createInstrumenter({
73
+ produceSourceMap: useInputSourcemap,
74
+ esModules: true,
75
+ });
76
+ const inputSourceMap = useInputSourcemap ? (0, source_map_1.loadInputSourceMap)(filename, data) : undefined;
77
+ const instrumentedCode = instrumenter.instrumentSync(data, filename, inputSourceMap);
78
+ const lastMap = instrumenter.lastSourceMap();
79
+ if (useInputSourcemap && lastMap) {
80
+ const inlineMap = Buffer.from(JSON.stringify(lastMap)).toString('base64');
81
+ return instrumentedCode + `\n//# sourceMappingURL=data:application/json;base64,${inlineMap}`;
82
+ }
83
+ return (0, source_map_1.removeSourceMappingURL)(instrumentedCode);
84
+ }
85
+ catch (error) {
86
+ throw new Error(`The 'istanbul-lib-instrument' package is required for code coverage but was not found. Please install the package.`, { cause: error });
87
+ }
88
+ }
62
89
  async function transformJavaScript(request) {
63
90
  const { filename, data, ...options } = request;
64
91
  const textData = typeof data === 'string' ? data : textDecoder.decode(data);
@@ -67,55 +94,61 @@ async function transformJavaScript(request) {
67
94
  return piscina_1.default.move(textEncoder.encode(transformedData));
68
95
  }
69
96
  /**
70
- * Cached instance of the compiler-cli linker's createEs2015LinkerPlugin function.
97
+ * Cached instance of the OXC linker module.
71
98
  */
72
- let linkerPluginCreator;
99
+ let oxcLinkerModule;
73
100
  async function transformJavaScriptImpl(filename, data, options) {
74
- const shouldLink = !options.skipLinker && (await requiresLinking(filename, data));
101
+ const shouldLink = !options.skipLinker && requiresLinking(filename, data);
75
102
  const useInputSourcemap = options.sourcemap &&
76
103
  (!!options.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
77
- const babelPlugins = [];
104
+ let code = data;
78
105
  if (options.instrumentForCoverage) {
79
- try {
80
- let resolvedPath = 'istanbul-lib-instrument';
81
- try {
82
- const requireFn = (0, node_module_1.createRequire)(filename);
83
- resolvedPath = requireFn.resolve('istanbul-lib-instrument');
84
- }
85
- catch {
86
- // Fallback to pool worker import traversal
87
- }
88
- const istanbul = await Promise.resolve(`${resolvedPath}`).then(s => __importStar(require(s)));
89
- const programVisitor = istanbul.programVisitor ?? istanbul.default?.programVisitor;
90
- if (!programVisitor) {
91
- throw new Error('programVisitor is not available in istanbul-lib-instrument.');
92
- }
93
- const { default: coveragePluginFactory } = await Promise.resolve().then(() => __importStar(require('../babel/plugins/add-code-coverage.js')));
94
- babelPlugins.push(coveragePluginFactory(programVisitor));
95
- }
96
- catch (error) {
97
- throw new Error(`The 'istanbul-lib-instrument' package is required for code coverage but was not found. Please install the package.`, { cause: error });
98
- }
106
+ code = await instrumentCoverage(filename, code, useInputSourcemap);
99
107
  }
100
108
  if (shouldLink) {
101
- // Lazy load the linker plugin only when linking is required
102
- const linkerPlugin = await createLinkerPlugin(options);
103
- babelPlugins.push(linkerPlugin);
104
- }
105
- let code = data;
106
- // If Babel is needed, run it first
107
- if (babelPlugins.length > 0) {
108
- const result = await (0, core_1.transformAsync)(code, {
109
- filename,
110
- inputSourceMap: (useInputSourcemap ? undefined : false),
111
- sourceMaps: useInputSourcemap ? 'inline' : false,
112
- compact: false,
113
- configFile: false,
114
- babelrc: false,
115
- browserslistConfigFile: false,
116
- plugins: babelPlugins,
117
- });
118
- code = result?.code ?? code;
109
+ if (environment_options_js_1.useBabelLinker) {
110
+ const { createEs2015LinkerPlugin } = await Promise.resolve().then(() => __importStar(require('@angular/compiler-cli/linker/babel')));
111
+ const { ConsoleLogger, LogLevel } = await Promise.resolve().then(() => __importStar(require('@angular/compiler-cli')));
112
+ const result = await (0, core_1.transformAsync)(code, {
113
+ filename,
114
+ inputSourceMap: (useInputSourcemap ? undefined : false),
115
+ sourceMaps: useInputSourcemap ? 'inline' : false,
116
+ compact: false,
117
+ configFile: false,
118
+ babelrc: false,
119
+ browserslistConfigFile: false,
120
+ plugins: [
121
+ createEs2015LinkerPlugin({
122
+ fileSystem: {
123
+ exists: () => false,
124
+ readFile: () => '',
125
+ resolve: (...paths) => paths.join('/'),
126
+ dirname: (path) => path.split('/').slice(0, -1).join('/'),
127
+ relative: (_from, to) => to,
128
+ },
129
+ logger: new ConsoleLogger(LogLevel.info),
130
+ linkerJitMode: options.jit,
131
+ // This is a workaround until https://github.com/angular/angular/issues/42769 is fixed.
132
+ sourceMapping: false,
133
+ }),
134
+ ],
135
+ });
136
+ code = result?.code ?? code;
137
+ }
138
+ else {
139
+ oxcLinkerModule ??= await Promise.resolve().then(() => __importStar(require('../angular/linker/oxc-linker.js')));
140
+ const result = oxcLinkerModule.linkWithOxc(filename, code, {
141
+ sourcemap: useInputSourcemap,
142
+ jit: options.jit,
143
+ skipCheck: true,
144
+ });
145
+ code = result.code;
146
+ if (useInputSourcemap && result.map) {
147
+ code = (0, source_map_1.removeSourceMappingURL)(code);
148
+ const base64Map = Buffer.from(result.map).toString('base64');
149
+ code += `\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
150
+ }
151
+ }
119
152
  }
120
153
  // Run advanced optimizations using our fast oxc-transform
121
154
  if (options.advancedOptimizations) {
@@ -140,7 +173,7 @@ async function transformJavaScriptImpl(filename, data, options) {
140
173
  // Strip sourcemaps if they should not be used
141
174
  return useInputSourcemap ? code : (0, source_map_1.removeSourceMappingURL)(code);
142
175
  }
143
- async function requiresLinking(path, source) {
176
+ function requiresLinking(path, source) {
144
177
  // @angular/core and @angular/compiler will cause false positives
145
178
  // Also, TypeScript files do not require linking
146
179
  if (/[\\/]@angular[\\/](?:compiler|core)|\.tsx?$/.test(path)) {
@@ -151,42 +184,4 @@ async function requiresLinking(path, source) {
151
184
  // and the result would be an unnecessary no-op additional plugin pass.
152
185
  return source.includes(LINKER_DECLARATION_PREFIX);
153
186
  }
154
- async function createLinkerPlugin(options) {
155
- linkerPluginCreator ??= (await Promise.resolve().then(() => __importStar(require('@angular/compiler-cli/linker/babel'))))
156
- .createEs2015LinkerPlugin;
157
- const linkerPlugin = linkerPluginCreator({
158
- linkerJitMode: options.jit,
159
- // This is a workaround until https://github.com/angular/angular/issues/42769 is fixed.
160
- sourceMapping: false,
161
- logger: {
162
- level: 1, // Info level
163
- debug(...args) {
164
- // eslint-disable-next-line no-console
165
- console.debug(args);
166
- },
167
- info(...args) {
168
- // eslint-disable-next-line no-console
169
- console.info(args);
170
- },
171
- warn(...args) {
172
- // eslint-disable-next-line no-console
173
- console.warn(args);
174
- },
175
- error(...args) {
176
- // eslint-disable-next-line no-console
177
- console.error(args);
178
- },
179
- },
180
- fileSystem: {
181
- resolve: node_path_1.default.resolve,
182
- exists: node_fs_1.default.existsSync,
183
- dirname: node_path_1.default.dirname,
184
- relative: node_path_1.default.relative,
185
- readFile: node_fs_1.default.readFileSync,
186
- // Node.JS types don't overlap the Compiler types.
187
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
188
- },
189
- });
190
- return linkerPlugin;
191
- }
192
187
  //# sourceMappingURL=javascript-transformer-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"javascript-transformer-worker.js","sourceRoot":"","sources":["javascript-transformer-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"javascript-transformer-worker.js","sourceRoot":"","sources":["javascript-transformer-worker.ts"],"names":[],"mappings":"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"}
@@ -31,9 +31,9 @@ const NODE_MODULE_SEGMENT = 'node_modules';
31
31
  */
32
32
  const CUSTOM_LICENSE_TEXT = 'SEE LICENSE IN ';
33
33
  /**
34
- * A list of commonly named license files found within packages.
34
+ * A regular expression for commonly named license files found within packages.
35
35
  */
36
- const LICENSE_FILES = ['LICENSE', 'LICENSE.txt', 'LICENSE.md'];
36
+ const LICENSE_FILE_REGEXP = /^(?:mit-)?licen[cs]e(?:$|[-._])/i;
37
37
  /**
38
38
  * Header text that will be added to the top of the output license extraction file.
39
39
  */
@@ -61,6 +61,7 @@ const EXTRACTION_FILE_SEPARATOR = '-'.repeat(80) + '\n';
61
61
  async function extractLicenses(metafile, rootDirectory) {
62
62
  let extractedLicenseContent = `${EXTRACTION_FILE_HEADER}\n${EXTRACTION_FILE_SEPARATOR}`;
63
63
  const seenPaths = new Set();
64
+ const seenPackageDirectories = new Set();
64
65
  const seenPackages = new Set();
65
66
  for (const entry of Object.values(metafile.outputs)) {
66
67
  for (const [inputPath, { bytesInOutput }] of Object.entries(entry.inputs)) {
@@ -99,6 +100,10 @@ async function extractLicenses(metafile, rootDirectory) {
99
100
  ? `${nameOrScope}/${nameOrFile}`
100
101
  : nameOrScope;
101
102
  const packageDirectory = node_path_1.default.join(baseDirectory, packageName);
103
+ if (seenPackageDirectories.has(packageDirectory)) {
104
+ continue;
105
+ }
106
+ seenPackageDirectories.add(packageDirectory);
102
107
  // Load the package's metadata to find the package's name, version, and license type
103
108
  const packageJsonPath = node_path_1.default.join(packageDirectory, 'package.json');
104
109
  let packageJson;
@@ -118,10 +123,10 @@ async function extractLicenses(metafile, rootDirectory) {
118
123
  // Attempt to find license text inside package
119
124
  let licenseText = '';
120
125
  if (typeof packageJson.license === 'string' &&
121
- packageJson.license.toLowerCase().startsWith(CUSTOM_LICENSE_TEXT)) {
126
+ packageJson.license.toUpperCase().startsWith(CUSTOM_LICENSE_TEXT)) {
122
127
  // Attempt to load the package's custom license
123
128
  let customLicensePath;
124
- const customLicenseFile = node_path_1.default.normalize(packageJson.license.slice(CUSTOM_LICENSE_TEXT.length + 1).trim());
129
+ const customLicenseFile = node_path_1.default.normalize(packageJson.license.slice(CUSTOM_LICENSE_TEXT.length).trim());
125
130
  if (customLicenseFile.startsWith('..') || node_path_1.default.isAbsolute(customLicenseFile)) {
126
131
  // Path is attempting to access files outside of the package
127
132
  // TODO: Issue warning?
@@ -130,20 +135,22 @@ async function extractLicenses(metafile, rootDirectory) {
130
135
  customLicensePath = node_path_1.default.join(packageDirectory, customLicenseFile);
131
136
  try {
132
137
  licenseText = await (0, promises_1.readFile)(customLicensePath, 'utf-8');
133
- break;
134
138
  }
135
139
  catch { }
136
140
  }
137
141
  }
138
142
  else {
139
143
  // Search for a license file within the root of the package
140
- for (const potentialLicense of LICENSE_FILES) {
141
- const packageLicensePath = node_path_1.default.join(packageDirectory, potentialLicense);
142
- try {
143
- licenseText = await (0, promises_1.readFile)(packageLicensePath, 'utf-8');
144
- break;
144
+ const entries = await (0, promises_1.readdir)(packageDirectory, { withFileTypes: true }).catch(() => []);
145
+ for (const entry of entries) {
146
+ if ((entry.isFile() || entry.isSymbolicLink()) && LICENSE_FILE_REGEXP.test(entry.name)) {
147
+ const packageLicensePath = node_path_1.default.join(packageDirectory, entry.name);
148
+ try {
149
+ licenseText = await (0, promises_1.readFile)(packageLicensePath, 'utf-8');
150
+ break;
151
+ }
152
+ catch { }
145
153
  }
146
- catch { }
147
154
  }
148
155
  }
149
156
  // Generate the package's license entry in the output content
@@ -1 +1 @@
1
- {"version":3,"file":"license-extractor.js","sourceRoot":"","sources":["license-extractor.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAwDH,0CAiHC;AAtKD,+CAA4C;AAC5C,0DAA6B;AAE7B;;GAEG;AACH,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAExD;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,eAAe,CAAC,QAAkB,EAAE,aAAqB;IAC7E,IAAI,uBAAuB,GAAG,GAAG,sBAAsB,KAAK,yBAAyB,EAAE,CAAC;IAExF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1E,iCAAiC;YACjC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,+BAA+B;YAC/B,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEzB,yBAAyB;YACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC7C,SAAS;YACX,CAAC;YAED,yCAAyC;YACzC,IAAI,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE,UAAU,CAAC;YAC5B,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,OAAO,aAAa,KAAK,mBAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,mBAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAC7C,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;oBACpC,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;gBACR,CAAC;gBAED,UAAU,GAAG,WAAW,CAAC;gBACzB,WAAW,GAAG,OAAO,CAAC;gBACtB,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9C,CAAC;YAED,mFAAmF;YACnF,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC7C,CAAC,CAAC,GAAG,WAAW,IAAI,UAAU,EAAE;gBAChC,CAAC,CAAC,WAAW,CAAC;YAChB,MAAM,gBAAgB,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAE/D,oFAAoF;YACpF,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YACpE,IAAI,WAAW,CAAC;YAChB,IAAI,CAAC;gBACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,eAAe,EAAE,OAAO,CAAC,CAKhE,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;gBAClB,SAAS;YACX,CAAC;YAED,kCAAkC;YAClC,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1D,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5B,8CAA8C;YAC9C,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IACE,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;gBACvC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EACjE,CAAC;gBACD,+CAA+C;gBAC/C,IAAI,iBAAiB,CAAC;gBACtB,MAAM,iBAAiB,GAAG,mBAAI,CAAC,SAAS,CACtC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CACjE,CAAC;gBACF,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC7E,4DAA4D;oBAC5D,uBAAuB;gBACzB,CAAC;qBAAM,CAAC;oBACN,iBAAiB,GAAG,mBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;oBACnE,IAAI,CAAC;wBACH,WAAW,GAAG,MAAM,IAAA,mBAAQ,EAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;wBACzD,MAAM;oBACR,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,KAAK,MAAM,gBAAgB,IAAI,aAAa,EAAE,CAAC;oBAC7C,MAAM,kBAAkB,GAAG,mBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;oBACzE,IAAI,CAAC;wBACH,WAAW,GAAG,MAAM,IAAA,mBAAQ,EAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;wBAC1D,MAAM;oBACR,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,uBAAuB,IAAI,YAAY,WAAW,CAAC,IAAI,IAAI,CAAC;YAC5D,uBAAuB,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;YACxF,uBAAuB,IAAI,KAAK,WAAW,IAAI,CAAC;YAChD,uBAAuB,IAAI,yBAAyB,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"license-extractor.js","sourceRoot":"","sources":["license-extractor.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import type { OnLoadResult, PluginBuild } from 'esbuild';
9
9
  export interface LoadResultCache {
10
- get(path: string): OnLoadResult | undefined;
10
+ get(path: string): OnLoadResult | Promise<OnLoadResult | undefined> | undefined;
11
11
  put(path: string, result: OnLoadResult): Promise<void>;
12
12
  readonly watchFiles: ReadonlyArray<string>;
13
13
  }
@@ -18,4 +18,5 @@ export declare class MemoryLoadResultCache implements LoadResultCache {
18
18
  put(path: string, result: OnLoadResult): Promise<void>;
19
19
  invalidate(path: string): boolean;
20
20
  get watchFiles(): string[];
21
+ clear(): void;
21
22
  }
@@ -16,7 +16,7 @@ function createCachedLoad(cache, callback) {
16
16
  }
17
17
  return async (args) => {
18
18
  const loadCacheKey = `${args.namespace}:${args.path}`;
19
- let result = cache.get(loadCacheKey);
19
+ let result = await cache.get(loadCacheKey);
20
20
  if (result === undefined) {
21
21
  result = await callback(args);
22
22
  // Do not cache null or undefined
@@ -24,7 +24,9 @@ function createCachedLoad(cache, callback) {
24
24
  // Ensure requested path is included if it was a resolved file
25
25
  if (args.namespace === 'file') {
26
26
  result.watchFiles ??= [];
27
- result.watchFiles.push(args.path);
27
+ if (!result.watchFiles.includes(args.path)) {
28
+ result.watchFiles.push(args.path);
29
+ }
28
30
  }
29
31
  await cache.put(loadCacheKey, result);
30
32
  }
@@ -35,10 +37,23 @@ function createCachedLoad(cache, callback) {
35
37
  class MemoryLoadResultCache {
36
38
  #loadResults = new Map();
37
39
  #fileDependencies = new Map();
40
+ #watchFilesPerKey = new Map();
38
41
  get(path) {
39
42
  return this.#loadResults.get(path);
40
43
  }
41
44
  async put(path, result) {
45
+ if (result.errors && result.errors.length > 0) {
46
+ const previousWatchFiles = this.#watchFilesPerKey.get(path);
47
+ if (previousWatchFiles) {
48
+ result.watchFiles = Array.from(new Set([...(result.watchFiles ?? []), ...previousWatchFiles]));
49
+ }
50
+ }
51
+ else if (result.watchFiles && result.watchFiles.length > 0) {
52
+ this.#watchFilesPerKey.set(path, [...result.watchFiles]);
53
+ }
54
+ else {
55
+ this.#watchFilesPerKey.delete(path);
56
+ }
42
57
  this.#loadResults.set(path, result);
43
58
  if (result.watchFiles) {
44
59
  for (const watchFile of result.watchFiles) {
@@ -71,6 +86,11 @@ class MemoryLoadResultCache {
71
86
  // are namespaced request paths and not disk-based file paths.
72
87
  return [...this.#fileDependencies.keys()];
73
88
  }
89
+ clear() {
90
+ this.#loadResults.clear();
91
+ this.#fileDependencies.clear();
92
+ this.#watchFilesPerKey.clear();
93
+ }
74
94
  }
75
95
  exports.MemoryLoadResultCache = MemoryLoadResultCache;
76
96
  //# sourceMappingURL=load-result-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-result-cache.js","sourceRoot":"","sources":["load-result-cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAWH,4CA4BC;AApCD,yCAAsC;AAQtC,SAAgB,gBAAgB,CAC9B,KAAkC,EAClC,QAA8C;IAE9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,MAAM,GAAoC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEtE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE9B,iCAAiC;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,8DAA8D;gBAC9D,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;oBAC9B,MAAM,CAAC,UAAU,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,MAAa,qBAAqB;IAChC,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEnD,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,MAAoB;QAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC1C,8DAA8D;gBAC9D,MAAM,mBAAmB,GAAG,IAAA,qBAAS,EAAC,SAAS,CAAC,CAAC;gBACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAC/D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;oBACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBAC5D,CAAC;gBACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU;QACZ,iEAAiE;QACjE,8DAA8D;QAC9D,OAAO,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AA7CD,sDA6CC"}
1
+ {"version":3,"file":"load-result-cache.js","sourceRoot":"","sources":["load-result-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.dev/license
7
+ */
8
+ /**
9
+ * @fileoverview
10
+ * Implements a generic, two-tier (L1 memory + L2 persistent disk store) caching system for
11
+ * esbuild plugin `OnLoadResult` outcomes across the `@angular/build` compiler pipeline.
12
+ *
13
+ * Supported Module Types:
14
+ * 1. **Disk File Modules** (`file:` namespace): Standard disk-based source files (TS, JS, CSS, Sass, Less).
15
+ * Cache keys are computed using the root `globalConfigHash`, file path, and file content. Validity is
16
+ * verified via fast-path metadata (`mtimeMs` + `size`) with fallback to content hashing (`sha256`).
17
+ * 2. **Custom Plugin Namespace Modules** (e.g. `angular:script/global`, `sass:`): Modules loaded through
18
+ * custom esbuild namespaces that resolve to disk source files.
19
+ * 3. **Virtual Modules & Remote Resources** (e.g. `angular:styles/component`, `css-inline-fonts`): Synthetic
20
+ * in-memory modules or remote asset declarations whose compiled outcomes depend on parent source file
21
+ * dependencies (`watchFiles`) or global configuration options (`globalConfigHash`).
22
+ *
23
+ * Key Exported Types:
24
+ * - {@link PersistentLoadResultCache}: Primary two-tier cache manager implementing `LoadResultCache`.
25
+ * - {@link CachedLoadResultEntry}: Serialized structure persisted to disk for cached esbuild `OnLoadResult` items.
26
+ * - {@link CachedDependencyMetadata}: Per-dependency file metadata (`hash`, `mtimeMs`, `size`) used for cache validation and healing.
27
+ */
28
+ import type { Loader, OnLoadResult, PartialMessage } from 'esbuild';
29
+ import type { Cache as PersistentCacheStore } from './cache';
30
+ import { LoadResultCache } from './load-result-cache';
31
+ /**
32
+ * Metadata for a single watch file dependency.
33
+ */
34
+ export interface CachedDependencyMetadata {
35
+ hash: string;
36
+ mtimeMs: number;
37
+ size: number;
38
+ }
39
+ /**
40
+ * Serialized representation of any esbuild load result stored in persistent cache.
41
+ */
42
+ export interface CachedLoadResultEntry {
43
+ /** Compiled output string or binary data */
44
+ contents: string | Uint8Array;
45
+ /** esbuild loader type */
46
+ loader?: Loader;
47
+ /** Absolute paths of all imported/watched dependency files */
48
+ watchFiles: string[];
49
+ /** Absolute paths of all watched directories */
50
+ watchDirs?: string[];
51
+ /** Map of watchFile absolute paths to dependency metadata */
52
+ watchFilesMetadata: Record<string, CachedDependencyMetadata>;
53
+ /** Warnings emitted during load processing */
54
+ warnings?: PartialMessage[];
55
+ /** Errors emitted during load processing */
56
+ errors?: PartialMessage[];
57
+ }
58
+ /**
59
+ * Normalizes a namespaced cache key into a valid disk file path if one exists.
60
+ * Handles 'file:' URIs, OS platform differences, and custom plugin namespaces.
61
+ */
62
+ export declare function extractDiskFilePath(path: string): string | undefined;
63
+ export declare class PersistentLoadResultCache implements LoadResultCache {
64
+ private readonly persistentStore?;
65
+ private readonly globalConfigHash;
66
+ private readonly memoryCache;
67
+ constructor(persistentStore?: PersistentCacheStore<CachedLoadResultEntry> | undefined, globalConfigHash?: string);
68
+ /**
69
+ * Retrieves a load result from cache.
70
+ * Checks L1 memory cache first for immediate watch-mode speed, falling back to L2 persistent disk
71
+ * store on L1 cache miss. L2 persistent cache entries are validated against dependency metadata.
72
+ */
73
+ get(path: string): Promise<OnLoadResult | undefined>;
74
+ /**
75
+ * Stores a load result in both L1 memory cache and L2 persistent disk store.
76
+ */
77
+ put(path: string, result: OnLoadResult): Promise<void>;
78
+ /**
79
+ * Invalidates cached entries affected by a modified dependency file during watch mode.
80
+ *
81
+ * Note: Invalidation of L1 memory cache is sufficient for active watch mode.
82
+ * Cross-process/cold start stale entries in L2 persistent store are automatically handled
83
+ * during `get()` via dependency metadata verification (`validateAndHealCacheEntry`).
84
+ */
85
+ invalidate(path: string): boolean;
86
+ get watchFiles(): ReadonlyArray<string>;
87
+ }