MCPcopy
hub / github.com/webpack/webpack / escapeHashInPathRequest

Function escapeHashInPathRequest

lib/util/identifier.js:504–531  ·  view source on GitHub ↗
(request)

Source from the content-addressed store, hash-verified

502 * @returns {string} request with directory `#` characters escaped
503 */
504const escapeHashInPathRequest = (request) => {
505 if (request.length === 0) return request;
506 const queryStart = request.indexOf("?");
507 if (queryStart < 0) return request;
508 const hashStart = request.indexOf("#");
509 if (hashStart < 0 || hashStart >= queryStart) return request;
510 const c0 = request.charCodeAt(0);
511 const isAbsolute =
512 c0 === 47 /* "/" */ || WINDOWS_ABS_PATH_REGEXP.test(request);
513 let isRelative = false;
514 if (!isAbsolute && c0 === 46 /* "." */) {
515 const c1 = request.charCodeAt(1);
516 if (c1 === 47 || c1 === 92 /* "/" or "\" */) {
517 isRelative = true;
518 } else if (c1 === 46 /* "." */) {
519 const c2 = request.charCodeAt(2);
520 if (c2 === 47 || c2 === 92) isRelative = true;
521 }
522 }
523 if (!isAbsolute && !isRelative) return request;
524 const lastSep = Math.max(
525 request.lastIndexOf("/", queryStart - 1),
526 request.lastIndexOf("\\", queryStart - 1)
527 );
528 if (hashStart >= lastSep) return request;
529 const pathPart = request.slice(0, lastSep);
530 return pathPart.replace(HASH_REGEXP, "\0#") + request.slice(lastSep);
531};
532
533module.exports.ABSOLUTE_PATH_REGEXP = ABSOLUTE_PATH_REGEXP;
534module.exports.WINDOWS_ABS_PATH_REGEXP = WINDOWS_ABS_PATH_REGEXP;

Callers 1

defaultResolveMethod · 0.85

Calls 3

sliceMethod · 0.80
testMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected