@bigcommerce/stencil-utils
Version:
Utility library used by BigCommerce Stencil Framework themes
30 lines (23 loc) • 893 B
JavaScript
// 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 isValidParam = (value) => (value !== '' && value !== undefined);
const optionsCollection = Object.keys(qsParams).reduce((normalized, key) => {
let param;
if (qsParams[key] instanceof Array) {
const filtered = qsParams[key].filter(isValidParam);
param = { [key]: filtered };
} else if (isValidParam(qsParams[key])) {
param = { [key]: qsParams[key] };
}
return Object.assign({}, normalized, param);
}, {});
const paramString = queryString.stringify(optionsCollection);
return paramString;
}