@angular/core 20.2.0-next.0 → 20.2.0-next.2

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 +26 -9
  8. package/fesm2022/core.mjs.map +1 -1
  9. package/fesm2022/debug_node.mjs +647 -15
  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 +8 -5
  20. package/fesm2022/resource.mjs.map +1 -1
  21. package/fesm2022/root_effect_scheduler.mjs +126 -53
  22. package/fesm2022/root_effect_scheduler.mjs.map +1 -1
  23. package/fesm2022/rxjs-interop.mjs +2 -2
  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 +16 -8
  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 +162 -3
  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-B0fYYMpr.cjs → apply_import_manager-Bkosyy2x.cjs} +3 -3
  41. package/schematics/bundles/{checker-DLInMAS3.cjs → checker-Cfq29XaS.cjs} +1294 -530
  42. package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
  43. package/schematics/bundles/{compiler_host-Doj9KVJf.cjs → compiler_host-CSrf1kFh.cjs} +2 -2
  44. package/schematics/bundles/control-flow-migration.cjs +3 -3
  45. package/schematics/bundles/document-core.cjs +5 -5
  46. package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
  47. package/schematics/bundles/{index-BmuUS1AB.cjs → index-DYbdsCUu.cjs} +80 -43
  48. package/schematics/bundles/{index-Bp8sCiq1.cjs → index-DwmX8Ifa.cjs} +4 -4
  49. package/schematics/bundles/inject-flags.cjs +5 -5
  50. package/schematics/bundles/inject-migration.cjs +3 -3
  51. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  52. package/schematics/bundles/{migrate_ts_type_references-CmZ0155c.cjs → migrate_ts_type_references-C7NB9fZH.cjs} +5 -441
  53. package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
  54. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  55. package/schematics/bundles/output-migration.cjs +6 -6
  56. package/schematics/bundles/{project_paths-D2SJWT7x.cjs → project_paths-5CoqAjNK.cjs} +3 -3
  57. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
  58. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  59. package/schematics/bundles/route-lazy-loading.cjs +3 -3
  60. package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
  61. package/schematics/bundles/signal-input-migration.cjs +8 -8
  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 +12 -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-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,14 +8,14 @@
8
8
 
9
9
  require('@angular-devkit/core');
10
10
  require('node:path/posix');
11
- var project_paths = require('./project_paths-D2SJWT7x.cjs');
11
+ var project_paths = require('./project_paths-5CoqAjNK.cjs');
12
12
  var ts = require('typescript');
13
13
  require('os');
14
- var checker = require('./checker-DLInMAS3.cjs');
15
- var index = require('./index-BmuUS1AB.cjs');
14
+ var checker = require('./checker-Cfq29XaS.cjs');
15
+ var index = require('./index-DYbdsCUu.cjs');
16
16
  require('path');
17
17
  require('node:path');
18
- var apply_import_manager = require('./apply_import_manager-B0fYYMpr.cjs');
18
+ var apply_import_manager = require('./apply_import_manager-Bkosyy2x.cjs');
19
19
  require('@angular-devkit/schematics');
20
20
  require('./project_tsconfig_paths-CDVxT6Ov.cjs');
21
21
  require('fs');
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
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 ts = require('typescript');
10
- var checker = require('./checker-DLInMAS3.cjs');
10
+ var checker = require('./checker-Cfq29XaS.cjs');
11
11
  require('os');
12
12
  var p = require('path');
13
13
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,8 +8,8 @@
8
8
 
9
9
  var schematics = require('@angular-devkit/schematics');
10
10
  var p = require('path');
11
- var compiler_host = require('./compiler_host-Doj9KVJf.cjs');
12
- var checker = require('./checker-DLInMAS3.cjs');
11
+ var compiler_host = require('./compiler_host-CSrf1kFh.cjs');
12
+ var checker = require('./checker-Cfq29XaS.cjs');
13
13
  var ts = require('typescript');
14
14
  var project_tsconfig_paths = require('./project_tsconfig_paths-CDVxT6Ov.cjs');
15
15
  require('os');
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
- var checker = require('./checker-DLInMAS3.cjs');
9
+ var checker = require('./checker-Cfq29XaS.cjs');
10
10
  require('typescript');
11
11
  require('os');
