diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
commit | de98e0b232509d5f40c135d540a70e415272ff85 (patch) | |
tree | a79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/webpack/lib/node/NodeWatchFileSystem.js | |
parent | e0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff) |
node_modules
Diffstat (limited to 'node_modules/webpack/lib/node/NodeWatchFileSystem.js')
-rw-r--r-- | node_modules/webpack/lib/node/NodeWatchFileSystem.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/node/NodeWatchFileSystem.js b/node_modules/webpack/lib/node/NodeWatchFileSystem.js new file mode 100644 index 000000000..a4ff6c6b5 --- /dev/null +++ b/node_modules/webpack/lib/node/NodeWatchFileSystem.js @@ -0,0 +1,72 @@ +/*
+ 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, 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;
|