@angular/core 20.2.0-rc.1 → 20.2.0

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 (69) hide show
  1. package/api.d.d.ts +1 -1
  2. package/chrome_dev_tools_performance.d.d.ts +1 -1
  3. package/discovery.d.d.ts +1 -1
  4. package/event_dispatcher.d.d.ts +1 -1
  5. package/fesm2022/attribute.mjs +1 -1
  6. package/fesm2022/attribute.mjs.map +1 -1
  7. package/fesm2022/core.mjs +4 -4
  8. package/fesm2022/core.mjs.map +1 -1
  9. package/fesm2022/debug_node.mjs +142 -82
  10. package/fesm2022/debug_node.mjs.map +1 -1
  11. package/fesm2022/not_found.mjs +1 -1
  12. package/fesm2022/not_found.mjs.map +1 -1
  13. package/fesm2022/primitives/di.mjs +1 -1
  14. package/fesm2022/primitives/di.mjs.map +1 -1
  15. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  16. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  17. package/fesm2022/primitives/signals.mjs +1 -1
  18. package/fesm2022/primitives/signals.mjs.map +1 -1
  19. package/fesm2022/resource.mjs +1 -1
  20. package/fesm2022/resource.mjs.map +1 -1
  21. package/fesm2022/root_effect_scheduler.mjs +1 -1
  22. package/fesm2022/root_effect_scheduler.mjs.map +1 -1
  23. package/fesm2022/rxjs-interop.mjs +1 -1
  24. package/fesm2022/rxjs-interop.mjs.map +1 -1
  25. package/fesm2022/signal.mjs +1 -1
  26. package/fesm2022/signal.mjs.map +1 -1
  27. package/fesm2022/testing.mjs +1 -1
  28. package/fesm2022/testing.mjs.map +1 -1
  29. package/fesm2022/untracked.mjs +1 -1
  30. package/fesm2022/untracked.mjs.map +1 -1
  31. package/fesm2022/weak_ref.mjs +1 -1
  32. package/fesm2022/weak_ref.mjs.map +1 -1
  33. package/graph.d.d.ts +1 -1
  34. package/index.d.ts +5 -5
  35. package/package.json +2 -2
  36. package/primitives/di/index.d.ts +1 -1
  37. package/primitives/event-dispatch/index.d.ts +1 -1
  38. package/primitives/signals/index.d.ts +1 -1
  39. package/rxjs-interop/index.d.ts +1 -1
  40. package/schematics/bundles/{apply_import_manager-OJAv7nyR.cjs → apply_import_manager-Ch1hTvRS.cjs} +3 -3
  41. package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
  42. package/schematics/bundles/{compiler_host-GMENszSm.cjs → compiler_host-CqB0JPzD.cjs} +2 -2
  43. package/schematics/bundles/control-flow-migration.cjs +3 -3
  44. package/schematics/bundles/document-core.cjs +5 -5
  45. package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
  46. package/schematics/bundles/{index-C0gVsyDQ.cjs → index-COhCBz0q.cjs} +4 -4
  47. package/schematics/bundles/{index-CvCDOy8a.cjs → index-DwItZ4Tw.cjs} +15 -14
  48. package/schematics/bundles/inject-flags.cjs +5 -5
  49. package/schematics/bundles/inject-migration.cjs +3 -3
  50. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  51. package/schematics/bundles/{migrate_ts_type_references-ByPRdLHL.cjs → migrate_ts_type_references-BMhLua30.cjs} +5 -5
  52. package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
  53. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  54. package/schematics/bundles/output-migration.cjs +6 -6
  55. package/schematics/bundles/{project_paths-BfWTWKz0.cjs → project_paths-OWnyHise.cjs} +3 -3
  56. package/schematics/bundles/{project_tsconfig_paths-Bhn4jDr1.cjs → project_tsconfig_paths-BIeidc3E.cjs} +166 -18
  57. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  58. package/schematics/bundles/route-lazy-loading.cjs +3 -3
  59. package/schematics/bundles/router-current-navigation.cjs +4 -4
  60. package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
  61. package/schematics/bundles/signal-input-migration.cjs +7 -7
  62. package/schematics/bundles/signal-queries-migration.cjs +7 -7
  63. package/schematics/bundles/signals.cjs +7 -7
  64. package/schematics/bundles/standalone-migration.cjs +4 -4
  65. package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
  66. package/schematics/bundles/test-bed-get.cjs +4 -4
  67. package/signal.d.d.ts +1 -1
  68. package/testing/index.d.ts +2 -2
  69. package/weak_ref.d.d.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -23108,6 +23108,11 @@ function propagateI18nBlocksToTemplates(unit, subTemplateIndex) {
23108
23108
  subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.emptyView), i18nBlock, op.emptyI18nPlaceholder, subTemplateIndex);
