ngx-webstorage
Version:
This library provides an easy to use service to manage the web storages (local and session) from your Angular application. It provides also two decorators to synchronize the component attributes and the web storages.
22 lines • 4.58 kB
JavaScript
import { StorageKeyManager } from '../../helpers/storageKeyManager';
import { distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';
export class AsyncStorage {
constructor(strategy) {
this.strategy = strategy;
}
retrieve(key) {
return this.strategy.get(StorageKeyManager.normalize(key)).pipe(map((value) => typeof value === 'undefined' ? null : value));
}
store(key, value) {
return this.strategy.set(StorageKeyManager.normalize(key), value);
}
clear(key) {
return key !== undefined ? this.strategy.del(StorageKeyManager.normalize(key)) : this.strategy.clear();
}
getStrategyName() { return this.strategy.name; }
observe(key) {
key = StorageKeyManager.normalize(key);
return this.strategy.keyChanges.pipe(filter((changed) => changed === null || changed === key), switchMap(() => this.strategy.get(key)), distinctUntilChanged(), shareReplay());
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNTdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXdlYnN0b3JhZ2Uvc3JjL2xpYi9jb3JlL3RlbXBsYXRlcy9hc3luY1N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE1BQU0sT0FBTyxZQUFZO0lBRXhCLFlBQXNCLFFBQThCO1FBQTlCLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBQ3BELENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBWTtRQUNqQixPQUFPLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hHLENBQUM7SUFFRCxlQUFlLEtBQWEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFeEQsT0FBTyxDQUFDLEdBQVc7UUFDbEIsR0FBRyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbkMsTUFBTSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxHQUFHLENBQUMsRUFDaEUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZDLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsRUFBRSxDQUNiLENBQUM7SUFDSCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0b3JhZ2VTdHJhdGVneX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zdG9yYWdlU3RyYXRlZ3knO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7U3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uL2ludGVyZmFjZXMvc3RvcmFnZVNlcnZpY2UnO1xuaW1wb3J0IHtTdG9yYWdlS2V5TWFuYWdlcn0gZnJvbSAnLi4vLi4vaGVscGVycy9zdG9yYWdlS2V5TWFuYWdlcic7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgQXN5bmNTdG9yYWdlIGltcGxlbWVudHMgU3RvcmFnZVNlcnZpY2Uge1xuXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdHJhdGVneTogU3RvcmFnZVN0cmF0ZWd5PGFueT4pIHtcblx0fVxuXG5cdHJldHJpZXZlKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5zdHJhdGVneS5nZXQoU3RvcmFnZUtleU1hbmFnZXIubm9ybWFsaXplKGtleSkpLnBpcGUoXG5cdFx0XHRtYXAoKHZhbHVlOiBhbnkpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogdmFsdWUpXG5cdFx0KTtcblx0fVxuXG5cdHN0b3JlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5zdHJhdGVneS5zZXQoU3RvcmFnZUtleU1hbmFnZXIubm9ybWFsaXplKGtleSksIHZhbHVlKTtcblx0fVxuXG5cdGNsZWFyKGtleT86IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuXHRcdHJldHVybiBrZXkgIT09IHVuZGVmaW5lZCA/IHRoaXMuc3RyYXRlZ3kuZGVsKFN0b3JhZ2VLZXlNYW5hZ2VyLm5vcm1hbGl6ZShrZXkpKSA6IHRoaXMuc3RyYXRlZ3kuY2xlYXIoKTtcblx0fVxuXG5cdGdldFN0cmF0ZWd5TmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdHJhdGVneS5uYW1lOyB9XG5cblx0b2JzZXJ2ZShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0a2V5ID0gU3RvcmFnZUtleU1hbmFnZXIubm9ybWFsaXplKGtleSk7XG5cdFx0cmV0dXJuIHRoaXMuc3RyYXRlZ3kua2V5Q2hhbmdlcy5waXBlKFxuXHRcdFx0ZmlsdGVyKChjaGFuZ2VkOiBzdHJpbmcpID0+IGNoYW5nZWQgPT09IG51bGwgfHwgY2hhbmdlZCA9PT0ga2V5KSxcblx0XHRcdHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN0cmF0ZWd5LmdldChrZXkpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0XHRzaGFyZVJlcGxheSgpXG5cdFx0KTtcblx0fVxufVxuIl19