(request)
| 502 | * @returns {string} request with directory `#` characters escaped |
| 503 | */ |
| 504 | const 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 | |
| 533 | module.exports.ABSOLUTE_PATH_REGEXP = ABSOLUTE_PATH_REGEXP; |
| 534 | module.exports.WINDOWS_ABS_PATH_REGEXP = WINDOWS_ABS_PATH_REGEXP; |
no test coverage detected