@@ -65,6 +65,7 @@ export async function startNamedPipeServer(
65
65
const dataChunks : Buffer [ ] = [ ] ;
66
66
const componentNamesAndProps = new Map < string , string > ( ) ;
67
67
const allConnections = new Set < net . Socket > ( ) ;
68
+ const pendingRequests = new Set < number > ( ) ;
68
69
const server = net . createServer ( connection => {
69
70
allConnections . add ( connection ) ;
70
71
@@ -183,58 +184,64 @@ export async function startNamedPipeServer(
183
184
}
184
185
185
186
function onRequest ( connection : net . Socket , [ seq , requestType , ...args ] : RequestData ) {
187
+ if ( pendingRequests . has ( seq ) ) {
188
+ return ;
189
+ }
190
+ setTimeout ( ( ) => pendingRequests . delete ( seq ) , 500 ) ;
191
+ pendingRequests . add ( seq ) ;
192
+
193
+ let data : any ;
194
+ try {
195
+ data = handleRequest ( requestType , ...args ) ;
196
+ } catch {
197
+ data = null ;
198
+ }
199
+
200
+ if ( requestType === 'getComponentEvents' && Math . random ( ) < 0.9 ) {
201
+ return ;
202
+ }
203
+ connection . write ( JSON . stringify ( [ seq , data ?? null ] ) + '\n\n' ) ;
204
+ }
205
+
206
+ function handleRequest ( requestType : RequestType , ...args : any [ ] ) {
186
207
if ( requestType === 'projectInfo' ) {
187
- sendResponse ( {
208
+ return {
188
209
name : info . project . getProjectName ( ) ,
189
210
kind : info . project . projectKind ,
190
211
currentDirectory : info . project . getCurrentDirectory ( ) ,
191
- } satisfies ProjectInfo ) ;
212
+ } satisfies ProjectInfo ;
192
213
}
193
214
else if ( requestType === 'containsFile' ) {
194
- sendResponse (
195
- info . project . containsFile ( ts . server . toNormalizedPath ( args [ 0 ] ) )
196
- ) ;
215
+ return info . project . containsFile ( ts . server . toNormalizedPath ( args [ 0 ] ) ) ;
197
216
}
198
217
else if ( requestType === 'collectExtractProps' ) {
199
- const result = collectExtractProps . apply ( requestContext , args as any ) ;
200
- sendResponse ( result ) ;
218
+ return collectExtractProps . apply ( requestContext , args as any ) ;
201
219
}
202
220
else if ( requestType === 'getImportPathForFile' ) {
203
- const result = getImportPathForFile . apply ( requestContext , args as any ) ;
204
- sendResponse ( result ) ;
221
+ return getImportPathForFile . apply ( requestContext , args as any ) ;
205
222
}
206
223
else if ( requestType === 'getPropertiesAtLocation' ) {
207
- const result = getPropertiesAtLocation . apply ( requestContext , args as any ) ;
208
- sendResponse ( result ) ;
224
+ return getPropertiesAtLocation . apply ( requestContext , args as any ) ;
209
225
}
210
226
else if ( requestType === 'getQuickInfoAtPosition' ) {
211
- const result = getQuickInfoAtPosition . apply ( requestContext , args as any ) ;
212
- sendResponse ( result ) ;
227
+ return getQuickInfoAtPosition . apply ( requestContext , args as any ) ;
213
228
}
214
229
else if ( requestType === 'getComponentProps' ) {
215
- const result = getComponentProps . apply ( requestContext , args as any ) ;
216
- sendResponse ( result ) ;
230
+ return getComponentProps . apply ( requestContext , args as any ) ;
217
231
}
218
232
else if ( requestType === 'getComponentEvents' ) {
219
- const result = getComponentEvents . apply ( requestContext , args as any ) ;
220
- sendResponse ( result ) ;
233
+ return getComponentEvents . apply ( requestContext , args as any ) ;
221
234
}
222
235
else if ( requestType === 'getTemplateContextProps' ) {
223
- const result = getTemplateContextProps . apply ( requestContext , args as any ) ;
224
- sendResponse ( result ) ;
236
+ return getTemplateContextProps . apply ( requestContext , args as any ) ;
225
237
}
226
238
else if ( requestType === 'getElementAttrs' ) {
227
- const result = getElementAttrs . apply ( requestContext , args as any ) ;
228
- sendResponse ( result ) ;
229
- }
230
- else {
231
- console . warn ( '[Vue Named Pipe Server] Unknown request:' , requestType ) ;
232
- debugger ;
239
+ return getElementAttrs . apply ( requestContext , args as any ) ;
233
240
}
234
241
235
- function sendResponse ( data : any | undefined ) {
236
- connection . write ( JSON . stringify ( [ seq , data ?? null ] ) + '\n\n' ) ;
237
- }
242
+ console . warn ( '[Vue Named Pipe Server] Unknown request:' , requestType ) ;
243
+ debugger ;
244
+ return undefined ;
238
245
}
239
246
}
240
247
0 commit comments