23109
23109
  }
23110
23110
  break;
23111
+ case OpKind.Projection:
23112
+ if (op.fallbackView !== null) {
23113
+ subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.fallbackView), i18nBlock, op.fallbackViewI18nPlaceholder, subTemplateIndex);
23114
+ }
23115
+ break;
23111
23116
  }
23112
23117
  }
23113
23118
  return subTemplateIndex;
@@ -24691,6 +24696,21 @@ function resolvePlaceholdersForView(job, unit, i18nContexts, elements, pendingSt
24691
24696
  // Clear out the pending structural directive now that its been accounted for.
24692
24697
  pendingStructuralDirective = undefined;
24693
24698
  }
24699
+ if (op.fallbackView !== null) {
24700
+ const view = job.views.get(op.fallbackView);
24701
+ if (op.fallbackViewI18nPlaceholder === undefined) {
24702
+ resolvePlaceholdersForView(job, view, i18nContexts, elements);
24703
+ }
24704
+ else {
24705
+ if (currentOps === null) {
24706
+ throw Error('i18n tag placeholder should only occur inside an i18n block');
24707
+ }
24708
+ recordTemplateStart(job, view, op.handle.slot, op.fallbackViewI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);
24709
+ resolvePlaceholdersForView(job, view, i18nContexts, elements);
24710
+ recordTemplateClose(job, view, op.handle.slot, op.fallbackViewI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);
24711
+ pendingStructuralDirective = undefined;
24712
+ }
24713
+ }
24694
24714
  break;
24695
24715
  case OpKind.ConditionalCreate:
24696
24716
  case OpKind.ConditionalBranchCreate:
@@ -26540,10 +26560,16 @@ function ingestHostAttribute(job, name, value, securityContexts) {
26540
26560
  job.root.update.push(attrBinding);
26541
26561
  }
26542
26562
  function ingestHostEvent(job, event) {
26543
- const [phase, target] = event.type !== exports.ParsedEventType.LegacyAnimation
26544
- ? [null, event.targetOrPhase]
26545
- : [event.targetOrPhase, null];
26546
- const eventBinding = createListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), phase, target, true, event.sourceSpan);
26563
+ let eventBinding;
26564
+ if (event.type === exports.ParsedEventType.Animation) {
26565
+ eventBinding = createAnimationListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), event.name.endsWith('enter') ? "enter" /* ir.AnimationKind.ENTER */ : "leave" /* ir.AnimationKind.LEAVE */, event.targetOrPhase, true, event.sourceSpan);
26566
+ }
26567
+ else {
26568
+ const [phase, target] = event.type !== exports.ParsedEventType.LegacyAnimation
26569
+ ? [null, event.targetOrPhase]
26570
+ : [event.targetOrPhase, null];
26571
+ eventBinding = createListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), phase, target, true, event.sourceSpan);
26572
+ }
26547
26573
  job.root.create.push(eventBinding);
26548
26574
  }
26549
26575
  /**
@@ -29598,11 +29624,11 @@ class HtmlAstToIvyAst {
29598
29624
  const templateKey = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length);
29599
29625
  const parsedVariables = [];
29600
29626
  const absoluteValueOffset = attribute.valueSpan
29601
- ? attribute.valueSpan.start.offset
29627
+ ? attribute.valueSpan.fullStart.offset
29602
29628
  : // If there is no value span the attribute does not have a value, like `attr` in
29603
29629
  //`<div attr></div>`. In this case, point to one character beyond the last character of
29604
29630
  // the attribute name.
29605
- attribute.sourceSpan.start.offset + attribute.name.length;
29631
+ attribute.sourceSpan.fullStart.offset + attribute.name.length;
29606
29632
  this.bindingParser.parseInlineTemplateBinding(templateKey, templateValue, attribute.sourceSpan, absoluteValueOffset, [], templateParsedProperties, parsedVariables, true /* isIvyAst */);
