| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| var path = require("path"); |
| |
| function WatcherManager() { |
| this.directoryWatchers = {}; |
| } |
| |
| WatcherManager.prototype.getDirectoryWatcher = function(directory, options) { |
| var DirectoryWatcher = require("./DirectoryWatcher"); |
| options = options || {}; |
| var key = directory + " " + JSON.stringify(options); |
| if(!this.directoryWatchers[key]) { |
| this.directoryWatchers[key] = new DirectoryWatcher(directory, options); |
| this.directoryWatchers[key].on("closed", function() { |
| delete this.directoryWatchers[key]; |
| }.bind(this)); |
| } |
| return this.directoryWatchers[key]; |
| }; |
| |
| WatcherManager.prototype.watchFile = function watchFile(p, options, startTime) { |
| var directory = path.dirname(p); |
| return this.getDirectoryWatcher(directory, options).watch(p, startTime); |
| }; |
| |
| WatcherManager.prototype.watchDirectory = function watchDirectory(directory, options, startTime) { |
| return this.getDirectoryWatcher(directory, options).watch(directory, startTime); |
| }; |
| |
| module.exports = new WatcherManager(); |