@angular/core 19.2.9 → 19.2.11

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 (48) hide show
  1. package/{event_dispatcher.d-DlbccpYq.d.ts → event_dispatcher.d-K56StcHr.d.ts} +50 -1
  2. package/fesm2022/core.mjs +32 -24
  3. package/fesm2022/core.mjs.map +1 -1
  4. package/fesm2022/primitives/di.mjs +1 -1
  5. package/fesm2022/primitives/event-dispatch.mjs +3 -2
  6. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  7. package/fesm2022/primitives/signals.mjs +1 -1
  8. package/fesm2022/primitives/signals.mjs.map +1 -1
  9. package/fesm2022/rxjs-interop.mjs +1 -1
  10. package/fesm2022/testing.mjs +37 -37
  11. package/fesm2022/testing.mjs.map +1 -1
  12. package/fesm2022/untracked-BKcld_ew.mjs +1 -1
  13. package/fesm2022/untracked-BKcld_ew.mjs.map +1 -1
  14. package/index.d.ts +3 -52
  15. package/navigation_types.d-fAxd92YV.d.ts +1 -1
  16. package/package.json +1 -1
  17. package/primitives/di/index.d.ts +1 -1
  18. package/primitives/event-dispatch/index.d.ts +3 -3
  19. package/primitives/signals/index.d.ts +1 -1
  20. package/rxjs-interop/index.d.ts +1 -1
  21. package/schematics/bundles/{apply_import_manager-COqnCltX.js → apply_import_manager-DdHXpkne.js} +3 -3
  22. package/schematics/bundles/{checker-BNmiXJIJ.js → checker-CGGdizaF.js} +12 -14
  23. package/schematics/bundles/cleanup-unused-imports.js +5 -5
  24. package/schematics/bundles/{compiler_host-BafHjBMK.js → compiler_host-BmQrIxJT.js} +2 -2
  25. package/schematics/bundles/control-flow-migration.js +3 -3
  26. package/schematics/bundles/explicit-standalone-flag.js +3 -3
  27. package/schematics/bundles/imports-CIX-JgAN.js +1 -1
  28. package/schematics/bundles/{index-CAJ-Rm56.js → index-BF06LaCS.js} +12 -12
  29. package/schematics/bundles/{index-rvZ5aROS.js → index-DGcgCgNa.js} +4 -4
  30. package/schematics/bundles/inject-migration.js +3 -3
  31. package/schematics/bundles/leading_space-D9nQ8UQC.js +1 -1
  32. package/schematics/bundles/{migrate_ts_type_references-BIV-FPWl.js → migrate_ts_type_references-CE_V0IM9.js} +5 -5
  33. package/schematics/bundles/ng_decorators-DznZ5jMl.js +1 -1
  34. package/schematics/bundles/nodes-B16H9JUd.js +1 -1
  35. package/schematics/bundles/output-migration.js +6 -6
  36. package/schematics/bundles/pending-tasks.js +3 -3
  37. package/schematics/bundles/{project_paths-A9I0g_ID.js → project_paths-CmS2U6KE.js} +3 -3
  38. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.js +1 -1
  39. package/schematics/bundles/property_name-BBwFuqMe.js +1 -1
  40. package/schematics/bundles/provide-initializer.js +3 -3
  41. package/schematics/bundles/route-lazy-loading.js +3 -3
  42. package/schematics/bundles/self-closing-tags-migration.js +4 -4
  43. package/schematics/bundles/signal-input-migration.js +7 -7
  44. package/schematics/bundles/signal-queries-migration.js +7 -7
  45. package/schematics/bundles/signals.js +7 -7
  46. package/schematics/bundles/standalone-migration.js +4 -4
  47. package/testing/index.d.ts +3 -3
  48. package/weak_ref.d-DWHPG08n.d.ts +1 -1
