WXL
3 天以前 9bce51f651aad297ef9eb6df832bfdaf1de05d84
node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js
@@ -5,11 +5,54 @@
"use strict";
const { cachedJoin } = require("./util/path");
/** @typedef {import("./Resolver")} Resolver */
/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */
/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */
/** @typedef {import("./Resolver").ResolveContextYield} ResolveContextYield */
/** @typedef {{ [k: string]: undefined | ResolveRequest | ResolveRequest[] }} Cache */
const RELATIVE_REQUEST_REGEXP = /^\.\.?(?:\/|$)/;
/**
 * @param {string} relativePath relative path from package root
 * @param {string} request relative request
 * @returns {string} normalized request with a preserved leading dot
 */
function joinRelativePreservingLeadingDot(relativePath, request) {
   const normalized = cachedJoin(relativePath, request);
   return RELATIVE_REQUEST_REGEXP.test(normalized)
      ? normalized
      : `./${normalized}`;
}
/**
 * @param {ResolveRequest} request request
 * @returns {string | false | undefined} normalized path
 */
function getCachePath(request) {
   if (request.descriptionFileRoot && !request.module) {
      return request.descriptionFileRoot;
   }
   return request.path;
}
/**
 * @param {ResolveRequest} request request
 * @returns {string | undefined} normalized request string
 */
function getCacheRequest(request) {
   const requestString = request.request;
   if (
      !requestString ||
      !request.relativePath ||
      !RELATIVE_REQUEST_REGEXP.test(requestString)
   ) {
      return requestString;
   }
   return joinRelativePreservingLeadingDot(request.relativePath, requestString);
}
/**
 * @param {string} type type of cache
@@ -21,10 +64,10 @@
   return JSON.stringify({
      type,
      context: withContext ? request.context : "",
      path: request.path,
      path: getCachePath(request),
      query: request.query,
      fragment: request.fragment,
      request: request.request,
      request: getCacheRequest(request),
   });
}
@@ -53,7 +96,15 @@
      resolver
         .getHook(this.source)
         .tapAsync("UnsafeCachePlugin", (request, resolveContext, callback) => {
            if (!this.filterPredicate(request)) return callback();
            if (!this.filterPredicate(request)) {
               return resolver.doResolve(
                  target,
                  request,
                  null,
                  resolveContext,
                  callback,
               );
            }
            const isYield = typeof resolveContext.yield === "function";
            const cacheId = getCacheId(
               isYield ? "yield" : "default",