@@ -64,11 +64,13 @@ namespace ts.server.typingsInstaller {
64
64
onRequestCompleted : RequestCompletedAction ;
65
65
}
66
66
67
+ type ProjectWatchers = Map < FileWatcher > & { isInvoked ?: boolean ; } ;
68
+
67
69
export abstract class TypingsInstaller {
68
70
private readonly packageNameToTypingLocation : Map < JsTyping . CachedTyping > = createMap < JsTyping . CachedTyping > ( ) ;
69
71
private readonly missingTypingsSet : Map < true > = createMap < true > ( ) ;
70
72
private readonly knownCachesSet : Map < true > = createMap < true > ( ) ;
71
- private readonly projectWatchers = createMap < Map < FileWatcher > > ( ) ;
73
+ private readonly projectWatchers = createMap < ProjectWatchers > ( ) ;
72
74
private safeList : JsTyping . SafeList | undefined ;
73
75
readonly pendingRunRequests : PendingRequest [ ] = [ ] ;
74
76
@@ -378,8 +380,8 @@ namespace ts.server.typingsInstaller {
378
380
this . projectWatchers . set ( projectName , watchers ) ;
379
381
}
380
382
383
+ watchers . isInvoked = false ;
381
384
// handler should be invoked once for the entire set of files since it will trigger full rediscovery of typings
382
- let isInvoked = false ;
383
385
const isLoggingEnabled = this . log . isEnabled ( ) ;
384
386
mutateMap (
385
387
watchers ,
@@ -392,11 +394,11 @@ namespace ts.server.typingsInstaller {
392
394
}
393
395
const watcher = this . installTypingHost . watchFile ( file , ( f , eventKind ) => {
394
396
if ( isLoggingEnabled ) {
395
- this . log . writeLine ( `FileWatcher:: Triggered with ${ f } eventKind: ${ FileWatcherEventKind [ eventKind ] } :: WatchInfo: ${ file } :: handler is already invoked '${ isInvoked } '` ) ;
397
+ this . log . writeLine ( `FileWatcher:: Triggered with ${ f } eventKind: ${ FileWatcherEventKind [ eventKind ] } :: WatchInfo: ${ file } :: handler is already invoked '${ watchers . isInvoked } '` ) ;
396
398
}
397
- if ( ! isInvoked ) {
399
+ if ( ! watchers . isInvoked ) {
400
+ watchers . isInvoked = true ;
398
401
this . sendResponse ( { projectName, kind : ActionInvalidate } ) ;
399
- isInvoked = true ;
400
402
}
401
403
} , /*pollingInterval*/ 2000 ) ;
402
404
return isLoggingEnabled ? {
0 commit comments