@angular/build 22.1.3 → 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 (49) hide show
  1. package/package.json +17 -19
  2. package/src/private.d.ts +0 -1
  3. package/src/private.js +0 -2
  4. package/src/private.js.map +1 -1
  5. package/src/tools/angular/linker/oxc-ast-host.d.ts +33 -0
  6. package/src/tools/angular/linker/oxc-ast-host.js +204 -0
  7. package/src/tools/angular/linker/oxc-ast-host.js.map +1 -0
  8. package/src/tools/angular/linker/oxc-linker.d.ts +25 -0
  9. package/src/tools/angular/linker/oxc-linker.js +145 -0
  10. package/src/tools/angular/linker/oxc-linker.js.map +1 -0
  11. package/src/tools/angular/linker/string-ast-factory.d.ts +86 -0
  12. package/src/tools/angular/linker/string-ast-factory.js +223 -0
  13. package/src/tools/angular/linker/string-ast-factory.js.map +1 -0
  14. package/src/tools/babel/plugins/types.d.ts +8 -8
  15. package/src/tools/esbuild/javascript-transformer-worker.js +78 -83
  16. package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
  17. package/src/tools/esbuild/load-result-cache.d.ts +1 -1
  18. package/src/tools/esbuild/load-result-cache.js +4 -2
  19. package/src/tools/esbuild/load-result-cache.js.map +1 -1
  20. package/src/tools/esbuild/persistent-load-result-cache.d.ts +87 -0
  21. package/src/tools/esbuild/persistent-load-result-cache.js +267 -0
  22. package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -0
  23. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.d.ts +35 -0
  24. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js +68 -0
  25. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js.map +1 -0
  26. package/src/utils/environment-options.d.ts +6 -0
  27. package/src/utils/environment-options.js +7 -1
  28. package/src/utils/environment-options.js.map +1 -1
  29. package/src/utils/normalize-cache.js +1 -1
  30. package/src/utils/version.js +1 -1
  31. package/src/tools/babel/plugins/add-code-coverage.d.ts +0 -14
  32. package/src/tools/babel/plugins/add-code-coverage.js +0 -44
  33. package/src/tools/babel/plugins/add-code-coverage.js.map +0 -1
  34. package/src/tools/babel/plugins/adjust-static-class-members.d.ts +0 -25
  35. package/src/tools/babel/plugins/adjust-static-class-members.js +0 -349
  36. package/src/tools/babel/plugins/adjust-static-class-members.js.map +0 -1
  37. package/src/tools/babel/plugins/adjust-typescript-enums.d.ts +0 -21
  38. package/src/tools/babel/plugins/adjust-typescript-enums.js +0 -113
  39. package/src/tools/babel/plugins/adjust-typescript-enums.js.map +0 -1
  40. package/src/tools/babel/plugins/elide-angular-metadata.d.ts +0 -23
  41. package/src/tools/babel/plugins/elide-angular-metadata.js +0 -110
  42. package/src/tools/babel/plugins/elide-angular-metadata.js.map +0 -1
  43. package/src/tools/babel/plugins/index.d.ts +0 -11
  44. package/src/tools/babel/plugins/index.js +0 -22
  45. package/src/tools/babel/plugins/index.js.map +0 -1
  46. package/src/tools/babel/plugins/pure-toplevel-functions.d.ts +0 -13
  47. package/src/tools/babel/plugins/pure-toplevel-functions.js +0 -128
  48. package/src/tools/babel/plugins/pure-toplevel-functions.js.map +0 -1
  49. package/src/tools/babel/typings.d.ts +0 -21
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.StringAstFactory = void 0;
11
+ /**
12
+ * An implementation of `AstFactory` that generates JavaScript code strings directly.
13
+ */
14
+ class StringAstFactory {
15
+ sourceCode;
16
+ constructor(sourceCode = '') {
17
+ this.sourceCode = sourceCode;
18
+ }
19
+ render(expr) {
20
+ if (typeof expr === 'string') {
21
+ return expr;
22
+ }
23
+ if (typeof expr === 'object' &&
24
+ expr !== null &&
25
+ typeof expr.start === 'number' &&
26
+ typeof expr.end === 'number') {
27
+ const { start, end } = expr;
28
+ return this.sourceCode.slice(start, end);
29
+ }
30
+ return String(expr);
31
+ }
32
+ /**
33
+ * Wraps an expression in parentheses if it has syntax or operator precedence
34
+ * traps when used as the receiver/callee of property access, element access,
35
+ * call chains, `new` expressions, or tagged templates.
36
+ *
37
+ * For example, arrow functions (`(() => {}).foo`), numbers (`(5).foo`), object
38
+ * literals (`({ a: 1 }).foo`), and unary operators (`(void 0)()`) require
39
+ * parenthesization when used as receivers.
40
+ */
41
+ wrapReceiver(receiver) {
42
+ let rendered = this.render(receiver);
43
+ if (rendered.startsWith('function') ||
44
+ rendered.startsWith('{') ||
45
+ rendered.includes('=>') ||
46
+ /^(?:typeof|void|delete|new|await|throw|return)\b/.test(rendered) ||
47
+ /^[!~+-]/.test(rendered) ||
48
+ /^\d/.test(rendered)) {
49
+ rendered = `(${rendered})`;
50
+ }
51
+ return rendered;
52
+ }
53
+ /**
54
+ * Wraps an expression in parentheses if it is an un-parenthesized complex
55
+ * operand (such as an un-parenthesized binary, logical, or assignment expression)
56
+ * to prevent operator precedence inversion when embedded inside an outer expression.
57
+ *
58
+ * Atomic expressions (identifiers, member/element access chains, and simple
59
+ * literals matching `/^[a-zA-Z0-9_$.[\]"'`]+$/`) and already-parenthesized
60
+ * expressions are returned as-is.
61
+ */
62
+ wrapOperand(expr) {
63
+ const rendered = this.render(expr);
64
+ if ((rendered.startsWith('(') && rendered.endsWith(')')) ||
65
+ /^[a-zA-Z0-9_$.[\]"'`]+$/.test(rendered)) {
66
+ return rendered;
67
+ }
68
+ return `(${rendered})`;
69
+ }
70
+ /**
71
+ * Attaching statement-level comments is a no-op in `StringAstFactory`.
72
+ *
73
+ * Why this is safe:
74
+ * - Load-bearing tree-shaking annotations (`@__PURE__` markers) are explicitly prepended by
75
+ * `createCallExpression` and `createCallChain` whenever `pure: true`.
76
+ * - In `@angular/compiler`, `LeadingComment` is only used for `@ts-ignore` (suppressing
77
+ * TypeScript checker errors in generated `.ts` code) and `webpackChunkName` (in dynamic
78
+ * imports), neither of which occur during `.js`/`.mjs` library partial linking.
79
+ */
80
+ attachComments(_statement, _leadingComments) { }
81
+ createArrayLiteral(elements) {
82
+ return `[${elements.map((e) => this.render(e)).join(', ')}]`;
83
+ }
84
+ createAssignment(target, operator, value) {
85
+ return `(${this.render(target)} ${operator} ${this.render(value)})`;
86
+ }
87
+ createBinaryExpression(leftOperand, operator, rightOperand) {
88
+ return `(${this.wrapOperand(leftOperand)} ${operator} ${this.wrapOperand(rightOperand)})`;
89
+ }
90
+ createBlock(body) {
91
+ return `{\n${body.join('\n')}\n}`;
92
+ }
93
+ createCallExpression(callee, args, pure) {
94
+ const annotation = pure ? '/*@__PURE__*/ ' : '';
95
+ return `${annotation}${this.wrapReceiver(callee)}(${args.map((a) => this.render(a)).join(', ')})`;
96
+ }
97
+ createCallChain(callee, args, pure, isOptional) {
98
+ const annotation = pure ? '/*@__PURE__*/ ' : '';
99
+ const operator = isOptional ? '?.' : '';
100
+ return `${annotation}${this.wrapReceiver(callee)}${operator}(${args.map((a) => this.render(a)).join(', ')})`;
101
+ }
102
+ createConditional(condition, thenExpression, elseExpression) {
103
+ return `(${this.render(condition)} ? ${this.render(thenExpression)} : ${this.render(elseExpression)})`;
104
+ }
105
+ createElementAccess(expression, element) {
106
+ return `${this.wrapReceiver(expression)}[${this.render(element)}]`;
107
+ }
108
+ createElementAccessChain(expression, element, isOptional) {
109
+ const operator = isOptional ? '?.' : '';
110
+ return `${this.wrapReceiver(expression)}${operator}[${this.render(element)}]`;
111
+ }
112
+ createExpressionStatement(expression) {
113
+ return `${this.render(expression)};`;
114
+ }
115
+ createFunctionDeclaration(functionName, parameters, body) {
116
+ const params = parameters.map((p) => p.name).join(', ');
117
+ return `function ${functionName}(${params}) ${body}`;
118
+ }
119
+ createFunctionExpression(functionName, parameters, body) {
120
+ const name = functionName ? ` ${functionName}` : '';
121
+ const params = parameters.map((p) => p.name).join(', ');
122
+ return `function${name}(${params}) ${body}`;
123
+ }
124
+ createArrowFunctionExpression(parameters, body) {
125
+ const params = parameters.map((p) => p.name).join(', ');
126
+ return `(${params}) => ${this.render(body)}`;
127
+ }
128
+ createDynamicImport(url) {
129
+ return `import(${this.render(url)})`;
130
+ }
131
+ createIdentifier(name) {
132
+ return name;
133
+ }
134
+ createIfStatement(condition, thenStatement, elseStatement) {
135
+ const elseClause = elseStatement ? ` else ${elseStatement}` : '';
136
+ return `if (${this.render(condition)}) ${thenStatement}${elseClause}`;
137
+ }
138
+ createLiteral(value) {
139
+ return typeof value === 'string' ? JSON.stringify(value) : String(value);
140
+ }
141
+ createNewExpression(expression, args) {
142
+ return `new ${this.wrapReceiver(expression)}(${args.map((a) => this.render(a)).join(', ')})`;
143
+ }
144
+ createObjectLiteral(properties) {
145
+ const props = properties.map((p) => {
146
+ if (p.kind === 'spread') {
147
+ return `...${this.render(p.expression)}`;
148
+ }
149
+ const key = p.quoted ? JSON.stringify(p.propertyName) : p.propertyName;
150
+ return `${key}: ${this.render(p.value)}`;
151
+ });
152
+ return `{\n${props.join(',\n')}\n}`;
153
+ }
154
+ createParenthesizedExpression(expression) {
155
+ return `(${this.render(expression)})`;
156
+ }
157
+ createPropertyAccess(expression, propertyName) {
158
+ return `${this.wrapReceiver(expression)}.${propertyName}`;
159
+ }
160
+ createPropertyAccessChain(expression, propertyName, isOptional) {
161
+ const operator = isOptional ? '?.' : '.';
162
+ return `${this.wrapReceiver(expression)}${operator}${propertyName}`;
163
+ }
164
+ createReturnStatement(expression) {
165
+ return `return${expression !== null ? ` ${this.render(expression)}` : ''};`;
166
+ }
167
+ createTaggedTemplate(tag, template) {
168
+ return `${this.wrapReceiver(tag)}${this.createTemplateLiteral(template)}`;
169
+ }
170
+ createTemplateLiteral(template) {
171
+ let result = '`';
172
+ for (let i = 0; i < template.elements.length; i++) {
173
+ result += template.elements[i].raw;
174
+ if (i < template.expressions.length) {
175
+ result += `\${${this.render(template.expressions[i])}}`;
176
+ }
177
+ }
178
+ result += '`';
179
+ return result;
180
+ }
181
+ createThrowStatement(expression) {
182
+ return `throw ${this.render(expression)};`;
183
+ }
184
+ createTypeOfExpression(expression) {
185
+ return `typeof ${this.wrapOperand(expression)}`;
186
+ }
187
+ createVoidExpression(expression) {
188
+ return `void ${this.wrapOperand(expression)}`;
189
+ }
190
+ createUnaryExpression(operator, operand) {
191
+ return `${operator}${this.wrapOperand(operand)}`;
192
+ }
193
+ createVariableDeclaration(variableName, initializer, variableType, _type = null) {
194
+ const init = initializer !== null ? ` = ${this.render(initializer)}` : '';
195
+ return `${variableType} ${variableName}${init};`;
196
+ }
197
+ createRegularExpressionLiteral(body, flags) {
198
+ return `/${body}/${flags ?? ''}`;
199
+ }
200
+ createSpreadElement(expression) {
201
+ return `...${this.render(expression)}`;
202
+ }
203
+ createBuiltInType(_type) {
204
+ return '';
205
+ }
206
+ createExpressionType(_expression, _typeParams) {
207
+ return '';
208
+ }
209
+ createArrayType(_elementType) {
210
+ return '';
211
+ }
212
+ createMapType(_valueType) {
213
+ return '';
214
+ }
215
+ transplantType(_type) {
216
+ return '';
217
+ }
218
+ setSourceMapRange(node, _sourceMapRange) {
219
+ return node;
220
+ }
221
+ }
222
+ exports.StringAstFactory = StringAstFactory;
223
+ //# sourceMappingURL=string-ast-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-ast-factory.js","sourceRoot":"","sources":["string-ast-factory.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,14 @@
7
7
  */
8
8
 
9
9
  declare module 'istanbul-lib-instrument' {
10
- export interface Visitor {
11
- enter(path: import('@babel/core').NodePath<types.Program>): void;
12
- exit(path: import('@babel/core').NodePath<types.Program>): void;
10
+ export interface Instrumenter {
11
+ instrumentSync(code: string, filename: string, inputSourceMap?: object): string;
12
+ lastSourceMap(): object | undefined;
13
13
  }
14
14
 
15
- export function programVisitor(
16
- types: typeof import('@babel/core').types,
17
- filePath?: string,
18
- options?: { inputSourceMap?: object | null },
19
- ): Visitor;
15
+ export function createInstrumenter(options?: {
16
+ produceSourceMap?: boolean;
17
+ esModules?: boolean;
18
+ coverageVariable?: string;
19
+ }): Instrumenter;
20
20
  }
@@ -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":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EH,sCAUC;AApFD,sCAA8D;AAC9D,6CAA4C;AAC5C,sDAA8B;AAC9B,+EAAoE;AACpE,uDAAoF;AAcpF,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,aAAa,CAAC;AAEhD,KAAK,UAAU,kBAAkB,CAC/B,QAAgB,EAChB,IAAY,EACZ,iBAA0B;IAE1B,IAAI,CAAC;QACH,IAAI,YAAY,GAAG,yBAAyB,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAA,2BAAa,EAAC,QAAQ,CAAC,CAAC;YAC1C,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;QAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,yBAC9B,YAAY,uCACb,CAA6C,CAAC;QAC/C,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,gBAAgB,EAAE,iBAAiB;YACnC,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAA,+BAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,gBAAgB,GAAG,YAAY,CAAC,cAAc,CAClD,IAAI,EACJ,QAAQ,EACR,cAAmE,CACpE,CAAC;QACF,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAE7C,IAAI,iBAAiB,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE1E,OAAO,gBAAgB,GAAG,uDAAuD,SAAS,EAAE,CAAC;QAC/F,CAAC;QAED,OAAO,IAAA,mCAAsB,EAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,oHAAoH,EACpH,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAEc,KAAK,UAAU,mBAAmB,CAC/C,OAAmC;IAEnC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5E,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnF,kDAAkD;IAClD,OAAO,iBAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,IAAI,eAA6E,CAAC;AAElF,KAAK,UAAU,uBAAuB,CACpC,QAAgB,EAChB,IAAY,EACZ,OAA8D;IAE9D,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GACrB,OAAO,CAAC,SAAS;QACjB,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/E,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClC,IAAI,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,uCAAc,EAAE,CAAC;YACnB,MAAM,EAAE,wBAAwB,EAAE,GAAG,wDAAa,oCAAoC,GAAC,CAAC;YACxF,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,wDAAa,uBAAuB,GAAC,CAAC;YAE1E,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE;gBACxC,QAAQ;gBACR,cAAc,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAc;gBACpE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;gBAChD,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,sBAAsB,EAAE,KAAK;gBAC7B,OAAO,EAAE;oBACP,wBAAwB,CAAC;wBACvB,UAAU,EAAE;4BACV,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;4BACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;4BAClB,OAAO,EAAE,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;4BAChD,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;4BACjE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAU,EAAE,EAAE,CAAC,EAAE;yBACnC;wBACV,MAAM,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACxC,aAAa,EAAE,OAAO,CAAC,GAAG;wBAC1B,uFAAuF;wBACvF,aAAa,EAAE,KAAK;qBACrB,CAAe;iBACjB;aACF,CAAC,CAAC;YAEH,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,eAAe,KAAK,wDAAa,iCAAiC,GAAC,CAAC;YACpE,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACzD,SAAS,EAAE,iBAAiB;gBAC5B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACnB,IAAI,iBAAiB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBACpC,IAAI,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC7D,IAAI,IAAI,qEAAqE,SAAS,EAAE,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClC,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,mCAAmC,GAAC,CAAC;QACxE,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;QACrD,MAAM,kBAAkB,GACtB,cAAc,IAAI,qCAAqC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,CAAC,kBAAkB,CAAC;QAE7C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;YACvC,SAAS,EAAE,iBAAiB;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,gBAAgB;SACjB,CAAC,CAAC;QACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEnB,IAAI,iBAAiB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACpC,kDAAkD;YAClD,IAAI,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,IAAI,qEAAqE,SAAS,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,MAAc;IACnD,iEAAiE;IACjE,gDAAgD;IAChD,IAAI,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sEAAsE;IACtE,4EAA4E;IAC5E,uEAAuE;IACvE,OAAO,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AACpD,CAAC"}
@@ -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
  }
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"load-result-cache.js","sourceRoot":"","sources":["load-result-cache.ts"],"names":[],"mappings":"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"}
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
+ }