};
-var statWatchers = {};
-function inStatWatchers(filename) {
- return Object.prototype.hasOwnProperty.call(statWatchers, filename) &&
- statWatchers[filename];
-}
-
+const statWatchers = new Map();
fs.watchFile = function(filename) {
nullCheck(filename);
throw new Error('watchFile requires a listener function');
}
- if (inStatWatchers(filename)) {
- stat = statWatchers[filename];
- } else {
- stat = statWatchers[filename] = new StatWatcher();
+ stat = statWatchers.get(filename);
+
+ if (stat === undefined) {
+ stat = new StatWatcher();
stat.start(filename, options.persistent, options.interval);
+ statWatchers.set(filename, stat);
}
+
stat.addListener('change', listener);
return stat;
};
fs.unwatchFile = function(filename, listener) {
nullCheck(filename);
filename = pathModule.resolve(filename);
- if (!inStatWatchers(filename)) return;
+ var stat = statWatchers.get(filename);
- var stat = statWatchers[filename];
+ if (stat === undefined) return;
if (typeof listener === 'function') {
stat.removeListener('change', listener);
if (EventEmitter.listenerCount(stat, 'change') === 0) {
stat.stop();
- statWatchers[filename] = undefined;
+ statWatchers.delete(filename);
}
};