| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Ivan Kopeykin @vankop
 
- */
 
- "use strict";
 
- /** @typedef {import("./Resolver")} Resolver */
 
- /** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */
 
- class RootPlugin {
 
- 	/**
 
- 	 * @param {string | ResolveStepHook} source source hook
 
- 	 * @param {Array<string>} root roots
 
- 	 * @param {string | ResolveStepHook} target target hook
 
- 	 * @param {boolean=} ignoreErrors ignore error during resolving of root paths
 
- 	 */
 
- 	constructor(source, root, target, ignoreErrors) {
 
- 		this.root = root;
 
- 		this.source = source;
 
- 		this.target = target;
 
- 		this._ignoreErrors = ignoreErrors;
 
- 	}
 
- 	/**
 
- 	 * @param {Resolver} resolver the resolver
 
- 	 * @returns {void}
 
- 	 */
 
- 	apply(resolver) {
 
- 		const target = resolver.ensureHook(this.target);
 
- 		resolver
 
- 			.getHook(this.source)
 
- 			.tapAsync("RootPlugin", (request, resolveContext, callback) => {
 
- 				const req = request.request;
 
- 				if (!req) return callback();
 
- 				if (!req.startsWith("/")) return callback();
 
- 				const path = resolver.join(this.root, req.slice(1));
 
- 				const obj = Object.assign(request, {
 
- 					path,
 
- 					relativePath: request.relativePath && path
 
- 				});
 
- 				resolver.doResolve(
 
- 					target,
 
- 					obj,
 
- 					`root path ${this.root}`,
 
- 					resolveContext,
 
- 					this._ignoreErrors
 
- 						? (err, result) => {
 
- 								if (err) {
 
- 									if (resolveContext.log) {
 
- 										resolveContext.log(
 
- 											`Ignored fatal error while resolving root path:\n${err}`
 
- 										);
 
- 									}
 
- 									return callback();
 
- 								}
 
- 								if (result) return callback(null, result);
 
- 								callback();
 
- 						  }
 
- 						: callback
 
- 				);
 
- 			});
 
- 	}
 
- }
 
- module.exports = RootPlugin;
 
 
  |