@@ -1,9 +1,58 @@
1
1
  /**
2
- * @license Angular v19.2.9
2
+ * @license Angular v19.2.11
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
+ declare global {
8
+ /**
9
+ * Values of ngDevMode
10
+ * Depending on the current state of the application, ngDevMode may have one of several values.
11
+ *
12
+ * For convenience, the “truthy” value which enables dev mode is also an object which contains
13
+ * Angular’s performance counters. This is not necessary, but cuts down on boilerplate for the
14
+ * perf counters.
15
+ *
16
+ * ngDevMode may also be set to false. This can happen in one of a few ways:
17
+ * - The user explicitly sets `window.ngDevMode = false` somewhere in their app.
18
+ * - The user calls `enableProdMode()`.
19
+ * - The URL contains a `ngDevMode=false` text.
20
+ * Finally, ngDevMode may not have been defined at all.
21
+ */
22
+ const ngDevMode: null | NgDevModePerfCounters;
23
+ interface NgDevModePerfCounters {
24
+ namedConstructors: boolean;
25
+ firstCreatePass: number;
26
+ tNode: number;
27
+ tView: number;
28
+ rendererCreateTextNode: number;
29
+ rendererSetText: number;
30
+ rendererCreateElement: number;
31
+ rendererAddEventListener: number;
32
+ rendererSetAttribute: number;
33
+ rendererRemoveAttribute: number;
34
+ rendererSetProperty: number;
35
+ rendererSetClassName: number;
36
+ rendererAddClass: number;
37
+ rendererRemoveClass: number;
38
+ rendererSetStyle: number;
39
+ rendererRemoveStyle: number;
40
+ rendererDestroy: number;
41
+ rendererDestroyNode: number;
42
+ rendererMoveNode: number;
43
+ rendererRemoveNode: number;
44
+ rendererAppendChild: number;
45
+ rendererInsertBefore: number;
46
+ rendererCreateComment: number;
47
+ hydratedNodes: number;
48
+ hydratedComponents: number;
49
+ dehydratedViewsRemoved: number;
50
+ dehydratedViewsCleanupRuns: number;
51
+ componentsSkippedHydration: number;
52
+ deferBlocksWithIncrementalHydration: number;
53
+ }
54
+ }
55
+
7
56
  /**
8
57
  * Records information about the action that should handle a given `Event`.
9
58
  */
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.2.9
2
+ * @license Angular v19.2.11
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -674,8 +674,12 @@ function getInjectorDef(type) {
674
674
  const NG_PROV_DEF = getClosureSafeProperty({ ɵprov: getClosureSafeProperty });
675
675
  const NG_INJ_DEF = getClosureSafeProperty({ ɵinj: getClosureSafeProperty });
676
676
  // We need to keep these around so we can read off old defs if new defs are unavailable
677
- const NG_INJECTABLE_DEF = getClosureSafeProperty({ ngInjectableDef: getClosureSafeProperty });
678
- const NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafeProperty });
677
+ const NG_INJECTABLE_DEF = getClosureSafeProperty({
678
+ ngInjectableDef: getClosureSafeProperty,
679
+ });
680
+ const NG_INJECTOR_DEF = getClosureSafeProperty({
681
+ ngInjectorDef: getClosureSafeProperty,
682
+ });
679
683
 
680
684
  /**
681
685
  * Creates a token that can be used in a DI Provider.
@@ -899,7 +903,9 @@ const NG_FACTORY_DEF = getClosureSafeProperty({ ɵfac: getClosureSafeProperty })
899
903
  * bloom filter bit for DI.
900
904
  */
901
905
  // TODO(misko): This is wrong. The NG_ELEMENT_ID should never be minified.
902
- const NG_ELEMENT_ID = getClosureSafeProperty({ __NG_ELEMENT_ID__: getClosureSafeProperty });
906
+ const NG_ELEMENT_ID = getClosureSafeProperty({
907
+ __NG_ELEMENT_ID__: getClosureSafeProperty,
908
+ });
903
909
  /**
904
910
  * The `NG_ENV_ID` field on a DI token indicates special processing in the `EnvironmentInjector`:
905
911
  * getting such tokens from the `EnvironmentInjector` will bypass the standard DI resolution
@@ -2140,7 +2146,7 @@ class R3Injector extends EnvironmentInjector {
2140
2146
  }
2141
2147
  // If a record was found, get the instance for it and return it.
2142
2148
  if (record != null /* NOT null || undefined */) {
2143
- return this.hydrate(token, record);
2149
+ return this.hydrate(token, record, flags);
2144
2150
  }
2145
2151
  }
2146
2152
  // Select the next injector based on the Self flag - if self is set, the next injector is
