UNPKG

patronum

Version:

☄️ Effector utility library delivering modularity and convenience

19 lines (18 loc) 1.02 kB
import { Effect, Event, EventAsReturnType, Store, Unit, UnitTargetable } from 'effector'; type Tuple<T = unknown> = [T] | T[]; type Shape = Record<string, unknown> | Tuple; type Events<Result> = { [Key in keyof Result]: Event<Result[Key]>; }; type ReturnTarget<Result, Target> = Target extends Store<infer S> ? S extends Result ? Store<S> : Store<Result> : Target extends Event<infer P> ? P extends Result ? Event<P> : Event<Result> : Target extends Effect<infer P, infer D, infer F> ? P extends Result ? Effect<P, D, F> : Effect<Result, D, F> : Unit<Result>; export declare function combineEvents<P extends Shape>(config: { events: Events<P>; reset?: Unit<any>; }): EventAsReturnType<P>; export declare function combineEvents<P extends Shape, T extends UnitTargetable<P extends Tuple ? P : Partial<P>>>(config: { events: Events<P>; target: T; reset?: Unit<any>; }): ReturnTarget<P, T>; export declare function combineEvents<P extends Shape>(events: Events<P>): EventAsReturnType<P>; export {};