UNPKG

@stacks/auth

Version:

Authentication for Stacks apps.

85 lines 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LocalStorageStore = exports.InstanceDataStore = exports.SessionDataStore = void 0; const sessionData_1 = require("./sessionData"); const constants_1 = require("./constants"); const common_1 = require("@stacks/common"); class SessionDataStore { constructor(sessionOptions) { if (sessionOptions) { const newSessionData = new sessionData_1.SessionData(sessionOptions); this.setSessionData(newSessionData); } } getSessionData() { throw new Error('Abstract class'); } setSessionData(_session) { throw new Error('Abstract class'); } deleteSessionData() { throw new Error('Abstract class'); } } exports.SessionDataStore = SessionDataStore; class InstanceDataStore extends SessionDataStore { constructor(sessionOptions) { super(sessionOptions); if (!this.sessionData) { this.setSessionData(new sessionData_1.SessionData({})); } } getSessionData() { if (!this.sessionData) { throw new common_1.NoSessionDataError('No session data was found.'); } return this.sessionData; } setSessionData(session) { this.sessionData = session; return true; } deleteSessionData() { this.setSessionData(new sessionData_1.SessionData({})); return true; } } exports.InstanceDataStore = InstanceDataStore; class LocalStorageStore extends SessionDataStore { constructor(sessionOptions) { super(sessionOptions); if (sessionOptions && sessionOptions.storeOptions && sessionOptions.storeOptions.localStorageKey && typeof sessionOptions.storeOptions.localStorageKey === 'string') { this.key = sessionOptions.storeOptions.localStorageKey; } else { this.key = constants_1.LOCALSTORAGE_SESSION_KEY; } const data = localStorage.getItem(this.key); if (!data) { const sessionData = new sessionData_1.SessionData({}); this.setSessionData(sessionData); } } getSessionData() { const data = localStorage.getItem(this.key); if (!data) { throw new common_1.NoSessionDataError('No session data was found in localStorage'); } const dataJSON = JSON.parse(data); return sessionData_1.SessionData.fromJSON(dataJSON); } setSessionData(session) { localStorage.setItem(this.key, session.toString()); return true; } deleteSessionData() { localStorage.removeItem(this.key); this.setSessionData(new sessionData_1.SessionData({})); return true; } } exports.LocalStorageStore = LocalStorageStore; //# sourceMappingURL=sessionStore.js.map