UNPKG

@obelisk/client

Version:

Typescript client to interact with Obelisk on a higher level than the regular ReST API calls.

87 lines (86 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Storage = void 0; /** * @hidden */ class Storage { static create(options) { return new BrowserLocalStorage(options); } } exports.Storage = Storage; /** * @hidden */ class BrowserLocalStorage { constructor(options) { this.prefix = [options.host, options.apiVersion, options.clientId].join('-') + '-'; } clearAll() { const keys = []; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key && key.indexOf(this.prefix) == 0) { keys.push(key); } } keys.sort((a, b) => { if (a.endsWith('logInfo')) { return 1; } else if (b.endsWith('logInfo')) { return -1; } else { return a.localeCompare(b); } }); keys.forEach(k => localStorage.removeItem(k)); } clearExpired() { const time = new Date().getTime(); for (let i = 0; i < localStorage.length; i++) { let key = localStorage.key(i); if (key && key.indexOf(this.prefix) == 0) { let value = localStorage.getItem(key); if (value) { try { let expires = JSON.parse(value).expires; if (!!expires && expires < time) { localStorage.removeItem(key); } } catch (err) { localStorage.removeItem(key); } } } } } get(key, clearAfterRead = false) { if (!key) { return; } let k = this.prefix + key; var value = localStorage.getItem(k); if (value) { if (clearAfterRead) { localStorage.removeItem(k); } value = JSON.parse(value); } this.clearExpired(); return value; } addRaw(key, value) { let k = this.prefix + key; localStorage.setItem(k, JSON.stringify(value)); } add(key, value) { this.clearExpired(); let k = this.prefix + key; value.expires = new Date().getTime() + (60 * 60 * 1000); localStorage.setItem(k, JSON.stringify(value)); } }