UNPKG

@rbxts/silo

Version:
18 lines (17 loc) 578 B
import { Silo } from "./types"; declare type SiloMap<T> = { [K in keyof T]: T[K] extends Silo<infer S, infer M> ? Silo<S, M> : never; }; declare type CombinedState<T> = { [K in keyof T]: T[K] extends Silo<infer S, infer M> ? Silo<S, M>["initialState"] : never; }; declare type CombinedSilo<S extends SiloMap<S>> = Silo<CombinedState<S>, {}> & { all: SiloMap<S>; }; /** * Combine silos. * @param silos Silos to combine * @returns Combined silos */ export declare function combineSilos<S extends SiloMap<S>>(silos: S): CombinedSilo<S>; export {};