UNPKG

@lytejs/query-string

Version:

A Query String Parser that actually works

63 lines (50 loc) 1.9 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ui = {})); }(this, (function (exports) { 'use strict'; 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); }; exports.parse = parse; exports.stringify = stringify; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=index.js.map