@angular/core 20.0.0-next.5 → 20.0.0-next.7

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-mxcXqDpA.d.ts → api.d-KjtSQajV.d.ts} +4 -4
  2. package/{ng_i18n_closure_mode.d-DLxSUiDr.d.ts → chrome_dev_tools_performance.d-qv7drdAl.d.ts} +20 -5
  3. package/{discovery.d-CyYpOJ7j.d.ts → discovery.d-D6xf1HH-.d.ts} +8 -79
  4. package/{event_dispatcher.d-PWnbqZDx.d.ts → event_dispatcher.d-DlbccpYq.d.ts} +3 -3
  5. package/fesm2022/{attribute-B17mgaqe.mjs → attribute-BWp59EjE.mjs} +3 -3
  6. package/fesm2022/{attribute-B17mgaqe.mjs.map → attribute-BWp59EjE.mjs.map} +1 -1
  7. package/fesm2022/core.mjs +22 -31
  8. package/fesm2022/core.mjs.map +1 -1
  9. package/fesm2022/{debug_node-xKpCIZm-.mjs → debug_node-B3CixwNH.mjs} +218 -141
  10. package/fesm2022/debug_node-B3CixwNH.mjs.map +1 -0
  11. package/fesm2022/primitives/di.mjs +1 -1
  12. package/fesm2022/primitives/event-dispatch.mjs +2 -2
  13. package/fesm2022/primitives/signals.mjs +5 -5
  14. package/fesm2022/{resource-BPpYEDic.mjs → resource-DtpS_sTw.mjs} +6 -8
  15. package/fesm2022/resource-DtpS_sTw.mjs.map +1 -0
  16. package/fesm2022/{root_effect_scheduler-D0_b1cf_.mjs → root_effect_scheduler-BK3l7wIO.mjs} +144 -68
  17. package/fesm2022/root_effect_scheduler-BK3l7wIO.mjs.map +1 -0
  18. package/fesm2022/rxjs-interop.mjs +7 -84
  19. package/fesm2022/rxjs-interop.mjs.map +1 -1
  20. package/fesm2022/{signal-DhRAAi7R.mjs → signal-B6pMq7KS.mjs} +3 -3
  21. package/fesm2022/{signal-DhRAAi7R.mjs.map → signal-B6pMq7KS.mjs.map} +1 -1
  22. package/fesm2022/testing.mjs +167 -103
  23. package/fesm2022/testing.mjs.map +1 -1
  24. package/fesm2022/{untracked-DaaW3JJm.mjs → untracked-Bz5WMeU1.mjs} +4 -4
  25. package/fesm2022/{untracked-DaaW3JJm.mjs.map → untracked-Bz5WMeU1.mjs.map} +1 -1
  26. package/fesm2022/{weak_ref-DrMdAIDh.mjs → weak_ref-BaIq-pgY.mjs} +3 -3
  27. package/fesm2022/{weak_ref-DrMdAIDh.mjs.map → weak_ref-BaIq-pgY.mjs.map} +1 -1
  28. package/{graph.d-StYigYp1.d.ts → graph.d-BcIOep_B.d.ts} +3 -3
  29. package/index.d.ts +34 -41
  30. package/package.json +2 -2
  31. package/primitives/di/index.d.ts +1 -1
  32. package/primitives/event-dispatch/index.d.ts +3 -3
  33. package/primitives/signals/index.d.ts +6 -6
  34. package/rxjs-interop/index.d.ts +8 -17
  35. package/schematics/bundles/{apply_import_manager-C-ysxahq.js → apply_import_manager-DczRKpTm.js} +6 -6
  36. package/schematics/bundles/{change_tracker-0Ktek5Xl.js → change_tracker-CWLh-wes.js} +3 -3
  37. package/schematics/bundles/{checker-DqUKCGda.js → checker-_f5wM7PH.js} +20 -3
  38. package/schematics/bundles/cleanup-unused-imports.js +25 -20
  39. package/schematics/bundles/{compiler-CuoiHqkc.js → compiler-BaCbbux6.js} +964 -298
  40. package/schematics/bundles/compiler_host-CAfDJO3W.js +1 -1
  41. package/schematics/bundles/control-flow-migration.js +2 -2
  42. package/schematics/bundles/document-core.js +12 -12
  43. package/schematics/bundles/imports-CIX-JgAN.js +1 -1
  44. package/schematics/bundles/{index-CwFQSYXZ.js → index--W6S49uu.js} +10 -10
  45. package/schematics/bundles/{index-WFXCe5Q0.js → index-rsJ8I_hu.js} +131 -64
  46. package/schematics/bundles/inject-flags.js +14 -14
  47. package/schematics/bundles/inject-migration.js +108 -19
  48. package/schematics/bundles/leading_space-D9nQ8UQC.js +1 -1
  49. package/schematics/bundles/{migrate_ts_type_references-BNuHufqZ.js → migrate_ts_type_references-C4D_SzJk.js} +21 -21
  50. package/schematics/bundles/ng_decorators-DznZ5jMl.js +1 -1
  51. package/schematics/bundles/nodes-B16H9JUd.js +1 -1
  52. package/schematics/bundles/output-migration.js +80 -22
  53. package/schematics/bundles/{run_in_devkit-CmHxABFr.js → project_paths-Ce0O2u-M.js} +254 -244
  54. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.js +1 -1
  55. package/schematics/bundles/property_name-BBwFuqMe.js +1 -1
  56. package/schematics/bundles/route-lazy-loading.js +4 -4
  57. package/schematics/bundles/self-closing-tags-migration.js +20 -15
  58. package/schematics/bundles/signal-input-migration.js +26 -21
  59. package/schematics/bundles/signal-queries-migration.js +32 -27
  60. package/schematics/bundles/signals.js +8 -8
  61. package/schematics/bundles/standalone-migration.js +5 -5
  62. package/schematics/bundles/symbol-VPWguRxr.js +1 -1
  63. package/schematics/bundles/test-bed-get.js +13 -13
  64. package/{signal.d-BeaTIeOE.d.ts → signal.d-E0e5nW1p.d.ts} +4 -4
  65. package/testing/index.d.ts +9 -25
  66. package/{weak_ref.d-ttyj86RV.d.ts → weak_ref.d-eGOEP9S1.d.ts} +2 -2
  67. package/fesm2022/debug_node-xKpCIZm-.mjs.map +0 -1
  68. package/fesm2022/resource-BPpYEDic.mjs.map +0 -1
  69. package/fesm2022/root_effect_scheduler-D0_b1cf_.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.5
