@angular/core 20.0.0-next.7 → 20.0.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{api.d-KjtSQajV.d.ts → api.d-B58KU5QT.d.ts} +25 -40
- package/chrome_dev_tools_performance.d-qv7drdAl.d.ts +1 -1
- package/{discovery.d-D6xf1HH-.d.ts → discovery.d-BCmtv8-u.d.ts} +21 -7
- package/event_dispatcher.d-DlbccpYq.d.ts +1 -1
- package/fesm2022/attribute-BWp59EjE.mjs +1 -1
- package/fesm2022/core.mjs +60 -159
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/{debug_node-B3CixwNH.mjs → debug_node-sP8Ihhla.mjs} +191 -56
- package/fesm2022/debug_node-sP8Ihhla.mjs.map +1 -0
- package/fesm2022/primitives/di.mjs +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/signals.mjs +4 -4
- package/fesm2022/{resource-DtpS_sTw.mjs → resource-aJC_NNLX.mjs} +29 -76
- package/fesm2022/resource-aJC_NNLX.mjs.map +1 -0
- package/fesm2022/{root_effect_scheduler-BK3l7wIO.mjs → root_effect_scheduler-C95A9imp.mjs} +25 -10
- package/fesm2022/root_effect_scheduler-C95A9imp.mjs.map +1 -0
- package/fesm2022/rxjs-interop.mjs +12 -7
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/{signal-B6pMq7KS.mjs → signal-CVVPheSN.mjs} +13 -3
- package/fesm2022/{signal-B6pMq7KS.mjs.map → signal-CVVPheSN.mjs.map} +1 -1
- package/fesm2022/testing.mjs +40 -21
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/{untracked-Bz5WMeU1.mjs → untracked-BLZYODu2.mjs} +3 -3
- package/fesm2022/{untracked-Bz5WMeU1.mjs.map → untracked-BLZYODu2.mjs.map} +1 -1
- package/fesm2022/weak_ref-BaIq-pgY.mjs +1 -1
- package/graph.d-BcIOep_B.d.ts +1 -1
- package/index.d.ts +190 -127
- package/package.json +2 -2
- package/primitives/di/index.d.ts +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +3 -3
- package/rxjs-interop/index.d.ts +4 -4
- package/schematics/bundles/{apply_import_manager-DczRKpTm.js → apply_import_manager-CxaTw_Wy.js} +3 -3
- package/schematics/bundles/{change_tracker-CWLh-wes.js → change_tracker-CkPYZ_km.js} +3 -3
- package/schematics/bundles/{checker-_f5wM7PH.js → checker-Crz1jSZM.js} +389 -122
- package/schematics/bundles/cleanup-unused-imports.js +6 -6
- package/schematics/bundles/{compiler-BaCbbux6.js → compiler-B4MK7BP9.js} +193 -88
- package/schematics/bundles/compiler_host-CAfDJO3W.js +1 -1
- package/schematics/bundles/control-flow-migration.js +2 -2
- package/schematics/bundles/document-core.js +6 -6
- package/schematics/bundles/imports-CIX-JgAN.js +1 -1
- package/schematics/bundles/{index--W6S49uu.js → index-BbZ6cSR1.js} +6 -5
- package/schematics/bundles/{index-rsJ8I_hu.js → index-Bk_3geTg.js} +463 -327
- package/schematics/bundles/inject-flags.js +6 -6
- package/schematics/bundles/inject-migration.js +14 -11
- package/schematics/bundles/leading_space-D9nQ8UQC.js +1 -1
- package/schematics/bundles/{migrate_ts_type_references-C4D_SzJk.js → migrate_ts_type_references-D6T3FlkH.js} +7 -6
- package/schematics/bundles/ng_decorators-DznZ5jMl.js +1 -1
- package/schematics/bundles/nodes-B16H9JUd.js +1 -1
- package/schematics/bundles/output-migration.js +7 -7
- package/schematics/bundles/{project_paths-Ce0O2u-M.js → project_paths-CQ4-VKlW.js} +4 -4
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.js +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.js +1 -1
- package/schematics/bundles/route-lazy-loading.js +4 -4
- package/schematics/bundles/self-closing-tags-migration.js +5 -5
- package/schematics/bundles/signal-input-migration.js +8 -8
- package/schematics/bundles/signal-queries-migration.js +8 -8
- package/schematics/bundles/signals.js +8 -8
- package/schematics/bundles/standalone-migration.js +5 -5
- package/schematics/bundles/symbol-VPWguRxr.js +1 -1
- package/schematics/bundles/test-bed-get.js +5 -5
- package/{signal.d-E0e5nW1p.d.ts → signal.d-D6VJ67xi.d.ts} +8 -2
- package/testing/index.d.ts +12 -9
- package/weak_ref.d-eGOEP9S1.d.ts +1 -1
- package/fesm2022/debug_node-B3CixwNH.mjs.map +0 -1
- package/fesm2022/resource-DtpS_sTw.mjs.map +0 -1
- package/fesm2022/root_effect_scheduler-BK3l7wIO.mjs.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.0-next.
|
|
2
|
+
* @license Angular v20.0.0-next.9
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { consumerMarkDirty, SIGNAL, consumerDestroy, isInNotificationPhase, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation, REACTIVE_NODE } from '../signal-
|
|
8
|
-
export { SIGNAL_NODE, createComputed, createSignal, defaultEquals, getActiveConsumer, isReactive, producerAccessed, producerIncrementEpoch, producerMarkClean, producerNotifyConsumers, producerUpdateValueVersion, producerUpdatesAllowed, runPostProducerCreatedFn, runPostSignalSetFn, setActiveConsumer, setPostProducerCreatedFn, setPostSignalSetFn, setThrowInvalidWriteToSignalError, signalGetFn, signalSetFn, signalUpdateFn } from '../signal-
|
|
9
|
-
export { createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn, untracked } from '../untracked-
|
|
7
|
+
import { consumerMarkDirty, SIGNAL, consumerDestroy, isInNotificationPhase, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation, REACTIVE_NODE } from '../signal-CVVPheSN.mjs';
|
|
8
|
+
export { SIGNAL_NODE, createComputed, createSignal, createSignalTuple, defaultEquals, getActiveConsumer, isReactive, producerAccessed, producerIncrementEpoch, producerMarkClean, producerNotifyConsumers, producerUpdateValueVersion, producerUpdatesAllowed, runPostProducerCreatedFn, runPostSignalSetFn, setActiveConsumer, setPostProducerCreatedFn, setPostSignalSetFn, setThrowInvalidWriteToSignalError, signalGetFn, signalSetFn, signalUpdateFn } from '../signal-CVVPheSN.mjs';
|
|
9
|
+
export { createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn, untracked } from '../untracked-BLZYODu2.mjs';
|
|
10
10
|
export { setAlternateWeakRefImpl } from '../weak_ref-BaIq-pgY.mjs';
|
|
11
11
|
|
|
12
12
|
function createWatch(fn, schedule, allowSignalWrites) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.0-next.
|
|
2
|
+
* @license Angular v20.0.0-next.9
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { inject, RuntimeError, formatRuntimeError, ErrorHandler, DestroyRef, assertNotInReactiveContext, assertInInjectionContext, Injector, ViewContext, ChangeDetectionScheduler, EffectScheduler, setInjectorProfilerContext, emitEffectCreatedEvent, EFFECTS, noop, FLAGS, markAncestorsForTraversal, setIsRefreshingViews, NodeInjectorDestroyRef,
|
|
8
|
-
import { setActiveConsumer, createComputed, SIGNAL, REACTIVE_NODE, consumerDestroy, isInNotificationPhase, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation } from './signal-
|
|
9
|
-
import { untracked as untracked$1, createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn } from './untracked-
|
|
7
|
+
import { inject, RuntimeError, formatRuntimeError, ErrorHandler, DestroyRef, assertNotInReactiveContext, assertInInjectionContext, Injector, ViewContext, ChangeDetectionScheduler, EffectScheduler, setInjectorProfilerContext, emitEffectCreatedEvent, EFFECTS, noop, FLAGS, markAncestorsForTraversal, setIsRefreshingViews, NodeInjectorDestroyRef, signalAsReadonlyFn, PendingTasks, signal } from './root_effect_scheduler-C95A9imp.mjs';
|
|
8
|
+
import { setActiveConsumer, createComputed, SIGNAL, REACTIVE_NODE, consumerDestroy, isInNotificationPhase, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation } from './signal-CVVPheSN.mjs';
|
|
9
|
+
import { untracked as untracked$1, createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn } from './untracked-BLZYODu2.mjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* An `OutputEmitterRef` is created by the `output()` function and can be
|
|
@@ -171,14 +171,6 @@ function effect(effectFn, options) {
|
|
|
171
171
|
}
|
|
172
172
|
return effectRef;
|
|
173
173
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Not public API, which guarantees `EffectScheduler` only ever comes from the application root
|
|
176
|
-
* injector.
|
|
177
|
-
*/
|
|
178
|
-
/* @__PURE__ */ new InjectionToken('', {
|
|
179
|
-
providedIn: 'root',
|
|
180
|
-
factory: () => inject(EffectScheduler),
|
|
181
|
-
});
|
|
182
174
|
const BASE_EFFECT_NODE =
|
|
183
175
|
/* @__PURE__ */ (() => ({
|
|
184
176
|
...REACTIVE_NODE,
|
|
@@ -283,47 +275,6 @@ function createRootEffect(fn, scheduler, notifier) {
|
|
|
283
275
|
return node;
|
|
284
276
|
}
|
|
285
277
|
|
|
286
|
-
/**
|
|
287
|
-
* Status of a `Resource`.
|
|
288
|
-
*
|
|
289
|
-
* @experimental
|
|
290
|
-
*/
|
|
291
|
-
var ResourceStatus;
|
|
292
|
-
(function (ResourceStatus) {
|
|
293
|
-
/**
|
|
294
|
-
* The resource has no valid request and will not perform any loading.
|
|
295
|
-
*
|
|
296
|
-
* `value()` will be `undefined`.
|
|
297
|
-
*/
|
|
298
|
-
ResourceStatus[ResourceStatus["Idle"] = 0] = "Idle";
|
|
299
|
-
/**
|
|
300
|
-
* Loading failed with an error.
|
|
301
|
-
*
|
|
302
|
-
* `value()` will be `undefined`.
|
|
303
|
-
*/
|
|
304
|
-
ResourceStatus[ResourceStatus["Error"] = 1] = "Error";
|
|
305
|
-
/**
|
|
306
|
-
* The resource is currently loading a new value as a result of a change in its `request`.
|
|
307
|
-
*
|
|
308
|
-
* `value()` will be `undefined`.
|
|
309
|
-
*/
|
|
310
|
-
ResourceStatus[ResourceStatus["Loading"] = 2] = "Loading";
|
|
311
|
-
/**
|
|
312
|
-
* The resource is currently reloading a fresh value for the same request.
|
|
313
|
-
*
|
|
314
|
-
* `value()` will continue to return the previously fetched value during the reloading operation.
|
|
315
|
-
*/
|
|
316
|
-
ResourceStatus[ResourceStatus["Reloading"] = 3] = "Reloading";
|
|
317
|
-
/**
|
|
318
|
-
* Loading has completed and the resource has the value returned from the loader.
|
|
319
|
-
*/
|
|
320
|
-
ResourceStatus[ResourceStatus["Resolved"] = 4] = "Resolved";
|
|
321
|
-
/**
|
|
322
|
-
* The resource's value was set locally via `.set()` or `.update()`.
|
|
323
|
-
*/
|
|
324
|
-
ResourceStatus[ResourceStatus["Local"] = 5] = "Local";
|
|
325
|
-
})(ResourceStatus || (ResourceStatus = {}));
|
|
326
|
-
|
|
327
278
|
const identityFn = (v) => v;
|
|
328
279
|
function linkedSignal(optionsOrComputation, options) {
|
|
329
280
|
if (typeof optionsOrComputation === 'function') {
|
|
@@ -349,8 +300,9 @@ function upgradeLinkedSignalGetter(getter) {
|
|
|
349
300
|
|
|
350
301
|
function resource(options) {
|
|
351
302
|
options?.injector || assertInInjectionContext(resource);
|
|
352
|
-
const
|
|
353
|
-
|
|
303
|
+
const oldNameForParams = options.request;
|
|
304
|
+
const params = (options.params ?? oldNameForParams ?? (() => null));
|
|
305
|
+
return new ResourceImpl(params, getLoader(options), options.defaultValue, options.equal ? wrapEqualityFn(options.equal) : undefined, options.injector ?? inject(Injector));
|
|
354
306
|
}
|
|
355
307
|
/**
|
|
356
308
|
* Base class which implements `.value` as a `WritableSignal` by delegating `.set` and `.update`.
|
|
@@ -366,7 +318,7 @@ class BaseWritableResource {
|
|
|
366
318
|
update(updateFn) {
|
|
367
319
|
this.set(updateFn(untracked(this.value)));
|
|
368
320
|
}
|
|
369
|
-
isLoading = computed(() => this.status() ===
|
|
321
|
+
isLoading = computed(() => this.status() === 'loading' || this.status() === 'reloading');
|
|
370
322
|
hasValue() {
|
|
371
323
|
return this.value() !== undefined;
|
|
372
324
|
}
|
|
@@ -418,12 +370,12 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
418
370
|
source: this.extRequest,
|
|
419
371
|
// Compute the state of the resource given a change in status.
|
|
420
372
|
computation: (extRequest, previous) => {
|
|
421
|
-
const status = extRequest.request === undefined ?
|
|
373
|
+
const status = extRequest.request === undefined ? 'idle' : 'loading';
|
|
422
374
|
if (!previous) {
|
|
423
375
|
return {
|
|
424
376
|
extRequest,
|
|
425
377
|
status,
|
|
426
|
-
previousStatus:
|
|
378
|
+
previousStatus: 'idle',
|
|
427
379
|
stream: undefined,
|
|
428
380
|
};
|
|
429
381
|
}
|
|
@@ -462,15 +414,14 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
462
414
|
}
|
|
463
415
|
const current = untracked(this.value);
|
|
464
416
|
const state = untracked(this.state);
|
|
465
|
-
if (state.status ===
|
|
466
|
-
(this.equal ? this.equal(current, value) : current === value)) {
|
|
417
|
+
if (state.status === 'local' && (this.equal ? this.equal(current, value) : current === value)) {
|
|
467
418
|
return;
|
|
468
419
|
}
|
|
469
420
|
// Enter Local state with the user-defined value.
|
|
470
421
|
this.state.set({
|
|
471
422
|
extRequest: state.extRequest,
|
|
472
|
-
status:
|
|
473
|
-
previousStatus:
|
|
423
|
+
status: 'local',
|
|
424
|
+
previousStatus: 'local',
|
|
474
425
|
stream: signal({ value }),
|
|
475
426
|
});
|
|
476
427
|
// We're departing from whatever state the resource was in previously, so cancel any in-progress
|
|
@@ -480,7 +431,7 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
480
431
|
reload() {
|
|
481
432
|
// We don't want to restart in-progress loads.
|
|
482
433
|
const { status } = untracked(this.state);
|
|
483
|
-
if (status ===
|
|
434
|
+
if (status === 'idle' || status === 'loading') {
|
|
484
435
|
return false;
|
|
485
436
|
}
|
|
486
437
|
// Increment the request reload to trigger the `state` linked signal to switch us to `Reload`
|
|
@@ -494,8 +445,8 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
494
445
|
// Destroyed resources enter Idle state.
|
|
495
446
|
this.state.set({
|
|
496
447
|
extRequest: { request: undefined, reload: 0 },
|
|
497
|
-
status:
|
|
498
|
-
previousStatus:
|
|
448
|
+
status: 'idle',
|
|
449
|
+
previousStatus: 'idle',
|
|
499
450
|
stream: undefined,
|
|
500
451
|
});
|
|
501
452
|
}
|
|
@@ -508,7 +459,7 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
508
459
|
// Nothing to load (and we should already be in a non-loading state).
|
|
509
460
|
return;
|
|
510
461
|
}
|
|
511
|
-
else if (currentStatus !==
|
|
462
|
+
else if (currentStatus !== 'loading') {
|
|
512
463
|
// We're not in a loading or reloading state, so this loading request is stale.
|
|
513
464
|
return;
|
|
514
465
|
}
|
|
@@ -532,6 +483,8 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
532
483
|
// which side of the `await` they are.
|
|
533
484
|
const stream = await untracked(() => {
|
|
534
485
|
return this.loaderFn({
|
|
486
|
+
params: extRequest.request,
|
|
487
|
+
// TODO(alxhub): cleanup after g3 removal of `request` alias.
|
|
535
488
|
request: extRequest.request,
|
|
536
489
|
abortSignal,
|
|
537
490
|
previous: {
|
|
@@ -546,8 +499,8 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
546
499
|
}
|
|
547
500
|
this.state.set({
|
|
548
501
|
extRequest,
|
|
549
|
-
status:
|
|
550
|
-
previousStatus:
|
|
502
|
+
status: 'resolved',
|
|
503
|
+
previousStatus: 'resolved',
|
|
551
504
|
stream,
|
|
552
505
|
});
|
|
553
506
|
}
|
|
@@ -557,8 +510,8 @@ class ResourceImpl extends BaseWritableResource {
|
|
|
557
510
|
}
|
|
558
511
|
this.state.set({
|
|
559
512
|
extRequest,
|
|
560
|
-
status:
|
|
561
|
-
previousStatus:
|
|
513
|
+
status: 'resolved',
|
|
514
|
+
previousStatus: 'error',
|
|
562
515
|
stream: signal({ error: err }),
|
|
563
516
|
});
|
|
564
517
|
}
|
|
@@ -603,10 +556,10 @@ function isStreamingResourceOptions(options) {
|
|
|
603
556
|
*/
|
|
604
557
|
function projectStatusOfState(state) {
|
|
605
558
|
switch (state.status) {
|
|
606
|
-
case
|
|
607
|
-
return state.extRequest.reload === 0 ?
|
|
608
|
-
case
|
|
609
|
-
return isResolved(untracked(state.stream)) ?
|
|
559
|
+
case 'loading':
|
|
560
|
+
return state.extRequest.reload === 0 ? 'loading' : 'reloading';
|
|
561
|
+
case 'resolved':
|
|
562
|
+
return isResolved(untracked(state.stream)) ? 'resolved' : 'error';
|
|
610
563
|
default:
|
|
611
564
|
return state.status;
|
|
612
565
|
}
|
|
@@ -615,5 +568,5 @@ function isResolved(state) {
|
|
|
615
568
|
return state.error === undefined;
|
|
616
569
|
}
|
|
617
570
|
|
|
618
|
-
export { OutputEmitterRef, ResourceImpl,
|
|
619
|
-
//# sourceMappingURL=resource-
|
|
571
|
+
export { OutputEmitterRef, ResourceImpl, computed, effect, getOutputDestroyRef, linkedSignal, resource, untracked };
|
|
572
|
+
//# sourceMappingURL=resource-aJC_NNLX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-aJC_NNLX.mjs","sources":["../../../../../../packages/core/src/authoring/output/output_emitter_ref.ts","../../../../../../packages/core/src/render3/reactivity/untracked.ts","../../../../../../packages/core/src/render3/reactivity/computed.ts","../../../../../../packages/core/src/render3/reactivity/effect.ts","../../../../../../packages/core/src/render3/reactivity/linked_signal.ts","../../../../../../packages/core/src/resource/resource.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {setActiveConsumer} from '../../../primitives/signals';\n\nimport {inject} from '../../di/injector_compatibility';\nimport {ErrorHandler} from '../../error_handler';\nimport {formatRuntimeError, RuntimeError, RuntimeErrorCode} from '../../errors';\nimport {DestroyRef} from '../../linker/destroy_ref';\n\nimport {OutputRef, OutputRefSubscription} from './output_ref';\n\n/**\n * An `OutputEmitterRef` is created by the `output()` function and can be\n * used to emit values to consumers of your directive or component.\n *\n * Consumers of your directive/component can bind to the output and\n * subscribe to changes via the bound event syntax. For example:\n *\n * ```html\n * <my-comp (valueChange)=\"processNewValue($event)\" />\n * ```\n *\n * @publicAPI\n */\nexport class OutputEmitterRef<T> implements OutputRef<T> {\n private destroyed = false;\n private listeners: Array<(value: T) => void> | null = null;\n private errorHandler = inject(ErrorHandler, {optional: true});\n\n /** @internal */\n destroyRef: DestroyRef = inject(DestroyRef);\n\n constructor() {\n // Clean-up all listeners and mark as destroyed upon destroy.\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.listeners = null;\n });\n }\n\n subscribe(callback: (value: T) => void): OutputRefSubscription {\n if (this.destroyed) {\n throw new RuntimeError(\n RuntimeErrorCode.OUTPUT_REF_DESTROYED,\n ngDevMode &&\n 'Unexpected subscription to destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.',\n );\n }\n\n (this.listeners ??= []).push(callback);\n\n return {\n unsubscribe: () => {\n const idx = this.listeners?.indexOf(callback);\n if (idx !== undefined && idx !== -1) {\n this.listeners?.splice(idx, 1);\n }\n },\n };\n }\n\n /** Emits a new value to the output. */\n emit(value: T): void {\n if (this.destroyed) {\n console.warn(\n formatRuntimeError(\n RuntimeErrorCode.OUTPUT_REF_DESTROYED,\n ngDevMode &&\n 'Unexpected emit for destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.',\n ),\n );\n return;\n }\n\n if (this.listeners === null) {\n return;\n }\n\n const previousConsumer = setActiveConsumer(null);\n try {\n for (const listenerFn of this.listeners) {\n try {\n listenerFn(value);\n } catch (err: unknown) {\n this.errorHandler?.handleError(err);\n }\n }\n } finally {\n setActiveConsumer(previousConsumer);\n }\n }\n}\n\n/** Gets the owning `DestroyRef` for the given output. */\nexport function getOutputDestroyRef(ref: OutputRef<unknown>): DestroyRef | undefined {\n return ref.destroyRef;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {untracked as untrackedPrimitive} from '../../../primitives/signals';\n\n/**\n * Execute an arbitrary function in a non-reactive (non-tracking) context. The executed function\n * can, optionally, return a value.\n */\nexport function untracked<T>(nonReactiveReadsFn: () => T): T {\n return untrackedPrimitive(nonReactiveReadsFn);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {createComputed, SIGNAL} from '../../../primitives/signals';\n\nimport {Signal, ValueEqualityFn} from './api';\n\n/**\n * Options passed to the `computed` creation function.\n */\nexport interface CreateComputedOptions<T> {\n /**\n * A comparison function which defines equality for computed values.\n */\n equal?: ValueEqualityFn<T>;\n\n /**\n * A debug name for the computed signal. Used in Angular DevTools to identify the signal.\n */\n debugName?: string;\n}\n\n/**\n * Create a computed `Signal` which derives a reactive value from an expression.\n */\nexport function computed<T>(computation: () => T, options?: CreateComputedOptions<T>): Signal<T> {\n const getter = createComputed(computation, options?.equal);\n\n if (ngDevMode) {\n getter.toString = () => `[Computed: ${getter()}]`;\n getter[SIGNAL].debugName = options?.debugName;\n }\n\n return getter;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n REACTIVE_NODE,\n ReactiveNode,\n SIGNAL,\n consumerAfterComputation,\n consumerBeforeComputation,\n consumerDestroy,\n consumerPollProducersForChange,\n isInNotificationPhase,\n setActiveConsumer,\n} from '../../../primitives/signals';\nimport {FLAGS, LViewFlags, LView, EFFECTS} from '../interfaces/view';\nimport {markAncestorsForTraversal} from '../util/view_utils';\nimport {inject} from '../../di/injector_compatibility';\nimport {Injector} from '../../di/injector';\nimport {assertNotInReactiveContext} from './asserts';\nimport {assertInInjectionContext} from '../../di/contextual';\nimport {DestroyRef, NodeInjectorDestroyRef} from '../../linker/destroy_ref';\nimport {ViewContext} from '../view_context';\nimport {noop} from '../../util/noop';\nimport {\n ChangeDetectionScheduler,\n NotificationSource,\n} from '../../change_detection/scheduling/zoneless_scheduling';\nimport {setIsRefreshingViews} from '../state';\nimport {EffectScheduler, SchedulableEffect} from './root_effect_scheduler';\n\nimport {emitEffectCreatedEvent, setInjectorProfilerContext} from '../debug/injector_profiler';\n\n/**\n * A global reactive effect, which can be manually destroyed.\n */\nexport interface EffectRef {\n /**\n * Shut down the effect, removing it from any upcoming scheduled executions.\n */\n destroy(): void;\n}\n\nexport class EffectRefImpl implements EffectRef {\n [SIGNAL]: EffectNode;\n\n constructor(node: EffectNode) {\n this[SIGNAL] = node;\n }\n\n destroy(): void {\n this[SIGNAL].destroy();\n }\n}\n\n/**\n * Options passed to the `effect` function.\n */\nexport interface CreateEffectOptions {\n /**\n * The `Injector` in which to create the effect.\n *\n * If this is not provided, the current [injection context](guide/di/dependency-injection-context)\n * will be used instead (via `inject`).\n */\n injector?: Injector;\n\n /**\n * Whether the `effect` should require manual cleanup.\n *\n * If this is `false` (the default) the effect will automatically register itself to be cleaned up\n * with the current `DestroyRef`.\n *\n * If this is `true` and you want to use the effect outside an injection context, you still\n * need to provide an `Injector` to the effect.\n */\n manualCleanup?: boolean;\n\n /**\n * @deprecated no longer required, signal writes are allowed by default.\n */\n allowSignalWrites?: boolean;\n\n /**\n * A debug name for the effect. Used in Angular DevTools to identify the effect.\n */\n debugName?: string;\n}\n\n/**\n * An effect can, optionally, register a cleanup function. If registered, the cleanup is executed\n * before the next effect run. The cleanup function makes it possible to \"cancel\" any work that the\n * previous effect run might have started.\n */\nexport type EffectCleanupFn = () => void;\n\n/**\n * A callback passed to the effect function that makes it possible to register cleanup logic.\n */\nexport type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void;\n\n/**\n * Registers an \"effect\" that will be scheduled & executed whenever the signals that it reads\n * changes.\n *\n * Angular has two different kinds of effect: component effects and root effects. Component effects\n * are created when `effect()` is called from a component, directive, or within a service of a\n * component/directive. Root effects are created when `effect()` is called from outside the\n * component tree, such as in a root service.\n *\n * The two effect types differ in their timing. Component effects run as a component lifecycle\n * event during Angular's synchronization (change detection) process, and can safely read input\n * signals or create/destroy views that depend on component state. Root effects run as microtasks\n * and have no connection to the component tree or change detection.\n *\n * `effect()` must be run in injection context, unless the `injector` option is manually specified.\n */\nexport function effect(\n effectFn: (onCleanup: EffectCleanupRegisterFn) => void,\n options?: CreateEffectOptions,\n): EffectRef {\n ngDevMode &&\n assertNotInReactiveContext(\n effect,\n 'Call `effect` outside of a reactive context. For example, schedule the ' +\n 'effect inside the component constructor.',\n );\n\n !options?.injector && assertInInjectionContext(effect);\n\n if (ngDevMode && options?.allowSignalWrites !== undefined) {\n console.warn(\n `The 'allowSignalWrites' flag is deprecated and no longer impacts effect() (writes are always allowed)`,\n );\n }\n\n const injector = options?.injector ?? inject(Injector);\n let destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;\n\n let node: EffectNode;\n\n const viewContext = injector.get(ViewContext, null, {optional: true});\n const notifier = injector.get(ChangeDetectionScheduler);\n if (viewContext !== null) {\n // This effect was created in the context of a view, and will be associated with the view.\n node = createViewEffect(viewContext.view, notifier, effectFn);\n if (destroyRef instanceof NodeInjectorDestroyRef && destroyRef._lView === viewContext.view) {\n // The effect is being created in the same view as the `DestroyRef` references, so it will be\n // automatically destroyed without the need for an explicit `DestroyRef` registration.\n destroyRef = null;\n }\n } else {\n // This effect was created outside the context of a view, and will be scheduled independently.\n node = createRootEffect(effectFn, injector.get(EffectScheduler), notifier);\n }\n node.injector = injector;\n\n if (destroyRef !== null) {\n // If we need to register for cleanup, do that here.\n node.onDestroyFn = destroyRef.onDestroy(() => node.destroy());\n }\n\n const effectRef = new EffectRefImpl(node);\n\n if (ngDevMode) {\n node.debugName = options?.debugName ?? '';\n const prevInjectorProfilerContext = setInjectorProfilerContext({injector, token: null});\n try {\n emitEffectCreatedEvent(effectRef);\n } finally {\n setInjectorProfilerContext(prevInjectorProfilerContext);\n }\n }\n\n return effectRef;\n}\n\nexport interface EffectNode extends ReactiveNode, SchedulableEffect {\n hasRun: boolean;\n cleanupFns: EffectCleanupFn[] | undefined;\n injector: Injector;\n notifier: ChangeDetectionScheduler;\n\n onDestroyFn: () => void;\n fn: (cleanupFn: EffectCleanupRegisterFn) => void;\n run(): void;\n destroy(): void;\n maybeCleanup(): void;\n}\n\nexport interface ViewEffectNode extends EffectNode {\n view: LView;\n}\n\nexport interface RootEffectNode extends EffectNode {\n scheduler: EffectScheduler;\n}\n\nexport const BASE_EFFECT_NODE: Omit<EffectNode, 'fn' | 'destroy' | 'injector' | 'notifier'> =\n /* @__PURE__ */ (() => ({\n ...REACTIVE_NODE,\n consumerIsAlwaysLive: true,\n consumerAllowSignalWrites: true,\n dirty: true,\n hasRun: false,\n cleanupFns: undefined,\n zone: null,\n kind: 'effect',\n onDestroyFn: noop,\n run(this: EffectNode): void {\n this.dirty = false;\n\n if (ngDevMode && isInNotificationPhase()) {\n throw new Error(`Schedulers cannot synchronously execute watches while scheduling.`);\n }\n\n if (this.hasRun && !consumerPollProducersForChange(this)) {\n return;\n }\n this.hasRun = true;\n\n const registerCleanupFn: EffectCleanupRegisterFn = (cleanupFn) =>\n (this.cleanupFns ??= []).push(cleanupFn);\n\n const prevNode = consumerBeforeComputation(this);\n\n // We clear `setIsRefreshingViews` so that `markForCheck()` within the body of an effect will\n // cause CD to reach the component in question.\n const prevRefreshingViews = setIsRefreshingViews(false);\n try {\n this.maybeCleanup();\n this.fn(registerCleanupFn);\n } finally {\n setIsRefreshingViews(prevRefreshingViews);\n consumerAfterComputation(this, prevNode);\n }\n },\n\n maybeCleanup(this: EffectNode): void {\n if (!this.cleanupFns?.length) {\n return;\n }\n const prevConsumer = setActiveConsumer(null);\n try {\n // Attempt to run the cleanup functions. Regardless of failure or success, we consider\n // cleanup \"completed\" and clear the list for the next run of the effect. Note that an error\n // from the cleanup function will still crash the current run of the effect.\n while (this.cleanupFns.length) {\n this.cleanupFns.pop()!();\n }\n } finally {\n this.cleanupFns = [];\n setActiveConsumer(prevConsumer);\n }\n },\n }))();\n\nexport const ROOT_EFFECT_NODE: Omit<RootEffectNode, 'fn' | 'scheduler' | 'notifier' | 'injector'> =\n /* @__PURE__ */ (() => ({\n ...BASE_EFFECT_NODE,\n consumerMarkedDirty(this: RootEffectNode) {\n this.scheduler.schedule(this);\n this.notifier.notify(NotificationSource.RootEffect);\n },\n destroy(this: RootEffectNode) {\n consumerDestroy(this);\n this.onDestroyFn();\n this.maybeCleanup();\n this.scheduler.remove(this);\n },\n }))();\n\nexport const VIEW_EFFECT_NODE: Omit<ViewEffectNode, 'fn' | 'view' | 'injector' | 'notifier'> =\n /* @__PURE__ */ (() => ({\n ...BASE_EFFECT_NODE,\n consumerMarkedDirty(this: ViewEffectNode): void {\n this.view[FLAGS] |= LViewFlags.HasChildViewsToRefresh;\n markAncestorsForTraversal(this.view);\n this.notifier.notify(NotificationSource.ViewEffect);\n },\n destroy(this: ViewEffectNode): void {\n consumerDestroy(this);\n this.onDestroyFn();\n this.maybeCleanup();\n this.view[EFFECTS]?.delete(this);\n },\n }))();\n\nexport function createViewEffect(\n view: LView,\n notifier: ChangeDetectionScheduler,\n fn: (onCleanup: EffectCleanupRegisterFn) => void,\n): ViewEffectNode {\n const node = Object.create(VIEW_EFFECT_NODE) as ViewEffectNode;\n node.view = view;\n node.zone = typeof Zone !== 'undefined' ? Zone.current : null;\n node.notifier = notifier;\n node.fn = fn;\n\n view[EFFECTS] ??= new Set();\n view[EFFECTS].add(node);\n\n node.consumerMarkedDirty(node);\n return node;\n}\n\nexport function createRootEffect(\n fn: (onCleanup: EffectCleanupRegisterFn) => void,\n scheduler: EffectScheduler,\n notifier: ChangeDetectionScheduler,\n): RootEffectNode {\n const node = Object.create(ROOT_EFFECT_NODE) as RootEffectNode;\n node.fn = fn;\n node.scheduler = scheduler;\n node.notifier = notifier;\n node.zone = typeof Zone !== 'undefined' ? Zone.current : null;\n node.scheduler.add(node);\n node.notifier.notify(NotificationSource.RootEffect);\n return node;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComputationFn,\n createLinkedSignal,\n LinkedSignalGetter,\n LinkedSignalNode,\n linkedSignalSetFn,\n linkedSignalUpdateFn,\n SIGNAL,\n} from '../../../primitives/signals';\nimport {Signal, ValueEqualityFn} from './api';\nimport {signalAsReadonlyFn, WritableSignal} from './signal';\n\nconst identityFn = <T>(v: T) => v;\n\n/**\n * Creates a writable signal whose value is initialized and reset by the linked, reactive computation.\n *\n * @publicApi\n */\nexport function linkedSignal<D>(\n computation: () => D,\n options?: {equal?: ValueEqualityFn<NoInfer<D>>},\n): WritableSignal<D>;\n\n/**\n * Creates a writable signal whose value is initialized and reset by the linked, reactive computation.\n * This is an advanced API form where the computation has access to the previous value of the signal and the computation result.\n *\n * Note: The computation is reactive, meaning the linked signal will automatically update whenever any of the signals used within the computation change.\n *\n * @publicApi\n */\nexport function linkedSignal<S, D>(options: {\n source: () => S;\n computation: (source: NoInfer<S>, previous?: {source: NoInfer<S>; value: NoInfer<D>}) => D;\n equal?: ValueEqualityFn<NoInfer<D>>;\n}): WritableSignal<D>;\n\nexport function linkedSignal<S, D>(\n optionsOrComputation:\n | {\n source: () => S;\n computation: ComputationFn<S, D>;\n equal?: ValueEqualityFn<D>;\n }\n | (() => D),\n options?: {equal?: ValueEqualityFn<D>},\n): WritableSignal<D> {\n if (typeof optionsOrComputation === 'function') {\n const getter = createLinkedSignal<D, D>(\n optionsOrComputation,\n identityFn<D>,\n options?.equal,\n ) as LinkedSignalGetter<D, D> & WritableSignal<D>;\n return upgradeLinkedSignalGetter(getter);\n } else {\n const getter = createLinkedSignal<S, D>(\n optionsOrComputation.source,\n optionsOrComputation.computation,\n optionsOrComputation.equal,\n );\n return upgradeLinkedSignalGetter(getter);\n }\n}\n\nfunction upgradeLinkedSignalGetter<S, D>(getter: LinkedSignalGetter<S, D>): WritableSignal<D> {\n if (ngDevMode) {\n getter.toString = () => `[LinkedSignal: ${getter()}]`;\n }\n\n const node = getter[SIGNAL] as LinkedSignalNode<S, D>;\n const upgradedGetter = getter as LinkedSignalGetter<S, D> & WritableSignal<D>;\n\n upgradedGetter.set = (newValue: D) => linkedSignalSetFn(node, newValue);\n upgradedGetter.update = (updateFn: (value: D) => D) => linkedSignalUpdateFn(node, updateFn);\n upgradedGetter.asReadonly = signalAsReadonlyFn.bind(getter as any) as () => Signal<D>;\n\n return upgradedGetter;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {untracked} from '../render3/reactivity/untracked';\nimport {computed} from '../render3/reactivity/computed';\nimport {signal, signalAsReadonlyFn, WritableSignal} from '../render3/reactivity/signal';\nimport {Signal} from '../render3/reactivity/api';\nimport {effect, EffectRef} from '../render3/reactivity/effect';\nimport {\n ResourceOptions,\n ResourceStatus,\n WritableResource,\n Resource,\n ResourceRef,\n ResourceStreamingLoader,\n StreamingResourceOptions,\n ResourceStreamItem,\n ResourceLoaderParams,\n} from './api';\n\nimport {ValueEqualityFn} from '../../primitives/signals';\n\nimport {Injector} from '../di/injector';\nimport {assertInInjectionContext} from '../di/contextual';\nimport {inject} from '../di/injector_compatibility';\nimport {PendingTasks} from '../pending_tasks';\nimport {linkedSignal} from '../render3/reactivity/linked_signal';\nimport {DestroyRef} from '../linker/destroy_ref';\n\n/**\n * Constructs a `Resource` that projects a reactive request to an asynchronous operation defined by\n * a loader function, which exposes the result of the loading operation via signals.\n *\n * Note that `resource` is intended for _read_ operations, not operations which perform mutations.\n * `resource` will cancel in-progress loads via the `AbortSignal` when destroyed or when a new\n * request object becomes available, which could prematurely abort mutations.\n *\n * @experimental\n */\nexport function resource<T, R>(\n options: ResourceOptions<T, R> & {defaultValue: NoInfer<T>},\n): ResourceRef<T>;\n\n/**\n * Constructs a `Resource` that projects a reactive request to an asynchronous operation defined by\n * a loader function, which exposes the result of the loading operation via signals.\n *\n * Note that `resource` is intended for _read_ operations, not operations which perform mutations.\n * `resource` will cancel in-progress loads via the `AbortSignal` when destroyed or when a new\n * request object becomes available, which could prematurely abort mutations.\n *\n * @experimental\n */\nexport function resource<T, R>(options: ResourceOptions<T, R>): ResourceRef<T | undefined>;\nexport function resource<T, R>(options: ResourceOptions<T, R>): ResourceRef<T | undefined> {\n options?.injector || assertInInjectionContext(resource);\n const oldNameForParams = (\n options as ResourceOptions<T, R> & {request: ResourceOptions<T, R>['params']}\n ).request;\n const params = (options.params ?? oldNameForParams ?? (() => null)) as () => R;\n return new ResourceImpl<T | undefined, R>(\n params,\n getLoader(options),\n options.defaultValue,\n options.equal ? wrapEqualityFn(options.equal) : undefined,\n options.injector ?? inject(Injector),\n );\n}\n\ntype ResourceInternalStatus = 'idle' | 'loading' | 'resolved' | 'local';\n\n/**\n * Internal state of a resource.\n */\ninterface ResourceProtoState<T> {\n extRequest: WrappedRequest;\n\n // For simplicity, status is internally tracked as a subset of the public status enum.\n // Reloading and Error statuses are projected from Loading and Resolved based on other state.\n status: ResourceInternalStatus;\n}\n\ninterface ResourceState<T> extends ResourceProtoState<T> {\n previousStatus: ResourceStatus;\n stream: Signal<ResourceStreamItem<T>> | undefined;\n}\n\ntype WrappedRequest = {request: unknown; reload: number};\n\n/**\n * Base class which implements `.value` as a `WritableSignal` by delegating `.set` and `.update`.\n */\nabstract class BaseWritableResource<T> implements WritableResource<T> {\n readonly value: WritableSignal<T>;\n abstract readonly status: Signal<ResourceStatus>;\n abstract readonly error: Signal<unknown>;\n abstract reload(): boolean;\n\n constructor(value: Signal<T>) {\n this.value = value as WritableSignal<T>;\n this.value.set = this.set.bind(this);\n this.value.update = this.update.bind(this);\n this.value.asReadonly = signalAsReadonlyFn;\n }\n\n abstract set(value: T): void;\n\n update(updateFn: (value: T) => T): void {\n this.set(updateFn(untracked(this.value)));\n }\n\n readonly isLoading = computed(() => this.status() === 'loading' || this.status() === 'reloading');\n\n hasValue(): this is ResourceRef<Exclude<T, undefined>> {\n return this.value() !== undefined;\n }\n\n asReadonly(): Resource<T> {\n return this;\n }\n}\n\n/**\n * Implementation for `resource()` which uses a `linkedSignal` to manage the resource's state.\n */\nexport class ResourceImpl<T, R> extends BaseWritableResource<T> implements ResourceRef<T> {\n private readonly pendingTasks: PendingTasks;\n\n /**\n * The current state of the resource. Status, value, and error are derived from this.\n */\n private readonly state: WritableSignal<ResourceState<T>>;\n\n /**\n * Combines the current request with a reload counter which allows the resource to be reloaded on\n * imperative command.\n */\n protected readonly extRequest: WritableSignal<WrappedRequest>;\n private readonly effectRef: EffectRef;\n\n private pendingController: AbortController | undefined;\n private resolvePendingTask: (() => void) | undefined = undefined;\n private destroyed = false;\n\n constructor(\n request: () => R,\n private readonly loaderFn: ResourceStreamingLoader<T, R>,\n private readonly defaultValue: T,\n private readonly equal: ValueEqualityFn<T> | undefined,\n injector: Injector,\n ) {\n super(\n // Feed a computed signal for the value to `BaseWritableResource`, which will upgrade it to a\n // `WritableSignal` that delegates to `ResourceImpl.set`.\n computed(\n () => {\n const streamValue = this.state().stream?.();\n return streamValue && isResolved(streamValue) ? streamValue.value : this.defaultValue;\n },\n {equal},\n ),\n );\n\n // Extend `request()` to include a writable reload signal.\n this.extRequest = linkedSignal({\n source: request,\n computation: (request) => ({request, reload: 0}),\n });\n\n // The main resource state is managed in a `linkedSignal`, which allows the resource to change\n // state instantaneously when the request signal changes.\n this.state = linkedSignal<WrappedRequest, ResourceState<T>>({\n // Whenever the request changes,\n source: this.extRequest,\n // Compute the state of the resource given a change in status.\n computation: (extRequest, previous) => {\n const status = extRequest.request === undefined ? 'idle' : 'loading';\n if (!previous) {\n return {\n extRequest,\n status,\n previousStatus: 'idle',\n stream: undefined,\n };\n } else {\n return {\n extRequest,\n status,\n previousStatus: projectStatusOfState(previous.value),\n // If the request hasn't changed, keep the previous stream.\n stream:\n previous.value.extRequest.request === extRequest.request\n ? previous.value.stream\n : undefined,\n };\n }\n },\n });\n\n this.effectRef = effect(this.loadEffect.bind(this), {\n injector,\n manualCleanup: true,\n });\n\n this.pendingTasks = injector.get(PendingTasks);\n\n // Cancel any pending request when the resource itself is destroyed.\n injector.get(DestroyRef).onDestroy(() => this.destroy());\n }\n\n override readonly status = computed(() => projectStatusOfState(this.state()));\n\n override readonly error = computed(() => {\n const stream = this.state().stream?.();\n return stream && !isResolved(stream) ? stream.error : undefined;\n });\n\n /**\n * Called either directly via `WritableResource.set` or via `.value.set()`.\n */\n override set(value: T): void {\n if (this.destroyed) {\n return;\n }\n\n const current = untracked(this.value);\n const state = untracked(this.state);\n\n if (state.status === 'local' && (this.equal ? this.equal(current, value) : current === value)) {\n return;\n }\n\n // Enter Local state with the user-defined value.\n this.state.set({\n extRequest: state.extRequest,\n status: 'local',\n previousStatus: 'local',\n stream: signal({value}),\n });\n\n // We're departing from whatever state the resource was in previously, so cancel any in-progress\n // loading operations.\n this.abortInProgressLoad();\n }\n\n override reload(): boolean {\n // We don't want to restart in-progress loads.\n const {status} = untracked(this.state);\n if (status === 'idle' || status === 'loading') {\n return false;\n }\n\n // Increment the request reload to trigger the `state` linked signal to switch us to `Reload`\n this.extRequest.update(({request, reload}) => ({request, reload: reload + 1}));\n return true;\n }\n\n destroy(): void {\n this.destroyed = true;\n this.effectRef.destroy();\n this.abortInProgressLoad();\n\n // Destroyed resources enter Idle state.\n this.state.set({\n extRequest: {request: undefined, reload: 0},\n status: 'idle',\n previousStatus: 'idle',\n stream: undefined,\n });\n }\n\n private async loadEffect(): Promise<void> {\n const extRequest = this.extRequest();\n\n // Capture the previous status before any state transitions. Note that this is `untracked` since\n // we do not want the effect to depend on the state of the resource, only on the request.\n const {status: currentStatus, previousStatus} = untracked(this.state);\n\n if (extRequest.request === undefined) {\n // Nothing to load (and we should already be in a non-loading state).\n return;\n } else if (currentStatus !== 'loading') {\n // We're not in a loading or reloading state, so this loading request is stale.\n return;\n }\n\n // Cancel any previous loading attempts.\n this.abortInProgressLoad();\n\n // Capturing _this_ load's pending task in a local variable is important here. We may attempt to\n // resolve it twice:\n //\n // 1. when the loading function promise resolves/rejects\n // 2. when cancelling the loading operation\n //\n // After the loading operation is cancelled, `this.resolvePendingTask` no longer represents this\n // particular task, but this `await` may eventually resolve/reject. Thus, when we cancel in\n // response to (1) below, we need to cancel the locally saved task.\n let resolvePendingTask: (() => void) | undefined = (this.resolvePendingTask =\n this.pendingTasks.add());\n\n const {signal: abortSignal} = (this.pendingController = new AbortController());\n\n try {\n // The actual loading is run through `untracked` - only the request side of `resource` is\n // reactive. This avoids any confusion with signals tracking or not tracking depending on\n // which side of the `await` they are.\n const stream = await untracked(() => {\n return this.loaderFn({\n params: extRequest.request as Exclude<R, undefined>,\n // TODO(alxhub): cleanup after g3 removal of `request` alias.\n request: extRequest.request as Exclude<R, undefined>,\n abortSignal,\n previous: {\n status: previousStatus,\n },\n } as ResourceLoaderParams<R>);\n });\n\n // If this request has been aborted, or the current request no longer\n // matches this load, then we should ignore this resolution.\n if (abortSignal.aborted || untracked(this.extRequest) !== extRequest) {\n return;\n }\n\n this.state.set({\n extRequest,\n status: 'resolved',\n previousStatus: 'resolved',\n stream,\n });\n } catch (err) {\n if (abortSignal.aborted || untracked(this.extRequest) !== extRequest) {\n return;\n }\n\n this.state.set({\n extRequest,\n status: 'resolved',\n previousStatus: 'error',\n stream: signal({error: err}),\n });\n } finally {\n // Resolve the pending task now that the resource has a value.\n resolvePendingTask?.();\n resolvePendingTask = undefined;\n }\n }\n\n private abortInProgressLoad(): void {\n untracked(() => this.pendingController?.abort());\n this.pendingController = undefined;\n\n // Once the load is aborted, we no longer want to block stability on its resolution.\n this.resolvePendingTask?.();\n this.resolvePendingTask = undefined;\n }\n}\n\n/**\n * Wraps an equality function to handle either value being `undefined`.\n */\nfunction wrapEqualityFn<T>(equal: ValueEqualityFn<T>): ValueEqualityFn<T | undefined> {\n return (a, b) => (a === undefined || b === undefined ? a === b : equal(a, b));\n}\n\nfunction getLoader<T, R>(options: ResourceOptions<T, R>): ResourceStreamingLoader<T, R> {\n if (isStreamingResourceOptions(options)) {\n return options.stream;\n }\n\n return async (params) => {\n try {\n return signal({value: await options.loader(params)});\n } catch (err) {\n return signal({error: err});\n }\n };\n}\n\nfunction isStreamingResourceOptions<T, R>(\n options: ResourceOptions<T, R>,\n): options is StreamingResourceOptions<T, R> {\n return !!(options as StreamingResourceOptions<T, R>).stream;\n}\n\n/**\n * Project from a state with `ResourceInternalStatus` to the user-facing `ResourceStatus`\n */\nfunction projectStatusOfState(state: ResourceState<unknown>): ResourceStatus {\n switch (state.status) {\n case 'loading':\n return state.extRequest.reload === 0 ? 'loading' : 'reloading';\n case 'resolved':\n return isResolved(untracked(state.stream!)) ? 'resolved' : 'error';\n default:\n return state.status;\n }\n}\n\nfunction isResolved<T>(state: ResourceStreamItem<T>): state is {value: T} {\n return (state as {error: unknown}).error === undefined;\n}\n"],"names":["untrackedPrimitive"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.0-next.
|
|
2
|
+
* @license Angular v20.0.0-next.9
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { getCurrentInjector, isNotFound, setCurrentInjector } from './primitives/di.mjs';
|
|
8
|
-
import { getActiveConsumer, SIGNAL, createSignal, signalSetFn, signalUpdateFn } from './signal-
|
|
8
|
+
import { getActiveConsumer, SIGNAL, createSignal, signalSetFn, signalUpdateFn } from './signal-CVVPheSN.mjs';
|
|
9
9
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
10
10
|
import { NotFoundError, isNotFound as isNotFound$1 } from '@angular/core/primitives/di';
|
|
11
11
|
import { setActiveConsumer } from '@angular/core/primitives/signals';
|
|
@@ -1415,9 +1415,12 @@ class NullInjector {
|
|
|
1415
1415
|
}
|
|
1416
1416
|
}
|
|
1417
1417
|
|
|
1418
|
-
function getNgModuleDef(type
|
|
1419
|
-
|
|
1420
|
-
|
|
1418
|
+
function getNgModuleDef(type) {
|
|
1419
|
+
return type[NG_MOD_DEF] || null;
|
|
1420
|
+
}
|
|
1421
|
+
function getNgModuleDefOrThrow(type) {
|
|
1422
|
+
const ngModuleDef = getNgModuleDef(type);
|
|
1423
|
+
if (!ngModuleDef) {
|
|
1421
1424
|
throw new RuntimeError(915 /* RuntimeErrorCode.MISSING_NG_MODULE_DEFINITION */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
1422
1425
|
`Type ${stringify(type)} does not have 'ɵmod' property.`);
|
|
1423
1426
|
}
|
|
@@ -1458,6 +1461,8 @@ function isStandalone(type) {
|
|
|
1458
1461
|
/**
|
|
1459
1462
|
* Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally
|
|
1460
1463
|
* referenced in `@Component` in a component injector.
|
|
1464
|
+
*
|
|
1465
|
+
* @publicApi
|
|
1461
1466
|
*/
|
|
1462
1467
|
function makeEnvironmentProviders(providers) {
|
|
1463
1468
|
return {
|
|
@@ -3549,8 +3554,18 @@ const globalErrorListeners = new InjectionToken(ngDevMode ? 'GlobalErrorListener
|
|
|
3549
3554
|
errorHandler(e.error);
|
|
3550
3555
|
e.preventDefault();
|
|
3551
3556
|
};
|
|
3552
|
-
|
|
3553
|
-
|
|
3557
|
+
const setupEventListeners = () => {
|
|
3558
|
+
window.addEventListener('unhandledrejection', rejectionListener);
|
|
3559
|
+
window.addEventListener('error', errorListener);
|
|
3560
|
+
};
|
|
3561
|
+
// Angular doesn't have to run change detection whenever any asynchronous tasks are invoked in
|
|
3562
|
+
// the scope of this functionality.
|
|
3563
|
+
if (typeof Zone !== 'undefined') {
|
|
3564
|
+
Zone.root.run(setupEventListeners);
|
|
3565
|
+
}
|
|
3566
|
+
else {
|
|
3567
|
+
setupEventListeners();
|
|
3568
|
+
}
|
|
3554
3569
|
inject(DestroyRef).onDestroy(() => {
|
|
3555
3570
|
window.removeEventListener('error', errorListener);
|
|
3556
3571
|
window.removeEventListener('unhandledrejection', rejectionListener);
|
|
@@ -3658,7 +3673,7 @@ class ChangeDetectionScheduler {
|
|
|
3658
3673
|
}
|
|
3659
3674
|
/** Token used to indicate if zoneless was enabled via provideZonelessChangeDetection(). */
|
|
3660
3675
|
const ZONELESS_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'Zoneless enabled' : '', { providedIn: 'root', factory: () => false });
|
|
3661
|
-
/** Token used to indicate `
|
|
3676
|
+
/** Token used to indicate `provideZonelessChangeDetection` was used. */
|
|
3662
3677
|
const PROVIDED_ZONELESS = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'Zoneless provided' : '', { providedIn: 'root', factory: () => false });
|
|
3663
3678
|
const ZONELESS_SCHEDULER_DISABLED = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'scheduler disabled' : '');
|
|
3664
3679
|
// TODO(atscott): Remove in v19. Scheduler should be done with runOutsideAngular.
|
|
@@ -3888,5 +3903,5 @@ class ZoneAwareEffectScheduler {
|
|
|
3888
3903
|
}
|
|
3889
3904
|
}
|
|
3890
3905
|
|
|
3891
|
-
export { AFTER_RENDER_SEQUENCES_TO_ADD, CHILD_HEAD, CHILD_TAIL, CLEANUP, CONTAINER_HEADER_OFFSET, CONTEXT, ChangeDetectionScheduler, CheckNoChangesMode, DECLARATION_COMPONENT_VIEW, DECLARATION_LCONTAINER, DECLARATION_VIEW, DEHYDRATED_VIEWS, DOCUMENT, DestroyRef, EFFECTS, EFFECTS_TO_SCHEDULE, EMBEDDED_VIEW_INJECTOR, EMPTY_ARRAY, EMPTY_OBJ, ENVIRONMENT, ENVIRONMENT_INITIALIZER, EffectScheduler, EnvironmentInjector, ErrorHandler, FLAGS, HEADER_OFFSET, HOST, HYDRATION, ID, INJECTOR$1 as INJECTOR, INJECTOR as INJECTOR$1, INJECTOR_DEF_TYPES, INJECTOR_SCOPE, INTERNAL_APPLICATION_ERROR_HANDLER, InjectionToken, Injector, MATH_ML_NAMESPACE, MOVED_VIEWS, NATIVE, NEXT, NG_COMP_DEF, NG_DIR_DEF, NG_ELEMENT_ID, NG_FACTORY_DEF, NG_INJ_DEF, NG_MOD_DEF, NG_PIPE_DEF, NG_PROV_DEF, NodeInjectorDestroyRef, NullInjector, ON_DESTROY_HOOKS, PARENT, PREORDER_HOOK_FLAGS, PROVIDED_ZONELESS, PendingTasks, PendingTasksInternal, QUERIES, R3Injector, REACTIVE_TEMPLATE_CONSUMER, RENDERER, RuntimeError, SCHEDULE_IN_ROOT_ZONE, SVG_NAMESPACE, TVIEW, T_HOST, VIEW_REFS, ViewContext, XSS_SECURITY_URL, ZONELESS_ENABLED, ZONELESS_SCHEDULER_DISABLED, _global, addToArray, arrayEquals, arrayInsert2, arraySplice, assertComponentType, assertDefined, assertDirectiveDef, assertDomNode, assertElement, assertEqual, assertFirstCreatePass, assertFirstUpdatePass, assertFunction, assertGreaterThan, assertGreaterThanOrEqual, assertHasParent, assertInInjectionContext, assertIndexInDeclRange, assertIndexInExpandoRange, assertIndexInRange, assertInjectImplementationNotEqual, assertLContainer, assertLView, assertLessThan, assertNgModuleType, assertNodeInjector, assertNotDefined, assertNotEqual, assertNotInReactiveContext, assertNotReactive, assertNotSame, assertNumber, assertNumberInRange, assertOneOf, assertParentView, assertProjectionSlots, assertSame, assertString, assertTIcu, assertTNode, assertTNodeForLView, assertTNodeForTView, attachInjectFlag, concatStringsWithSpace, convertToBitFlags, createInjector, createInjectorWithoutInjectorInstances, debugStringifyTypeForError, decreaseElementDepthCount, deepForEach, defineInjectable, emitEffectCreatedEvent, emitInjectEvent, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, emitProviderConfiguredEvent, enterDI, enterSkipHydrationBlock, enterView, errorHandlerEnvironmentInitializer, fillProperties, flatten, formatRuntimeError, forwardRef, getBindingIndex, getBindingRoot, getBindingsEnabled, getClosureSafeProperty, getComponentDef, getComponentLViewByIndex, getConstant, getContextLView, getCurrentDirectiveDef, getCurrentDirectiveIndex, getCurrentParentTNode, getCurrentQueryIndex, getCurrentTNode, getCurrentTNodePlaceholderOk, getDirectiveDef, getElementDepthCount, getFactoryDef, getInjectableDef, getInjectorDef, getLView, getLViewParent, getNamespace, getNativeByIndex, getNativeByTNode, getNativeByTNodeOrNull, getNgModuleDef, getNullInjector, getOrCreateLViewCleanup, getOrCreateTViewCleanup, getPipeDef, getSelectedIndex, getSelectedTNode, getTNode, getTView, hasI18n, importProvidersFrom, increaseElementDepthCount, incrementBindingIndex, initNgDevMode, inject, injectRootLimpMode, internalImportProvidersFrom, isClassProvider, isComponentDef, isComponentHost, isContentQueryHost, isCreationMode, isCurrentTNodeParent, isDestroyed, isDirectiveHost, isEnvironmentProviders, isExhaustiveCheckNoChanges, isForwardRef, isInCheckNoChangesMode, isInI18nBlock, isInInjectionContext, isInSkipHydrationBlock, isInjectable, isLContainer, isLView, isProjectionTNode, isRefreshingViews, isRootView, isSignal, isSkipHydrationRootTNode, isStandalone, isTypeProvider, isWritableSignal, keyValueArrayGet, keyValueArrayIndexOf, keyValueArraySet, lastNodeWasCreated, leaveDI, leaveSkipHydrationBlock, leaveView, load, makeEnvironmentProviders, markAncestorsForTraversal, markViewForRefresh, newArray, nextBindingIndex, nextContextImpl, noop, provideBrowserGlobalErrorListeners, provideEnvironmentInitializer, providerToFactory, removeFromArray, removeLViewOnDestroy, renderStringify, requiresRefreshOrTraversal, resetPreOrderHookFlags, resolveForwardRef, runInInjectionContext, runInInjectorProfilerContext, setBindingIndex, setBindingRootForHostBindings, setCurrentDirectiveIndex, setCurrentQueryIndex, setCurrentTNode, setCurrentTNodeAsNotParent, setInI18nBlock, setInjectImplementation, setInjectorProfiler, setInjectorProfilerContext, setIsInCheckNoChangesMode, setIsRefreshingViews, setSelectedIndex, signal, signalAsReadonlyFn, storeCleanupWithContext, storeLViewOnDestroy, stringify, stringifyForError, throwCyclicDependencyError, throwError, throwProviderNotFoundError, truncateMiddle, unwrapLView, unwrapRNode, updateAncestorTraversalFlagsOnAttach, viewAttachedToChangeDetector, viewAttachedToContainer, walkProviderTree, walkUpViews, wasLastNodeCreated, ɵunwrapWritableSignal, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdisableBindings, ɵɵenableBindings, ɵɵinject, ɵɵinvalidFactoryDep, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵresetView, ɵɵrestoreView };
|
|
3892
|
-
//# sourceMappingURL=root_effect_scheduler-
|
|
3906
|
+
export { AFTER_RENDER_SEQUENCES_TO_ADD, CHILD_HEAD, CHILD_TAIL, CLEANUP, CONTAINER_HEADER_OFFSET, CONTEXT, ChangeDetectionScheduler, CheckNoChangesMode, DECLARATION_COMPONENT_VIEW, DECLARATION_LCONTAINER, DECLARATION_VIEW, DEHYDRATED_VIEWS, DOCUMENT, DestroyRef, EFFECTS, EFFECTS_TO_SCHEDULE, EMBEDDED_VIEW_INJECTOR, EMPTY_ARRAY, EMPTY_OBJ, ENVIRONMENT, ENVIRONMENT_INITIALIZER, EffectScheduler, EnvironmentInjector, ErrorHandler, FLAGS, HEADER_OFFSET, HOST, HYDRATION, ID, INJECTOR$1 as INJECTOR, INJECTOR as INJECTOR$1, INJECTOR_DEF_TYPES, INJECTOR_SCOPE, INTERNAL_APPLICATION_ERROR_HANDLER, InjectionToken, Injector, MATH_ML_NAMESPACE, MOVED_VIEWS, NATIVE, NEXT, NG_COMP_DEF, NG_DIR_DEF, NG_ELEMENT_ID, NG_FACTORY_DEF, NG_INJ_DEF, NG_MOD_DEF, NG_PIPE_DEF, NG_PROV_DEF, NodeInjectorDestroyRef, NullInjector, ON_DESTROY_HOOKS, PARENT, PREORDER_HOOK_FLAGS, PROVIDED_ZONELESS, PendingTasks, PendingTasksInternal, QUERIES, R3Injector, REACTIVE_TEMPLATE_CONSUMER, RENDERER, RuntimeError, SCHEDULE_IN_ROOT_ZONE, SVG_NAMESPACE, TVIEW, T_HOST, VIEW_REFS, ViewContext, XSS_SECURITY_URL, ZONELESS_ENABLED, ZONELESS_SCHEDULER_DISABLED, _global, addToArray, arrayEquals, arrayInsert2, arraySplice, assertComponentType, assertDefined, assertDirectiveDef, assertDomNode, assertElement, assertEqual, assertFirstCreatePass, assertFirstUpdatePass, assertFunction, assertGreaterThan, assertGreaterThanOrEqual, assertHasParent, assertInInjectionContext, assertIndexInDeclRange, assertIndexInExpandoRange, assertIndexInRange, assertInjectImplementationNotEqual, assertLContainer, assertLView, assertLessThan, assertNgModuleType, assertNodeInjector, assertNotDefined, assertNotEqual, assertNotInReactiveContext, assertNotReactive, assertNotSame, assertNumber, assertNumberInRange, assertOneOf, assertParentView, assertProjectionSlots, assertSame, assertString, assertTIcu, assertTNode, assertTNodeForLView, assertTNodeForTView, attachInjectFlag, concatStringsWithSpace, convertToBitFlags, createInjector, createInjectorWithoutInjectorInstances, debugStringifyTypeForError, decreaseElementDepthCount, deepForEach, defineInjectable, emitEffectCreatedEvent, emitInjectEvent, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, emitProviderConfiguredEvent, enterDI, enterSkipHydrationBlock, enterView, errorHandlerEnvironmentInitializer, fillProperties, flatten, formatRuntimeError, forwardRef, getBindingIndex, getBindingRoot, getBindingsEnabled, getClosureSafeProperty, getComponentDef, getComponentLViewByIndex, getConstant, getContextLView, getCurrentDirectiveDef, getCurrentDirectiveIndex, getCurrentParentTNode, getCurrentQueryIndex, getCurrentTNode, getCurrentTNodePlaceholderOk, getDirectiveDef, getElementDepthCount, getFactoryDef, getInjectableDef, getInjectorDef, getLView, getLViewParent, getNamespace, getNativeByIndex, getNativeByTNode, getNativeByTNodeOrNull, getNgModuleDef, getNgModuleDefOrThrow, getNullInjector, getOrCreateLViewCleanup, getOrCreateTViewCleanup, getPipeDef, getSelectedIndex, getSelectedTNode, getTNode, getTView, hasI18n, importProvidersFrom, increaseElementDepthCount, incrementBindingIndex, initNgDevMode, inject, injectRootLimpMode, internalImportProvidersFrom, isClassProvider, isComponentDef, isComponentHost, isContentQueryHost, isCreationMode, isCurrentTNodeParent, isDestroyed, isDirectiveHost, isEnvironmentProviders, isExhaustiveCheckNoChanges, isForwardRef, isInCheckNoChangesMode, isInI18nBlock, isInInjectionContext, isInSkipHydrationBlock, isInjectable, isLContainer, isLView, isProjectionTNode, isRefreshingViews, isRootView, isSignal, isSkipHydrationRootTNode, isStandalone, isTypeProvider, isWritableSignal, keyValueArrayGet, keyValueArrayIndexOf, keyValueArraySet, lastNodeWasCreated, leaveDI, leaveSkipHydrationBlock, leaveView, load, makeEnvironmentProviders, markAncestorsForTraversal, markViewForRefresh, newArray, nextBindingIndex, nextContextImpl, noop, provideBrowserGlobalErrorListeners, provideEnvironmentInitializer, providerToFactory, removeFromArray, removeLViewOnDestroy, renderStringify, requiresRefreshOrTraversal, resetPreOrderHookFlags, resolveForwardRef, runInInjectionContext, runInInjectorProfilerContext, setBindingIndex, setBindingRootForHostBindings, setCurrentDirectiveIndex, setCurrentQueryIndex, setCurrentTNode, setCurrentTNodeAsNotParent, setInI18nBlock, setInjectImplementation, setInjectorProfiler, setInjectorProfilerContext, setIsInCheckNoChangesMode, setIsRefreshingViews, setSelectedIndex, signal, signalAsReadonlyFn, storeCleanupWithContext, storeLViewOnDestroy, stringify, stringifyForError, throwCyclicDependencyError, throwError, throwProviderNotFoundError, truncateMiddle, unwrapLView, unwrapRNode, updateAncestorTraversalFlagsOnAttach, viewAttachedToChangeDetector, viewAttachedToContainer, walkProviderTree, walkUpViews, wasLastNodeCreated, ɵunwrapWritableSignal, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdisableBindings, ɵɵenableBindings, ɵɵinject, ɵɵinvalidFactoryDep, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵresetView, ɵɵrestoreView };
|
|
3907
|
+
//# sourceMappingURL=root_effect_scheduler-C95A9imp.mjs.map
|