UNPKG

patronum

Version:

☄️ Effector utility library delivering modularity and convenience

35 lines (34 loc) 1.26 kB
import { EventCallable, Tuple, Unit, UnitTargetable } from 'effector'; type TargetUnits<T> = UnitTargetable<T | void> | Tuple<UnitTargetable<T | void>> | ReadonlyArray<UnitTargetable<T | void>>; /** * @example * spread({ * source: dataObject, * targets: { first: targetA, second: [target1, target2] }, * }) * * sample({ * source: dataObject, * target: spread({ targets: { first: targetA, second: [target1, target2] } }) * }) * * sample({ * source: dataObject, * target: spread({ first: targetA, second: [target1, target2] }) * }) */ export declare function spread<Payload>(config: { targets: { [Key in keyof Payload]?: TargetUnits<Payload[Key]>; }; }): EventCallable<Partial<Payload>>; export declare function spread<Source, Payload extends Source extends Unit<infer S> ? S : never, Targets extends { [Key in keyof Payload]?: Targets[Key] extends TargetUnits<infer TargetType> ? Payload[Key] extends TargetType ? TargetUnits<TargetType> : TargetUnits<Payload[Key]> : TargetUnits<Payload[Key]>; }>(config: { source: Source; targets: Targets; }): Source; export declare function spread<Payload>(targets: { [Key in keyof Payload]?: TargetUnits<Payload[Key]>; }): EventCallable<Partial<Payload>>; export {};