12
- var apply_import_manager = require('./apply_import_manager-B0fYYMpr.cjs');
13
- require('./index-BmuUS1AB.cjs');
12
+ var apply_import_manager = require('./apply_import_manager-Bkosyy2x.cjs');
13
+ require('./index-DYbdsCUu.cjs');
14
14
  require('path');
15
15
  require('node:path');
16
- var project_paths = require('./project_paths-D2SJWT7x.cjs');
16
+ var project_paths = require('./project_paths-5CoqAjNK.cjs');
17
17
  var imports = require('./imports-CIX-JgAN.cjs');
18
18
  require('@angular-devkit/core');
19
19
  require('node:path/posix');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
- var checker = require('./checker-DLInMAS3.cjs');
9
+ var checker = require('./checker-Cfq29XaS.cjs');
10
10
  var ts = require('typescript');
11
11
  var p = require('path');
12
12
  require('os');
@@ -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.2.0-next.0'));
894
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
912
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
1007
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
1423
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
1458
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
1509
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
1542
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
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.2.0-next.0'));
1593
+ definitionMap.set('version', checker.literal('20.2.0-next.2'));
1594
1594
  definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
1595
1595
  // e.g. `type: MyPipe`
1596
1596
  definitionMap.set('type', meta.type.value);
@@ -12321,7 +12321,7 @@ class PipeDecoratorHandler {
12321
12321
  * @description
12322
12322
  * Entry point for all public APIs of the compiler-cli package.
12323
12323
  */
12324
- new checker.Version('20.2.0-next.0');
12324
+ new checker.Version('20.2.0-next.2');
12325
12325
 
12326
12326
  /**
12327
12327
  * Whether a given decorator should be treated as an Angular decorator.
@@ -13163,7 +13163,7 @@ const MIN_TS_VERSION = '5.8.0';
13163
13163
  * Note: this check is disabled in g3, search for
13164
13164
  * `angularCompilerOptions.disableTypeScriptVersionCheck` config param value in g3.
13165
13165
  */
13166
- const MAX_TS_VERSION = '5.9.0';
13166
+ const MAX_TS_VERSION = '6.0.0';
13167
13167
  /**
13168
13168
  * The currently used version of TypeScript, which can be adjusted for testing purposes using
13169
13169
  * `setTypeScriptVersionForTesting` and `restoreTypeScriptVersionForTesting` below.
@@ -16461,6 +16461,8 @@ class InterpolatedSignalCheck extends TemplateCheckWithVisitor {
16461
16461
  node.type === checker.BindingType.Style ||
16462
16462
  // or an attribute binding like `[attr.role]="mySignal"`
16463
16463
  node.type === checker.BindingType.Attribute ||
16464
+ // or an animation binding like `[animate.enter]="mySignal"`
16465
+ node.type === checker.BindingType.Animation ||
16464
16466
  // or an animation binding like `[@myAnimation]="mySignal"`
16465
16467
  node.type === checker.BindingType.LegacyAnimation) &&
16466
16468
  nodeAst) {
@@ -16514,7 +16516,7 @@ function buildDiagnosticForSignal(ctx, node, component) {
16514
16516
  }
16515
16517
  return [];
16516
16518
  }
16517
- const factory$d = {
16519
+ const factory$e = {
16518
16520
  code: checker.ErrorCode.INTERPOLATED_SIGNAL_NOT_INVOKED,
16519
16521
  name: checker.ExtendedTemplateDiagnosticName.INTERPOLATED_SIGNAL_NOT_INVOKED,
16520
16522
  create: () => new InterpolatedSignalCheck(),
@@ -16540,7 +16542,7 @@ class InvalidBananaInBoxCheck extends TemplateCheckWithVisitor {
16540
16542
  return [diagnostic];
16541
16543
  }
16542
16544
  }
16543
- const factory$c = {
16545
+ const factory$d = {
16544
16546
  code: checker.ErrorCode.INVALID_BANANA_IN_BOX,
16545
16547
  name: checker.ExtendedTemplateDiagnosticName.INVALID_BANANA_IN_BOX,
16546
16548
  create: () => new InvalidBananaInBoxCheck(),
@@ -16601,7 +16603,7 @@ class MissingControlFlowDirectiveCheck extends TemplateCheckWithVisitor {
16601
16603
  return [diagnostic];
16602
16604
  }
16603
16605
  }
16604
- const factory$b = {
16606
+ const factory$c = {
16605
16607
  code: checker.ErrorCode.MISSING_CONTROL_FLOW_DIRECTIVE,
16606
16608
  name: checker.ExtendedTemplateDiagnosticName.MISSING_CONTROL_FLOW_DIRECTIVE,
16607
16609
  create: (options) => {
@@ -16634,7 +16636,7 @@ class MissingNgForOfLetCheck extends TemplateCheckWithVisitor {
16634
16636
  return [diagnostic];
16635
16637
  }
16636
16638
  }
16637
- const factory$a = {
16639
+ const factory$b = {
16638
16640
  code: checker.ErrorCode.MISSING_NGFOROF_LET,
16639
16641
  name: checker.ExtendedTemplateDiagnosticName.MISSING_NGFOROF_LET,
16640
16642
  create: () => new MissingNgForOfLetCheck(),
@@ -16689,7 +16691,7 @@ class MissingStructuralDirectiveCheck extends TemplateCheckWithVisitor {
16689
16691
  return [ctx.makeTemplateDiagnostic(sourceSpan, errorMessage)];
16690
16692
  }
16691
16693
  }
16692
- const factory$9 = {
16694
+ const factory$a = {
16693
16695
  code: checker.ErrorCode.MISSING_STRUCTURAL_DIRECTIVE,
16694
16696
  name: checker.ExtendedTemplateDiagnosticName.MISSING_STRUCTURAL_DIRECTIVE,
16695
16697
  create: () => new MissingStructuralDirectiveCheck(),
@@ -16734,7 +16736,7 @@ class NullishCoalescingNotNullableCheck extends TemplateCheckWithVisitor {
16734
16736
  return [diagnostic];
16735
16737
  }
16736
16738
  }
16737
- const factory$8 = {
16739
+ const factory$9 = {
16738
16740
  code: checker.ErrorCode.NULLISH_COALESCING_NOT_NULLABLE,
16739
16741
  name: checker.ExtendedTemplateDiagnosticName.NULLISH_COALESCING_NOT_NULLABLE,
16740
16742
  create: (options) => {
@@ -16791,7 +16793,7 @@ class OptionalChainNotNullableCheck extends TemplateCheckWithVisitor {
16791
16793
  return [diagnostic];
16792
16794
  }
16793
16795
  }
16794
- const factory$7 = {
16796
+ const factory$8 = {
16795
16797
  code: checker.ErrorCode.OPTIONAL_CHAIN_NOT_NULLABLE,
16796
16798
  name: checker.ExtendedTemplateDiagnosticName.OPTIONAL_CHAIN_NOT_NULLABLE,
16797
16799
  create: (options) => {
@@ -16831,7 +16833,7 @@ class NgSkipHydrationSpec extends TemplateCheckWithVisitor {
16831
16833
  return [];
16832
16834
  }
16833
16835
  }
16834
- const factory$6 = {
16836
+ const factory$7 = {
16835
16837
  code: checker.ErrorCode.SKIP_HYDRATION_NOT_STATIC,
16836
16838
  name: checker.ExtendedTemplateDiagnosticName.SKIP_HYDRATION_NOT_STATIC,
16837
16839
  create: () => new NgSkipHydrationSpec(),
@@ -16855,7 +16857,7 @@ class SuffixNotSupportedCheck extends TemplateCheckWithVisitor {
16855
16857
  return [diagnostic];
16856
16858
  }
16857
16859
  }
16858
- const factory$5 = {
16860
+ const factory$6 = {
16859
16861
  code: checker.ErrorCode.SUFFIX_NOT_SUPPORTED,
16860
16862
  name: checker.ExtendedTemplateDiagnosticName.SUFFIX_NOT_SUPPORTED,
16861
16863
  create: () => new SuffixNotSupportedCheck(),
@@ -16900,7 +16902,7 @@ class TextAttributeNotBindingSpec extends TemplateCheckWithVisitor {
16900
16902
  return [diagnostic];
16901
16903
  }
16902
16904
  }
16903
- const factory$4 = {
16905
+ const factory$5 = {
16904
16906
  code: checker.ErrorCode.TEXT_ATTRIBUTE_NOT_BINDING,
16905
16907
  name: checker.ExtendedTemplateDiagnosticName.TEXT_ATTRIBUTE_NOT_BINDING,
16906
16908
  create: () => new TextAttributeNotBindingSpec(),
@@ -16925,22 +16927,22 @@ class UninvokedFunctionInEventBindingSpec extends TemplateCheckWithVisitor {
16925
16927
  const sourceExpressionText = node.handler.source || '';
16926
16928
  if (node.handler.ast instanceof checker.Chain) {
16927
16929
  // (click)="increment; decrement"
16928
- return node.handler.ast.expressions.flatMap((expression) => assertExpressionInvoked(expression, component, node, sourceExpressionText, ctx));
16930
+ return node.handler.ast.expressions.flatMap((expression) => assertExpressionInvoked$1(expression, component, node, sourceExpressionText, ctx));
16929
16931
  }
16930
16932
  if (node.handler.ast instanceof checker.Conditional) {
16931
16933
  // (click)="true ? increment : decrement"
16932
16934
  const { trueExp, falseExp } = node.handler.ast;
16933
- return [trueExp, falseExp].flatMap((expression) => assertExpressionInvoked(expression, component, node, sourceExpressionText, ctx));
16935
+ return [trueExp, falseExp].flatMap((expression) => assertExpressionInvoked$1(expression, component, node, sourceExpressionText, ctx));
16934
16936
  }
16935
16937
  // (click)="increment"
16936
- return assertExpressionInvoked(node.handler.ast, component, node, sourceExpressionText, ctx);
16938
+ return assertExpressionInvoked$1(node.handler.ast, component, node, sourceExpressionText, ctx);
16937
16939
  }
16938
16940
  }
16939
16941
  /**
16940
16942
  * Asserts that the expression is invoked.
16941
16943
  * If the expression is a property read, and it has a call signature, a diagnostic is generated.
16942
16944
  */
16943
- function assertExpressionInvoked(expression, component, node, expressionText, ctx) {
16945
+ function assertExpressionInvoked$1(expression, component, node, expressionText, ctx) {
16944
16946
  if (expression instanceof checker.Call || expression instanceof checker.SafeCall) {
16945
16947
  return []; // If the method is called, skip it.
16946
16948
  }
@@ -16950,17 +16952,17 @@ function assertExpressionInvoked(expression, component, node, expressionText, ct
16950
16952
  const symbol = ctx.templateTypeChecker.getSymbolOfNode(expression, component);
16951
16953
  if (symbol !== null && symbol.kind === checker.SymbolKind.Expression) {
16952
16954
  if (symbol.tsType.getCallSignatures()?.length > 0) {
16953
- const fullExpressionText = generateStringFromExpression$1(expression, expressionText);
16955
+ const fullExpressionText = generateStringFromExpression$2(expression, expressionText);
16954
16956
  const errorString = `Function in event binding should be invoked: ${fullExpressionText}()`;
16955
16957
  return [ctx.makeTemplateDiagnostic(node.sourceSpan, errorString)];
16956
16958
  }
16957
16959
  }
16958
16960
  return [];
16959
16961
  }
16960
- function generateStringFromExpression$1(expression, source) {
16962
+ function generateStringFromExpression$2(expression, source) {
16961
16963
  return source.substring(expression.span.start, expression.span.end);
16962
16964
  }
16963
- const factory$3 = {
16965
+ const factory$4 = {
16964
16966
  code: checker.ErrorCode.UNINVOKED_FUNCTION_IN_EVENT_BINDING,
16965
16967
  name: checker.ExtendedTemplateDiagnosticName.UNINVOKED_FUNCTION_IN_EVENT_BINDING,
16966
16968
  create: () => new UninvokedFunctionInEventBindingSpec(),
@@ -16993,7 +16995,7 @@ class UnparenthesizedNullishCoalescing extends TemplateCheckWithVisitor {
16993
16995
  return [];
16994
16996
  }
16995
16997
  }
16996
- const factory$2 = {
16998
+ const factory$3 = {
16997
16999
  code: checker.ErrorCode.UNPARENTHESIZED_NULLISH_COALESCING,
16998
17000
  name: checker.ExtendedTemplateDiagnosticName.UNPARENTHESIZED_NULLISH_COALESCING,
16999
17001
  create: () => new UnparenthesizedNullishCoalescing(),
@@ -17037,7 +17039,7 @@ class UnusedLetDeclarationCheck extends TemplateCheckWithVisitor {
17037
17039
  return this.analysis.get(node);
17038
17040
  }
17039
17041
  }
17040
- const factory$1 = {
17042
+ const factory$2 = {
17041
17043
  code: checker.ErrorCode.UNUSED_LET_DECLARATION,
17042
17044
  name: checker.ExtendedTemplateDiagnosticName.UNUSED_LET_DECLARATION,
17043
17045
  create: () => new UnusedLetDeclarationCheck(),
@@ -17065,22 +17067,56 @@ class UninvokedTrackFunctionCheck extends TemplateCheckWithVisitor {
17065
17067
  if (symbol !== null &&
17066
17068
  symbol.kind === checker.SymbolKind.Expression &&
17067
17069
  symbol.tsType.getCallSignatures()?.length > 0) {
17068
- const fullExpressionText = generateStringFromExpression(node.trackBy.ast, node.trackBy.source || '');
17070
+ const fullExpressionText = generateStringFromExpression$1(node.trackBy.ast, node.trackBy.source || '');
17069
17071
  const errorString = `The track function in the @for block should be invoked: ${fullExpressionText}(/* arguments */)`;
17070
17072
  return [ctx.makeTemplateDiagnostic(node.sourceSpan, errorString)];
17071
17073
  }
17072
17074
  return [];
17073
17075
  }
17074
17076
  }
17075
- function generateStringFromExpression(expression, source) {
17077
+ function generateStringFromExpression$1(expression, source) {
17076
17078
  return source.substring(expression.span.start, expression.span.end);
17077
17079
  }
17078
- const factory = {
17080
+ const factory$1 = {
17079
17081
  code: checker.ErrorCode.UNINVOKED_TRACK_FUNCTION,
17080
17082
  name: checker.ExtendedTemplateDiagnosticName.UNINVOKED_TRACK_FUNCTION,
17081
17083
  create: () => new UninvokedTrackFunctionCheck(),
17082
17084
  };
17083
17085
 
17086
+ class UninvokedFunctionInTextInterpolation extends TemplateCheckWithVisitor {
17087
+ code = checker.ErrorCode.UNINVOKED_FUNCTION_IN_TEXT_INTERPOLATION;
17088
+ visitNode(ctx, component, node) {
17089
+ // interpolations like `{{ myFunction }}`
17090
+ if (node instanceof checker.Interpolation) {
17091
+ return node.expressions.flatMap((item) => assertExpressionInvoked(item, component, node.sourceSpan, ctx));
17092
+ }
17093
+ return [];
17094
+ }
17095
+ }
17096
+ function assertExpressionInvoked(expression, component, sourceSpan, ctx) {
17097
+ if (!(expression instanceof checker.PropertyRead) && !(expression instanceof checker.SafePropertyRead)) {
17098
+ return []; // If the expression is not a property read, skip it.
17099
+ }
17100
+ const symbol = ctx.templateTypeChecker.getSymbolOfNode(expression, component);
17101
+ if (symbol !== null && symbol.kind === checker.SymbolKind.Expression) {
17102
+ if (symbol.tsType.getCallSignatures()?.length > 0) {
17103
+ const fullExpressionText = generateStringFromExpression(expression, sourceSpan.toString());
17104
+ const errorString = `Function in text interpolation should be invoked: ${fullExpressionText}()`;
17105
+ const templateMapping = ctx.templateTypeChecker.getSourceMappingAtTcbLocation(symbol.tcbLocation);
17106
+ return [ctx.makeTemplateDiagnostic(templateMapping.span, errorString)];
17107
+ }
17108
+ }
17109
+ return [];
17110
+ }
17111
+ function generateStringFromExpression(expression, source) {
17112
+ return source.substring(expression.span.start, expression.span.end);
17113
+ }
17114
+ const factory = {
17115
+ code: checker.ErrorCode.UNINVOKED_FUNCTION_IN_TEXT_INTERPOLATION,
17116
+ name: checker.ExtendedTemplateDiagnosticName.UNINVOKED_FUNCTION_IN_TEXT_INTERPOLATION,
17117
+ create: () => new UninvokedFunctionInTextInterpolation(),
17118
+ };
17119
+
17084
17120
  /**
17085
17121
  * A label referring to a `ts.DiagnosticCategory` or `'suppress'`, meaning the associated diagnostic
17086
17122
  * should not be displayed at all.
@@ -17168,19 +17204,20 @@ function assertNever(value) {
17168
17204
  }
17169
17205
 
17170
17206
  const ALL_DIAGNOSTIC_FACTORIES = [
17171
- factory$c,
17207
+ factory$d,
17208
+ factory$9,
17172
17209
  factory$8,
17173
- factory$7,
17210
+ factory$c,
17211
+ factory$5,
17174
17212
  factory$b,
17175
- factory$4,
17176
17213
  factory$a,
17177
- factory$9,
17178
- factory$5,
17179
- factory$d,
17180
- factory$3,
17181
- factory$1,
17182
17214
  factory$6,
17215
+ factory$e,
17216
+ factory$4,
17183
17217
  factory$2,
17218
+ factory$7,
17219
+ factory$3,
17220
+ factory$1,
17184
17221
  factory,
17185
17222
  ];
17186
17223
  const SUPPORTED_DIAGNOSTIC_NAMES = new Set([
@@ -20278,7 +20315,7 @@ var semver = /*@__PURE__*/getDefaultExportFromCjs(semverExports);
20278
20315
  * @param minVersion Minimum required version for the feature.
20279
20316
  */
20280
20317
  function coreVersionSupportsFeature(coreVersion, minVersion) {
20281
- // A version of `20.2.0-next.0` usually means that core is at head so it supports
20318
+ // A version of `20.2.0-next.2` usually means that core is at head so it supports
20282
20319
  // all features. Use string interpolation prevent the placeholder from being replaced
20283
20320
  // with the current version during build time.
20284
20321
  if (coreVersion === `0.0.0-${'PLACEHOLDER'}`) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
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 checker = require('./checker-DLInMAS3.cjs');
12
- var index = require('./index-BmuUS1AB.cjs');
11
+ var checker = require('./checker-Cfq29XaS.cjs');
12
+ var index = require('./index-DYbdsCUu.cjs');
13
13
  require('path');
14
14
  require('node:path');
15
- var project_paths = require('./project_paths-D2SJWT7x.cjs');
15
+ var project_paths = require('./project_paths-5CoqAjNK.cjs');
16
16
 
17
17
  function getMemberName(member) {
18
18
  if (member.name === undefined) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,12 +8,12 @@
8
8
 
9
9
  var ts = require('typescript');
10
10
  require('os');
11
- var checker = require('./checker-DLInMAS3.cjs');
12
- require('./index-BmuUS1AB.cjs');
11
+ var checker = require('./checker-Cfq29XaS.cjs');
12
+ require('./index-DYbdsCUu.cjs');
13
13
  require('path');
14
14
  require('node:path');
15
- var project_paths = require('./project_paths-D2SJWT7x.cjs');
16
- var apply_import_manager = require('./apply_import_manager-B0fYYMpr.cjs');
15
+ var project_paths = require('./project_paths-5CoqAjNK.cjs');
16
+ var apply_import_manager = require('./apply_import_manager-Bkosyy2x.cjs');
17
17
  var imports = require('./imports-CIX-JgAN.cjs');
18
18
  require('@angular-devkit/core');
19
19
  require('node:path/posix');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,13 +8,13 @@
8
8
 
9
9
  var schematics = require('@angular-devkit/schematics');
10
10
  var p = require('path');
11
- var compiler_host = require('./compiler_host-Doj9KVJf.cjs');
11
+ var compiler_host = require('./compiler_host-CSrf1kFh.cjs');
12
12
  var ts = require('typescript');
13
13
  var ng_decorators = require('./ng_decorators-B5HCqr20.cjs');
14
14
  var imports = require('./imports-CIX-JgAN.cjs');
15
15
  var nodes = require('./nodes-B16H9JUd.cjs');
16
16
  var leading_space = require('./leading_space-D9nQ8UQC.cjs');
17
- require('./checker-DLInMAS3.cjs');
17
+ require('./checker-Cfq29XaS.cjs');
18
18
  require('os');
19
19
  require('fs');
20
20
  require('module');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.2.0-next.0
3
+ * @license Angular v20.2.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */