@@ -24,6 +24,32 @@ export type Result<T, E> =
24
24
function __makeEvents__ < T extends Record < string , any > > (
25
25
mappings : Record < keyof T , string > ,
26
26
) {
27
+ const eventsProxies = Object . fromEntries (
28
+ Object . keys ( mappings ) . map ( ( event : keyof T ) => {
29
+ const name = mappings [ event ] ;
30
+
31
+ const proxyHandlerGet = {
32
+ listen : ( arg : any ) => TAURI_API_EVENT . listen ( name , arg ) ,
33
+ once : ( arg : any ) => TAURI_API_EVENT . once ( name , arg ) ,
34
+ emit : ( arg : any ) => TAURI_API_EVENT . emit ( name , arg ) ,
35
+ } ;
36
+
37
+ const proxy = new Proxy < __EventObj__ < T [ keyof T ] > > (
38
+ ( ( ) => { } ) as any ,
39
+ {
40
+ apply : ( _ , __ , [ window ] : [ __WebviewWindow__ ] ) => ( {
41
+ listen : ( arg : any ) => window . listen ( name , arg ) ,
42
+ once : ( arg : any ) => window . once ( name , arg ) ,
43
+ emit : ( arg : any ) => window . emit ( name , arg ) ,
44
+ } ) ,
45
+ get : ( _ , command : keyof __EventObj__ < any > ) => proxyHandlerGet [ command ] ,
46
+ } ,
47
+ ) ;
48
+
49
+ return [ event , proxy ] ;
50
+ } )
51
+ ) ;
52
+
27
53
return new Proxy (
28
54
{ } as unknown as {
29
55
[ K in keyof T ] : __EventObj__ < T [ K ] > & {
@@ -32,25 +58,10 @@ function __makeEvents__<T extends Record<string, any>>(
32
58
} ,
33
59
{
34
60
get : ( _ , event ) => {
35
- const name = mappings [ event as keyof T ] ;
36
-
37
- return new Proxy ( ( ( ) => { } ) as any , {
38
- apply : ( _ , __ , [ window ] : [ __WebviewWindow__ ] ) => ( {
39
- listen : ( arg : any ) => window . listen ( name , arg ) ,
40
- once : ( arg : any ) => window . once ( name , arg ) ,
41
- emit : ( arg : any ) => window . emit ( name , arg ) ,
42
- } ) ,
43
- get : ( _ , command : keyof __EventObj__ < any > ) => {
44
- switch ( command ) {
45
- case "listen" :
46
- return ( arg : any ) => TAURI_API_EVENT . listen ( name , arg ) ;
47
- case "once" :
48
- return ( arg : any ) => TAURI_API_EVENT . once ( name , arg ) ;
49
- case "emit" :
50
- return ( arg : any ) => TAURI_API_EVENT . emit ( name , arg ) ;
51
- }
52
- } ,
53
- } ) ;
61
+ if ( typeof event === "string" ) {
62
+ return eventsProxies [ event ] ;
63
+ }
64
+ return undefined ;
54
65
} ,
55
66
} ,
56
67
) ;
0 commit comments