| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const path = require("path");const DirectoryWatcher = require("./DirectoryWatcher");class WatcherManager {	constructor(options) {		this.options = options;		this.directoryWatchers = new Map();	}	getDirectoryWatcher(directory) {		const watcher = this.directoryWatchers.get(directory);		if (watcher === undefined) {			const newWatcher = new DirectoryWatcher(this, directory, this.options);			this.directoryWatchers.set(directory, newWatcher);			newWatcher.on("closed", () => {				this.directoryWatchers.delete(directory);			});			return newWatcher;		}		return watcher;	}	watchFile(p, startTime) {		const directory = path.dirname(p);		if (directory === p) return null;		return this.getDirectoryWatcher(directory).watch(p, startTime);	}	watchDirectory(directory, startTime) {		return this.getDirectoryWatcher(directory).watch(directory, startTime);	}}const watcherManagers = new WeakMap();/** * @param {object} options options * @returns {WatcherManager} the watcher manager */module.exports = options => {	const watcherManager = watcherManagers.get(options);	if (watcherManager !== undefined) return watcherManager;	const newWatcherManager = new WatcherManager(options);	watcherManagers.set(options, newWatcherManager);	return newWatcherManager;};module.exports.WatcherManager = WatcherManager;
 |