3
+ * @license Angular v20.0.0-next.7
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.0.0-next.5
3
+ * @license Angular v20.0.0-next.7
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -9,7 +9,7 @@
9
9
  var schematics = require('@angular-devkit/schematics');
10
10
  var p = require('path');
11
11
  var compiler_host = require('./compiler_host-CAfDJO3W.js');
12
- var compiler = require('./compiler-CuoiHqkc.js');
12
+ var compiler = require('./compiler-BaCbbux6.js');
13
13
  var ts = require('typescript');
14
14
  var project_tsconfig_paths = require('./project_tsconfig_paths-CDVxT6Ov.js');
15
15
  require('@angular-devkit/core');
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.5
3
+ * @license Angular v20.0.0-next.7
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
- require('./compiler-CuoiHqkc.js');
9
+ require('./compiler-BaCbbux6.js');
10
10
  require('typescript');
11
- var checker = require('./checker-DqUKCGda.js');
11
+ var checker = require('./checker-_f5wM7PH.js');
12
12
  require('os');
13
- var apply_import_manager = require('./apply_import_manager-C-ysxahq.js');
14
- require('./index-WFXCe5Q0.js');
13
+ var apply_import_manager = require('./apply_import_manager-DczRKpTm.js');
14
+ require('./index-rsJ8I_hu.js');
15
15
  require('path');
16
- var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
16
+ var project_paths = require('./project_paths-Ce0O2u-M.js');
17
17
  var imports = require('./imports-CIX-JgAN.js');
18
18
  require('@angular-devkit/core');
19
19
  require('node:path/posix');
@@ -24,7 +24,7 @@ require('@angular-devkit/schematics');
24
24
  require('./project_tsconfig_paths-CDVxT6Ov.js');
25
25
 
26
26
  /** Migration that moves the import of `DOCUMENT` from `core` to `common`. */
27
- class DocumentCoreMigration extends run_in_devkit.TsurgeFunnelMigration {
27
+ class DocumentCoreMigration extends project_paths.TsurgeFunnelMigration {
28
28
  async analyze(info) {
29
29
  const replacements = [];
30
30
  let importManager = null;
@@ -49,10 +49,10 @@ class DocumentCoreMigration extends run_in_devkit.TsurgeFunnelMigration {
49
49
  if (importManager !== null) {
50
50
  apply_import_manager.applyImportManagerChanges(importManager, replacements, info.sourceFiles, info);
51
51
  }
52
- return run_in_devkit.confirmAsSerializable({ replacements });
52
+ return project_paths.confirmAsSerializable({ replacements });
53
53
  }
54
54
  async migrate(globalData) {
55
- return run_in_devkit.confirmAsSerializable(globalData);
55
+ return project_paths.confirmAsSerializable(globalData);
56
56
  }
57
57
  async combine(unitA, unitB) {
58
58
  const seen = new Set();
@@ -67,10 +67,10 @@ class DocumentCoreMigration extends run_in_devkit.TsurgeFunnelMigration {
67
67
  }
68
68
  });
69
69
  });
70
- return run_in_devkit.confirmAsSerializable({ replacements: combined });
70
+ return project_paths.confirmAsSerializable({ replacements: combined });
71
71
  }
72
72
  async globalMeta(combinedData) {
73
- return run_in_devkit.confirmAsSerializable(combinedData);
73
+ return project_paths.confirmAsSerializable(combinedData);
74
74
  }
