ionian/src/diff/watcher.ts
2021-02-22 23:10:01 +09:00

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));
}