{"_id":"qs-like","_rev":"6-b5f47f5e3b3e9edea311c0a4cc282024","name":"qs-like","dist-tags":{"latest":"1.0.1","next":"2.0.0"},"versions":{"1.0.0-1":{"name":"qs-like","version":"1.0.0-1","description":"query string parser","main":"index.js","directories":{"test":"tests"},"scripts":{"test":"jest --detectOpenHandles --config jest.config.js","build":"node ./scripts/build.js"},"repository":{"type":"git","url":"git+https://github.com/fengxinming/qs.git"},"keywords":["qs","querystring","celia"],"author":{"name":"Jesse Feng"},"license":"MIT","bugs":{"url":"https://github.com/fengxinming/qs/issues"},"homepage":"https://github.com/fengxinming/qs#readme","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","babel-jest":"^24.0.0","clrsole":"^1.1.0","eslint":"^5.12.0","eslint-config-standard":"^12.0.0","eslint-plugin-import":"^2.14.0","eslint-plugin-node":"^8.0.1","eslint-plugin-promise":"^4.0.1","eslint-plugin-standard":"^4.0.0","fs-extra":"^7.0.1","jest":"^24.0.0","rollup":"^1.1.2","rollup-plugin-alias":"^1.5.1","rollup-plugin-buble":"^0.19.6","rollup-plugin-combine":"^1.0.0","rollup-plugin-commonjs":"^10.0.1","rollup-plugin-flow-no-whitespace":"^1.0.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-replace":"^2.1.0","uglify-js":"^3.4.9","zlib":"^1.0.5"},"dependencies":{"celia":"^6.0.0-beta.4"},"_id":"qs-like@1.0.0-1","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"fengxinming","email":"fxm0016@126.com"},"dist":{"integrity":"sha512-Z669E1aHFPGy0Wl0eQqHu/uEbAyRnjDueCyyfG9xbDWSvGqu39zcnwoXjsr1PIsSObfZ+XcUMBI9ebKUL+yhcg==","shasum":"5563c1c66c25fdb5760446ad02671665a05ab1bb","tarball":"https://registry.npmjs.org/qs-like/-/qs-like-1.0.0-1.tgz","fileCount":15,"unpackedSize":22333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOqLiCRA9TVsSAnZWagAANM4P/jZtjBfjP3M+Edv+BWy0\noMuNDiMw1bcS3du47RQxm8Ht7R2T3nF4vbjdCTK6lk/n0VcXaEMDZSPoJ+Ow\n0z72JFHMyoyOBcULW7dZ84W3bABV6pt/WOmawkmwXKr027RJJ9GBA/8QhBIr\n1Cp2Fj2CAl+GvaXLAjgGM3TypIp8XxHQlbufMFZ0P9VNKvVH+m6zWqlX1Hfe\nL5zV5B7h9NsmOpm/7K2zjIwzACWIHfkYcYLqp1AV4WIV+0dSuP9UxXV4kA4t\n2PIGluk3+stYBW7voA9EzT3JBYLLhoGsFihVtX9fYCM1XADaBuvm0mwn2kzK\nDZiX/vLsEjOzc6ZOhdKNaOJluwL9hPFkEfd3pLEl40RllA36fFbuxNpvHZL8\nP2r4guEOK75QI/DzpilweDXMK+htS22iwUTpl12G/o/7YeUkTp9labXog2Zq\nAsLw9Bp7EnRaWPxXyaNtJOsxrSZcdt/bJlhzXKQrgNlPFdu0wjCbPj7q9LpH\nfjzPcH8d4O4XdsFDIN9gOPEGj5KrSciOmVDPV21rDodgMq611xVa+EA6rqFx\nvYVtOq6nid2Wj/sQ5J9sz7b408L/dMr0Mru1bWteFtOXCdPWnXFTUcdOXylD\n6UyiwwQNuWWPGfvM34OCHBQ6tItWSwhMTupvvuMGZi0ff6g5zhUgWH6BsjRy\ntuqC\r\n=ruoL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCknhq5BNqrQvNUytL9Zs4oNH/0S4Hco9LzgcC1rj3f5QIgJN/j+JZyI7NH1epldrvZqoVtvGGAZu1k/u4nYVO1e3c="}]},"maintainers":[{"name":"fengxinming","email":"fxm0016@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/qs-like_1.0.0-1_1564123873542_0.5641939141401231"},"_hasShrinkwrap":false},"1.0.0":{"name":"qs-like","version":"1.0.0","description":"A tiny query string parsing and stringifying library","main":"./index.js","module":"./es/index.js","unpkg":"./qs-like.umd.js","jsdelivr":"./qs-like.umd.js","directories":{"test":"tests"},"scripts":{"test":"jest --detectOpenHandles --config jest.config.js","build":"node ./scripts/build.js"},"repository":{"type":"git","url":"git+https://github.com/fengxinming/qs.git"},"keywords":["qs","querystring","parsing","stringifying","celia"],"author":{"name":"Jesse Feng"},"license":"MIT","bugs":{"url":"https://github.com/fengxinming/qs/issues"},"homepage":"https://github.com/fengxinming/qs#readme","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","babel-jest":"^24.0.0","clrsole":"^1.1.0","eslint":"^5.12.0","eslint-config-standard":"^12.0.0","eslint-plugin-import":"^2.14.0","eslint-plugin-node":"^8.0.1","eslint-plugin-promise":"^4.0.1","eslint-plugin-standard":"^4.0.0","fs-extra":"^7.0.1","jest":"^24.0.0","rollup":"^1.1.2","rollup-plugin-alias":"^1.5.1","rollup-plugin-buble":"^0.19.6","rollup-plugin-combine":"^1.0.0","rollup-plugin-commonjs":"^10.0.1","rollup-plugin-flow-no-whitespace":"^1.0.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-replace":"^2.1.0","uglify-js":"^3.4.9","zlib":"^1.0.5"},"dependencies":{"celia":"^6.1.0-beta.1"},"_id":"qs-like@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"fengxinming","email":"fxm0016@126.com"},"dist":{"integrity":"sha512-qXmEb5WKAZduZBTpKbD4YrKM+e++bpXXSibpt6LJuWya+zHhzff3edcJ1bOc+iqyTzvxAJPuaAKH/d/Xb37CMw==","shasum":"d7ced8ef2a465d42c0c45e799b3c0a8152ec8712","tarball":"https://registry.npmjs.org/qs-like/-/qs-like-1.0.0.tgz","fileCount":23,"unpackedSize":34403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddIF4CRA9TVsSAnZWagAAO/MP/RrqXpqpZPdeEJMeX4m5\nBJHHO7oHm29IPA54UdA+vdh6U80sL48kofIncsClqNT1srigFXjDGTEg+3z3\nhbPtH4iobOhj8IwIJq8DkVppgnlFLO8ScgcIvHAOPD2tTOOVwi8L3XUPKhAm\n2JP/EsrpBkev8roWHVB+WmoeSdjslLKn3fTqZMGlEbMXUwUMgU1gkNLnCOLc\nrTdNjmXRTc9Gd4fz7nFp08oEF2blHouYrkoU47g6ZVZPKdW4hPGgVooSBBdo\niNL17s36iz4B4PItnLcbFgPcBEm/IkB1Rt6KPMg9qBPM5ydYXoBB6lK3Se0v\nxK0qIQX5pOSDMYMDrk3fjbfKiqfAXpe+oM73SnH40xb4kOHKHfCv4WBfef/0\n7+hYvFIxKZtkvbdPGCNzplYt+Ixb4iODy+yvj9GrAysQwwBPuCazdWHUsVRV\nXeTZa/UhUb0Te/IiAZ0wU/xxlmLmXCTo7XUX0KaIfehb/8z59o0XKpm/y88t\njdKgINtxlNNqfwN6/c2zjC2eub3dJ6D7+S0vc3W1EQCHwO/dcJzI+oE+8IsJ\nGy3eCI79THeDh/fRQ4am3kQ5CYtxL9krdno1T48Ake85Sx1iqWVtukWyOZUW\n7XbdCaAGQDYywqAgJTQ59Q+ztcRVTYqoTC2YU0dkyjs7yKBxhk6F22XhYq8O\ndHrp\r\n=i7Ba\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICC3ZZMKU3oT3nAfwP1hGJEAnPbDBuPVL8QcIT1hA9CwAiEApnKtCebtyNVu1R/VGbBw0qwz1m3UM/sdV32omPmMpv0="}]},"maintainers":[{"name":"fengxinming","email":"fxm0016@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/qs-like_1.0.0_1567916407620_0.34690131493510545"},"_hasShrinkwrap":false},"1.0.1":{"name":"qs-like","version":"1.0.1","description":"A tiny query string parsing and stringifying library","main":"./index.js","module":"./es/index.js","unpkg":"./qs-like.umd.js","jsdelivr":"./qs-like.umd.js","directories":{"test":"tests"},"scripts":{"test":"jest --detectOpenHandles --config jest.config.js","build":"node ./scripts/build.js"},"repository":{"type":"git","url":"git+https://github.com/fengxinming/qs.git"},"keywords":["qs","querystring","parsing","stringifying","celia"],"author":{"name":"Jesse Feng"},"license":"MIT","bugs":{"url":"https://github.com/fengxinming/qs/issues"},"homepage":"https://github.com/fengxinming/qs#readme","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","babel-jest":"^24.0.0","clrsole":"^1.1.0","eslint":"^5.12.0","eslint-config-standard":"^12.0.0","eslint-plugin-import":"^2.14.0","eslint-plugin-node":"^8.0.1","eslint-plugin-promise":"^4.0.1","eslint-plugin-standard":"^4.0.0","fs-extra":"^7.0.1","jest":"^24.0.0","rollup":"^1.1.2","rollup-plugin-alias":"^1.5.1","rollup-plugin-buble":"^0.19.6","rollup-plugin-combine":"^1.0.0","rollup-plugin-commonjs":"^10.0.1","rollup-plugin-flow-no-whitespace":"^1.0.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-replace":"^2.1.0","uglify-js":"^3.4.9","zlib":"^1.0.5"},"dependencies":{"celia":"^6.1.4"},"_id":"qs-like@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"fengxinming","email":"fxm0016@126.com"},"dist":{"integrity":"sha512-vtJ/owjtXw1euicsqS1ms1I7CDNWX9wVqr9KhBJDvbtD3X9+lrEXp3I2zyloBmPxAZSsY9S9azBb8YxrsRbk9w==","shasum":"b3c40c4e0caca85add8f224f28ed460c72796fa6","tarball":"https://registry.npmjs.org/qs-like/-/qs-like-1.0.1.tgz","fileCount":23,"unpackedSize":34404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduYYsCRA9TVsSAnZWagAAfycP/0M3IM7NCB8d1gkpYUcb\njVNn6kDzqHZ3KKHYndPrHUkk76ztYcW+jzlHSaDtmCqwS+Nph8L/y3aygVXL\nA/nDqXAEtg58K8odQNW3IxN9riHOL6kZnwzhaSX47m8VyySmmd8yoJQkFfcf\n0xHAlGU98SdaQNN9rMF+9ddljX1oqGvC+xGqb1980Tl9FTHHTzvfOVkWBJ59\nCyyQX9lCwIOagBdBZyJ0NuHp2R6JpVpm6MLHHc5QOJR1xAuidjs4Bu6ggX36\nmEgS2MkzAoanPUmOfd1HUsolmTyg0qMNSohtyyWMmce27E1MBaBw35AaAd+g\nyUJUEqnolxiydna6PfFCFWVTX5SKTtmeNl+XRysZbKwW4UqaunUxDV9hAVA3\nrS/od5i2jT6kkvMFf4sI6ASsQZJ34bVYK8c4rW+2sR6rAdk0NVzAlwUmM4jB\n1S6utkx4MWGzAMPIBaYrtONHFTfKq0NvWVUFtULV62Xkalx+nd1+6EsnfkUF\niKYpiB2INcG/MxkT0u5bx11EJI2jMC1TiRIYSXYbXoE4fHvuGpeTIljWnnI0\nLVRvDxRX0YkTiX0fygHD9P/kMqsXHjotr39iAHilfC+nT3tCTZNi53q8x21N\n23fEwOPakFMxc7pgJz/rRNISQvUqLTeN8hdoXzz2cHPv2RcYsaGRjIuoQbXD\nsKjU\r\n=gx1J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtW1r/nU+XoIPVbRI7UKVlm4S1jQivqsuZh7TIzjk6PgIgFLgCC2scIS9Gi+mAS5TDhHZxl6lzmhV5J4pmQiJZaDc="}]},"maintainers":[{"name":"fengxinming","email":"fxm0016@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/qs-like_1.0.1_1572439596028_0.5009600827845349"},"_hasShrinkwrap":false},"2.0.0":{"name":"qs-like","version":"2.0.0","description":"A tiny query string parsing and stringifying library.","main":"index.js","module":"./es/index.js","jsnext:main":"./es/index.js","unpkg":"umd.js","jsdelivr":"umd.js","scripts":{"test":"jest --detectOpenHandles --config jest.config.js","build":"rollup -c","benchmark":"npm run build && tiret -i ./benchmark/*.test.js"},"repository":{"type":"git","url":"git+https://github.com/fengxinming/fast-qs.git"},"keywords":["querystring","qs","query","url","parse","stringify"],"author":{"name":"Jesse Feng","email":"fxm0016@126.com"},"license":"MIT","bugs":{"url":"https://github.com/fengxinming/fast-qs/issues"},"homepage":"https://github.com/fengxinming/fast-qs#readme","dependencies":{"fast-qs":"^1.0.1"},"devDependencies":{"@babel/core":"^7.14.0","@babel/eslint-parser":"^7.13.14","@babel/eslint-plugin":"^7.13.16","@babel/preset-env":"^7.14.0","@commitlint/cli":"^12.1.1","@rollup/plugin-alias":"^3.1.2","@rollup/plugin-buble":"^0.21.3","@rollup/plugin-commonjs":"^15.1.0","@rollup/plugin-node-resolve":"^9.0.0","@rollup/plugin-replace":"^2.4.2","babel-jest":"^25.5.1","eslint":"^7.25.0","eslint-config-fe":"^1.3.1","husky":"^4.3.8","jest":"^25.5.4","lint-staged":"^10.5.4","rollup":"^2.46.0","rollup-plugin-combine":"^2.1.1","rollup-plugin-copy":"^3.4.0","rollup-plugin-empty":"^1.0.0","rollup-plugin-match":"^1.0.0","rollup-plugin-replace-imports":"^1.0.0","rollup-plugin-terser":"^5.3.1","tiret":"^1.0.1"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.js":["eslint --fix","git add"]},"_id":"qs-like@2.0.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-UGc1QOFJMKkl2iBWkHStxgIUU6tv7CdCCKUxX44KQqRN8iEq2iqv25ZSW1+WEszvE+YNFr4hZHsxrOmpPYkXSg==","shasum":"37216f0313c898112fa44a622b074f48a79b49e4","tarball":"https://registry.npmjs.org/qs-like/-/qs-like-2.0.0.tgz","fileCount":23,"unpackedSize":36166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkSDDCRA9TVsSAnZWagAAmI0QAKHeeDFnTDh2gDKDNlJe\nst2t+UHqwQ7X4iNgrGvX/p1ROir9FjOLn4K0xw20J+kI8EgUtxVAh3pNPY/a\nTRIj6S01qNhPWUUcAuIQlhSQEOUlUHEsF+7YBsPfhxL4qKYmHBAKtaMoqZTn\nMyKJHWIXGhLIQSt2+hUeUfAdV7wdUUU0tN6RGyhad4ztRmPApr8begzn4nK6\ndUsoIXgICTe6pYAyppQSZZupKqiuPqi4WL1c67BAxzeeAjRzpuMjURcXbR5Y\n9y4WxiNaVtzncaJDcFEO7wjvDpSY6cV7O36JMZzp6kc98UzJARBnnFcfA2TN\nXJj/y7aPbUyVosEvjij+vLPsyE9nl6NZUxq5vfaq0PurX2BcZCGlANYI4WyM\n8ThwNNggax0lyJpRrxox2z1z6hz+dIh92JTllbb1LNY0e0v/u8co+opaniC7\nsmdwsnKfG+odGuztb9KVwxUJD+5ZgIyTimtAHtjxWipYciRNyD4TW0K0WTJq\nDfqstCECIyDEEYTvy8IT4bgu+9kBNxgsxy80hi3SXZVFih5EalnN2rlSogTY\nYib07vRFtXNVf4W1pDNVSToevMXE7+S4WeBzX0E2p3571EYbrLLXRqJNPo8K\n4h5DaCgOu5E0vawi5gOOVLmzNISxBEjA5OCn7CPzS2q81cTw08I+1DAofmsO\nvajw\r\n=1E7+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBta6Mb8wynx8HkV8E421EiWlkpJQx4Sa5oBOQzqOZpeAiEA0fQ+CO1vF1fc1KX2aUWryZlxRBL2rlyFk1LfsiPbjkE="}]},"_npmUser":{"name":"fengxinming","email":"fxm0016@126.com"},"directories":{},"maintainers":[{"name":"fengxinming","email":"fxm0016@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/qs-like_2.0.0_1620123842793_0.8131163690789307"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-26T06:51:13.541Z","1.0.0-1":"2019-07-26T06:51:13.645Z","modified":"2022-05-13T21:30:24.366Z","1.0.0":"2019-09-08T04:20:07.727Z","1.0.1":"2019-10-30T12:46:36.183Z","2.0.0":"2021-05-04T10:24:02.928Z"},"maintainers":[{"name":"fengxinming","email":"fxm0016@126.com"}],"description":"A tiny query string parsing and stringifying library.","homepage":"https://github.com/fengxinming/fast-qs#readme","keywords":["querystring","qs","query","url","parse","stringify"],"repository":{"type":"git","url":"git+https://github.com/fengxinming/fast-qs.git"},"author":{"name":"Jesse Feng","email":"fxm0016@126.com"},"bugs":{"url":"https://github.com/fengxinming/fast-qs/issues"},"license":"MIT","readme":"# qs-like\n\n[![npm package](https://nodei.co/npm/qs-like.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/qs-like)\n\n> A tiny query string parsing and stringifying library.\n\n[![NPM version](https://img.shields.io/npm/v/qs-like.svg?style=flat)](https://npmjs.org/package/qs-like)\n[![NPM Downloads](https://img.shields.io/npm/dm/qs-like.svg?style=flat)](https://npmjs.org/package/qs-like)\n[![](https://data.jsdelivr.com/v1/package/npm/qs-like/badge)](https://www.jsdelivr.com/package/npm/qs-like)\n\n\n## Installation\n\n### In a browser\n\n#### 1.x\n\n```html\n<script src=\"//cdn.jsdelivr.net/npm/qs-like@1.0.1/qs-like.umd.min.js\"></script>\n<script>\n  // window.qsLike\n  qsLike.escape\n  qsLike.parse\n  qsLike.prefix\n  qsLike.stringify\n  qsLike.unescape\n</script> \n```\n\n#### 2.x\n\n```html\n<script src=\"//cdn.jsdelivr.net/npm/qs-like/umd.min.js\"></script>\n<!-- <script src=\"//cdn.jsdelivr.net/npm/qs-like/iife.min.js\"></script> -->\n<script>\n  // window.qsLike\n  qsLike.append;\n  qsLike.decode;\n  qsLike.parse;\n  qsLike.encode;\n  qsLike.stringify;\n  qsLike.escape;\n  qsLike.unescape;\n</script>\n\n```\n\n### Using npm\n\n```bash\nnpm install qs-like --save\n```\n\n```js\nvar append = require('qs-like/append');\nvar decode = require('qs-like/decode');\nvar encode = require('qs-like/encode');\nvar escape = require('qs-like/escape');\nvar parse = require('qs-like/parse');\nvar stringify = require('qs-like/stringify');\nvar unescape = require('qs-like/unescape');\n```\n\n```js\nexport { \n  append,\n  decode,\n  encode,\n  escape,\n  parse,\n  stringify,\n  unescape,\n} from 'qs-like/es';\n```\n\n\n## API\n\n### append(url, query[, opts])\n\n- `url` `<string>` a string URL to append to.\n- `query` `<string|object>` a string or object containing query params to append.\n- `options` `[object]`\n  - `encodeURIComponent` `[Function]` The function to use when converting URL-unsafe characters to percent-encoding in the query string. <strong>Default</strong>: `escape()`.\n  - `decodeURIComponent` `[Function]` The function to use when decoding percent-encoded characters in the query string. Default: `unescape()`.\n  - `filter` `[Function]` The function to use when filtering `query`.\n\nFor example: \n\n```js\nappend(null);\n// ''\n\nappend('http://demo.com')\n// 'http://demo.com'\n\nappend('http://demo.com', 123)\n// 'http://demo.com'\n\nappend('http://demo.com', 'a=1&b=1&c=1')\n// 'http://demo.com?a=1&b=1&c=1'\n\nappend('http://demo.com?test=1#hash', 'a=1&b=1&c=1')\n// 'http://demo.com?test=1&a=1&b=1&c=1#hash'\n\nappend('http://demo.com', { a: 1, b: 1, c: 1 })\n// 'http://demo.com?a=1&b=1&c=1'\n\nappend('http://demo.com?test=1#hash', { a: 1, b: 1, c: 1 })\n// 'http://demo.com?test=1&a=1&b=1&c=1#hash'\n\nappend('http://demo.com', 'a=1&b=1&c=1&hideTopbar=1&hideSidebar=1', {\n  filter(key) {\n    return key !== 'hideTopbar' && key !== 'hideSidebar';\n  }\n})\n// 'http://demo.com?a=1&b=1&c=1'\n\nappend('http://demo.com', { a: 1, b: 1, c: 1, hideTopbar: 1, hideSidebar: 1 }, {\n  filter(key) {\n    return key !== 'hideTopbar' && key !== 'hideSidebar';\n  }\n})\n// 'http://demo.com?a=1&b=1&c=1'\n\n```\n\n### decode()\n\nThe `decode()` method is an alias for `parse()`.\n\n### encode()\n\nThe `encode()` method is an alias for `stringify()`.\n\n### escape(str)\n\nThe `escape()` method performs URL percent-encoding on the given str in a manner that is optimized for the specific requirements of URL query strings.\n\nThe `escape()` method is used by `stringify()` and is generally not expected to be used directly. It is exported primarily to allow application code to provide a replacement percent-encoding implementation if necessary by assigning `escape()` to an alternative function.\n\n### parse(str[, sep[, eq[, options]]])\n\n- `str` `<string>` The URL query string to parse.\n- `sep` `[string]` The substring used to delimit key and value pairs in the query string. <strong>Default</strong>: `'&'`.\n- `eq` `[string]` The substring used to delimit keys and values in the query string. <strong>Default</strong>: '='.\n- `options` `[object]`\n  - `decodeURIComponent` `[Function]` The function to use when decoding percent-encoded characters in the query string. Default: `unescape()`.\n\nFor example: \n\n```js\nparse(null)\n// => {}\n\nparse('12342343')\n// => {}\n\nparse('a=1&b=2&c=3&d=&f=')\n// => { a: '1', b: '2', c: '3', d: '', f: '' }\n\nparse('&a=1&b=2&c=3&d=&f=')\n// => { a: '1', b: '2', c: '3', d: '', f: '' }\n\nparse('abcd1234&a=1&b=2&c=3&d=&f=')\n// => { a: '1', b: '2', c: '3', d: '', f: '' }\n\nparse('?a=1&a=2&a=3&d=&f=')\n// => { a: ['1', '2', '3'], d: '', f: '' }\n\nparse('https://www.npmjs.com/search?q=qs#hash')\n// => { q: 'qs' }\n\n```\n\n### stringify(obj[, sep[, eq[, options]]])\n\n- `obj` `<object>` The object to serialize into a URL query string.\n- `sep` `[string]` The substring used to delimit key and value pairs in the query string. <strong>Default</strong>: `'&'`.\n- `eq` `[string]`. The substring used to delimit keys and values in the query string. <strong>Default</strong>: `'='`.\n- `options` `[object]`\n  - `encodeURIComponent` `[Function]` The function to use when converting URL-unsafe characters to percent-encoding in the query string. <strong>Default</strong>: `escape()`.\n\nThe `stringify()` method produces a URL query string from a given obj by iterating through the object's \"own properties\".\n\nFor example: \n\n```js\nstringify(null)\n// => {}\n    \nstringify({ a: 1, b: null, c: undefined, d: NaN, e: '' })\n// => 'a=1&b=&c=&d=&e='\n\nstringify({ a: '', c: ['\\'1\\'', '2', '3', NaN, undefined], f: null, '': 'null' })\n// => 'a=&c=%271%27&c=2&c=3&c=&c=&f='\n\nstringify({ a: { key: 'value', 'key2': 'value2' }, d: undefined, f: '' })\n// => 'a=%7B%22key%22%3A%22value%22%2C%22key2%22%3A%22value2%22%7D&d=&f='\n\nstringify({ a: () => { } })\n// => 'a=%28%29%20%3D%3E%20%7B%7D'\n\n```\n\n### unescape(str)\n\n- `str` `<string>` The `unescape()` method performs decoding of URL percent-encoded characters on the given str.\n\nThe `unescape()` method is used by `parse()` and is generally not expected to be used directly. It is exported primarily to allow application code to provide a replacement decoding implementation if necessary by assigning querystring.unescape to an alternative function.\n\nBy default, the `unescape()` method will attempt to use the JavaScript built-in `decodeURIComponent()` method to decode. If that fails, a safer equivalent that does not throw on malformed URLs will be used.\n\n\n## Benchmark\n\n### parse\n\n【querystringify.parse】 x 70,472 ops/sec ±0.41% (93 runs sampled)\n\n【query-string.parse】 x 40,702 ops/sec ±0.54% (95 runs sampled)\n\n【qs.parse】 x 38,423 ops/sec ±0.20% (92 runs sampled)\n\n【parse】 x 201,042 ops/sec ±0.32% (93 runs sampled)\n\nThe fastest is 【parse】\n\n### stringify\n\n【querystringify.stringify】 x 47,602 ops/sec ±0.37% (92 runs sampled)\n\n【query-string.stringify】: // what?\n\n【qs.stringify】 x 75,845 ops/sec ±0.61% (91 runs sampled)\n\n【stringify】 x 143,289 ops/sec ±0.50% (95 runs sampled)\n\nThe fastest is 【stringify】\n\n\n","readmeFilename":"README.md"}