75
75
  async stats() {
76
76
  return { counters: {} };
@@ -86,7 +86,7 @@ class DocumentCoreMigration extends run_in_devkit.TsurgeFunnelMigration {
86
86
  */
87
87
  function migrate() {
88
88
  return async (tree) => {
89
- await run_in_devkit.runMigrationInDevkit({
89
+ await project_paths.runMigrationInDevkit({
90
90
  tree,
91
91
  getMigration: () => new DocumentCoreMigration(),
92
92
  });
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.5
3
+ * @license Angular v20.0.0-next.7
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.0.0-next.5
3
+ * @license Angular v20.0.0-next.7
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-DqUKCGda.js');
12
- var compiler = require('./compiler-CuoiHqkc.js');
13
- var index = require('./index-WFXCe5Q0.js');
11
+ var checker = require('./checker-_f5wM7PH.js');
12
+ var compiler = require('./compiler-BaCbbux6.js');
13
+ var index = require('./index-rsJ8I_hu.js');
14
14
  require('path');
15
- var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
15
+ var project_paths = require('./project_paths-Ce0O2u-M.js');
16
16
 
17
17
  function getMemberName(member) {
18
18
  if (member.name === undefined) {
@@ -612,7 +612,7 @@ function identifyHostBindingReferences(node, programInfo, checker$1, reflector,
612
612
  readAstPath: ref.readAstPath,
613
613
  isObjectShorthandExpression: ref.isObjectShorthandExpression,
614
614
  isWrite: ref.isWrite,
615
- file: run_in_devkit.projectFile(ref.context.getSourceFile(), programInfo),
615
+ file: project_paths.projectFile(ref.context.getSourceFile(), programInfo),
616
616
  hostPropertyNode: ref.context,
617
617
  },
618
618
  target: ref.targetField,
@@ -712,8 +712,8 @@ function identifyTemplateReferences(programInfo, node, reflector, checker$1, eva
712
712
  readAstPath: res.readAstPath,
713
713
  node: res.context,
714
714
  isObjectShorthandExpression: res.isObjectShorthandExpression,
715
- originatingTsFile: run_in_devkit.projectFile(node.getSourceFile(), programInfo),
716
- templateFile: run_in_devkit.projectFile(checker.absoluteFrom(templateFilePath), programInfo),
715
+ originatingTsFile: project_paths.projectFile(node.getSourceFile(), programInfo),
716
+ templateFile: project_paths.projectFile(checker.absoluteFrom(templateFilePath), programInfo),
717
717
  isLikelyPartOfNarrowing: res.isLikelyNarrowed,
718
718
  isWrite: res.isWrite,
719
719
  },
@@ -895,7 +895,7 @@ function identifyPotentialTypeScriptReference(node, programInfo, checker, knownF
895
895
  kind: exports.ReferenceKind.TsReference,
896
896
  from: {
897
897
  node,
898
- file: run_in_devkit.projectFile(node.getSourceFile(), programInfo),
898
+ file: project_paths.projectFile(node.getSourceFile(), programInfo),
899
899
  isWrite: isWriteReference,
900
900
  isPartOfElementBinding: ts.isBindingElement(node.parent),
901
901
  },
@@ -959,7 +959,7 @@ function createFindAllSourceFileReferencesVisitor(programInfo, checker, reflecto
959
959
  result.references.push({
960
960
  kind: exports.ReferenceKind.TsClassTypeReference,
961
961
  from: {
962
- file: run_in_devkit.projectFile(partialDirectiveInCatalyst.referenceNode.getSourceFile(), programInfo),
962
+ file: project_paths.projectFile(partialDirectiveInCatalyst.referenceNode.getSourceFile(), programInfo),
963
963
  node: partialDirectiveInCatalyst.referenceNode,
964
964
  },
965
965
  isPartialReference: true,
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.5
3
+ * @license Angular v20.0.0-next.7
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
7
7
  'use strict';
8
8
 
9
- var compiler = require('./compiler-CuoiHqkc.js');
9
+ var compiler = require('./compiler-BaCbbux6.js');
10
10
  var ts = require('typescript');
11
11
  var p = require('path');
12
- var checker = require('./checker-DqUKCGda.js');
12
+ var checker = require('./checker-_f5wM7PH.js');
13
13
  require('os');
14
14
 
15
15
  function _interopNamespaceDefault(e) {
@@ -59,7 +59,12 @@ class XmlParser extends compiler.Parser {
59
59
  }
60
60
  parse(source, url, options = {}) {
61
61
  // Blocks and let declarations aren't supported in an XML context.
62
- return super.parse(source, url, { ...options, tokenizeBlocks: false, tokenizeLet: false });
62
+ return super.parse(source, url, {
63
+ ...options,
64
+ tokenizeBlocks: false,
65
+ tokenizeLet: false,
66
+ selectorlessEnabled: false,
67
+ });
63
68
  }
64
69
  }
65
70
 
@@ -283,6 +288,8 @@ class XliffParser {
283
288
  visitBlock(block, context) { }
284
289
  visitBlockParameter(parameter, context) { }
285
290
  visitLetDeclaration(decl, context) { }
291
+ visitComponent(component, context) { }
292
+ visitDirective(directive, context) { }
286
293
  _addError(node, message) {
287
294
  this._errors.push(new compiler.I18nError(node.sourceSpan, message));
288
295
  }
@@ -338,6 +345,12 @@ let XmlToI18n$1 = class XmlToI18n {
338
345
  visitBlock(block, context) { }
339
346
  visitBlockParameter(parameter, context) { }
340
347
  visitLetDeclaration(decl, context) { }
348
+ visitComponent(component, context) {
349
+ this._addError(component, 'Unexpected node');
350
+ }
351
+ visitDirective(directive, context) {
352
+ this._addError(directive, 'Unexpected node');
353
+ }
341
354
  _addError(node, message) {
342
355
  this._errors.push(new compiler.I18nError(node.sourceSpan, message));
343
356
  }
@@ -598,6 +611,8 @@ class Xliff2Parser {
598
611
  visitBlock(block, context) { }
599
612
  visitBlockParameter(parameter, context) { }
600
613
  visitLetDeclaration(decl, context) { }
614
+ visitComponent(component, context) { }
615
+ visitDirective(directive, context) { }
601
616
  _addError(node, message) {
602
617
  this._errors.push(new compiler.I18nError(node.sourceSpan, message));
603
618
  }
@@ -670,6 +685,12 @@ class XmlToI18n {
670
685
  visitBlock(block, context) { }
671
686
  visitBlockParameter(parameter, context) { }
672
687
  visitLetDeclaration(decl, context) { }
688
+ visitComponent(component, context) {
689
+ this._addError(component, 'Unexpected node');
690
+ }
691
+ visitDirective(directive, context) {
692
+ this._addError(directive, 'Unexpected node');
693
+ }
673
694
  _addError(node, message) {
674
695
  this._errors.push(new compiler.I18nError(node.sourceSpan, message));
675
696
  }
@@ -871,7 +892,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
871
892
  function compileDeclareClassMetadata(metadata) {
872
893
  const definitionMap = new compiler.DefinitionMap();
873
894
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
874
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
895
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
875
896
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
876
897
  definitionMap.set('type', metadata.type);
877
898
  definitionMap.set('decorators', metadata.decorators);
@@ -889,7 +910,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
889
910
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? compiler.literal(null));
890
911
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? compiler.literal(null));
891
912
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
892
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
913
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
893
914
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
894
915
  definitionMap.set('type', metadata.type);
895
916
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -984,7 +1005,7 @@ function createDirectiveDefinitionMap(meta) {
984
1005
  const definitionMap = new compiler.DefinitionMap();
985
1006
  const minVersion = getMinimumVersionForPartialOutput(meta);
986
1007
  definitionMap.set('minVersion', compiler.literal(minVersion));
987
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
1008
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
988
1009
  // e.g. `type: MyDirective`
989
1010
  definitionMap.set('type', meta.type.value);
990
1011
  if (meta.isStandalone !== undefined) {
@@ -1400,7 +1421,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
1400
1421
  function compileDeclareFactoryFunction(meta) {
1401
1422
  const definitionMap = new compiler.DefinitionMap();
1402
1423
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
1403
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
1424
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
1404
1425
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
1405
1426
  definitionMap.set('type', meta.type.value);
1406
1427
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -1435,7 +1456,7 @@ function compileDeclareInjectableFromMetadata(meta) {
1435
1456
  function createInjectableDefinitionMap(meta) {
1436
1457
  const definitionMap = new compiler.DefinitionMap();
1437
1458
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
1438
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
1459
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
1439
1460
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
1440
1461
  definitionMap.set('type', meta.type.value);
1441
1462
  // Only generate providedIn property if it has a non-null value
@@ -1486,7 +1507,7 @@ function compileDeclareInjectorFromMetadata(meta) {
1486
1507
  function createInjectorDefinitionMap(meta) {
1487
1508
  const definitionMap = new compiler.DefinitionMap();
1488
1509
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
1489
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
1510
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
1490
1511
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
1491
1512
  definitionMap.set('type', meta.type.value);
1492
1513
  definitionMap.set('providers', meta.providers);
@@ -1519,7 +1540,7 @@ function createNgModuleDefinitionMap(meta) {
1519
1540
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
1520
1541
  }
1521
1542
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
1522
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
1543
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
1523
1544
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
1524
1545
  definitionMap.set('type', meta.type.value);
1525
1546
  // We only generate the keys in the metadata if the arrays contain values.
@@ -1570,7 +1591,7 @@ function compileDeclarePipeFromMetadata(meta) {
1570
1591
  function createPipeDefinitionMap(meta) {
1571
1592
  const definitionMap = new compiler.DefinitionMap();
1572
1593
  definitionMap.set('minVersion', compiler.literal(MINIMUM_PARTIAL_LINKER_VERSION));
1573
- definitionMap.set('version', compiler.literal('20.0.0-next.5'));
1594
+ definitionMap.set('version', compiler.literal('20.0.0-next.7'));
1574
1595
  definitionMap.set('ngImport', compiler.importExpr(compiler.Identifiers.core));
1575
1596
  // e.g. `type: MyPipe`
1576
1597
  definitionMap.set('type', meta.type.value);
@@ -10849,7 +10870,7 @@ class PipeDecoratorHandler {
10849
10870
  * @description
10850
10871
  * Entry point for all public APIs of the compiler-cli package.
10851
10872
  */
10852
- new compiler.Version('20.0.0-next.5');
10873
+ new compiler.Version('20.0.0-next.7');
10853
10874
 
10854
10875
  /**
10855
10876
  * Whether a given decorator should be treated as an Angular decorator.
@@ -14059,6 +14080,7 @@ let TemplateVisitor$1 = class TemplateVisitor extends compiler.RecursiveVisitor
14059
14080
  this.visitAll(element.references);
14060
14081
  this.visitAll(element.inputs);
14061
14082
  this.visitAll(element.attributes);
14083
+ this.visitAll(element.directives);
14062
14084
  this.visitAll(element.children);
14063
14085
  this.visitAll(element.outputs);
14064
14086
  }
@@ -14067,6 +14089,7 @@ let TemplateVisitor$1 = class TemplateVisitor extends compiler.RecursiveVisitor
14067
14089
  if (templateIdentifier !== null) {
14068
14090
  this.identifiers.add(templateIdentifier);
14069
14091
  }
14092
+ this.visitAll(template.directives);
14070
14093
  this.visitAll(template.variables);
14071
14094
  this.visitAll(template.attributes);
14072
14095
  this.visitAll(template.templateAttrs);
@@ -14152,6 +14175,12 @@ let TemplateVisitor$1 = class TemplateVisitor extends compiler.RecursiveVisitor
14152
14175
  }
14153
14176
  this.visitExpression(decl.value);
14154
14177
  }
14178
+ visitComponent(component) {
14179
+ throw new Error('TODO');
14180
+ }
14181
+ visitDirective(directive) {
14182
+ throw new Error('TODO');
14183
+ }
14155
14184
  /** Creates an identifier for a template element or template node. */
14156
14185
  elementOrTemplateToIdentifier(node) {
14157
14186
  // If this node has already been seen, return the cached result.
@@ -14900,6 +14929,7 @@ class TemplateVisitor extends compiler.RecursiveAstVisitor {
14900
14929
  this.visitAllNodes(element.attributes);
14901
14930
  this.visitAllNodes(element.inputs);
14902
14931
  this.visitAllNodes(element.outputs);
14932
+ this.visitAllNodes(element.directives);
14903
14933
  this.visitAllNodes(element.references);
14904
14934
  this.visitAllNodes(element.children);
14905
14935
  }
@@ -14913,6 +14943,7 @@ class TemplateVisitor extends compiler.RecursiveAstVisitor {
14913
14943
  this.visitAllNodes(template.inputs);
14914
14944
  this.visitAllNodes(template.outputs);
14915
14945
  }
14946
+ this.visitAllNodes(template.directives);
14916
14947
  // TODO(crisbeto): remove this condition when deleting `canVisitStructuralAttributes`.
14917
14948
  if (this.check.canVisitStructuralAttributes || isInlineTemplate) {
14918
14949
  // `templateAttrs` aren't transferred over to the inner element so we always have to visit them.
@@ -14989,6 +15020,20 @@ class TemplateVisitor extends compiler.RecursiveAstVisitor {
14989
15020
  visitLetDeclaration(decl) {
14990
15021
  this.visitAst(decl.value);
14991
15022
  }
15023
+ visitComponent(component) {
15024
+ this.visitAllNodes(component.attributes);
15025
+ this.visitAllNodes(component.inputs);
15026
+ this.visitAllNodes(component.outputs);
15027
+ this.visitAllNodes(component.directives);
15028
+ this.visitAllNodes(component.references);
15029
+ this.visitAllNodes(component.children);
15030
+ }
15031
+ visitDirective(directive) {
15032
+ this.visitAllNodes(directive.attributes);
15033
+ this.visitAllNodes(directive.inputs);
15034
+ this.visitAllNodes(directive.outputs);
15035
+ this.visitAllNodes(directive.references);
15036
+ }
14992
15037
  getDiagnostics(template) {
14993
15038
  this.diagnostics = [];
14994
15039
  this.visitAllNodes(template);
@@ -15075,7 +15120,7 @@ function buildDiagnosticForSignal(ctx, node, component) {
15075
15120
  }
15076
15121
  return [];
15077
15122
  }
15078
- const factory$b = {
15123
+ const factory$c = {
15079
15124
  code: checker.ErrorCode.INTERPOLATED_SIGNAL_NOT_INVOKED,
15080
15125
  name: checker.ExtendedTemplateDiagnosticName.INTERPOLATED_SIGNAL_NOT_INVOKED,
15081
15126
  create: () => new InterpolatedSignalCheck(),
@@ -15101,7 +15146,7 @@ class InvalidBananaInBoxCheck extends TemplateCheckWithVisitor {
15101
15146
  return [diagnostic];
15102
15147
  }
15103
15148
  }
15104
- const factory$a = {
15149
+ const factory$b = {
15105
15150
  code: checker.ErrorCode.INVALID_BANANA_IN_BOX,
15106
15151
  name: checker.ExtendedTemplateDiagnosticName.INVALID_BANANA_IN_BOX,
15107
15152
  create: () => new InvalidBananaInBoxCheck(),
@@ -15162,7 +15207,7 @@ class MissingControlFlowDirectiveCheck extends TemplateCheckWithVisitor {
15162
15207
  return [diagnostic];
15163
15208
  }
15164
15209
  }
15165
- const factory$9 = {
15210
+ const factory$a = {
15166
15211
  code: checker.ErrorCode.MISSING_CONTROL_FLOW_DIRECTIVE,
15167
15212
  name: checker.ExtendedTemplateDiagnosticName.MISSING_CONTROL_FLOW_DIRECTIVE,
15168
15213
  create: (options) => {
@@ -15195,7 +15240,7 @@ class MissingNgForOfLetCheck extends TemplateCheckWithVisitor {
15195
15240
  return [diagnostic];
15196
15241
  }
15197
15242
  }
15198
- const factory$8 = {
15243
+ const factory$9 = {
15199
15244
  code: checker.ErrorCode.MISSING_NGFOROF_LET,
15200
15245
  name: checker.ExtendedTemplateDiagnosticName.MISSING_NGFOROF_LET,
15201
15246
  create: () => new MissingNgForOfLetCheck(),
@@ -15240,7 +15285,7 @@ class NullishCoalescingNotNullableCheck extends TemplateCheckWithVisitor {
15240
15285
  return [diagnostic];
15241
15286
  }
15242
15287
  }
15243
- const factory$7 = {
15288
+ const factory$8 = {
15244
15289
  code: checker.ErrorCode.NULLISH_COALESCING_NOT_NULLABLE,
15245
15290
  name: checker.ExtendedTemplateDiagnosticName.NULLISH_COALESCING_NOT_NULLABLE,
15246
15291
  create: (options) => {
@@ -15297,7 +15342,7 @@ class OptionalChainNotNullableCheck extends TemplateCheckWithVisitor {
15297
15342
  return [diagnostic];
15298
15343
  }
15299
15344
  }
15300
- const factory$6 = {
15345
+ const factory$7 = {
15301
15346
  code: checker.ErrorCode.OPTIONAL_CHAIN_NOT_NULLABLE,
15302
15347
  name: checker.ExtendedTemplateDiagnosticName.OPTIONAL_CHAIN_NOT_NULLABLE,
15303
15348
  create: (options) => {
@@ -15337,7 +15382,7 @@ class NgSkipHydrationSpec extends TemplateCheckWithVisitor {
15337
15382
  return [];
15338
15383
  }
15339
15384
  }
15340
- const factory$5 = {
15385
+ const factory$6 = {
15341
15386
  code: checker.ErrorCode.SKIP_HYDRATION_NOT_STATIC,
15342
15387
  name: checker.ExtendedTemplateDiagnosticName.SKIP_HYDRATION_NOT_STATIC,
15343
15388
  create: () => new NgSkipHydrationSpec(),
@@ -15361,7 +15406,7 @@ class SuffixNotSupportedCheck extends TemplateCheckWithVisitor {
15361
15406
  return [diagnostic];
15362
15407
  }
15363
15408
  }
15364
- const factory$4 = {
15409
+ const factory$5 = {
15365
15410
  code: checker.ErrorCode.SUFFIX_NOT_SUPPORTED,
15366
15411
  name: checker.ExtendedTemplateDiagnosticName.SUFFIX_NOT_SUPPORTED,
15367
15412
  create: () => new SuffixNotSupportedCheck(),
@@ -15406,7 +15451,7 @@ class TextAttributeNotBindingSpec extends TemplateCheckWithVisitor {
15406
15451
  return [diagnostic];
15407
15452
  }
15408
15453
  }
15409
- const factory$3 = {
15454
+ const factory$4 = {
15410
15455
  code: checker.ErrorCode.TEXT_ATTRIBUTE_NOT_BINDING,
15411
15456
  name: checker.ExtendedTemplateDiagnosticName.TEXT_ATTRIBUTE_NOT_BINDING,
15412
15457
  create: () => new TextAttributeNotBindingSpec(),
@@ -15456,17 +15501,17 @@ function assertExpressionInvoked(expression, component, node, expressionText, ct
15456
15501
  const symbol = ctx.templateTypeChecker.getSymbolOfNode(expression, component);
15457
15502
  if (symbol !== null && symbol.kind === checker.SymbolKind.Expression) {
15458
15503
  if (symbol.tsType.getCallSignatures()?.length > 0) {
15459
- const fullExpressionText = generateStringFromExpression(expression, expressionText);
15504
+ const fullExpressionText = generateStringFromExpression$1(expression, expressionText);
15460
15505
  const errorString = `Function in event binding should be invoked: ${fullExpressionText}()`;
15461
15506
  return [ctx.makeTemplateDiagnostic(node.sourceSpan, errorString)];
15462
15507
  }
15463
15508
  }
15464
15509
  return [];
15465
15510
  }
15466
- function generateStringFromExpression(expression, source) {
15511
+ function generateStringFromExpression$1(expression, source) {
15467
15512
  return source.substring(expression.span.start, expression.span.end);
15468
15513
  }
15469
- const factory$2 = {
15514
+ const factory$3 = {
15470
15515
  code: checker.ErrorCode.UNINVOKED_FUNCTION_IN_EVENT_BINDING,
15471
15516
  name: checker.ExtendedTemplateDiagnosticName.UNINVOKED_FUNCTION_IN_EVENT_BINDING,
15472
15517
  create: () => new UninvokedFunctionInEventBindingSpec(),
@@ -15499,7 +15544,7 @@ class UnparenthesizedNullishCoalescing extends TemplateCheckWithVisitor {
15499
15544
  return [];
15500
15545
  }
15501
15546
  }
15502
- const factory$1 = {
15547
+ const factory$2 = {
15503
15548
  code: checker.ErrorCode.UNPARENTHESIZED_NULLISH_COALESCING,
15504
15549
  name: checker.ExtendedTemplateDiagnosticName.UNPARENTHESIZED_NULLISH_COALESCING,
15505
15550
  create: () => new UnparenthesizedNullishCoalescing(),
@@ -15543,12 +15588,50 @@ class UnusedLetDeclarationCheck extends TemplateCheckWithVisitor {
15543
15588
  return this.analysis.get(node);
15544
15589
  }
15545
15590
  }
15546
- const factory = {
15591
+ const factory$1 = {
15547
15592
  code: checker.ErrorCode.UNUSED_LET_DECLARATION,
15548
15593
  name: checker.ExtendedTemplateDiagnosticName.UNUSED_LET_DECLARATION,
15549
15594
  create: () => new UnusedLetDeclarationCheck(),
15550
15595
  };
15551
15596
 
15597
+ /**
15598
+ * Ensures that track functions in @for loops are invoked.
15599
+ */
15600
+ class UninvokedTrackFunctionCheck extends TemplateCheckWithVisitor {
15601
+ code = checker.ErrorCode.UNINVOKED_TRACK_FUNCTION;
15602
+ visitNode(ctx, component, node) {
15603
+ if (!(node instanceof compiler.ForLoopBlock) || !node.trackBy) {
15604
+ return [];
15605
+ }
15606
+ if (node.trackBy.ast instanceof compiler.Call || node.trackBy.ast instanceof compiler.SafeCall) {
15607
+ // If the method is called, skip it.
15608
+ return [];
15609
+ }
15610
+ if (!(node.trackBy.ast instanceof compiler.PropertyRead) &&
15611
+ !(node.trackBy.ast instanceof compiler.SafePropertyRead)) {
15612
+ // If the expression is not a property read, skip it.
15613
+ return [];
15614
+ }
15615
+ const symbol = ctx.templateTypeChecker.getSymbolOfNode(node.trackBy.ast, component);
15616
+ if (symbol !== null &&
15617
+ symbol.kind === checker.SymbolKind.Expression &&
15618
+ symbol.tsType.getCallSignatures()?.length > 0) {
15619
+ const fullExpressionText = generateStringFromExpression(node.trackBy.ast, node.trackBy.source || '');
15620
+ const errorString = `The track function in the @for block should be invoked: ${fullExpressionText}(/* arguments */)`;
15621
+ return [ctx.makeTemplateDiagnostic(node.sourceSpan, errorString)];
15622
+ }
15623
+ return [];
15624
+ }
15625
+ }
15626
+ function generateStringFromExpression(expression, source) {
15627
+ return source.substring(expression.span.start, expression.span.end);
15628
+ }
15629
+ const factory = {
15630
+ code: checker.ErrorCode.UNINVOKED_TRACK_FUNCTION,
15631
+ name: checker.ExtendedTemplateDiagnosticName.UNINVOKED_TRACK_FUNCTION,
15632
+ create: () => new UninvokedTrackFunctionCheck(),
15633
+ };
15634
+
15552
15635
  /**
15553
15636
  * A label referring to a `ts.DiagnosticCategory` or `'suppress'`, meaning the associated diagnostic
15554
15637
  * should not be displayed at all.
@@ -15636,18 +15719,19 @@ function assertNever(value) {
15636
15719
  }
15637
15720
 
15638
15721
  const ALL_DIAGNOSTIC_FACTORIES = [
15639
- factory$a,
15722
+ factory$b,
15723
+ factory$8,
15640
15724
  factory$7,
15641
- factory$6,
15725
+ factory$a,
15726
+ factory$4,
15642
15727
  factory$9,
15728
+ factory$5,
15729
+ factory$c,
15643
15730
  factory$3,
15644
- factory$8,
15645
- factory$4,
15646
- factory$b,
15731
+ factory$1,
15732
+ factory$6,
15647
15733
  factory$2,
15648
15734
  factory,
15649
- factory$5,
15650
- factory$1,
15651
15735
  ];
15652
15736
  const SUPPORTED_DIAGNOSTIC_NAMES = new Set([
15653
15737
  checker.ExtendedTemplateDiagnosticName.CONTROL_FLOW_PREVENTING_CONTENT_PROJECTION,
@@ -16020,28 +16104,6 @@ class SourceFileValidator {
16020
16104
  }
16021
16105
  }
16022
16106
 
16023
- function coreHasSymbol(program, symbol) {
16024
- const checker = program.getTypeChecker();
16025
- for (const sf of program.getSourceFiles().filter(isMaybeCore)) {
16026
- const sym = checker.getSymbolAtLocation(sf);
16027
- if (sym === undefined || sym.exports === undefined) {
16028
- continue;
16029
- }
16030
- if (!sym.exports.has('ɵɵtemplate')) {
16031
- // This is not @angular/core.
16032
- continue;
16033
- }
16034
- return sym.exports.has(symbol.name);
16035
- }
16036
- // No @angular/core file found, so we have no information.
16037
- return null;
16038
- }
16039
- function isMaybeCore(sf) {
16040
- return (sf.isDeclarationFile &&
16041
- sf.fileName.includes('@angular/core') &&
16042
- sf.fileName.endsWith('index.d.ts'));
16043
- }
16044
-
16045
16107
  function getDefaultExportFromCjs (x) {
16046
16108
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
16047
16109
  }
@@ -18717,7 +18779,7 @@ var semver = /*@__PURE__*/getDefaultExportFromCjs(semverExports);
18717
18779
  * @param minVersion Minimum required version for the feature.
18718
18780
  */
18719
18781
  function coreVersionSupportsFeature(coreVersion, minVersion) {
18720
- // A version of `20.0.0-next.5` usually means that core is at head so it supports
18782
+ // A version of `20.0.0-next.7` usually means that core is at head so it supports
18721
18783
  // all features. Use string interpolation prevent the placeholder from being replaced
18722
18784
  // with the current version during build time.
18723
18785
  if (coreVersion === `0.0.0-${'PLACEHOLDER'}`) {
@@ -19265,7 +19327,14 @@ class NgCompiler {
19265
19327
  const printer = ts.createPrinter();
19266
19328
  const nodeText = printer.printNode(ts.EmitHint.Unspecified, callback, sourceFile);
19267
19329
  return ts.transpileModule(nodeText, {
19268
- compilerOptions: this.options,
19330
+ compilerOptions: {
19331
+ ...this.options,
19332
+ // Some module types can produce additional code (see #60795) whereas we need the
19333
+ // HMR update module to use a native `export`. Override the `target` and `module`
19334
+ // to ensure that it looks as expected.
19335
+ module: ts.ModuleKind.ES2022,
19336
+ target: ts.ScriptTarget.ES2022,
19337
+ },
19269
19338
  fileName: sourceFile.fileName,
19270
19339
  reportDiagnostics: false,
19271
19340
  }).outputText;
@@ -19315,13 +19384,11 @@ class NgCompiler {
19315
19384
  const useInlineTypeConstructors = this.programDriver.supportsInlineOperations;
19316
19385
  const checkTwoWayBoundEvents = this.options['_checkTwoWayBoundEvents'] ?? false;
19317
19386
  // Check whether the loaded version of `@angular/core` in the `ts.Program` supports unwrapping
19318
- // writable signals for type-checking. If this check fails to find a suitable .d.ts file, fall
19319
- // back to version detection. Only Angular versions greater than 17.2 have the necessary symbols
19320
- // to type check signals in two-way bindings. We also allow version 0.0.0 in case somebody is
19387
+ // writable signals for type-checking. Only Angular versions greater than 17.2 have the necessary
19388
+ // symbols to type check signals in two-way bindings. We also allow version 0.0.0 in case somebody is
19321
19389
  // using Angular at head.
19322
- let allowSignalsInTwoWayBindings = coreHasSymbol(this.inputProgram, compiler.Identifiers.unwrapWritableSignal) ??
19323
- (this.angularCoreVersion === null ||
19324
- coreVersionSupportsFeature(this.angularCoreVersion, '>= 17.2.0'));
19390
+ const allowSignalsInTwoWayBindings = this.angularCoreVersion === null ||
19391
+ coreVersionSupportsFeature(this.angularCoreVersion, '>= 17.2.0-0');
19325
19392
  // First select a type-checking configuration, based on whether full template type-checking is
19326
19393
  // requested.
19327
19394
  let typeCheckingConfig;