(value: string | null | undefined)
| 469 | } |
| 470 | |
| 471 | function normalizePublicBasePath(value: string | null | undefined): string | null { |
| 472 | if (!value) { |
| 473 | return null; |
| 474 | } |
| 475 | |
| 476 | const trimmed = value.trim(); |
| 477 | if (!trimmed || trimmed.startsWith("//")) { |
| 478 | return null; |
| 479 | } |
| 480 | |
| 481 | const withLeadingSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`; |
| 482 | const withoutTrailingSlash = |
| 483 | withLeadingSlash === "/" ? withLeadingSlash : withLeadingSlash.replace(/\/+$/, ""); |
| 484 | |
| 485 | return isValidUrlPathname(withoutTrailingSlash) ? withoutTrailingSlash : null; |
| 486 | } |
| 487 | |
| 488 | function parsePathnameFromRequestValue(value: string | null | undefined): string | null { |
| 489 | if (!value) { |
no test coverage detected