@@ -323,53 +323,61 @@ namespace ts {
323323 }
324324 }
325325
326- export function addFileWatcher ( host : System , file : string , cb : FileWatcherCallback ) : FileWatcher {
326+ export interface WatchFileHost {
327+ watchFile ( path : string , callback : FileWatcherCallback , pollingInterval ?: number ) : FileWatcher ;
328+ }
329+
330+ export function addFileWatcher ( host : WatchFileHost , file : string , cb : FileWatcherCallback ) : FileWatcher {
327331 return host . watchFile ( file , cb ) ;
328332 }
329333
330- export function addFileWatcherWithLogging ( host : System , file : string , cb : FileWatcherCallback , log : ( s : string ) => void ) : FileWatcher {
334+ export function addFileWatcherWithLogging ( host : WatchFileHost , file : string , cb : FileWatcherCallback , log : ( s : string ) => void ) : FileWatcher {
331335 const watcherCaption = `FileWatcher:: ` ;
332336 return createWatcherWithLogging ( addFileWatcher , watcherCaption , log , /*logOnlyTrigger*/ false , host , file , cb ) ;
333337 }
334338
335- export function addFileWatcherWithOnlyTriggerLogging ( host : System , file : string , cb : FileWatcherCallback , log : ( s : string ) => void ) : FileWatcher {
339+ export function addFileWatcherWithOnlyTriggerLogging ( host : WatchFileHost , file : string , cb : FileWatcherCallback , log : ( s : string ) => void ) : FileWatcher {
336340 const watcherCaption = `FileWatcher:: ` ;
337341 return createWatcherWithLogging ( addFileWatcher , watcherCaption , log , /*logOnlyTrigger*/ true , host , file , cb ) ;
338342 }
339343
340344 export type FilePathWatcherCallback = ( fileName : string , eventKind : FileWatcherEventKind , filePath : Path ) => void ;
341- export function addFilePathWatcher ( host : System , file : string , cb : FilePathWatcherCallback , path : Path ) : FileWatcher {
345+ export function addFilePathWatcher ( host : WatchFileHost , file : string , cb : FilePathWatcherCallback , path : Path ) : FileWatcher {
342346 return host . watchFile ( file , ( fileName , eventKind ) => cb ( fileName , eventKind , path ) ) ;
343347 }
344348
345- export function addFilePathWatcherWithLogging ( host : System , file : string , cb : FilePathWatcherCallback , path : Path , log : ( s : string ) => void ) : FileWatcher {
349+ export function addFilePathWatcherWithLogging ( host : WatchFileHost , file : string , cb : FilePathWatcherCallback , path : Path , log : ( s : string ) => void ) : FileWatcher {
346350 const watcherCaption = `FileWatcher:: ` ;
347351 return createWatcherWithLogging ( addFileWatcher , watcherCaption , log , /*logOnlyTrigger*/ false , host , file , cb , path ) ;
348352 }
349353
350- export function addFilePathWatcherWithOnlyTriggerLogging ( host : System , file : string , cb : FilePathWatcherCallback , path : Path , log : ( s : string ) => void ) : FileWatcher {
354+ export function addFilePathWatcherWithOnlyTriggerLogging ( host : WatchFileHost , file : string , cb : FilePathWatcherCallback , path : Path , log : ( s : string ) => void ) : FileWatcher {
351355 const watcherCaption = `FileWatcher:: ` ;
352356 return createWatcherWithLogging ( addFileWatcher , watcherCaption , log , /*logOnlyTrigger*/ true , host , file , cb , path ) ;
353357 }
354358
355- export function addDirectoryWatcher ( host : System , directory : string , cb : DirectoryWatcherCallback , flags : WatchDirectoryFlags ) : FileWatcher {
359+ export interface WatchDirectoryHost {
360+ watchDirectory ( path : string , callback : DirectoryWatcherCallback , recursive ?: boolean ) : FileWatcher ;
361+ }
362+
363+ export function addDirectoryWatcher ( host : WatchDirectoryHost , directory : string , cb : DirectoryWatcherCallback , flags : WatchDirectoryFlags ) : FileWatcher {
356364 const recursive = ( flags & WatchDirectoryFlags . Recursive ) !== 0 ;
357365 return host . watchDirectory ( directory , cb , recursive ) ;
358366 }
359367
360- export function addDirectoryWatcherWithLogging ( host : System , directory : string , cb : DirectoryWatcherCallback , flags : WatchDirectoryFlags , log : ( s : string ) => void ) : FileWatcher {
368+ export function addDirectoryWatcherWithLogging ( host : WatchDirectoryHost , directory : string , cb : DirectoryWatcherCallback , flags : WatchDirectoryFlags , log : ( s : string ) => void ) : FileWatcher {
361369 const watcherCaption = `DirectoryWatcher ${ ( flags & WatchDirectoryFlags . Recursive ) !== 0 ? "recursive" : "" } :: ` ;
362370 return createWatcherWithLogging ( addDirectoryWatcher , watcherCaption , log , /*logOnlyTrigger*/ false , host , directory , cb , flags ) ;
363371 }
364372
365- export function addDirectoryWatcherWithOnlyTriggerLogging ( host : System , directory : string , cb : DirectoryWatcherCallback , flags : WatchDirectoryFlags , log : ( s : string ) => void ) : FileWatcher {
373+ export function addDirectoryWatcherWithOnlyTriggerLogging ( host : WatchDirectoryHost , directory : string , cb : DirectoryWatcherCallback , flags : WatchDirectoryFlags , log : ( s : string ) => void ) : FileWatcher {
366374 const watcherCaption = `DirectoryWatcher ${ ( flags & WatchDirectoryFlags . Recursive ) !== 0 ? "recursive" : "" } :: ` ;
367375 return createWatcherWithLogging ( addDirectoryWatcher , watcherCaption , log , /*logOnlyTrigger*/ true , host , directory , cb , flags ) ;
368376 }
369377
370378 type WatchCallback < T , U > = ( fileName : string , cbOptional1 ?: T , optional ?: U ) => void ;
371- type AddWatch < T , U > = ( host : System , file : string , cb : WatchCallback < T , U > , optional ?: U ) => FileWatcher ;
372- function createWatcherWithLogging < T , U > ( addWatch : AddWatch < T , U > , watcherCaption : string , log : ( s : string ) => void , logOnlyTrigger : boolean , host : System , file : string , cb : WatchCallback < T , U > , optional ?: U ) : FileWatcher {
379+ type AddWatch < H , T , U > = ( host : H , file : string , cb : WatchCallback < T , U > , optional ?: U ) => FileWatcher ;
380+ function createWatcherWithLogging < H , T , U > ( addWatch : AddWatch < H , T , U > , watcherCaption : string , log : ( s : string ) => void , logOnlyTrigger : boolean , host : H , file : string , cb : WatchCallback < T , U > , optional ?: U ) : FileWatcher {
373381 const info = `PathInfo: ${ file } ` ;
374382 if ( ! logOnlyTrigger ) {
375383 log ( `${ watcherCaption } Added: ${ info } ` ) ;
0 commit comments