[6a3a178] | 1 | // TypeScript Version: 3.0
|
---|
| 2 |
|
---|
| 3 | /// <reference types="node" />
|
---|
| 4 |
|
---|
| 5 | import * as fs from "fs";
|
---|
| 6 | import { EventEmitter } from "events";
|
---|
| 7 |
|
---|
| 8 | export class FSWatcher extends EventEmitter implements fs.FSWatcher {
|
---|
| 9 | options: WatchOptions;
|
---|
| 10 |
|
---|
| 11 | /**
|
---|
| 12 | * Constructs a new FSWatcher instance with optional WatchOptions parameter.
|
---|
| 13 | */
|
---|
| 14 | constructor(options?: WatchOptions);
|
---|
| 15 |
|
---|
| 16 | /**
|
---|
| 17 | * Add files, directories, or glob patterns for tracking. Takes an array of strings or just one
|
---|
| 18 | * string.
|
---|
| 19 | */
|
---|
| 20 | add(paths: string | ReadonlyArray<string>): void;
|
---|
| 21 |
|
---|
| 22 | /**
|
---|
| 23 | * Stop watching files, directories, or glob patterns. Takes an array of strings or just one
|
---|
| 24 | * string.
|
---|
| 25 | */
|
---|
| 26 | unwatch(paths: string | ReadonlyArray<string>): void;
|
---|
| 27 |
|
---|
| 28 | /**
|
---|
| 29 | * Returns an object representing all the paths on the file system being watched by this
|
---|
| 30 | * `FSWatcher` instance. The object's keys are all the directories (using absolute paths unless
|
---|
| 31 | * the `cwd` option was used), and the values are arrays of the names of the items contained in
|
---|
| 32 | * each directory.
|
---|
| 33 | */
|
---|
| 34 | getWatched(): {
|
---|
| 35 | [directory: string]: string[];
|
---|
| 36 | };
|
---|
| 37 |
|
---|
| 38 | /**
|
---|
| 39 | * Removes all listeners from watched files.
|
---|
| 40 | */
|
---|
| 41 | close(): Promise<void>;
|
---|
| 42 |
|
---|
| 43 | on(event: 'add'|'addDir'|'change', listener: (path: string, stats?: fs.Stats) => void): this;
|
---|
| 44 |
|
---|
| 45 | on(event: 'all', listener: (eventName: 'add'|'addDir'|'change'|'unlink'|'unlinkDir', path: string, stats?: fs.Stats) => void): this;
|
---|
| 46 |
|
---|
| 47 | /**
|
---|
| 48 | * Error occurred
|
---|
| 49 | */
|
---|
| 50 | on(event: 'error', listener: (error: Error) => void): this;
|
---|
| 51 |
|
---|
| 52 | /**
|
---|
| 53 | * Exposes the native Node `fs.FSWatcher events`
|
---|
| 54 | */
|
---|
| 55 | on(event: 'raw', listener: (eventName: string, path: string, details: any) => void): this;
|
---|
| 56 |
|
---|
| 57 | /**
|
---|
| 58 | * Fires when the initial scan is complete
|
---|
| 59 | */
|
---|
| 60 | on(event: 'ready', listener: () => void): this;
|
---|
| 61 |
|
---|
| 62 | on(event: 'unlink'|'unlinkDir', listener: (path: string) => void): this;
|
---|
| 63 |
|
---|
| 64 | on(event: string, listener: (...args: any[]) => void): this;
|
---|
| 65 | }
|
---|
| 66 |
|
---|
| 67 | export interface WatchOptions {
|
---|
| 68 | /**
|
---|
| 69 | * Indicates whether the process should continue to run as long as files are being watched. If
|
---|
| 70 | * set to `false` when using `fsevents` to watch, no more events will be emitted after `ready`,
|
---|
| 71 | * even if the process continues to run.
|
---|
| 72 | */
|
---|
| 73 | persistent?: boolean;
|
---|
| 74 |
|
---|
| 75 | /**
|
---|
| 76 | * ([anymatch](https://github.com/micromatch/anymatch)-compatible definition) Defines files/paths to
|
---|
| 77 | * be ignored. The whole relative or absolute path is tested, not just filename. If a function
|
---|
| 78 | * with two arguments is provided, it gets called twice per path - once with a single argument
|
---|
| 79 | * (the path), second time with two arguments (the path and the
|
---|
| 80 | * [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object of that path).
|
---|
| 81 | */
|
---|
| 82 | ignored?: any;
|
---|
| 83 |
|
---|
| 84 | /**
|
---|
| 85 | * If set to `false` then `add`/`addDir` events are also emitted for matching paths while
|
---|
| 86 | * instantiating the watching as chokidar discovers these file paths (before the `ready` event).
|
---|
| 87 | */
|
---|
| 88 | ignoreInitial?: boolean;
|
---|
| 89 |
|
---|
| 90 | /**
|
---|
| 91 | * When `false`, only the symlinks themselves will be watched for changes instead of following
|
---|
| 92 | * the link references and bubbling events through the link's path.
|
---|
| 93 | */
|
---|
| 94 | followSymlinks?: boolean;
|
---|
| 95 |
|
---|
| 96 | /**
|
---|
| 97 | * The base directory from which watch `paths` are to be derived. Paths emitted with events will
|
---|
| 98 | * be relative to this.
|
---|
| 99 | */
|
---|
| 100 | cwd?: string;
|
---|
| 101 |
|
---|
| 102 | /**
|
---|
| 103 | * If set to true then the strings passed to .watch() and .add() are treated as literal path
|
---|
| 104 | * names, even if they look like globs. Default: false.
|
---|
| 105 | */
|
---|
| 106 | disableGlobbing?: boolean;
|
---|
| 107 |
|
---|
| 108 | /**
|
---|
| 109 | * Whether to use fs.watchFile (backed by polling), or fs.watch. If polling leads to high CPU
|
---|
| 110 | * utilization, consider setting this to `false`. It is typically necessary to **set this to
|
---|
| 111 | * `true` to successfully watch files over a network**, and it may be necessary to successfully
|
---|
| 112 | * watch files in other non-standard situations. Setting to `true` explicitly on OS X overrides
|
---|
| 113 | * the `useFsEvents` default.
|
---|
| 114 | */
|
---|
| 115 | usePolling?: boolean;
|
---|
| 116 |
|
---|
| 117 | /**
|
---|
| 118 | * Whether to use the `fsevents` watching interface if available. When set to `true` explicitly
|
---|
| 119 | * and `fsevents` is available this supercedes the `usePolling` setting. When set to `false` on
|
---|
| 120 | * OS X, `usePolling: true` becomes the default.
|
---|
| 121 | */
|
---|
| 122 | useFsEvents?: boolean;
|
---|
| 123 |
|
---|
| 124 | /**
|
---|
| 125 | * If relying upon the [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object that
|
---|
| 126 | * may get passed with `add`, `addDir`, and `change` events, set this to `true` to ensure it is
|
---|
| 127 | * provided even in cases where it wasn't already available from the underlying watch events.
|
---|
| 128 | */
|
---|
| 129 | alwaysStat?: boolean;
|
---|
| 130 |
|
---|
| 131 | /**
|
---|
| 132 | * If set, limits how many levels of subdirectories will be traversed.
|
---|
| 133 | */
|
---|
| 134 | depth?: number;
|
---|
| 135 |
|
---|
| 136 | /**
|
---|
| 137 | * Interval of file system polling.
|
---|
| 138 | */
|
---|
| 139 | interval?: number;
|
---|
| 140 |
|
---|
| 141 | /**
|
---|
| 142 | * Interval of file system polling for binary files. ([see list of binary extensions](https://gi
|
---|
| 143 | * thub.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json))
|
---|
| 144 | */
|
---|
| 145 | binaryInterval?: number;
|
---|
| 146 |
|
---|
| 147 | /**
|
---|
| 148 | * Indicates whether to watch files that don't have read permissions if possible. If watching
|
---|
| 149 | * fails due to `EPERM` or `EACCES` with this set to `true`, the errors will be suppressed
|
---|
| 150 | * silently.
|
---|
| 151 | */
|
---|
| 152 | ignorePermissionErrors?: boolean;
|
---|
| 153 |
|
---|
| 154 | /**
|
---|
| 155 | * `true` if `useFsEvents` and `usePolling` are `false`). Automatically filters out artifacts
|
---|
| 156 | * that occur when using editors that use "atomic writes" instead of writing directly to the
|
---|
| 157 | * source file. If a file is re-added within 100 ms of being deleted, Chokidar emits a `change`
|
---|
| 158 | * event rather than `unlink` then `add`. If the default of 100 ms does not work well for you,
|
---|
| 159 | * you can override it by setting `atomic` to a custom value, in milliseconds.
|
---|
| 160 | */
|
---|
| 161 | atomic?: boolean | number;
|
---|
| 162 |
|
---|
| 163 | /**
|
---|
| 164 | * can be set to an object in order to adjust timing params:
|
---|
| 165 | */
|
---|
| 166 | awaitWriteFinish?: AwaitWriteFinishOptions | boolean;
|
---|
| 167 | }
|
---|
| 168 |
|
---|
| 169 | export interface AwaitWriteFinishOptions {
|
---|
| 170 | /**
|
---|
| 171 | * Amount of time in milliseconds for a file size to remain constant before emitting its event.
|
---|
| 172 | */
|
---|
| 173 | stabilityThreshold?: number;
|
---|
| 174 |
|
---|
| 175 | /**
|
---|
| 176 | * File size polling interval.
|
---|
| 177 | */
|
---|
| 178 | pollInterval?: number;
|
---|
| 179 | }
|
---|
| 180 |
|
---|
| 181 | /**
|
---|
| 182 | * produces an instance of `FSWatcher`.
|
---|
| 183 | */
|
---|
| 184 | export function watch(
|
---|
| 185 | paths: string | ReadonlyArray<string>,
|
---|
| 186 | options?: WatchOptions
|
---|
| 187 | ): FSWatcher;
|
---|