@angular/core 20.0.0-next.1 → 20.0.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 (52) hide show
  1. package/fesm2022/core.mjs +374 -1796
  2. package/fesm2022/core.mjs.map +1 -1
  3. package/fesm2022/primitives/di.mjs +1 -1
  4. package/fesm2022/primitives/di.mjs.map +1 -1
  5. package/fesm2022/primitives/event-dispatch.mjs +2 -589
  6. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  7. package/fesm2022/primitives/signals.mjs +18 -8
  8. package/fesm2022/primitives/signals.mjs.map +1 -1
  9. package/fesm2022/rxjs-interop.mjs +7 -32
  10. package/fesm2022/rxjs-interop.mjs.map +1 -1
  11. package/fesm2022/testing.mjs +119 -138
  12. package/fesm2022/testing.mjs.map +1 -1
  13. package/fesm2022/weak_ref-DrMdAIDh.mjs +12 -0
  14. package/fesm2022/weak_ref-DrMdAIDh.mjs.map +1 -0
  15. package/index.d.ts +14343 -15225
  16. package/navigation_types.d-u4EOrrdZ.d.ts +121 -0
  17. package/package.json +2 -2
  18. package/primitives/di/index.d.ts +42 -50
  19. package/primitives/event-dispatch/index.d.ts +205 -309
  20. package/primitives/signals/index.d.ts +158 -195
  21. package/rxjs-interop/index.d.ts +71 -91
  22. package/schematics/bundles/{apply_import_manager-e2a7fe5b.js → apply_import_manager-CyRT0UvU.js} +12 -16
  23. package/schematics/bundles/{checker-af521da6.js → checker-DF8ZaFW5.js} +3084 -1122
  24. package/schematics/bundles/cleanup-unused-imports.js +21 -27
  25. package/schematics/bundles/{compiler_host-5a29293c.js → compiler_host-Da636uJ8.js} +19 -23
  26. package/schematics/bundles/control-flow-migration.js +81 -38
  27. package/schematics/bundles/{imports-047fbbc8.js → imports-CIX-JgAN.js} +9 -14
  28. package/schematics/bundles/{index-1bef3025.js → index-DnkWgagp.js} +55 -59
  29. package/schematics/bundles/{index-ef1bffbb.js → index-vGJcp5M7.js} +4 -4
  30. package/schematics/bundles/inject-flags.js +181 -0
  31. package/schematics/bundles/inject-migration.js +121 -127
  32. package/schematics/bundles/{leading_space-f8944434.js → leading_space-D9nQ8UQC.js} +1 -1
  33. package/schematics/bundles/{migrate_ts_type_references-2a3e9e6b.js → migrate_ts_type_references-DtkOnnv0.js} +106 -111
  34. package/schematics/bundles/{ng_decorators-b0d8b324.js → ng_decorators-DznZ5jMl.js} +4 -8
  35. package/schematics/bundles/{nodes-7758dbf6.js → nodes-B16H9JUd.js} +2 -6
  36. package/schematics/bundles/output-migration.js +39 -45
  37. package/schematics/bundles/{program-a449f9bf.js → program-BZk27Ndu.js} +844 -2651
  38. package/schematics/bundles/{project_paths-17dc204d.js → project_paths-Jtbi76Bs.js} +25 -23
  39. package/schematics/bundles/{project_tsconfig_paths-b558633b.js → project_tsconfig_paths-CDVxT6Ov.js} +1 -1
  40. package/schematics/bundles/{property_name-ac18447e.js → property_name-BBwFuqMe.js} +3 -7
  41. package/schematics/bundles/route-lazy-loading.js +35 -41
  42. package/schematics/bundles/self-closing-tags-migration.js +19 -25
  43. package/schematics/bundles/signal-input-migration.js +60 -67
  44. package/schematics/bundles/signal-queries-migration.js +47 -54
  45. package/schematics/bundles/signals.js +9 -11
  46. package/schematics/bundles/standalone-migration.js +178 -184
  47. package/schematics/migrations.json +4 -15
  48. package/testing/index.d.ts +289 -469
  49. package/weak_ref.d-ttyj86RV.d.ts +9 -0
  50. package/schematics/bundles/explicit-standalone-flag.js +0 -184
  51. package/schematics/bundles/pending-tasks.js +0 -103
  52. package/schematics/bundles/provide-initializer.js +0 -186
@@ -1,26 +1,21 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.1
3
+ * @license Angular v20.0.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-af521da6.js');
9
+ var checker = require('./checker-DF8ZaFW5.js');
10
10
  var ts = require('typescript');
11
11
  require('os');
12
12
  var assert = require('assert');
13
- var index = require('./index-1bef3025.js');
14
- var project_paths = require('./project_paths-17dc204d.js');
15
- var leading_space = require('./leading_space-f8944434.js');
16
- require('./program-a449f9bf.js');
13
+ var index = require('./index-DnkWgagp.js');
14
+ var project_paths = require('./project_paths-Jtbi76Bs.js');
15
+ var leading_space = require('./leading_space-D9nQ8UQC.js');
16
+ require('./program-BZk27Ndu.js');
17
17
  require('path');
18
18
 
