@angular/core 17.1.0-next.5 → 17.1.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 (74) hide show
  1. package/esm2022/primitives/signals/index.mjs +2 -2
  2. package/esm2022/primitives/signals/src/signal.mjs +2 -10
  3. package/esm2022/src/application/application_ref.mjs +21 -5
  4. package/esm2022/src/authoring/input.mjs +12 -5
  5. package/esm2022/src/authoring/input_signal.mjs +28 -1
  6. package/esm2022/src/authoring/input_signal_node.mjs +22 -0
  7. package/esm2022/src/authoring.mjs +1 -4
  8. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +56 -0
  9. package/esm2022/src/compiler/compiler_facade_interface.mjs +1 -1
  10. package/esm2022/src/core.mjs +2 -2
  11. package/esm2022/src/core_private_export.mjs +2 -1
  12. package/esm2022/src/core_render3_private_export.mjs +2 -2
  13. package/esm2022/src/defer/dom_triggers.mjs +1 -5
  14. package/esm2022/src/di/inject_switch.mjs +2 -3
  15. package/esm2022/src/di/r3_injector.mjs +8 -6
  16. package/esm2022/src/errors.mjs +1 -1
  17. package/esm2022/src/hydration/utils.mjs +2 -2
  18. package/esm2022/src/hydration/views.mjs +2 -2
  19. package/esm2022/src/linker/view_container_ref.mjs +2 -2
  20. package/esm2022/src/metadata/directives.mjs +1 -1
  21. package/esm2022/src/render3/after_render_hooks.mjs +15 -33
  22. package/esm2022/src/render3/apply_value_input_field.mjs +16 -0
  23. package/esm2022/src/render3/collect_native_nodes.mjs +2 -3
  24. package/esm2022/src/render3/component_ref.mjs +13 -6
  25. package/esm2022/src/render3/debug/injector_profiler.mjs +1 -1
  26. package/esm2022/src/render3/definition.mjs +27 -68
  27. package/esm2022/src/render3/errors_di.mjs +4 -3
  28. package/esm2022/src/render3/features/host_directives_feature.mjs +2 -3
  29. package/esm2022/src/render3/features/inherit_definition_feature.mjs +31 -9
  30. package/esm2022/src/render3/features/input_transforms_feature.mjs +4 -5
  31. package/esm2022/src/render3/features/ng_onchanges_feature.mjs +4 -3
  32. package/esm2022/src/render3/instructions/advance.mjs +2 -2
  33. package/esm2022/src/render3/instructions/change_detection.mjs +1 -6
  34. package/esm2022/src/render3/instructions/listener.mjs +1 -1
  35. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +2 -2
  36. package/esm2022/src/render3/instructions/shared.mjs +61 -58
  37. package/esm2022/src/render3/instructions/write_to_directive_input.mjs +43 -0
  38. package/esm2022/src/render3/interfaces/container.mjs +1 -6
  39. package/esm2022/src/render3/interfaces/definition.mjs +8 -2
  40. package/esm2022/src/render3/interfaces/node.mjs +1 -1
  41. package/esm2022/src/render3/jit/environment.mjs +3 -1
  42. package/esm2022/src/render3/node_manipulation.mjs +8 -8
  43. package/esm2022/src/render3/reactivity/effect.mjs +8 -6
  44. package/esm2022/src/render3/reactivity/signal.mjs +1 -1
  45. package/esm2022/src/render3/styling/style_binding_list.mjs +4 -4
  46. package/esm2022/src/render3/util/discovery_utils.mjs +37 -5
  47. package/esm2022/src/render3/util/global_utils.mjs +28 -28
  48. package/esm2022/src/render3/util/injector_discovery_utils.mjs +1 -1
  49. package/esm2022/src/render3/util/injector_utils.mjs +6 -5
  50. package/esm2022/src/render3/util/view_traversal_utils.mjs +3 -12
  51. package/esm2022/src/render3/util/view_utils.mjs +19 -15
  52. package/esm2022/src/testability/testability.mjs +3 -15
  53. package/esm2022/src/util/empty.mjs +1 -1
  54. package/esm2022/src/version.mjs +1 -1
  55. package/esm2022/testing/src/component_fixture.mjs +62 -58
  56. package/esm2022/testing/src/logger.mjs +3 -3
  57. package/fesm2022/core.mjs +527 -408
  58. package/fesm2022/core.mjs.map +1 -1
  59. package/fesm2022/primitives/signals.mjs +2 -10
  60. package/fesm2022/primitives/signals.mjs.map +1 -1
  61. package/fesm2022/rxjs-interop.mjs +1 -1
  62. package/fesm2022/testing.mjs +62 -58
  63. package/fesm2022/testing.mjs.map +1 -1
  64. package/index.d.ts +637 -230
  65. package/package.json +1 -1
  66. package/primitives/signals/index.d.ts +3 -4
  67. package/rxjs-interop/index.d.ts +1 -1
  68. package/schematics/migrations/block-template-entities/bundle.js +121 -116
  69. package/schematics/migrations/block-template-entities/bundle.js.map +4 -4
  70. package/schematics/ng-generate/control-flow-migration/bundle.js +122 -117
  71. package/schematics/ng-generate/control-flow-migration/bundle.js.map +4 -4
  72. package/schematics/ng-generate/standalone-migration/bundle.js +414 -360
  73. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  74. package/testing/index.d.ts +6 -2
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.1.0-next.5
2
+ * @license Angular v17.1.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -9,6 +9,7 @@ import { BehaviorSubject } from 'rxjs';
9
9
  import { Observable } from 'rxjs';
10
10
  import { ReactiveNode } from '@angular/core/primitives/signals';
11
11
  import { SIGNAL } from '@angular/core/primitives/signals';
12
+ import { SignalNode } from '@angular/core/primitives/signals';
12
13
  import { Subject } from 'rxjs';
13
14
  import { Subscribable } from 'rxjs';
14
15
  import { Subscription } from 'rxjs';
@@ -642,6 +643,7 @@ export declare class ApplicationRef {
642
643
  private _destroyed;
643
644
  private _destroyListeners;
644
645
  private readonly internalErrorHandler;
646
+ private readonly afterRenderEffectManager;
645
647
  /**
646
648
  * Indicates whether this instance was destroyed.
647
649
  */
@@ -787,6 +789,18 @@ export declare class ApplicationRef {
787
789
  static ɵprov: i0.ɵɵInjectableDeclaration<ApplicationRef>;
788
790
  }
789
791
 
792
+
793
+ /**
794
+ * Marks a component for check (in case of OnPush components) and synchronously
795
+ * performs change detection on the application this component belongs to.
796
+ *
797
+ * @param component Component to {@link ChangeDetectorRef#markForCheck mark for check}.
798
+ *
799
+ * @publicApi
800
+ * @globalApi ng
801
+ */
802
+ declare function applyChanges(component: {}): void;
803
+
790
804
  /**
791
805
  * @publicApi
792
806
  */
@@ -3040,6 +3054,18 @@ export declare interface Directive {
3040
3054
  */
3041
3055
  export declare const Directive: DirectiveDecorator;
3042
3056
 
3057
+ /**
3058
+ * Partial metadata for a given directive instance.
3059
+ * This information might be useful for debugging purposes or tooling.
3060
+ * Currently only `inputs` and `outputs` metadata is available.
3061
+ *
3062
+ * @publicApi
3063
+ */
3064
+ declare interface DirectiveDebugMetadata {
3065
+ inputs: Record<string, string>;
3066
+ outputs: Record<string, string>;
3067
+ }
3068
+
3043
3069
  /**
3044
3070
  * Type of the Directive decorator / constructor function.
3045
3071
  * @publicApi
@@ -3151,63 +3177,8 @@ declare interface DirectiveDefinition<T> {
3151
3177
  selectors?: ɵCssSelectorList;
3152
3178
  /**
3153
3179
  * A map of input names.
3154
- *
3155
- * The format is in: `{[actualPropertyName: string]:(string|[string, string, Function])}`.
3156
- *
3157
- * Given:
3158
- * ```
3159
- * class MyComponent {
3160
- * @Input()
3161
- * publicInput1: string;
3162
- *
3163
- * @Input('publicInput2')
3164
- * declaredInput2: string;
3165
- *
3166
- * @Input({transform: (value: boolean) => value ? 1 : 0})
3167
- * transformedInput3: number;
3168
- * }
3169
- * ```
3170
- *
3171
- * is described as:
3172
- * ```
3173
- * {
3174
- * publicInput1: 'publicInput1',
3175
- * declaredInput2: ['declaredInput2', 'publicInput2'],
3176
- * transformedInput3: [
3177
- * 'transformedInput3',
3178
- * 'transformedInput3',
3179
- * (value: boolean) => value ? 1 : 0
3180
- * ]
3181
- * }
3182
- * ```
3183
- *
3184
- * Which the minifier may translate to:
3185
- * ```
3186
- * {
3187
- * minifiedPublicInput1: 'publicInput1',
3188
- * minifiedDeclaredInput2: [ 'publicInput2', 'declaredInput2'],
3189
- * minifiedTransformedInput3: [
3190
- * 'transformedInput3',
3191
- * 'transformedInput3',
3192
- * (value: boolean) => value ? 1 : 0
3193
- * ]
3194
- * }
3195
- * ```
3196
- *
3197
- * This allows the render to re-construct the minified, public, and declared names
3198
- * of properties.
3199
- *
3200
- * NOTE:
3201
- * - Because declared and public name are usually same we only generate the array
3202
- * `['declared', 'public']` format when they differ.
3203
- * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
3204
- * inconsistent behavior in that it uses declared names rather than minified or public. For
3205
- * this reason `NgOnChanges` will be deprecated and removed in future version and this
3206
- * API will be simplified to be consistent with `output`.
3207
3180
  */
3208
- inputs?: {
3209
- [P in keyof T]?: string | [string, string, InputTransformFunction?];
3210
- };
3181
+ inputs?: DirectiveInputs<T>;
3211
3182
  /**
3212
3183
  * A map of output names.
3213
3184
  *
@@ -3303,6 +3274,75 @@ declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
3303
3274
  */
3304
3275
  declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
3305
3276
 
3277
+ /**
3278
+ * Map of inputs for a given directive/component.
3279
+ *
3280
+ * Given:
3281
+ * ```
3282
+ * class MyComponent {
3283
+ * @Input()
3284
+ * publicInput1: string;
3285
+ *
3286
+ * @Input('publicInput2')
3287
+ * declaredInput2: string;
3288
+ *
3289
+ * @Input({transform: (value: boolean) => value ? 1 : 0})
3290
+ * transformedInput3: number;
3291
+ *
3292
+ * signalInput = input(3);
3293
+ * }
3294
+ * ```
3295
+ *
3296
+ * is described as:
3297
+ * ```
3298
+ * {
3299
+ * publicInput1: 'publicInput1',
3300
+ * declaredInput2: [InputFlags.None, 'declaredInput2', 'publicInput2'],
3301
+ * transformedInput3: [
3302
+ * InputFlags.None,
3303
+ * 'transformedInput3',
3304
+ * 'transformedInput3',
3305
+ * (value: boolean) => value ? 1 : 0
3306
+ * ],
3307
+ * signalInput: [InputFlags.SignalBased, "signalInput"],
3308
+ * }
3309
+ * ```
3310
+ *
3311
+ * Which the minifier may translate to:
3312
+ * ```
3313
+ * {
3314
+ * minifiedPublicInput1: 'publicInput1',
3315
+ * minifiedDeclaredInput2: [InputFlags.None, 'publicInput2', 'declaredInput2'],
3316
+ * minifiedTransformedInput3: [
3317
+ * InputFlags.None,
3318
+ * 'transformedInput3',
3319
+ * 'transformedInput3',
3320
+ * (value: boolean) => value ? 1 : 0
3321
+ * ],
3322
+ * minifiedSignalInput: [InputFlags.SignalBased, "signalInput"],
3323
+ * }
3324
+ * ```
3325
+ *
3326
+ * This allows the render to re-construct the minified, public, and declared names
3327
+ * of properties.
3328
+ *
3329
+ * NOTE:
3330
+ * - Because declared and public name are usually same we only generate the array
3331
+ * `['declared', 'public']` format when they differ, or there is a transform.
3332
+ * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
3333
+ * inconsistent behavior in that it uses declared names rather than minified or public. For
3334
+ * this reason `NgOnChanges` will be deprecated and removed in future version and this
3335
+ * API will be simplified to be consistent with `output`.
3336
+ */
3337
+ declare type DirectiveInputs<T> = {
3338
+ [P in keyof T]?: string | [
3339
+ flags: ɵɵInputFlags,
3340
+ publicName: string,
3341
+ declaredName?: string,
3342
+ transform?: InputTransformFunction
3343
+ ];
3344
+ };
3345
+
3306
3346
  declare const DISCONNECTED_NODES = "d";
3307
3347
 
3308
3348
  /**
@@ -3910,6 +3950,49 @@ export declare interface ForwardRefFn {
3910
3950
  (): any;
3911
3951
  }
3912
3952
 
3953
+ /**
3954
+ * Retrieves the component instance associated with a given DOM element.
3955
+ *
3956
+ * @usageNotes
3957
+ * Given the following DOM structure:
3958
+ *
3959
+ * ```html
3960
+ * <app-root>
3961
+ * <div>
3962
+ * <child-comp></child-comp>
3963
+ * </div>
3964
+ * </app-root>
3965
+ * ```
3966
+ *
3967
+ * Calling `getComponent` on `<child-comp>` will return the instance of `ChildComponent`
3968
+ * associated with this DOM element.
3969
+ *
3970
+ * Calling the function on `<app-root>` will return the `MyApp` instance.
3971
+ *
3972
+ *
3973
+ * @param element DOM element from which the component should be retrieved.
3974
+ * @returns Component instance associated with the element or `null` if there
3975
+ * is no component associated with it.
3976
+ *
3977
+ * @publicApi
3978
+ * @globalApi ng
3979
+ */
3980
+ declare function getComponent<T>(element: Element): T | null;
3981
+
3982
+ /**
3983
+ * If inside an embedded view (e.g. `*ngIf` or `*ngFor`), retrieves the context of the embedded
3984
+ * view that the element is part of. Otherwise retrieves the instance of the component whose view
3985
+ * owns the element (in this case, the result is the same as calling `getOwningComponent`).
3986
+ *
3987
+ * @param element Element for which to get the surrounding component instance.
3988
+ * @returns Instance of the component that is around the element or null if the element isn't
3989
+ * inside any component.
3990
+ *
3991
+ * @publicApi
3992
+ * @globalApi ng
3993
+ */
3994
+ declare function getContext<T extends {}>(element: Element): T | null;
3995
+
3913
3996
  /**
3914
3997
  * @publicApi
3915
3998
  */
@@ -3917,6 +4000,115 @@ declare function getDebugNode(nativeNode: any): DebugNode | null;
3917
4000
  export { getDebugNode }
3918
4001
  export { getDebugNode as ɵgetDebugNode }
3919
4002
 
4003
+ /**
4004
+ * Discovers the dependencies of an injectable instance. Provides DI information about each
4005
+ * dependency that the injectable was instantiated with, including where they were provided from.
4006
+ *
4007
+ * @param injector An injector instance
4008
+ * @param token a DI token that was constructed by the given injector instance
4009
+ * @returns an object that contains the created instance of token as well as all of the dependencies
4010
+ * that it was instantiated with OR undefined if the token was not created within the given
4011
+ * injector.
4012
+ */
4013
+ declare function getDependenciesFromInjectable<T>(injector: Injector, token: Type<T> | InjectionToken<T>): {
4014
+ instance: T;
4015
+ dependencies: Omit<InjectedService, 'injectedIn'>[];
4016
+ } | undefined;
4017
+
4018
+ /**
4019
+ * Returns the debug (partial) metadata for a particular directive or component instance.
4020
+ * The function accepts an instance of a directive or component and returns the corresponding
4021
+ * metadata.
4022
+ *
4023
+ * @param directiveOrComponentInstance Instance of a directive or component
4024
+ * @returns metadata of the passed directive or component
4025
+ *
4026
+ * @publicApi
4027
+ * @globalApi ng
4028
+ */
4029
+ declare function getDirectiveMetadata(directiveOrComponentInstance: any): ɵComponentDebugMetadata | DirectiveDebugMetadata | null;
4030
+
4031
+ /**
4032
+ * Retrieves an `Injector` associated with an element, component or directive instance.
4033
+ *
4034
+ * @param elementOrDir DOM element, component or directive instance for which to
4035
+ * retrieve the injector.
4036
+ * @returns Injector associated with the element, component or directive instance.
4037
+ *
4038
+ * @publicApi
4039
+ * @globalApi ng
4040
+ */
4041
+ declare function getInjector(elementOrDir: Element | {}): Injector;
4042
+
4043
+ /**
4044
+ *
4045
+ * Given an injector, this function will return
4046
+ * an object containing the type and source of the injector.
4047
+ *
4048
+ * | | type | source |
4049
+ * |--------------|-------------|-------------------------------------------------------------|
4050
+ * | NodeInjector | element | DOM element that created this injector |
4051
+ * | R3Injector | environment | `injector.source` |
4052
+ * | NullInjector | null | null |
4053
+ *
4054
+ * @param injector the Injector to get metadata for
4055
+ * @returns an object containing the type and source of the given injector. If the injector metadata
4056
+ * cannot be determined, returns null.
4057
+ */
4058
+ declare function getInjectorMetadata(injector: Injector): {
4059
+ type: 'element';
4060
+ source: RElement;
4061
+ } | {
4062
+ type: 'environment';
4063
+ source: string | null;
4064
+ } | {
4065
+ type: 'null';
4066
+ source: null;
4067
+ } | null;
4068
+
4069
+ /**
4070
+ * Gets the providers configured on an injector.
4071
+ *
4072
+ * @param injector the injector to lookup the providers of
4073
+ * @returns ProviderRecord[] an array of objects representing the providers of the given injector
4074
+ */
4075
+ declare function getInjectorProviders(injector: Injector): ɵProviderRecord[];
4076
+
4077
+ declare function getInjectorResolutionPath(injector: Injector): Injector[];
4078
+
4079
+ /**
4080
+ * Retrieves a list of event listeners associated with a DOM element. The list does include host
4081
+ * listeners, but it does not include event listeners defined outside of the Angular context
4082
+ * (e.g. through `addEventListener`).
4083
+ *
4084
+ * @usageNotes
4085
+ * Given the following DOM structure:
4086
+ *
4087
+ * ```html
4088
+ * <app-root>
4089
+ * <div (click)="doSomething()"></div>
4090
+ * </app-root>
4091
+ * ```
4092
+ *
4093
+ * Calling `getListeners` on `<div>` will return an object that looks as follows:
4094
+ *
4095
+ * ```ts
4096
+ * {
4097
+ * name: 'click',
4098
+ * element: <div>,
4099
+ * callback: () => doSomething(),
4100
+ * useCapture: false
4101
+ * }
4102
+ * ```
4103
+ *
4104
+ * @param element Element for which the DOM listeners should be retrieved.
4105
+ * @returns Array of event listeners on the DOM element.
4106
+ *
4107
+ * @publicApi
4108
+ * @globalApi ng
4109
+ */
4110
+ declare function getListeners(element: Element): Listener[];
4111
+
3920
4112
  /**
3921
4113
  * Returns the NgModuleFactory with the given id (specified using [@NgModule.id
3922
4114
  * field](api/core/NgModule#id)), if it exists and has been loaded. Factories for NgModules that do
@@ -3934,6 +4126,23 @@ export declare function getModuleFactory(id: string): NgModuleFactory<any>;
3934
4126
  */
3935
4127
  export declare function getNgModuleById<T>(id: string): Type<T>;
3936
4128
 
4129
+ /**
4130
+ * Retrieves the component instance whose view contains the DOM element.
4131
+ *
4132
+ * For example, if `<child-comp>` is used in the template of `<app-comp>`
4133
+ * (i.e. a `ViewChild` of `<app-comp>`), calling `getOwningComponent` on `<child-comp>`
4134
+ * would return `<app-comp>`.
4135
+ *
4136
+ * @param elementOrDir DOM element, component or directive instance
4137
+ * for which to retrieve the root components.
4138
+ * @returns Component instance whose view owns the DOM element or null if the element is not
4139
+ * part of a component view.
4140
+ *
4141
+ * @publicApi
4142
+ * @globalApi ng
4143
+ */
4144
+ declare function getOwningComponent<T>(elementOrDir: Element | {}): T | null;
4145
+
3937
4146
  /**
3938
4147
  * Returns the current platform.
3939
4148
  *
@@ -3941,6 +4150,19 @@ export declare function getNgModuleById<T>(id: string): Type<T>;
3941
4150
  */
3942
4151
  export declare function getPlatform(): PlatformRef | null;
3943
4152
 
4153
+ /**
4154
+ * Retrieves all root components associated with a DOM element, directive or component instance.
4155
+ * Root components are those which have been bootstrapped by Angular.
4156
+ *
4157
+ * @param elementOrDir DOM element, component or directive instance
4158
+ * for which to retrieve the root components.
4159
+ * @returns Root components associated with the target object.
4160
+ *
4161
+ * @publicApi
4162
+ * @globalApi ng
4163
+ */
4164
+ declare function getRootComponents(elementOrDir: Element | {}): {}[];
4165
+
3944
4166
  /**
3945
4167
  * Adapter interface for retrieving the `Testability` service associated for a
3946
4168
  * particular context.
@@ -3952,6 +4174,12 @@ export declare interface GetTestability {
3952
4174
  findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null;
3953
4175
  }
3954
4176
 
4177
+ /**
4178
+ * This value reflects the property on the window where the dev
4179
+ * tools are patched (window.ng).
4180
+ * */
4181
+ declare const GLOBAL_PUBLISH_EXPANDO_KEY = "ng";
4182
+
3955
4183
  /**
3956
4184
  * The goal here is to make sure that the browser DOM API is the Renderer.
3957
4185
  * We do this by defining a subset of DOM API to be the renderer and then
@@ -3964,6 +4192,29 @@ declare type GlobalTargetName = 'document' | 'window' | 'body';
3964
4192
 
3965
4193
  declare type GlobalTargetResolver = (element: any) => EventTarget;
3966
4194
 
4195
+ declare const globalUtilsFunctions: {
4196
+ /**
4197
+ * Warning: functions that start with `ɵ` are considered *INTERNAL* and should not be relied upon
4198
+ * in application's code. The contract of those functions might be changed in any release and/or a
4199
+ * function can be removed completely.
4200
+ */
4201
+ ɵgetDependenciesFromInjectable: typeof getDependenciesFromInjectable;
4202
+ ɵgetInjectorProviders: typeof getInjectorProviders;
4203
+ ɵgetInjectorResolutionPath: typeof getInjectorResolutionPath;
4204
+ ɵgetInjectorMetadata: typeof getInjectorMetadata;
4205
+ ɵsetProfiler: (profiler: ɵProfiler | null) => void;
4206
+ getDirectiveMetadata: typeof getDirectiveMetadata;
4207
+ getComponent: typeof getComponent;
4208
+ getContext: typeof getContext;
4209
+ getListeners: typeof getListeners;
4210
+ getOwningComponent: typeof getOwningComponent;
4211
+ getHostElement: typeof ɵgetHostElement;
4212
+ getInjector: typeof getInjector;
4213
+ getRootComponents: typeof getRootComponents;
4214
+ getDirectives: typeof ɵgetDirectives;
4215
+ applyChanges: typeof applyChanges;
4216
+ };
4217
+
3967
4218
  /**
3968
4219
  * Array of hooks that should be executed for a view and their directive indices.
3969
4220
  *
@@ -4621,11 +4872,12 @@ declare type InitialInputData = (InitialInputs | null)[];
4621
4872
  *
4622
4873
  * i+0: attribute name
4623
4874
  * i+1: minified/internal input name
4624
- * i+2: initial value
4875
+ * i+2: input flags
4876
+ * i+3: initial value
4625
4877
  *
4626
4878
  * e.g. ['role-min', 'minified-input', 'button']
4627
4879
  */
4628
- declare type InitialInputs = string[];
4880
+ declare type InitialInputs = (string | ɵɵInputFlags)[];
4629
4881
 
4630
4882
  /**
4631
4883
  * Type of the Inject metadata.
@@ -4816,6 +5068,36 @@ export declare interface InjectDecorator {
4816
5068
  new (token: any): Inject;
4817
5069
  }
4818
5070
 
5071
+ /**
5072
+ * An object that contains information a service that has been injected within an
5073
+ * InjectorProfilerContext
5074
+ */
5075
+ declare interface InjectedService {
5076
+ /**
5077
+ * DI token of the Service that is injected
5078
+ */
5079
+ token?: Type<unknown> | InjectionToken<unknown>;
5080
+ /**
5081
+ * Value of the injected service
5082
+ */
5083
+ value: unknown;
5084
+ /**
5085
+ * Flags that this service was injected with
5086
+ */
5087
+ flags?: InternalInjectFlags | InjectFlags | InjectOptions;
5088
+ /**
5089
+ * Injector that this service was provided in.
5090
+ */
5091
+ providedIn?: Injector;
5092
+ /**
5093
+ * In NodeInjectors, the LView and TNode that serviced this injection.
5094
+ */
5095
+ injectedIn?: {
5096
+ lView: LView;
5097
+ tNode: TNode;
5098
+ };
5099
+ }
5100
+
4819
5101
  /**
4820
5102
  * Injection flags for DI.
4821
5103
  *
@@ -5087,6 +5369,33 @@ export declare interface Input {
5087
5369
  */
5088
5370
  export declare const Input: InputDecorator;
5089
5371
 
5372
+ /**
5373
+ * The `input` function allows declaration of inputs in directives and
5374
+ * components.
5375
+ *
5376
+ * Initializes an input with an initial value. If no explicit value
5377
+ * is specified, Angular will use `undefined`.
5378
+ *
5379
+ * Consider using `input.required` for inputs that don't need an
5380
+ * initial value.
5381
+ *
5382
+ * @usageNotes
5383
+ * Initialize an input in your directive or component by declaring a
5384
+ * class field and initializing it with the `input()` function.
5385
+ *
5386
+ * ```ts
5387
+ * @Directive({..})
5388
+ * export class MyDir {
5389
+ * firstName = input<string>(); // string|undefined
5390
+ * lastName = input.required<string>(); // string
5391
+ * age = input(0); // number
5392
+ * }
5393
+ * ```
5394
+ *
5395
+ * @developerPreview
5396
+ */
5397
+ export declare const input: InputFunction;
5398
+
5090
5399
  /**
5091
5400
  * @publicApi
5092
5401
  */
@@ -5146,17 +5455,128 @@ export declare interface InputDecorator {
5146
5455
  new (arg?: string | Input): any;
5147
5456
  }
5148
5457
 
5458
+ /**
5459
+ * The `input` function allows declaration of inputs in directives and
5460
+ * components.
5461
+ *
5462
+ * The function exposes an API for also declaring required inputs via the
5463
+ * `input.required` function.
5464
+ *
5465
+ * @usageNotes
5466
+ * Initialize an input in your directive or component by declaring a
5467
+ * class field and initializing it with the `input()` or `input.required()`
5468
+ * function.
5469
+ *
5470
+ * ```ts
5471
+ * @Directive({..})
5472
+ * export class MyDir {
5473
+ * firstName = input<string>(); // string|undefined
5474
+ * lastName = input.required<string>(); // string
5475
+ * age = input(0); // number
5476
+ * }
5477
+ * ```
5478
+ *
5479
+ * @developerPreview
5480
+ */
5481
+ export declare interface InputFunction {
5482
+ /**
5483
+ * Initializes an input with an initial value. If no explicit value
5484
+ * is specified, Angular will use `undefined`.
5485
+ *
5486
+ * Consider using `input.required` for inputs that don't need an
5487
+ * initial value.
5488
+ *
5489
+ * @developerPreview
5490
+ */
5491
+ <ReadT>(): InputSignal<ReadT | undefined>;
5492
+ <ReadT>(initialValue: ReadT, opts?: InputOptionsWithoutTransform<ReadT>): InputSignal<ReadT>;
5493
+ <ReadT, WriteT>(initialValue: ReadT, opts: InputOptionsWithTransform<ReadT, WriteT>): InputSignal<ReadT, WriteT>;
5494
+ /**
5495
+ * Initializes a required input.
5496
+ *
5497
+ * Users of your directive/component need to bind to this
5498
+ * input. If unset, a compile time error will be reported.
5499
+ *
5500
+ * @developerPreview
5501
+ */
5502
+ required: {
5503
+ <ReadT>(opts?: InputOptionsWithoutTransform<ReadT>): InputSignal<ReadT>;
5504
+ <ReadT, WriteT>(opts: InputOptionsWithTransform<ReadT, WriteT>): InputSignal<ReadT, WriteT>;
5505
+ };
5506
+ }
5507
+
5508
+ /**
5509
+ * @developerPreview
5510
+ *
5511
+ * Options for signal inputs.
5512
+ */
5513
+ export declare interface InputOptions<ReadT, WriteT> {
5514
+ /** Optional public name for the input. By default, the class field name is used. */
5515
+ alias?: string;
5516
+ /**
5517
+ * Optional transform that runs whenever a new value is bound. Can be used to
5518
+ * transform the input value before the input is updated.
5519
+ *
5520
+ * The transform function can widen the type of the input. For example, consider
5521
+ * an input for `disabled`. In practice, as the component author, you want to only
5522
+ * deal with a boolean, but users may want to bind a string if they just use the
5523
+ * attribute form to bind to the input via `<my-dir input>`. A transform can then
5524
+ * handle such string values and convert them to `boolean`. See: {@link booleanAttribute}.
5525
+ */
5526
+ transform?: (v: WriteT) => ReadT;
5527
+ }
5528
+
5529
+ /**
5530
+ * Signal input options without the transform option.
5531
+ *
5532
+ * @developerPreview
5533
+ */
5534
+ export declare type InputOptionsWithoutTransform<ReadT> = Omit<InputOptions<ReadT, ReadT>, 'transform'> & {
5535
+ transform?: undefined;
5536
+ };
5537
+
5538
+ /**
5539
+ * Signal input options with the transform option required.
5540
+ *
5541
+ * @developerPreview
5542
+ */
5543
+ export declare type InputOptionsWithTransform<ReadT, WriteT> = Required<Pick<InputOptions<ReadT, WriteT>, 'transform'>> & InputOptions<ReadT, WriteT>;
5544
+
5149
5545
  /**
5150
5546
  * `InputSignal` is represents a special `Signal` for a directive/component input.
5151
5547
  *
5152
5548
  * An input signal is similar to a non-writable signal except that it also
5153
5549
  * carries additional type-information for transforms, and that Angular internally
5154
5550
  * updates the signal whenever a new value is bound.
5551
+ *
5552
+ * @developerPreview
5155
5553
  */
5156
- export declare type InputSignal<ReadT, WriteT = ReadT> = Signal<ReadT> & {
5554
+ export declare interface InputSignal<ReadT, WriteT = ReadT> extends Signal<ReadT> {
5555
+ [SIGNAL]: InputSignalNode<ReadT, WriteT>;
5157
5556
  [ɵINPUT_SIGNAL_BRAND_READ_TYPE]: ReadT;
5158
5557
  [ɵINPUT_SIGNAL_BRAND_WRITE_TYPE]: WriteT;
5159
- };
5558
+ }
5559
+
5560
+ /**
5561
+ * Reactive node type for an input signal. An input signal extends a signal.
5562
+ * There are special properties to enable transforms and required inputs.
5563
+ */
5564
+ declare interface InputSignalNode<ReadT, WriteT> extends SignalNode<ReadT | typeof REQUIRED_UNSET_VALUE> {
5565
+ /**
5566
+ * User-configured transform that will run whenever a new value is applied
5567
+ * to the input signal node.
5568
+ */
5569
+ transformFn: ((value: WriteT) => ReadT) | undefined;
5570
+ /**
5571
+ * Applies a new value to the input signal. Expects transforms to be run
5572
+ * manually before.
5573
+ *
5574
+ * This function is called by the framework runtime code whenever a binding
5575
+ * changes. The value can in practice be anything at runtime, but for typing
5576
+ * purposes we assume it's a valid `ReadT` value. Type-checking will enforce that.
5577
+ */
5578
+ applyValueToInputSignal<ReadT, WriteT>(node: InputSignalNode<ReadT, WriteT>, value: ReadT): void;
5579
+ }
5160
5580
 
5161
5581
  /** Function that can be used to transform incoming input values. */
5162
5582
  declare type InputTransformFunction = (value: any) => any;
@@ -5178,6 +5598,37 @@ declare interface InternalAfterNextRenderOptions {
5178
5598
  injector?: Injector;
5179
5599
  }
5180
5600
 
5601
+ /**
5602
+ * This enum is an exact copy of the `InjectFlags` enum above, but the difference is that this is a
5603
+ * const enum, so actual enum values would be inlined in generated code. The `InjectFlags` enum can
5604
+ * be turned into a const enum when ViewEngine is removed (see TODO at the `InjectFlags` enum
5605
+ * above). The benefit of inlining is that we can use these flags at the top level without affecting
5606
+ * tree-shaking (see "no-toplevel-property-access" tslint rule for more info).
5607
+ * Keep this enum in sync with `InjectFlags` enum above.
5608
+ */
5609
+ declare const enum InternalInjectFlags {
5610
+ /** Check self and check parent injector if needed */
5611
+ Default = 0,
5612
+ /**
5613
+ * Specifies that an injector should retrieve a dependency from any injector until reaching the
5614
+ * host element of the current component. (Only used with Element Injector)
5615
+ */
5616
+ Host = 1,
5617
+ /** Don't ascend to ancestors of the node requesting injection. */
5618
+ Self = 2,
5619
+ /** Skip the node that is requesting injection. */
5620
+ SkipSelf = 4,
5621
+ /** Inject `defaultValue` instead if token not found. */
5622
+ Optional = 8,
5623
+ /**
5624
+ * This token is being injected into a pipe.
5625
+ *
5626
+ * This flag is intentionally not in the public facing `InjectFlags` because it is only added by
5627
+ * the compiler and is not a developer applicable flag.
5628
+ */
5629
+ ForPipe = 16
5630
+ }
5631
+
5181
5632
  declare interface InternalNgModuleRef<T> extends NgModuleRef<T> {
5182
5633
  _bootstrapComponents: Type<any>[];
5183
5634
  }
@@ -5571,16 +6022,30 @@ declare enum LContainerFlags {
5571
6022
  *
5572
6023
  * This flag, once set, is never unset for the `LContainer`.
5573
6024
  */
5574
- HasTransplantedViews = 2,
5575
- /**
5576
- * Indicates that this LContainer has a view underneath it that needs to be refreshed during
5577
- * change detection.
5578
- */
5579
- HasChildViewsToRefresh = 4
6025
+ HasTransplantedViews = 2
5580
6026
  }
5581
6027
 
5582
6028
  declare type LegacyInputPartialMapping = string | [bindingPropertyName: string, classPropertyName: string, transformFunction?: Function];
5583
6029
 
6030
+ /**
6031
+ * Event listener configuration returned from `getListeners`.
6032
+ * @publicApi
6033
+ */
6034
+ declare interface Listener {
6035
+ /** Name of the event listener. */
6036
+ name: string;
6037
+ /** Element that the listener is bound to. */
6038
+ element: Element;
6039
+ /** Callback that is invoked when the event is triggered. */
6040
+ callback: (value: any) => any;
6041
+ /** Whether the listener is using event capturing. */
6042
+ useCapture: boolean;
6043
+ /**
6044
+ * Type of the listener (e.g. a native DOM event or a custom @Output).
6045
+ */
6046
+ type: 'dom' | 'output';
6047
+ }
6048
+
5584
6049
  /**
5585
6050
  * Provide this token to set the locale of your application.
5586
6051
  * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
@@ -6625,6 +7090,39 @@ export declare interface NgZoneOptions {
6625
7090
  */
6626
7091
  export declare const NO_ERRORS_SCHEMA: SchemaMetadata;
6627
7092
 
7093
+ /**
7094
+ * Store the runtime input for all directives applied to a node.
7095
+ *
7096
+ * This allows efficiently setting the same input on a directive that
7097
+ * might apply to multiple directives.
7098
+ *
7099
+ * i+0: directive instance index
7100
+ * i+1: privateName
7101
+ * i+2: input flags
7102
+ *
7103
+ * e.g.
7104
+ * ```
7105
+ * {
7106
+ * "publicName": [0, 'change-minified', <bit-input-flags>]
7107
+ * }
7108
+ * ```
7109
+ */
7110
+ declare type NodeInputBindings = Record<string, (number | string | ɵɵInputFlags)[]>;
7111
+
7112
+ /**
7113
+ * Store the runtime output names for all the directives.
7114
+ *
7115
+ * i+0: directive instance index
7116
+ * i+1: privateName
7117
+ *
7118
+ * e.g.
7119
+ * ```
7120
+ * {
7121
+ * "publicName": [0, 'change-minified']
7122
+ * }
7123
+ */
7124
+ declare type NodeOutputBindings = Record<string, (number | string)[]>;
7125
+
6628
7126
  declare const NODES = "n";
6629
7127
 
6630
7128
  declare const NUM_ROOT_NODES = "r";
@@ -7087,30 +7585,6 @@ declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
7087
7585
  */
7088
7586
  declare type ProjectionSlots = (ɵCssSelectorList | '*')[];
7089
7587
 
7090
- /**
7091
- * This mapping is necessary so we can set input properties and output listeners
7092
- * properly at runtime when property names are minified or aliased.
7093
- *
7094
- * Key: unminified / public input or output name
7095
- * Value: array containing minified / internal name and related directive index
7096
- *
7097
- * The value must be an array to support inputs and outputs with the same name
7098
- * on the same node.
7099
- */
7100
- declare type PropertyAliases = {
7101
- [key: string]: PropertyAliasValue;
7102
- };
7103
-
7104
- /**
7105
- * Store the runtime input or output names for all the directives.
7106
- *
7107
- * i+0: directive instance index
7108
- * i+1: privateName
7109
- *
7110
- * e.g. [0, 'change-minified']
7111
- */
7112
- declare type PropertyAliasValue = (number | string)[];
7113
-
7114
7588
  /**
7115
7589
  * Describes how the `Injector` should be configured.
7116
7590
  * @see ["Dependency Injection Guide"](guide/dependency-injection).
@@ -7903,6 +8377,8 @@ export declare interface RendererType2 {
7903
8377
  };
7904
8378
  }
7905
8379
 
8380
+ declare const REQUIRED_UNSET_VALUE: unique symbol;
8381
+
7906
8382
  /**
7907
8383
  * Lazily retrieves the reference value from a forwardRef.
7908
8384
  *
@@ -8249,6 +8725,11 @@ export declare interface SimpleChanges {
8249
8725
  [propName: string]: SimpleChange;
8250
8726
  }
8251
8727
 
8728
+ /**
8729
+ * Internal type for a single provider in a deep provider array.
8730
+ */
8731
+ declare type SingleProvider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | StaticClassProvider;
8732
+
8252
8733
  /**
8253
8734
  * Type of the `SkipSelf` metadata.
8254
8735
  *
@@ -8973,12 +9454,12 @@ declare interface TNode {
8973
9454
  * Input data for all directives on this node. `null` means that there are no directives with
8974
9455
  * inputs on this node.
8975
9456
  */
8976
- inputs: PropertyAliases | null;
9457
+ inputs: NodeInputBindings | null;
8977
9458
  /**
8978
9459
  * Output data for all directives on this node. `null` means that there are no directives with
8979
9460
  * outputs on this node.
8980
9461
  */
8981
- outputs: PropertyAliases | null;
9462
+ outputs: NodeOutputBindings | null;
8982
9463
  /**
8983
9464
  * The TView attached to this node.
8984
9465
  *
@@ -10622,17 +11103,10 @@ export declare function ɵ_sanitizeUrl(url: string): string;
10622
11103
  * Delegates to an optional `AfterRenderCallbackHandler` for implementation.
10623
11104
  */
10624
11105
  export declare class ɵAfterRenderEventManager {
10625
- private renderDepth;
10626
11106
  /**
10627
- * Mark the beginning of a render operation (i.e. CD cycle).
10628
- * Throws if called while executing callbacks.
11107
+ * Executes callbacks. Returns `true` if any callbacks executed.
10629
11108
  */
10630
- begin(): void;
10631
- /**
10632
- * Mark the end of a render operation. Callbacks will be
10633
- * executed if there are no more pending operations.
10634
- */
10635
- end(): void;
11109
+ execute(): boolean;
10636
11110
  ngOnDestroy(): void;
10637
11111
  /** @nocollapse */
10638
11112
  static ɵprov: unknown;
@@ -10917,6 +11391,22 @@ export declare function ɵcompileNgModuleFactory<M>(injector: Injector, options:
10917
11391
 
10918
11392
  export declare function ɵcompilePipe(type: Type<any>, meta: Pipe): void;
10919
11393
 
11394
+ /**
11395
+ * Partial metadata for a given component instance.
11396
+ * This information might be useful for debugging purposes or tooling.
11397
+ * Currently the following fields are available:
11398
+ * - inputs
11399
+ * - outputs
11400
+ * - encapsulation
11401
+ * - changeDetection
11402
+ *
11403
+ * @publicApi
11404
+ */
11405
+ export declare interface ɵComponentDebugMetadata extends DirectiveDebugMetadata {
11406
+ encapsulation: ViewEncapsulation;
11407
+ changeDetection: ChangeDetectionStrategy;
11408
+ }
11409
+
10920
11410
  /**
10921
11411
  * Runtime link information for Components.
10922
11412
  *
@@ -11192,12 +11682,11 @@ export declare function ɵdevModeEqual(a: any, b: any): boolean;
11192
11682
  */
11193
11683
  export declare interface ɵDirectiveDef<T> {
11194
11684
  /**
11195
- * A dictionary mapping the inputs' minified property names to their public API names, which
11196
- * are their aliases if any, or their original unminified property names
11197
- * (as in `@Input('alias') propertyName: any;`).
11685
+ * A dictionary mapping the inputs' public name to their minified property names
11686
+ * (along with flags if there are any).
11198
11687
  */
11199
11688
  readonly inputs: {
11200
- [P in keyof T]: string;
11689
+ [P in keyof T]?: string | [minifiedName: string, flags: ɵɵInputFlags];
11201
11690
  };
11202
11691
  /**
11203
11692
  * A dictionary mapping the private names of inputs to their transformation functions.
@@ -11215,22 +11704,20 @@ export declare interface ɵDirectiveDef<T> {
11215
11704
  * used to do further processing after the `inputs` have been inverted.
11216
11705
  */
11217
11706
  readonly inputConfig: {
11218
- [classPropertyName: string]: string | [string, string, InputTransformFunction?];
11707
+ [P in keyof T]?: string | [ɵɵInputFlags, string, string?, InputTransformFunction?];
11219
11708
  };
11220
11709
  /**
11221
11710
  * @deprecated This is only here because `NgOnChanges` incorrectly uses declared name instead of
11222
11711
  * public or minified name.
11223
11712
  */
11224
- readonly declaredInputs: {
11225
- [P in keyof T]: string;
11226
- };
11713
+ readonly declaredInputs: Record<string, string>;
11227
11714
  /**
11228
11715
  * A dictionary mapping the outputs' minified property names to their public API names, which
11229
11716
  * are their aliases if any, or their original unminified property names
11230
11717
  * (as in `@Output('alias') propertyName: any;`).
11231
11718
  */
11232
11719
  readonly outputs: {
11233
- [P in keyof T]: string;
11720
+ [P in keyof T]?: string;
11234
11721
  };
11235
11722
  /**
11236
11723
  * Function to create and refresh content queries associated with a given directive.
@@ -11328,7 +11815,7 @@ export declare interface ɵDirectiveDef<T> {
11328
11815
  findHostDirectiveDefs: ((currentDef: ɵDirectiveDef<unknown>, matchedDefs: ɵDirectiveDef<unknown>[], hostDirectiveDefs: HostDirectiveDefs) => void) | null;
11329
11816
  /** Additional directives to be applied whenever the directive has been matched. */
11330
11817
  hostDirectives: HostDirectiveDef[] | null;
11331
- setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, value: any, publicName: string, privateName: string) => void) | null;
11818
+ setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, inputSignalNode: null | InputSignalNode<unknown, unknown>, value: any, publicName: string, privateName: string) => void) | null;
11332
11819
  }
