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