@stacks/auth
Version:
Authentication for Stacks apps.
85 lines • 2.87 kB
JavaScript
;
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