@@ -8,37 +8,52 @@ const messagePromises = new Map<
88 { resolve : ( value : Responses ) => void ; reject : ( reason ?: any ) => void }
99> ( ) ;
1010
11- export function postMessageWithResponse ( message : Message ) {
12- return new Promise ( ( resolve , reject ) => {
11+ class MessageError extends Error {
12+ constructor ( message : string ) {
13+ super ( message ) ;
14+ this . name = 'MessageError' ;
15+ }
16+ }
17+
18+ /**
19+ * Sends a message to the VSCode extension and returns a promise that resolves with the response.
20+ * @param message The message to send.
21+ * @returns A promise that resolves with the response from the extension.
22+ */
23+ export function postMessageWithResponse ( message : Message ) : Promise < Responses > {
24+ return new Promise < Responses > ( ( resolve , reject ) => {
1325 message . id = currentMessageId ++ ;
1426 messagePromises . set ( message . id , { resolve, reject } ) ;
1527
1628 vsCodeAPI . postMessage ( message ) ;
1729 } ) ;
1830}
1931
32+ /**
33+ * Handles incoming messages from the VSCode extension.
34+ * @param event The message event.
35+ */
2036window . addEventListener ( 'message' , ( event ) => {
21- const message : Responses = event . data ; // The JSON data that the extension sent
22- const { id, type, data, error } = message ;
37+ const message = event . data ?? { } ;
2338
2439 console . log ( 'message' , message ) ;
2540
26- if ( ! id || ! type ) {
41+ if ( ! message . id || ! message . type ) {
2742 return ;
2843 }
2944
30- const promiseMethods = messagePromises . get ( id ) ;
45+ const promiseMethods = messagePromises . get ( message . id ) ;
3146
3247 if ( ! promiseMethods ) {
3348 return ;
3449 }
3550
3651 const { resolve, reject } = promiseMethods ;
37- messagePromises . delete ( id ) ;
52+ messagePromises . delete ( message . id ) ;
3853
39- if ( error ) {
40- reject ( new Error ( error ) ) ;
54+ if ( message . error ) {
55+ reject ( new MessageError ( `Message error: ${ message . error } ` ) ) ;
4156 } else {
42- resolve ( { type , data } as Responses ) ;
57+ resolve ( message as Responses ) ;
4358 }
4459} ) ;
0 commit comments