40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| 	Author Tobias Koppers @sokra
 | |
| */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| /** @typedef {import("./Resolver")} Resolver */
 | |
| /** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */
 | |
| 
 | |
| /**
 | |
|  * @param {Resolver} resolver resolver
 | |
|  * @param {ResolveRequest} request string
 | |
|  * @returns {string} inner request
 | |
|  */
 | |
| module.exports = function getInnerRequest(resolver, request) {
 | |
| 	if (
 | |
| 		typeof request.__innerRequest === "string" &&
 | |
| 		request.__innerRequest_request === request.request &&
 | |
| 		request.__innerRequest_relativePath === request.relativePath
 | |
| 	) {
 | |
| 		return request.__innerRequest;
 | |
| 	}
 | |
| 	/** @type {string|undefined} */
 | |
| 	let innerRequest;
 | |
| 	if (request.request) {
 | |
| 		innerRequest = request.request;
 | |
| 		if (/^\.\.?(?:\/|$)/.test(innerRequest) && request.relativePath) {
 | |
| 			innerRequest = resolver.join(request.relativePath, innerRequest);
 | |
| 		}
 | |
| 	} else {
 | |
| 		innerRequest = request.relativePath;
 | |
| 	}
 | |
| 	// eslint-disable-next-line camelcase
 | |
| 	request.__innerRequest_request = request.request;
 | |
| 	// eslint-disable-next-line camelcase
 | |
| 	request.__innerRequest_relativePath = request.relativePath;
 | |
| 	return (request.__innerRequest = /** @type {string} */ (innerRequest));
 | |
| };
 |