@endo/trampoline
Version:
Multicolor trampolining for recursive operations
23 lines (21 loc) • 599 B
text/typescript
/**
* The final output of `asyncTrampoline()`, which will be wrapped in a `Promise`.
*/
export type TrampolineResult<
TGeneratorFn extends (...args: any[]) => Generator = (
...args: any[]
) => Generator,
> = TGeneratorFn extends (...args: any[]) => Generator<any, infer TResult>
? TResult
: never;
/**
* The final output of `syncTrampoline()`
*/
export type SyncTrampolineResult<
TGeneratorFn extends (...args: any[]) => Generator = (
...args: any[]
) => Generator,
> =
TrampolineResult<TGeneratorFn> extends Promise<any>
? never
: TrampolineResult<TGeneratorFn>;