forked from bigcommerce/stencil-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
28 lines (22 loc) · 820 Bytes
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Utilities
const queryString = require('query-string');
/**
* Normalize querystring params. Remove empty array values
* @param {string} params
* @returns {string} Normalized querystring
*/
export function normalizeQueryStringParams(params) {
const qsParams = queryString.parse(params);
const optionsCollection = Object.keys(qsParams).reduce((normalized, key) => {
let param;
if (qsParams[key] instanceof Array) {
const filtered = qsParams[key].filter((item) => (item !== '' || item !== undefined));
param = { [key]: filtered };
} else {
param = { [key]: qsParams[key] };
}
return Object.assign({}, normalized, param);
}, {});
const paramString = queryString.stringify(optionsCollection);
return paramString;
}