@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
JavaScript
;
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));
}
}