@angular/core 20.0.0-next.4 → 20.0.0-next.6

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 (76) hide show
  1. package/api.d-DQLNOR5l.d.ts +297 -0
  2. package/discovery.d-CFs2MaLO.d.ts +7383 -0
  3. package/{event_dispatcher.d-pVP0-wST.d.ts → event_dispatcher.d-DlbccpYq.d.ts} +3 -2
  4. package/fesm2022/attribute-BWp59EjE.mjs +24 -0
  5. package/fesm2022/attribute-BWp59EjE.mjs.map +1 -0
  6. package/fesm2022/core.mjs +586 -36873
  7. package/fesm2022/core.mjs.map +1 -1
  8. package/fesm2022/debug_node-z_3NG8qT.mjs +32079 -0
  9. package/fesm2022/debug_node-z_3NG8qT.mjs.map +1 -0
  10. package/fesm2022/primitives/di.mjs +18 -4
  11. package/fesm2022/primitives/di.mjs.map +1 -1
  12. package/fesm2022/primitives/event-dispatch.mjs +2 -16
  13. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  14. package/fesm2022/primitives/signals.mjs +5 -3
  15. package/fesm2022/primitives/signals.mjs.map +1 -1
  16. package/fesm2022/resource-CPPwEcg7.mjs +619 -0
  17. package/fesm2022/resource-CPPwEcg7.mjs.map +1 -0
  18. package/fesm2022/root_effect_scheduler-VSXfCzDX.mjs +3847 -0
  19. package/fesm2022/root_effect_scheduler-VSXfCzDX.mjs.map +1 -0
  20. package/fesm2022/rxjs-interop.mjs +16 -9
  21. package/fesm2022/rxjs-interop.mjs.map +1 -1
  22. package/fesm2022/{untracked-DkcXpNb_.mjs → signal-B6pMq7KS.mjs} +16 -114
  23. package/fesm2022/signal-B6pMq7KS.mjs.map +1 -0
  24. package/fesm2022/testing.mjs +265 -201
  25. package/fesm2022/testing.mjs.map +1 -1
  26. package/fesm2022/untracked-Bz5WMeU1.mjs +117 -0
  27. package/fesm2022/untracked-Bz5WMeU1.mjs.map +1 -0
  28. package/fesm2022/weak_ref-BaIq-pgY.mjs +12 -0
  29. package/fesm2022/weak_ref-BaIq-pgY.mjs.map +1 -0
  30. package/{weak_ref.d-BZ7gyRag.d.ts → graph.d-BcIOep_B.d.ts} +3 -24
  31. package/index.d.ts +2624 -10909
  32. package/ng_i18n_closure_mode.d-C9d2CaSt.d.ts +832 -0
  33. package/package.json +3 -3
  34. package/primitives/di/index.d.ts +3 -2
  35. package/primitives/event-dispatch/index.d.ts +3 -3
  36. package/primitives/signals/index.d.ts +8 -4
  37. package/rxjs-interop/index.d.ts +10 -7
  38. package/schematics/bundles/{apply_import_manager-CeNv8GIG.js → apply_import_manager-DnMqg1pY.js} +6 -6
  39. package/schematics/bundles/{compiler_host-DwM3ugW3.js → change_tracker-UMPkv-eH.js} +3 -121
  40. package/schematics/bundles/checker-BFBQyesT.js +17719 -0
  41. package/schematics/bundles/cleanup-unused-imports.js +25 -19
  42. package/schematics/bundles/{checker-k591b6WQ.js → compiler-BQ7R7w2v.js} +1325 -18286
  43. package/schematics/bundles/compiler_host-CAfDJO3W.js +129 -0
  44. package/schematics/bundles/control-flow-migration.js +28 -40
  45. package/schematics/bundles/document-core.js +96 -0
  46. package/schematics/bundles/imports-CIX-JgAN.js +1 -1
  47. package/schematics/bundles/{index-B4OAlHh8.js → index-Cv4Q415G.js} +641 -547
  48. package/schematics/bundles/{index-BhELUmYx.js → index-D8tMJPKa.js} +35 -34
  49. package/schematics/bundles/inject-flags.js +14 -13
  50. package/schematics/bundles/inject-migration.js +29 -10
  51. package/schematics/bundles/leading_space-D9nQ8UQC.js +1 -1
  52. package/schematics/bundles/{migrate_ts_type_references-Be0TNYen.js → migrate_ts_type_references-Cq_ZBuT4.js} +21 -20
  53. package/schematics/bundles/ng_decorators-DznZ5jMl.js +1 -1
  54. package/schematics/bundles/nodes-B16H9JUd.js +1 -1
  55. package/schematics/bundles/output-migration.js +88 -25
  56. package/schematics/bundles/{run_in_devkit-CkvEksWP.js → project_paths-ql6qcf_c.js} +254 -243
  57. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.js +1 -1
  58. package/schematics/bundles/property_name-BBwFuqMe.js +1 -1
  59. package/schematics/bundles/route-lazy-loading.js +7 -5
  60. package/schematics/bundles/self-closing-tags-migration.js +25 -19
  61. package/schematics/bundles/signal-input-migration.js +26 -20
  62. package/schematics/bundles/signal-queries-migration.js +51 -33
  63. package/schematics/bundles/signals.js +8 -7
  64. package/schematics/bundles/standalone-migration.js +11 -9
  65. package/schematics/bundles/symbol-VPWguRxr.js +1 -1
  66. package/schematics/bundles/test-bed-get.js +13 -12
  67. package/schematics/collection.json +0 -6
  68. package/schematics/migrations.json +11 -0
  69. package/signal.d-E0e5nW1p.d.ts +31 -0
  70. package/testing/index.d.ts +16 -28
  71. package/weak_ref.d-eGOEP9S1.d.ts +9 -0
  72. package/fesm2022/injector-BlLwZ2sr.mjs +0 -24
  73. package/fesm2022/injector-BlLwZ2sr.mjs.map +0 -1
  74. package/fesm2022/untracked-DkcXpNb_.mjs.map +0 -1
  75. package/navigation_types.d-DgDrF5rp.d.ts +0 -121
  76. package/schematics/ng-generate/control-flow-migration/schema.json +0 -20
