@@ -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
@@ -190,10 +192,25 @@ namespace ts.server {
190
192
if ( eventPort ) {
191
193
const s = net . connect ( { port : eventPort } , ( ) => {
192
194
this . socket = s ;
195
+ this . reportInstallerProcessId ( ) ;
193
196
} ) ;
194
197
}
195
198
}
196
199
200
+ private reportInstallerProcessId ( ) {
201
+ if ( this . installerPidReported ) {
202
+ return ;
203
+ }
204
+ if ( this . socket && this . installer ) {
205
+ this . sendEvent ( 0 , "typingsInstallerPid" , { pid : this . installer . pid } ) ;
206
+ this . installerPidReported = true ;
207
+ }
208
+ }
209
+
210
+ private sendEvent ( seq : number , event : string , body : any ) : void {
211
+ this . socket . write ( formatMessage ( { seq, type : "event" , event, body } , this . logger , Buffer . byteLength , this . newLine ) , "utf8" ) ;
212
+ }
213
+
197
214
attach ( projectService : ProjectService ) {
198
215
this . projectService = projectService ;
199
216
if ( this . logger . hasLevel ( LogLevel . requestTime ) ) {
@@ -222,6 +239,8 @@ namespace ts.server {
222
239
223
240
this . installer = childProcess . fork ( combinePaths ( __dirname , "typingsInstaller.js" ) , args , { execArgv } ) ;
224
241
this . installer . on ( "message" , m => this . handleMessage ( m ) ) ;
242
+ this . reportInstallerProcessId ( ) ;
243
+
225
244
process . on ( "exit" , ( ) => {
226
245
this . installer . kill ( ) ;
227
246
} ) ;
@@ -245,7 +264,7 @@ namespace ts.server {
245
264
}
246
265
this . projectService . updateTypingsForProject ( response ) ;
247
266
if ( response . kind == "set" && this . socket ) {
248
- this . socket . write ( formatMessage ( { seq : 0 , type : "event ", message : response } , this . logger , Buffer . byteLength , this . newLine ) , "utf8" ) ;
267
+ this . sendEvent ( 0 , "setTypings ", response ) ;
249
268
}
250
269
}
251
270
}
0 commit comments