@angular/core 19.2.0-next.3 → 19.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/fesm2022/core.mjs +973 -988
  2. package/fesm2022/core.mjs.map +1 -1
  3. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  4. package/fesm2022/primitives/signals.mjs +5 -5
  5. package/fesm2022/primitives/signals.mjs.map +1 -1
  6. package/fesm2022/rxjs-interop.mjs +1 -1
  7. package/fesm2022/testing.mjs +4 -4
  8. package/index.d.ts +68 -35
  9. package/package.json +1 -1
  10. package/primitives/event-dispatch/index.d.ts +1 -1
  11. package/primitives/signals/index.d.ts +2 -2
  12. package/rxjs-interop/index.d.ts +1 -1
  13. package/schematics/bundles/apply_import_manager-a930fcf1.js +71 -0
  14. package/schematics/bundles/{checker-32db85a6.js → checker-2eecc677.js} +17 -16
  15. package/schematics/bundles/cleanup-unused-imports.js +16 -15
  16. package/schematics/bundles/{compiler_host-540e221c.js → compiler_host-c280a924.js} +2 -2
  17. package/schematics/bundles/control-flow-migration.js +3 -3
  18. package/schematics/bundles/explicit-standalone-flag.js +3 -3
  19. package/schematics/bundles/imports-abe29092.js +1 -1
  20. package/schematics/bundles/{index-d5020c9c.js → index-24a2ad1e.js} +9 -9
  21. package/schematics/bundles/{index-7ee8967e.js → index-3891dd55.js} +4 -4
  22. package/schematics/bundles/inject-migration.js +8 -7
  23. package/schematics/bundles/leading_space-d190b83b.js +1 -1
  24. package/schematics/bundles/{migrate_ts_type_references-26986908.js → migrate_ts_type_references-71b3a951.js} +20 -20
  25. package/schematics/bundles/{nodes-a9f0b985.js → ng_decorators-e699c081.js} +1 -14
  26. package/schematics/bundles/nodes-a535b2be.js +27 -0
  27. package/schematics/bundles/output-migration.js +21 -20
  28. package/schematics/bundles/pending-tasks.js +3 -3
  29. package/schematics/bundles/{program-507de2f1.js → program-24da9092.js} +90 -45
  30. package/schematics/bundles/{apply_import_manager-f4d044b2.js → project_paths-b073c4d6.js} +3 -57
  31. package/schematics/bundles/project_tsconfig_paths-e9ccccbf.js +1 -1
  32. package/schematics/bundles/property_name-7c8433f5.js +31 -0
  33. package/schematics/bundles/provide-initializer.js +3 -3
  34. package/schematics/bundles/route-lazy-loading.js +8 -12
  35. package/schematics/bundles/self-closing-tags-migration.js +448 -0
  36. package/schematics/bundles/signal-input-migration.js +20 -19
  37. package/schematics/bundles/signal-queries-migration.js +26 -25
  38. package/schematics/bundles/signals.js +7 -6
  39. package/schematics/bundles/standalone-migration.js +12 -11
  40. package/schematics/collection.json +6 -0
  41. package/schematics/ng-generate/self-closing-tags-migration/schema.json +14 -0
  42. package/testing/index.d.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v19.2.0-next.3
3
+ * @license Angular v19.2.0-rc.0
4
4
  * (c) 2010-2024 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -10,15 +10,16 @@ Object.defineProperty(exports, '__esModule', { value: true });
10
10
 
11
11
  var schematics = require('@angular-devkit/schematics');
12
12
  var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
13
- var apply_import_manager = require('./apply_import_manager-f4d044b2.js');
13
+ var project_paths = require('./project_paths-b073c4d6.js');
14
14
  require('os');
15
15
  var ts = require('typescript');
16
- var checker = require('./checker-32db85a6.js');
17
- var program = require('./program-507de2f1.js');
16
+ var checker = require('./checker-2eecc677.js');
17
+ var program = require('./program-24da9092.js');
18
18
  require('path');
19
- var migrate_ts_type_references = require('./migrate_ts_type_references-26986908.js');
19
+ var apply_import_manager = require('./apply_import_manager-a930fcf1.js');
20
+ var migrate_ts_type_references = require('./migrate_ts_type_references-71b3a951.js');
20
21
  var assert = require('assert');
21
- var index = require('./index-d5020c9c.js');
22
+ var index = require('./index-24a2ad1e.js');
22
23
  require('@angular-devkit/core');
23
24
  require('node:path/posix');
24
25
  require('fs');