19
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
-
21
- var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
22
- var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
23
-
24
19
  /**
25
20
  * Reasons why a field cannot be migrated.
26
21
  *
@@ -557,11 +552,11 @@ class SpyOnFieldPattern {
557
552
  this.fields = fields;
558
553
  }
559
554
  detect(node) {
560
- if (ts__default["default"].isCallExpression(node) &&
561
- ts__default["default"].isIdentifier(node.expression) &&
555
+ if (ts.isCallExpression(node) &&
556
+ ts.isIdentifier(node.expression) &&
562
557
  node.expression.text === 'spyOn' &&
563
558
  node.arguments.length === 2 &&
564
- ts__default["default"].isStringLiteralLike(node.arguments[1])) {
559
+ ts.isStringLiteralLike(node.arguments[1])) {
565
560
  const spyTargetType = this.checker.getTypeAtLocation(node.arguments[0]);
566
561
  const spyProperty = spyTargetType.getProperty(node.arguments[1].text);
567
562
  if (spyProperty === undefined) {
@@ -593,19 +588,19 @@ function checkIncompatiblePatterns(inheritanceGraph, checker$1, groupedTsAstVisi
593
588
  const inputClassSymbolsToClass = new Map();
594
589
  for (const knownFieldClass of getAllClassesWithKnownFields()) {
595
590
  const classSymbol = checker$1.getTypeAtLocation(knownFieldClass).symbol;
596
- assert__default["default"](classSymbol != null, 'Expected a symbol to exist for the container of known field class.');
597
- assert__default["default"](classSymbol.valueDeclaration !== undefined, 'Expected declaration to exist for known field class.');
598
- assert__default["default"](ts__default["default"].isClassDeclaration(classSymbol.valueDeclaration), 'Expected declaration to be a class.');
591
+ assert(classSymbol != null, 'Expected a symbol to exist for the container of known field class.');
592
+ assert(classSymbol.valueDeclaration !== undefined, 'Expected declaration to exist for known field class.');
593
+ assert(ts.isClassDeclaration(classSymbol.valueDeclaration), 'Expected declaration to be a class.');
599
594
  // track class symbol for derived class checks.
600
595
  inputClassSymbolsToClass.set(classSymbol, classSymbol.valueDeclaration);
601
596
  }
602
597
  const spyOnPattern = new SpyOnFieldPattern(checker$1, fields);
603
598
  const visitor = (node) => {
604
599
  // Check for manual class instantiations.
605
- if (ts__default["default"].isNewExpression(node) && ts__default["default"].isIdentifier(checker.unwrapExpression(node.expression))) {
600
+ if (ts.isNewExpression(node) && ts.isIdentifier(checker.unwrapExpression(node.expression))) {
606
601
  let newTarget = checker$1.getSymbolAtLocation(checker.unwrapExpression(node.expression));
607
602
  // Plain identifier references can point to alias symbols (e.g. imports).
608
- if (newTarget !== undefined && newTarget.flags & ts__default["default"].SymbolFlags.Alias) {
603
+ if (newTarget !== undefined && newTarget.flags & ts.SymbolFlags.Alias) {
609
604
  newTarget = checker$1.getAliasedSymbol(newTarget);
610
605
  }
611
606
  if (newTarget && inputClassSymbolsToClass.has(newTarget)) {
@@ -620,11 +615,11 @@ function checkIncompatiblePatterns(inheritanceGraph, checker$1, groupedTsAstVisi
620
615
  // class inherits a non-input member with the same name.
621
616
  // Suddenly the derived class changes its signature, but the base class may not.
622
617
  problematicReferencesCheck: if (insidePropertyDeclaration !== null &&
623
- ts__default["default"].isIdentifier(node) &&
618
+ ts.isIdentifier(node) &&
624
619
  insidePropertyDeclaration.parent.heritageClauses !== undefined) {
625
620
  let newTarget = checker$1.getSymbolAtLocation(checker.unwrapExpression(node));
626
621
  // Plain identifier references can point to alias symbols (e.g. imports).
627
- if (newTarget !== undefined && newTarget.flags & ts__default["default"].SymbolFlags.Alias) {
622
+ if (newTarget !== undefined && newTarget.flags & ts.SymbolFlags.Alias) {
628
623
  newTarget = checker$1.getAliasedSymbol(newTarget);
629
624
  }
630
625
  if (newTarget && inputClassSymbolsToClass.has(newTarget)) {
@@ -750,19 +745,19 @@ class InheritanceGraph {
750
745
  expensivePopulate(files) {
751
746
  for (const file of files) {
752
747
  const visitor = (node) => {
753
- if ((ts__default["default"].isClassLike(node) || ts__default["default"].isInterfaceDeclaration(node)) &&
748
+ if ((ts.isClassLike(node) || ts.isInterfaceDeclaration(node)) &&
754
749
  node.heritageClauses !== undefined) {
755
750
  const heritageTypes = getInheritedTypes(node, this.checker);
756
751
  const parents = heritageTypes
757
752
  // Interfaces participate in the graph and are not "value declarations".
758
753
  // Also, symbol may be undefined for unresolvable nodes.
759
754
  .map((t) => (t.symbol ? t.symbol.declarations?.[0] : undefined))
760
- .filter((d) => d !== undefined && (ts__default["default"].isClassLike(d) || ts__default["default"].isInterfaceDeclaration(d)));
755
+ .filter((d) => d !== undefined && (ts.isClassLike(d) || ts.isInterfaceDeclaration(d)));
761
756
  this.registerClass(node, parents);
762
757
  }
763
- ts__default["default"].forEachChild(node, visitor);
758
+ ts.forEachChild(node, visitor);
764
759
  };
765
- ts__default["default"].forEachChild(file, visitor);
760
+ ts.forEachChild(file, visitor);
766
761
  }
767
762
  return this;
768
763
  }
@@ -796,17 +791,17 @@ class GroupedTsAstVisitor {
796
791
  for (const v of this.visitors) {
797
792
  v(node);
798
793
  }
799
- if (ts__default["default"].isPropertyDeclaration(node)) {
794
+ if (ts.isPropertyDeclaration(node)) {
800
795
  this.state.insidePropertyDeclaration = node;
801
- ts__default["default"].forEachChild(node, visitor);
796
+ ts.forEachChild(node, visitor);
802
797
  this.state.insidePropertyDeclaration = null;
803
798
  }
804
799
  else {
805
- ts__default["default"].forEachChild(node, visitor);
800
+ ts.forEachChild(node, visitor);
806
801
  }
807
802
  };
808
803
  for (const file of this.files) {
809
- ts__default["default"].forEachChild(file, visitor);
804
+ ts.forEachChild(file, visitor);
810
805
  }
811
806
  for (const doneFn of this.doneFns) {
812
807
  doneFn();
@@ -836,13 +831,13 @@ class GroupedTsAstVisitor {
836
831
  * would then have other derived classes as well, it would propagate the status.
837
832
  */
