ionian/packages/server/src/diff/watcher.ts
monoid 88c7a8bc53 [BREAKING!]: 서버 재작업 (#16)
서버 실행 바꾸고 여기 저기 path 바꿈.

Reviewed-on: #16
2024-10-09 00:18:56 +09:00

25 lines
981 B
TypeScript

import type event from "node:events";
import { FSWatcher, watch } from "node:fs";
import { promises } from "node:fs";
import { join } from "node:path";
import type { DocumentAccessor } from "../model/doc.ts";
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));
}