@angular/core 20.0.2 → 20.0.4
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/api.d-B0vztftH.d.ts +1 -1
- package/chrome_dev_tools_performance.d-DvzAxqBc.d.ts +1 -1
- package/discovery.d-C5dkZ8lJ.d.ts +1 -1
- package/event_dispatcher.d-BReQpZfC.d.ts +1 -1
- package/fesm2022/attribute-BWp59EjE.mjs +1 -1
- package/fesm2022/attribute-BWp59EjE.mjs.map +1 -1
- package/fesm2022/core.mjs +14 -16
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/{debug_node-JnOYh9kg.mjs → debug_node-DTOmNMDH.mjs} +9 -12
- package/fesm2022/debug_node-DTOmNMDH.mjs.map +1 -0
- package/fesm2022/primitives/di.mjs +1 -1
- package/fesm2022/primitives/di.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/{resource-BarKSp_3.mjs → resource-DalzMB4W.mjs} +3 -3
- package/fesm2022/resource-DalzMB4W.mjs.map +1 -0
- package/fesm2022/{root_effect_scheduler-DCy1y1b8.mjs → root_effect_scheduler-CWV89N3_.mjs} +10 -3
- package/fesm2022/root_effect_scheduler-CWV89N3_.mjs.map +1 -0
- package/fesm2022/rxjs-interop.mjs +3 -3
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/signal-nCiHhWf6.mjs +1 -1
- package/fesm2022/signal-nCiHhWf6.mjs.map +1 -1
- package/fesm2022/testing.mjs +3 -3
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/untracked-DmD_2MlC.mjs +1 -1
- package/fesm2022/untracked-DmD_2MlC.mjs.map +1 -1
- package/fesm2022/weak_ref-BaIq-pgY.mjs +1 -1
- package/fesm2022/weak_ref-BaIq-pgY.mjs.map +1 -1
- package/graph.d-BcIOep_B.d.ts +1 -1
- package/index.d.ts +1 -4
- package/package.json +2 -2
- package/primitives/di/index.d.ts +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/apply_import_manager-DT15wSJs.cjs +1 -1
- package/schematics/bundles/checker-Bu1Wu4f7.cjs +2 -2
- package/schematics/bundles/cleanup-unused-imports.cjs +31 -17
- package/schematics/bundles/compiler_host-C_4Iw5UD.cjs +1 -1
- package/schematics/bundles/control-flow-migration.cjs +1 -1
- package/schematics/bundles/document-core.cjs +1 -1
- package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
- package/schematics/bundles/index-CAM7Xiu7.cjs +1 -1
- package/schematics/bundles/index-CCX_cTPD.cjs +11 -11
- package/schematics/bundles/inject-flags.cjs +1 -1
- package/schematics/bundles/inject-migration.cjs +7 -2
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/migrate_ts_type_references-DSqmdRpG.cjs +1 -1
- package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
- package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +1 -1
- package/schematics/bundles/project_paths-BjQra9mv.cjs +1 -1
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +1 -1
- package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
- package/schematics/bundles/signal-input-migration.cjs +1 -1
- package/schematics/bundles/signal-queries-migration.cjs +1 -1
- package/schematics/bundles/signals.cjs +1 -1
- package/schematics/bundles/standalone-migration.cjs +1 -1
- package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
- package/schematics/bundles/test-bed-get.cjs +1 -1
- package/signal.d-BcmOdASA.d.ts +1 -1
- package/testing/index.d.ts +1 -1
- package/weak_ref.d-eGOEP9S1.d.ts +1 -1
- package/fesm2022/debug_node-JnOYh9kg.mjs.map +0 -1
- package/fesm2022/resource-BarKSp_3.mjs.map +0 -1
- package/fesm2022/root_effect_scheduler-DCy1y1b8.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"untracked-DmD_2MlC.mjs","sources":["../../../../../
|
|
1
|
+
{"version":3,"file":"untracked-DmD_2MlC.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/core/primitives/signals/src/linked_signal.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/core/primitives/signals/src/untracked.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {COMPUTING, ERRORED, UNSET} from './computed';\nimport {defaultEquals, ValueEqualityFn} from './equality';\nimport {\n consumerAfterComputation,\n consumerBeforeComputation,\n producerAccessed,\n producerMarkClean,\n producerUpdateValueVersion,\n REACTIVE_NODE,\n ReactiveNode,\n runPostProducerCreatedFn,\n SIGNAL,\n} from './graph';\nimport {signalSetFn, signalUpdateFn} from './signal';\n\n// Required as the signals library is in a separate package, so we need to explicitly ensure the\n// global `ngDevMode` type is defined.\ndeclare const ngDevMode: boolean | undefined;\n\nexport type ComputationFn<S, D> = (source: S, previous?: {source: S; value: D}) => D;\n\nexport interface LinkedSignalNode<S, D> extends ReactiveNode {\n /**\n * Value of the source signal that was used to derive the computed value.\n */\n sourceValue: S;\n\n /**\n * Current state value, or one of the sentinel values (`UNSET`, `COMPUTING`,\n * `ERROR`).\n */\n value: D;\n\n /**\n * If `value` is `ERRORED`, the error caught from the last computation attempt which will\n * be re-thrown.\n */\n error: unknown;\n\n /**\n * The source function represents reactive dependency based on which the linked state is reset.\n */\n source: () => S;\n\n /**\n * The computation function which will produce a new value based on the source and, optionally - previous values.\n */\n computation: ComputationFn<S, D>;\n\n equal: ValueEqualityFn<D>;\n}\n\nexport type LinkedSignalGetter<S, D> = (() => D) & {\n [SIGNAL]: LinkedSignalNode<S, D>;\n};\n\nexport function createLinkedSignal<S, D>(\n sourceFn: () => S,\n computationFn: ComputationFn<S, D>,\n equalityFn?: ValueEqualityFn<D>,\n): LinkedSignalGetter<S, D> {\n const node: LinkedSignalNode<S, D> = Object.create(LINKED_SIGNAL_NODE);\n\n node.source = sourceFn;\n node.computation = computationFn;\n if (equalityFn != undefined) {\n node.equal = equalityFn;\n }\n\n const linkedSignalGetter = () => {\n // Check if the value needs updating before returning it.\n producerUpdateValueVersion(node);\n\n // Record that someone looked at this signal.\n producerAccessed(node);\n\n if (node.value === ERRORED) {\n throw node.error;\n }\n\n return node.value;\n };\n\n const getter = linkedSignalGetter as LinkedSignalGetter<S, D>;\n getter[SIGNAL] = node;\n if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n const debugName = node.debugName ? ' (' + node.debugName + ')' : '';\n getter.toString = () => `[LinkedSignal${debugName}: ${node.value}]`;\n }\n\n runPostProducerCreatedFn(node);\n\n return getter;\n}\n\nexport function linkedSignalSetFn<S, D>(node: LinkedSignalNode<S, D>, newValue: D) {\n producerUpdateValueVersion(node);\n signalSetFn(node, newValue);\n producerMarkClean(node);\n}\n\nexport function linkedSignalUpdateFn<S, D>(\n node: LinkedSignalNode<S, D>,\n updater: (value: D) => D,\n): void {\n producerUpdateValueVersion(node);\n signalUpdateFn(node, updater);\n producerMarkClean(node);\n}\n\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `LINKED_SIGNAL_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nexport const LINKED_SIGNAL_NODE: object = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n value: UNSET,\n dirty: true,\n error: null,\n equal: defaultEquals,\n kind: 'linkedSignal',\n\n producerMustRecompute(node: LinkedSignalNode<unknown, unknown>): boolean {\n // Force a recomputation if there's no current value, or if the current value is in the\n // process of being calculated (which should throw an error).\n return node.value === UNSET || node.value === COMPUTING;\n },\n\n producerRecomputeValue(node: LinkedSignalNode<unknown, unknown>): void {\n if (node.value === COMPUTING) {\n // Our computation somehow led to a cyclic read of itself.\n throw new Error(\n typeof ngDevMode !== 'undefined' && ngDevMode ? 'Detected cycle in computations.' : '',\n );\n }\n\n const oldValue = node.value;\n node.value = COMPUTING;\n\n const prevConsumer = consumerBeforeComputation(node);\n let newValue: unknown;\n try {\n const newSourceValue = node.source();\n const prev =\n oldValue === UNSET || oldValue === ERRORED\n ? undefined\n : {\n source: node.sourceValue,\n value: oldValue,\n };\n newValue = node.computation(newSourceValue, prev);\n node.sourceValue = newSourceValue;\n } catch (err) {\n newValue = ERRORED;\n node.error = err;\n } finally {\n consumerAfterComputation(node, prevConsumer);\n }\n\n if (oldValue !== UNSET && newValue !== ERRORED && node.equal(oldValue, newValue)) {\n // No change to `valueVersion` - old and new values are\n // semantically equivalent.\n node.value = oldValue;\n return;\n }\n\n node.value = newValue;\n node.version++;\n },\n };\n})();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {setActiveConsumer} from './graph';\n\n/**\n * Execute an arbitrary function in a non-reactive (non-tracking) context. The executed function\n * can, optionally, return a value.\n */\nexport function untracked<T>(nonReactiveReadsFn: () => T): T {\n const prevConsumer = setActiveConsumer(null);\n // We are not trying to catch any particular errors here, just making sure that the consumers\n // stack is restored in case of errors.\n try {\n return nonReactiveReadsFn();\n } finally {\n setActiveConsumer(prevConsumer);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weak_ref-BaIq-pgY.mjs","sources":["../../../../../
|
|
1
|
+
{"version":3,"file":"weak_ref-BaIq-pgY.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/core/primitives/signals/src/weak_ref.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nexport function setAlternateWeakRefImpl(impl: unknown) {\n // TODO: remove this function\n}\n"],"names":[],"mappings":";;;;;;AAQM,SAAU,uBAAuB,CAAC,IAAa,EAAA;;AAErD;;;;"}
|
package/graph.d-BcIOep_B.d.ts
CHANGED
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.
|
|
2
|
+
* @license Angular v20.0.4
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -4559,7 +4559,6 @@ declare const LOCALE_ID: InjectionToken<string>;
|
|
|
4559
4559
|
* In standalone apps:
|
|
4560
4560
|
* ```ts
|
|
4561
4561
|
* import { LOCALE_ID, ApplicationConfig } from '@angular/core';
|
|
4562
|
-
* import { AppModule } from './app/app.module';
|
|
4563
4562
|
*
|
|
4564
4563
|
* const appConfig: ApplicationConfig = {
|
|
4565
4564
|
* providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]
|
|
@@ -4590,7 +4589,6 @@ declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>;
|
|
|
4590
4589
|
* In standalone apps:
|
|
4591
4590
|
* ```ts
|
|
4592
4591
|
* import { LOCALE_ID, ApplicationConfig } from '@angular/core';
|
|
4593
|
-
* import { AppModule } from './app/app.module';
|
|
4594
4592
|
*
|
|
4595
4593
|
* const appConfig: ApplicationConfig = {
|
|
4596
4594
|
* providers: [{provide: TRANSLATIONS, useValue: translations }]
|
|
@@ -4625,7 +4623,6 @@ declare const TRANSLATIONS: InjectionToken<string>;
|
|
|
4625
4623
|
* In standalone apps:
|
|
4626
4624
|
* ```ts
|
|
4627
4625
|
* import { LOCALE_ID, ApplicationConfig } from '@angular/core';
|
|
4628
|
-
* import { AppModule } from './app/app.module';
|
|
4629
4626
|
*
|
|
4630
4627
|
* const appConfig: ApplicationConfig = {
|
|
4631
4628
|
* providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/core",
|
|
3
|
-
"version": "20.0.
|
|
3
|
+
"version": "20.0.4",
|
|
4
4
|
"description": "Angular - the core framework",
|
|
5
5
|
"author": "angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"tslib": "^2.3.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@angular/compiler": "20.0.
|
|
49
|
+
"@angular/compiler": "20.0.4",
|
|
50
50
|
"rxjs": "^6.5.3 || ^7.4.0",
|
|
51
51
|
"zone.js": "~0.15.0"
|
|
52
52
|
},
|
package/primitives/di/index.d.ts
CHANGED
package/rxjs-interop/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.
|
|
3
|
+
* @license Angular v20.0.4
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -32166,7 +32166,7 @@ function isAttrNode(ast) {
|
|
|
32166
32166
|
* @description
|
|
32167
32167
|
* Entry point for all public APIs of the compiler package.
|
|
32168
32168
|
*/
|
|
32169
|
-
new Version('20.0.
|
|
32169
|
+
new Version('20.0.4');
|
|
32170
32170
|
|
|
32171
32171
|
//////////////////////////////////////
|
|
32172
32172
|
// THIS FILE HAS GLOBAL SIDE EFFECT //
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.
|
|
3
|
+
* @license Angular v20.0.4
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -15,7 +15,6 @@ var checker = require('./checker-Bu1Wu4f7.cjs');
|
|
|
15
15
|
var index = require('./index-CCX_cTPD.cjs');
|
|
16
16
|
require('path');
|
|
17
17
|
var apply_import_manager = require('./apply_import_manager-DT15wSJs.cjs');
|
|
18
|
-
var leading_space = require('./leading_space-D9nQ8UQC.cjs');
|
|
19
18
|
require('@angular-devkit/schematics');
|
|
20
19
|
require('./project_tsconfig_paths-CDVxT6Ov.cjs');
|
|
21
20
|
require('fs');
|
|
@@ -207,7 +206,10 @@ class UnusedImportsMigration extends project_paths.TsurgeFunnelMigration {
|
|
|
207
206
|
// Filter out the unused identifiers from an array.
|
|
208
207
|
partialRemovals.forEach((toRemove, parent) => {
|
|
209
208
|
toRemove.forEach((node) => {
|
|
210
|
-
replacements.push(new project_paths.Replacement(project_paths.projectFile(sourceFile, info), getArrayElementRemovalUpdate(node,
|
|
209
|
+
replacements.push(new project_paths.Replacement(project_paths.projectFile(sourceFile, info), getArrayElementRemovalUpdate(node, sourceText)));
|
|
210
|
+
});
|
|
211
|
+
stripTrailingSameLineCommas(parent, toRemove, sourceText)?.forEach((update) => {
|
|
212
|
+
replacements.push(new project_paths.Replacement(project_paths.projectFile(sourceFile, info), update));
|
|
211
213
|
});
|
|
212
214
|
});
|
|
213
215
|
// Attempt to clean up unused import declarations. Note that this isn't foolproof, because we
|
|
@@ -229,7 +231,7 @@ class UnusedImportsMigration extends project_paths.TsurgeFunnelMigration {
|
|
|
229
231
|
}
|
|
230
232
|
}
|
|
231
233
|
/** Generates a `TextUpdate` for the removal of an array element. */
|
|
232
|
-
function getArrayElementRemovalUpdate(node,
|
|
234
|
+
function getArrayElementRemovalUpdate(node, sourceText) {
|
|
233
235
|
let position = node.getStart();
|
|
234
236
|
let end = node.getEnd();
|
|
235
237
|
let toInsert = '';
|
|
@@ -249,27 +251,39 @@ function getArrayElementRemovalUpdate(node, parent, sourceText) {
|
|
|
249
251
|
break;
|
|
250
252
|
}
|
|
251
253
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
254
|
+
return new project_paths.TextUpdate({ position, end, toInsert });
|
|
255
|
+
}
|
|
256
|
+
/** Returns `TextUpdate`s that will remove any leftover trailing commas on the same line. */
|
|
257
|
+
function stripTrailingSameLineCommas(node, toRemove, sourceText) {
|
|
258
|
+
let updates = null;
|
|
259
|
+
for (let i = 0; i < node.elements.length; i++) {
|
|
260
|
+
// Skip over elements that are being removed already.
|
|
261
|
+
if (toRemove.has(node.elements[i])) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
// An element might have a trailing comma if all elements after it have been removed.
|
|
265
|
+
const mightHaveTrailingComma = node.elements.slice(i + 1).every((e) => toRemove.has(e));
|
|
266
|
+
if (!mightHaveTrailingComma) {
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
const position = node.elements[i].getEnd();
|
|
270
|
+
let end = position;
|
|
271
|
+
// If the item might have a trailing comma, start looking after it until we hit a line break.
|
|
272
|
+
for (let charIndex = position; charIndex < node.getEnd(); charIndex++) {
|
|
273
|
+
const char = sourceText[charIndex];
|
|
259
274
|
if (char === ',' || char === ' ') {
|
|
260
|
-
|
|
275
|
+
end++;
|
|
261
276
|
}
|
|
262
277
|
else {
|
|
263
|
-
if (
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
toInsert = leading_space.getLeadingLineWhitespaceOfNode(node);
|
|
278
|
+
if (char !== '\n' && position !== end) {
|
|
279
|
+
updates ??= [];
|
|
280
|
+
updates.push(new project_paths.TextUpdate({ position, end, toInsert: '' }));
|
|
267
281
|
}
|
|
268
282
|
break;
|
|
269
283
|
}
|
|
270
284
|
}
|
|
271
285
|
}
|
|
272
|
-
return
|
|
286
|
+
return updates;
|
|
273
287
|
}
|
|
274
288
|
|
|
275
289
|
function migrate() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.
|
|
3
|
+
* @license Angular v20.0.4
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -891,7 +891,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
|
|
|
891
891
|
function compileDeclareClassMetadata(metadata) {
|
|
892
892
|
const definitionMap = new checker.DefinitionMap();
|
|
893
893
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
|
|
894
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
894
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
895
895
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
896
896
|
definitionMap.set('type', metadata.type);
|
|
897
897
|
definitionMap.set('decorators', metadata.decorators);
|
|
@@ -909,7 +909,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
|
|
|
909
909
|
callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? checker.literal(null));
|
|
910
910
|
callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? checker.literal(null));
|
|
911
911
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
|
|
912
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
912
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
913
913
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
914
914
|
definitionMap.set('type', metadata.type);
|
|
915
915
|
definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
|
|
@@ -1004,7 +1004,7 @@ function createDirectiveDefinitionMap(meta) {
|
|
|
1004
1004
|
const definitionMap = new checker.DefinitionMap();
|
|
1005
1005
|
const minVersion = getMinimumVersionForPartialOutput(meta);
|
|
1006
1006
|
definitionMap.set('minVersion', checker.literal(minVersion));
|
|
1007
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
1007
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
1008
1008
|
// e.g. `type: MyDirective`
|
|
1009
1009
|
definitionMap.set('type', meta.type.value);
|
|
1010
1010
|
if (meta.isStandalone !== undefined) {
|
|
@@ -1420,7 +1420,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
|
|
|
1420
1420
|
function compileDeclareFactoryFunction(meta) {
|
|
1421
1421
|
const definitionMap = new checker.DefinitionMap();
|
|
1422
1422
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
|
|
1423
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
1423
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
1424
1424
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1425
1425
|
definitionMap.set('type', meta.type.value);
|
|
1426
1426
|
definitionMap.set('deps', compileDependencies(meta.deps));
|
|
@@ -1455,7 +1455,7 @@ function compileDeclareInjectableFromMetadata(meta) {
|
|
|
1455
1455
|
function createInjectableDefinitionMap(meta) {
|
|
1456
1456
|
const definitionMap = new checker.DefinitionMap();
|
|
1457
1457
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
|
|
1458
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
1458
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
1459
1459
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1460
1460
|
definitionMap.set('type', meta.type.value);
|
|
1461
1461
|
// Only generate providedIn property if it has a non-null value
|
|
@@ -1506,7 +1506,7 @@ function compileDeclareInjectorFromMetadata(meta) {
|
|
|
1506
1506
|
function createInjectorDefinitionMap(meta) {
|
|
1507
1507
|
const definitionMap = new checker.DefinitionMap();
|
|
1508
1508
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
|
|
1509
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
1509
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
1510
1510
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1511
1511
|
definitionMap.set('type', meta.type.value);
|
|
1512
1512
|
definitionMap.set('providers', meta.providers);
|
|
@@ -1539,7 +1539,7 @@ function createNgModuleDefinitionMap(meta) {
|
|
|
1539
1539
|
throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
|
|
1540
1540
|
}
|
|
1541
1541
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
|
|
1542
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
1542
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
1543
1543
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1544
1544
|
definitionMap.set('type', meta.type.value);
|
|
1545
1545
|
// We only generate the keys in the metadata if the arrays contain values.
|
|
@@ -1590,7 +1590,7 @@ function compileDeclarePipeFromMetadata(meta) {
|
|
|
1590
1590
|
function createPipeDefinitionMap(meta) {
|
|
1591
1591
|
const definitionMap = new checker.DefinitionMap();
|
|
1592
1592
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION));
|
|
1593
|
-
definitionMap.set('version', checker.literal('20.0.
|
|
1593
|
+
definitionMap.set('version', checker.literal('20.0.4'));
|
|
1594
1594
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1595
1595
|
// e.g. `type: MyPipe`
|
|
1596
1596
|
definitionMap.set('type', meta.type.value);
|
|
@@ -10935,7 +10935,7 @@ class PipeDecoratorHandler {
|
|
|
10935
10935
|
* @description
|
|
10936
10936
|
* Entry point for all public APIs of the compiler-cli package.
|
|
10937
10937
|
*/
|
|
10938
|
-
new checker.Version('20.0.
|
|
10938
|
+
new checker.Version('20.0.4');
|
|
10939
10939
|
|
|
10940
10940
|
/**
|
|
10941
10941
|
* Whether a given decorator should be treated as an Angular decorator.
|
|
@@ -18974,7 +18974,7 @@ var semver = /*@__PURE__*/getDefaultExportFromCjs(semverExports);
|
|
|
18974
18974
|
* @param minVersion Minimum required version for the feature.
|
|
18975
18975
|
*/
|
|
18976
18976
|
function coreVersionSupportsFeature(coreVersion, minVersion) {
|
|
18977
|
-
// A version of `20.0.
|
|
18977
|
+
// A version of `20.0.4` usually means that core is at head so it supports
|
|
18978
18978
|
// all features. Use string interpolation prevent the placeholder from being replaced
|
|
18979
18979
|
// with the current version during build time.
|
|
18980
18980
|
if (coreVersion === `0.0.0-${'PLACEHOLDER'}`) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.
|
|
3
|
+
* @license Angular v20.0.4
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -985,7 +985,7 @@ function migrateInjectDecorator(firstArg, type, localTypeChecker) {
|
|
|
985
985
|
let typeArguments = null;
|
|
986
986
|
// `inject` no longer officially supports string injection so we need
|
|
987
987
|
// to cast to any. We maintain the type by passing it as a generic.
|
|
988
|
-
if (ts.isStringLiteralLike(firstArg)) {
|
|
988
|
+
if (ts.isStringLiteralLike(firstArg) || isStringType(firstArg, localTypeChecker)) {
|
|
989
989
|
typeArguments = [type || ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)];
|
|
990
990
|
injectedType += ' as any';
|
|
991
991
|
}
|
|
@@ -1235,6 +1235,11 @@ function replaceParameterReferencesInInitializer(initializer, constructor, local
|
|
|
1235
1235
|
}
|
|
1236
1236
|
return result.join('this.');
|
|
1237
1237
|
}
|
|
1238
|
+
function isStringType(node, checker) {
|
|
1239
|
+
const type = checker.getTypeAtLocation(node);
|
|
1240
|
+
// stringLiteral here is to cover const strings inferred as literal type.
|
|
1241
|
+
return !!(type.flags & ts.TypeFlags.String || type.flags & ts.TypeFlags.StringLiteral);
|
|
1242
|
+
}
|
|
1238
1243
|
|
|
1239
1244
|
function migrate(options) {
|
|
1240
1245
|
return async (tree) => {
|
package/signal.d-BcmOdASA.d.ts
CHANGED
package/testing/index.d.ts
CHANGED
package/weak_ref.d-eGOEP9S1.d.ts
CHANGED