@manojadams/session-store
Version:
State management with session-storage/local-storage
1 lines • 5.13 kB
Source Map (JSON)
{"version":3,"file":"index.modern.mjs","sources":["../src/store/base/BaseSessionStore.ts","../src/store/SessionStore.ts"],"sourcesContent":["import { IStore } from \"./../../constants\";\n\n/**\n * @author - manojgetwealthy\n * Simple state management with session storage\n */\nabstract class BaseSessionStore<T> {\n protected _storeType: Storage | undefined;\n protected _sessionData: T & IStore;\n protected _name: string;\n protected _createdAt: Date;\n protected _updatedAt: Date;\n isReady: boolean;\n\n constructor(_name?: string, _storeType?: Storage) {\n this._name = _name || this.constructor.name;\n this._storeType = _storeType;\n this._sessionData = <T & IStore>{};\n this._createdAt = new Date();\n this._updatedAt = new Date();\n this.isReady = false;\n }\n\n init(deps?) {\n const storeType = this._storeType || sessionStorage;\n const sessionData = storeType.getItem(this._name);\n if (sessionData) {\n this._sessionData = JSON.parse(sessionData);\n this.isReady = true;\n }\n }\n\n protected getData(dataKey: keyof T) {\n return this._sessionData[dataKey];\n }\n\n protected setData(dataKey: keyof T, value: any) {\n this._sessionData[dataKey] = value;\n this._updatedAt = new Date();\n }\n\n protected _cleanup() {\n const createdAt = this._sessionData._createdAt || this._createdAt.toISOString();\n const updatedAt = this._updatedAt.toISOString();\n this._sessionData._createdAt = createdAt;\n this._sessionData._updatedAt = updatedAt;\n }\n\n destroy() {\n this._cleanup();\n const storeType = this._storeType || sessionStorage;\n storeType.setItem(this._name, JSON.stringify(this._sessionData));\n }\n\n remove() {\n const storeType = this._storeType || sessionStorage;\n const allSessionKeys = Object.keys(this._sessionData);\n allSessionKeys.forEach(k => {\n this._sessionData[k] = undefined;\n });\n storeType.removeItem(this._name);\n }\n}\n\nexport default BaseSessionStore;\n\n","import BaseSessionStore from \"./base/BaseSessionStore\";\n\nclass SessionStore<T> extends BaseSessionStore<T> {\n isStoreReady: boolean;\n private _deps: Array<SessionStore<any>>;\n constructor(name: string, ...deps: Array<SessionStore<any>>) {\n super(name);\n this.isStoreReady = false;\n this._deps = deps;\n }\n protected setStoreType(storeType: Storage) {\n this._storeType = storeType;\n }\n async init() {\n super.init();\n if (this.isStoreReady) return;\n if (this._deps) {\n for (let i =0; i < this._deps.length; i++) {\n if (!this._deps[i].isStoreReady) {\n await this._deps[i].init();\n }\n }\n }\n }\n\n destroy() {\n super.destroy();\n if (this._deps) {\n for (let i = 0; i < this._deps.length; i++) {\n this._deps[i].destroy();\n }\n }\n this.isReady = false;\n this.isStoreReady = false;\n }\n}\n\nexport default SessionStore;"],"names":["BaseSessionStore","constructor","_name","_storeType","_sessionData","this","_createdAt","_updatedAt","isReady","name","Date","init","deps","sessionData","sessionStorage","getItem","JSON","parse","getData","dataKey","setData","value","_cleanup","createdAt","toISOString","updatedAt","destroy","setItem","stringify","remove","storeType","Object","keys","forEach","k","undefined","removeItem","SessionStore","super","isStoreReady","_deps","setStoreType","async","i","length"],"mappings":"AAMA,MAA+BA,EAQ3BC,YAAYC,EAAgBC,GAPlBA,KAAAA,gBACAC,EAAAA,KAAAA,yBACAF,WAAK,EAAAG,KACLC,gBAAU,EAAAD,KACVE,gBAAU,EAAAF,KACpBG,aAAO,EAGHH,KAAKH,MAAQA,GAASG,KAAKJ,YAAYQ,KACvCJ,KAAKF,WAAaA,EAClBE,KAAKD,aAA2B,GAChCC,KAAKC,WAAa,IAAUI,KAC5BL,KAAKE,WAAa,IAAUG,KAC5BL,KAAKG,SAAU,CACnB,CAEAG,KAAKC,GACD,MACMC,GADYR,KAAKF,YAAcW,gBACPC,QAAQV,KAAKH,OACvCW,IACAR,KAAKD,aAAeY,KAAKC,MAAMJ,GAC/BR,KAAKG,SAAU,EAEvB,CAEUU,QAAQC,GACd,YAAYf,aAAae,EAC7B,CAEUC,QAAQD,EAAkBE,GAChChB,KAAKD,aAAae,GAAWE,EAC7BhB,KAAKE,WAAa,IACtBG,IAAA,CAEUY,WACN,MAAeC,EAAGlB,KAAKD,aAAaE,YAAcD,KAAKC,WAAWkB,cACnDC,EAAGpB,KAAKE,WAAWiB,cAClCnB,KAAKD,aAAaE,WAAaiB,EAC/BlB,KAAKD,aAAaG,WAAakB,CACnC,CAEAC,UACIrB,KAAKiB,YACajB,KAAKF,YAAcW,gBAC3Ba,QAAQtB,KAAKH,MAAOc,KAAKY,UAAUvB,KAAKD,cACtD,CAEAyB,SACI,MAAMC,EAAYzB,KAAKF,YAAcW,eACdiB,OAAOC,KAAK3B,KAAKD,cACzB6B,QAAQC,IACnB7B,KAAKD,aAAa8B,QAAKC,CAAAA,GAE3BL,EAAUM,WAAW/B,KAAKH,MAC9B,EC3DJ,MAAMmC,UAA2CrC,EAG7CC,YAAYQ,KAAiBG,GACzB0B,MAAM7B,GAAMJ,KAHhBkC,kBAAY,EAAAlC,KACJmC,WAGJ,EAAAnC,KAAKkC,cAAe,EACpBlC,KAAKmC,MAAQ5B,CACjB,CACU6B,aAAaX,GACnBzB,KAAKF,WAAa2B,CACtB,CACAY,aAEI,GADAJ,MAAM3B,QACFN,KAAKkC,cACLlC,KAAKmC,MACL,IAAK,IAAKG,EAAE,EAAGA,EAAItC,KAAKmC,MAAMI,OAAQD,IAC7BtC,KAAKmC,MAAMG,GAAGJ,yBACJC,MAAMG,GAAGhC,MAIpC,CAEAe,UAEI,GADAY,MAAMZ,UACFrB,KAAKmC,MACL,IAAK,IAAIG,EAAI,EAAGA,EAAItC,KAAKmC,MAAMI,OAAQD,IACnCtC,KAAKmC,MAAMG,GAAGjB,UAGtBrB,KAAKG,SAAU,EACfH,KAAKkC,cAAe,CACxB"}