@angular/core 21.0.8 → 21.0.9

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 (66) hide show
  1. package/fesm2022/_attribute-chunk.mjs +1 -1
  2. package/fesm2022/_debug_node-chunk.mjs +5 -5
  3. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  4. package/fesm2022/_effect-chunk.mjs +1 -1
  5. package/fesm2022/_linked_signal-chunk.mjs +1 -1
  6. package/fesm2022/_not_found-chunk.mjs +1 -1
  7. package/fesm2022/_resource-chunk.mjs +1 -1
  8. package/fesm2022/_untracked-chunk.mjs +10 -5
  9. package/fesm2022/_untracked-chunk.mjs.map +1 -1
  10. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  11. package/fesm2022/core.mjs +5 -5
  12. package/fesm2022/core.mjs.map +1 -1
  13. package/fesm2022/primitives-di.mjs +1 -1
  14. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  15. package/fesm2022/primitives-signals.mjs +1 -1
  16. package/fesm2022/primitives-signals.mjs.map +1 -1
  17. package/fesm2022/rxjs-interop.mjs +1 -1
  18. package/fesm2022/testing.mjs +2 -2
  19. package/fesm2022/testing.mjs.map +1 -1
  20. package/package.json +2 -2
  21. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
  22. package/schematics/bundles/application-config-core.cjs +1 -1
  23. package/schematics/bundles/apply_import_manager-1Zs_gpB6.cjs +1 -1
  24. package/schematics/bundles/bootstrap-options-migration.cjs +1 -1
  25. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  26. package/schematics/bundles/common-to-standalone-migration.cjs +9 -5
  27. package/schematics/bundles/compiler_host-DBwYMlTo.cjs +1 -1
  28. package/schematics/bundles/control-flow-migration.cjs +1 -1
  29. package/schematics/bundles/imports-DP72APSx.cjs +1 -1
  30. package/schematics/bundles/index-CP6pC5TJ.cjs +1 -1
  31. package/schematics/bundles/inject-migration.cjs +1 -1
  32. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  33. package/schematics/bundles/migrate_ts_type_references--PJz69_w.cjs +1 -1
  34. package/schematics/bundles/ng_component_template-Dsuq1Lw7.cjs +1 -1
  35. package/schematics/bundles/ng_decorators-DSFlWYQY.cjs +1 -1
  36. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  37. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  38. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  39. package/schematics/bundles/output-migration.cjs +1 -1
  40. package/schematics/bundles/parse_html-8VLCL37B.cjs +1 -1
  41. package/schematics/bundles/project_paths-DvD50ouC.cjs +1 -1
  42. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
  43. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  44. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  45. package/schematics/bundles/router-current-navigation.cjs +1 -1
  46. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  47. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  48. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  49. package/schematics/bundles/signal-input-migration.cjs +1 -1
  50. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  51. package/schematics/bundles/signals.cjs +1 -1
  52. package/schematics/bundles/standalone-migration.cjs +1 -1
  53. package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
  54. package/types/_api-chunk.d.ts +1 -1
  55. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  56. package/types/_discovery-chunk.d.ts +1 -1
  57. package/types/_effect-chunk.d.ts +1 -1
  58. package/types/_event_dispatcher-chunk.d.ts +1 -1
  59. package/types/_formatter-chunk.d.ts +1 -1
  60. package/types/_weak_ref-chunk.d.ts +1 -1
  61. package/types/core.d.ts +16 -5
  62. package/types/primitives-di.d.ts +1 -1
  63. package/types/primitives-event-dispatch.d.ts +1 -1
  64. package/types/primitives-signals.d.ts +1 -1
  65. package/types/rxjs-interop.d.ts +1 -1
  66. package/types/testing.d.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "21.0.8",
3
+ "version": "21.0.9",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -46,7 +46,7 @@
46
46
  "tslib": "^2.3.0"
47
47
  },
48
48
  "peerDependencies": {
49
- "@angular/compiler": "21.0.8",
49
+ "@angular/compiler": "21.0.9",
50
50
  "rxjs": "^6.5.3 || ^7.4.0",
51
51
  "zone.js": "~0.15.0 || ~0.16.0"
52
52
  },
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -107,10 +107,14 @@ function createCommonModuleImportsArrayRemoval(classNode, file, typeChecker, nee
107
107
  return true;
108
108
  return !isCommonModuleFromAngularCommon(typeChecker, el);
109
109
  });
110
- const newElements = [
111
- ...filteredElements,
112
- ...neededImports.sort().map((imp) => ts.factory.createIdentifier(imp)),
113
- ];
110
+ // Get existing import names to avoid duplicates
111
+ const existingImportNames = new Set(filteredElements.filter((el) => ts.isIdentifier(el)).map((el) => el.getText()));
112
+ // Only add imports that don't already exist
113
+ const importsToAdd = neededImports
114
+ .filter((imp) => !existingImportNames.has(imp))
115
+ .sort()
116
+ .map((imp) => ts.factory.createIdentifier(imp));
117
+ const newElements = [...filteredElements, ...importsToAdd];
114
118
  if (newElements.length === originalElements.length && neededImports.length === 0) {
115
119
  return null;
116
120
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
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 v21.0.8
3
+ * @license Angular v21.0.9
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
package/types/core.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -658,7 +658,8 @@ type SimpleChanges<T = unknown> = T extends object ? {
658
658
 
659
659
  /**
660
660
  * @description
661
- * A lifecycle hook that is called when any data-bound property of a directive changes.
661
+ * A lifecycle hook that is called when the value of one or more component or directive inputs
662
+ * change. This includes both signal-based and decorator-based inputs.
662
663
  * Define an `ngOnChanges()` method to handle the changes.
663
664
  *
664
665
  * @see {@link DoCheck}
@@ -667,9 +668,19 @@ type SimpleChanges<T = unknown> = T extends object ? {
667
668
  *
668
669
  * @usageNotes
669
670
  * The following snippet shows how a component can implement this interface to
670
- * define an on-changes handler for an input property.
671
+ * define an on-changes handler for an input property. While you should prefer
672
+ * `computed` and `effect` when working with signal-based inputs, the `ngOnChanges`
673
+ * method does include value changes for signal-based inputs.
671
674
  *
672
- * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'}
675
+ * ```ts
676
+ * @Component({ ... })
677
+ * export class UserProfile implements OnChanges {
678
+ * userId = input<number>(0);
679
+ * ngOnChanges(changes: SimpleChanges<UserProfile>) {
680
+ * // changes.userId contains the old and new value.
681
+ * }
682
+ * }
683
+ * ```
673
684
  *
674
685
  * @publicApi
675
686
  */
@@ -6675,7 +6686,7 @@ declare function ɵɵcontrol<T>(value: T, name: string, sanitizer?: SanitizerFn
6675
6686
  * Calls {@link updateControl} with the current `LView` and selected `TNode`.
6676
6687
  *
6677
6688
  * NOTE: This instruction exists solely to accommodate tree-shakeable, dynamic control bindings.
6678
- * It's intended to be referenced exclusively by the Signal Forms `Field` directive and should not
6689
+ * It's intended to be referenced exclusively by the Signal Forms `FormField` directive and should not
6679
6690
  * be referenced by any other means.
6680
6691
  */
6681
6692
  declare function ɵcontrolUpdate(): void;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.8
2
+ * @license Angular v21.0.9
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */