@angular/core 17.0.0-next.2 → 17.0.0-next.3

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 (47) hide show
  1. package/esm2022/src/core_render3_private_export.mjs +2 -2
  2. package/esm2022/src/hydration/annotate.mjs +9 -6
  3. package/esm2022/src/hydration/cleanup.mjs +2 -2
  4. package/esm2022/src/linker/template_ref.mjs +3 -3
  5. package/esm2022/src/linker/view_container_ref.mjs +80 -25
  6. package/esm2022/src/render3/after_render_hooks.mjs +69 -41
  7. package/esm2022/src/render3/component.mjs +4 -3
  8. package/esm2022/src/render3/di.mjs +1 -1
  9. package/esm2022/src/render3/index.mjs +2 -2
  10. package/esm2022/src/render3/instructions/all.mjs +2 -1
  11. package/esm2022/src/render3/instructions/change_detection.mjs +5 -6
  12. package/esm2022/src/render3/instructions/component_instance.mjs +23 -0
  13. package/esm2022/src/render3/instructions/control_flow.mjs +20 -4
  14. package/esm2022/src/render3/instructions/defer.mjs +100 -39
  15. package/esm2022/src/render3/instructions/shared.mjs +20 -14
  16. package/esm2022/src/render3/interfaces/defer.mjs +1 -1
  17. package/esm2022/src/render3/interfaces/injector.mjs +1 -1
  18. package/esm2022/src/render3/interfaces/node.mjs +16 -1
  19. package/esm2022/src/render3/interfaces/styling.mjs +4 -7
  20. package/esm2022/src/render3/jit/environment.mjs +2 -1
  21. package/esm2022/src/render3/node_manipulation.mjs +4 -3
  22. package/esm2022/src/render3/reactive_lview_consumer.mjs +25 -45
  23. package/esm2022/src/render3/reactivity/effect.mjs +8 -8
  24. package/esm2022/src/render3/util/injector_utils.mjs +1 -1
  25. package/esm2022/src/render3/view_manipulation.mjs +13 -2
  26. package/esm2022/src/signals/index.mjs +4 -4
  27. package/esm2022/src/signals/src/api.mjs +2 -11
  28. package/esm2022/src/signals/src/computed.mjs +43 -93
  29. package/esm2022/src/signals/src/graph.mjs +238 -162
  30. package/esm2022/src/signals/src/signal.mjs +59 -79
  31. package/esm2022/src/signals/src/watch.mjs +38 -52
  32. package/esm2022/src/signals/src/weak_ref.mjs +2 -29
  33. package/esm2022/src/util/security/trusted_type_defs.mjs +1 -1
  34. package/esm2022/src/util/security/trusted_types.mjs +1 -1
  35. package/esm2022/src/version.mjs +1 -1
  36. package/esm2022/src/zone/ng_zone.mjs +16 -1
  37. package/esm2022/testing/src/logger.mjs +3 -3
  38. package/fesm2022/core.mjs +1977 -1815
  39. package/fesm2022/core.mjs.map +1 -1
  40. package/fesm2022/rxjs-interop.mjs +1 -1
  41. package/fesm2022/testing.mjs +1 -1
  42. package/index.d.ts +143 -125
  43. package/package.json +1 -1
  44. package/rxjs-interop/index.d.ts +1 -1
  45. package/schematics/ng-generate/standalone-migration/bundle.js +192 -53
  46. package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
  47. package/testing/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.2
2
+ * @license Angular v17.0.0-next.3
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.2
2
+ * @license Angular v17.0.0-next.3
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.2
2
+ * @license Angular v17.0.0-next.3
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -164,16 +164,6 @@ export declare function afterNextRender(callback: VoidFunction, options?: AfterR
164
164
  */
165
165
  export declare function afterRender(callback: VoidFunction, options?: AfterRenderOptions): AfterRenderRef;
166
166
 
167
- /**
168
- * A wrapper around a function to be used as an after render callback.
169
- * @private
170
- */
171
- declare class AfterRenderCallback {
172
- private callback;
173
- constructor(callback: VoidFunction);
174
- invoke(): void;
175
- }
176
-
177
167
  /**
178
168
  * Options passed to `afterRender` and `afterNextRender`.
179
169
  *
@@ -1942,17 +1932,18 @@ declare const CONTEXT = 8;
1942
1932
  * const applicationRef = await bootstrapApplication(RootComponent);
1943
1933
  *
1944
1934
  * // Locate a DOM node that would be used as a host.
1945
- * const host = document.getElementById('hello-component-host');
1935
+ * const hostElement = document.getElementById('hello-component-host');
1946
1936
  *
1947
1937
  * // Get an `EnvironmentInjector` instance from the `ApplicationRef`.
1948
1938
  * const environmentInjector = applicationRef.injector;
1949
1939
  *
1950
1940
  * // We can now create a `ComponentRef` instance.
1951
- * const componentRef = createComponent(HelloComponent, {host, environmentInjector});
1941
+ * const componentRef = createComponent(HelloComponent, {hostElement, environmentInjector});
1952
1942
  *
1953
1943
  * // Last step is to register the newly created ref using the `ApplicationRef` instance
1954
1944
  * // to include the component view into change detection cycles.
1955
1945
  * applicationRef.attachView(componentRef.hostView);
1946
+ * componentRef.changeDetectorRef.detectChanges();
1956
1947
  * ```
1957
1948
  *
1958
1949
  * @param component Component class reference.
@@ -2412,12 +2403,14 @@ export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, Iter
2412
2403
  declare const enum DeferDependenciesLoadingState {
2413
2404
  /** Initial state, dependency loading is not yet triggered */
2414
2405
  NOT_STARTED = 0,
2406
+ /** Dependency loading was scheduled (e.g. `on idle`), but has not started yet */
2407
+ SCHEDULED = 1,
2415
2408
  /** Dependency loading is in progress */
2416
- IN_PROGRESS = 1,
2409
+ IN_PROGRESS = 2,
2417
2410
  /** Dependency loading has completed successfully */
2418
- COMPLETE = 2,
2411
+ COMPLETE = 3,
2419
2412
  /** Dependency loading has failed */
2420
- FAILED = 3
2413
+ FAILED = 4
2421
2414
  }
2422
2415
 
2423
2416
  /** Configuration object for a `{:loading}` block as it is stored in the component constants. */
@@ -7375,116 +7368,94 @@ declare const REACTIVE_HOST_BINDING_CONSUMER = 24;
7375
7368
 
7376
7369
  declare const REACTIVE_TEMPLATE_CONSUMER = 23;
7377
7370
 
