MCPcopy Create free account
hub / github.com/DavidWells/analytics / paramsClean

Function paramsClean

packages/analytics-util-params/src/paramsClean.js:8–32  ·  view source on GitHub ↗
(param, url)

Source from the content-addressed store, hash-verified

6 * @return {string} cleaned url
7 */
8export 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}

Callers 1

paramsReplaceFunction · 0.70

Calls 2

isArrayParamFunction · 0.90
escapeRegexStringFunction · 0.90

Tested by

no test coverage detected