UNPKG

advanced-search-params

Version:

[![npm version](https://badge.fury.io/js/%40urlkit%2Fsearch-params.svg)](https://www.npmjs.com/package/advanced-search-params) [![jsDelivr hits](https://data.jsdelivr.com/v1/package/npm/advanced-search-params/badge)](https://www.jsdelivr.com/package/npm/a

2 lines 2.2 kB
'use strict';function i(s){return s===void 0?[]:Array.isArray(s)?s:[s]}function f(s){return s==null?"":JSON.stringify(s)}function w(s){try{return JSON.parse(s)}catch{return}}function g(s,c){if(!s)throw new Error("Key cannot be empty");if(c===void 0)throw new Error("Values cannot be undefined")}function R(s,c){let d=c.toString();return `${s}${d?`?${d}`:""}`}function T(s){let{pathname:c,searchParams:d,navigate:l}=s,A=()=>new URLSearchParams(d.toString()),p=r=>{let e=A();r(e),l(R(c,e));},u=(r,e)=>{let t=d.getAll(r);if(t.length===0)return;if(e?.parse)try{let o=t.map(a=>w(a));return e?.forceArray||t.length>1?o:o[0]}catch{return}let n=t.flatMap(o=>o.split(","));return e?.forceArray||n.length>1?n:n[0]},h=(r,e,t)=>{g(r,e),p(n=>{n.delete(r),(t?.serialize?i(e).map(a=>f(a)):i(e).map(String)).forEach(a=>n.append(r,a));});},P=(r,e,t)=>{g(r,e);let n=u(r)||[],o=[...new Set([...i(n),...i(t?.serialize?i(e).map(f):e)])];p(a=>{a.delete(r),o.forEach(m=>a.append(r,String(m)));});},S=(r,e)=>{let t=i(u(r)),n=i(e),o=t.filter(a=>!n.includes(a));p(a=>{a.delete(r),o.forEach(m=>a.append(r,String(m)));});};return {get:u,set:h,add:P,remove:S,matches:(r,e,t)=>{let n=u(r,t);if(!n)return !1;if(t?.parse){let o=JSON.stringify(e);return Array.isArray(n)?n.some(a=>JSON.stringify(a)===o):JSON.stringify(n)===o}return Array.isArray(n)?n.includes(e):n===e},getWithDefault:(r,e,t)=>{let n=u(r,t);return n===void 0?e:n},clear:r=>{p(e=>e.delete(r));},resetAllParams:()=>{l(c);},setMany:(r,e)=>{Object.entries(r).forEach(([t,n])=>{g(t,n);}),p(t=>{Object.entries(r).forEach(([n,o])=>{t.delete(n),(e?.serialize?i(o).map(m=>f(m)):i(o).map(String)).forEach(m=>t.append(n,m));});});},toggle:(r,e,t)=>{let n=u(r,t);n?S(r,n):P(r,e||"true",t);},update:(r,e,t)=>{let o=i(u(r)).map(a=>a===e?t:a);h(r,o);},getAll:()=>{let r={};return d.forEach((e,t)=>{let n=r[t];r[t]=n?[...i(n),e]:e;}),r},params:d}}function U(){let s=new URLSearchParams(window.location.search);return T({pathname:window.location.pathname,searchParams:s,navigate:c=>{window.history.pushState({},"",c);}})}typeof window<"u"&&(window.UseSearchParams={createSearchParams:U});exports.createSearchParams=U;//# sourceMappingURL=index.cjs.map //# sourceMappingURL=index.cjs.map