@@ -63,7 +64,7 @@ function migrateHostBindings(host, references, info) {
63
64
  const appendText = reference.from.isObjectShorthandExpression
64
65
  ? `: ${reference.from.read.name}()`
65
66
  : `()`;
66
- host.replacements.push(new apply_import_manager.Replacement(apply_import_manager.projectFile(bindingField.getSourceFile(), info), new apply_import_manager.TextUpdate({ position: readEndPos, end: readEndPos, toInsert: appendText })));
67
+ host.replacements.push(new project_paths.Replacement(project_paths.projectFile(bindingField.getSourceFile(), info), new project_paths.TextUpdate({ position: readEndPos, end: readEndPos, toInsert: appendText })));
67
68
  }
68
69
  }
69
70
 
@@ -92,7 +93,7 @@ function migrateTemplateReferences(host, references) {
92
93
  const appendText = reference.from.isObjectShorthandExpression
93
94
  ? `: ${reference.from.read.name}()`
94
95
  : `()`;
95
- host.replacements.push(new apply_import_manager.Replacement(reference.from.templateFile, new apply_import_manager.TextUpdate({
96
+ host.replacements.push(new project_paths.Replacement(reference.from.templateFile, new project_paths.TextUpdate({
96
97
  position: reference.from.read.sourceSpan.end,
97
98
  end: reference.from.read.sourceSpan.end,
98
99
  toInsert: appendText,
@@ -223,7 +224,7 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
223
224
  resolvedReadType === null && type !== undefined ? [type] : undefined, args);
224
225
  const updated = ts__default["default"].factory.createPropertyDeclaration([ts__default["default"].factory.createModifier(ts__default["default"].SyntaxKind.ReadonlyKeyword)], node.name, undefined, undefined, call);
225
226
  return [
226
- new apply_import_manager.Replacement(apply_import_manager.projectFile(node.getSourceFile(), info), new apply_import_manager.TextUpdate({
227
+ new project_paths.Replacement(project_paths.projectFile(node.getSourceFile(), info), new project_paths.TextUpdate({
227
228
  position: node.getStart(),
228
229
  end: node.getEnd(),
229
230
  toInsert: printer.printNode(ts__default["default"].EmitHint.Unspecified, updated, sf),
@@ -264,7 +265,7 @@ function getUniqueIDForClassProperty(property, info) {
264
265
  if (property.name === undefined) {
265
266
  return null;
266
267
  }
267
- const id = apply_import_manager.projectFile(property.getSourceFile(), info).id.replace(/\.d\.ts$/, '.ts');
268
+ const id = project_paths.projectFile(property.getSourceFile(), info).id.replace(/\.d\.ts$/, '.ts');
268
269
  // Note: If a class is nested, there could be an ID clash.
269
270
  // This is highly unlikely though, and this is not a problem because
270
271
  // in such cases, there is even less chance there are any references to
@@ -388,7 +389,7 @@ class KnownQueries {
388
389
  });
389
390
  this.knownQueryIDs.set(id, { key: id, node: queryField });
390
391
  const descriptor = { key: id, node: queryField };
391
- const file = apply_import_manager.projectFile(queryField.getSourceFile(), this.info);
392
+ const file = project_paths.projectFile(queryField.getSourceFile(), this.info);
392
393
  if (this.config.shouldMigrateQuery !== undefined &&
393
394
  !this.config.shouldMigrateQuery(descriptor, file)) {
394
395
  this.markFieldIncompatible(descriptor, {
@@ -587,7 +588,7 @@ function removeQueryListToArrayCall(ref, info, globalMetadata, knownQueries, rep
587
588
  return;
588
589
  }
589
590
  const toArrayExpr = toArrayCallExpr.expression;
590
- replacements.push(new apply_import_manager.Replacement(apply_import_manager.projectFile(toArrayExpr.getSourceFile(), info), new apply_import_manager.TextUpdate({
591
+ replacements.push(new project_paths.Replacement(project_paths.projectFile(toArrayExpr.getSourceFile(), info), new project_paths.TextUpdate({
591
592
  // Delete from expression end to call end. E.g. `.toArray(<..>)`.
592
593
  position: toArrayExpr.expression.getEnd(),
593
594
  end: toArrayCallExpr.getEnd(),
@@ -602,7 +603,7 @@ function removeQueryListToArrayCall(ref, info, globalMetadata, knownQueries, rep
602
603
  }
603
604
  const file = index.isHostBindingReference(ref) ? ref.from.file : ref.from.templateFile;
604
605
  const offset = index.isHostBindingReference(ref) ? ref.from.hostPropertyNode.getStart() + 1 : 0;
605
- replacements.push(new apply_import_manager.Replacement(file, new apply_import_manager.TextUpdate({
606
+ replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
606
607
  // Delete from expression end to call end. E.g. `.toArray(<..>)`.
607
608
  position: offset + callExpr.receiver.receiver.sourceSpan.end,
608
609
  end: offset + callExpr.sourceSpan.end,
@@ -626,7 +627,7 @@ function replaceQueryListGetCall(ref, info, globalMetadata, knownQueries, replac
626
627
  return;
627
628
  }
628
629
  const getExpr = getCallExpr.expression;
629
- replacements.push(new apply_import_manager.Replacement(apply_import_manager.projectFile(getExpr.getSourceFile(), info), new apply_import_manager.TextUpdate({
630
+ replacements.push(new project_paths.Replacement(project_paths.projectFile(getExpr.getSourceFile(), info), new project_paths.TextUpdate({
630
631
  position: getExpr.name.getStart(),
631
632
  end: getExpr.name.getEnd(),
632
633
  toInsert: 'at',
@@ -640,7 +641,7 @@ function replaceQueryListGetCall(ref, info, globalMetadata, knownQueries, replac
640
641
  }
641
642
  const file = index.isHostBindingReference(ref) ? ref.from.file : ref.from.templateFile;
642
643
  const offset = index.isHostBindingReference(ref) ? ref.from.hostPropertyNode.getStart() + 1 : 0;
643
- replacements.push(new apply_import_manager.Replacement(file, new apply_import_manager.TextUpdate({
644
+ replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
644
645
  position: offset + callExpr.receiver.nameSpan.start,
645
646
  end: offset + callExpr.receiver.nameSpan.end,
646
647
  toInsert: 'at',
@@ -695,7 +696,7 @@ function replaceQueryListFirstAndLastReferences(ref, info, globalMetadata, known
695
696
  if (expr === null) {
696
697
  return;
697
698
  }
698
- replacements.push(new apply_import_manager.Replacement(apply_import_manager.projectFile(expr.getSourceFile(), info), new apply_import_manager.TextUpdate({
699
+ replacements.push(new project_paths.Replacement(project_paths.projectFile(expr.getSourceFile(), info), new project_paths.TextUpdate({
699
700
  position: expr.name.getStart(),
700
701
  end: expr.name.getEnd(),
701
702
  toInsert: mapping.get(expr.name.text),
@@ -709,14 +710,14 @@ function replaceQueryListFirstAndLastReferences(ref, info, globalMetadata, known
709
710
  }
710
711
  const file = index.isHostBindingReference(ref) ? ref.from.file : ref.from.templateFile;
711
712
  const offset = index.isHostBindingReference(ref) ? ref.from.hostPropertyNode.getStart() + 1 : 0;
712
- replacements.push(new apply_import_manager.Replacement(file, new apply_import_manager.TextUpdate({
713
+ replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
713
714
  position: offset + expr.nameSpan.start,
714
715
  end: offset + expr.nameSpan.end,
715
716
  toInsert: mapping.get(expr.name),
716
717
  })));
717
718
  }
718
719
 
719
- class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration {
720
+ class SignalQueriesMigration extends project_paths.TsurgeComplexMigration {
720
721
  config;
721
722
  constructor(config = {}) {
722
723
  super();
@@ -754,7 +755,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
754
755
  key: extractedQuery.id,
755
756
  node: queryNode,
756
757
  };
757
- const containingFile = apply_import_manager.projectFile(queryNode.getSourceFile(), info);
758
+ const containingFile = project_paths.projectFile(queryNode.getSourceFile(), info);
758
759
  // If we have a config filter function, use it here for later
759
760
  // perf-boosted reference lookups. Useful in non-batch mode.
760
761
  if (this.config.shouldMigrateQuery === undefined ||
@@ -858,7 +859,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
858
859
  if (this.config.assumeNonBatch) {
859
860
  res.reusableAnalysisReferences = referenceResult.references;
860
861
  }
861
- return apply_import_manager.confirmAsSerializable(res);
862
+ return project_paths.confirmAsSerializable(res);
862
863
  }
863
864
  async combine(unitA, unitB) {
864
865
  const combined = {
@@ -898,7 +899,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
898
899
  }
899
900
  }
900
901
  }
901
- return apply_import_manager.confirmAsSerializable(combined);
902
+ return project_paths.confirmAsSerializable(combined);
902
903
  }
903
904
  async globalMeta(combinedData) {
904
905
  const globalUnitData = {
@@ -911,7 +912,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
911
912
  markFieldIncompatibleInMetadata(globalUnitData.problematicQueries, id, migrate_ts_type_references.FieldIncompatibilityReason.SignalQueries__QueryListProblematicFieldAccessed);
912
913
  }
913
914
  }
914
- return apply_import_manager.confirmAsSerializable(globalUnitData);
915
+ return project_paths.confirmAsSerializable(globalUnitData);
915
916
  }
916
917
  async migrate(globalMetadata, info) {
917
918
  // Pre-Analyze the program and get access to the template type checker.
@@ -1116,7 +1117,7 @@ function migrate(options) {
1116
1117
  if (!buildPaths.length && !testPaths.length) {
1117
1118
  throw new schematics.SchematicsException('Could not find any tsconfig file. Cannot run signal queries migration.');
1118
1119
  }
1119
- const fs = new apply_import_manager.DevkitMigrationFilesystem(tree);
1120
+ const fs = new project_paths.DevkitMigrationFilesystem(tree);
1120
1121
  checker.setFileSystem(fs);
1121
1122
  const migration = new SignalQueriesMigration({
1122
1123
  bestEffortMode: options.bestEffortMode,
@@ -1148,7 +1149,7 @@ function migrate(options) {
1148
1149
  context.logger.info(``);
1149
1150
  context.logger.info(`Processing analysis data between targets..`);
1150
1151
  context.logger.info(``);
1151
- const combined = await apply_import_manager.synchronouslyCombineUnitData(migration, unitResults);
1152
+ const combined = await project_paths.synchronouslyCombineUnitData(migration, unitResults);
1152
1153
  if (combined === null) {
1153
1154
  context.logger.error('Migration failed unexpectedly with no analysis data');
1154
1155
  return;
@@ -1158,7 +1159,7 @@ function migrate(options) {
1158
1159
  for (const { info, tsconfigPath } of programInfos) {
1159
1160
  context.logger.info(`Migrating: ${tsconfigPath}..`);
1160
1161
  const { replacements } = await migration.migrate(globalMeta, info);
1161
- const changesPerFile = apply_import_manager.groupReplacementsByFile(replacements);
1162
+ const changesPerFile = project_paths.groupReplacementsByFile(replacements);
1162
1163
  for (const [file, changes] of changesPerFile) {
1163
1164
  if (!replacementsPerFile.has(file)) {
1164
1165
  replacementsPerFile.set(file, changes);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v19.2.0-next.3
3
+ * @license Angular v19.2.0-rc.0
4
4
  * (c) 2010-2024 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -14,19 +14,20 @@ var signalInputMigration = require('./signal-input-migration.js');
14
14
  var outputMigration = require('./output-migration.js');
15
15
  require('./project_tsconfig_paths-e9ccccbf.js');
16
16
  require('@angular-devkit/core');
17
- require('./apply_import_manager-f4d044b2.js');
17
+ require('./project_paths-b073c4d6.js');
18
18
  require('node:path/posix');
19
19
  require('os');
20
20
  require('typescript');
21
- require('./checker-32db85a6.js');
21
+ require('./checker-2eecc677.js');
22
22
  require('fs');
23
23
  require('module');
24
24
  require('path');
25
25
  require('url');
26
- require('./program-507de2f1.js');
27
- require('./migrate_ts_type_references-26986908.js');
26
+ require('./program-24da9092.js');
27
+ require('./apply_import_manager-a930fcf1.js');
28
+ require('./migrate_ts_type_references-71b3a951.js');
28
29
  require('assert');
29
- require('./index-d5020c9c.js');
30
+ require('./index-24a2ad1e.js');
30
31
  require('./leading_space-d190b83b.js');
31
32
 
32
33
  function migrate(options) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v19.2.0-next.3
3
+ * @license Angular v19.2.0-rc.0
4
4
  * (c) 2010-2024 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -9,17 +9,18 @@
9
9
  Object.defineProperty(exports, '__esModule', { value: true });
10
10
 
11
11
  var schematics = require('@angular-devkit/schematics');
12
- require('./index-7ee8967e.js');
12
+ require('./index-3891dd55.js');
13
13
  var fs = require('fs');
14
14
  var p = require('path');
15
15
  var ts = require('typescript');
16
- var compiler_host = require('./compiler_host-540e221c.js');
16
+ var compiler_host = require('./compiler_host-c280a924.js');
17
17
  var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
18
- var nodes = require('./nodes-a9f0b985.js');
18
+ var ng_decorators = require('./ng_decorators-e699c081.js');
19
+ var nodes = require('./nodes-a535b2be.js');
19
20
  var imports = require('./imports-abe29092.js');
20
- var checker = require('./checker-32db85a6.js');
21
+ var checker = require('./checker-2eecc677.js');
21
22
  require('os');
22
- var program = require('./program-507de2f1.js');
23
+ var program = require('./program-24da9092.js');
23
24
  require('@angular-devkit/core');
24
25
  require('module');
25
26
  require('url');
@@ -671,7 +672,7 @@ function findNgModuleClassesToMigrate(sourceFile, typeChecker) {
671
672
  if (imports.getImportSpecifier(sourceFile, '@angular/core', 'NgModule')) {
672
673
  sourceFile.forEachChild(function walk(node) {
673
674
  if (ts__default["default"].isClassDeclaration(node)) {
674
- const decorator = nodes.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(node) || []).find((current) => current.name === 'NgModule');
675
+ const decorator = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(node) || []).find((current) => current.name === 'NgModule');
675
676
  const metadata = decorator ? extractMetadataLiteral(decorator.node) : null;
676
677
  if (metadata) {
677
678
  const declarations = findLiteralProperty(metadata, 'declarations');
@@ -854,7 +855,7 @@ function analyzeTestingModules(testObjects, typeChecker) {
854
855
  if (seenDeclarations.has(decl)) {
855
856
  continue;
856
857
  }
857
- const [decorator] = nodes.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(decl) || []);
858
+ const [decorator] = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(decl) || []);
858
859
  if (decorator) {
859
860
  seenDeclarations.add(decl);
860
861
  decorators.push(decorator);
@@ -1391,7 +1392,7 @@ function addRemovalTodos(nodes, tracker) {
1391
1392
  }
1392
1393
  /** Finds the `NgModule` decorator in a class, if it exists. */
1393
1394
  function findNgModuleDecorator(node, typeChecker) {
1394
- const decorators = nodes.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(node) || []);
1395
+ const decorators = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(node) || []);
1395
1396
  return decorators.find((decorator) => decorator.name === 'NgModule') || null;
1396
1397
  }
1397
1398
  /**
@@ -1467,7 +1468,7 @@ function analyzeBootstrapCall(call, typeChecker, templateTypeChecker) {
1467
1468
  if (!declaration) {
1468
1469
  return null;
1469
1470
  }
1470
- const decorator = nodes.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(declaration) || []).find((decorator) => decorator.name === 'NgModule');
1471
+ const decorator = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(declaration) || []).find((decorator) => decorator.name === 'NgModule');
1471
1472
  if (!decorator ||
1472
1473
  decorator.node.expression.arguments.length === 0 ||
1473
1474
  !ts__default["default"].isObjectLiteralExpression(decorator.node.expression.arguments[0])) {
@@ -1656,7 +1657,7 @@ function migrateImportsForBootstrapCall(sourceFile, imports, nodeLookup, imports
1656
1657
  : element;
1657
1658
  const classDeclaration = findClassDeclaration(target, typeChecker);
1658
1659
  const decorators = classDeclaration
1659
- ? nodes.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(classDeclaration) || [])
1660
+ ? ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(classDeclaration) || [])
1660
1661
  : undefined;
1661
1662
  if (!decorators ||
1662
1663
  decorators.length === 0 ||
@@ -51,6 +51,12 @@
51
51
  "description": "Removes unused imports from standalone components.",
52
52
  "factory": "./bundles/cleanup-unused-imports#migrate",
53
53
  "schema": "./ng-generate/cleanup-unused-imports/schema.json"
54
+ },
55
+ "self-closing-tags-migration": {
56
+ "description": "Updates the components templates to use self-closing tags where possible",
57
+ "factory": "./bundles/self-closing-tags-migration#migrate",
58
+ "schema": "./ng-generate/self-closing-tags-migration/schema.json",
59
+ "aliases": ["self-closing-tag"]
54
60
  }
55
61
  }
56
62
  }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "AngularSelfClosingTagMigration",
4
+ "title": "Angular Self Closing Tag Migration Schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "path": {
8
+ "type": "string",
9
+ "description": "Path to the directory where all templates should be migrated.",
10
+ "x-prompt": "Which directory do you want to migrate?",
11
+ "default": "./"
12
+ }
13
+ }
14
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.2.0-next.3
2
+ * @license Angular v19.2.0-rc.0
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */