UNPKG

@cachemap/web-storage

Version:

The Cachemap web storage module.

3 lines (2 loc) 2.18 kB
import"core-js/modules/es.set.difference.v2.js";import"core-js/modules/es.set.intersection.v2.js";import"core-js/modules/es.set.is-disjoint-from.v2.js";import"core-js/modules/es.set.is-subset-of.v2.js";import"core-js/modules/es.set.is-superset-of.v2.js";import"core-js/modules/es.set.symmetric-difference.v2.js";import"core-js/modules/es.set.union.v2.js";import"core-js/modules/es.array.push.js";import{isNumber as e,isPlainObject as s}from"lodash-es";class t{static init(e){return Promise.resolve(new t(e))}constructor(s){this.type="webStorage",this._maxHeapSize=4194304,this._storage=globalThis.localStorage,e(s.maxHeapSize)&&(this._maxHeapSize=s.maxHeapSize),this._name=s.name,"session"===s.storageType&&(this._storage=globalThis.sessionStorage)}clear(){for(let e=this._storage.length-1;e>=0;e-=1){const s=this._storage.key(e);s?.startsWith(this._name)&&this._storage.removeItem(s)}return Promise.resolve()}delete(e){const s=this._buildKey(e);return null===this._storage.getItem(s)?Promise.resolve(!1):(this._storage.removeItem(s),Promise.resolve(!0))}entries(e){const s=new Set(e.map((e=>this._buildKey(e)))),t=[],r=new RegExp(`${this._name}-`);for(let e=0;e<this._storage.length;e+=1){const o=this._storage.key(e);if(o?.startsWith(this._name)&&s.has(o)){const e=this._storage.getItem(o);e&&t.push([o.replace(r,""),e])}}return Promise.resolve(t)}get(e){return Promise.resolve(this._storage.getItem(this._buildKey(e))??void 0)}has(e){return Promise.resolve(null!==this._storage.getItem(this._buildKey(e)))}import(e){for(const[s,t]of e)this._storage.setItem(this._buildKey(s),JSON.stringify(t));return Promise.resolve()}get maxHeapSize(){return this._maxHeapSize}get name(){return this._name}set(e,s){return this._storage.setItem(this._buildKey(e),s),Promise.resolve()}size(){const e=[];for(let s=0;s<this._storage.length;s+=1){const t=this._storage.key(s);t?.startsWith(this._name)&&e.push(t)}return Promise.resolve(e.length-1)}_buildKey(e){return`${this._name}-${e}`}}const r=(e={})=>{if(!s(e))throw new TypeError("@cachemap/map expected options to be a plain object.");return s=>t.init({...e,...s})};export{t as WebStorageStore,r as init}; //# sourceMappingURL=index.mjs.map