@@ -0,0 +1,832 @@
1
+ /**
2
+ * @license Angular v20.0.0-next.6
3
+ * (c) 2010-2025 Google LLC. https://angular.io/
4
+ * License: MIT
5
+ */
6
+
7
+ import { SIGNAL } from './graph.d-BcIOep_B.js';
8
+ import { EventContract } from './event_dispatcher.d-DlbccpYq.js';
9
+
10
+ /**
11
+ * A reactive value which notifies consumers of any changes.
12
+ *
13
+ * Signals are functions which returns their current value. To access the current value of a signal,
14
+ * call it.
15
+ *
16
+ * Ordinary values can be turned into `Signal`s with the `signal` function.
17
+ */
18
+ type Signal<T> = (() => T) & {
19
+ [SIGNAL]: unknown;
20
+ };
21
+ /**
22
+ * Checks if the given `value` is a reactive `Signal`.
23
+ */
24
+ declare function isSignal(value: unknown): value is Signal<unknown>;
25
+ /**
26
+ * A comparison function which can determine if two values are equal.
27
+ */
28
+ type ValueEqualityFn<T> = (a: T, b: T) => boolean;
29
+
30
+ /** Symbol used distinguish `WritableSignal` from other non-writable signals and functions. */
31
+ declare const ɵWRITABLE_SIGNAL: unique symbol;
32
+ /**
33
+ * A `Signal` with a value that can be mutated via a setter interface.
34
+ */
35
+ interface WritableSignal<T> extends Signal<T> {
36
+ [ɵWRITABLE_SIGNAL]: T;
37
+ /**
38
+ * Directly set the signal to a new value, and notify any dependents.
39
+ */
40
+ set(value: T): void;
41
+ /**
42
+ * Update the value of the signal based on its current value, and
43
+ * notify any dependents.
44
+ */
45
+ update(updateFn: (value: T) => T): void;
46
+ /**
47
+ * Returns a readonly version of this signal. Readonly signals can be accessed to read their value
48
+ * but can't be changed using set or update methods. The readonly signals do _not_ have
49
+ * any built-in mechanism that would prevent deep-mutation of their value.
50
+ */
51
+ asReadonly(): Signal<T>;
52
+ }
53
+ /**
54
+ * Utility function used during template type checking to extract the value from a `WritableSignal`.
55
+ * @codeGenApi
56
+ */
57
+ declare function ɵunwrapWritableSignal<T>(value: T | {
58
+ [ɵWRITABLE_SIGNAL]: T;
59
+ }): T;
60
+ /**
61
+ * Options passed to the `signal` creation function.
62
+ */
63
+ interface CreateSignalOptions<T> {
64
+ /**
65
+ * A comparison function which defines equality for signal values.
66
+ */
67
+ equal?: ValueEqualityFn<T>;
68
+ /**
69
+ * A debug name for the signal. Used in Angular DevTools to identify the signal.
70
+ */
71
+ debugName?: string;
72
+ }
73
+ /**
74
+ * Create a `Signal` that can be set or updated directly.
75
+ */
76
+ declare function signal<T>(initialValue: T, options?: CreateSignalOptions<T>): WritableSignal<T>;
77
+
78
+ /**
79
+ * Function that can be used to manually clean up a
80
+ * programmatic {@link OutputRef#subscribe} subscription.
81
+ *
82
+ * Note: Angular will automatically clean up subscriptions
83
+ * when the directive/component of the output is destroyed.
84
+ *
85
+ * @publicAPI
86
+ */
87
+ interface OutputRefSubscription {
88
+ unsubscribe(): void;
89
+ }
90
+ /**
91
+ * A reference to an Angular output.
92
+ *
93
+ * @publicAPI
94
+ */
95
+ interface OutputRef<T> {
96
+ /**
97
+ * Registers a callback that is invoked whenever the output
98
+ * emits a new value of type `T`.
99
+ *
100
+ * Angular will automatically clean up the subscription when
101
+ * the directive/component of the output is destroyed.
102
+ */
103
+ subscribe(callback: (value: T) => void): OutputRefSubscription;
104
+ }
105
+
106
+ /**
107
+ * @description
108
+ *
109
+ * Represents an abstract class `T`, if applied to a concrete class it would stop being
110
+ * instantiable.
111
+ *
112
+ * @publicApi
113
+ */
114
+ interface AbstractType<T> extends Function {
115
+ prototype: T;
116
+ }
117
+ /**
118
+ * @description
119
+ *
120
+ * Represents a type that a Component or other object is instances of.
121
+ *
122
+ * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by
123
+ * the `MyCustomComponent` constructor function.
124
+ *
125
+ * @publicApi
126
+ */
127
+ declare const Type: FunctionConstructor;
128
+ interface Type<T> extends Function {
129
+ new (...args: any[]): T;
130
+ }
131
+ /**
132
+ * Returns a writable type version of type.
133
+ *
134
+ * USAGE:
135
+ * Given:
136
+ * ```ts
137
+ * interface Person {readonly name: string}
138
+ * ```
139
+ *
140
+ * We would like to get a read/write version of `Person`.
141
+ * ```ts
142
+ * const WritablePerson = Writable<Person>;
143
+ * ```
144
+ *
145
+ * The result is that you can do:
146
+ *
147
+ * ```ts
148
+ * const readonlyPerson: Person = {name: 'Marry'};
149
+ * readonlyPerson.name = 'John'; // TypeError
150
+ * (readonlyPerson as WritablePerson).name = 'John'; // OK
151
+ *
152
+ * // Error: Correctly detects that `Person` did not have `age` property.
153
+ * (readonlyPerson as WritablePerson).age = 30;
154
+ * ```
155
+ */
156
+ type Writable<T> = {
157
+ -readonly [K in keyof T]: T[K];
158
+ };
159
+
160
+ /**
161
+ * Creates a token that can be used in a DI Provider.
162
+ *
163
+ * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
164
+ * runtime representation) such as when injecting an interface, callable type, array or
165
+ * parameterized type.
166
+ *
167
+ * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
168
+ * the `Injector`. This provides an additional level of type safety.
169
+ *
170
+ * <div class="docs-alert docs-alert-helpful">
171
+ *
172
+ * **Important Note**: Ensure that you use the same instance of the `InjectionToken` in both the
173
+ * provider and the injection call. Creating a new instance of `InjectionToken` in different places,
174
+ * even with the same description, will be treated as different tokens by Angular's DI system,
175
+ * leading to a `NullInjectorError`.
176
+ *
177
+ * </div>
178
+ *
179
+ * {@example injection-token/src/main.ts region='InjectionToken'}
180
+ *
181
+ * When creating an `InjectionToken`, you can optionally specify a factory function which returns
182
+ * (possibly by creating) a default value of the parameterized type `T`. This sets up the
183
+ * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
184
+ * application's root injector. If the factory function, which takes zero arguments, needs to inject
185
+ * dependencies, it can do so using the [`inject`](api/core/inject) function.
186
+ * As you can see in the Tree-shakable InjectionToken example below.
187
+ *
188
+ * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
189
+ * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
190
+ * this option is now deprecated). As mentioned above, `'root'` is the default value for
191
+ * `providedIn`.
192
+ *
193
+ * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
194
+ *
195
+ * @usageNotes
196
+ * ### Basic Examples
197
+ *
198
+ * ### Plain InjectionToken
199
+ *
200
+ * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
201
+ *
202
+ * ### Tree-shakable InjectionToken
203
+ *
204
+ * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
205
+ *
206
+ * @publicApi
207
+ */
208
+ declare class InjectionToken<T> {
209
+ protected _desc: string;
210
+ readonly ɵprov: unknown;
211
+ /**
212
+ * @param _desc Description for the token,
213
+ * used only for debugging purposes,
214
+ * it should but does not need to be unique
215
+ * @param options Options for the token's usage, as described above
216
+ */
217
+ constructor(_desc: string, options?: {
218
+ providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
219
+ factory: () => T;
220
+ });
221
+ toString(): string;
222
+ }
223
+
224
+ /**
225
+ * Configures the `Injector` to return a value for a token.
226
+ * Base for `ValueProvider` decorator.
227
+ *
228
+ * @publicApi
229
+ */
230
+ interface ValueSansProvider {
231
+ /**
232
+ * The value to inject.
233
+ */
234
+ useValue: any;
235
+ }
236
+ /**
237
+ * Configures the `Injector` to return a value for a token.
238
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
239
+ *
240
+ * @usageNotes
241
+ *
242
+ * ### Example
243
+ *
244
+ * {@example core/di/ts/provider_spec.ts region='ValueProvider'}
245
+ *
246
+ * ### Multi-value example
247
+ *
248
+ * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
249
+ *
250
+ * @publicApi
251
+ */
252
+ interface ValueProvider extends ValueSansProvider {
253
+ /**
254
+ * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
255
+ */
256
+ provide: any;
257
+ /**
258
+ * When true, injector returns an array of instances. This is useful to allow multiple
259
+ * providers spread across many files to provide configuration information to a common token.
260
+ */
261
+ multi?: boolean;
262
+ }
263
+ /**
264
+ * Configures the `Injector` to return an instance of `useClass` for a token.
265
+ * Base for `StaticClassProvider` decorator.
266
+ *
267
+ * @publicApi
268
+ */
269
+ interface StaticClassSansProvider {
270
+ /**
271
+ * An optional class to instantiate for the `token`. By default, the `provide`
272
+ * class is instantiated.
273
+ */
274
+ useClass: Type<any>;
275
+ /**
276
+ * A list of `token`s to be resolved by the injector. The list of values is then
277
+ * used as arguments to the `useClass` constructor.
278
+ */
279
+ deps: any[];
280
+ }
281
+ /**
282
+ * Configures the `Injector` to return an instance of `useClass` for a token.
283
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
284
+ *
285
+ * @usageNotes
286
+ *
287
+ * {@example core/di/ts/provider_spec.ts region='StaticClassProvider'}
288
+ *
289
+ * Note that following two providers are not equal:
290
+ *
291
+ * {@example core/di/ts/provider_spec.ts region='StaticClassProviderDifference'}
292
+ *
293
+ * ### Multi-value example
294
+ *
295
+ * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
296
+ *
297
+ * @publicApi
298
+ */
299
+ interface StaticClassProvider extends StaticClassSansProvider {
300
+ /**
301
+ * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
302
+ */
303
+ provide: any;
304
+ /**
305
+ * When true, injector returns an array of instances. This is useful to allow multiple
306
+ * providers spread across many files to provide configuration information to a common token.
307
+ */
308
+ multi?: boolean;
309
+ }
310
+ /**
311
+ * Configures the `Injector` to return an instance of a token.
312
+ *
313
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
314
+ *
315
+ * @usageNotes
316
+ *
317
+ * ```ts
318
+ * @Injectable(SomeModule, {deps: []})
319
+ * class MyService {}
320
+ * ```
321
+ *
322
+ * @publicApi
323
+ */
324
+ interface ConstructorSansProvider {
325
+ /**
326
+ * A list of `token`s to be resolved by the injector.
327
+ */
328
+ deps?: any[];
329
+ }
330
+ /**
331
+ * Configures the `Injector` to return an instance of a token.
332
+ *
333
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
334
+ *
335
+ * @usageNotes
336
+ *
337
+ * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
338
+ *
339
+ * ### Multi-value example
340
+ *
341
+ * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
342
+ *
343
+ * @publicApi
344
+ */
345
+ interface ConstructorProvider extends ConstructorSansProvider {
346
+ /**
347
+ * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
348
+ */
349
+ provide: Type<any>;
350
+ /**
351
+ * When true, injector returns an array of instances. This is useful to allow multiple
352
+ * providers spread across many files to provide configuration information to a common token.
353
+ */
354
+ multi?: boolean;
355
+ }
356
+ /**
357
+ * Configures the `Injector` to return a value of another `useExisting` token.
358
+ *
359
+ * @see {@link ExistingProvider}
360
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
361
+ *
362
+ * @publicApi
363
+ */
364
+ interface ExistingSansProvider {
365
+ /**
366
+ * Existing `token` to return. (Equivalent to `injector.get(useExisting)`)
367
+ */
368
+ useExisting: any;
369
+ }
370
+ /**
371
+ * Configures the `Injector` to return a value of another `useExisting` token.
372
+ *
373
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
374
+ *
375
+ * @usageNotes
376
+ *
377
+ * {@example core/di/ts/provider_spec.ts region='ExistingProvider'}
378
+ *
379
+ * ### Multi-value example
380
+ *
381
+ * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
382
+ *
383
+ * @publicApi
384
+ */
385
+ interface ExistingProvider extends ExistingSansProvider {
386
+ /**
387
+ * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
388
+ */
389
+ provide: any;
390
+ /**
391
+ * When true, injector returns an array of instances. This is useful to allow multiple
392
+ * providers spread across many files to provide configuration information to a common token.
393
+ */
394
+ multi?: boolean;
395
+ }
396
+ /**
397
+ * Configures the `Injector` to return a value by invoking a `useFactory` function.
398
+ *
399
+ * @see {@link FactoryProvider}
400
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
401
+ *
402
+ * @publicApi
403
+ */
404
+ interface FactorySansProvider {
405
+ /**
406
+ * A function to invoke to create a value for this `token`. The function is invoked with
407
+ * resolved values of `token`s in the `deps` field.
408
+ */
409
+ useFactory: Function;
410
+ /**
411
+ * A list of `token`s to be resolved by the injector. The list of values is then
412
+ * used as arguments to the `useFactory` function.
413
+ */
414
+ deps?: any[];
415
+ }
416
+ /**
417
+ * Configures the `Injector` to return a value by invoking a `useFactory` function.
418
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
419
+ *
420
+ * @usageNotes
421
+ *
422
+ * {@example core/di/ts/provider_spec.ts region='FactoryProvider'}
423
+ *
424
+ * Dependencies can also be marked as optional:
425
+ *
426
+ * {@example core/di/ts/provider_spec.ts region='FactoryProviderOptionalDeps'}
427
+ *
428
+ * ### Multi-value example
429
+ *
430
+ * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
431
+ *
432
+ * @publicApi
433
+ */
434
+ interface FactoryProvider extends FactorySansProvider {
435
+ /**
436
+ * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
437
+ */
438
+ provide: any;
439
+ /**
440
+ * When true, injector returns an array of instances. This is useful to allow multiple
441
+ * providers spread across many files to provide configuration information to a common token.
442
+ */
443
+ multi?: boolean;
444
+ }
445
+ /**
446
+ * Describes how an `Injector` should be configured as static (that is, without reflection).
447
+ * A static provider provides tokens to an injector for various types of dependencies.
448
+ *
449
+ * @see {@link Injector.create()}
450
+ * @see [Dependency Injection Guide](guide/di/dependency-injection-providers).
451
+ *
452
+ * @publicApi
453
+ */
454
+ type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[];
455
+ /**
456
+ * Configures the `Injector` to return an instance of `Type` when `Type' is used as the token.
457
+ *
458
+ * Create an instance by invoking the `new` operator and supplying additional arguments.
459
+ * This form is a short form of `TypeProvider`;
460
+ *
461
+ * For more details, see the ["Dependency Injection Guide"](guide/di/dependency-injection.
462
+ *
463
+ * @usageNotes
464
+ *
465
+ * {@example core/di/ts/provider_spec.ts region='TypeProvider'}
466
+ *
467
+ * @publicApi
468
+ */
469
+ interface TypeProvider extends Type<any> {
470
+ }
471
+ /**
472
+ * Configures the `Injector` to return a value by invoking a `useClass` function.
473
+ * Base for `ClassProvider` decorator.
474
+ *
475
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
476
+ *
477
+ * @publicApi
478
+ */
479
+ interface ClassSansProvider {
480
+ /**
481
+ * Class to instantiate for the `token`.
482
+ */
483
+ useClass: Type<any>;
484
+ }
485
+ /**
486
+ * Configures the `Injector` to return an instance of `useClass` for a token.
487
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
488
+ *
489
+ * @usageNotes
490
+ *
491
+ * {@example core/di/ts/provider_spec.ts region='ClassProvider'}
492
+ *
493
+ * Note that following two providers are not equal:
494
+ *
495
+ * {@example core/di/ts/provider_spec.ts region='ClassProviderDifference'}
496
+ *
497
+ * ### Multi-value example
498
+ *
499
+ * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
500
+ *
501
+ * @publicApi
502
+ */
503
+ interface ClassProvider extends ClassSansProvider {
504
+ /**
505
+ * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
506
+ */
507
+ provide: any;
508
+ /**
509
+ * When true, injector returns an array of instances. This is useful to allow multiple
510
+ * providers spread across many files to provide configuration information to a common token.
511
+ */
512
+ multi?: boolean;
513
+ }
514
+ /**
515
+ * Describes how the `Injector` should be configured.
516
+ * @see [Dependency Injection Guide](guide/di/dependency-injection.
517
+ *
518
+ * @see {@link StaticProvider}
519
+ *
520
+ * @publicApi
521
+ */
522
+ type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[];
523
+ /**
524
+ * Encapsulated `Provider`s that are only accepted during creation of an `EnvironmentInjector` (e.g.
525
+ * in an `NgModule`).
526
+ *
527
+ * Using this wrapper type prevents providers which are only designed to work in
528
+ * application/environment injectors from being accidentally included in
529
+ * `@Component.providers` and ending up in a component injector.
530
+ *
531
+ * This wrapper type prevents access to the `Provider`s inside.
532
+ *
533
+ * @see {@link makeEnvironmentProviders}
534
+ * @see {@link importProvidersFrom}
535
+ *
536
+ * @publicApi
537
+ */
538
+ type EnvironmentProviders = {
539
+ ɵbrand: 'EnvironmentProviders';
540
+ };
541
+ interface InternalEnvironmentProviders extends EnvironmentProviders {
542
+ ɵproviders: (Provider | EnvironmentProviders)[];
543
+ /**
544
+ * If present, indicates that the `EnvironmentProviders` were derived from NgModule providers.
545
+ *
546
+ * This is used to produce clearer error messages.
547
+ */
548
+ ɵfromNgModule?: true;
549
+ }
550
+ declare function isEnvironmentProviders(value: Provider | EnvironmentProviders | InternalEnvironmentProviders): value is InternalEnvironmentProviders;
551
+ /**
552
+ * Describes a function that is used to process provider lists (such as provider
553
+ * overrides).
554
+ */
555
+ type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
556
+ /**
557
+ * A wrapper around an NgModule that associates it with providers
558
+ * Usage without a generic type is deprecated.
559
+ *
560
+ * @publicApi
561
+ */
562
+ interface ModuleWithProviders<T> {
563
+ ngModule: Type<T>;
564
+ providers?: Array<Provider | EnvironmentProviders>;
565
+ }
566
+ /**
567
+ * Providers that were imported from NgModules via the `importProvidersFrom` function.
568
+ *
569
+ * These providers are meant for use in an application injector (or other environment injectors) and
570
+ * should not be used in component injectors.
571
+ *
572
+ * This type cannot be directly implemented. It's returned from the `importProvidersFrom` function
573
+ * and serves to prevent the extracted NgModule providers from being used in the wrong contexts.
574
+ *
575
+ * @see {@link importProvidersFrom}
576
+ *
577
+ * @publicApi
578
+ * @deprecated replaced by `EnvironmentProviders`
579
+ */
580
+ type ImportedNgModuleProviders = EnvironmentProviders;
581
+
582
+ declare global {
583
+ /**
584
+ * Values of ngDevMode
585
+ * Depending on the current state of the application, ngDevMode may have one of several values.
586
+ *
587
+ * For convenience, the “truthy” value which enables dev mode is also an object which contains
588
+ * Angular’s performance counters. This is not necessary, but cuts down on boilerplate for the
589
+ * perf counters.
590
+ *
591
+ * ngDevMode may also be set to false. This can happen in one of a few ways:
592
+ * - The user explicitly sets `window.ngDevMode = false` somewhere in their app.
593
+ * - The user calls `enableProdMode()`.
594
+ * - The URL contains a `ngDevMode=false` text.
595
+ * Finally, ngDevMode may not have been defined at all.
596
+ */
597
+ const ngDevMode: null | NgDevModePerfCounters;
598
+ interface NgDevModePerfCounters {
599
+ hydratedNodes: number;
600
+ hydratedComponents: number;
601
+ dehydratedViewsRemoved: number;
602
+ dehydratedViewsCleanupRuns: number;
603
+ componentsSkippedHydration: number;
604
+ deferBlocksWithIncrementalHydration: number;
605
+ }
606
+ }
607
+
608
+ /**
609
+ * This enum is an exact copy of the `InjectFlags` enum above, but the difference is that this is a
610
+ * const enum, so actual enum values would be inlined in generated code. The `InjectFlags` enum can
611
+ * be turned into a const enum when ViewEngine is removed (see TODO at the `InjectFlags` enum
612
+ * above). The benefit of inlining is that we can use these flags at the top level without affecting
613
+ * tree-shaking (see "no-toplevel-property-access" tslint rule for more info).
614
+ * Keep this enum in sync with `InjectFlags` enum above.
615
+ */
616
+ declare const enum InternalInjectFlags {
617
+ /** Check self and check parent injector if needed */
618
+ Default = 0,
619
+ /**
620
+ * Specifies that an injector should retrieve a dependency from any injector until reaching the
621
+ * host element of the current component. (Only used with Element Injector)
622
+ */
623
+ Host = 1,
624
+ /** Don't ascend to ancestors of the node requesting injection. */
625
+ Self = 2,
626
+ /** Skip the node that is requesting injection. */
627
+ SkipSelf = 4,
628
+ /** Inject `defaultValue` instead if token not found. */
629
+ Optional = 8,
630
+ /**
631
+ * This token is being injected into a pipe.
632
+ *
633
+ * This flag is intentionally not in the public facing `InjectFlags` because it is only added by
634
+ * the compiler and is not a developer applicable flag.
635
+ */
636
+ ForPipe = 16
637
+ }
638
+ /**
639
+ * Type of the options argument to [`inject`](api/core/inject).
640
+ *
641
+ * @publicApi
642
+ */
643
+ interface InjectOptions {
644
+ /**
645
+ * Use optional injection, and return `null` if the requested token is not found.
646
+ */
647
+ optional?: boolean;
648
+ /**
649
+ * Start injection at the parent of the current injector.
650
+ */
651
+ skipSelf?: boolean;
652
+ /**
653
+ * Only query the current injector for the token, and don't fall back to the parent injector if
654
+ * it's not found.
655
+ */
656
+ self?: boolean;
657
+ /**
658
+ * Stop injection at the host component's injector. Only relevant when injecting from an element
659
+ * injector, and a no-op for environment injectors.
660
+ */
661
+ host?: boolean;
662
+ }
663
+
664
+ /**
665
+ * @description
666
+ *
667
+ * Token that can be used to retrieve an instance from an injector or through a query.
668
+ *
669
+ * @publicApi
670
+ */
671
+ type ProviderToken<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
672
+
673
+ /**
674
+ * Concrete injectors implement this interface. Injectors are configured
675
+ * with [providers](guide/di/dependency-injection-providers) that associate
676
+ * dependencies of various types with [injection tokens](guide/di/dependency-injection-providers).
677
+ *
678
+ * @see [DI Providers](guide/di/dependency-injection-providers).
679
+ * @see {@link StaticProvider}
680
+ *
681
+ * @usageNotes
682
+ *
683
+ * The following example creates a service injector instance.
684
+ *
685
+ * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
686
+ *
687
+ * ### Usage example
688
+ *
689
+ * {@example core/di/ts/injector_spec.ts region='Injector'}
690
+ *
691
+ * `Injector` returns itself when given `Injector` as a token:
692
+ *
693
+ * {@example core/di/ts/injector_spec.ts region='injectInjector'}
694
+ *
695
+ * @publicApi
696
+ */
697
+ declare abstract class Injector {
698
+ static THROW_IF_NOT_FOUND: {};
699
+ static NULL: Injector;
700
+ /**
701
+ * Retrieves an instance from the injector based on the provided token.
702
+ * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
703
+ * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
704
+ */
705
+ abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & {
706
+ optional?: false;
707
+ }): T;
708
+ /**
709
+ * Retrieves an instance from the injector based on the provided token.
710
+ * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
711
+ * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
712
+ */
713
+ abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null;
714
+ /**
715
+ * Retrieves an instance from the injector based on the provided token.
716
+ * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
717
+ * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
718
+ */
719
+ abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions): T;
720
+ /**
721
+ * @deprecated from v4.0.0 use ProviderToken<T>
722
+ * @suppress {duplicate}
723
+ */
724
+ abstract get<T>(token: string | ProviderToken<T>, notFoundValue?: any): any;
725
+ /**
726
+ * @deprecated from v5 use the new signature Injector.create(options)
727
+ */
728
+ static create(providers: StaticProvider[], parent?: Injector): Injector;
729
+ /**
730
+ * Creates a new injector instance that provides one or more dependencies,
731
+ * according to a given type or types of `StaticProvider`.
732
+ *
733
+ * @param options An object with the following properties:
734
+ * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider).
735
+ * * `parent`: (optional) A parent injector.
736
+ * * `name`: (optional) A developer-defined identifying name for the new injector.
737
+ *
738
+ * @returns The new injector instance.
739
+ *
740
+ */
741
+ static create(options: {
742
+ providers: Array<Provider | StaticProvider>;
743
+ parent?: Injector;
744
+ name?: string;
745
+ }): DestroyableInjector;
746
+ /** @nocollapse */
747
+ static ɵprov: unknown;
748
+ }
749
+ /**
750
+ * An Injector that the owner can destroy and trigger the DestroyRef.destroy hooks.
751
+ *
752
+ * @publicApi
753
+ */
754
+ interface DestroyableInjector extends Injector {
755
+ destroy(): void;
756
+ }
757
+
758
+ /**
759
+ * `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.
760
+ * The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`
761
+ * is injected in a component or directive, the callbacks run when that component or
762
+ * directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.
763
+ *
764
+ * @publicApi
765
+ */
766
+ declare abstract class DestroyRef {
767
+ /**
768
+ * Registers a destroy callback in a given lifecycle scope. Returns a cleanup function that can
769
+ * be invoked to unregister the callback.
770
+ *
771
+ * @usageNotes
772
+ * ### Example
773
+ * ```ts
774
+ * const destroyRef = inject(DestroyRef);
775
+ *
776
+ * // register a destroy callback
777
+ * const unregisterFn = destroyRef.onDestroy(() => doSomethingOnDestroy());
778
+ *
779
+ * // stop the destroy callback from executing if needed
780
+ * unregisterFn();
781
+ * ```
782
+ */
783
+ abstract onDestroy(callback: () => void): () => void;
784
+ }
785
+
786
+ declare global {
787
+ /**
788
+ * Indicates whether HMR is enabled for the application.
789
+ *
790
+ * `ngHmrMode` is a global flag set by Angular's CLI.
791
+ *
792
+ * @remarks
793
+ * - **Internal Angular Flag**: This is an *internal* Angular flag (not a public API), avoid relying on it in application code.
794
+ * - **Avoid Direct Use**: This variable is intended for runtime configuration; it should not be accessed directly in application code.
795
+ */
796
+ var ngHmrMode: boolean | undefined;
797
+ }
798
+
799
+ declare global {
800
+ const ngJitMode: boolean;
801
+ }
802
+
803
+ declare global {
804
+ /**
805
+ * Indicates whether the application is operating in server-rendering mode.
806
+ *
807
+ * `ngServerMode` is a global flag set by Angular's server-side rendering mechanisms,
808
+ * typically configured by `provideServerRendering` and `platformServer` during runtime.
809
+ *
810
+ * @remarks
811
+ * - **Internal Angular Flag**: This is an *internal* Angular flag (not a public API), avoid relying on it in application code.
812
+ * - **Avoid Direct Use**: This variable is intended for runtime configuration; it should not be accessed directly in application code.
813
+ */
814
+ var ngServerMode: boolean | undefined;
815
+ }
816
+
817
+ declare global {
818
+ interface Element {
819
+ __jsaction_fns: Map<string, Function[]> | undefined;
820
+ }
821
+ }
822
+ interface EventContractDetails {
823
+ instance?: EventContract;
824
+ }
825
+ declare const JSACTION_EVENT_CONTRACT: InjectionToken<EventContractDetails>;
826
+
827
+ declare global {
828
+ const ngI18nClosureMode: boolean;
829
+ }
830
+
831
+ export { DestroyRef, InjectionToken, Injector, InternalInjectFlags, JSACTION_EVENT_CONTRACT, Type, isEnvironmentProviders, isSignal, signal, ɵunwrapWritableSignal };
832
+ export type { AbstractType, ClassProvider, ClassSansProvider, ConstructorProvider, ConstructorSansProvider, CreateSignalOptions, DestroyableInjector, EnvironmentProviders, ExistingProvider, ExistingSansProvider, FactoryProvider, FactorySansProvider, ImportedNgModuleProviders, InjectOptions, InternalEnvironmentProviders, ModuleWithProviders, OutputRef, OutputRefSubscription, ProcessProvidersFunction, Provider, ProviderToken, Signal, StaticClassProvider, StaticClassSansProvider, StaticProvider, TypeProvider, ValueEqualityFn, ValueProvider, ValueSansProvider, Writable, WritableSignal };