| 94 | } |
| 95 | |
| 96 | function normalizeSearchParams (query) { |
| 97 | if (typeof query !== 'string') { |
| 98 | return query |
| 99 | } |
| 100 | |
| 101 | const originalQp = new URLSearchParams(query) |
| 102 | const normalizedQp = new URLSearchParams() |
| 103 | |
| 104 | for (let [key, value] of originalQp.entries()) { |
| 105 | key = key.replace('[]', '') |
| 106 | |
| 107 | const valueRepresentsString = /^(['"]).*\1$/.test(value) |
| 108 | if (valueRepresentsString) { |
| 109 | normalizedQp.append(key, value) |
| 110 | continue |
| 111 | } |
| 112 | |
| 113 | if (value.includes(',')) { |
| 114 | const values = value.split(',') |
| 115 | for (const v of values) { |
| 116 | normalizedQp.append(key, v) |
| 117 | } |
| 118 | continue |
| 119 | } |
| 120 | |
| 121 | normalizedQp.append(key, value) |
| 122 | } |
| 123 | |
| 124 | return normalizedQp |
| 125 | } |
| 126 | |
| 127 | function safeUrl (path) { |
| 128 | if (typeof path !== 'string') { |