@@ -2263,7 +2269,7 @@ class R3Injector extends EnvironmentInjector {
2263
2269
  }
2264
2270
  this.records.set(token, record);
2265
2271
  }
2266
- hydrate(token, record) {
2272
+ hydrate(token, record, flags) {
2267
2273
  const prevConsumer = setActiveConsumer(null);
2268
2274
  try {
2269
2275
  if (record.value === CIRCULAR) {
@@ -2273,12 +2279,12 @@ class R3Injector extends EnvironmentInjector {
2273
2279
  record.value = CIRCULAR;
2274
2280
  if (ngDevMode) {
2275
2281
  runInInjectorProfilerContext(this, token, () => {
2276
- record.value = record.factory();
2282
+ record.value = record.factory(undefined, flags);
2277
2283
  emitInstanceCreatedByInjectorEvent(record.value);
2278
2284
  });
2279
2285
  }
2280
2286
  else {
2281
- record.value = record.factory();
2287
+ record.value = record.factory(undefined, flags);
2282
2288
  }
2283
2289
  }
2284
2290
  if (typeof record.value === 'object' && record.value && hasOnDestroy(record.value)) {
@@ -2379,7 +2385,7 @@ function providerToFactory(provider, ngModuleType, providers) {
2379
2385
  factory = () => provider.useFactory(...injectArgs(provider.deps || []));
2380
2386
  }
2381
2387
  else if (isExistingProvider(provider)) {
2382
- factory = () => ɵɵinject(resolveForwardRef(provider.useExisting));
2388
+ factory = (_, flags) => ɵɵinject(resolveForwardRef(provider.useExisting), flags !== undefined && flags & InjectFlags.Optional ? InjectFlags.Optional : undefined);
2383
2389
  }
2384
2390
  else {
2385
2391
  const classRef = resolveForwardRef(provider &&
@@ -5245,7 +5251,7 @@ function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flag
5245
5251
  const isHostSpecialCase = flags & InjectFlags.Host && hostTElementNode === tNode;
5246
5252
  const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);
5247
5253
  if (injectableIdx !== null) {
5248
- return getNodeInjectable(lView, currentTView, injectableIdx, tNode);
5254
+ return getNodeInjectable(lView, currentTView, injectableIdx, tNode, flags);
5249
5255
  }
5250
5256
  else {
5251
5257
  return NOT_FOUND;
@@ -5295,7 +5301,7 @@ function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders,
5295
5301
  * cached `injectable`. Otherwise if it detects that the value is still a factory it
5296
5302
  * instantiates the `injectable` and caches the value.
5297
5303
  */
5298
- function getNodeInjectable(lView, tView, index, tNode) {
5304
+ function getNodeInjectable(lView, tView, index, tNode, flags) {
5299
5305
  let value = lView[index];
5300
5306
  const tData = tView.data;
5301
5307
  if (value instanceof NodeInjectorFactory) {
@@ -5322,7 +5328,7 @@ function getNodeInjectable(lView, tView, index, tNode) {
5322
5328
  ngDevMode &&
5323
5329
  assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed.");
5324
5330
  try {
5325
- value = lView[index] = factory.factory(undefined, tData, lView, tNode);
5331
+ value = lView[index] = factory.factory(undefined, flags, tData, lView, tNode);
5326
5332
  ngDevMode && emitInstanceCreatedByInjectorEvent(value);
5327
5333
  // This code path is hit for both directives and providers.
5328
5334
  // For perf reasons, we want to avoid searching for hooks on providers.
@@ -17944,7 +17950,7 @@ class ComponentFactory extends ComponentFactory$1 {
17944
17950
  const cmpDef = this.componentDef;
17945
17951
  ngDevMode && verifyNotAnOrphanComponent(cmpDef);
17946
17952
  const tAttributes = rootSelectorOrNode
17947
- ? ['ng-version', '19.2.9']
17953
+ ? ['ng-version', '19.2.11']
17948
17954
  : // Extract attributes and classes from the first selector only to match VE behavior.
17949
17955
  extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
17950
17956
  // Create the root view. Uses empty TView and ContentTemplate.
@@ -22561,6 +22567,7 @@ function getSignalGraph(injector) {
22561
22567
  return getNodesAndEdgesFromSignalMap(signalDependenciesMap);
22562
22568
  }
22563
22569
 
22570
+ /// <reference path="../../../../goog.d.ts" />
22564
22571
  /**
22565
22572
  * This file introduces series of globally accessible debug tools
22566
22573
  * to allow for the Angular debugging story to function.
@@ -23912,8 +23919,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
23912
23919
  }
23913
23920
  }
23914
23921
  // Indicate that an application is not stable and has a pending task.
23915
- const pendingTasks = injector.get(PendingTasksInternal);
23916
- const taskId = pendingTasks.add();
23922
+ const removeTask = injector.get(PendingTasks).add();
23917
23923
  // The `dependenciesFn` might be `null` when all dependencies within
23918
23924
  // a given defer block were eagerly referenced elsewhere in a file,
23919
23925
  // thus no dynamic `import()`s were produced.
@@ -23921,7 +23927,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
23921
23927
  tDetails.loadingPromise = Promise.resolve().then(() => {
23922
23928
  tDetails.loadingPromise = null;
23923
23929
  tDetails.loadingState = DeferDependenciesLoadingState.COMPLETE;
23924
- pendingTasks.remove(taskId);
23930
+ removeTask();
23925
23931
  });
23926
23932
  return tDetails.loadingPromise;
23927
23933
  }
@@ -23949,10 +23955,6 @@ function triggerResourceLoading(tDetails, lView, tNode) {
23949
23955
  break;
23950
23956
  }
23951
23957
  }
23952
- // Loading is completed, we no longer need the loading Promise
23953
- // and a pending task should also be removed.
23954
- tDetails.loadingPromise = null;
23955
- pendingTasks.remove(taskId);
23956
23958
  if (failed) {
23957
23959
  tDetails.loadingState = DeferDependenciesLoadingState.FAILED;
23958
23960
  if (tDetails.errorTmplIndex === null) {
@@ -23981,7 +23983,12 @@ function triggerResourceLoading(tDetails, lView, tNode) {
23981
23983
  }
23982
23984
  }
23983
23985
  });
23984
- return tDetails.loadingPromise;
23986
+ return tDetails.loadingPromise.finally(() => {
23987
+ // Loading is completed, we no longer need the loading Promise
23988
+ // and a pending task should also be removed.
23989
+ tDetails.loadingPromise = null;
23990
+ removeTask();
23991
+ });
23985
23992
  }
23986
23993
  /**
23987
23994
  * Defines whether we should proceed with triggering a given defer block.
@@ -32422,7 +32429,7 @@ function indexOf(item, arr, begin, end) {
32422
32429
  /**
32423
32430
  * Use this with `multi` `providers`.
32424
32431
  */
32425
- function multiProvidersFactoryResolver(_, tData, lData, tNode) {
32432
+ function multiProvidersFactoryResolver(_, flags, tData, lData, tNode) {
32426
32433
  return multiResolve(this.multi, []);
32427
32434
  }
32428
32435
  /**
@@ -32430,7 +32437,7 @@ function multiProvidersFactoryResolver(_, tData, lData, tNode) {
32430
32437
  *
32431
32438
  * This factory knows how to concatenate itself with the existing `multi` `providers`.
32432
32439
  */
32433
- function multiViewProvidersFactoryResolver(_, tData, lView, tNode) {
32440
+ function multiViewProvidersFactoryResolver(_, _flags, _tData, lView, tNode) {
32434
32441
  const factories = this.multi;
32435
32442
  let result;
32436
32443
  if (this.providerFactory) {
@@ -34683,7 +34690,7 @@ class Version {
34683
34690
  /**
34684
34691
  * @publicApi
34685
34692
  */
34686
- const VERSION = new Version('19.2.9');
34693
+ const VERSION = new Version('19.2.11');
34687
34694
 
34688
34695
  /**
34689
34696
  * Combination of NgModuleFactory and ComponentFactories.
@@ -35332,6 +35339,7 @@ function provideExperimentalZonelessChangeDetection() {
35332
35339
  ]);
35333
35340
  }
35334
35341
 
35342
+ /// <reference path="../../../goog.d.ts" />
35335
35343
  /**
35336
35344
  * Work out the locale from the potential global properties.
35337
35345
  *