UNPKG

4.77 kBTypeScriptView Raw
1// Type definitions for sane 2.0
2// Project: https://github.com/amasad/sane
3// Definitions by: BendingBender <https://github.com/BendingBender>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5
6/// <reference types="node" />
7import { EventEmitter } from 'events';
8import { Stats } from 'fs';
9
10export = sane;
11
12declare function sane(dir: string, options?: sane.Options): sane.Watcher;
13
14declare namespace sane {
15 interface Options {
16 glob?: string | string[] | undefined;
17 poll?: boolean | undefined;
18 watchman?: boolean | undefined;
19 fsevents?: boolean | undefined;
20 watcher?: string | undefined;
21 dot?: boolean | undefined;
22 ignored?: AnymatchMatcher | AnymatchMatcher[] | undefined;
23 }
24
25 const FSEventsWatcher: typeof SaneWatcher;
26 const NodeWatcher: typeof SaneWatcher;
27 const PollWatcher: typeof SaneWatcher;
28 const WatchmanWatcher: typeof SaneWatcher;
29
30 type Watcher = SaneWatcher;
31
32 type AnymatchMatcher = string | RegExp | ((...testStrings: string[]) => boolean);
33}
34
35declare class SaneWatcher extends EventEmitter {
36 readonly globs: string[];
37 readonly dot: boolean;
38 readonly ignored: sane.AnymatchMatcher | sane.AnymatchMatcher[];
39 readonly hasIgnore: boolean;
40 readonly root: string;
41
42 constructor(dir: string, options?: sane.Options);
43 close(callback?: () => void): void;
44
45 addListener(event: 'ready', listener: () => void): this;
46 addListener(event: 'error', listener: (error: Error) => void): this;
47 addListener(event: 'all', listener: (eventType: AllEventType, path: string, root: string, stat?: Stats) => void): this;
48 addListener(event: 'add' | 'change', listener: (path: string, root: string, stat: Stats) => void): this;
49 addListener(event: 'delete', listener: (path: string, root: string) => void): this;
50 on(event: 'ready', listener: () => void): this;
51 on(event: 'error', listener: (error: Error) => void): this;
52 on(event: 'all', listener: (eventType: AllEventType, path: string, root: string, stat?: Stats) => void): this;
53 on(event: 'add' | 'change', listener: (path: string, root: string, stat: Stats) => void): this;
54 on(event: 'delete', listener: (path: string, root: string) => void): this;
55 once(event: 'ready', listener: () => void): this;
56 once(event: 'error', listener: (error: Error) => void): this;
57 once(event: 'all', listener: (eventType: AllEventType, path: string, root: string, stat?: Stats) => void): this;
58 once(event: 'add' | 'change', listener: (path: string, root: string, stat: Stats) => void): this;
59 once(event: 'delete', listener: (path: string, root: string) => void): this;
60 prependListener(event: 'ready', listener: () => void): this;
61 prependListener(event: 'error', listener: (error: Error) => void): this;
62 prependListener(event: 'all', listener: (eventType: AllEventType, path: string, root: string, stat?: Stats) => void): this;
63 prependListener(event: 'add' | 'change', listener: (path: string, root: string, stat: Stats) => void): this;
64 prependListener(event: 'delete', listener: (path: string, root: string) => void): this;
65 prependOnceListener(event: 'ready', listener: () => void): this;
66 prependOnceListener(event: 'error', listener: (error: Error) => void): this;
67 prependOnceListener(event: 'all', listener: (eventType: AllEventType, path: string, root: string, stat?: Stats) => void): this;
68 prependOnceListener(event: 'add' | 'change', listener: (path: string, root: string, stat: Stats) => void): this;
69 prependOnceListener(event: 'delete', listener: (path: string, root: string) => void): this;
70 removeListener(event: 'ready', listener: () => void): this;
71 removeListener(event: 'error', listener: (error: Error) => void): this;
72 removeListener(event: 'all', listener: (eventType: AllEventType, path: string, root: string, stat?: Stats) => void): this;
73 removeListener(event: 'add' | 'change', listener: (path: string, root: string, stat: Stats) => void): this;
74 removeListener(event: 'delete', listener: (path: string, root: string) => void): this;
75 removeAllListeners(event?: EventType): this;
76 // tslint:disable-next-line ban-types
77 listeners(event: EventType): Function[];
78 emit(event: 'ready'): boolean;
79 emit(event: 'error', error: Error): boolean;
80 emit(event: 'all', eventType: AllEventType, path: string, root: string, stat?: Stats): boolean;
81 emit(event: 'add' | 'change', path: string, root: string, stat: Stats): boolean;
82 emit(event: 'delete', path: string, root: string): boolean;
83 eventNames(): EventType[];
84 listenerCount(type: EventType): number;
85}
86
87type EventType = 'ready' | 'error' | 'all' | AllEventType;
88type AllEventType = 'add' | 'change' | 'delete';
89
\No newline at end of file