@@ -27,7 +27,7 @@ export type QuansyncGenerator<Return = any, Yield = unknown> =
2727 * "Superposition" function that can be consumed in both sync and async contexts.
2828 */
2929export type QuansyncFn < Return = any , Args extends any [ ] = [ ] > =
30- ( ( ...args : Args ) => QuansyncGenerator < Return > )
30+ ( ( ...args : Args ) => QuansyncGenerator < Return > & Promise < Return > )
3131 & {
3232 sync : ( ...args : Args ) => Return
3333 async : ( ...args : Args ) => Promise < Return >
@@ -53,12 +53,15 @@ function fromObject<Return, Args extends any[]>(
5353 async : ( options . async as any ) . bind ( null , ...args ) ,
5454 __isQuansync : true ,
5555 }
56- } as unknown as QuansyncFn < Return , Args >
57-
58- generator . sync = options . sync
59- generator . async = options . async
60-
61- return generator
56+ }
57+ const fn = ( ...args : Args ) : any => {
58+ const iter = generator ( ...args ) as unknown as QuansyncGenerator < Return , Args > & Promise < Return >
59+ iter . then = fn => options . async ( ...args ) . then ( fn )
60+ return iter
61+ }
62+ fn . sync = options . sync
63+ fn . async = options . async
64+ return fn
6265}
6366
6467function fromPromise < T > ( promise : Promise < T > | T ) : QuansyncFn < T , [ ] > {
@@ -135,8 +138,8 @@ export function quansync<Return, Args extends any[] = []>(
135138 */
136139export function quansyncMacro < Return , Args extends any [ ] = [ ] > (
137140 options : QuansyncInput < Return , Args > | ( ( ...args : Args ) => Promise < Return > | Return ) ,
138- ) : QuansyncFn < Return , Args > {
139- return quansync ( options as any )
141+ ) : QuansyncFn < Return > {
142+ return quansync ( options as any ) as any
140143}
141144
142145/**
0 commit comments