UNPKG

@igo2/core

Version:
76 lines 9.46 kB
import { BehaviorSubject } from 'rxjs'; import { StorageScope, StorageServiceEventEnum } from './storage.interface'; export class BaseStorage { options; storageChange$ = new BehaviorSubject(undefined); constructor(config) { this.options = config.getConfig('storage') || { key: 'igo' }; } /** * Use to get the data found in storage file */ get(key, scope) { let value; if (!scope || scope === StorageScope.SESSION) { value = sessionStorage.getItem(`${this.options.key}.${key}`); } if (scope === StorageScope.LOCAL || (!value && !scope)) { value = localStorage.getItem(`${this.options.key}.${key}`); } if (value) { try { return JSON.parse(value); } catch { return value; } } return value; } set(key, value, scope = StorageScope.LOCAL) { const previousValue = this.get(key, scope); if (scope === StorageScope.SESSION) { sessionStorage.setItem(`${this.options.key}.${key}`, JSON.stringify(value)); } else { localStorage.setItem(`${this.options.key}.${key}`, JSON.stringify(value)); } const currentValue = this.get(key, scope); if (currentValue !== previousValue) { this.storageChange$.next({ key, scope, event: previousValue !== undefined ? StorageServiceEventEnum.MODIFIED : StorageServiceEventEnum.ADDED, previousValue, currentValue }); } } remove(key, scope = StorageScope.LOCAL) { const previousValue = this.get(key, scope); if (scope === StorageScope.SESSION) { sessionStorage.removeItem(`${this.options.key}.${key}`); } else { localStorage.removeItem(`${this.options.key}.${key}`); } this.storageChange$.next({ key, scope, event: StorageServiceEventEnum.REMOVED, previousValue }); } clear(scope = StorageScope.LOCAL) { if (scope === StorageScope.SESSION) { sessionStorage.clear(); } else { localStorage.clear(); } this.storageChange$.next({ scope, event: StorageServiceEventEnum.CLEARED }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3RvcmFnZS9zcmMvc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFFTCxZQUFZLEVBRVosdUJBQXVCLEVBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsTUFBTSxPQUFnQixXQUFXO0lBQ3JCLE9BQU8sQ0FBSztJQUVmLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsU0FBUyxDQUFDLENBQUM7SUFFNUUsWUFBWSxNQUFxQjtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUksU0FBUyxDQUFDLElBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFRLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFvQjtRQUNuQyxJQUFJLEtBQVUsQ0FBQztRQUVmLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QyxLQUFLLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELElBQUksS0FBSyxLQUFLLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxHQUFHLENBQ0QsR0FBVyxFQUNYLEtBQXlDLEVBQ3pDLFFBQXNCLFlBQVksQ0FBQyxLQUFLO1FBRXhDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxjQUFjLENBQUMsT0FBTyxDQUNwQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxFQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUN0QixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUxQyxJQUFJLFlBQVksS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDdkIsR0FBRztnQkFDSCxLQUFLO2dCQUNMLEtBQUssRUFDSCxhQUFhLEtBQUssU0FBUztvQkFDekIsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFFBQVE7b0JBQ2xDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLO2dCQUNuQyxhQUFhO2dCQUNiLFlBQVk7YUFDYixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsUUFBc0IsWUFBWSxDQUFDLEtBQUs7UUFDMUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLEdBQUc7WUFDSCxLQUFLO1lBQ0wsS0FBSyxFQUFFLHVCQUF1QixDQUFDLE9BQU87WUFDdEMsYUFBYTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBc0IsWUFBWSxDQUFDLEtBQUs7UUFDNUMsSUFBSSxLQUFLLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0b3JhZ2VPcHRpb25zLFxuICBTdG9yYWdlU2NvcGUsXG4gIFN0b3JhZ2VTZXJ2aWNlRXZlbnQsXG4gIFN0b3JhZ2VTZXJ2aWNlRXZlbnRFbnVtXG59IGZyb20gJy4vc3RvcmFnZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN0b3JhZ2U8VCBleHRlbmRzIFN0b3JhZ2VPcHRpb25zID0gU3RvcmFnZU9wdGlvbnM+IHtcbiAgcHJvdGVjdGVkIG9wdGlvbnM/OiBUO1xuXG4gIHB1YmxpYyBzdG9yYWdlQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RvcmFnZVNlcnZpY2VFdmVudD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25maWcuZ2V0Q29uZmlnPFQ+KCdzdG9yYWdlJykgfHwgKHsga2V5OiAnaWdvJyB9IGFzIFQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0byBnZXQgdGhlIGRhdGEgZm91bmQgaW4gc3RvcmFnZSBmaWxlXG4gICAqL1xuICBnZXQoa2V5OiBzdHJpbmcsIHNjb3BlPzogU3RvcmFnZVNjb3BlKTogc3RyaW5nIHwgb2JqZWN0IHwgYm9vbGVhbiB8IG51bWJlciB7XG4gICAgbGV0IHZhbHVlOiBhbnk7XG5cbiAgICBpZiAoIXNjb3BlIHx8IHNjb3BlID09PSBTdG9yYWdlU2NvcGUuU0VTU0lPTikge1xuICAgICAgdmFsdWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGAke3RoaXMub3B0aW9ucy5rZXl9LiR7a2V5fWApO1xuICAgIH1cblxuICAgIGlmIChzY29wZSA9PT0gU3RvcmFnZVNjb3BlLkxPQ0FMIHx8ICghdmFsdWUgJiYgIXNjb3BlKSkge1xuICAgICAgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLm9wdGlvbnMua2V5fS4ke2tleX1gKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc2V0KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBvYmplY3QgfCBib29sZWFuIHwgbnVtYmVyLFxuICAgIHNjb3BlOiBTdG9yYWdlU2NvcGUgPSBTdG9yYWdlU2NvcGUuTE9DQUxcbiAgKSB7XG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuZ2V0KGtleSwgc2NvcGUpO1xuICAgIGlmIChzY29wZSA9PT0gU3RvcmFnZVNjb3BlLlNFU1NJT04pIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgIGAke3RoaXMub3B0aW9ucy5rZXl9LiR7a2V5fWAsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5vcHRpb25zLmtleX0uJHtrZXl9YCwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXQoa2V5LCBzY29wZSk7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnN0b3JhZ2VDaGFuZ2UkLm5leHQoe1xuICAgICAgICBrZXksXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBldmVudDpcbiAgICAgICAgICBwcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gU3RvcmFnZVNlcnZpY2VFdmVudEVudW0uTU9ESUZJRURcbiAgICAgICAgICAgIDogU3RvcmFnZVNlcnZpY2VFdmVudEVudW0uQURERUQsXG4gICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgIGN1cnJlbnRWYWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKGtleTogc3RyaW5nLCBzY29wZTogU3RvcmFnZVNjb3BlID0gU3RvcmFnZVNjb3BlLkxPQ0FMKSB7XG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuZ2V0KGtleSwgc2NvcGUpO1xuICAgIGlmIChzY29wZSA9PT0gU3RvcmFnZVNjb3BlLlNFU1NJT04pIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oYCR7dGhpcy5vcHRpb25zLmtleX0uJHtrZXl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMub3B0aW9ucy5rZXl9LiR7a2V5fWApO1xuICAgIH1cbiAgICB0aGlzLnN0b3JhZ2VDaGFuZ2UkLm5leHQoe1xuICAgICAga2V5LFxuICAgICAgc2NvcGUsXG4gICAgICBldmVudDogU3RvcmFnZVNlcnZpY2VFdmVudEVudW0uUkVNT1ZFRCxcbiAgICAgIHByZXZpb3VzVmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyKHNjb3BlOiBTdG9yYWdlU2NvcGUgPSBTdG9yYWdlU2NvcGUuTE9DQUwpIHtcbiAgICBpZiAoc2NvcGUgPT09IFN0b3JhZ2VTY29wZS5TRVNTSU9OKSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlQ2hhbmdlJC5uZXh0KHsgc2NvcGUsIGV2ZW50OiBTdG9yYWdlU2VydmljZUV2ZW50RW51bS5DTEVBUkVEIH0pO1xuICB9XG59XG4iXX0=