ngx-store
Version:
Angular decorators to automagically keep variables in HTML5 LocalStorage, SessionStorage, cookies; injectable services for managing and listening to data changes and a bit more.
38 lines • 4.28 kB
JavaScript
import { NgxStorage } from './storage';
export class SharedStorage extends NgxStorage {
constructor() {
super();
this.sharedMap = new Map();
delete this.externalChanges;
}
get type() {
return 'sharedStorage';
}
get length() {
return this.getAllKeys().length;
}
key(index) {
return this.getAllKeys()[index];
}
getItem(key) {
const value = this.sharedMap.get(key);
return (value !== undefined) ? value : null;
}
removeItem(key) {
this.sharedMap.delete(key);
}
setItem(key, value) {
this.sharedMap.set(key, value);
}
clear() {
this.sharedMap.clear();
}
forEach(func) {
return this.sharedMap.forEach((value, key) => func(value, key));
}
getAllKeys() {
return Array.from(this.sharedMap.keys());
}
}
export const sharedStorage = new SharedStorage();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3RvcmUvc3JjL2xpYi91dGlsaXR5L3N0b3JhZ2Uvc2hhcmVkLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFHM0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhBLGNBQVMsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUloRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVztRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBc0M7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRVMsVUFBVTtRQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmd4U3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZSc7XG5pbXBvcnQgeyBTdG9yYWdlTmFtZSB9IGZyb20gJy4uL3dlYnN0b3JhZ2UudXRpbGl0eSc7XG5cbmV4cG9ydCBjbGFzcyBTaGFyZWRTdG9yYWdlIGV4dGVuZHMgTmd4U3RvcmFnZSB7XG4gIHByb3RlY3RlZCBzaGFyZWRNYXA6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBkZWxldGUgdGhpcy5leHRlcm5hbENoYW5nZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogU3RvcmFnZU5hbWUge1xuICAgIHJldHVybiAnc2hhcmVkU3RvcmFnZSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEFsbEtleXMoKS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMga2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldEFsbEtleXMoKVtpbmRleF07XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNoYXJlZE1hcC5nZXQoa2V5KTtcbiAgICByZXR1cm4gKHZhbHVlICE9PSB1bmRlZmluZWQpID8gdmFsdWUgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNoYXJlZE1hcC5kZWxldGUoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zaGFyZWRNYXAuc2V0KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hhcmVkTWFwLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgZm9yRWFjaChmdW5jOiAodmFsdWU6IHN0cmluZywga2V5OiBhbnkpID0+IGFueSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLnNoYXJlZE1hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiBmdW5jKHZhbHVlLCBrZXkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBbGxLZXlzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2hhcmVkTWFwLmtleXMoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNoYXJlZFN0b3JhZ2UgPSBuZXcgU2hhcmVkU3RvcmFnZSgpO1xuIl19