@@ -65,6 +65,7 @@ export async function startNamedPipeServer(
6565 const dataChunks : Buffer [ ] = [ ] ;
6666 const componentNamesAndProps = new Map < string , string > ( ) ;
6767 const allConnections = new Set < net . Socket > ( ) ;
68+ const pendingRequests = new Set < number > ( ) ;
6869 const server = net . createServer ( connection => {
6970 allConnections . add ( connection ) ;
7071
@@ -183,58 +184,64 @@ export async function startNamedPipeServer(
183184 }
184185
185186 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 [ ] ) {
186207 if ( requestType === 'projectInfo' ) {
187- sendResponse ( {
208+ return {
188209 name : info . project . getProjectName ( ) ,
189210 kind : info . project . projectKind ,
190211 currentDirectory : info . project . getCurrentDirectory ( ) ,
191- } satisfies ProjectInfo ) ;
212+ } satisfies ProjectInfo ;
192213 }
193214 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 ] ) ) ;
197216 }
198217 else if ( requestType === 'collectExtractProps' ) {
199- const result = collectExtractProps . apply ( requestContext , args as any ) ;
200- sendResponse ( result ) ;
218+ return collectExtractProps . apply ( requestContext , args as any ) ;
201219 }
202220 else if ( requestType === 'getImportPathForFile' ) {
203- const result = getImportPathForFile . apply ( requestContext , args as any ) ;
204- sendResponse ( result ) ;
221+ return getImportPathForFile . apply ( requestContext , args as any ) ;
205222 }
206223 else if ( requestType === 'getPropertiesAtLocation' ) {
207- const result = getPropertiesAtLocation . apply ( requestContext , args as any ) ;
208- sendResponse ( result ) ;
224+ return getPropertiesAtLocation . apply ( requestContext , args as any ) ;
209225 }
210226 else if ( requestType === 'getQuickInfoAtPosition' ) {
211- const result = getQuickInfoAtPosition . apply ( requestContext , args as any ) ;
212- sendResponse ( result ) ;
227+ return getQuickInfoAtPosition . apply ( requestContext , args as any ) ;
213228 }
214229 else if ( requestType === 'getComponentProps' ) {
215- const result = getComponentProps . apply ( requestContext , args as any ) ;
216- sendResponse ( result ) ;
230+ return getComponentProps . apply ( requestContext , args as any ) ;
217231 }
218232 else if ( requestType === 'getComponentEvents' ) {
219- const result = getComponentEvents . apply ( requestContext , args as any ) ;
220- sendResponse ( result ) ;
233+ return getComponentEvents . apply ( requestContext , args as any ) ;
221234 }
222235 else if ( requestType === 'getTemplateContextProps' ) {
223- const result = getTemplateContextProps . apply ( requestContext , args as any ) ;
224- sendResponse ( result ) ;
236+ return getTemplateContextProps . apply ( requestContext , args as any ) ;
225237 }
226238 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 ) ;
233240 }
234241
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 ;
238245 }
239246}
240247
0 commit comments