11333
11820
 
11334
11821
  /**
@@ -11511,6 +11998,13 @@ export declare function ɵgetUnknownPropertyStrictMode(): boolean;
11511
11998
 
11512
11999
  export declare const ɵglobal: any;
11513
12000
 
12001
+ /**
12002
+ * Default debug tools available under `window.ng`.
12003
+ */
12004
+ export declare type ɵGlobalDevModeUtils = {
12005
+ [GLOBAL_PUBLISH_EXPANDO_KEY]: typeof globalUtilsFunctions;
12006
+ };
12007
+
11514
12008
  /**
11515
12009
  * Injection token that configures the image optimized image functionality.
11516
12010
  * See {@link ImageConfig} for additional information about parameters that
@@ -11571,116 +12065,10 @@ export declare interface ɵInjectorProfilerContext {
11571
12065
  token: Type<unknown> | null;
11572
12066
  }
11573
12067
 
11574
- /**
11575
- * Initializes an input with an initial value. If no explicit value
11576
- * is specified, Angular will use `undefined`.
11577
- *
11578
- * Consider using `input.required` for inputs that don't need an
11579
- * initial value.
11580
- *
11581
- * @usageNotes
11582
- * Initialize an input in your directive or component by declaring a
11583
- * class field and initializing it with the `input()` function.
11584
- *
11585
- * ```ts
11586
- * @Directive({..})
11587
- * export class MyDir {
11588
- * firstName = input<string>(); // string|undefined
11589
- * lastName = input.required<string>(); // string
11590
- * age = input(0); // number
11591
- * }
11592
- * ```
11593
- */
11594
- export declare const ɵinput: ɵInputFunction;
11595
-
11596
12068
  declare const ɵINPUT_SIGNAL_BRAND_READ_TYPE: unique symbol;
