@igo2/core
Version:
115 lines (109 loc) • 3.97 kB
JavaScript
import { BehaviorSubject } from 'rxjs';
import * as i0 from '@angular/core';
import { Injectable } from '@angular/core';
import * as i1 from '@igo2/core/config';
var StorageScope;
(function (StorageScope) {
StorageScope["SESSION"] = "Session";
StorageScope["LOCAL"] = "Local";
})(StorageScope || (StorageScope = {}));
var StorageServiceEventEnum;
(function (StorageServiceEventEnum) {
StorageServiceEventEnum["ADDED"] = "Added";
StorageServiceEventEnum["MODIFIED"] = "Modified";
StorageServiceEventEnum["REMOVED"] = "Removed";
StorageServiceEventEnum["CLEARED"] = "Cleared";
})(StorageServiceEventEnum || (StorageServiceEventEnum = {}));
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 });
}
}
class StorageService extends BaseStorage {
config;
constructor(config) {
super(config);
this.config = config;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StorageService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StorageService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StorageService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.ConfigService }] });
/**
* Generated bundle index. Do not edit.
*/
export { BaseStorage, StorageScope, StorageService, StorageServiceEventEnum };
//# sourceMappingURL=igo2-core-storage.mjs.map