UNPKG

ngrx-reducer-effects

Version:

Return side-effects as data from your NgRx reducers

38 lines (37 loc) 1.75 kB
import { unsubscribeBrand } from './functions'; import { Observable, Subscription } from 'rxjs'; import { Action } from '@ngrx/store'; import { InjectionToken, Type } from '@angular/core'; import { EffectConfig } from './effect-config'; export declare type Inject = <T>(token: Type<T> | InjectionToken<T>) => T; export declare type Operand<T> = Observable<T> | Promise<T> | UnsubscribeOperation; export declare type SubscriptionToken = number & { __brand: 'SubscriptionToken'; }; export declare type Cancellable<T> = Subscription | AbortController; export declare type CancellationToken = number & { __brand: 'CancellationToken'; }; export declare type UnsubscribeOperation = { __brand: typeof unsubscribeBrand; subscriptionToken: SubscriptionToken; }; export declare type ObservableEffect<T> = { operation: (inject: Inject) => Observable<T>; next?: (value: T) => Action; error?: (err: any) => Action; complete?: () => Action; subscribe?: (token: SubscriptionToken) => Action; }; export declare type PromiseEffect<T> = { operation: (inject: Inject) => Promise<T>; resolve?: (value: T) => Action; reject?: (err: any) => Action; }; export declare type UnsubscriptionEffect<T> = { operation: (inject: Inject) => UnsubscribeOperation; unsubscribe?: (token: CancellationToken) => Action; }; export declare function isObservableEffect<E>(effect: EffectConfig<E>, operand: Operand<E>): effect is ObservableEffect<E>; export declare function isPromiseEffect<E>(effect: EffectConfig<E>, operand: Operand<E>): effect is PromiseEffect<E>; export declare function isUnsubscriptionEffect<E>(effect: EffectConfig<E>, operand: Operand<E>): effect is UnsubscriptionEffect<E>;