| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const util = require("util");const defaultFactory = (key, hook) => hook;class HookMap {	constructor(factory, name = undefined) {		this._map = new Map();		this.name = name;		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: defaultFactory				},				interceptor			)		);	}}HookMap.prototype.tap = util.deprecate(function(key, options, fn) {	return this.for(key).tap(options, fn);}, "HookMap#tap(key,…) is deprecated. Use HookMap#for(key).tap(…) instead.");HookMap.prototype.tapAsync = util.deprecate(function(key, options, fn) {	return this.for(key).tapAsync(options, fn);}, "HookMap#tapAsync(key,…) is deprecated. Use HookMap#for(key).tapAsync(…) instead.");HookMap.prototype.tapPromise = util.deprecate(function(key, options, fn) {	return this.for(key).tapPromise(options, fn);}, "HookMap#tapPromise(key,…) is deprecated. Use HookMap#for(key).tapPromise(…) instead.");module.exports = HookMap;
 |