UNPKG

qs-like

Version:

A tiny query string parsing and stringifying library

6 lines 1.78 kB
/* * qs-like.js v1.0.1 * (c) 2018-2019 Jesse Feng * Released under the MIT License. */ !function(n){"use strict";var i=function(n,r){return n[n.length]=r,n};var c=function(n){return"string"==typeof n};var a=function(n){return void 0===n};var f=function(n,r){return r?n.bind(r):n};var t=function(n,r,e,t,o){t=f(t,o);for(var u=r;u<e;u++)!1===t(n[u],u,n)&&(u=e)};var s=function(n,r,e){t(n,0,n.length,r,e)};function v(n){return decodeURIComponent(n)}var d=Array.isArray;function r(n,r,e,t){var o={};if(c(n)){var u=(t=t||{}).decodeURIComponent||v;!function(n,r,e,t){var o="",u="",i=!1;s(n,function(n){switch(n){case"?":return void(u=o="");case r:return i&&o&&t(o,u),i=!1,void(u=o="");case e:return i=!0,void(u="");case"#":return!1;default:i?u+=n:o+=n}}),i&&o&&t(o,u)}(n,r=r||"&",e=e||"=",function(n,r){r=u(r);var e=o[n];a(e)?o[n]=r:d(e)?i(e,r):o[n]=[e,r]})}return o}var p=function(n){return null!==n&&"object"==typeof n};var g=function(n,r,e){r=f(r,e);for(var t=Object.keys(n),o=t.length,u=0,i=void 0;u<o;u++)!1===r(n[i=t[u]],i,n)&&(u=o)},e=/[!'()*]/g;function o(n){return"%"+n.charCodeAt(0).toString(16).toUpperCase()}function l(n){return encodeURIComponent(n).replace(e,o)}var u=JSON.stringify;function y(n,r){switch(typeof n){case"string":return r(n);case"number":if(isNaN(n))return"";case"boolean":return n.toString();case"object":return null===n?"":r(u(n));case"undefined":return"";default:return r(n.toString())}}var h=Array.isArray;function b(n,r,e,t){if(p(n)){r=r||"&",e=e||"=";var o=(t=t||{}).encodeURIComponent||l,u=[];return g(n,function(n,r){r&&(h(n)?n.forEach(function(n){i(u,r+e+y(n,o))}):i(u,r+e+y(n,o)))}),u.join(r)}return""}n.decode=r,n.encode=b,n.escape=l,n.parse=r,n.prefix=function(n,r){return r=r||"?",n?0===n.indexOf(r)?n:r+n:n},n.stringify=b,n.unescape=v}({});