25 lines
No EOL
938 B
TypeScript
25 lines
No EOL
938 B
TypeScript
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<U extends keyof DiffWatcherEvent>(event:U,listener:DiffWatcherEvent[U]): this;
|
|
emit<U extends keyof DiffWatcherEvent>(event:U,...arg:Parameters<DiffWatcherEvent[U]>): boolean;
|
|
setup(cntr:DocumentAccessor):Promise<void>;
|
|
}
|
|
|
|
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));
|
|
} |