29607
29633
  templateVariables.push(...parsedVariables.map((v) => new Variable(v.name, v.value, v.sourceSpan, v.keySpan, v.valueSpan)));
29608
29634
  }
@@ -32789,7 +32815,7 @@ function isAttrNode(ast) {
32789
32815
  * @description
32790
32816
  * Entry point for all public APIs of the compiler package.
32791
32817
  */
32792
- new Version('20.2.0-rc.1');
32818
+ new Version('20.2.0');
32793
32819
 
32794
32820
  //////////////////////////////////////
32795
32821
  // THIS FILE HAS GLOBAL SIDE EFFECT //
@@ -33824,7 +33850,7 @@ class NodeJSPathManipulation {
33824
33850
  // G3-ESM-MARKER: G3 uses CommonJS, but externally everything in ESM.
33825
33851
  // CommonJS/ESM interop for determining the current file name and containing dir.
33826
33852
  const isCommonJS = typeof __filename !== 'undefined';
33827
- const currentFileUrl = isCommonJS ? null : (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('project_tsconfig_paths-Bhn4jDr1.cjs', document.baseURI).href));
33853
+ const currentFileUrl = isCommonJS ? null : (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('project_tsconfig_paths-BIeidc3E.cjs', document.baseURI).href));
33828
33854
  // Note, when this code loads in the browser, `url` may be an empty `{}` due to the Closure shims.
33829
33855
  const currentFileName = isCommonJS
33830
33856
  ? __filename
@@ -41166,6 +41192,46 @@ function isDirectiveDeclaration(node) {
41166
41192
  ts.isVariableDeclaration(node.parent) &&
41167
41193
  hasExpressionIdentifier(sourceFile, node, ExpressionIdentifier.DIRECTIVE));
41168
41194
  }
41195
+ /**
41196
+ * Check if the lastSymbol is an alias of the firstSymbol. For example:
41197
+ *
41198
+ * The NewBarComponent is an alias of BarComponent.
41199
+ *
41200
+ * But the NotAliasBarComponent is not an alias of BarComponent, because
41201
+ * the NotAliasBarComponent is a new variable.
41202
+ *
41203
+ * This should work for most cases.
41204
+ *
41205
+ * https://github.com/microsoft/TypeScript/blob/9e20e032effad965567d4a1e1c30d5433b0a3332/src/compiler/checker.ts#L3638-L3652
41206
+ *
41207
+ * ```
41208
+ * // a.ts
41209
+ * export class BarComponent {};
41210
+ * // b.ts
41211
+ * export {BarComponent as NewBarComponent} from "./a";
41212
+ * // c.ts
41213
+ * import {BarComponent} from "./a"
41214
+ * const NotAliasBarComponent = BarComponent;
41215
+ * export {NotAliasBarComponent};
41216
+ * ```
41217
+ */
41218
+ function isSymbolAliasOf(firstSymbol, lastSymbol, typeChecker) {
41219
+ let currentSymbol = lastSymbol;
41220
+ const seenSymbol = new Set();
41221
+ while (firstSymbol !== currentSymbol &&
41222
+ currentSymbol !== undefined &&
41223
+ currentSymbol.flags & ts.SymbolFlags.Alias) {
41224
+ if (seenSymbol.has(currentSymbol)) {
41225
+ break;
41226
+ }
41227
+ seenSymbol.add(currentSymbol);
41228
+ currentSymbol = typeChecker.getImmediateAliasedSymbol(currentSymbol);
41229
+ if (currentSymbol === firstSymbol) {
41230
+ return true;
41231
+ }
41232
+ }
41233
+ return false;
41234
+ }
41169
41235
 
41170
41236
  const NgOriginalFile = Symbol('NgOriginalFile');
41171
41237
  exports.UpdateMode = void 0;
@@ -50038,11 +50104,11 @@ class TemplateTypeCheckerImpl {
50038
50104
  }
