UNPKG

@lytejs/query-string

Version:

A Query String Parser that actually works

52 lines (42 loc) 1.42 kB
var stringify = function stringify(params) { return Object.keys(params).map(function (k) { var current = params[k]; if (current === undefined) return k + "="; if (Array.isArray(current)) { if (current.length === 0) return k + "="; return current.map(function (param) { return k + "[]=" + encodeURIComponent(typeof param === 'object' ? JSON.stringify(param) : param); }).join('&'); } return k + "=" + encodeURIComponent(typeof current === 'object' ? JSON.stringify(current) : current); }).join('&'); }; var parse = function parse(query) { if (query === void 0) { query = ''; } var trimQuery = query.replace(/^\?/, ''); var queries = trimQuery.split('&').map(function (query) { return query.split('='); }); var initial = {}; if (!trimQuery) return initial; return queries.reduce(function (acc, query) { if (!query[1] || !query[0]) return acc; var decoded = decodeURIComponent(query[1]); var finalValue = decoded; if (decoded[0] === '{' || decoded[0] === '[') { try { finalValue = JSON.parse(decoded); } catch (e) {} } if (query[0].endsWith('[]')) { var _key = query[0].slice(0, -2); acc[_key] = acc[_key] || []; acc[_key].push(finalValue); } else acc[query[0]] = finalValue; return acc; }, initial); }; export { parse, stringify }; //# sourceMappingURL=index.js.map