41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const NodeWatcher = require('./src/node_watcher');
 | |
| const PollWatcher = require('./src/poll_watcher');
 | |
| const WatchmanWatcher = require('./src/watchman_watcher');
 | |
| const WatchexecWatcher = require('./src/watchexec_watcher');
 | |
| 
 | |
| function throwNoFSEventsSupports() {
 | |
|   throw new Error('Sane >= 4 no longer support the fsevents module.');
 | |
| }
 | |
| 
 | |
| function sane(dir, options) {
 | |
|   options = options || {};
 | |
|   if (options.watcher) {
 | |
|     const WatcherClass = require(options.watcher);
 | |
|     return new WatcherClass(dir, options);
 | |
|   } else if (options.poll) {
 | |
|     return new PollWatcher(dir, options);
 | |
|   } else if (options.watchman) {
 | |
|     return new WatchmanWatcher(dir, options);
 | |
|   } else if (options.watchexec) {
 | |
|     return new WatchexecWatcher(dir, options);
 | |
|   } else if (options.fsevents) {
 | |
|     throwNoFSEventsSupports();
 | |
|   } else {
 | |
|     return new NodeWatcher(dir, options);
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = sane;
 | |
| sane.NodeWatcher = NodeWatcher;
 | |
| sane.PollWatcher = PollWatcher;
 | |
| sane.WatchmanWatcher = WatchmanWatcher;
 | |
| sane.WatchexecWatcher = WatchexecWatcher;
 | |
| 
 | |
| Object.defineProperty(sane, 'FSEventsWatcher', {
 | |
|   get() {
 | |
|     return throwNoFSEventsSupports();
 | |
|   },
 | |
| });
 |