(
path: Path,
_options?: virtualFs.HostWatchOptions,
)
| 113 | |
| 114 | // Some hosts may not support watching. |
| 115 | watch( |
| 116 | path: Path, |
| 117 | _options?: virtualFs.HostWatchOptions, |
| 118 | ): Observable<virtualFs.HostWatchEvent> | null { |
| 119 | return new Observable<virtualFs.HostWatchEvent>((obs) => { |
| 120 | loadFSWatcher(); |
| 121 | const watcher = new FSWatcher({ persistent: true }); |
| 122 | watcher.add(getSystemPath(path)); |
| 123 | |
| 124 | watcher |
| 125 | .on('change', (path) => { |
| 126 | obs.next({ |
| 127 | path: normalize(path), |
| 128 | time: new Date(), |
| 129 | type: virtualFs.HostWatchEventType.Changed, |
| 130 | }); |
| 131 | }) |
| 132 | .on('add', (path) => { |
| 133 | obs.next({ |
| 134 | path: normalize(path), |
| 135 | time: new Date(), |
| 136 | type: virtualFs.HostWatchEventType.Created, |
| 137 | }); |
| 138 | }) |
| 139 | .on('unlink', (path) => { |
| 140 | obs.next({ |
| 141 | path: normalize(path), |
| 142 | time: new Date(), |
| 143 | type: virtualFs.HostWatchEventType.Deleted, |
| 144 | }); |
| 145 | }); |
| 146 | |
| 147 | return () => { |
| 148 | void watcher.close(); |
| 149 | }; |
| 150 | }).pipe(publish(), refCount()); |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | /** |
nothing calls this directly
no test coverage detected