@@ -34,32 +34,47 @@ interface FetchOptions<B extends object = any> {
3434 params ?: Record < string , string | number | boolean | undefined | null >
3535}
3636
37+ /**
38+ * A result is a value that can be either an ok or an error
39+ */
40+ export type Result < T , E > = { ok : true ; value : T } | { ok : false ; error : E }
41+
42+ /**
43+ * returns true if the result is an error
44+ */
45+ export const isErr = < T , E > (
46+ result : Result < T , E > ,
47+ ) : result is { ok : false ; error : E } => {
48+ return ! result . ok
49+ }
50+
3751async function fetchAPIDevelopment < T = any , B extends object = any > (
3852 config : FetchOptions < B > ,
3953 options ?: Partial < FetchOptionsWithSignal > ,
4054) : Promise < T & ResponseWithDetail > {
4155 console . log ( 'fetchAPIDevelopment' , config , options )
42-
4356 // Generate a unique ID for this request
44- const requestId = `query_${ Date . now ( ) } _${ Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) } `
4557 // Create a promise that will resolve when we get a response with matching ID
4658 return new Promise ( ( resolve , reject ) => {
59+ const requestId = `query_${ Date . now ( ) } _${ Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) } `
4760 // Set up listener for the response
4861 console . log ( 'setting up listener for response' )
4962 const messageHandler = ( event : MessageEvent ) => {
63+ console . log ( 'messageHandler in listener api development' , event , 'checking requestId' , requestId , 'versus' , event . data . requestId )
5064 if (
5165 event . data &&
52- event . data . key === 'vscode_response' &&
53- event . data . payload &&
54- event . data . payload . requestId === requestId
66+ event . data . key === 'query_response' &&
67+ event . data . requestId === requestId
5568 ) {
69+ console . log ( 'messageHandler in listener api development correct' , event )
5670 // Remove the listener once we get our response
5771 window . removeEventListener ( 'message' , messageHandler )
5872
59- if ( event . data . payload . error ) {
60- reject ( new Error ( event . data . payload . error ) )
73+ const payload = event . data . payload
74+ if ( isErr ( payload ) ) {
75+ reject ( new Error ( payload . error as string ) )
6176 } else {
62- resolve ( event . data . payload . data )
77+ resolve ( payload . value )
6378 }
6479 }
6580 }
@@ -128,9 +143,10 @@ export async function fetchAPIProduction<T = any, B extends object = any>(
128143 // Set up listener for the response
129144 console . log ( 'setting up listener for response' )
130145 const messageHandler = ( event : MessageEvent ) => {
146+ console . log ( 'messageHandler in listener api production' , event )
131147 if (
132148 event . data &&
133- event . data . key === 'vscode_response ' &&
149+ event . data . key === 'query_response ' &&
134150 event . data . payload &&
135151 event . data . payload . requestId === requestId
136152 ) {
0 commit comments