@angular/core 19.1.5 → 19.2.0-next.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.
- package/fesm2022/core.mjs +1060 -833
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -2
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +28 -17
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +4 -4
- package/index.d.ts +82 -30
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +3 -3
- package/schematics/bundles/{apply_import_manager-57619f3c.js → apply_import_manager-deecd687.js} +3 -3
- package/schematics/bundles/{checker-ce908760.js → checker-78667e44.js} +391 -99
- package/schematics/bundles/cleanup-unused-imports.js +6 -6
- package/schematics/bundles/{compiler_host-33b24174.js → compiler_host-38c8eab2.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +5 -5
- package/schematics/bundles/{imports-31a38653.js → imports-abe29092.js} +1 -1
- package/schematics/bundles/{index-d6e51169.js → index-6713e562.js} +4 -4
- package/schematics/bundles/{index-59a1204f.js → index-de135c2f.js} +4 -4
- package/schematics/bundles/inject-migration.js +6 -6
- package/schematics/bundles/{leading_space-6e7a8ec6.js → leading_space-d190b83b.js} +1 -1
- package/schematics/bundles/{migrate_ts_type_references-2c37e645.js → migrate_ts_type_references-e6411f51.js} +6 -6
- package/schematics/bundles/{nodes-88c2157f.js → nodes-a9f0b985.js} +2 -2
- package/schematics/bundles/output-migration.js +6 -6
- package/schematics/bundles/pending-tasks.js +5 -5
- package/schematics/bundles/{program-5512058c.js → program-b0d98952.js} +26 -100
- package/schematics/bundles/{project_tsconfig_paths-6c9cde78.js → project_tsconfig_paths-e9ccccbf.js} +1 -1
- package/schematics/bundles/provide-initializer.js +5 -5
- package/schematics/bundles/route-lazy-loading.js +4 -4
- 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 +8 -8
- package/testing/index.d.ts +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.
|
|
2
|
+
* @license Angular v19.2.0-next.0
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { assertInInjectionContext, inject, DestroyRef, ɵRuntimeError, ɵgetOutputDestroyRef, Injector, effect, untracked, ɵmicrotaskEffect, assertNotInReactiveContext, signal, computed, PendingTasks, resource } from '@angular/core';
|
|
8
|
-
import { Observable, ReplaySubject
|
|
9
|
-
import { takeUntil
|
|
8
|
+
import { Observable, ReplaySubject } from 'rxjs';
|
|
9
|
+
import { takeUntil } from 'rxjs/operators';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Operator which completes the Observable when the calling context (component, directive, service,
|
|
@@ -314,21 +314,32 @@ function rxResource(opts) {
|
|
|
314
314
|
opts?.injector || assertInInjectionContext(rxResource);
|
|
315
315
|
return resource({
|
|
316
316
|
...opts,
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
//
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
317
|
+
stream: (params) => {
|
|
318
|
+
let sub;
|
|
319
|
+
// Track the abort listener so it can be removed if the Observable completes (as a memory
|
|
320
|
+
// optimization).
|
|
321
|
+
const onAbort = () => sub.unsubscribe();
|
|
322
|
+
params.abortSignal.addEventListener('abort', onAbort);
|
|
323
|
+
// Start off stream as undefined.
|
|
324
|
+
const stream = signal({ value: undefined });
|
|
325
|
+
let resolve;
|
|
326
|
+
const promise = new Promise((r) => (resolve = r));
|
|
327
|
+
function send(value) {
|
|
328
|
+
stream.set(value);
|
|
329
|
+
resolve?.(stream);
|
|
330
|
+
resolve = undefined;
|
|
331
|
+
}
|
|
332
|
+
sub = opts.loader(params).subscribe({
|
|
333
|
+
next: (value) => send({ value }),
|
|
334
|
+
error: (error) => send({ error }),
|
|
335
|
+
complete: () => {
|
|
336
|
+
if (resolve) {
|
|
337
|
+
send({ error: new Error('Resource completed before producing a value') });
|
|
338
|
+
}
|
|
339
|
+
params.abortSignal.removeEventListener('abort', onAbort);
|
|
340
|
+
},
|
|
331
341
|
});
|
|
342
|
+
return promise;
|
|
332
343
|
},
|
|
333
344
|
});
|
|
334
345
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rxjs-interop.mjs","sources":["../../../../../../packages/core/rxjs-interop/src/take_until_destroyed.ts","../../../../../../packages/core/rxjs-interop/src/output_from_observable.ts","../../../../../../packages/core/rxjs-interop/src/output_to_observable.ts","../../../../../../packages/core/rxjs-interop/src/to_observable.ts","../../../../../../packages/core/rxjs-interop/src/to_signal.ts","../../../../../../packages/core/rxjs-interop/src/pending_until_event.ts","../../../../../../packages/core/rxjs-interop/src/rx_resource.ts","../../../../../../packages/core/rxjs-interop/rxjs-interop.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 {assertInInjectionContext, DestroyRef, inject} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * Operator which completes the Observable when the calling context (component, directive, service,\n * etc) is destroyed.\n *\n * @param destroyRef optionally, the `DestroyRef` representing the current context. This can be\n * passed explicitly to use `takeUntilDestroyed` outside of an [injection\n * context](guide/di/dependency-injection-context). Otherwise, the current `DestroyRef` is injected.\n *\n * @publicApi\n */\nexport function takeUntilDestroyed<T>(destroyRef?: DestroyRef): MonoTypeOperatorFunction<T> {\n if (!destroyRef) {\n assertInInjectionContext(takeUntilDestroyed);\n destroyRef = inject(DestroyRef);\n }\n\n const destroyed$ = new Observable<void>((observer) => {\n const unregisterFn = destroyRef!.onDestroy(observer.next.bind(observer));\n return unregisterFn;\n });\n\n return <T>(source: Observable<T>) => {\n return source.pipe(takeUntil(destroyed$));\n };\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 assertInInjectionContext,\n DestroyRef,\n inject,\n OutputOptions,\n OutputRef,\n OutputRefSubscription,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {takeUntilDestroyed} from './take_until_destroyed';\n\n/**\n * Implementation of `OutputRef` that emits values from\n * an RxJS observable source.\n *\n * @internal\n */\nclass OutputFromObservableRef<T> implements OutputRef<T> {\n private destroyed = false;\n\n destroyRef = inject(DestroyRef);\n\n constructor(private source: Observable<T>) {\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n });\n }\n\n subscribe(callbackFn: (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 // Stop yielding more values when the directive/component is already destroyed.\n const subscription = this.source.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: (value) => callbackFn(value),\n });\n\n return {\n unsubscribe: () => subscription.unsubscribe(),\n };\n }\n}\n\n/**\n * Declares an Angular output that is using an RxJS observable as a source\n * for events dispatched to parent subscribers.\n *\n * The behavior for an observable as source is defined as followed:\n * 1. New values are forwarded to the Angular output (next notifications).\n * 2. Errors notifications are not handled by Angular. You need to handle these manually.\n * For example by using `catchError`.\n * 3. Completion notifications stop the output from emitting new values.\n *\n * @usageNotes\n * Initialize an output in your directive by declaring a\n * class field and initializing it with the `outputFromObservable()` function.\n *\n * ```ts\n * @Directive({..})\n * export class MyDir {\n * nameChange$ = <some-observable>;\n * nameChange = outputFromObservable(this.nameChange$);\n * }\n * ```\n *\n * @publicApi\n */\nexport function outputFromObservable<T>(\n observable: Observable<T>,\n opts?: OutputOptions,\n): OutputRef<T> {\n ngDevMode && assertInInjectionContext(outputFromObservable);\n return new OutputFromObservableRef<T>(observable);\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 {OutputRef, ɵgetOutputDestroyRef} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * Converts an Angular output declared via `output()` or `outputFromObservable()`\n * to an observable.\n *\n * You can subscribe to the output via `Observable.subscribe` then.\n *\n * @publicApi\n */\nexport function outputToObservable<T>(ref: OutputRef<T>): Observable<T> {\n const destroyRef = ɵgetOutputDestroyRef(ref);\n\n return new Observable<T>((observer) => {\n // Complete the observable upon directive/component destroy.\n // Note: May be `undefined` if an `EventEmitter` is declared outside\n // of an injection context.\n destroyRef?.onDestroy(() => observer.complete());\n\n const subscription = ref.subscribe((v) => observer.next(v));\n return () => subscription.unsubscribe();\n });\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 assertInInjectionContext,\n DestroyRef,\n effect,\n inject,\n Injector,\n Signal,\n untracked,\n ɵmicrotaskEffect as microtaskEffect,\n} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\n\n/**\n * Options for `toObservable`.\n *\n * @developerPreview\n */\nexport interface ToObservableOptions {\n /**\n * The `Injector` to use when creating the underlying `effect` which watches the signal.\n *\n * If this isn't specified, the current [injection context](guide/di/dependency-injection-context)\n * will be used.\n */\n injector?: Injector;\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @developerPreview\n */\nexport function toObservable<T>(source: Signal<T>, options?: ToObservableOptions): Observable<T> {\n !options?.injector && assertInInjectionContext(toObservable);\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject<T>(1);\n\n const watcher = effect(\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n {injector, manualCleanup: true},\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\n}\n\nexport function toObservableMicrotask<T>(\n source: Signal<T>,\n options?: ToObservableOptions,\n): Observable<T> {\n !options?.injector && assertInInjectionContext(toObservable);\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject<T>(1);\n\n const watcher = microtaskEffect(\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n {injector, manualCleanup: true},\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\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 assertInInjectionContext,\n assertNotInReactiveContext,\n computed,\n DestroyRef,\n inject,\n Injector,\n signal,\n Signal,\n WritableSignal,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {ValueEqualityFn} from '@angular/core/primitives/signals';\nimport {Observable, Subscribable} from 'rxjs';\n\n/**\n * Options for `toSignal`.\n *\n * @publicApi\n */\nexport interface ToSignalOptions<T> {\n /**\n * Initial value for the signal produced by `toSignal`.\n *\n * This will be the value of the signal until the observable emits its first value.\n */\n initialValue?: unknown;\n\n /**\n * Whether to require that the observable emits synchronously when `toSignal` subscribes.\n *\n * If this is `true`, `toSignal` will assert that the observable produces a value immediately upon\n * subscription. Setting this option removes the need to either deal with `undefined` in the\n * signal type or provide an `initialValue`, at the cost of a runtime error if this requirement is\n * not met.\n */\n requireSync?: boolean;\n\n /**\n * `Injector` which will provide the `DestroyRef` used to clean up the Observable subscription.\n *\n * If this is not provided, a `DestroyRef` will be retrieved from the current [injection\n * context](guide/di/dependency-injection-context), unless manual cleanup is requested.\n */\n injector?: Injector;\n\n /**\n * Whether the subscription should be automatically cleaned up (via `DestroyRef`) when\n * `toSignal`'s creation context is destroyed.\n *\n * If manual cleanup is enabled, then `DestroyRef` is not used, and the subscription will persist\n * until the `Observable` itself completes.\n */\n manualCleanup?: boolean;\n\n /**\n * Whether `toSignal` should throw errors from the Observable error channel back to RxJS, where\n * they'll be processed as uncaught exceptions.\n *\n * In practice, this means that the signal returned by `toSignal` will keep returning the last\n * good value forever, as Observables which error produce no further values. This option emulates\n * the behavior of the `async` pipe.\n */\n rejectErrors?: boolean;\n\n /**\n * A comparison function which defines equality for values emitted by the observable.\n *\n * Equality comparisons are executed against the initial value if one is provided.\n */\n equal?: ValueEqualityFn<T>;\n}\n\n// Base case: no options -> `undefined` in the result type.\nexport function toSignal<T>(source: Observable<T> | Subscribable<T>): Signal<T | undefined>;\n// Options with `undefined` initial value and no `requiredSync` -> `undefined`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | undefined>> & {\n initialValue?: undefined;\n requireSync?: false;\n },\n): Signal<T | undefined>;\n// Options with `null` initial value -> `null`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | null>> & {initialValue?: null; requireSync?: false},\n): Signal<T | null>;\n// Options with `undefined` initial value and `requiredSync` -> strict result type.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T>> & {initialValue?: undefined; requireSync: true},\n): Signal<T>;\n// Options with a more specific initial value type.\nexport function toSignal<T, const U extends T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | U>> & {initialValue: U; requireSync?: false},\n): Signal<T | U>;\n\n/**\n * Get the current value of an `Observable` as a reactive `Signal`.\n *\n * `toSignal` returns a `Signal` which provides synchronous reactive access to values produced\n * by the given `Observable`, by subscribing to that `Observable`. The returned `Signal` will always\n * have the most recent value emitted by the subscription, and will throw an error if the\n * `Observable` errors.\n *\n * With `requireSync` set to `true`, `toSignal` will assert that the `Observable` produces a value\n * immediately upon subscription. No `initialValue` is needed in this case, and the returned signal\n * does not include an `undefined` type.\n *\n * By default, the subscription will be automatically cleaned up when the current [injection\n * context](guide/di/dependency-injection-context) is destroyed. For example, when `toSignal` is\n * called during the construction of a component, the subscription will be cleaned up when the\n * component is destroyed. If an injection context is not available, an explicit `Injector` can be\n * passed instead.\n *\n * If the subscription should persist until the `Observable` itself completes, the `manualCleanup`\n * option can be specified instead, which disables the automatic subscription teardown. No injection\n * context is needed in this configuration as well.\n *\n * @developerPreview\n */\nexport function toSignal<T, U = undefined>(\n source: Observable<T> | Subscribable<T>,\n options?: ToSignalOptions<T | U> & {initialValue?: U},\n): Signal<T | U> {\n ngDevMode &&\n assertNotInReactiveContext(\n toSignal,\n 'Invoking `toSignal` causes new subscriptions every time. ' +\n 'Consider moving `toSignal` outside of the reactive context and read the signal value where needed.',\n );\n\n const requiresCleanup = !options?.manualCleanup;\n requiresCleanup && !options?.injector && assertInInjectionContext(toSignal);\n const cleanupRef = requiresCleanup\n ? (options?.injector?.get(DestroyRef) ?? inject(DestroyRef))\n : null;\n\n const equal = makeToSignalEqual(options?.equal);\n\n // Note: T is the Observable value type, and U is the initial value type. They don't have to be\n // the same - the returned signal gives values of type `T`.\n let state: WritableSignal<State<T | U>>;\n if (options?.requireSync) {\n // Initially the signal is in a `NoValue` state.\n state = signal({kind: StateKind.NoValue}, {equal});\n } else {\n // If an initial value was passed, use it. Otherwise, use `undefined` as the initial value.\n state = signal<State<T | U>>(\n {kind: StateKind.Value, value: options?.initialValue as U},\n {equal},\n );\n }\n\n // Note: This code cannot run inside a reactive context (see assertion above). If we'd support\n // this, we would subscribe to the observable outside of the current reactive context, avoiding\n // that side-effect signal reads/writes are attribute to the current consumer. The current\n // consumer only needs to be notified when the `state` signal changes through the observable\n // subscription. Additional context (related to async pipe):\n // https://github.com/angular/angular/pull/50522.\n const sub = source.subscribe({\n next: (value) => state.set({kind: StateKind.Value, value}),\n error: (error) => {\n if (options?.rejectErrors) {\n // Kick the error back to RxJS. It will be caught and rethrown in a macrotask, which causes\n // the error to end up as an uncaught exception.\n throw error;\n }\n state.set({kind: StateKind.Error, error});\n },\n // Completion of the Observable is meaningless to the signal. Signals don't have a concept of\n // \"complete\".\n });\n\n if (options?.requireSync && state().kind === StateKind.NoValue) {\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n\n // Unsubscribe when the current context is destroyed, if requested.\n cleanupRef?.onDestroy(sub.unsubscribe.bind(sub));\n\n // The actual returned signal is a `computed` of the `State` signal, which maps the various states\n // to either values or errors.\n return computed(\n () => {\n const current = state();\n switch (current.kind) {\n case StateKind.Value:\n return current.value;\n case StateKind.Error:\n throw current.error;\n case StateKind.NoValue:\n // This shouldn't really happen because the error is thrown on creation.\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n },\n {equal: options?.equal},\n );\n}\n\nfunction makeToSignalEqual<T>(\n userEquality: ValueEqualityFn<T> = Object.is,\n): ValueEqualityFn<State<T>> {\n return (a, b) =>\n a.kind === StateKind.Value && b.kind === StateKind.Value && userEquality(a.value, b.value);\n}\n\nconst enum StateKind {\n NoValue,\n Value,\n Error,\n}\n\ninterface NoValueState {\n kind: StateKind.NoValue;\n}\n\ninterface ValueState<T> {\n kind: StateKind.Value;\n value: T;\n}\n\ninterface ErrorState {\n kind: StateKind.Error;\n error: unknown;\n}\n\ntype State<T> = NoValueState | ValueState<T> | ErrorState;\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 {assertInInjectionContext, PendingTasks, inject, Injector} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable} from 'rxjs';\n\n/**\n * Operator which makes the application unstable until the observable emits, complets, errors, or is unsubscribed.\n *\n * Use this operator in observables whose subscriptions are important for rendering and should be included in SSR serialization.\n *\n * @param injector The `Injector` to use during creation. If this is not provided, the current injection context will be used instead (via `inject`).\n *\n * @experimental\n */\nexport function pendingUntilEvent<T>(injector?: Injector): MonoTypeOperatorFunction<T> {\n if (injector === undefined) {\n assertInInjectionContext(pendingUntilEvent);\n injector = inject(Injector);\n }\n const taskService = injector.get(PendingTasks);\n\n return (sourceObservable) => {\n return new Observable<T>((originalSubscriber) => {\n // create a new task on subscription\n const removeTask = taskService.add();\n\n let cleanedUp = false;\n function cleanupTask() {\n if (cleanedUp) {\n return;\n }\n\n removeTask();\n cleanedUp = true;\n }\n\n const innerSubscription = sourceObservable.subscribe({\n next: (v) => {\n originalSubscriber.next(v);\n cleanupTask();\n },\n complete: () => {\n originalSubscriber.complete();\n cleanupTask();\n },\n error: (e) => {\n originalSubscriber.error(e);\n cleanupTask();\n },\n });\n innerSubscription.add(() => {\n originalSubscriber.unsubscribe();\n cleanupTask();\n });\n return innerSubscription;\n });\n };\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 assertInInjectionContext,\n ResourceOptions,\n resource,\n ResourceLoaderParams,\n ResourceRef,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\n/**\n * Like `ResourceOptions` but uses an RxJS-based `loader`.\n *\n * @experimental\n */\nexport interface RxResourceOptions<T, R> extends Omit<ResourceOptions<T, R>, 'loader'> {\n loader: (params: ResourceLoaderParams<R>) => Observable<T>;\n}\n\n/**\n * Like `resource` but uses an RxJS based `loader` which maps the request to an `Observable` of the\n * resource's value. Like `firstValueFrom`, only the first emission of the Observable is considered.\n *\n * @experimental\n */\nexport function rxResource<T, R>(opts: RxResourceOptions<T, R>): ResourceRef<T | undefined> {\n opts?.injector || assertInInjectionContext(rxResource);\n return resource<T, R>({\n ...opts,\n loader: (params) => {\n const cancelled = new Subject<void>();\n params.abortSignal.addEventListener('abort', () => cancelled.next());\n\n // Note: this is identical to `firstValueFrom` which we can't use,\n // because at the time of writing, `core` still supports rxjs 6.x.\n return new Promise<T>((resolve, reject) => {\n opts\n .loader(params)\n .pipe(take(1), takeUntil(cancelled))\n .subscribe({\n next: resolve,\n error: reject,\n complete: () => reject(new Error('Resource completed before producing a value')),\n });\n });\n },\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["microtaskEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rxjs-interop.mjs","sources":["../../../../../../packages/core/rxjs-interop/src/take_until_destroyed.ts","../../../../../../packages/core/rxjs-interop/src/output_from_observable.ts","../../../../../../packages/core/rxjs-interop/src/output_to_observable.ts","../../../../../../packages/core/rxjs-interop/src/to_observable.ts","../../../../../../packages/core/rxjs-interop/src/to_signal.ts","../../../../../../packages/core/rxjs-interop/src/pending_until_event.ts","../../../../../../packages/core/rxjs-interop/src/rx_resource.ts","../../../../../../packages/core/rxjs-interop/rxjs-interop.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 {assertInInjectionContext, DestroyRef, inject} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * Operator which completes the Observable when the calling context (component, directive, service,\n * etc) is destroyed.\n *\n * @param destroyRef optionally, the `DestroyRef` representing the current context. This can be\n * passed explicitly to use `takeUntilDestroyed` outside of an [injection\n * context](guide/di/dependency-injection-context). Otherwise, the current `DestroyRef` is injected.\n *\n * @publicApi\n */\nexport function takeUntilDestroyed<T>(destroyRef?: DestroyRef): MonoTypeOperatorFunction<T> {\n if (!destroyRef) {\n assertInInjectionContext(takeUntilDestroyed);\n destroyRef = inject(DestroyRef);\n }\n\n const destroyed$ = new Observable<void>((observer) => {\n const unregisterFn = destroyRef!.onDestroy(observer.next.bind(observer));\n return unregisterFn;\n });\n\n return <T>(source: Observable<T>) => {\n return source.pipe(takeUntil(destroyed$));\n };\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 assertInInjectionContext,\n DestroyRef,\n inject,\n OutputOptions,\n OutputRef,\n OutputRefSubscription,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {takeUntilDestroyed} from './take_until_destroyed';\n\n/**\n * Implementation of `OutputRef` that emits values from\n * an RxJS observable source.\n *\n * @internal\n */\nclass OutputFromObservableRef<T> implements OutputRef<T> {\n private destroyed = false;\n\n destroyRef = inject(DestroyRef);\n\n constructor(private source: Observable<T>) {\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n });\n }\n\n subscribe(callbackFn: (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 // Stop yielding more values when the directive/component is already destroyed.\n const subscription = this.source.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: (value) => callbackFn(value),\n });\n\n return {\n unsubscribe: () => subscription.unsubscribe(),\n };\n }\n}\n\n/**\n * Declares an Angular output that is using an RxJS observable as a source\n * for events dispatched to parent subscribers.\n *\n * The behavior for an observable as source is defined as followed:\n * 1. New values are forwarded to the Angular output (next notifications).\n * 2. Errors notifications are not handled by Angular. You need to handle these manually.\n * For example by using `catchError`.\n * 3. Completion notifications stop the output from emitting new values.\n *\n * @usageNotes\n * Initialize an output in your directive by declaring a\n * class field and initializing it with the `outputFromObservable()` function.\n *\n * ```ts\n * @Directive({..})\n * export class MyDir {\n * nameChange$ = <some-observable>;\n * nameChange = outputFromObservable(this.nameChange$);\n * }\n * ```\n *\n * @publicApi\n */\nexport function outputFromObservable<T>(\n observable: Observable<T>,\n opts?: OutputOptions,\n): OutputRef<T> {\n ngDevMode && assertInInjectionContext(outputFromObservable);\n return new OutputFromObservableRef<T>(observable);\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 {OutputRef, ɵgetOutputDestroyRef} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * Converts an Angular output declared via `output()` or `outputFromObservable()`\n * to an observable.\n *\n * You can subscribe to the output via `Observable.subscribe` then.\n *\n * @publicApi\n */\nexport function outputToObservable<T>(ref: OutputRef<T>): Observable<T> {\n const destroyRef = ɵgetOutputDestroyRef(ref);\n\n return new Observable<T>((observer) => {\n // Complete the observable upon directive/component destroy.\n // Note: May be `undefined` if an `EventEmitter` is declared outside\n // of an injection context.\n destroyRef?.onDestroy(() => observer.complete());\n\n const subscription = ref.subscribe((v) => observer.next(v));\n return () => subscription.unsubscribe();\n });\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 assertInInjectionContext,\n DestroyRef,\n effect,\n inject,\n Injector,\n Signal,\n untracked,\n ɵmicrotaskEffect as microtaskEffect,\n} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\n\n/**\n * Options for `toObservable`.\n *\n * @developerPreview\n */\nexport interface ToObservableOptions {\n /**\n * The `Injector` to use when creating the underlying `effect` which watches the signal.\n *\n * If this isn't specified, the current [injection context](guide/di/dependency-injection-context)\n * will be used.\n */\n injector?: Injector;\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @developerPreview\n */\nexport function toObservable<T>(source: Signal<T>, options?: ToObservableOptions): Observable<T> {\n !options?.injector && assertInInjectionContext(toObservable);\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject<T>(1);\n\n const watcher = effect(\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n {injector, manualCleanup: true},\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\n}\n\nexport function toObservableMicrotask<T>(\n source: Signal<T>,\n options?: ToObservableOptions,\n): Observable<T> {\n !options?.injector && assertInInjectionContext(toObservable);\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject<T>(1);\n\n const watcher = microtaskEffect(\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n {injector, manualCleanup: true},\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\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 assertInInjectionContext,\n assertNotInReactiveContext,\n computed,\n DestroyRef,\n inject,\n Injector,\n signal,\n Signal,\n WritableSignal,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {ValueEqualityFn} from '@angular/core/primitives/signals';\nimport {Observable, Subscribable} from 'rxjs';\n\n/**\n * Options for `toSignal`.\n *\n * @publicApi\n */\nexport interface ToSignalOptions<T> {\n /**\n * Initial value for the signal produced by `toSignal`.\n *\n * This will be the value of the signal until the observable emits its first value.\n */\n initialValue?: unknown;\n\n /**\n * Whether to require that the observable emits synchronously when `toSignal` subscribes.\n *\n * If this is `true`, `toSignal` will assert that the observable produces a value immediately upon\n * subscription. Setting this option removes the need to either deal with `undefined` in the\n * signal type or provide an `initialValue`, at the cost of a runtime error if this requirement is\n * not met.\n */\n requireSync?: boolean;\n\n /**\n * `Injector` which will provide the `DestroyRef` used to clean up the Observable subscription.\n *\n * If this is not provided, a `DestroyRef` will be retrieved from the current [injection\n * context](guide/di/dependency-injection-context), unless manual cleanup is requested.\n */\n injector?: Injector;\n\n /**\n * Whether the subscription should be automatically cleaned up (via `DestroyRef`) when\n * `toSignal`'s creation context is destroyed.\n *\n * If manual cleanup is enabled, then `DestroyRef` is not used, and the subscription will persist\n * until the `Observable` itself completes.\n */\n manualCleanup?: boolean;\n\n /**\n * Whether `toSignal` should throw errors from the Observable error channel back to RxJS, where\n * they'll be processed as uncaught exceptions.\n *\n * In practice, this means that the signal returned by `toSignal` will keep returning the last\n * good value forever, as Observables which error produce no further values. This option emulates\n * the behavior of the `async` pipe.\n */\n rejectErrors?: boolean;\n\n /**\n * A comparison function which defines equality for values emitted by the observable.\n *\n * Equality comparisons are executed against the initial value if one is provided.\n */\n equal?: ValueEqualityFn<T>;\n}\n\n// Base case: no options -> `undefined` in the result type.\nexport function toSignal<T>(source: Observable<T> | Subscribable<T>): Signal<T | undefined>;\n// Options with `undefined` initial value and no `requiredSync` -> `undefined`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | undefined>> & {\n initialValue?: undefined;\n requireSync?: false;\n },\n): Signal<T | undefined>;\n// Options with `null` initial value -> `null`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | null>> & {initialValue?: null; requireSync?: false},\n): Signal<T | null>;\n// Options with `undefined` initial value and `requiredSync` -> strict result type.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T>> & {initialValue?: undefined; requireSync: true},\n): Signal<T>;\n// Options with a more specific initial value type.\nexport function toSignal<T, const U extends T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | U>> & {initialValue: U; requireSync?: false},\n): Signal<T | U>;\n\n/**\n * Get the current value of an `Observable` as a reactive `Signal`.\n *\n * `toSignal` returns a `Signal` which provides synchronous reactive access to values produced\n * by the given `Observable`, by subscribing to that `Observable`. The returned `Signal` will always\n * have the most recent value emitted by the subscription, and will throw an error if the\n * `Observable` errors.\n *\n * With `requireSync` set to `true`, `toSignal` will assert that the `Observable` produces a value\n * immediately upon subscription. No `initialValue` is needed in this case, and the returned signal\n * does not include an `undefined` type.\n *\n * By default, the subscription will be automatically cleaned up when the current [injection\n * context](guide/di/dependency-injection-context) is destroyed. For example, when `toSignal` is\n * called during the construction of a component, the subscription will be cleaned up when the\n * component is destroyed. If an injection context is not available, an explicit `Injector` can be\n * passed instead.\n *\n * If the subscription should persist until the `Observable` itself completes, the `manualCleanup`\n * option can be specified instead, which disables the automatic subscription teardown. No injection\n * context is needed in this configuration as well.\n *\n * @developerPreview\n */\nexport function toSignal<T, U = undefined>(\n source: Observable<T> | Subscribable<T>,\n options?: ToSignalOptions<T | U> & {initialValue?: U},\n): Signal<T | U> {\n ngDevMode &&\n assertNotInReactiveContext(\n toSignal,\n 'Invoking `toSignal` causes new subscriptions every time. ' +\n 'Consider moving `toSignal` outside of the reactive context and read the signal value where needed.',\n );\n\n const requiresCleanup = !options?.manualCleanup;\n requiresCleanup && !options?.injector && assertInInjectionContext(toSignal);\n const cleanupRef = requiresCleanup\n ? (options?.injector?.get(DestroyRef) ?? inject(DestroyRef))\n : null;\n\n const equal = makeToSignalEqual(options?.equal);\n\n // Note: T is the Observable value type, and U is the initial value type. They don't have to be\n // the same - the returned signal gives values of type `T`.\n let state: WritableSignal<State<T | U>>;\n if (options?.requireSync) {\n // Initially the signal is in a `NoValue` state.\n state = signal({kind: StateKind.NoValue}, {equal});\n } else {\n // If an initial value was passed, use it. Otherwise, use `undefined` as the initial value.\n state = signal<State<T | U>>(\n {kind: StateKind.Value, value: options?.initialValue as U},\n {equal},\n );\n }\n\n // Note: This code cannot run inside a reactive context (see assertion above). If we'd support\n // this, we would subscribe to the observable outside of the current reactive context, avoiding\n // that side-effect signal reads/writes are attribute to the current consumer. The current\n // consumer only needs to be notified when the `state` signal changes through the observable\n // subscription. Additional context (related to async pipe):\n // https://github.com/angular/angular/pull/50522.\n const sub = source.subscribe({\n next: (value) => state.set({kind: StateKind.Value, value}),\n error: (error) => {\n if (options?.rejectErrors) {\n // Kick the error back to RxJS. It will be caught and rethrown in a macrotask, which causes\n // the error to end up as an uncaught exception.\n throw error;\n }\n state.set({kind: StateKind.Error, error});\n },\n // Completion of the Observable is meaningless to the signal. Signals don't have a concept of\n // \"complete\".\n });\n\n if (options?.requireSync && state().kind === StateKind.NoValue) {\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n\n // Unsubscribe when the current context is destroyed, if requested.\n cleanupRef?.onDestroy(sub.unsubscribe.bind(sub));\n\n // The actual returned signal is a `computed` of the `State` signal, which maps the various states\n // to either values or errors.\n return computed(\n () => {\n const current = state();\n switch (current.kind) {\n case StateKind.Value:\n return current.value;\n case StateKind.Error:\n throw current.error;\n case StateKind.NoValue:\n // This shouldn't really happen because the error is thrown on creation.\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n },\n {equal: options?.equal},\n );\n}\n\nfunction makeToSignalEqual<T>(\n userEquality: ValueEqualityFn<T> = Object.is,\n): ValueEqualityFn<State<T>> {\n return (a, b) =>\n a.kind === StateKind.Value && b.kind === StateKind.Value && userEquality(a.value, b.value);\n}\n\nconst enum StateKind {\n NoValue,\n Value,\n Error,\n}\n\ninterface NoValueState {\n kind: StateKind.NoValue;\n}\n\ninterface ValueState<T> {\n kind: StateKind.Value;\n value: T;\n}\n\ninterface ErrorState {\n kind: StateKind.Error;\n error: unknown;\n}\n\ntype State<T> = NoValueState | ValueState<T> | ErrorState;\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 {assertInInjectionContext, PendingTasks, inject, Injector} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable} from 'rxjs';\n\n/**\n * Operator which makes the application unstable until the observable emits, complets, errors, or is unsubscribed.\n *\n * Use this operator in observables whose subscriptions are important for rendering and should be included in SSR serialization.\n *\n * @param injector The `Injector` to use during creation. If this is not provided, the current injection context will be used instead (via `inject`).\n *\n * @experimental\n */\nexport function pendingUntilEvent<T>(injector?: Injector): MonoTypeOperatorFunction<T> {\n if (injector === undefined) {\n assertInInjectionContext(pendingUntilEvent);\n injector = inject(Injector);\n }\n const taskService = injector.get(PendingTasks);\n\n return (sourceObservable) => {\n return new Observable<T>((originalSubscriber) => {\n // create a new task on subscription\n const removeTask = taskService.add();\n\n let cleanedUp = false;\n function cleanupTask() {\n if (cleanedUp) {\n return;\n }\n\n removeTask();\n cleanedUp = true;\n }\n\n const innerSubscription = sourceObservable.subscribe({\n next: (v) => {\n originalSubscriber.next(v);\n cleanupTask();\n },\n complete: () => {\n originalSubscriber.complete();\n cleanupTask();\n },\n error: (e) => {\n originalSubscriber.error(e);\n cleanupTask();\n },\n });\n innerSubscription.add(() => {\n originalSubscriber.unsubscribe();\n cleanupTask();\n });\n return innerSubscription;\n });\n };\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 assertInInjectionContext,\n resource,\n ResourceLoaderParams,\n ResourceRef,\n Signal,\n signal,\n BaseResourceOptions,\n} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\n\n/**\n * Like `ResourceOptions` but uses an RxJS-based `loader`.\n *\n * @experimental\n */\nexport interface RxResourceOptions<T, R> extends BaseResourceOptions<T, R> {\n loader: (params: ResourceLoaderParams<R>) => Observable<T>;\n}\n\n/**\n * Like `resource` but uses an RxJS based `loader` which maps the request to an `Observable` of the\n * resource's value. Like `firstValueFrom`, only the first emission of the Observable is considered.\n *\n * @experimental\n */\nexport function rxResource<T, R>(opts: RxResourceOptions<T, R>): ResourceRef<T | undefined> {\n opts?.injector || assertInInjectionContext(rxResource);\n return resource<T, R>({\n ...opts,\n stream: (params) => {\n let sub: Subscription;\n\n // Track the abort listener so it can be removed if the Observable completes (as a memory\n // optimization).\n const onAbort = () => sub.unsubscribe();\n params.abortSignal.addEventListener('abort', onAbort);\n\n // Start off stream as undefined.\n const stream = signal<{value: T} | {error: unknown}>({value: undefined as T});\n let resolve: ((value: Signal<{value: T} | {error: unknown}>) => void) | undefined;\n const promise = new Promise<Signal<{value: T} | {error: unknown}>>((r) => (resolve = r));\n\n function send(value: {value: T} | {error: unknown}): void {\n stream.set(value);\n resolve?.(stream);\n resolve = undefined;\n }\n\n sub = opts.loader(params).subscribe({\n next: (value) => send({value}),\n error: (error) => send({error}),\n complete: () => {\n if (resolve) {\n send({error: new Error('Resource completed before producing a value')});\n }\n params.abortSignal.removeEventListener('abort', onAbort);\n },\n });\n\n return promise;\n },\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["microtaskEffect"],"mappings":"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"}
|
package/fesm2022/testing.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.
|
|
2
|
+
* @license Angular v19.2.0-next.0
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -175,10 +175,10 @@ class TestBedApplicationErrorHandler {
|
|
|
175
175
|
throw e;
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
179
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
178
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.0-next.0", ngImport: i0, type: TestBedApplicationErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
179
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.0-next.0", ngImport: i0, type: TestBedApplicationErrorHandler });
|
|
180
180
|
}
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.0-next.0", ngImport: i0, type: TestBedApplicationErrorHandler, decorators: [{
|
|
182
182
|
type: Injectable
|
|
183
183
|
}] });
|
|
184
184
|
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.
|
|
2
|
+
* @license Angular v19.2.0-next.0
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -1270,6 +1270,29 @@ export declare interface AttributeDecorator {
|
|
|
1270
1270
|
new (name: string): Attribute;
|
|
1271
1271
|
}
|
|
1272
1272
|
|
|
1273
|
+
/**
|
|
1274
|
+
* Options to the `resource` function, for creating a resource.
|
|
1275
|
+
*
|
|
1276
|
+
* @experimental
|
|
1277
|
+
*/
|
|
1278
|
+
export declare interface BaseResourceOptions<T, R> {
|
|
1279
|
+
/**
|
|
1280
|
+
* A reactive function which determines the request to be made. Whenever the request changes, the
|
|
1281
|
+
* loader will be triggered to fetch a new value for the resource.
|
|
1282
|
+
*
|
|
1283
|
+
* If a request function isn't provided, the loader won't rerun unless the resource is reloaded.
|
|
1284
|
+
*/
|
|
1285
|
+
request?: () => R;
|
|
1286
|
+
/**
|
|
1287
|
+
* Equality function used to compare the return value of the loader.
|
|
1288
|
+
*/
|
|
1289
|
+
equal?: ValueEqualityFn<T>;
|
|
1290
|
+
/**
|
|
1291
|
+
* Overrides the `Injector` used by `resource`.
|
|
1292
|
+
*/
|
|
1293
|
+
injector?: Injector;
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1273
1296
|
|
|
1274
1297
|
/**
|
|
1275
1298
|
* Transforms a value (typically a string) to a boolean.
|
|
@@ -6879,7 +6902,7 @@ declare const enum LContainerFlags {
|
|
|
6879
6902
|
declare type LegacyInputPartialMapping = string | [bindingPropertyName: string, classPropertyName: string, transformFunction?: Function];
|
|
6880
6903
|
|
|
6881
6904
|
/**
|
|
6882
|
-
* Creates a writable
|
|
6905
|
+
* Creates a writable signals whose value is initialized and reset by the linked, reactive computation.
|
|
6883
6906
|
*
|
|
6884
6907
|
* @developerPreview
|
|
6885
6908
|
*/
|
|
@@ -6888,7 +6911,7 @@ export declare function linkedSignal<D>(computation: () => D, options?: {
|
|
|
6888
6911
|
}): WritableSignal<D>;
|
|
6889
6912
|
|
|
6890
6913
|
/**
|
|
6891
|
-
* Creates a writable
|
|
6914
|
+
* Creates a writable signals whose value is initialized and reset by the linked, reactive computation.
|
|
6892
6915
|
* This is an advanced API form where the computation has access to the previous value of the signal and the computation result.
|
|
6893
6916
|
*
|
|
6894
6917
|
* Note: The computation is reactive, meaning the linked signal will automatically update whenever any of the signals used within the computation change.
|
|
@@ -8758,6 +8781,18 @@ declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
|
|
|
8758
8781
|
*/
|
|
8759
8782
|
declare type ProjectionSlots = (ɵCssSelectorList | '*')[];
|
|
8760
8783
|
|
|
8784
|
+
/**
|
|
8785
|
+
* Options to the `resource` function, for creating a resource.
|
|
8786
|
+
*
|
|
8787
|
+
* @experimental
|
|
8788
|
+
*/
|
|
8789
|
+
export declare interface PromiseResourceOptions<T, R> extends BaseResourceOptions<T, R> {
|
|
8790
|
+
/**
|
|
8791
|
+
* Loading function which returns a `Promise` of the resource's value for a given request.
|
|
8792
|
+
*/
|
|
8793
|
+
loader: ResourceLoader<T, R>;
|
|
8794
|
+
}
|
|
8795
|
+
|
|
8761
8796
|
/**
|
|
8762
8797
|
* @description
|
|
8763
8798
|
* The provided function is injected at application startup and executed during
|
|
@@ -9794,31 +9829,9 @@ export declare interface ResourceLoaderParams<R> {
|
|
|
9794
9829
|
}
|
|
9795
9830
|
|
|
9796
9831
|
/**
|
|
9797
|
-
* Options to the `resource` function, for creating a resource.
|
|
9798
|
-
*
|
|
9799
9832
|
* @experimental
|
|
9800
9833
|
*/
|
|
9801
|
-
export declare
|
|
9802
|
-
/**
|
|
9803
|
-
* A reactive function which determines the request to be made. Whenever the request changes, the
|
|
9804
|
-
* loader will be triggered to fetch a new value for the resource.
|
|
9805
|
-
*
|
|
9806
|
-
* If a request function isn't provided, the loader won't rerun unless the resource is reloaded.
|
|
9807
|
-
*/
|
|
9808
|
-
request?: () => R;
|
|
9809
|
-
/**
|
|
9810
|
-
* Loading function which returns a `Promise` of the resource's value for a given request.
|
|
9811
|
-
*/
|
|
9812
|
-
loader: ResourceLoader<T, R>;
|
|
9813
|
-
/**
|
|
9814
|
-
* Equality function used to compare the return value of the loader.
|
|
9815
|
-
*/
|
|
9816
|
-
equal?: ValueEqualityFn<T>;
|
|
9817
|
-
/**
|
|
9818
|
-
* Overrides the `Injector` used by `resource`.
|
|
9819
|
-
*/
|
|
9820
|
-
injector?: Injector;
|
|
9821
|
-
}
|
|
9834
|
+
export declare type ResourceOptions<T, R> = PromiseResourceOptions<T, R> | StreamingResourceOptions<T, R>;
|
|
9822
9835
|
|
|
9823
9836
|
/**
|
|
9824
9837
|
* A `WritableResource` created through the `resource` function.
|
|
@@ -9872,6 +9885,17 @@ export declare enum ResourceStatus {
|
|
|
9872
9885
|
Local = 5
|
|
9873
9886
|
}
|
|
9874
9887
|
|
|
9888
|
+
/**
|
|
9889
|
+
* Streaming loader for a `Resource`.
|
|
9890
|
+
*
|
|
9891
|
+
* @experimental
|
|
9892
|
+
*/
|
|
9893
|
+
export declare type ResourceStreamingLoader<T, R> = (param: ResourceLoaderParams<R>) => PromiseLike<Signal<{
|
|
9894
|
+
value: T;
|
|
9895
|
+
} | {
|
|
9896
|
+
error: unknown;
|
|
9897
|
+
}>>;
|
|
9898
|
+
|
|
9875
9899
|
/**
|
|
9876
9900
|
* Injection token for response initialization options.
|
|
9877
9901
|
*
|
|
@@ -10383,6 +10407,19 @@ export declare interface StaticClassSansProvider {
|
|
|
10383
10407
|
*/
|
|
10384
10408
|
export declare type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[];
|
|
10385
10409
|
|
|
10410
|
+
/**
|
|
10411
|
+
* Options to the `resource` function, for creating a resource.
|
|
10412
|
+
*
|
|
10413
|
+
* @experimental
|
|
10414
|
+
*/
|
|
10415
|
+
export declare interface StreamingResourceOptions<T, R> extends BaseResourceOptions<T, R> {
|
|
10416
|
+
/**
|
|
10417
|
+
* Loading function which returns a `Promise` of a signal of the resource's value for a given
|
|
10418
|
+
* request, which can change over time as new values are received from a stream.
|
|
10419
|
+
*/
|
|
10420
|
+
stream: ResourceStreamingLoader<T, R>;
|
|
10421
|
+
}
|
|
10422
|
+
|
|
10386
10423
|
declare const T_HOST = 5;
|
|
10387
10424
|
|
|
10388
10425
|
/**
|
|
@@ -13993,6 +14030,21 @@ export declare class ɵLContext {
|
|
|
13993
14030
|
native: RNode);
|
|
13994
14031
|
}
|
|
13995
14032
|
|
|
14033
|
+
/**
|
|
14034
|
+
* Used to enable lifecycle hooks on the root component.
|
|
14035
|
+
*
|
|
14036
|
+
* Include this feature when calling `renderComponent` if the root component
|
|
14037
|
+
* you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
|
|
14038
|
+
* be called properly.
|
|
14039
|
+
*
|
|
14040
|
+
* Example:
|
|
14041
|
+
*
|
|
14042
|
+
* ```ts
|
|
14043
|
+
* renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
|
|
14044
|
+
* ```
|
|
14045
|
+
*/
|
|
14046
|
+
export declare function ɵLifecycleHooksFeature(): void;
|
|
14047
|
+
|
|
13996
14048
|
/**
|
|
13997
14049
|
* Index of each type of locale data from the locale data array
|
|
13998
14050
|
*/
|
|
@@ -14264,7 +14316,7 @@ export declare interface ɵPipeDef<T> {
|
|
|
14264
14316
|
* Profiler function which the runtime will invoke before and after user code.
|
|
14265
14317
|
*/
|
|
14266
14318
|
export declare interface ɵProfiler {
|
|
14267
|
-
(event: ɵProfilerEvent, instance
|
|
14319
|
+
(event: ɵProfilerEvent, instance?: {} | null, hookOrListener?: (e?: any) => any): void;
|
|
14268
14320
|
}
|
|
14269
14321
|
|
|
14270
14322
|
/**
|
|
@@ -14490,15 +14542,15 @@ export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> {
|
|
|
14490
14542
|
*
|
|
14491
14543
|
*/
|
|
14492
14544
|
export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
|
|
14545
|
+
location: ElementRef;
|
|
14493
14546
|
private _rootLView;
|
|
14547
|
+
private _tNode;
|
|
14494
14548
|
instance: T;
|
|
14495
14549
|
hostView: ɵViewRef<T>;
|
|
14496
14550
|
changeDetectorRef: ChangeDetectorRef;
|
|
14497
14551
|
componentType: Type<T>;
|
|
14498
|
-
location: ElementRef;
|
|
14499
14552
|
private previousInputValues;
|
|
14500
|
-
|
|
14501
|
-
constructor(componentType: Type<T>, _rootLView: LView);
|
|
14553
|
+
constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: LView, _tNode: TElementNode | TContainerNode | TElementContainerNode);
|
|
14502
14554
|
setInput(name: string, value: unknown): void;
|
|
14503
14555
|
get injector(): Injector;
|
|
14504
14556
|
destroy(): void;
|
package/package.json
CHANGED
package/rxjs-interop/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.
|
|
2
|
+
* @license Angular v19.2.0-next.0
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
import { BaseResourceOptions } from '@angular/core';
|
|
8
9
|
import { DestroyRef } from '@angular/core';
|
|
9
10
|
import { Injector } from '@angular/core';
|
|
10
11
|
import { MonoTypeOperatorFunction } from 'rxjs';
|
|
@@ -12,7 +13,6 @@ import { Observable } from 'rxjs';
|
|
|
12
13
|
import { OutputOptions } from '@angular/core';
|
|
13
14
|
import { OutputRef } from '@angular/core';
|
|
14
15
|
import { ResourceLoaderParams } from '@angular/core';
|
|
15
|
-
import { ResourceOptions } from '@angular/core';
|
|
16
16
|
import { ResourceRef } from '@angular/core';
|
|
17
17
|
import { Signal } from '@angular/core';
|
|
18
18
|
import { Subscribable } from 'rxjs';
|
|
@@ -78,7 +78,7 @@ export declare function rxResource<T, R>(opts: RxResourceOptions<T, R>): Resourc
|
|
|
78
78
|
*
|
|
79
79
|
* @experimental
|
|
80
80
|
*/
|
|
81
|
-
export declare interface RxResourceOptions<T, R> extends
|
|
81
|
+
export declare interface RxResourceOptions<T, R> extends BaseResourceOptions<T, R> {
|
|
82
82
|
loader: (params: ResourceLoaderParams<R>) => Observable<T>;
|
|
83
83
|
}
|
|
84
84
|
|
package/schematics/bundles/{apply_import_manager-57619f3c.js → apply_import_manager-deecd687.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.
|
|
3
|
+
* @license Angular v19.2.0-next.0
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,8 +10,8 @@ var core = require('@angular-devkit/core');
|
|
|
10
10
|
var posixPath = require('node:path/posix');
|
|
11
11
|
var os = require('os');
|
|
12
12
|
var ts = require('typescript');
|
|
13
|
-
var checker = require('./checker-
|
|
14
|
-
var program = require('./program-
|
|
13
|
+
var checker = require('./checker-78667e44.js');
|
|
14
|
+
var program = require('./program-b0d98952.js');
|
|
15
15
|
require('path');
|
|
16
16
|
|
|
17
17
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|