| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";class HookMap {	constructor(factory) {		this._map = new Map();		this._factory = factory;		this._interceptors = [];	}	get(key) {		return this._map.get(key);	}	for(key) {		const hook = this.get(key);		if (hook !== undefined) {			return hook;		}		let newHook = this._factory(key);		const interceptors = this._interceptors;		for (let i = 0; i < interceptors.length; i++) {			newHook = interceptors[i].factory(key, newHook);		}		this._map.set(key, newHook);		return newHook;	}	intercept(interceptor) {		this._interceptors.push(			Object.assign(				{					factory: (key, hook) => hook				},				interceptor			)		);	}	tap(key, options, fn) {		return this.for(key).tap(options, fn);	}	tapAsync(key, options, fn) {		return this.for(key).tapAsync(options, fn);	}	tapPromise(key, options, fn) {		return this.for(key).tapPromise(options, fn);	}}module.exports = HookMap;
 |