838
833
  function checkInheritanceOfKnownFields(inheritanceGraph, metaRegistry, fields, opts) {
839
- const allInputClasses = Array.from(inheritanceGraph.allClassesInInheritance).filter((t) => ts__default["default"].isClassDeclaration(t) && opts.isClassWithKnownFields(t));
834
+ const allInputClasses = Array.from(inheritanceGraph.allClassesInInheritance).filter((t) => ts.isClassDeclaration(t) && opts.isClassWithKnownFields(t));
840
835
  for (const inputClass of allInputClasses) {
841
836
  // Note: Class parents of `inputClass` were already checked by
842
837
  // the previous iterations (given the reverse topological sort)—
843
838
  // hence it's safe to assume that incompatibility of parent classes will
844
839
  // not change again, at a later time.
845
- assert__default["default"](ts__default["default"].isClassDeclaration(inputClass), 'Expected input graph node to be always a class.');
840
+ assert(ts.isClassDeclaration(inputClass), 'Expected input graph node to be always a class.');
846
841
  const classFields = opts.getFieldsForClass(inputClass);
847
842
  const inputFieldNamesFromMetadataArray = new Set();
848
843
  // Iterate through derived class chains and determine all inputs that are overridden
@@ -850,7 +845,7 @@ function checkInheritanceOfKnownFields(inheritanceGraph, metaRegistry, fields, o
850
845
  // potential similar class input as incompatible— because those cannot be migrated.
851
846
  if (metaRegistry !== null) {
852
847
  for (const derivedClasses of inheritanceGraph.traceDerivedClasses(inputClass)) {
853
- const derivedMeta = ts__default["default"].isClassDeclaration(derivedClasses) && derivedClasses.name !== undefined
848
+ const derivedMeta = ts.isClassDeclaration(derivedClasses) && derivedClasses.name !== undefined
854
849
  ? metaRegistry.getDirectiveMetadata(new checker.Reference(derivedClasses))
855
850
  : null;
856
851
  if (derivedMeta !== null && derivedMeta.inputFieldNamesFromMetadataArray !== null) {
@@ -865,7 +860,7 @@ function checkInheritanceOfKnownFields(inheritanceGraph, metaRegistry, fields, o
865
860
  // If we discover a derived, input re-declared via class metadata, then it
866
861
  // will cause conflicts as we cannot migrate it/ nor mark it as signal-based.
867
862
  if (fieldDescr.node.name !== undefined &&
868
- (ts__default["default"].isIdentifier(fieldDescr.node.name) || ts__default["default"].isStringLiteralLike(fieldDescr.node.name)) &&
863
+ (ts.isIdentifier(fieldDescr.node.name) || ts.isStringLiteralLike(fieldDescr.node.name)) &&
869
864
  inputFieldNamesFromMetadataArray.has(fieldDescr.node.name.text)) {
870
865
  fields.captureUnknownDerivedField(fieldDescr);
871
866
  }
@@ -906,7 +901,7 @@ function removeFromUnionIfPossible(union, filter) {
906
901
  if (filtered.length === 1) {
907
902
  return filtered[0];
908
903
  }
909
- return ts__default["default"].factory.updateUnionTypeNode(union, ts__default["default"].factory.createNodeArray(filtered));
904
+ return ts.factory.updateUnionTypeNode(union, ts.factory.createNodeArray(filtered));
910
905
  }
911
906
 
912
907
  /**
@@ -1109,7 +1104,7 @@ const ReservedMarker = Symbol();
1109
1104
  */
1110
1105
  function isIdentifierFreeInScope(name, location) {
1111
1106
  const startContainer = findClosestParentLocalsContainer(location);
1112
- assert__default["default"](startContainer !== undefined, 'Expecting a locals container.');
1107
+ assert(startContainer !== undefined, 'Expecting a locals container.');
1113
1108
  // Traverse up and check for potential collisions.
1114
1109
  let container = startContainer;
1115
1110
  let firstNextContainer = undefined;
@@ -1136,7 +1131,7 @@ function isIdentifierFreeInScope(name, location) {
1136
1131
  }
1137
1132
  /** Finds the closest parent locals container. */
1138
1133
  function findClosestParentLocalsContainer(node) {
1139
- return ts__default["default"].findAncestor(node, isLocalsContainer);
1134
+ return ts.findAncestor(node, isLocalsContainer);
1140
1135
  }
1141
1136
  /** Whether the given identifier is free in the given locals container. */
1142
1137
  function isIdentifierFreeInContainer(name, container) {
@@ -1148,7 +1143,7 @@ function isIdentifierFreeInContainer(name, container) {
1148
1143
  // typescript/stable/src/compiler/emitter.ts;l=5436;rcl=651008033
1149
1144
  const local = container.locals.get(name);
1150
1145
  return (local !== ReservedMarker &&
1151
- !(local.flags & (ts__default["default"].SymbolFlags.Value | ts__default["default"].SymbolFlags.ExportValue | ts__default["default"].SymbolFlags.Alias)));
1146
+ !(local.flags & (ts.SymbolFlags.Value | ts.SymbolFlags.ExportValue | ts.SymbolFlags.Alias)));
1152
1147
  }
1153
1148
  /**
1154
1149
  * Whether the given node can contain local variables.
@@ -1158,36 +1153,36 @@ function isIdentifierFreeInContainer(name, container) {
1158
1153
  */
1159
1154
  function isLocalsContainer(node) {
1160
1155
  switch (node.kind) {
1161
- case ts__default["default"].SyntaxKind.ArrowFunction:
1162
- case ts__default["default"].SyntaxKind.Block:
1163
- case ts__default["default"].SyntaxKind.CallSignature:
1164
- case ts__default["default"].SyntaxKind.CaseBlock:
1165
- case ts__default["default"].SyntaxKind.CatchClause:
1166
- case ts__default["default"].SyntaxKind.ClassStaticBlockDeclaration:
1167
- case ts__default["default"].SyntaxKind.ConditionalType:
1168
- case ts__default["default"].SyntaxKind.Constructor:
1169
- case ts__default["default"].SyntaxKind.ConstructorType:
1170
- case ts__default["default"].SyntaxKind.ConstructSignature:
1171
- case ts__default["default"].SyntaxKind.ForStatement:
1172
- case ts__default["default"].SyntaxKind.ForInStatement:
1173
- case ts__default["default"].SyntaxKind.ForOfStatement:
1174
- case ts__default["default"].SyntaxKind.FunctionDeclaration:
1175
- case ts__default["default"].SyntaxKind.FunctionExpression:
1176
- case ts__default["default"].SyntaxKind.FunctionType:
1177
- case ts__default["default"].SyntaxKind.GetAccessor:
1178
- case ts__default["default"].SyntaxKind.IndexSignature:
1179
- case ts__default["default"].SyntaxKind.JSDocCallbackTag:
1180
- case ts__default["default"].SyntaxKind.JSDocEnumTag:
1181
- case ts__default["default"].SyntaxKind.JSDocFunctionType:
1182
- case ts__default["default"].SyntaxKind.JSDocSignature:
1183
- case ts__default["default"].SyntaxKind.JSDocTypedefTag:
1184
- case ts__default["default"].SyntaxKind.MappedType:
1185
- case ts__default["default"].SyntaxKind.MethodDeclaration:
1186
- case ts__default["default"].SyntaxKind.MethodSignature:
1187
- case ts__default["default"].SyntaxKind.ModuleDeclaration:
1188
- case ts__default["default"].SyntaxKind.SetAccessor:
1189
- case ts__default["default"].SyntaxKind.SourceFile:
1190
- case ts__default["default"].SyntaxKind.TypeAliasDeclaration:
1156
+ case ts.SyntaxKind.ArrowFunction:
1157
+ case ts.SyntaxKind.Block:
1158
+ case ts.SyntaxKind.CallSignature:
1159
+ case ts.SyntaxKind.CaseBlock:
1160
+ case ts.SyntaxKind.CatchClause:
1161
+ case ts.SyntaxKind.ClassStaticBlockDeclaration:
1162
+ case ts.SyntaxKind.ConditionalType:
1163
+ case ts.SyntaxKind.Constructor:
1164
+ case ts.SyntaxKind.ConstructorType:
1165
+ case ts.SyntaxKind.ConstructSignature:
1166
+ case ts.SyntaxKind.ForStatement:
1167
+ case ts.SyntaxKind.ForInStatement:
1168
+ case ts.SyntaxKind.ForOfStatement:
1169
+ case ts.SyntaxKind.FunctionDeclaration:
1170
+ case ts.SyntaxKind.FunctionExpression:
1171
+ case ts.SyntaxKind.FunctionType:
1172
+ case ts.SyntaxKind.GetAccessor:
1173
+ case ts.SyntaxKind.IndexSignature:
1174
+ case ts.SyntaxKind.JSDocCallbackTag:
1175
+ case ts.SyntaxKind.JSDocEnumTag:
1176
+ case ts.SyntaxKind.JSDocFunctionType:
1177
+ case ts.SyntaxKind.JSDocSignature:
1178
+ case ts.SyntaxKind.JSDocTypedefTag:
1179
+ case ts.SyntaxKind.MappedType:
1180
+ case ts.SyntaxKind.MethodDeclaration:
1181
+ case ts.SyntaxKind.MethodSignature:
1182
+ case ts.SyntaxKind.ModuleDeclaration:
1183
+ case ts.SyntaxKind.SetAccessor:
1184
+ case ts.SyntaxKind.SourceFile:
1185
+ case ts.SyntaxKind.TypeAliasDeclaration:
1191
1186
  return true;
1192
1187
  default:
1193
1188
  return false;
@@ -1252,8 +1247,8 @@ function createNewBlockToInsertVariable(node, file, toInsert) {
1252
1247
  // For indentation, we traverse up and find the earliest statement.
1253
1248
  // This node is most of the time a good candidate for acceptable
1254
1249
  // indentation of a new block.
1255
- const spacingNode = ts__default["default"].findAncestor(node, ts__default["default"].isStatement) ?? node.parent;
1256
- const { character } = ts__default["default"].getLineAndCharacterOfPosition(sf, spacingNode.getStart());
1250
+ const spacingNode = ts.findAncestor(node, ts.isStatement) ?? node.parent;
1251
+ const { character } = ts.getLineAndCharacterOfPosition(sf, spacingNode.getStart());
1257
1252
  const blockSpace = ' '.repeat(character);
1258
1253
  const contentSpace = ' '.repeat(character + 2);
1259
1254
  return [
@@ -1303,17 +1298,17 @@ function migrateBindingElementInputReference(tsReferencesInBindingElements, info
1303
1298
  const sourceFile = bindingElement.getSourceFile();
1304
1299
  const file = project_paths.projectFile(sourceFile, info);
1305
1300
  const inputFieldName = bindingElement.propertyName ?? bindingElement.name;
1306
- assert__default["default"](!ts__default["default"].isObjectBindingPattern(inputFieldName) && !ts__default["default"].isArrayBindingPattern(inputFieldName), 'Property of binding element cannot be another pattern.');
1301
+ assert(!ts.isObjectBindingPattern(inputFieldName) && !ts.isArrayBindingPattern(inputFieldName), 'Property of binding element cannot be another pattern.');
1307
1302
  const tmpName = nameGenerator.generate(reference.text, bindingElement);
1308
1303
  // Only use the temporary name, if really needed. A temporary name is needed if
1309
1304
  // the input field simply aliased via the binding element, or if the exposed identifier
1310
1305
  // is a string-literal like.
1311
- const useTmpNameForInputField = !ts__default["default"].isObjectBindingPattern(bindingElement.name) || !ts__default["default"].isIdentifier(inputFieldName);
1306
+ const useTmpNameForInputField = !ts.isObjectBindingPattern(bindingElement.name) || !ts.isIdentifier(inputFieldName);
1312
1307
  const propertyName = useTmpNameForInputField ? inputFieldName : undefined;
1313
1308
  const exposedName = useTmpNameForInputField
1314
- ? ts__default["default"].factory.createIdentifier(tmpName)
1309
+ ? ts.factory.createIdentifier(tmpName)
1315
1310
  : inputFieldName;
1316
- const newBindingToAccessInputField = ts__default["default"].factory.updateBindingElement(bindingElement, bindingElement.dotDotDotToken, propertyName, exposedName, bindingElement.initializer);
1311
+ const newBindingToAccessInputField = ts.factory.updateBindingElement(bindingElement, bindingElement.dotDotDotToken, propertyName, exposedName, bindingElement.initializer);
1317
1312
  const temporaryVariableReplacements = insertTemporaryVariableForBindingElement(bindingDecl, file, `const ${bindingElement.name.getText()} = ${exposedName.text}();`);
1318
1313
  if (temporaryVariableReplacements === null) {
1319
1314
  console.error(`Could not migrate reference ${reference.text} in ${file.rootRelativePath}`);
@@ -1322,7 +1317,7 @@ function migrateBindingElementInputReference(tsReferencesInBindingElements, info
1322
1317
  replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
1323
1318
  position: bindingElement.getStart(),
1324
1319
  end: bindingElement.getEnd(),
1325
- toInsert: printer.printNode(ts__default["default"].EmitHint.Unspecified, newBindingToAccessInputField, sourceFile),
1320
+ toInsert: printer.printNode(ts.EmitHint.Unspecified, newBindingToAccessInputField, sourceFile),
1326
1321
  })), ...temporaryVariableReplacements);
1327
1322
  }
1328
1323
  }
@@ -1339,8 +1334,8 @@ function insertTemporaryVariableForBindingElement(expansionDecl, file, toInsert)
1339
1334
  // The snippet is simply inserted after the variable declaration.
1340
1335
  // The other case of a variable declaration inside a catch clause is handled
1341
1336
  // below.
1342
- if (ts__default["default"].isVariableDeclaration(expansionDecl) && ts__default["default"].isVariableDeclarationList(parent)) {
1343
- const leadingSpaceCount = ts__default["default"].getLineAndCharacterOfPosition(sf, parent.getStart()).character;
1337
+ if (ts.isVariableDeclaration(expansionDecl) && ts.isVariableDeclarationList(parent)) {
1338
+ const leadingSpaceCount = ts.getLineAndCharacterOfPosition(sf, parent.getStart()).character;
1344
1339
  const leadingSpace = ' '.repeat(leadingSpaceCount);
1345
1340
  const statement = parent.parent;
1346
1341
  return [
@@ -1359,7 +1354,7 @@ function insertTemporaryVariableForBindingElement(expansionDecl, file, toInsert)
1359
1354
  const firstElementInBlock = bodyBlock.statements[0];
1360
1355
  const spaceReferenceNode = firstElementInBlock ?? bodyBlock;
1361
1356
  const spaceOffset = firstElementInBlock !== undefined ? 0 : 2;
1362
- const leadingSpaceCount = ts__default["default"].getLineAndCharacterOfPosition(sf, spaceReferenceNode.getStart()).character + spaceOffset;
1357
+ const leadingSpaceCount = ts.getLineAndCharacterOfPosition(sf, spaceReferenceNode.getStart()).character + spaceOffset;
1363
1358
  const leadingSpace = ' '.repeat(leadingSpaceCount);
1364
1359
  return [
1365
1360
  new project_paths.Replacement(file, new project_paths.TextUpdate({
@@ -1371,23 +1366,23 @@ function insertTemporaryVariableForBindingElement(expansionDecl, file, toInsert)
1371
1366
  }
1372
1367
  // Other cases where we see an arrow function without a block.
1373
1368
  // We need to create one now.
1374
- if (ts__default["default"].isArrowFunction(parent) && !ts__default["default"].isBlock(parent.body)) {
1369
+ if (ts.isArrowFunction(parent) && !ts.isBlock(parent.body)) {
1375
1370
  return createNewBlockToInsertVariable(parent, file, toInsert);
1376
1371
  }
1377
1372
  return null;
1378
1373
  }
1379
1374
  /** Gets the body block of a given node, if available. */
1380
1375
  function getBodyBlockOfNode(node) {
1381
- if ((ts__default["default"].isMethodDeclaration(node) ||
1382
- ts__default["default"].isFunctionDeclaration(node) ||
1383
- ts__default["default"].isGetAccessorDeclaration(node) ||
1384
- ts__default["default"].isConstructorDeclaration(node) ||
1385
- ts__default["default"].isArrowFunction(node)) &&
1376
+ if ((ts.isMethodDeclaration(node) ||
1377
+ ts.isFunctionDeclaration(node) ||
1378
+ ts.isGetAccessorDeclaration(node) ||
1379
+ ts.isConstructorDeclaration(node) ||
1380
+ ts.isArrowFunction(node)) &&
1386
1381
  node.body !== undefined &&
1387
- ts__default["default"].isBlock(node.body)) {
1382
+ ts.isBlock(node.body)) {
1388
1383
  return node.body;
1389
1384
  }
1390
- if (ts__default["default"].isCatchClause(node.parent)) {
1385
+ if (ts.isCatchClause(node.parent)) {
1391
1386
  return node.parent.block;
1392
1387
  }
1393
1388
  return null;
@@ -1398,25 +1393,25 @@ function getBodyBlockOfNode(node) {
1398
1393
  * E.g. variables cannot be narrowed when descending into children of `node`.
1399
1394
  */
1400
1395
  function isControlFlowBoundary(node) {
1401
- return ((ts__default["default"].isFunctionLike(node) && !getImmediatelyInvokedFunctionExpression(node)) ||
1402
- node.kind === ts__default["default"].SyntaxKind.ModuleBlock ||
1403
- node.kind === ts__default["default"].SyntaxKind.SourceFile ||
1404
- node.kind === ts__default["default"].SyntaxKind.PropertyDeclaration);
1396
+ return ((ts.isFunctionLike(node) && !getImmediatelyInvokedFunctionExpression(node)) ||
1397
+ node.kind === ts.SyntaxKind.ModuleBlock ||
1398
+ node.kind === ts.SyntaxKind.SourceFile ||
1399
+ node.kind === ts.SyntaxKind.PropertyDeclaration);
1405
1400
  }
1406
1401
  /** Determines the current flow container of a given node. */
1407
1402
  function getControlFlowContainer(node) {
1408
- return ts__default["default"].findAncestor(node.parent, (node) => isControlFlowBoundary(node));
1403
+ return ts.findAncestor(node.parent, (node) => isControlFlowBoundary(node));
1409
1404
  }
1410
1405
  /** Checks whether the given node refers to an IIFE declaration. */
1411
1406
  function getImmediatelyInvokedFunctionExpression(func) {
1412
- if (func.kind === ts__default["default"].SyntaxKind.FunctionExpression || func.kind === ts__default["default"].SyntaxKind.ArrowFunction) {
1407
+ if (func.kind === ts.SyntaxKind.FunctionExpression || func.kind === ts.SyntaxKind.ArrowFunction) {
1413
1408
  let prev = func;
1414
1409
  let parent = func.parent;
1415
- while (parent.kind === ts__default["default"].SyntaxKind.ParenthesizedExpression) {
1410
+ while (parent.kind === ts.SyntaxKind.ParenthesizedExpression) {
1416
1411
  prev = parent;
1417
1412
  parent = parent.parent;
1418
1413
  }
1419
- if (parent.kind === ts__default["default"].SyntaxKind.CallExpression &&
1414
+ if (parent.kind === ts.SyntaxKind.CallExpression &&
1420
1415
  parent.expression === prev) {
1421
1416
  return parent;
1422
1417
  }
@@ -1471,10 +1466,10 @@ function traverseFlowForInterestingNodes(flow) {
1471
1466
  if (flags & FlowFlags.Assignment) {
1472
1467
  const assignment = flow;
1473
1468
  queue.add(assignment.antecedent);
1474
- if (ts__default["default"].isVariableDeclaration(assignment.node)) {
1469
+ if (ts.isVariableDeclaration(assignment.node)) {
1475
1470
  interestingNodes.push(assignment.node.name);
1476
1471
  }
1477
- else if (ts__default["default"].isBindingElement(assignment.node)) {
1472
+ else if (ts.isBindingElement(assignment.node)) {
1478
1473
  interestingNodes.push(assignment.node.name);
1479
1474
  }
1480
1475
  else {
@@ -1594,7 +1589,7 @@ function analyzeControlFlow(entries, checker) {
1594
1589
  for (const entry of entries) {
1595
1590
  const { flowContainer, resultIndex } = referenceToMetadata.get(entry);
1596
1591
  const flowPathInterestingNodes = traverseFlowForInterestingNodes(getFlowNode(entry));
1597
- assert__default["default"](flowContainer !== null && flowPathInterestingNodes !== null, 'Expected a flow container to exist.');
1592
+ assert(flowContainer !== null && flowPathInterestingNodes !== null, 'Expected a flow container to exist.');
1598
1593
  const narrowPartners = getAllMatchingReferencesInFlowPath(flowPathInterestingNodes, entry, referenceToMetadata, flowContainer, checker);
1599
1594
  if (narrowPartners.length !== 0) {
1600
1595
  connectSharedReferences(result, narrowPartners, resultIndex);
@@ -1620,8 +1615,8 @@ function connectSharedReferences(result, flowPartners, refId) {
1620
1615
  earliestPartnerId = partnerId;
1621
1616
  }
1622
1617
  }
1623
- assert__default["default"](earliestPartner !== null, 'Expected an earliest partner to be found.');
1624
- assert__default["default"](earliestPartnerId !== null, 'Expected an earliest partner to be found.');
1618
+ assert(earliestPartner !== null, 'Expected an earliest partner to be found.');
1619
+ assert(earliestPartnerId !== null, 'Expected an earliest partner to be found.');
1625
1620
  // Earliest partner ID could be higher than `refId` in cyclic
1626
1621
  // situations like `loop` flow nodes. We need to find the minimum
1627
1622
  // and maximum to iterate through partners in between.
@@ -1662,14 +1657,14 @@ function connectSharedReferences(result, flowPartners, refId) {
1662
1657
  if (!highestBlock) {
1663
1658
  console.error(earliestPartnerId, refId, refFlowContainer.getText(), seenBlocks);
1664
1659
  }
1665
- assert__default["default"](highestBlock, 'Expected a block anchor to be found');
1660
+ assert(highestBlock, 'Expected a block anchor to be found');
1666
1661
  result[earliestPartnerId].recommendedNode = highestBlock;
1667
1662
  }
1668
1663
  function isPotentialInsertionAncestor(node) {
1669
1664
  // Note: Arrow functions may not have a block, but instead use an expression
1670
1665
  // directly. This still signifies a "block" as we can convert the concise body
1671
1666
  // to a block.
1672
- return (ts__default["default"].isSourceFile(node) || ts__default["default"].isBlock(node) || ts__default["default"].isArrowFunction(node) || ts__default["default"].isClassLike(node));
1667
+ return (ts.isSourceFile(node) || ts.isBlock(node) || ts.isArrowFunction(node) || ts.isClassLike(node));
1673
1668
  }
1674
1669
  /**
1675
1670
  * Looks through the flow path and interesting nodes to determine which
@@ -1698,7 +1693,7 @@ function getAllMatchingReferencesInFlowPath(flowPathInterestingNodes, reference,
1698
1693
  * matches the given reference. If so, returns its flow ID.
1699
1694
  */
1700
1695
  function findSimilarReferenceNode(start, reference, referenceToMetadata, restrainingFlowContainer, checker) {
1701
- return (ts__default["default"].forEachChild(start, function visitChild(node) {
1696
+ return (ts.forEachChild(start, function visitChild(node) {
1702
1697
  // do not descend into control flow boundaries.
1703
1698
  // only references sharing the same container are relevant.
1704
1699
  // This is a performance optimization.
@@ -1706,9 +1701,9 @@ function findSimilarReferenceNode(start, reference, referenceToMetadata, restrai
1706
1701
  return;
1707
1702
  }
1708
1703
  // If this is not a potential matching identifier, check its children.
1709
- if (!ts__default["default"].isIdentifier(node) ||
1704
+ if (!ts.isIdentifier(node) ||
1710
1705
  referenceToMetadata.get(node)?.flowContainer !== restrainingFlowContainer) {
1711
- return ts__default["default"].forEachChild(node, visitChild);
1706
+ return ts.forEachChild(node, visitChild);
1712
1707
  }
1713
1708
  // If this refers to a different instantiation of the input reference,
1714
1709
  // continue looking.
@@ -1726,7 +1721,7 @@ function isLexicalSameReference(checker, sharePartner, reference) {
1726
1721
  const aParent = index.unwrapParent(reference.parent);
1727
1722
  // If the reference is not part a property access, return true. The references
1728
1723
  // are guaranteed symbol matches.
1729
- if (!ts__default["default"].isPropertyAccessExpression(aParent) && !ts__default["default"].isElementAccessExpression(aParent)) {
1724
+ if (!ts.isPropertyAccessExpression(aParent) && !ts.isElementAccessExpression(aParent)) {
1730
1725
  return sharePartner.text === reference.text;
1731
1726
  }
1732
1727
  // If reference parent is part of a property expression, but the share
@@ -1776,7 +1771,7 @@ function migrateStandardTsReference(tsReferencesWithNarrowing, checker, info, re
1776
1771
  // Extract the shared field name.
1777
1772
  const toInsert = idToSharedField.get(recommendedNode);
1778
1773
  const replaceNode = index.traverseAccess(originalNode);
1779
- assert__default["default"](toInsert, 'no shared variable yet available');
1774
+ assert(toInsert, 'no shared variable yet available');
1780
1775
  replacements.push(new project_paths.Replacement(project_paths.projectFile(sf, info), new project_paths.TextUpdate({
1781
1776
  position: replaceNode.getStart(),
1782
1777
  end: replaceNode.getEnd(),
@@ -1802,7 +1797,7 @@ function migrateStandardTsReference(tsReferencesWithNarrowing, checker, info, re
1802
1797
  const fieldName = nameGenerator.generate(originalNode.text, referenceNodeInBlock);
1803
1798
  let sharedValueAccessExpr;
1804
1799
  let temporaryVariableStr;
1805
- if (ts__default["default"].isClassLike(recommendedNode)) {
1800
+ if (ts.isClassLike(recommendedNode)) {
1806
1801
  sharedValueAccessExpr = `this.${fieldName}`;
1807
1802
  temporaryVariableStr = `private readonly ${fieldName} = ${initializer};`;
1808
1803
  }
@@ -1814,11 +1809,11 @@ function migrateStandardTsReference(tsReferencesWithNarrowing, checker, info, re
1814
1809
  // If the common ancestor block of all shared references is an arrow function
1815
1810
  // without a block, convert the arrow function to a block and insert the temporary
1816
1811
  // variable at the beginning.
1817
- if (ts__default["default"].isArrowFunction(parent) && !ts__default["default"].isBlock(parent.body)) {
1812
+ if (ts.isArrowFunction(parent) && !ts.isBlock(parent.body)) {
1818
1813
  replacements.push(...createNewBlockToInsertVariable(parent, filePath, temporaryVariableStr));
1819
1814
  }
1820
1815
  else {
1821
- const leadingSpace = ts__default["default"].getLineAndCharacterOfPosition(sf, referenceNodeInBlock.getStart());
1816
+ const leadingSpace = ts.getLineAndCharacterOfPosition(sf, referenceNodeInBlock.getStart());
1822
1817
  replacements.push(new project_paths.Replacement(filePath, new project_paths.TextUpdate({
1823
1818
  position: referenceNodeInBlock.getStart(),
1824
1819
  end: referenceNodeInBlock.getStart(),
@@ -1921,8 +1916,8 @@ function migrateTypeScriptTypeReferences(host, references, importManager, info)
1921
1916
  }
1922
1917
  seenTypeNodes.add(reference.from.node);
1923
1918
  if (reference.isPartialReference && reference.isPartOfCatalystFile) {
1924
- assert__default["default"](reference.from.node.typeArguments, 'Expected type arguments for partial reference.');
1925
- assert__default["default"](reference.from.node.typeArguments.length === 1, 'Expected an argument for reference.');
1919
+ assert(reference.from.node.typeArguments, 'Expected type arguments for partial reference.');
1920
+ assert(reference.from.node.typeArguments.length === 1, 'Expected an argument for reference.');
1926
1921
  const firstArg = reference.from.node.typeArguments[0];
1927
1922
  const sf = firstArg.getSourceFile();
1928
1923
  // Naive detection of the import. Sufficient for this test file migration.
@@ -1937,7 +1932,7 @@ function migrateTypeScriptTypeReferences(host, references, importManager, info)
1937
1932
  host.replacements.push(new project_paths.Replacement(project_paths.projectFile(sf, info), new project_paths.TextUpdate({
1938
1933
  position: firstArg.getStart(),
1939
1934
  end: firstArg.getStart(),
1940
- toInsert: `${host.printer.printNode(ts__default["default"].EmitHint.Unspecified, unwrapImportExpr, sf)}<`,
1935
+ toInsert: `${host.printer.printNode(ts.EmitHint.Unspecified, unwrapImportExpr, sf)}<`,
1941
1936
  })));
1942
1937
  host.replacements.push(new project_paths.Replacement(project_paths.projectFile(sf, info), new project_paths.TextUpdate({ position: firstArg.getEnd(), end: firstArg.getEnd(), toInsert: '>' })));
1943
1938
  }
@@ -1,23 +1,19 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.1
3
+ * @license Angular v20.0.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 imports = require('./imports-047fbbc8.js');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
10
+ var imports = require('./imports-CIX-JgAN.js');
15
11
 
16
12
  function getCallDecoratorImport(typeChecker, decorator) {
17
13
  // Note that this does not cover the edge case where decorators are called from
18
14
  // a namespace import: e.g. "@core.Component()". This is not handled by Ngtsc either.
19
- if (!ts__default["default"].isCallExpression(decorator.expression) ||
20
- !ts__default["default"].isIdentifier(decorator.expression.expression)) {
15
+ if (!ts.isCallExpression(decorator.expression) ||
16
+ !ts.isIdentifier(decorator.expression.expression)) {
21
17
  return null;
22
18
  }
23
19
  const identifier = decorator.expression.expression;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v20.0.0-next.1
3
+ * @license Angular v20.0.0-next.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -8,14 +8,10 @@
8
8
 
9
9
  var ts = require('typescript');
10
10
 
11
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
-
13
- var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
14
-
15
11
  /** Find the closest parent node of a particular kind. */
16
12
  function closestNode(node, predicate) {
17
13
  let current = node.parent;
18
- while (current && !ts__default["default"].isSourceFile(current)) {
14
+ while (current && !ts.isSourceFile(current)) {
19
15
  if (predicate(current)) {
20
16
  return current;
21
17
  }