diff options
author | Florian Dold <florian.dold@gmail.com> | 2018-09-20 02:56:13 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2018-09-20 02:56:13 +0200 |
commit | bbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch) | |
tree | c58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/watchpack/lib | |
parent | 003fb34971cf63466184351b4db5f7c67df4f444 (diff) |
update packages
Diffstat (limited to 'node_modules/watchpack/lib')
-rw-r--r-- | node_modules/watchpack/lib/DirectoryWatcher.js | 45 | ||||
-rw-r--r-- | node_modules/watchpack/lib/watcherManager.js | 2 | ||||
-rw-r--r-- | node_modules/watchpack/lib/watchpack.js | 2 |
3 files changed, 37 insertions, 12 deletions
diff --git a/node_modules/watchpack/lib/DirectoryWatcher.js b/node_modules/watchpack/lib/DirectoryWatcher.js index 8c7c9cea9..940f6163f 100644 --- a/node_modules/watchpack/lib/DirectoryWatcher.js +++ b/node_modules/watchpack/lib/DirectoryWatcher.js @@ -2,15 +2,17 @@ MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
+"use strict";
+
var EventEmitter = require("events").EventEmitter;
-var async = require("async");
+var async = require("neo-async");
var chokidar = require("chokidar");
var fs = require("graceful-fs");
var path = require("path");
var watcherManager = require("./watcherManager");
-var FS_ACCURACY = 10000;
+var FS_ACCURACY = 1000;
function withoutCase(str) {
@@ -23,6 +25,7 @@ function Watcher(directoryWatcher, filePath, startTime) { this.directoryWatcher = directoryWatcher;
this.path = filePath;
this.startTime = startTime && +startTime;
+ // TODO this.data seem to be only read, weird
this.data = 0;
}
@@ -46,6 +49,7 @@ function DirectoryWatcher(directoryPath, options) { this.path = directoryPath;
this.files = Object.create(null);
this.directories = Object.create(null);
+ var interval = typeof options.poll === "number" ? options.poll : undefined;
this.watcher = chokidar.watch(directoryPath, {
ignoreInitial: true,
persistent: true,
@@ -56,7 +60,8 @@ function DirectoryWatcher(directoryPath, options) { ignorePermissionErrors: true,
ignored: options.ignored,
usePolling: options.poll ? true : undefined,
- interval: typeof options.poll === "number" ? options.poll : undefined,
+ interval: interval,
+ binaryInterval: interval,
disableGlobbing: true
});
this.watcher.on("add", this.onFileAdded.bind(this));
@@ -70,6 +75,7 @@ function DirectoryWatcher(directoryPath, options) { this.initialScanRemoved = [];
this.doInitialScan();
this.watchers = Object.create(null);
+ this.parentWatcher = null;
this.refs = 0;
}
module.exports = DirectoryWatcher;
@@ -83,7 +89,7 @@ DirectoryWatcher.prototype.setFileTime = function setFileTime(filePath, mtime, i this.files[filePath] = [initial ? Math.min(now, mtime) : now, mtime];
- // we add the fs accurency to reach the maximum possible mtime
+ // we add the fs accuracy to reach the maximum possible mtime
if(mtime)
mtime = mtime + FS_ACCURACY;
@@ -97,7 +103,7 @@ DirectoryWatcher.prototype.setFileTime = function setFileTime(filePath, mtime, i });
}
}
- } else if(!initial && mtime && type !== "add") {
+ } else if(!initial && mtime) {
if(this.watchers[withoutCase(filePath)]) {
this.watchers[withoutCase(filePath)].forEach(function(w) {
w.emit("change", mtime, type);
@@ -140,6 +146,11 @@ DirectoryWatcher.prototype.setDirectory = function setDirectory(directoryPath, e w.emit("change", directoryPath, w.data, initial ? "initial" : type);
});
}
+ if(this.watchers[withoutCase(directoryPath) + "#directory"]) {
+ this.watchers[withoutCase(directoryPath) + "#directory"].forEach(function(w) {
+ w.emit("change", w.data, initial ? "initial" : type);
+ });
+ }
}
} else {
if(!exist) {
@@ -151,6 +162,11 @@ DirectoryWatcher.prototype.setDirectory = function setDirectory(directoryPath, e w.emit("change", directoryPath, w.data, initial ? "initial" : type);
});
}
+ if(this.watchers[withoutCase(directoryPath) + "#directory"]) {
+ this.watchers[withoutCase(directoryPath) + "#directory"].forEach(function(w) {
+ w.emit("change", directoryPath, w.data, initial ? "initial" : type);
+ });
+ }
}
}
}
@@ -231,7 +247,7 @@ DirectoryWatcher.prototype.onFileAdded = function onFileAdded(filePath, stat) { if(filePath.indexOf(this.path) !== 0) return;
if(/[\\\/]/.test(filePath.substr(this.path.length + 1))) return;
- this.setFileTime(filePath, +stat.mtime, false, "add");
+ this.setFileTime(filePath, +stat.mtime || +stat.ctime || 1, false, "add");
};
DirectoryWatcher.prototype.onDirectoryAdded = function onDirectoryAdded(directoryPath /*, stat */) {
@@ -243,7 +259,7 @@ DirectoryWatcher.prototype.onDirectoryAdded = function onDirectoryAdded(director DirectoryWatcher.prototype.onChange = function onChange(filePath, stat) {
if(filePath.indexOf(this.path) !== 0) return;
if(/[\\\/]/.test(filePath.substr(this.path.length + 1))) return;
- var mtime = +stat.mtime;
+ var mtime = +stat.mtime || +stat.ctime || 1;
ensureFsAccuracy(mtime);
this.setFileTime(filePath, mtime, false, "change");
};
@@ -272,6 +288,14 @@ DirectoryWatcher.prototype.onWatcherError = function onWatcherError(/* err */) { DirectoryWatcher.prototype.doInitialScan = function doInitialScan() {
fs.readdir(this.path, function(err, items) {
if(err) {
+ this.parentWatcher = watcherManager.watchFile(this.path + "#directory", this.options, 1);
+ this.parentWatcher.on("change", function(mtime, type) {
+ if(this.watchers[withoutCase(this.path)]) {
+ this.watchers[withoutCase(this.path)].forEach(function(w) {
+ w.emit("change", this.path, mtime, type);
+ }, this);
+ }
+ }.bind(this));
this.initialScan = false;
return;
}
@@ -285,7 +309,7 @@ DirectoryWatcher.prototype.doInitialScan = function doInitialScan() { }
if(stat.isFile()) {
if(!this.files[itemPath])
- this.setFileTime(itemPath, +stat.mtime, true);
+ this.setFileTime(itemPath, +stat.mtime || +stat.ctime || 1, true);
} else if(stat.isDirectory()) {
if(!this.directories[itemPath])
this.setDirectory(itemPath, true, true);
@@ -338,6 +362,7 @@ DirectoryWatcher.prototype.close = function() { this.directories[dir].close();
}, this);
}
+ if(this.parentWatcher) this.parentWatcher.close();
this.emit("closed");
};
@@ -349,8 +374,4 @@ function ensureFsAccuracy(mtime) { FS_ACCURACY = 10;
else if(FS_ACCURACY > 100 && mtime % 100 !== 0)
FS_ACCURACY = 100;
- else if(FS_ACCURACY > 1000 && mtime % 1000 !== 0)
- FS_ACCURACY = 1000;
- else if(FS_ACCURACY > 2000 && mtime % 2000 !== 0)
- FS_ACCURACY = 2000;
}
diff --git a/node_modules/watchpack/lib/watcherManager.js b/node_modules/watchpack/lib/watcherManager.js index ea7b5ecd4..5870f6907 100644 --- a/node_modules/watchpack/lib/watcherManager.js +++ b/node_modules/watchpack/lib/watcherManager.js @@ -2,6 +2,8 @@ MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
+"use strict";
+
var path = require("path");
function WatcherManager() {
diff --git a/node_modules/watchpack/lib/watchpack.js b/node_modules/watchpack/lib/watchpack.js index 3fcd93654..81781bc62 100644 --- a/node_modules/watchpack/lib/watchpack.js +++ b/node_modules/watchpack/lib/watchpack.js @@ -2,6 +2,8 @@ MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
+"use strict";
+
var watcherManager = require("./watcherManager");
var EventEmitter = require("events").EventEmitter;
|