@vegajs/storage
Version:
A flexible and type-safe storage service adapter for TypeScript and JavaScript. Supports various storage mechanisms like localStorage, query strings, and mock storage with both asynchronous and synchronous APIs.
1 lines • 935 B
JavaScript
import{isJsonString as s}from"@vegajs/shared";class e{constructor(){this.isSSR="undefined"===typeof window,this.searchParams=new URLSearchParams(this.isSSR?"":window.location.search)}updateSearchParams(s){if(!this.isSSR){const e=`${window.location.pathname}?${s.toString()}`;window.history.replaceState(null,"",e)}}clearItem(s){this.searchParams.delete(s),this.updateSearchParams(this.searchParams)}clear(){this.searchParams=new URLSearchParams,this.updateSearchParams(this.searchParams)}getItem(s){return Promise.resolve(this.getItemSync(s))}getItemSync(e){const a=this.searchParams.get(e);if(null===a)return null;try{return s(a)?JSON.parse(a):a}catch(t){return null}}setItem(s,e){return Promise.resolve(this.setItemSync(s,e))}setItemSync(s,e){const a="string"===typeof e?e:JSON.stringify(e);this.searchParams.set(s,a),this.updateSearchParams(this.searchParams)}has(s){return this.searchParams.has(s)}}export{e as QueryStringAdapter};