@antischematic/angular-state-library
Version:
Reactive state without boilerplate
37 lines (36 loc) • 2.71 kB
TypeScript
import { InjectionToken, Injector, ProviderToken } from "@angular/core";
import { Observable } from "rxjs";
import { CompleteEvent, DispatchEvent, ErrorEvent, ExtractEvents, NextEvent, StoreConfig, ZoneCompatible } from "./interfaces";
export declare function isPlainObject(obj: object): boolean;
export declare function call(target: Record<any, any>, key: string, ...args: any[]): any;
export declare function wrap(target: {
[key: PropertyKey]: any;
}, property: PropertyKey, fn: (this: any, ...args: any[]) => any): boolean;
export declare function noop(): void;
export declare const UID: InjectionToken<() => number>;
export declare function events<T>(token: ProviderToken<T>, injector?: Injector): Observable<ExtractEvents<T, Extract<keyof T, string>>>;
export declare function events<T>(context: T): Observable<ExtractEvents<T, Extract<keyof T, string>>>;
export declare function configureStore(config: StoreConfig): {
provide: InjectionToken<StoreConfig>;
useValue: StoreConfig;
};
export declare function observeInZone<T>(source: Observable<T>, zone: ZoneCompatible): Observable<T>;
export declare function get<T extends {
value: unknown;
}>(token: ProviderToken<T>): T["value"];
export declare function set<T extends {
value: unknown;
next: (value: T["value"]) => void;
}>(token: ProviderToken<T>, value: T["value"]): void;
declare type ActionParams<T> = T extends (...params: infer Params) => any ? Params extends {
length: 1;
} ? Params[0] : Params : never;
export declare function actionEvent<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<DispatchEvent>;
export declare function action<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<ActionParams<T[TKey]>>;
export declare function nextEvent<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<NextEvent>;
export declare function next<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<T[TKey] extends () => infer R ? R extends Observable<infer S> ? S : never : never>;
export declare function errorEvent<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<ErrorEvent>;
export declare function error<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<unknown>;
export declare function completeEvent<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<CompleteEvent>;
export declare function complete<T, TKey extends keyof T>(token: ProviderToken<T>, name: TKey, injector?: Injector): Observable<void>;
export {};