patronum
Version:
☄️ Effector utility library delivering modularity and convenience
35 lines (34 loc) • 1.26 kB
TypeScript
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 {};