in public/src/js/utils/parse-query-params.js [15:51]
export default function(url = window.location.search, opts = {}) {
const nsIndex = opts.excludeNamespace ? -1 : 0,
nsStrip = opts.namespace && opts.stripNamespace && !opts.excludeNamespace,
nsLength = opts.namespace ? ('' + opts.namespace).length : 0,
result = {};
_.chain(urlQuery(url).split('&'))
.filter(function(kv) {
return kv; })
.map(function(kv) {
return kv.split('='); })
.filter(function(kv) {
return _.isFunction(opts.predicateKey) ? opts.predicateKey(kv[0]) : true; })
.filter(function(kv) {
return _.isFunction(opts.predicateVal) ? opts.predicateVal(kv[1]) : true; })
.filter(function(kv) {
return !opts.namespace || kv[0].indexOf(opts.namespace) === nsIndex; })
.each(function(kv) {
const key = nsStrip ? kv[0].slice(nsLength) : kv[0],
value = kv[1] === undefined ? undefined : decodeURIComponent(kv[1].replace(/\+/g, ' '));
if (opts.multipleValues) {
if (!_.has(result, key)) {
result[key] = [];
}
result[key].push(value);
} else {
result[key] = value;
}
});
return result;
}