Spaces:
Running
Running
/* | |
MIT License http://www.opensource.org/licenses/mit-license.php | |
Author Tobias Koppers @sokra | |
*/ | |
; | |
/** @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; | |
} | |
request.__innerRequest_request = request.request; | |
request.__innerRequest_relativePath = request.relativePath; | |
return (request.__innerRequest = /** @type {string} */ (innerRequest)); | |
}; | |