UNPKG

@cachemap/web-storage

Version:

The Cachemap web storage module.

3 lines (2 loc) 2.2 kB
"use strict";require("core-js/modules/es.set.difference.v2.js"),require("core-js/modules/es.set.intersection.v2.js"),require("core-js/modules/es.set.is-disjoint-from.v2.js"),require("core-js/modules/es.set.is-subset-of.v2.js"),require("core-js/modules/es.set.is-superset-of.v2.js"),require("core-js/modules/es.set.symmetric-difference.v2.js"),require("core-js/modules/es.set.union.v2.js"),require("core-js/modules/es.array.push.js");var e=require("lodash-es");class s{static init(e){return Promise.resolve(new s(e))}constructor(s){this.type="webStorage",this._maxHeapSize=4194304,this._storage=globalThis.localStorage,e.isNumber(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 i=this._storage.key(e);if(i?.startsWith(this._name)&&s.has(i)){const e=this._storage.getItem(i);e&&t.push([i.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}`}}exports.WebStorageStore=s,exports.init=(t={})=>{if(!e.isPlainObject(t))throw new TypeError("@cachemap/map expected options to be a plain object.");return e=>s.init({...t,...e})}; //# sourceMappingURL=index.cjs.map