@@ -4,30 +4,32 @@ type BaseMessage<T extends string, P extends object> = {
4
4
} & P ;
5
5
6
6
function createMessages < T extends Record < string , ( ...args : any [ ] ) => object > > (
7
- creators : T
7
+ creators : T ,
8
8
) : {
9
- [ K in Extract < keyof T , string > ] : ( ...args : Parameters < T [ K ] > ) => BaseMessage < K , ReturnType < T [ K ] > > ;
9
+ [ K in Extract < keyof T , string > ] : (
10
+ ...args : Parameters < T [ K ] >
11
+ ) => BaseMessage < K , ReturnType < T [ K ] > > ;
10
12
} {
11
13
return Object . fromEntries (
12
14
Object . entries ( creators ) . map ( ( [ key , creator ] ) => [
13
15
key ,
14
16
( ...args : any [ ] ) => ( {
15
17
type : key ,
16
- ...creator ( ...args )
17
- } )
18
- ] )
18
+ ...creator ( ...args ) ,
19
+ } ) ,
20
+ ] ) ,
19
21
) as any ;
20
22
}
21
23
22
24
const Messages = createMessages ( {
23
- WebviewStarted : ( ) => ( { } ) ,
25
+ WebviewStarted : ( token : string | null ) => ( { token } ) ,
24
26
IsVsc : ( ) => ( { } ) ,
25
27
NewEditor : ( assessmentName : string , questionId : number , code : string ) => ( {
26
28
assessmentName,
27
29
questionId,
28
- code
30
+ code,
29
31
} ) ,
30
- Text : ( code : string ) => ( { code } )
32
+ Text : ( code : string ) => ( { code } ) ,
31
33
} ) ;
32
34
33
35
export default Messages ;
@@ -40,19 +42,19 @@ export type MessageTypes = {
40
42
// Define MessageType as a union of all message types
41
43
export type MessageType = MessageTypes [ keyof MessageTypes ] ;
42
44
43
- export const FRONTEND_ELEMENT_ID = ' frontend' ;
45
+ export const FRONTEND_ELEMENT_ID = " frontend" ;
44
46
45
47
export function sendToWebview ( message : MessageType ) {
46
- window . parent . postMessage ( message , '*' ) ;
48
+ window . parent . postMessage ( message , "*" ) ;
47
49
}
48
50
export function sendToFrontend ( document : Document , message : MessageType ) {
49
51
const iframe : HTMLIFrameElement = document . getElementById (
50
- FRONTEND_ELEMENT_ID
52
+ FRONTEND_ELEMENT_ID ,
51
53
) as HTMLIFrameElement ;
52
54
const contentWindow = iframe . contentWindow ;
53
55
if ( ! contentWindow ) {
54
56
return ;
55
57
}
56
58
// TODO: Don't hardcode this!
57
- contentWindow . postMessage ( message , ' http://localhost:8000' ) ;
59
+ contentWindow . postMessage ( message , " http://localhost:8000" ) ;
58
60
}
0 commit comments