@@ -21,27 +21,35 @@ type HandledExecutor<R> = (
21
21
resolveWithPresence : ( presenceHandler : EHandler < { } > ) => object ,
22
22
) => void ;
23
23
24
- interface HandledPromiseConstructor {
25
- new < R > ( executor : HandledExecutor < R > , unfulfilledHandler ?: EHandler < Promise < unknown > > ) ;
24
+ interface HandledPromiseConstructor extends PromiseConstructor {
25
+ new < R > (
26
+ executor : HandledExecutor < R > ,
27
+ unfulfilledHandler ?: EHandler < Promise < unknown > >
28
+ ) ;
26
29
prototype : Promise < unknown > ;
27
30
applyFunction ( target : unknown , args : unknown [ ] ) : Promise < unknown > ;
28
31
applyFunctionSendOnly ( target : unknown , args : unknown [ ] ) : void ;
29
- applyMethod ( target : unknown , prop : Property , args : unknown [ ] ) : Promise < unknown > ;
32
+ applyMethod (
33
+ target : unknown ,
34
+ prop : Property ,
35
+ args : unknown [ ]
36
+ ) : Promise < unknown > ;
30
37
applyMethodSendOnly ( target : unknown , prop : Property , args : unknown [ ] ) : void ;
31
38
get ( target : unknown , prop : Property ) : Promise < unknown > ;
32
39
getSendOnly ( target : unknown , prop : Property ) : void ;
33
- resolve ( target : unknown ) : Promise < any > ;
34
40
}
35
41
36
42
export const HandledPromise : HandledPromiseConstructor ;
37
43
38
44
/* Types for E proxy calls. */
39
45
type ESingleMethod < T > = {
40
- readonly [ P in keyof T ] : ( ...args : Parameters < T [ P ] > ) => Promise < Unpromise < ReturnType < T [ P ] > > > ;
46
+ readonly [ P in keyof T ] : (
47
+ ...args : Parameters < T [ P ] >
48
+ ) => Promise < Unpromise < ReturnType < T [ P ] > > > ;
41
49
}
42
50
type ESingleCall < T > = T extends Function ?
43
- ( ( ...args : Parameters < T > ) => Promise < Unpromise < ReturnType < T > > > ) & ESingleMethod < Required < T > > :
44
- ESingleMethod < Required < T > > ;
51
+ ( ( ...args : Parameters < T > ) => Promise < Unpromise < ReturnType < T > > > ) &
52
+ ESingleMethod < Required < T > > : ESingleMethod < Required < T > > ;
45
53
type ESingleGet < T > = {
46
54
readonly [ P in keyof T ] : Promise < Unpromise < T [ P ] > > ;
47
55
}
@@ -76,8 +84,8 @@ interface EProxy {
76
84
/**
77
85
* E.G(x) returns a proxy on which you can get arbitrary properties.
78
86
* Each of these properties returns a promise for the property. The promise
79
- * value will be the property fetched from whatever 'x' designates (or resolves to)
80
- * in a future turn, not this one.
87
+ * value will be the property fetched from whatever 'x' designates (or
88
+ * resolves to) in a future turn, not this one.
81
89
*
82
90
* @param {* } x target for property get
83
91
* @returns {ESingleGet } property get proxy
@@ -90,13 +98,14 @@ interface EProxy {
90
98
readonly when < T > ( x : T ) : Promise < Unpromise < T > > ;
91
99
92
100
/**
93
- * E.when(x, res, rej) is equivalent to HandledPromise.resolve(x).then(res, rej)
101
+ * E.when(x, res, rej) is equivalent to
102
+ * HandledPromise.resolve(x).then(res, rej)
94
103
*/
95
- readonly when < T > (
104
+ readonly when < T , U > (
96
105
x : T ,
97
- onfulfilled : ( value : Unpromise < T > ) => ERef < any > | undefined ,
98
- onrejected ?: ( reason : any ) => PromiseLike < never > ,
99
- ) : Promise < any > ;
106
+ onfulfilled ? : ( value : Unpromise < T > ) => ERef < U > ,
107
+ onrejected ?: ( reason : any ) => ERef < U > ,
108
+ ) : Promise < U > ;
100
109
101
110
/**
102
111
* E.sendOnly returns a proxy similar to E, but for which the results
0 commit comments