| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const asyncLib = require("neo-async");/** @typedef {import("./MultiCompiler")} MultiCompiler *//** @typedef {import("./Watching")} Watching *//** * @template T * @callback Callback * @param {(Error | null)=} err * @param {T=} result */class MultiWatching {	/**	 * @param {Watching[]} watchings child compilers' watchers	 * @param {MultiCompiler} compiler the compiler	 */	constructor(watchings, compiler) {		this.watchings = watchings;		this.compiler = compiler;	}	invalidate(callback) {		if (callback) {			asyncLib.each(				this.watchings,				(watching, callback) => watching.invalidate(callback),				callback			);		} else {			for (const watching of this.watchings) {				watching.invalidate();			}		}	}	suspend() {		for (const watching of this.watchings) {			watching.suspend();		}	}	resume() {		for (const watching of this.watchings) {			watching.resume();		}	}	/**	 * @param {Callback<void>} callback signals when the watcher is closed	 * @returns {void}	 */	close(callback) {		asyncLib.forEach(			this.watchings,			(watching, finishedCallback) => {				watching.close(finishedCallback);			},			err => {				this.compiler.hooks.watchClose.call();				if (typeof callback === "function") {					this.compiler.running = false;					callback(err);				}			}		);	}}module.exports = MultiWatching;
 |