diff --git a/types/index.d.ts b/types/index.d.ts index 5b079cf..5b6d822 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -15,6 +15,7 @@ import { Task, FlushableChannel, Channel, + SagaIterator, } from "redux-saga"; import { ActionPattern, @@ -26,7 +27,6 @@ import { PutEffect, ChannelPutEffect, CallEffect, - SagaReturnType, CpsCallback, CpsEffect, CpsFunctionParameters, @@ -184,10 +184,16 @@ export function putResolve( action: A, ): SagaGenerator>; +export type SagaReturnType = + S extends (...args: Args) => SagaIterator ? RT : + S extends (...args: Args) => Promise ? RT : + S extends (...args: Args) => infer RT ? RT : + never; + export function call any>( fn: Fn, ...args: Args -): SagaGenerator, CallEffect>>; +): SagaGenerator, CallEffect>>; export function call< Args extends any[], Ctx extends { @@ -198,8 +204,8 @@ export function call< ctxAndFnName: [Ctx, Name], ...args: Args ): SagaGenerator< - SagaReturnType, - CallEffect> + SagaReturnType, + CallEffect> >; export function call< Args extends any[], @@ -211,8 +217,8 @@ export function call< ctxAndFnName: { context: Ctx; fn: Name }, ...args: Args ): SagaGenerator< - SagaReturnType, - CallEffect> + SagaReturnType, + CallEffect> >; export function call< Ctx, @@ -221,7 +227,7 @@ export function call< >( ctxAndFn: [Ctx, Fn], ...args: Args -): SagaGenerator, CallEffect>>; +): SagaGenerator, CallEffect>>; export function call< Ctx, Args extends any[], @@ -229,7 +235,7 @@ export function call< >( ctxAndFn: { context: Ctx; fn: Fn }, ...args: Args -): SagaGenerator, CallEffect>>; +): SagaGenerator, CallEffect>>; export function apply< Args extends any[], @@ -242,8 +248,8 @@ export function apply< fnName: Name, args: Args, ): SagaGenerator< - SagaReturnType, - CallEffect> + SagaReturnType, + CallEffect> >; export function apply< Ctx, @@ -253,7 +259,7 @@ export function apply< ctx: Ctx, fn: Fn, args: Args, -): SagaGenerator, CallEffect>>; +): SagaGenerator, CallEffect>>; export function cps) => any>( fn: Fn, @@ -299,8 +305,8 @@ export function fork any>( fn: Fn, ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function fork< Args extends any[], @@ -312,8 +318,8 @@ export function fork< ctxAndFnName: [Ctx, Name], ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function fork< Args extends any[], @@ -325,8 +331,8 @@ export function fork< ctxAndFnName: { context: Ctx; fn: Name }, ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function fork< Ctx, @@ -336,8 +342,8 @@ export function fork< ctxAndFn: [Ctx, Fn], ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function fork< Ctx, @@ -347,16 +353,16 @@ export function fork< ctxAndFn: { context: Ctx; fn: Fn }, ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function spawn any>( fn: Fn, ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function spawn< Args extends any[], @@ -368,8 +374,8 @@ export function spawn< ctxAndFnName: [Ctx, Name], ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function spawn< Args extends any[], @@ -381,8 +387,8 @@ export function spawn< ctxAndFnName: { context: Ctx; fn: Name }, ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function spawn< Ctx, @@ -392,8 +398,8 @@ export function spawn< ctxAndFn: [Ctx, Fn], ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; export function spawn< Ctx, @@ -403,8 +409,8 @@ export function spawn< ctxAndFn: { context: Ctx; fn: Fn }, ...args: Args ): SagaGenerator< - FixedTask>, - ForkEffect> + FixedTask>, + ForkEffect> >; type ReturnTypeOfTask = T extends FixedTask ? P : void; @@ -530,12 +536,12 @@ export function debounce any>( ...args: HelperWorkerParameters ): SagaGenerator>; -export function retry any>( +export function retry any>( maxTries: number, delayLength: number, fn: Fn, - ...args: Parameters -): SagaGenerator, CallEffect>>; + ...args: Args +): SagaGenerator, CallEffect>>; type EffectReturnType = T extends SagaGenerator ? RT