7378
- declare class ReactiveLViewConsumer extends ReactiveNode {
7379
- protected consumerAllowSignalWrites: boolean;
7380
- private _lView;
7381
- set lView(lView: LView);
7382
- protected onConsumerDependencyMayHaveChanged(): void;
7383
- protected onProducerUpdateValueVersion(): void;
7384
- get hasReadASignal(): boolean;
7385
- runInContext(fn: HostBindingsFunction<unknown> | ComponentTemplate<unknown>, rf: ɵRenderFlags, ctx: unknown): void;
7386
- destroy(): void;
7371
+ declare interface ReactiveLViewConsumer extends ReactiveNode {
7372
+ lView: LView | null;
7387
7373
  }
7388
7374
 
7389
7375
  /**
7390
- * A node in the reactive graph.
7376
+ * A producer and/or consumer which participates in the reactive graph.
7391
7377
  *
7392
- * Nodes can be producers of reactive values, consumers of other reactive values, or both.
7378
+ * Producer `ReactiveNode`s which are accessed when a consumer `ReactiveNode` is the
7379
+ * `activeConsumer` are tracked as dependencies of that consumer.
7393
7380
  *
7394
- * Producers are nodes that produce values, and can be depended upon by consumer nodes.
7381
+ * Certain consumers are also tracked as "live" consumers and create edges in the other direction,
7382
+ * from producer to consumer. These edges are used to propagate change notifications when a
7383
+ * producer's value is updated.
7395
7384
  *
7396
- * Producers expose a monotonic `valueVersion` counter, and are responsible for incrementing this
7397
- * version when their value semantically changes. Some producers may produce their values lazily and
7398
- * thus at times need to be polled for potential updates to their value (and by extension their
7399
- * `valueVersion`). This is accomplished via the `onProducerUpdateValueVersion` method for
7400
- * implemented by producers, which should perform whatever calculations are necessary to ensure
7401
- * `valueVersion` is up to date.
7402
- *
7403
- * Consumers are nodes that depend on the values of producers and are notified when those values
7404
- * might have changed.
7405
- *
7406
- * Consumers do not wrap the reads they consume themselves, but rather can be set as the active
7407
- * reader via `setActiveConsumer`. Reads of producers that happen while a consumer is active will
7408
- * result in those producers being added as dependencies of that consumer node.
7409
- *
7410
- * The set of dependencies of a consumer is dynamic. Implementers expose a monotonically increasing
7411
- * `trackingVersion` counter, which increments whenever the consumer is about to re-run any reactive
7412
- * reads it needs and establish a new set of dependencies as a result.
7413
- *
7414
- * Producers store the last `trackingVersion` they've seen from `Consumer`s which have read them.
7415
- * This allows a producer to identify whether its record of the dependency is current or stale, by
7416
- * comparing the consumer's `trackingVersion` to the version at which the dependency was
7417
- * last observed.
7385
+ * A `ReactiveNode` may be both a producer and consumer.
7418
7386
  */
7419
- declare abstract class ReactiveNode {
7420
- private readonly id;
7387
+ declare interface ReactiveNode {
7421
7388
  /**
7422
- * A cached weak reference to this node, which will be used in `ReactiveEdge`s.
7423
- */
7424
- private readonly ref;
7425
- /**
7426
- * Edges to producers on which this node depends (in its consumer capacity).
7427
- */
7428
- private readonly producers;
7429
- /**
7430
- * Edges to consumers on which this node depends (in its producer capacity).
7431
- */
7432
- private readonly consumers;
7433
- /**
7434
- * Monotonically increasing counter representing a version of this `Consumer`'s
7435
- * dependencies.
7436
- */
7437
- protected trackingVersion: number;
7438
- /**
7439
- * Monotonically increasing counter which increases when the value of this `Producer`
7440
- * semantically changes.
7389
+ * Version of the value that this node produces.
7390
+ *
7391
+ * This is incremented whenever a new value is produced by this node which is not equal to the
7392
+ * previous value (by whatever definition of equality is in use).
7441
7393
  */
7442
- protected valueVersion: number;
7394
+ version: Version_2;
7443
7395
  /**
7444
- * Whether signal writes should be allowed while this `ReactiveNode` is the current consumer.
7396
+ * Whether this node (in its consumer capacity) is dirty.
7397
+ *
7398
+ * Only live consumers become dirty, when receiving a change notification from a dependency
7399
+ * producer.
7445
7400
  */
7446
- protected abstract readonly consumerAllowSignalWrites: boolean;
7401
+ dirty: boolean;
7447
7402
  /**
7448
- * Called for consumers whenever one of their dependencies notifies that it might have a new
7449
- * value.
7403
+ * Producers which are dependencies of this consumer.
7404
+ *
7405
+ * Uses the same indices as the `producerLastReadVersion` and `producerIndexOfThis` arrays.
7450
7406
  */
7451
- protected abstract onConsumerDependencyMayHaveChanged(): void;
7407
+ producerNode: ReactiveNode[] | undefined;
7452
7408
  /**
7453
- * Called for producers when a dependent consumer is checking if the producer's value has actually
7454
- * changed.
7409
+ * `Version` of the value last read by a given producer.
7410
+ *
7411
+ * Uses the same indices as the `producerNode` and `producerIndexOfThis` arrays.
7455
7412
  */
7456
- protected abstract onProducerUpdateValueVersion(): void;
7413
+ producerLastReadVersion: Version_2[] | undefined;
7457
7414
  /**
7458
- * Polls dependencies of a consumer to determine if they have actually changed.
7415
+ * Index of `this` (consumer) in each producer's `liveConsumers` array.
7459
7416
  *
7460
- * If this returns `false`, then even though the consumer may have previously been notified of a
7461
- * change, the values of its dependencies have not actually changed and the consumer should not
7462
- * rerun any reactions.
7417
+ * This value is only meaningful if this node is live (`liveConsumers.length > 0`). Otherwise
7418
+ * these indices are stale.
7419
+ *
7420
+ * Uses the same indices as the `producerNode` and `producerLastReadVersion` arrays.
7463
7421
  */
7464
- protected consumerPollProducersForChange(): boolean;
7422
+ producerIndexOfThis: number[] | undefined;
7465
7423
  /**
7466
- * Notify all consumers of this producer that its value may have changed.
7424
+ * Index into the producer arrays that the next dependency of this node as a consumer will use.
7425
+ *
7426
+ * This index is zeroed before this node as a consumer begins executing. When a producer is read,
7427
+ * it gets inserted into the producers arrays at this index. There may be an existing dependency
7428
+ * in this location which may or may not match the incoming producer, depending on whether the
7429
+ * same producers were read in the same order as the last computation.
7467
7430
  */
7468
- protected producerMayHaveChanged(): void;
7431
+ nextProducerIndex: number;
7469
7432
  /**
7470
- * Mark that this producer node has been accessed in the current reactive context.
7433
+ * Array of consumers of this producer that are "live" (they require push notifications).
7434
+ *
7435
+ * `liveConsumerNode.length` is effectively our reference count for this node.
7471
7436
  */
7472
- protected producerAccessed(): void;
7437
+ liveConsumerNode: ReactiveNode[] | undefined;
7473
7438
  /**
7474
- * Whether this consumer currently has any producers registered.
7439
+ * Index of `this` (producer) in each consumer's `producerNode` array.
7440
+ *
7441
+ * Uses the same indices as the `liveConsumerNode` array.
7475
7442
  */
7476
- protected get hasProducers(): boolean;
7443
+ liveConsumerIndexOfThis: number[] | undefined;
7477
7444
  /**
7478
- * Whether this `ReactiveNode` in its producer capacity is currently allowed to initiate updates,
7479
- * based on the current consumer context.
7445
+ * Whether writes to signals are allowed when this consumer is the `activeConsumer`.
7446
+ *
7447
+ * This is used to enforce guardrails such as preventing writes to writable signals in the
7448
+ * computation function of computed signals, which is supposed to be pure.
7480
7449
  */
7481
- protected get producerUpdatesAllowed(): boolean;
7450
+ consumerAllowSignalWrites: boolean;
7451
+ readonly consumerIsAlwaysLive: boolean;
7482
7452
  /**
7483
- * Checks if a `Producer` has a current value which is different than the value
7484
- * last seen at a specific version by a `Consumer` which recorded a dependency on
7485
- * this `Producer`.
7453
+ * Tracks whether producers need to recompute their value independently of the reactive graph (for
7454
+ * example, if no initial value has been computed).
7486
7455
  */
7487
- private producerPollStatus;
7456
+ producerMustRecompute(node: unknown): boolean;
7457
+ producerRecomputeValue(node: unknown): void;
7458
+ consumerMarkedDirty(node: unknown): void;
7488
7459
  }
7489
7460
 
7490
7461
  /**
@@ -9536,17 +9507,17 @@ export declare const TRANSLATIONS_FORMAT: InjectionToken<string>;
9536
9507
  * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/trusted-types/index.d.ts
9537
9508
  * but restricted to the API surface used within Angular.
9538
9509
  */
9539
- declare interface TrustedHTML {
9510
+ declare type TrustedHTML = string & {
9540
9511
  __brand__: 'TrustedHTML';
9541
- }
9512
+ };
9542
9513
 
9543
- declare interface TrustedScript {
9514
+ declare type TrustedScript = string & {
9544
9515
  __brand__: 'TrustedScript';
9545
- }
9516
+ };
9546
9517
 
9547
- declare interface TrustedScriptURL {
9518
+ declare type TrustedScriptURL = string & {
9548
9519
  __brand__: 'TrustedScriptURL';
9549
- }
9520
+ };
9550
9521
 
9551
9522
  /**
9552
9523
  * Value stored in the `TData` which is needed to re-concatenate the styling.
@@ -9595,9 +9566,9 @@ declare type TStylingKeyPrimitive = string | null | false;
9595
9566
  *
9596
9567
  * NOTE: `0` has special significance and represents `null` as in no additional pointer.
9597
9568
  */
9598
- declare interface TStylingRange {
9569
+ declare type TStylingRange = number & {
9599
9570
  __brand__: 'TStylingRange';
9600
- }
9571
+ };
9601
9572
 
9602
9573
  /**
9603
9574
  * Store the static values for the styling binding.
@@ -10080,6 +10051,10 @@ export declare class Version {
10080
10051
  constructor(full: string);
10081
10052
  }
10082
10053
 
10054
+ declare type Version_2 = number & {
10055
+ __brand: 'Version';
10056
+ };
10057
+
10083
10058
  declare const VIEW_REFS = 8;
10084
10059
 
10085
10060
  /**
@@ -10262,6 +10237,40 @@ export declare interface ViewChildrenDecorator {
10262
10237
  * A view container instance can contain other view containers,
10263
10238
  * creating a [view hierarchy](guide/glossary#view-hierarchy).
10264
10239
  *
10240
+ * @usageNotes
10241
+ *
10242
+ * The example below demonstrates how the `createComponent` function can be used
10243
+ * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,
10244
+ * so that it gets included into change detection cycles.
10245
+ *
10246
+ * Note: the example uses standalone components, but the function can also be used for
10247
+ * non-standalone components (declared in an NgModule) as well.
10248
+ *
10249
+ * ```typescript
10250
+ * @Component({
10251
+ * standalone: true,
10252
+ * selector: 'dynamic',
10253
+ * template: `<span>This is a content of a dynamic component.</span>`,
10254
+ * })
10255
+ * class DynamicComponent {
10256
+ * vcr = inject(ViewContainerRef);
10257
+ * }
10258
+ *
10259
+ * @Component({
10260
+ * standalone: true,
10261
+ * selector: 'app',
10262
+ * template: `<main>Hi! This is the main content.</main>`,
10263
+ * })
10264
+ * class AppComponent {
10265
+ * vcr = inject(ViewContainerRef);
10266
+ *
10267
+ * ngAfterViewInit() {
10268
+ * const compRef = this.vcr.createComponent(DynamicComponent);
10269
+ * compRef.changeDetectorRef.detectChanges();
10270
+ * }
10271
+ * }
10272
+ * ```
10273
+ *
10265
10274
  * @see {@link ComponentRef}
10266
10275
  * @see {@link EmbeddedViewRef}
10267
10276
  *
@@ -10500,14 +10509,6 @@ declare interface ViewRefTracker {
10500
10509
  detachView(viewRef: ViewRef): void;
10501
10510
  }
10502
10511
 
10503
- declare interface WeakRef<T extends object> {
10504
- deref(): T | undefined;
10505
- }
10506
-
10507
- declare interface WeakRefCtor {
10508
- new <T extends object>(value: T): WeakRef<T>;
10509
- }
10510
-
10511
10512
  /**
10512
10513
  * A `Signal` with a value that can be mutated via a setter interface.
10513
10514
  *
@@ -10546,25 +10547,21 @@ export declare function ɵ_sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string
10546
10547
  export declare function ɵ_sanitizeUrl(url: string): string;
10547
10548
 
10548
10549
  /**
10549
- * Implements `afterRender` and `afterNextRender` callback manager logic.
10550
+ * Implements core timing for `afterRender` and `afterNextRender` events.
10551
+ * Delegates to an optional `AfterRenderCallbackHandler` for implementation.
10550
10552
  */
10551
10553
  export declare class ɵAfterRenderEventManager {
10552
- private callbacks;
10553
- private deferredCallbacks;
10554
10554
  private renderDepth;
10555
- private runningCallbacks;
10556
10555
  /**
10557
10556
  * Mark the beginning of a render operation (i.e. CD cycle).
10558
- * Throws if called from an `afterRender` callback.
10557
+ * Throws if called while executing callbacks.
10559
10558
  */
10560
10559
  begin(): void;
10561
10560
  /**
10562
- * Mark the end of a render operation. Registered callbacks
10563
- * are invoked if there are no more pending operations.
10561
+ * Mark the end of a render operation. Callbacks will be
10562
+ * executed if there are no more pending operations.
10564
10563
  */
10565
10564
  end(): void;
10566
- register(callback: AfterRenderCallback): void;
10567
- unregister(callback: AfterRenderCallback): void;
10568
10565
  ngOnDestroy(): void;
10569
10566
  /** @nocollapse */
10570
10567
  static ɵprov: unknown;
@@ -12094,7 +12091,8 @@ export declare interface ɵSafeValue {
12094
12091
  */
12095
12092
  export declare function ɵsetAllowDuplicateNgModuleIdsForTest(allowDuplicates: boolean): void;
12096
12093
 
12097
- export declare function ɵsetAlternateWeakRefImpl(impl: WeakRefCtor): void;
12094
+
12095
+ export declare function ɵsetAlternateWeakRefImpl(impl: unknown): void;
12098
12096
 
12099
12097
  /**
12100
12098
  * Adds decorator, constructor, and property metadata to a given type via static metadata fields
@@ -13099,6 +13097,15 @@ export declare type ɵɵComponentDeclaration<T, Selector extends String, ExportA
13099
13097
  [key: string]: string;
13100
13098
  }, QueryFields extends string[], NgContentSelectors extends string[], IsStandalone extends boolean = false, HostDirectives = never, IsSignal extends boolean = false> = unknown;
13101
13099
 
13100
+ /**
13101
+ * Instruction that returns the component instance in which the current instruction is executing.
13102
+ * This is a constant-time version of `nextContent` for the case where we know that we need the
13103
+ * component instance specifically, rather than the context of a particular template.
13104
+ *
13105
+ * @codeGenApi
13106
+ */
13107
+ export declare function ɵɵcomponentInstance(): unknown;
13108
+
13102
13109
  /**
13103
13110
  * The conditional instruction represents the basic building block on the runtime side to support
13104
13111
  * built-in "if" and "switch". On the high level this instruction is responsible for adding and
@@ -14808,9 +14815,20 @@ export declare function ɵɵrepeater(metadataSlotIdx: number, collection: Iterab
14808
14815
  * - LView[HEADER_OFFSET + index + 2] - optional reference to a template function rendering an empty
14809
14816
  * block
14810
14817
  *
14818
+ * @param index Index at which to store the metadata of the repeater.
14819
+ * @param templateFn Reference to the template of the main repeater block.
14820
+ * @param decls The number of nodes, local refs, and pipes for the main block.
14821
+ * @param vars The number of bindings for the main block.
14822
+ * @param trackByFn Reference to the tracking function.
14823
+ * @param trackByUsesComponentInstance Whether the tracking function has any references to the
14824
+ * component instance. If it doesn't, we can avoid rebinding it.
14825
+ * @param emptyTemplateFn Reference to the template function of the empty block.
14826
+ * @param emptyDecls The number of nodes, local refs, and pipes for the empty block.
14827
+ * @param emptyVars The number of bindings for the empty block.
14828
+ *
14811
14829
  * @codeGenApi
14812
14830
  */
14813
- export declare function ɵɵrepeaterCreate(index: number, templateFn: ComponentTemplate<unknown>, decls: number, vars: number, trackByFn: TrackByFunction<unknown>, emptyTemplateFn?: ComponentTemplate<unknown>, emptyDecls?: number, emptyVars?: number): void;
14831
+ export declare function ɵɵrepeaterCreate(index: number, templateFn: ComponentTemplate<unknown>, decls: number, vars: number, trackByFn: TrackByFunction<unknown>, trackByUsesComponentInstance?: boolean, emptyTemplateFn?: ComponentTemplate<unknown>, emptyDecls?: number, emptyVars?: number): void;
14814
14832
 
14815
14833
  /**
14816
14834
  * A built-in trackBy function used for situations where users specified collection item reference
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "17.0.0-next.2",
3
+ "version": "17.0.0-next.3",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.2
2
+ * @license Angular v17.0.0-next.3
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */