UNPKG

rxjs-observable-store

Version:

A state management solution implemented using RxJS to mimic Redux architecture.

34 lines (33 loc) 8.1 kB
import { Observable } from 'rxjs'; import { Object, Tuple } from 'ts-toolbelt'; declare type Index = string | number | symbol; export declare class Store<S extends object> { state$: Observable<S>; private _state$; protected constructor(initialState: S); get state(): S; setState(nextState: S): void; patchState<P1 extends keyof Object.Path<S, []>>(value: Object.Path<S, [P1]>, part1: P1): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>>(value: Object.Path<S, [P1, P2]>, part1: P1, part2: P2): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>>(value: Object.Path<S, [P1, P2, P3]>, part1: P1, part2: P2, part3: P3): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>>(value: Object.Path<S, [P1, P2, P3, P4]>, part1: P1, part2: P2, part3: P3, part4: P4): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>>(value: Object.Path<S, [P1, P2, P3, P4, P5]>, part1: P1, part2: P2, part3: P3, part4: P4, part5: P5): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>>(value: Object.Path<S, [P1, P2, P3, P4, P5, P6]>, part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>>(value: Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>, part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>, P8 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>>(value: Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8]>, part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7, part8: P8): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>, P8 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>, P9 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8]>>(value: Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8, P9]>, part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7, part8: P8, part9: P9): void; patchState<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>, P8 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>, P9 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8]>, R extends Index[]>(value: Object.Path<S, Tuple.Concat<[P1, P2, P3, P4, P5, P6, P7, P8, P9], R>>, part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7, part8: P8, part9: P9, ...rest: R): void; onChanges<P1 extends keyof Object.Path<S, []>>(part1: P1): Observable<Object.Path<S, [P1]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>>(part1: P1, part2: P2): Observable<Object.Path<S, [P1, P2]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>>(part1: P1, part2: P2, part3: P3): Observable<Object.Path<S, [P1, P2, P3]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>>(part1: P1, part2: P2, part3: P3, part4: P4): Observable<Object.Path<S, [P1, P2, P3, P4]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>>(part1: P1, part2: P2, part3: P3, part4: P4, part5: P5): Observable<Object.Path<S, [P1, P2, P3, P4, P5]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>>(part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6): Observable<Object.Path<S, [P1, P2, P3, P4, P5, P6]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>>(part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7): Observable<Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>, P8 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>>(part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7, part8: P8): Observable<Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>, P8 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>, P9 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8]>>(part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7, part8: P8, part9: P9): Observable<Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8, P9]>>; onChanges<P1 extends keyof Object.Path<S, []>, P2 extends keyof Object.Path<S, [P1]>, P3 extends keyof Object.Path<S, [P1, P2]>, P4 extends keyof Object.Path<S, [P1, P2, P3]>, P5 extends keyof Object.Path<S, [P1, P2, P3, P4]>, P6 extends keyof Object.Path<S, [P1, P2, P3, P4, P5]>, P7 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6]>, P8 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7]>, P9 extends keyof Object.Path<S, [P1, P2, P3, P4, P5, P6, P7, P8]>, R extends Index[]>(part1: P1, part2: P2, part3: P3, part4: P4, part5: P5, part6: P6, part7: P7, part8: P8, part9: P9, ...rest: R): Observable<Object.Path<S, Tuple.Concat<[P1, P2, P3, P4, P5, P6, P7, P8, P9], R>>>; private getUpdatedState; private createStateSubtree; } export {};