@@ -40,6 +40,7 @@ namespace ts.server {
40
40
send ( message : any , sendHandle ?: any ) : void ;
41
41
on ( message : "message" , f : ( m : any ) => void ) : void ;
42
42
kill ( ) : void ;
43
+ pid : number ;
43
44
}
44
45
45
46
interface NodeSocket {
@@ -179,6 +180,7 @@ namespace ts.server {
179
180
180
181
class NodeTypingsInstaller implements ITypingsInstaller {
181
182
private installer : NodeChildProcess ;
183
+ private installerPidReported = false ;
182
184
private socket : NodeSocket ;
183
185
private projectService : ProjectService ;
184
186
private throttledOperations : ThrottledOperations ;
@@ -193,10 +195,25 @@ namespace ts.server {
193
195
if ( eventPort ) {
194
196
const s = net . connect ( { port : eventPort } , ( ) => {
195
197
this . socket = s ;
198
+ this . reportInstallerProcessId ( ) ;
196
199
} ) ;
197
200
}
198
201
}
199
202
203
+ private reportInstallerProcessId ( ) {
204
+ if ( this . installerPidReported ) {
205
+ return ;
206
+ }
207
+ if ( this . socket && this . installer ) {
208
+ this . sendEvent ( 0 , "typingsInstallerPid" , { pid : this . installer . pid } ) ;
209
+ this . installerPidReported = true ;
210
+ }
211
+ }
212
+
213
+ private sendEvent ( seq : number , event : string , body : any ) : void {
214
+ this . socket . write ( formatMessage ( { seq, type : "event" , event, body } , this . logger , Buffer . byteLength , this . newLine ) , "utf8" ) ;
215
+ }
216
+
200
217
attach ( projectService : ProjectService ) {
201
218
this . projectService = projectService ;
202
219
if ( this . logger . hasLevel ( LogLevel . requestTime ) ) {
@@ -225,6 +242,8 @@ namespace ts.server {
225
242
226
243
this . installer = childProcess . fork ( combinePaths ( __dirname , "typingsInstaller.js" ) , args , { execArgv } ) ;
227
244
this . installer . on ( "message" , m => this . handleMessage ( m ) ) ;
245
+ this . reportInstallerProcessId ( ) ;
246
+
228
247
process . on ( "exit" , ( ) => {
229
248
this . installer . kill ( ) ;
230
249
} ) ;
@@ -255,7 +274,7 @@ namespace ts.server {
255
274
}
256
275
this . projectService . updateTypingsForProject ( response ) ;
257
276
if ( response . kind == "set" && this . socket ) {
258
- this . socket . write ( formatMessage ( { seq : 0 , type : "event ", message : response } , this . logger , Buffer . byteLength , this . newLine ) , "utf8" ) ;
277
+ this . sendEvent ( 0 , "setTypings ", response ) ;
259
278
}
260
279
}
261
280
}
0 commit comments