UNPKG

@push.rocks/smartchok

Version:

A cross-runtime file watcher with glob pattern support for Node.js, Deno, and Bun.

48 lines (43 loc) 1.24 kB
import type * as fs from 'fs'; import type * as smartrx from '@push.rocks/smartrx'; /** * File system event types that the watcher emits */ export type TWatchEventType = 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir' | 'ready' | 'error'; /** * Data structure for watch events */ export interface IWatchEvent { type: TWatchEventType; path: string; stats?: fs.Stats; error?: Error; } /** * Options for creating a watcher */ export interface IWatcherOptions { /** Base paths to watch (extracted from glob patterns) */ basePaths: string[]; /** Maximum directory depth to watch */ depth: number; /** Whether to follow symbolic links */ followSymlinks: boolean; /** Stability threshold for write detection (ms) */ stabilityThreshold: number; /** Poll interval for write detection (ms) */ pollInterval: number; } /** * Common interface for file watchers across runtimes */ export interface IWatcher { /** Start watching files */ start(): Promise<void>; /** Stop watching and clean up */ stop(): Promise<void>; /** Whether the watcher is currently active */ readonly isWatching: boolean; /** Subject that emits watch events */ readonly events$: smartrx.rxjs.Subject<IWatchEvent>; }