* @param {URL} url * @param {boolean} excludeFragment
(url, excludeFragment = false)
| 121 | * @param {boolean} excludeFragment |
| 122 | */ |
| 123 | function URLSerializer (url, excludeFragment = false) { |
| 124 | if (!excludeFragment) { |
| 125 | return url.href |
| 126 | } |
| 127 | |
| 128 | const href = url.href |
| 129 | const hashLength = url.hash.length |
| 130 | |
| 131 | const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength) |
| 132 | |
| 133 | if (!hashLength && href.endsWith('#')) { |
| 134 | return serialized.slice(0, -1) |
| 135 | } |
| 136 | |
| 137 | return serialized |
| 138 | } |
| 139 | |
| 140 | // https://url.spec.whatwg.org/#string-percent-decode |
| 141 | /** @param {string} input */ |