11597
12069
 
11598
12070
  export declare const ɵINPUT_SIGNAL_BRAND_WRITE_TYPE: unique symbol;
11599
12071
 
11600
- /**
11601
- * Type of the `input` function.
11602
- *
11603
- * The input function is a special function that also provides access to
11604
- * required inputs via the `.required` property.
11605
- */
11606
- export declare type ɵInputFunction = typeof ɵinputFunctionForApiGuard & {
11607
- required: typeof ɵinputFunctionRequiredForApiGuard;
11608
- };
11609
-
11610
- /**
11611
- * Initializes an input with an initial value. If no explicit value
11612
- * is specified, Angular will use `undefined`.
11613
- *
11614
- * Consider using `input.required` for inputs that don't need an
11615
- * initial value.
11616
- *
11617
- * @usageNotes
11618
- * Initialize an input in your directive or component by declaring a
11619
- * class field and initializing it with the `input()` function.
11620
- *
11621
- * ```ts
11622
- * @Directive({..})
11623
- * export class MyDir {
11624
- * firstName = input<string>(); // string|undefined
11625
- * lastName = input.required<string>(); // string
11626
- * age = input(0); // number
11627
- * }
11628
- * ```
11629
- */
11630
- export declare function ɵinputFunctionForApiGuard<ReadT>(): InputSignal<ReadT | undefined>;
11631
-
11632
- export declare function ɵinputFunctionForApiGuard<ReadT>(initialValue: ReadT, opts?: ɵInputOptionsWithoutTransform<ReadT>): InputSignal<ReadT>;
11633
-
11634
- export declare function ɵinputFunctionForApiGuard<ReadT, WriteT>(initialValue: ReadT, opts: ɵInputOptionsWithTransform<ReadT, WriteT>): InputSignal<ReadT, WriteT>;
11635
-
11636
- /**
11637
- * Initializes a required input. Users of your directive/component,
11638
- * need to bind to this input, otherwise they will see errors.
11639
- * *
11640
- * @usageNotes
11641
- * Initialize an input in your directive or component by declaring a
11642
- * class field and initializing it with the `input()` function.
11643
- *
11644
- * ```ts
11645
- * @Directive({..})
11646
- * export class MyDir {
11647
- * firstName = input<string>(); // string|undefined
11648
- * lastName = input.required<string>(); // string
11649
- * age = input(0); // number
11650
- * }
11651
- * ```
11652
- */
11653
- export declare function ɵinputFunctionRequiredForApiGuard<ReadT>(opts?: ɵInputOptionsWithoutTransform<ReadT>): InputSignal<ReadT>;
11654
-
11655
- export declare function ɵinputFunctionRequiredForApiGuard<ReadT, WriteT>(opts: ɵInputOptionsWithTransform<ReadT, WriteT>): InputSignal<ReadT, WriteT>;
11656
-
11657
- /**
11658
- * Options for signal inputs.
11659
- */
11660
- export declare interface ɵInputOptions<ReadT, WriteT> {
11661
- /** Optional public name for the input. By default, the class field name is used. */
11662
- alias?: string;
11663
- /**
11664
- * Optional transform that runs whenever a new value is bound. Can be used to
11665
- * transform the input value before the input is updated.
11666
- *
11667
- * The transform function can widen the type of the input. For example, consider
11668
- * an input for `disabled`. In practice, as the component author, you want to only
11669
- * deal with a boolean, but users may want to bind a string if they just use the
11670
- * attribute form to bind to the input via `<my-dir input>`. A transform can then
11671
- * handle such string values and convert them to `boolean`. See: {@link booleanAttribute}.
11672
- */
11673
- transform?: (v: WriteT) => ReadT;
11674
- }
11675
-
11676
- /** Signal input options without the transform option. */
11677
- export declare type ɵInputOptionsWithoutTransform<ReadT> = Omit<ɵInputOptions<ReadT, ReadT>, 'transform'> & {
11678
- transform?: undefined;
11679
- };
11680
-
11681
- /** Signal input options with the transform option required. */
11682
- export declare type ɵInputOptionsWithTransform<ReadT, WriteT> = Required<Pick<ɵInputOptions<ReadT, WriteT>, 'transform'>> & ɵInputOptions<ReadT, WriteT>;
11683
-
11684
12072
  /**
11685
12073
  * Register a callback to run once before any userspace `afterRender` or
11686
12074
  * `afterNextRender` callbacks.
@@ -12117,18 +12505,30 @@ export declare const enum ɵProfilerEvent {
12117
12505
  }
12118
12506
 
12119
12507
  /**
12120
- * Publishes a collection of default debug tools onto`window.ng`.
12508
+ * An object that contains information about a provider that has been configured
12121
12509
  *
12122
- * These functions are available globally when Angular is in development
12123
- * mode and are automatically stripped away from prod mode is on.
12510
+ * TODO: rename to indicate that it is a debug structure eg. ProviderDebugInfo.
12124
12511
  */
12125
- export declare function ɵpublishDefaultGlobalUtils(): void;
12512
+ export declare interface ɵProviderRecord {
12513
+ /**
12514
+ * DI token that this provider is configuring
12515
+ */
12516
+ token: Type<unknown> | InjectionToken<unknown>;
12517
+ /**
12518
+ * Determines if provider is configured as view provider.
12519
+ */
12520
+ isViewProvider: boolean;
12521
+ /**
12522
+ * The raw provider associated with this ProviderRecord.
12523
+ */
12524
+ provider: SingleProvider;
12525
+ /**
12526
+ * The path of DI containers that were followed to import this provider
12527
+ */
12528
+ importPath?: Type<unknown>[];
12529
+ }
12126
12530
 
12127
- /**
12128
- * Publishes the given function to `window.ng` so that it can be
12129
- * used from the browser console when an application is not in production.
12130
- */
12131
- export declare function ɵpublishGlobalUtil(name: string, fn: Function): void;
12531
+ export declare function ɵprovideZonelessChangeDetection(): EnvironmentProviders;
12132
12532
 
12133
12533
  export declare class ɵReflectionCapabilities implements PlatformReflectionCapabilities {
12134
12534
  private _reflect;
@@ -12333,7 +12733,6 @@ export declare class ɵRuntimeError<T extends number = ɵRuntimeErrorCode> exten
12333
12733
  export declare const enum ɵRuntimeErrorCode {
12334
12734
  EXPRESSION_CHANGED_AFTER_CHECKED = -100,
12335
12735
  RECURSIVE_APPLICATION_REF_TICK = 101,
12336
- RECURSIVE_APPLICATION_RENDER = 102,
12337
12736
  INFINITE_CHANGE_DETECTION = 103,
12338
12737
  CYCLIC_DI_DEPENDENCY = -200,
12339
12738
  PROVIDER_NOT_FOUND = -201,
@@ -12396,6 +12795,7 @@ export declare const enum ɵRuntimeErrorCode {
12396
12795
  VIEW_ALREADY_DESTROYED = 911,
12397
12796
  COMPONENT_ID_COLLISION = -912,
12398
12797
  IMAGE_PERFORMANCE_WARNING = -913,
12798
+ REQUIRED_INPUT_NO_VALUE = -950,
12399
12799
  RUNTIME_DEPS_INVALID_IMPORTED_TYPE = 1000,
12400
12800
  RUNTIME_DEPS_ORPHAN_COMPONENT = 1001
12401
12801
  }
@@ -12920,7 +13320,7 @@ export declare class ɵZoneAwareQueueingScheduler implements ɵEffectScheduler,
12920
13320
  *
12921
13321
  * @codeGenApi
12922
13322
  */
12923
- export declare function ɵɵadvance(delta: number): void;
13323
+ export declare function ɵɵadvance(delta?: number): void;
12924
13324
 
12925
13325
  /**
12926
13326
  * Updates the value of or removes a bound attribute on an Element.
@@ -14311,6 +14711,13 @@ export declare interface ɵɵInjectorDef<T> {
14311
14711
  imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[];
14312
14712
  }
14313
14713
 
14714
+ /** Flags describing an input for a directive. */
14715
+ export declare enum ɵɵInputFlags {
14716
+ None = 0,
14717
+ SignalBased = 1,
14718
+ HasDecoratorInputTransform = 2
14719
+ }
14720
+
14314
14721
  /**
14315
14722
  * Decorates the directive definition with support for input transform functions.
14316
14723
  *
@@ -14319,7 +14726,7 @@ export declare interface ɵɵInjectorDef<T> {
14319
14726
  *
14320
14727
  * @codeGenApi
14321
14728
  */
14322
- export declare function ɵɵInputTransformsFeature(definition: ɵDirectiveDef<unknown>): void;
14729
+ export declare function ɵɵInputTransformsFeature<T>(definition: ɵDirectiveDef<T>): void;
14323
14730
 
14324
14731
  /**
14325
14732
  * Throws an error indicating that a factory function could not be generated by the compiler for a