UNPKG

@idiosync/react-observable

Version:

State management control layer for React projects

19 lines (18 loc) 1 kB
import { Duckservable, Observable } from '../types/observable'; import { Store } from '../types/store'; export declare const getStoreObservable: <T>(callback: (store: Store) => Observable<T>) => Observable<T>; /** * Merges multiple store objects using spread syntax. * Later objects take precedence over earlier ones. * Throws an error if any input is not an object. */ type DeepMerge<T, U> = { [K in keyof T | keyof U]: K extends keyof T ? K extends keyof U ? T[K] extends Record<string, any> ? U[K] extends Record<string, any> ? DeepMerge<T[K], U[K]> : U[K] : U[K] : T[K] : K extends keyof U ? U[K] : never; }; type DeepMergeAll<T extends readonly any[]> = T extends readonly [ infer First, ...infer Rest ] ? Rest extends readonly any[] ? DeepMerge<First, DeepMergeAll<Rest>> : First : {}; type StoreObject = Record<string, Record<string, Duckservable>>; export declare const mergeStoreObjects: <const S extends readonly StoreObject[]>(...storeObjects: S) => DeepMergeAll<S>; export {};