| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const Watchpack = require("watchpack");
 
- class NodeWatchFileSystem {
 
- 	constructor(inputFileSystem) {
 
- 		this.inputFileSystem = inputFileSystem;
 
- 		this.watcherOptions = {
 
- 			aggregateTimeout: 0
 
- 		};
 
- 		this.watcher = new Watchpack(this.watcherOptions);
 
- 	}
 
- 	watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
 
- 		if(!Array.isArray(files))
 
- 			throw new Error("Invalid arguments: 'files'");
 
- 		if(!Array.isArray(dirs))
 
- 			throw new Error("Invalid arguments: 'dirs'");
 
- 		if(!Array.isArray(missing))
 
- 			throw new Error("Invalid arguments: 'missing'");
 
- 		if(typeof callback !== "function")
 
- 			throw new Error("Invalid arguments: 'callback'");
 
- 		if(typeof startTime !== "number" && startTime)
 
- 			throw new Error("Invalid arguments: 'startTime'");
 
- 		if(typeof options !== "object")
 
- 			throw new Error("Invalid arguments: 'options'");
 
- 		if(typeof callbackUndelayed !== "function" && callbackUndelayed)
 
- 			throw new Error("Invalid arguments: 'callbackUndelayed'");
 
- 		const oldWatcher = this.watcher;
 
- 		this.watcher = new Watchpack(options);
 
- 		if(callbackUndelayed)
 
- 			this.watcher.once("change", callbackUndelayed);
 
- 		this.watcher.once("aggregated", (changes, removals) => {
 
- 			changes = changes.concat(removals);
 
- 			if(this.inputFileSystem && this.inputFileSystem.purge) {
 
- 				this.inputFileSystem.purge(changes);
 
- 			}
 
- 			const times = this.watcher.getTimes();
 
- 			callback(null,
 
- 				changes.filter(file => files.indexOf(file) >= 0).sort(),
 
- 				changes.filter(file => dirs.indexOf(file) >= 0).sort(),
 
- 				changes.filter(file => missing.indexOf(file) >= 0).sort(), times, times);
 
- 		});
 
- 		this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
 
- 		if(oldWatcher) {
 
- 			oldWatcher.close();
 
- 		}
 
- 		return {
 
- 			close: () => {
 
- 				if(this.watcher) {
 
- 					this.watcher.close();
 
- 					this.watcher = null;
 
- 				}
 
- 			},
 
- 			pause: () => {
 
- 				if(this.watcher) {
 
- 					this.watcher.pause();
 
- 				}
 
- 			}
 
- 		};
 
- 	}
 
- }
 
- module.exports = NodeWatchFileSystem;
 
 
  |