import { FSWatcher, watch } from 'fs'; import { promises } from 'fs'; import event from 'events'; import { join } from 'path'; import { DocumentAccessor } from '../model/doc'; const readdir = promises.readdir; export interface DiffWatcherEvent{ 'create':(path:string)=>void, 'delete':(path:string)=>void, 'change':(prev_path:string,cur_path:string)=>void, } export interface IDiffWatcher extends event.EventEmitter { on(event:U,listener:DiffWatcherEvent[U]): this; emit(event:U,...arg:Parameters): boolean; setup(cntr:DocumentAccessor):Promise; } export function linkWatcher(fromWatcher :IDiffWatcher, toWatcher: IDiffWatcher){ fromWatcher.on("create",p=>toWatcher.emit("create",p)); fromWatcher.on("delete",p=>toWatcher.emit("delete",p)); fromWatcher.on("change",(p,c)=>toWatcher.emit("change",p,c)); }