50039
50105
  for (const directiveDecl of directiveDecls) {
50040
50106
  const cachedCompletionEntryInfos = resultingDirectives.get(directiveDecl.ref.node)?.tsCompletionEntryInfos ?? [];
50041
- cachedCompletionEntryInfos.push({
50107
+ appendOrReplaceTsEntryInfo(cachedCompletionEntryInfos, {
50042
50108
  tsCompletionEntryData: data,
50043
50109
  tsCompletionEntrySymbolFileName: symbolFileName,
50044
50110
  tsCompletionEntrySymbolName: symbolName,
50045
- });
50111
+ }, this.programDriver.getProgram());
50046
50112
  if (resultingDirectives.has(directiveDecl.ref.node)) {
50047
50113
  const directiveInfo = resultingDirectives.get(directiveDecl.ref.node);
50048
50114
  resultingDirectives.set(directiveDecl.ref.node, {
@@ -50216,29 +50282,30 @@ class TemplateTypeCheckerImpl {
50216
50282
  * When providing the code action for the directive. All the imports will show for the developer to choose.
50217
50283
  */
50218
50284
  let highestImportPriority = -1;
50219
- const collectImports = (emit, moduleSpecifier) => {
50285
+ const collectImports = (emit, moduleSpecifierDetail) => {
50220
50286
  if (emit === null) {
50221
50287
  return;
50222
50288
  }
50223
50289
  imports.push({
50224
50290
  ...emit,
50225
- moduleSpecifier: moduleSpecifier ?? emit.moduleSpecifier,
50291
+ moduleSpecifier: moduleSpecifierDetail?.moduleSpecifier ?? emit.moduleSpecifier,
50292
+ symbolName: moduleSpecifierDetail?.exportName ?? emit.symbolName,
50226
50293
  });
50227
- if (moduleSpecifier !== undefined && highestImportPriority === -1) {
50294
+ if (moduleSpecifierDetail !== null && highestImportPriority === -1) {
50228
50295
  highestImportPriority = imports.length - 1;
50229
50296
  }
50230
50297
  };
50231
50298
  if (meta.isStandalone || importMode === exports.PotentialImportMode.ForceDirect) {
50232
50299
  const emitted = this.emit(exports.PotentialImportKind.Standalone, toImport, inContext);
50233
- const moduleSpecifier = potentialDirectiveModuleSpecifierResolver?.resolve(toImport, inContext);
50234
- collectImports(emitted, moduleSpecifier);
50300
+ const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(toImport, inContext) ?? null;
50301
+ collectImports(emitted, moduleSpecifierDetail);
50235
50302
  }
50236
50303
  const exportingNgModules = this.ngModuleIndex.getNgModulesExporting(meta.ref.node);
50237
50304
  if (exportingNgModules !== null) {
50238
50305
  for (const exporter of exportingNgModules) {
50239
50306
  const emittedRef = this.emit(exports.PotentialImportKind.NgModule, exporter, inContext);
50240
- const moduleSpecifier = potentialDirectiveModuleSpecifierResolver?.resolve(exporter, inContext);
50241
- collectImports(emittedRef, moduleSpecifier);
50307
+ const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(exporter, inContext) ?? null;
50308
+ collectImports(emittedRef, moduleSpecifierDetail);
50242
50309
  }
50243
50310
  }
50244
50311
  // move the import with module specifier from the tsLs to top in the imports array
@@ -50574,6 +50641,87 @@ function getTheElementTagDeprecatedSuggestionDiagnostics(shimPath, program, file
50574
50641
  function isDeprecatedDiagnostics(diag) {
50575
50642
  return diag.reportsDeprecated !== undefined;
50576
50643
  }
50644
+ /**
50645
+ * Append the ts completion entry into the array only when the new entry's directive
50646
+ * doesn't exist in the array.
50647
+ *
50648
+ * If the new entry's directive already exists, and the entry's symbol is the alias of
50649
+ * the existing entry, the new entry will replace the existing entry.
50650
+ *
50651
+ */
50652
+ function appendOrReplaceTsEntryInfo(tsEntryInfos, newTsEntryInfo, program) {
50653
+ const typeChecker = program.getTypeChecker();
50654
+ const newTsEntryInfoSymbol = getSymbolFromTsEntryInfo(newTsEntryInfo, program);
50655
+ if (newTsEntryInfoSymbol === null) {
50656
+ return;
50657
+ }
50658
+ // Find the index of the first entry that has a matching type.
50659
+ const matchedEntryIndex = tsEntryInfos.findIndex((currentTsEntryInfo) => {
50660
+ const currentTsEntrySymbol = getSymbolFromTsEntryInfo(currentTsEntryInfo, program);
50661
+ if (currentTsEntrySymbol === null) {
50662
+ return false;
50663
+ }
50664
+ return isSymbolTypeMatch(currentTsEntrySymbol, newTsEntryInfoSymbol, typeChecker);
50665
+ });
50666
+ if (matchedEntryIndex === -1) {
50667
+ // No entry with a matching type was found, so append the new entry.
50668
+ tsEntryInfos.push(newTsEntryInfo);
50669
+ return;
50670
+ }
50671
+ // An entry with a matching type was found at matchedEntryIndex.
50672
+ const matchedEntry = tsEntryInfos[matchedEntryIndex];
50673
+ const matchedEntrySymbol = getSymbolFromTsEntryInfo(matchedEntry, program);
50674
+ if (matchedEntrySymbol === null) {
50675
+ // Should not happen based on the findIndex condition, but check defensively.
50676
+ return;
50677
+ }
50678
+ // Check if the `matchedEntrySymbol` is an alias of the `newTsEntryInfoSymbol`.
50679
+ if (isSymbolAliasOf(matchedEntrySymbol, newTsEntryInfoSymbol, typeChecker)) {
50680
+ // The first type-matching entry is an alias, so replace it.
50681
+ tsEntryInfos[matchedEntryIndex] = newTsEntryInfo;
50682
+ return;
50683
+ }
50684
+ // The new entry's symbol is an alias of the existing entry's symbol.
50685
+ // In this case, we prefer to keep the existing entry that was found first
50686
+ // and do not replace it.
50687
+ return;
50688
+ }
50689
+ function getSymbolFromTsEntryInfo(tsInfo, program) {
50690
+ const typeChecker = program.getTypeChecker();
50691
+ const sf = program.getSourceFile(tsInfo.tsCompletionEntrySymbolFileName);
50692
+ if (sf === undefined) {
50693
+ return null;
50694
+ }
50695
+ const sfSymbol = typeChecker.getSymbolAtLocation(sf);
50696
+ if (sfSymbol === undefined) {
50697
+ return null;
50698
+ }
50699
+ return (typeChecker.tryGetMemberInModuleExports(tsInfo.tsCompletionEntrySymbolName, sfSymbol) ?? null);
50700
+ }
50701
+ function getFirstTypeDeclarationOfSymbol(symbol, typeChecker) {
50702
+ const type = typeChecker.getTypeOfSymbol(symbol);
50703
+ return type.getSymbol()?.declarations?.[0];
50704
+ }
50705
+ /**
50706
+ * Check if the two symbols come from the same type node. For example:
50707
+ *
50708
+ * The `NewBarComponent`'s type node is the `BarComponent`.
50709
+ *
50710
+ * ```
50711
+ * // a.ts
50712
+ * export class BarComponent
50713
+ *
50714
+ * // b.ts
50715
+ * import {BarComponent} from "./a"
50716
+ * const NewBarComponent = BarComponent;
50717
+ * export {NewBarComponent}
50718
+ * ```
50719
+ */
50720
+ function isSymbolTypeMatch(first, last, typeChecker) {
50721
+ const firstTypeNode = getFirstTypeDeclarationOfSymbol(first, typeChecker);
50722
+ const lastTypeNode = getFirstTypeDeclarationOfSymbol(last, typeChecker);
50723
+ return firstTypeNode === lastTypeNode && firstTypeNode !== undefined;
50724
+ }
50577
50725
 
50578
50726
  /**
50579
50727
  * Gets all tsconfig paths from a CLI project by reading the workspace configuration
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -9,8 +9,8 @@
9
9
  var schematics = require('@angular-devkit/schematics');
10
10
  var fs = require('fs');
11
11
  var p = require('path');
12
- var compiler_host = require('./compiler_host-GMENszSm.cjs');
13
- var project_tsconfig_paths = require('./project_tsconfig_paths-Bhn4jDr1.cjs');
12
+ var compiler_host = require('./compiler_host-CqB0JPzD.cjs');
13
+ var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
14
14
  var ts = require('typescript');
15
15
  var property_name = require('./property_name-BBwFuqMe.cjs');
16
16
  require('os');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,11 +8,11 @@
8
8
 
9
9
  var ts = require('typescript');
10
10
  require('os');
11
- require('./project_tsconfig_paths-Bhn4jDr1.cjs');
12
- require('./index-CvCDOy8a.cjs');
11
+ require('./project_tsconfig_paths-BIeidc3E.cjs');
12
+ require('./index-DwItZ4Tw.cjs');
13
13
  require('path');
14
14
  require('node:path');
15
- var project_paths = require('./project_paths-BfWTWKz0.cjs');
15
+ var project_paths = require('./project_paths-OWnyHise.cjs');
16
16
  var imports = require('./imports-CIX-JgAN.cjs');
17
17
  var symbol = require('./symbol-VPWguRxr.cjs');
18
18
  require('@angular-devkit/core');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,11 +8,11 @@
8
8
 
9
9
  var ts = require('typescript');
10
10
  require('os');
11
- var project_tsconfig_paths = require('./project_tsconfig_paths-Bhn4jDr1.cjs');
12
- require('./index-CvCDOy8a.cjs');
11
+ var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
12
+ require('./index-DwItZ4Tw.cjs');
13
13
  require('path');
14
14
  require('node:path');
15
- var project_paths = require('./project_paths-BfWTWKz0.cjs');
15
+ var project_paths = require('./project_paths-OWnyHise.cjs');
16
16
  var ng_decorators = require('./ng_decorators-B5HCqr20.cjs');
17
17
  var property_name = require('./property_name-BBwFuqMe.cjs');
18
18
  require('@angular-devkit/core');
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
- var migrate_ts_type_references = require('./migrate_ts_type_references-ByPRdLHL.cjs');
9
+ var migrate_ts_type_references = require('./migrate_ts_type_references-BMhLua30.cjs');
10
10
  var ts = require('typescript');
11
11
  require('os');
12
- var project_tsconfig_paths = require('./project_tsconfig_paths-Bhn4jDr1.cjs');
13
- var index$1 = require('./index-CvCDOy8a.cjs');
12
+ var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
13
+ var index$1 = require('./index-DwItZ4Tw.cjs');
14
14
  require('path');
15
15
  require('node:path');
16
- var project_paths = require('./project_paths-BfWTWKz0.cjs');
17
- var index = require('./index-C0gVsyDQ.cjs');
16
+ var project_paths = require('./project_paths-OWnyHise.cjs');
17
+ var index = require('./index-COhCBz0q.cjs');
18
18
  var assert = require('assert');
19
- var apply_import_manager = require('./apply_import_manager-OJAv7nyR.cjs');
19
+ var apply_import_manager = require('./apply_import_manager-Ch1hTvRS.cjs');
20
20
  require('@angular-devkit/core');
21
21
  require('node:path/posix');
22
22
  require('./leading_space-D9nQ8UQC.cjs');
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
- var project_tsconfig_paths = require('./project_tsconfig_paths-Bhn4jDr1.cjs');
9
+ var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
10
10
  var ts = require('typescript');
11
11
  require('os');
12
- var index$1 = require('./index-CvCDOy8a.cjs');
12
+ var index$1 = require('./index-DwItZ4Tw.cjs');
13
13
  require('path');
14
14
  require('node:path');
15
- var project_paths = require('./project_paths-BfWTWKz0.cjs');
16
- var apply_import_manager = require('./apply_import_manager-OJAv7nyR.cjs');
17
- var migrate_ts_type_references = require('./migrate_ts_type_references-ByPRdLHL.cjs');
15
+ var project_paths = require('./project_paths-OWnyHise.cjs');
16
+ var apply_import_manager = require('./apply_import_manager-Ch1hTvRS.cjs');
17
+ var migrate_ts_type_references = require('./migrate_ts_type_references-BMhLua30.cjs');
18
18
  var assert = require('assert');
19
- var index = require('./index-C0gVsyDQ.cjs');
19
+ var index = require('./index-COhCBz0q.cjs');
20
20
  require('@angular-devkit/core');
21
21
  require('node:path/posix');
22
22
  require('fs');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -10,7 +10,7 @@ var schematics = require('@angular-devkit/schematics');
10
10
  var signalQueriesMigration = require('./signal-queries-migration.cjs');
11
11
  var signalInputMigration = require('./signal-input-migration.cjs');
12
12
  var outputMigration = require('./output-migration.cjs');
13
- require('./project_tsconfig_paths-Bhn4jDr1.cjs');
13
+ require('./project_tsconfig_paths-BIeidc3E.cjs');
14
14
  require('typescript');
15
15
  require('os');
16
16
  require('fs');
@@ -18,14 +18,14 @@ require('module');
18
18
  require('path');
19
19
  require('url');
20
20
  require('@angular-devkit/core');
21
- require('./index-CvCDOy8a.cjs');
21
+ require('./index-DwItZ4Tw.cjs');
22
22
  require('node:path');
23
- require('./project_paths-BfWTWKz0.cjs');
23
+ require('./project_paths-OWnyHise.cjs');
24
24
  require('node:path/posix');
25
- require('./apply_import_manager-OJAv7nyR.cjs');
26
- require('./migrate_ts_type_references-ByPRdLHL.cjs');
25
+ require('./apply_import_manager-Ch1hTvRS.cjs');
26
+ require('./migrate_ts_type_references-BMhLua30.cjs');
27
27
  require('assert');
28
- require('./index-C0gVsyDQ.cjs');
28
+ require('./index-COhCBz0q.cjs');
29
29
  require('./leading_space-D9nQ8UQC.cjs');
30
30
 
31
31
  function migrate(options) {
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
9
  var schematics = require('@angular-devkit/schematics');
10
- var index = require('./index-CvCDOy8a.cjs');
10
+ var index = require('./index-DwItZ4Tw.cjs');
11
11
  var fs = require('fs');
12
12
  var p = require('path');
13
13
  var ts = require('typescript');
14
- var compiler_host = require('./compiler_host-GMENszSm.cjs');
15
- var project_tsconfig_paths = require('./project_tsconfig_paths-Bhn4jDr1.cjs');
14
+ var compiler_host = require('./compiler_host-CqB0JPzD.cjs');
15
+ var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
16
16
  var ng_decorators = require('./ng_decorators-B5HCqr20.cjs');
17
17
  var nodes = require('./nodes-B16H9JUd.cjs');
18
18
  var symbol = require('./symbol-VPWguRxr.cjs');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-rc.1
3
+ * @license Angular v20.2.0
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,11 +8,11 @@
8
8
 
9
9
  var ts = require('typescript');
10
10
  require('os');
11
- require('./project_tsconfig_paths-Bhn4jDr1.cjs');
12
- require('./index-CvCDOy8a.cjs');
11
+ require('./project_tsconfig_paths-BIeidc3E.cjs');
12
+ require('./index-DwItZ4Tw.cjs');
13
13
  require('path');
14
14
  require('node:path');
15
- var project_paths = require('./project_paths-BfWTWKz0.cjs');
15
+ var project_paths = require('./project_paths-OWnyHise.cjs');
16
16
  var imports = require('./imports-CIX-JgAN.cjs');
17
17
  var symbol = require('./symbol-VPWguRxr.cjs');
18
18
  require('@angular-devkit/core');
package/signal.d.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.2.0-rc.1
2
+ * @license Angular v20.2.0
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.2.0-rc.1
2
+ * @license Angular v20.2.0
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -348,7 +348,7 @@ interface TestModuleMetadata {
348
348
  inferTagName?: boolean;
349
349
  /**
350
350
  * Whether animate.enter / animate.leave should trigger as normal or be disabled.
351
- * Defaults to `true`.
351
+ * Defaults to `false`.
352
352
  */
353
353
  animationsEnabled?: boolean;
354
354
  }
package/weak_ref.d.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.2.0-rc.1
2
+ * @license Angular v20.2.0
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */