(param, url)
| 6 | * @return {string} cleaned url |
| 7 | */ |
| 8 | export default function paramsClean(param, url) { |
| 9 | /* eslint-disable no-sparse-arrays */ |
| 10 | const isString = typeof param === 'string' |
| 11 | const search = (url.split('?') || [ , ])[1] |
| 12 | if (!search || (isString && search.indexOf(param) === -1)) { |
| 13 | return url |
| 14 | } |
| 15 | let pattern |
| 16 | if (isString) { |
| 17 | // If exact match on word boundary only |
| 18 | const bounds = isArrayParam(param) ? '' : '\\b' |
| 19 | pattern = `${bounds}${escapeRegexString(param)}${bounds}` |
| 20 | } else { |
| 21 | // Is Regex pattern for wildcard matches |
| 22 | pattern = param instanceof RegExp && param.source |
| 23 | } |
| 24 | // construct regex |
| 25 | const regex = new RegExp(`(\\&|\\?)?${pattern}([^&]+)`, 'g') |
| 26 | // Clean search string |
| 27 | const cleanSearch = `?${search}`.replace(regex, '').replace(/^&/, '?') |
| 28 | // replace search params with clean params |
| 29 | const cleanURL = url.replace(`?${search}`, cleanSearch) |
| 30 | // return url without the params |
| 31 | return cleanURL |
| 32 | } |
no test coverage detected