@esfaenza/preferences 11.2.14 → 11.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"PreferencesService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":25,"character":60}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":25,"character":72},"arguments":[{"__symbolic":"reference","name":"PREF_FULL_RETRIEVE_AT_START"}]}]],"parameters":[{"__symbolic":"reference","name":"BasePreferencesPersistor"},{"__symbolic":"reference","name":"boolean"}]}],"storeLocal":[{"__symbolic":"method"}],"retrieveLocal":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}]}},"PreferencesModuleConfig":{"__symbolic":"class","members":{}},"PREF_FULL_RETRIEVE_AT_START":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":72},"arguments":["PREF_FULL_RETRIEVE_AT_START"]},"PreferencesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"PreferencesModule"},"providers":[{"__symbolic":"reference","name":"PreferencesService"},{"provide":{"__symbolic":"reference","name":"BasePreferencesPersistor"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"preferencePersistor"},"right":{"__symbolic":"reference","name":"ɵa"}}},{"provide":{"__symbolic":"reference","name":"BaseSessionRetriever"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"sessionRetriever"},"right":{"__symbolic":"reference","name":"ɵb"}}},{"provide":{"__symbolic":"reference","name":"PREF_FULL_RETRIEVE_AT_START"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"retrieveAllAtStart"},"right":true}}]}}}},"BasePreferencesPersistor":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BaseSessionRetriever"}]}],"persist":[{"__symbolic":"method"}],"recover":[{"__symbolic":"method"}],"recoverAll":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"persistAll":[{"__symbolic":"method"}],"getKey":[{"__symbolic":"method"}]}},"BaseSessionRetriever":{"__symbolic":"class","members":{"getSessionKey":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BasePreferencesPersistor"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BaseSessionRetriever"}]}],"persist":[{"__symbolic":"method"}],"recover":[{"__symbolic":"method"}],"recoverAll":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseSessionRetriever"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getSessionKey":[{"__symbolic":"method"}]}}},"origins":{"PreferencesService":"./lib/preferences.service","PreferencesModuleConfig":"./lib/models/PreferencesModuleConfig","PREF_FULL_RETRIEVE_AT_START":"./lib/tokens","PreferencesModule":"./lib/preferences.module","BasePreferencesPersistor":"./lib/persistor/base/BasePreferencesPersistor","BaseSessionRetriever":"./lib/session/base/BaseSessionRetriever","ɵa":"./lib/persistor/implementation/LocalStoragePersistor","ɵb":"./lib/session/implementation/DefaultSessionRetriever"},"importAs":"@esfaenza/preferences"}
1
+ {"__symbolic":"module","version":4,"metadata":{"PreferencesService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":30,"character":60}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":72},"arguments":[{"__symbolic":"reference","name":"PREF_FULL_RETRIEVE_AT_START"}]}]],"parameters":[{"__symbolic":"reference","name":"BasePreferencesPersistor"},{"__symbolic":"reference","name":"boolean"}]}],"setItem":[{"__symbolic":"method"}],"setLocalItem":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"getItem":[{"__symbolic":"method"}],"getLocalItem":[{"__symbolic":"method"}],"removeItem":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}]}},"PreferencesModuleConfig":{"__symbolic":"class","members":{}},"PREF_FULL_RETRIEVE_AT_START":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":72},"arguments":["PREF_FULL_RETRIEVE_AT_START"]},"PreferencesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"PreferencesModule"},"providers":[{"__symbolic":"reference","name":"PreferencesService"},{"provide":{"__symbolic":"reference","name":"BasePreferencesPersistor"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"preferencePersistor"},"right":{"__symbolic":"reference","name":"ɵa"}}},{"provide":{"__symbolic":"reference","name":"BaseSessionRetriever"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"sessionRetriever"},"right":{"__symbolic":"reference","name":"ɵb"}}},{"provide":{"__symbolic":"reference","name":"PREF_FULL_RETRIEVE_AT_START"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"retrieveAllAtStart"},"right":true}}]}}}},"BasePreferencesPersistor":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BaseSessionRetriever"}]}],"persist":[{"__symbolic":"method"}],"recover":[{"__symbolic":"method"}],"recoverAll":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"persistAll":[{"__symbolic":"method"}],"getKey":[{"__symbolic":"method"}]}},"BaseSessionRetriever":{"__symbolic":"class","members":{"getSessionKey":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BasePreferencesPersistor"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BaseSessionRetriever"}]}],"persist":[{"__symbolic":"method"}],"recover":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"recoverAll":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseSessionRetriever"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getSessionKey":[{"__symbolic":"method"}]}}},"origins":{"PreferencesService":"./lib/preferences.service","PreferencesModuleConfig":"./lib/models/PreferencesModuleConfig","PREF_FULL_RETRIEVE_AT_START":"./lib/tokens","PreferencesModule":"./lib/preferences.module","BasePreferencesPersistor":"./lib/persistor/base/BasePreferencesPersistor","BaseSessionRetriever":"./lib/session/base/BaseSessionRetriever","ɵa":"./lib/persistor/implementation/LocalStoragePersistor","ɵb":"./lib/session/implementation/DefaultSessionRetriever"},"importAs":"@esfaenza/preferences"}
@@ -31,4 +31,4 @@ export class BasePreferencesPersistor {
31
31
  return this.session.getSessionKey() + "§" + key + "§";
32
32
  }
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlZmVyZW5jZXMvc3JjL2xpYi9wZXJzaXN0b3IvYmFzZS9CYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLHdCQUF3QjtJQUUxQywwQkFBMEI7SUFDMUIsWUFBc0IsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBRyxDQUFDO0lBZ0N2RDs7Ozs7T0FLRztJQUNJLFVBQVUsQ0FBQyxVQUFxQyxFQUFFLFVBQWtDO1FBQ3ZGLElBQUksV0FBVyxHQUEwQixFQUFFLENBQUM7UUFDNUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxVQUFVO1lBQ3RCLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sTUFBTSxDQUFDLEdBQVc7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQzFELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEJhc2VTZXNzaW9uUmV0cmlldmVyIH0gZnJvbSBcIi4uLy4uL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlclwiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBhc3RyYXR0YSBjaGUgcmFwcHJlc2VudGEgbG8gc3RhdG8gZGkgcGVyc2lzdGVuemEgZnJhIGxhIGxpYnJlcmlhIGUgdW5vIHN0b3JhZ2VcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3Ige1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2Vzc2lvbjogQmFzZVNlc3Npb25SZXRyaWV2ZXIpIHt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYWx2YSwgcGVyIHVuYSBzZXNzaW9uZSwgdW5hIGNoaWF2ZSBjb24gdW4gdmFsb3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnfSBzdG9yZUxldmVsIExpdmVsbG8gYSBjdWkgc3RvcmljaXp6YXJlIGwnb2dnZXR0by4gVXRpbGl6emFyZSAqKmNhY2hlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ2FwcGxpY2F6aW9uZSwgdXRpbGl6emFyZSAqKnByZWZlcmVuY2UqKiBwZXIgY29zZSBzYWx2YXRlIGRhbGwndXRlbnRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBwZXJzaXN0PFQ+KGtleTogc3RyaW5nLCBpdGVtOiBULCBzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlY3VwZXJhLCBwZXIgdW5hIHNlc3Npb25lLCBpbCB2YWxvcmUgYXNzZWduYXRvIGFkIHVuYSBjaGlhdmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGEgcmVjdXBlcmFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUPn0gVmFsb3JlIHNhbHZhdG8gcGVyIGxhIGNoaWF2ZSAqKmtleSoqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCByZWNvdmVyPFQ+KGtleT86IHN0cmluZyk6IE9ic2VydmFibGU8VD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXIgdW5hIHNlc3Npb25lIHJlY3VwZXJhIHR1dHRlIGxlIGNvcHBpZSBDaGlhdmUgLSBWYWxvcmUgc2FsdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTx7IFtpbmRleDogc3RyaW5nXTogYW55IH0+fSBEaXppb25hcmlvIGNvbiB0dXR0ZSBsZSBwcmVmZXJlbmNlIHNhbHZhdGUgcGVyIGxhIHNlc3Npb25lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCByZWNvdmVyQWxsKCk6IE9ic2VydmFibGU8eyBbaW5kZXg6IHN0cmluZ106IGFueSB9PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqICBSaXB1bGlzY2UgbGUgcHJlZmVyZW5jZSBzYWx2YXRlIHJlbGF0aXZlIGFkIHVuYSBzZXNzaW9uZVxyXG4gICAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnfSBzdG9yZUxldmVsIExpdmVsbG8gYSBjdWkgcmlwdWxpcmUgbGEgY2FjaGUuIFV0aWxpenphcmUgKipjYWNoZSoqIHBlciBjYW5jZWxsYXJlIGNvc2Ugc2FsdmF0ZSBkYWxsJ2FwcGxpY2F6aW9uZSwgdXRpbGl6emFyZSAqKnByZWZlcmVuY2UqKiBwZXIgY2FuY2VsbGFyZSBjb3NlIHNhbHZhdGUgZGFsbCd1dGVudGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IGNsZWFyKHN0b3JlTGV2ZWw6ICdjYWNoZScgfCAncHJlZmVyZW5jZScpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgaWwgKipwZXJzaXN0KiogbWFzc2l2byBkaSB1bmEgbGlzdGEgZGkgQ2hpYXZlIC0gVmFsb3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfX0gZGljdGlvbmFyeSBEaXppb25hcmlvIChsaXN0YSBkaSBDaGlhdmUgLSBWYWxvcmUpIGRhIHBlcnNpc3RlcmVcclxuICAgICAqIEBwYXJhbSB7J2NhY2hlJyB8ICdwcmVmZXJlbmNlJ30gc3RvcmVMZXZlbCBMaXZlbGxvIGEgY3VpIHN0b3JpY2l6emFyZSBsJ29nZ2V0dG8uIFV0aWxpenphcmUgKipjYWNoZSoqIHBlciBjb3NlIHNhbHZhdGUgZGFsbCdhcHBsaWNhemlvbmUsIHV0aWxpenphcmUgKipwcmVmZXJlbmNlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGVyc2lzdEFsbChkaWN0aW9uYXJ5OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCBzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgbGV0IG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPGJvb2xlYW4+W10gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGljdGlvbmFyeSlcclxuICAgICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaCh0aGlzLnBlcnNpc3Qoa2V5LCBkaWN0aW9uYXJ5W2tleV0sIHN0b3JlTGV2ZWwpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKG9ic2VydmFibGVzKS5waXBlKG1hcChyZXMgPT4gcmVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyAmJiB2YWwsIHRydWUpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGxhIGNoaWF2ZSBcIlJlYWxlXCIgZGEgdXRpbGl6emFyZSBwZXIgbGEgcGVyc2lzdGVuemEgZGkgdW5hIGNoaWF2ZSBnZW5lcmljYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IENoaWF2ZSBkYSBzdG9yaWNpenphcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVW5pb25lIGZyYSBsJ2lkZW50aWZpY2F0aXZvIGRlbGxhIHNlc3Npb25lIGUgbGEgY2hpYXZlIHNwZWNpZmljYXRhXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0U2Vzc2lvbktleSgpICsgXCLCp1wiICsga2V5ICsgXCLCp1wiO1xyXG4gICAgfVxyXG59Il19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlZmVyZW5jZXMvc3JjL2xpYi9wZXJzaXN0b3IvYmFzZS9CYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLHdCQUF3QjtJQUUxQywwQkFBMEI7SUFDMUIsWUFBc0IsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBRyxDQUFDO0lBd0N2RDs7Ozs7T0FLRztJQUNJLFVBQVUsQ0FBQyxVQUFxQyxFQUFFLFVBQWtDO1FBQ3ZGLElBQUksV0FBVyxHQUEwQixFQUFFLENBQUM7UUFDNUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxVQUFVO1lBQ3RCLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sTUFBTSxDQUFDLEdBQVc7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQzFELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEJhc2VTZXNzaW9uUmV0cmlldmVyIH0gZnJvbSBcIi4uLy4uL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlclwiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBhc3RyYXR0YSBjaGUgcmFwcHJlc2VudGEgbG8gc3RhdG8gZGkgcGVyc2lzdGVuemEgZnJhIGxhIGxpYnJlcmlhIGUgdW5vIHN0b3JhZ2VcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3Ige1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2Vzc2lvbjogQmFzZVNlc3Npb25SZXRyaWV2ZXIpIHt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYWx2YSwgcGVyIHVuYSBzZXNzaW9uZSwgdW5hIGNoaWF2ZSBjb24gdW4gdmFsb3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnfSBzdG9yZUxldmVsIExpdmVsbG8gYSBjdWkgc3RvcmljaXp6YXJlIGwnb2dnZXR0by4gVXRpbGl6emFyZSAqKmNhY2hlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ2FwcGxpY2F6aW9uZSwgdXRpbGl6emFyZSAqKnByZWZlcmVuY2UqKiBwZXIgY29zZSBzYWx2YXRlIGRhbGwndXRlbnRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBwZXJzaXN0PFQ+KGtleTogc3RyaW5nLCBpdGVtOiBULCBzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlY3VwZXJhLCBwZXIgdW5hIHNlc3Npb25lLCBpbCB2YWxvcmUgYXNzZWduYXRvIGFkIHVuYSBjaGlhdmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGEgcmVjdXBlcmFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUPn0gVmFsb3JlIHNhbHZhdG8gcGVyIGxhIGNoaWF2ZSAqKmtleSoqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCByZWNvdmVyPFQ+KGtleT86IHN0cmluZyk6IE9ic2VydmFibGU8VD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXIgdW5hIHNlc3Npb25lIHJlY3VwZXJhIHR1dHRlIGxlIGNvcHBpZSBDaGlhdmUgLSBWYWxvcmUgc2FsdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTx7IFtpbmRleDogc3RyaW5nXTogYW55IH0+fSBEaXppb25hcmlvIGNvbiB0dXR0ZSBsZSBwcmVmZXJlbmNlIHNhbHZhdGUgcGVyIGxhIHNlc3Npb25lXHJcbiAgICAgKiBAcGFyYW0geydjYWNoZScgfCAncHJlZmVyZW5jZSd9IHN0b3JlTGV2ZWwgTGl2ZWxsbyBhIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvLiBVdGlsaXp6YXJlICoqY2FjaGUqKiBwZXIgY29zZSBzYWx2YXRlIGRhbGwnYXBwbGljYXppb25lLCB1dGlsaXp6YXJlICoqcHJlZmVyZW5jZSoqIHBlciBjb3NlIHNhbHZhdGUgZGFsbCd1dGVudGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IHJlY292ZXJBbGwoc3RvcmVMZXZlbDogJ2NhY2hlJyB8ICdwcmVmZXJlbmNlJyk6IE9ic2VydmFibGU8eyBbaW5kZXg6IHN0cmluZ106IGFueSB9PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqICBSaXB1bGlzY2UgbGUgcHJlZmVyZW5jZSBzYWx2YXRlIHJlbGF0aXZlIGFkIHVuYSBzZXNzaW9uZVxyXG4gICAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnIHwgJ2FsbCd9IHN0b3JlTGV2ZWwgTGl2ZWxsbyBhIGN1aSByaXB1bGlyZSBsYSBjYWNoZS4gVXRpbGl6emFyZSAqKmNhY2hlKiogcGVyIGNhbmNlbGxhcmUgY29zZSBzYWx2YXRlIGRhbGwnYXBwbGljYXppb25lLCB1dGlsaXp6YXJlICoqcHJlZmVyZW5jZSoqIHBlciBjYW5jZWxsYXJlIGNvc2Ugc2FsdmF0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgY2xlYXIoc3RvcmVMZXZlbDogJ2NhY2hlJyB8ICdwcmVmZXJlbmNlJyB8ICdhbGwnKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVsaW1pbmEgdW4gb2dnZXR0byBkYWxsYSBjYWNoZSBwZXJzaXN0aXRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRhIHJpbXVvdmVyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVtb3ZlKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGlsICoqcGVyc2lzdCoqIG1hc3Npdm8gZGkgdW5hIGxpc3RhIGRpIENoaWF2ZSAtIFZhbG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgW2tleTogc3RyaW5nXTogc3RyaW5nIH19IGRpY3Rpb25hcnkgRGl6aW9uYXJpbyAobGlzdGEgZGkgQ2hpYXZlIC0gVmFsb3JlKSBkYSBwZXJzaXN0ZXJlXHJcbiAgICAgKiBAcGFyYW0geydjYWNoZScgfCAncHJlZmVyZW5jZSd9IHN0b3JlTGV2ZWwgTGl2ZWxsbyBhIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvLiBVdGlsaXp6YXJlICoqY2FjaGUqKiBwZXIgY29zZSBzYWx2YXRlIGRhbGwnYXBwbGljYXppb25lLCB1dGlsaXp6YXJlICoqcHJlZmVyZW5jZSoqIHBlciBjb3NlIHNhbHZhdGUgZGFsbCd1dGVudGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBlcnNpc3RBbGwoZGljdGlvbmFyeTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgc3RvcmVMZXZlbDogJ2NhY2hlJyB8ICdwcmVmZXJlbmNlJyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxldCBvYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxib29sZWFuPltdID0gW107XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGRpY3Rpb25hcnkpXHJcbiAgICAgICAgICAgIG9ic2VydmFibGVzLnB1c2godGhpcy5wZXJzaXN0KGtleSwgZGljdGlvbmFyeVtrZXldLCBzdG9yZUxldmVsKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcykucGlwZShtYXAocmVzID0+IHJlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgJiYgdmFsLCB0cnVlKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3R0aWVuZSBsYSBjaGlhdmUgXCJSZWFsZVwiIGRhIHV0aWxpenphcmUgcGVyIGxhIHBlcnNpc3RlbnphIGRpIHVuYSBjaGlhdmUgZ2VuZXJpY2FcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGEgc3RvcmljaXp6YXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFVuaW9uZSBmcmEgbCdpZGVudGlmaWNhdGl2byBkZWxsYSBzZXNzaW9uZSBlIGxhIGNoaWF2ZSBzcGVjaWZpY2F0YVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0S2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldFNlc3Npb25LZXkoKSArIFwiwqdcIiArIGtleSArIFwiwqdcIjtcclxuICAgIH1cclxufSJdfQ==
@@ -21,6 +21,11 @@ export class LocalStoragePersistor extends BasePreferencesPersistor {
21
21
  return of(ret).pipe(first());
22
22
  }
23
23
  /** @ignore Vedi classe base */
24
+ remove(key) {
25
+ var ret = localStorage.removeItem(this.getKey(key));
26
+ return of(true).pipe(first());
27
+ }
28
+ /** @ignore Vedi classe base */
24
29
  recoverAll() {
25
30
  var ret = {};
26
31
  for (var k in localStorage) {
@@ -44,4 +49,4 @@ LocalStoragePersistor.decorators = [
44
49
  LocalStoragePersistor.ctorParameters = () => [
45
50
  { type: BaseSessionRetriever }
46
51
  ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxTdG9yYWdlUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlZmVyZW5jZXMvc3JjL2xpYi9wZXJzaXN0b3IvaW1wbGVtZW50YXRpb24vTG9jYWxTdG9yYWdlUGVyc2lzdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLFNBQVM7QUFDVCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUvRSxPQUFPO0FBQ1AsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsNEVBQTRFO0FBRTVFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx3QkFBd0I7SUFFL0QsMEJBQTBCO0lBQzFCLFlBQVksT0FBNkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlELCtCQUErQjtJQUN4QixPQUFPLENBQUksR0FBVyxFQUFFLElBQU87UUFDbEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsK0JBQStCO0lBQ3hCLE9BQU8sQ0FBSSxHQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsK0JBQStCO0lBQ3hCLFVBQVU7UUFDYixJQUFJLEdBQUcsR0FBaUMsRUFBRSxDQUFDO1FBQzNDLEtBQUssSUFBSSxDQUFDLElBQUksWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdELEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkU7UUFFRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsK0JBQStCO0lBQ3hCLEtBQUs7UUFDUixLQUFLLElBQUksQ0FBQyxJQUFJLFlBQVksRUFBRTtZQUN4QixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3RCxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7O1lBcENKLFVBQVU7OztZQVBGLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yIH0gZnJvbSBcIi4uL2Jhc2UvQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7IEJhc2VTZXNzaW9uUmV0cmlldmVyIH0gZnJvbSBcIi4uLy4uL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlclwiO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG4vKiogSW1wbGVtZW50YXppb25lIGRpIGRlZmF1bHQgcGVyIGxhIGNsYXNzZSAqKkJhc2VQcmVmZXJlbmNlc1BlcnNpc3RvcioqICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVBlcnNpc3RvciBleHRlbmRzIEJhc2VQcmVmZXJlbmNlc1BlcnNpc3RvciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHNlc3Npb246IEJhc2VTZXNzaW9uUmV0cmlldmVyKSB7IHN1cGVyKHNlc3Npb24pOyB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIHBlcnNpc3Q8VD4oa2V5OiBzdHJpbmcsIGl0ZW06IFQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmdldEtleShrZXkpLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIHJlY292ZXI8VD4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICB2YXIgcmV0ID0gPFQ+SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldEtleShrZXkpKSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKHJldCkucGlwZShmaXJzdCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBWZWRpIGNsYXNzZSBiYXNlICovXHJcbiAgICBwdWJsaWMgcmVjb3ZlckFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBhbnk7IH0+IHtcclxuICAgICAgICB2YXIgcmV0OiB7IFtpbmRleDogc3RyaW5nXTogc3RyaW5nOyB9ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgaWYgKGsuaW5jbHVkZXMoXCLCp1wiKSAmJiBrLnN0YXJ0c1dpdGgodGhpcy5zZXNzaW9uLmdldFNlc3Npb25LZXkoKSkpXHJcbiAgICAgICAgICAgICAgICByZXRbay5tYXRjaCgvwqcoLiopwqcvKVsxXV0gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGspKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBvZihyZXQpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrLmluY2x1ZGVzKFwiwqdcIikgJiYgay5zdGFydHNXaXRoKHRoaXMuc2Vzc2lvbi5nZXRTZXNzaW9uS2V5KCkpKVxyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih0cnVlKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG59Il19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxTdG9yYWdlUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlZmVyZW5jZXMvc3JjL2xpYi9wZXJzaXN0b3IvaW1wbGVtZW50YXRpb24vTG9jYWxTdG9yYWdlUGVyc2lzdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLFNBQVM7QUFDVCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUvRSxPQUFPO0FBQ1AsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsNEVBQTRFO0FBRTVFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx3QkFBd0I7SUFFL0QsMEJBQTBCO0lBQzFCLFlBQVksT0FBNkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlELCtCQUErQjtJQUN4QixPQUFPLENBQUksR0FBVyxFQUFFLElBQU87UUFDbEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsK0JBQStCO0lBQ3hCLE9BQU8sQ0FBSSxHQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsK0JBQStCO0lBQ3hCLE1BQU0sQ0FBQyxHQUFXO1FBQ3JCLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCwrQkFBK0I7SUFDeEIsVUFBVTtRQUNiLElBQUksR0FBRyxHQUFpQyxFQUFFLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsSUFBSSxZQUFZLEVBQUU7WUFDeEIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDN0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTtRQUVELE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQkFBK0I7SUFDeEIsS0FBSztRQUNSLEtBQUssSUFBSSxDQUFDLElBQUksWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdELFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7WUExQ0osVUFBVTs7O1lBUEYsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIENsYXNzaVxyXG5pbXBvcnQgeyBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IgfSBmcm9tIFwiLi4vYmFzZS9CYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3JcIjtcclxuaW1wb3J0IHsgQmFzZVNlc3Npb25SZXRyaWV2ZXIgfSBmcm9tIFwiLi4vLi4vc2Vzc2lvbi9iYXNlL0Jhc2VTZXNzaW9uUmV0cmlldmVyXCI7XHJcblxyXG4vLyBSWEpTXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8qKiBJbXBsZW1lbnRhemlvbmUgZGkgZGVmYXVsdCBwZXIgbGEgY2xhc3NlICoqQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yKiogKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUGVyc2lzdG9yIGV4dGVuZHMgQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yIHtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAqL1xyXG4gICAgY29uc3RydWN0b3Ioc2Vzc2lvbjogQmFzZVNlc3Npb25SZXRyaWV2ZXIpIHsgc3VwZXIoc2Vzc2lvbik7IH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBWZWRpIGNsYXNzZSBiYXNlICovXHJcbiAgICBwdWJsaWMgcGVyc2lzdDxUPihrZXk6IHN0cmluZywgaXRlbTogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuZ2V0S2V5KGtleSksIEpTT04uc3RyaW5naWZ5KGl0ZW0pKTtcclxuICAgICAgICByZXR1cm4gb2YodHJ1ZSkucGlwZShmaXJzdCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBWZWRpIGNsYXNzZSBiYXNlICovXHJcbiAgICBwdWJsaWMgcmVjb3ZlcjxUPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIHZhciByZXQgPSA8VD5KU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuZ2V0S2V5KGtleSkpKTtcclxuICAgICAgICByZXR1cm4gb2YocmV0KS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlIFZlZGkgY2xhc3NlIGJhc2UgKi9cclxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICB2YXIgcmV0ID0gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5nZXRLZXkoa2V5KSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIHJlY292ZXJBbGwoKTogT2JzZXJ2YWJsZTx7IFtpbmRleDogc3RyaW5nXTogYW55OyB9PiB7XHJcbiAgICAgICAgdmFyIHJldDogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrLmluY2x1ZGVzKFwiwqdcIikgJiYgay5zdGFydHNXaXRoKHRoaXMuc2Vzc2lvbi5nZXRTZXNzaW9uS2V5KCkpKVxyXG4gICAgICAgICAgICAgICAgcmV0W2subWF0Y2goL8KnKC4qKcKnLylbMV1dID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YocmV0KS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlIFZlZGkgY2xhc3NlIGJhc2UgKi9cclxuICAgIHB1YmxpYyBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBmb3IgKHZhciBrIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICBpZiAoay5pbmNsdWRlcyhcIsKnXCIpICYmIGsuc3RhcnRzV2l0aCh0aGlzLnNlc3Npb24uZ2V0U2Vzc2lvbktleSgpKSlcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGspO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YodHJ1ZSkucGlwZShmaXJzdCgpKTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,6 +1,6 @@
1
1
  // Angular
2
2
  import { Inject, Injectable, Optional } from '@angular/core';
3
- import { of } from 'rxjs';
3
+ import { forkJoin, of } from 'rxjs';
4
4
  import { take, tap } from 'rxjs/operators';
5
5
  // Modelli
6
6
  import { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';
@@ -21,53 +21,49 @@ export class PreferencesService {
21
21
  * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**
22
22
  */
23
23
  this.LocalPreferences = {};
24
- if (this.PREF_FULL_RETRIEVE_AT_START)
25
- this.persistor.recoverAll().pipe(take(1)).subscribe(res => { this.LocalPreferences = res; });
24
+ /**
25
+ * Indica le chiavi contenute in **LocalPreferences** di che tipo sono in modo da ripulire correttamente sulla clear
26
+ */
27
+ this.LocalPreferenceType = {};
28
+ if (this.PREF_FULL_RETRIEVE_AT_START) {
29
+ // Recupero tutti gli oggetti differenziando anche lato locale fra cache e preferences
30
+ forkJoin([
31
+ this.persistor.recoverAll('cache').pipe(take(1)),
32
+ this.persistor.recoverAll('preference').pipe(take(1))
33
+ ]).subscribe((res) => {
34
+ for (let cProp in res[0]) {
35
+ this.LocalPreferences[cProp] = res[0][cProp];
36
+ this.LocalPreferenceType[cProp] = 'cache';
37
+ }
38
+ for (let pProp in res[1]) {
39
+ this.LocalPreferences[pProp] = res[0][pProp];
40
+ this.LocalPreferenceType[pProp] = 'preference';
41
+ }
42
+ });
43
+ }
26
44
  }
27
45
  /**
28
- * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
46
+ * Salva un oggetto sia nella cache locale che nel persistor
29
47
  *
30
48
  * @param {string} key Chiave di persistenza
31
49
  * @param {T} item Oggetto da salvare
50
+ * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
32
51
  */
33
- storeLocal(key, item) {
34
- this.LocalPreferences[key] = item;
35
- return true;
36
- }
37
- /**
38
- * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale
39
- *
40
- * @param {string} key Chiave del valore da recuperare
41
- * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito,
42
- * in caso fosse stato modificato fuori sistema o da un altro sistema
43
- *
44
- * @returns {T} Oggetto richiesto
45
- */
46
- retrieveLocal(key, cacheBust = false) {
47
- if (this.LocalPreferences[key] && !cacheBust)
48
- return this.LocalPreferences[key];
49
- else
50
- return null;
51
- }
52
- /**
53
- * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
54
- *
55
- * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
56
- */
57
- clear(storeLevel) {
58
- this.LocalPreferences = {};
59
- return this.persistor.clear(storeLevel);
52
+ setItem(key, item, storeLevel = 'cache') {
53
+ this.setLocalItem(key, item, storeLevel);
54
+ return this.persist(key, item, storeLevel);
60
55
  }
61
56
  /**
62
- * Salva un oggetto sia nella cache locale che nel persistor
57
+ * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
63
58
  *
64
59
  * @param {string} key Chiave di persistenza
65
60
  * @param {T} item Oggetto da salvare
66
61
  * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
67
62
  */
68
- store(key, item, storeLevel) {
63
+ setLocalItem(key, item, storeLevel = 'cache') {
69
64
  this.LocalPreferences[key] = item;
70
- return this.persist(key, item, storeLevel);
65
+ this.LocalPreferenceType[key] = storeLevel;
66
+ return true;
71
67
  }
72
68
  /**
73
69
  * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente
@@ -88,7 +84,7 @@ export class PreferencesService {
88
84
  *
89
85
  * @returns {T} Oggetto richiesto
90
86
  */
91
- retrieve(key, cacheBust = false) {
87
+ getItem(key, cacheBust = false) {
92
88
  if (this.LocalPreferences[key] && !cacheBust)
93
89
  return of(this.LocalPreferences[key]);
94
90
  else {
@@ -99,6 +95,47 @@ export class PreferencesService {
99
95
  return obj;
100
96
  }
101
97
  }
98
+ /**
99
+ * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale
100
+ *
101
+ * @param {string} key Chiave del valore da recuperare
102
+ *
103
+ * @returns {T} Oggetto richiesto
104
+ */
105
+ getLocalItem(key) {
106
+ if (this.LocalPreferences[key])
107
+ return this.LocalPreferences[key];
108
+ else
109
+ return null;
110
+ }
111
+ /**
112
+ * Elimina un oggetto dalla cache sia locale che persistita
113
+ *
114
+ * @param {string} key Chiave da rimuovere
115
+ */
116
+ removeItem(key) {
117
+ if (this.LocalPreferences[key]) {
118
+ delete this.LocalPreferences[key];
119
+ delete this.LocalPreferenceType[key];
120
+ }
121
+ return this.persistor.remove(key);
122
+ }
123
+ /**
124
+ * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
125
+ *
126
+ * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
127
+ */
128
+ clear(storeLevel) {
129
+ // Pulisco la cache locale
130
+ for (let prop in this.LocalPreferenceType) {
131
+ if (this.LocalPreferenceType[prop] == storeLevel) {
132
+ delete this.LocalPreferenceType[prop];
133
+ delete this.LocalPreferences[prop];
134
+ }
135
+ }
136
+ // "Committo" le modifiche
137
+ return this.persistor.clear(storeLevel);
138
+ }
102
139
  }
103
140
  PreferencesService.decorators = [
104
141
  { type: Injectable }
@@ -107,4 +144,4 @@ PreferencesService.ctorParameters = () => [
107
144
  { type: BasePreferencesPersistor },
108
145
  { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [PREF_FULL_RETRIEVE_AT_START,] }] }
109
146
  ];
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZWZlcmVuY2VzL3NyYy9saWIvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFhLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQU83Qjs7OztPQUlHO0lBQ0gsWUFBb0IsU0FBbUMsRUFBMkQsMkJBQW9DO1FBQWxJLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQTJELGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBUztRQVZ0Sjs7V0FFRztRQUNLLHFCQUFnQixHQUE2QixFQUFFLENBQUM7UUFRdEQsSUFBSSxJQUFJLENBQUMsMkJBQTJCO1lBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUksR0FBVyxFQUFFLElBQU87UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGFBQWEsQ0FBSSxHQUFXLEVBQUUsWUFBcUIsS0FBSztRQUN0RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDMUMsT0FBVSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7O1lBRXJDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQWtDO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFJLEdBQVcsRUFBRSxJQUFPLEVBQUUsVUFBa0M7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0YsT0FBTyxDQUFJLEdBQVcsRUFBRSxJQUFPLEVBQUUsVUFBa0M7UUFDbEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFFBQVEsQ0FBSSxHQUFXLEVBQUUsWUFBcUIsS0FBSztRQUNqRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDMUMsT0FBTyxFQUFFLENBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEM7WUFDSCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBSSxHQUFHLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRztnQkFDTixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzdELE9BQU8sR0FBRyxDQUFDO1NBQ1o7SUFDSCxDQUFDOzs7WUFqR0YsVUFBVTs7O1lBTkYsd0JBQXdCOzBDQW1CMkIsUUFBUSxZQUFJLE1BQU0sU0FBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uY2F0TWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEJhc2VQcmVmZXJlbmNlc1BlcnNpc3RvciB9IGZyb20gJy4vcGVyc2lzdG9yL2Jhc2UvQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yJztcclxuaW1wb3J0IHsgUFJFRl9GVUxMX1JFVFJJRVZFX0FUX1NUQVJUIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIHNpIG9jY3VwYSBkaSBzYWx2YXJlIGUgcmVjdXBlcmFyZSBsZSBwcmVmZXJlbnplIHV0ZW50ZSByaXNwZXR0byBhbGxlIGNoaWF2aSBzYWx2YXRlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcmVmZXJlbmNlc1NlcnZpY2Uge1xyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSBpbiBtZW1vcmlhIGRlbGxlIHByZWZlcmVuemUgbG9jYWxpIGNoZSBzYXLDoCBwZXJzaXN0aXRvIHBlciBtZXp6byBkZWxsYSBjbGFzc2UgY2hlIGZhIGxlIHZlY2kgZGVsICoqQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yKipcclxuICAgKi9cclxuICBwcml2YXRlIExvY2FsUHJlZmVyZW5jZXM6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBDb3N0cnV0dG9yZVxyXG4gICAqIFxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcnNpc3RvcjogQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yLCBAT3B0aW9uYWwoKSBASW5qZWN0KFBSRUZfRlVMTF9SRVRSSUVWRV9BVF9TVEFSVCkgcHJpdmF0ZSBQUkVGX0ZVTExfUkVUUklFVkVfQVRfU1RBUlQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLlBSRUZfRlVMTF9SRVRSSUVWRV9BVF9TVEFSVClcclxuICAgICAgdGhpcy5wZXJzaXN0b3IucmVjb3ZlckFsbCgpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlcyA9PiB7IHRoaXMuTG9jYWxQcmVmZXJlbmNlcyA9IHJlczsgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYWx2YSB1biBvZ2dldHRvIHNvbG8gbmVsbGEgY2FjaGUgbG9jYWxlLiBEb3Zyw6AgZXNzZXJlIHBlcnNpc3RpdG8gbWFudWFsbWVudGUgbyBhbmRyw6AgcGVyc28gYWwgcmlhdnZpbyBkZWxsJ2FwcGxpY2F6aW9uZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRpIHBlcnNpc3RlbnphXHJcbiAgICogQHBhcmFtIHtUfSBpdGVtIE9nZ2V0dG8gZGEgc2FsdmFyZVxyXG4gICAqL1xyXG4gIHN0b3JlTG9jYWw8VD4oa2V5OiBzdHJpbmcsIGl0ZW06IFQpOiBib29sZWFuIHtcclxuICAgIHRoaXMuTG9jYWxQcmVmZXJlbmNlc1trZXldID0gaXRlbTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjdXBlcmEgdW4gb2dnZXR0byBpbiBiYXNlIGEgdW5hIGNoaWF2ZS4gUGVybWV0dGUgZGkgYWNjZWRlcmUgc29sbyBhbGxhIGNvcGlhIGxvY2FsZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRlbCB2YWxvcmUgZGEgcmVjdXBlcmFyZVxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FjaGVCdXN0IEluZGljYSBzZSBpZ25vcmFyZSBpbCB2YWxvcmUgZGVsbGEgY2FjaGUgbG9jYWxlIGUgcmVjdXBlcmFyZSBsJ29nZ2V0dG8gZGFsbG8gc3RvcmUgcGVyc2lzdGl0bywgXHJcbiAgICogaW4gY2FzbyBmb3NzZSBzdGF0byBtb2RpZmljYXRvIGZ1b3JpIHNpc3RlbWEgbyBkYSB1biBhbHRybyBzaXN0ZW1hXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1R9IE9nZ2V0dG8gcmljaGllc3RvXHJcbiAgICovXHJcbiAgcmV0cmlldmVMb2NhbDxUPihrZXk6IHN0cmluZywgY2FjaGVCdXN0OiBib29sZWFuID0gZmFsc2UpOiBUIHtcclxuICAgIGlmICh0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSAmJiAhY2FjaGVCdXN0KVxyXG4gICAgICByZXR1cm4gPFQ+dGhpcy5Mb2NhbFByZWZlcmVuY2VzW2tleV07XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmlwdWxpc2NlIGxlIGltcG9zdGF6aW9uaSBsb2NhbGkgZSBsZSBpbXBvc3Rhemlvbmkgc2FsdmF0ZSBkYWwgcGVyc2lzdG9yXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnfSBzdG9yZUxldmVsIExpdmVsbG8gYSBjdWkgcmlwdWxpcmUgbGEgY2FjaGUuIFV0aWxpenphcmUgKipjYWNoZSoqIHBlciBjYW5jZWxsYXJlIGNvc2Ugc2FsdmF0ZSBkYWxsJ2FwcGxpY2F6aW9uZSwgdXRpbGl6emFyZSAqKnByZWZlcmVuY2UqKiBwZXIgY2FuY2VsbGFyZSBjb3NlIHNhbHZhdGUgZGFsbCd1dGVudGVcclxuICAgKi9cclxuICBjbGVhcihzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLkxvY2FsUHJlZmVyZW5jZXMgPSB7fTtcclxuICAgIHJldHVybiB0aGlzLnBlcnNpc3Rvci5jbGVhcihzdG9yZUxldmVsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhIHVuIG9nZ2V0dG8gc2lhIG5lbGxhIGNhY2hlIGxvY2FsZSBjaGUgbmVsIHBlcnNpc3RvclxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRpIHBlcnNpc3RlbnphXHJcbiAgICogQHBhcmFtIHtUfSBpdGVtIE9nZ2V0dG8gZGEgc2FsdmFyZVxyXG4gICAqIEBwYXJhbSB7J2NhY2hlJyB8ICdwcmVmZXJlbmNlJ30gc3RvcmVMZXZlbCBMaXZlbGxvIGEgY3VpIHN0b3JpY2l6emFyZSBsJ29nZ2V0dG8uIFV0aWxpenphcmUgKipjYWNoZSoqIHBlciBjb3NlIHNhbHZhdGUgZGFsbCdhcHBsaWNhemlvbmUsIHV0aWxpenphcmUgKipwcmVmZXJlbmNlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAqL1xyXG4gIHN0b3JlPFQ+KGtleTogc3RyaW5nLCBpdGVtOiBULCBzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSA9IGl0ZW07XHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0KGtleSwgaXRlbSwgc3RvcmVMZXZlbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYWx2YSwgcGVyIHVuYSBzZXNzaW9uZSwgdW5hIGNoaWF2ZSBjb24gdW4gdmFsb3JlLCB2aWVuZSBjaGlhbWF0byBhdXRvbWF0aWNhbWVudGUgZGFsIG1ldG9kbyAqKnN0b3JlKiogbWEgZGV2J2Vzc2VyZSBjaGlhbWF0byBtYW51YWxtZW50ZVxyXG4gICAqIG5lbCBjYXNvIHNpIHV0aWxpenppIGlsIG1ldG9kbyAqKnN0b3JlTG9jYWwqKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRhIHN0b3JpY2l6emFyZVxyXG4gICAqIEBwYXJhbSB7J2NhY2hlJyB8ICdwcmVmZXJlbmNlJ30gc3RvcmVMZXZlbCBMaXZlbGxvIGEgY3VpIHN0b3JpY2l6emFyZSBsJ29nZ2V0dG8uIFV0aWxpenphcmUgKipjYWNoZSoqIHBlciBjb3NlIHNhbHZhdGUgZGFsbCdhcHBsaWNhemlvbmUsIHV0aWxpenphcmUgKipwcmVmZXJlbmNlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAqL1xyXG4gICBwZXJzaXN0PFQ+KGtleTogc3RyaW5nLCBpdGVtOiBULCBzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0b3IucGVyc2lzdChrZXksIGl0ZW0sIHN0b3JlTGV2ZWwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjdXBlcmEgdW4gb2dnZXR0byBpbiBiYXNlIGEgdW5hIGNoaWF2ZS4gUGVybWV0dGUgZGkgYWNjZWRlcmUgYWxsYSBjb3BpYSBsb2NhbGUgbyBhbGxhIGNvcGlhIHBlcnNpc3RpdGEuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGVsIHZhbG9yZSBkYSByZWN1cGVyYXJlXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBjYWNoZUJ1c3QgSW5kaWNhIHNlIGlnbm9yYXJlIGlsIHZhbG9yZSBkZWxsYSBjYWNoZSBsb2NhbGUgZSByZWN1cGVyYXJlIGwnb2dnZXR0byBkYWxsbyBzdG9yZSBwZXJzaXN0aXRvLCBcclxuICAgKiBpbiBjYXNvIGZvc3NlIHN0YXRvIG1vZGlmaWNhdG8gZnVvcmkgc2lzdGVtYSBvIGRhIHVuIGFsdHJvIHNpc3RlbWFcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VH0gT2dnZXR0byByaWNoaWVzdG9cclxuICAgKi9cclxuICByZXRyaWV2ZTxUPihrZXk6IHN0cmluZywgY2FjaGVCdXN0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmICh0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSAmJiAhY2FjaGVCdXN0KVxyXG4gICAgICByZXR1cm4gb2YoPFQ+dGhpcy5Mb2NhbFByZWZlcmVuY2VzW2tleV0pO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBvYmogPSB0aGlzLnBlcnNpc3Rvci5yZWNvdmVyPFQ+KGtleSk7XHJcbiAgICAgIGlmICghb2JqKVxyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgb2JqLnBpcGUodGFwKGl0ZW0gPT4geyB0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSA9IGl0ZW07IH0pKVxyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZWZlcmVuY2VzL3NyYy9saWIvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsVUFBVTtBQUNWLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2RDs7R0FFRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFZN0I7Ozs7T0FJRztJQUNILFlBQW9CLFNBQW1DLEVBQTJELDJCQUFvQztRQUFsSSxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUEyRCxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQVM7UUFmdEo7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBNkIsRUFBRSxDQUFDO1FBRXhEOztXQUVHO1FBQ0ssd0JBQW1CLEdBQWdELEVBQUUsQ0FBQztRQVE1RSxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNwQyxzRkFBc0Y7WUFDdEYsUUFBUSxDQUFDO2dCQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEQsQ0FBQyxDQUFD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QztTQUN0QztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsVUFBMEM7UUFDckQsMEJBQTBCO1FBQzFCLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsRUFBRTtnQkFDaEQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7UUFDRCwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7WUExSUYsVUFBVTs7O1lBTkYsd0JBQXdCOzBDQXdCMkIsUUFBUSxZQUFJLE1BQU0sU0FBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yIH0gZnJvbSAnLi9wZXJzaXN0b3IvYmFzZS9CYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3InO1xyXG5pbXBvcnQgeyBQUkVGX0ZVTExfUkVUUklFVkVfQVRfU1RBUlQgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgc2kgb2NjdXBhIGRpIHNhbHZhcmUgZSByZWN1cGVyYXJlIGxlIHByZWZlcmVuemUgdXRlbnRlIHJpc3BldHRvIGFsbGUgY2hpYXZpIHNhbHZhdGVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByZWZlcmVuY2VzU2VydmljZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3JlIGluIG1lbW9yaWEgZGVsbGUgcHJlZmVyZW56ZSBsb2NhbGkgY2hlIHNhcsOgIHBlcnNpc3RpdG8gcGVyIG1lenpvIGRlbGxhIGNsYXNzZSBjaGUgZmEgbGUgdmVjaSBkZWwgKipCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IqKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgTG9jYWxQcmVmZXJlbmNlczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBsZSBjaGlhdmkgY29udGVudXRlIGluICoqTG9jYWxQcmVmZXJlbmNlcyoqIGRpIGNoZSB0aXBvIHNvbm8gaW4gbW9kbyBkYSByaXB1bGlyZSBjb3JyZXR0YW1lbnRlIHN1bGxhIGNsZWFyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBMb2NhbFByZWZlcmVuY2VUeXBlOiB7IFtpbmRleDogc3RyaW5nXTogJ2NhY2hlJyB8ICdwcmVmZXJlbmNlJyB9ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIENvc3RydXR0b3JlXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVyc2lzdG9yOiBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IsIEBPcHRpb25hbCgpIEBJbmplY3QoUFJFRl9GVUxMX1JFVFJJRVZFX0FUX1NUQVJUKSBwcml2YXRlIFBSRUZfRlVMTF9SRVRSSUVWRV9BVF9TVEFSVDogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuUFJFRl9GVUxMX1JFVFJJRVZFX0FUX1NUQVJUKSB7XHJcbiAgICAgIC8vIFJlY3VwZXJvIHR1dHRpIGdsaSBvZ2dldHRpIGRpZmZlcmVuemlhbmRvIGFuY2hlIGxhdG8gbG9jYWxlIGZyYSBjYWNoZSBlIHByZWZlcmVuY2VzXHJcbiAgICAgIGZvcmtKb2luKFtcclxuICAgICAgICB0aGlzLnBlcnNpc3Rvci5yZWNvdmVyQWxsKCdjYWNoZScpLnBpcGUodGFrZSgxKSksXHJcbiAgICAgICAgdGhpcy5wZXJzaXN0b3IucmVjb3ZlckFsbCgncHJlZmVyZW5jZScpLnBpcGUodGFrZSgxKSlcclxuICAgICAgXSkuc3Vic2NyaWJlKChyZXM6IFt7IFtpbmRleDogc3RyaW5nXTogYW55IH0sIHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfV0pID0+IHtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgY1Byb3AgaW4gcmVzWzBdKSB7XHJcbiAgICAgICAgICB0aGlzLkxvY2FsUHJlZmVyZW5jZXNbY1Byb3BdID0gcmVzWzBdW2NQcm9wXTtcclxuICAgICAgICAgIHRoaXMuTG9jYWxQcmVmZXJlbmNlVHlwZVtjUHJvcF0gPSAnY2FjaGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBwUHJvcCBpbiByZXNbMV0pIHtcclxuICAgICAgICAgIHRoaXMuTG9jYWxQcmVmZXJlbmNlc1twUHJvcF0gPSByZXNbMF1bcFByb3BdO1xyXG4gICAgICAgICAgdGhpcy5Mb2NhbFByZWZlcmVuY2VUeXBlW3BQcm9wXSA9ICdwcmVmZXJlbmNlJztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2FsdmEgdW4gb2dnZXR0byBzaWEgbmVsbGEgY2FjaGUgbG9jYWxlIGNoZSBuZWwgcGVyc2lzdG9yXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGkgcGVyc2lzdGVuemFcclxuICAgKiBAcGFyYW0ge1R9IGl0ZW0gT2dnZXR0byBkYSBzYWx2YXJlXHJcbiAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnfSBzdG9yZUxldmVsIExpdmVsbG8gYSBjdWkgc3RvcmljaXp6YXJlIGwnb2dnZXR0by4gVXRpbGl6emFyZSAqKmNhY2hlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ2FwcGxpY2F6aW9uZSwgdXRpbGl6emFyZSAqKnByZWZlcmVuY2UqKiBwZXIgY29zZSBzYWx2YXRlIGRhbGwndXRlbnRlXHJcbiAgICovXHJcbiAgcHVibGljIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIGl0ZW06IFQsIHN0b3JlTGV2ZWw6ICdjYWNoZScgfCAncHJlZmVyZW5jZScgPSAnY2FjaGUnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLnNldExvY2FsSXRlbShrZXksIGl0ZW0sIHN0b3JlTGV2ZWwpXHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0KGtleSwgaXRlbSwgc3RvcmVMZXZlbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYWx2YSB1biBvZ2dldHRvIHNvbG8gbmVsbGEgY2FjaGUgbG9jYWxlLiBEb3Zyw6AgZXNzZXJlIHBlcnNpc3RpdG8gbWFudWFsbWVudGUgbyBhbmRyw6AgcGVyc28gYWwgcmlhdnZpbyBkZWxsJ2FwcGxpY2F6aW9uZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRpIHBlcnNpc3RlbnphXHJcbiAgICogQHBhcmFtIHtUfSBpdGVtIE9nZ2V0dG8gZGEgc2FsdmFyZVxyXG4gICAqIEBwYXJhbSB7J2NhY2hlJyB8ICdwcmVmZXJlbmNlJ30gc3RvcmVMZXZlbCBMaXZlbGxvIGEgY3VpIHN0b3JpY2l6emFyZSBsJ29nZ2V0dG8uIFV0aWxpenphcmUgKipjYWNoZSoqIHBlciBjb3NlIHNhbHZhdGUgZGFsbCdhcHBsaWNhemlvbmUsIHV0aWxpenphcmUgKipwcmVmZXJlbmNlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRMb2NhbEl0ZW08VD4oa2V5OiBzdHJpbmcsIGl0ZW06IFQsIHN0b3JlTGV2ZWw6ICdjYWNoZScgfCAncHJlZmVyZW5jZScgPSAnY2FjaGUnKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSA9IGl0ZW07XHJcbiAgICB0aGlzLkxvY2FsUHJlZmVyZW5jZVR5cGVba2V5XSA9IHN0b3JlTGV2ZWw7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhLCBwZXIgdW5hIHNlc3Npb25lLCB1bmEgY2hpYXZlIGNvbiB1biB2YWxvcmUsIHZpZW5lIGNoaWFtYXRvIGF1dG9tYXRpY2FtZW50ZSBkYWwgbWV0b2RvICoqc3RvcmUqKiBtYSBkZXYnZXNzZXJlIGNoaWFtYXRvIG1hbnVhbG1lbnRlXHJcbiAgICogbmVsIGNhc28gc2kgdXRpbGl6emkgaWwgbWV0b2RvICoqc3RvcmVMb2NhbCoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGEgc3RvcmljaXp6YXJlXHJcbiAgICogQHBhcmFtIHsnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnfSBzdG9yZUxldmVsIExpdmVsbG8gYSBjdWkgc3RvcmljaXp6YXJlIGwnb2dnZXR0by4gVXRpbGl6emFyZSAqKmNhY2hlKiogcGVyIGNvc2Ugc2FsdmF0ZSBkYWxsJ2FwcGxpY2F6aW9uZSwgdXRpbGl6emFyZSAqKnByZWZlcmVuY2UqKiBwZXIgY29zZSBzYWx2YXRlIGRhbGwndXRlbnRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwZXJzaXN0PFQ+KGtleTogc3RyaW5nLCBpdGVtOiBULCBzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0b3IucGVyc2lzdChrZXksIGl0ZW0sIHN0b3JlTGV2ZWwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjdXBlcmEgdW4gb2dnZXR0byBpbiBiYXNlIGEgdW5hIGNoaWF2ZS4gUGVybWV0dGUgZGkgYWNjZWRlcmUgYWxsYSBjb3BpYSBsb2NhbGUgbyBhbGxhIGNvcGlhIHBlcnNpc3RpdGEuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGVsIHZhbG9yZSBkYSByZWN1cGVyYXJlXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBjYWNoZUJ1c3QgSW5kaWNhIHNlIGlnbm9yYXJlIGlsIHZhbG9yZSBkZWxsYSBjYWNoZSBsb2NhbGUgZSByZWN1cGVyYXJlIGwnb2dnZXR0byBkYWxsbyBzdG9yZSBwZXJzaXN0aXRvLCBcclxuICAgKiBpbiBjYXNvIGZvc3NlIHN0YXRvIG1vZGlmaWNhdG8gZnVvcmkgc2lzdGVtYSBvIGRhIHVuIGFsdHJvIHNpc3RlbWFcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7VH0gT2dnZXR0byByaWNoaWVzdG9cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SXRlbTxUPihrZXk6IHN0cmluZywgY2FjaGVCdXN0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmICh0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSAmJiAhY2FjaGVCdXN0KVxyXG4gICAgICByZXR1cm4gb2YoPFQ+dGhpcy5Mb2NhbFByZWZlcmVuY2VzW2tleV0pO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBvYmogPSB0aGlzLnBlcnNpc3Rvci5yZWNvdmVyPFQ+KGtleSk7XHJcbiAgICAgIGlmICghb2JqKVxyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgb2JqLnBpcGUodGFwKGl0ZW0gPT4geyB0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSA9IGl0ZW07IH0pKVxyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjdXBlcmEgdW4gb2dnZXR0byBpbiBiYXNlIGEgdW5hIGNoaWF2ZS4gUGVybWV0dGUgZGkgYWNjZWRlcmUgc29sbyBhbGxhIGNvcGlhIGxvY2FsZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRlbCB2YWxvcmUgZGEgcmVjdXBlcmFyZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtUfSBPZ2dldHRvIHJpY2hpZXN0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRMb2NhbEl0ZW08VD4oa2V5OiBzdHJpbmcpOiBUIHtcclxuICAgIGlmICh0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSlcclxuICAgICAgcmV0dXJuIDxUPnRoaXMuTG9jYWxQcmVmZXJlbmNlc1trZXldO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVsaW1pbmEgdW4gb2dnZXR0byBkYWxsYSBjYWNoZSBzaWEgbG9jYWxlIGNoZSBwZXJzaXN0aXRhXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGEgcmltdW92ZXJlXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSkge1xyXG4gICAgICBkZWxldGUgdGhpcy5Mb2NhbFByZWZlcmVuY2VzW2tleV07XHJcbiAgICAgIGRlbGV0ZSB0aGlzLkxvY2FsUHJlZmVyZW5jZVR5cGVba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0b3IucmVtb3ZlKGtleSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSaXB1bGlzY2UgbGUgaW1wb3N0YXppb25pIGxvY2FsaSBlIGxlIGltcG9zdGF6aW9uaSBzYWx2YXRlIGRhbCBwZXJzaXN0b3JcclxuICAgKiBcclxuICAgKiBAcGFyYW0geydjYWNoZScgfCAncHJlZmVyZW5jZSd9IHN0b3JlTGV2ZWwgTGl2ZWxsbyBhIGN1aSByaXB1bGlyZSBsYSBjYWNoZS4gVXRpbGl6emFyZSAqKmNhY2hlKiogcGVyIGNhbmNlbGxhcmUgY29zZSBzYWx2YXRlIGRhbGwnYXBwbGljYXppb25lLCB1dGlsaXp6YXJlICoqcHJlZmVyZW5jZSoqIHBlciBjYW5jZWxsYXJlIGNvc2Ugc2FsdmF0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhcihzdG9yZUxldmVsOiAnY2FjaGUnIHwgJ3ByZWZlcmVuY2UnIHwgJ2FsbCcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIC8vIFB1bGlzY28gbGEgY2FjaGUgbG9jYWxlXHJcbiAgICBmb3IgKGxldCBwcm9wIGluIHRoaXMuTG9jYWxQcmVmZXJlbmNlVHlwZSkge1xyXG4gICAgICBpZiAodGhpcy5Mb2NhbFByZWZlcmVuY2VUeXBlW3Byb3BdID09IHN0b3JlTGV2ZWwpIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5Mb2NhbFByZWZlcmVuY2VUeXBlW3Byb3BdO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLkxvY2FsUHJlZmVyZW5jZXNbcHJvcF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFwiQ29tbWl0dG9cIiBsZSBtb2RpZmljaGVcclxuICAgIHJldHVybiB0aGlzLnBlcnNpc3Rvci5jbGVhcihzdG9yZUxldmVsKTtcclxuICB9XHJcbn0iXX0=
@@ -58,53 +58,49 @@ class PreferencesService {
58
58
  * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**
59
59
  */
60
60
  this.LocalPreferences = {};
61
- if (this.PREF_FULL_RETRIEVE_AT_START)
62
- this.persistor.recoverAll().pipe(take(1)).subscribe(res => { this.LocalPreferences = res; });
61
+ /**
62
+ * Indica le chiavi contenute in **LocalPreferences** di che tipo sono in modo da ripulire correttamente sulla clear
63
+ */
64
+ this.LocalPreferenceType = {};
65
+ if (this.PREF_FULL_RETRIEVE_AT_START) {
66
+ // Recupero tutti gli oggetti differenziando anche lato locale fra cache e preferences
67
+ forkJoin([
68
+ this.persistor.recoverAll('cache').pipe(take(1)),
69
+ this.persistor.recoverAll('preference').pipe(take(1))
70
+ ]).subscribe((res) => {
71
+ for (let cProp in res[0]) {
72
+ this.LocalPreferences[cProp] = res[0][cProp];
73
+ this.LocalPreferenceType[cProp] = 'cache';
74
+ }
75
+ for (let pProp in res[1]) {
76
+ this.LocalPreferences[pProp] = res[0][pProp];
77
+ this.LocalPreferenceType[pProp] = 'preference';
78
+ }
79
+ });
80
+ }
63
81
  }
64
82
  /**
65
- * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
83
+ * Salva un oggetto sia nella cache locale che nel persistor
66
84
  *
67
85
  * @param {string} key Chiave di persistenza
68
86
  * @param {T} item Oggetto da salvare
87
+ * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
69
88
  */
70
- storeLocal(key, item) {
71
- this.LocalPreferences[key] = item;
72
- return true;
73
- }
74
- /**
75
- * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale
76
- *
77
- * @param {string} key Chiave del valore da recuperare
78
- * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito,
79
- * in caso fosse stato modificato fuori sistema o da un altro sistema
80
- *
81
- * @returns {T} Oggetto richiesto
82
- */
83
- retrieveLocal(key, cacheBust = false) {
84
- if (this.LocalPreferences[key] && !cacheBust)
85
- return this.LocalPreferences[key];
86
- else
87
- return null;
88
- }
89
- /**
90
- * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
91
- *
92
- * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
93
- */
94
- clear(storeLevel) {
95
- this.LocalPreferences = {};
96
- return this.persistor.clear(storeLevel);
89
+ setItem(key, item, storeLevel = 'cache') {
90
+ this.setLocalItem(key, item, storeLevel);
91
+ return this.persist(key, item, storeLevel);
97
92
  }
98
93
  /**
99
- * Salva un oggetto sia nella cache locale che nel persistor
94
+ * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
100
95
  *
101
96
  * @param {string} key Chiave di persistenza
102
97
  * @param {T} item Oggetto da salvare
103
98
  * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
104
99
  */
105
- store(key, item, storeLevel) {
100
+ setLocalItem(key, item, storeLevel = 'cache') {
106
101
  this.LocalPreferences[key] = item;
107
- return this.persist(key, item, storeLevel);
102
+ this.LocalPreferenceType[key] = storeLevel;
103
+ return true;
108
104
  }
109
105
  /**
110
106
  * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente
@@ -125,7 +121,7 @@ class PreferencesService {
125
121
  *
126
122
  * @returns {T} Oggetto richiesto
127
123
  */
128
- retrieve(key, cacheBust = false) {
124
+ getItem(key, cacheBust = false) {
129
125
  if (this.LocalPreferences[key] && !cacheBust)
130
126
  return of(this.LocalPreferences[key]);
131
127
  else {
@@ -136,6 +132,47 @@ class PreferencesService {
136
132
  return obj;
137
133
  }
138
134
  }
135
+ /**
136
+ * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale
137
+ *
138
+ * @param {string} key Chiave del valore da recuperare
139
+ *
140
+ * @returns {T} Oggetto richiesto
141
+ */
142
+ getLocalItem(key) {
143
+ if (this.LocalPreferences[key])
144
+ return this.LocalPreferences[key];
145
+ else
146
+ return null;
147
+ }
148
+ /**
149
+ * Elimina un oggetto dalla cache sia locale che persistita
150
+ *
151
+ * @param {string} key Chiave da rimuovere
152
+ */
153
+ removeItem(key) {
154
+ if (this.LocalPreferences[key]) {
155
+ delete this.LocalPreferences[key];
156
+ delete this.LocalPreferenceType[key];
157
+ }
158
+ return this.persistor.remove(key);
159
+ }
160
+ /**
161
+ * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
162
+ *
163
+ * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
164
+ */
165
+ clear(storeLevel) {
166
+ // Pulisco la cache locale
167
+ for (let prop in this.LocalPreferenceType) {
168
+ if (this.LocalPreferenceType[prop] == storeLevel) {
169
+ delete this.LocalPreferenceType[prop];
170
+ delete this.LocalPreferences[prop];
171
+ }
172
+ }
173
+ // "Committo" le modifiche
174
+ return this.persistor.clear(storeLevel);
175
+ }
139
176
  }
140
177
  PreferencesService.decorators = [
141
178
  { type: Injectable }
@@ -173,6 +210,11 @@ class LocalStoragePersistor extends BasePreferencesPersistor {
173
210
  return of(ret).pipe(first());
174
211
  }
175
212
  /** @ignore Vedi classe base */
213
+ remove(key) {
214
+ var ret = localStorage.removeItem(this.getKey(key));
215
+ return of(true).pipe(first());
216
+ }
217
+ /** @ignore Vedi classe base */
176
218
  recoverAll() {
177
219
  var ret = {};
178
220
  for (var k in localStorage) {
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-preferences.js","sources":["../../../projects/preferences/src/lib/persistor/base/BasePreferencesPersistor.ts","../../../projects/preferences/src/lib/tokens.ts","../../../projects/preferences/src/lib/preferences.service.ts","../../../projects/preferences/src/lib/models/PreferencesModuleConfig.ts","../../../projects/preferences/src/lib/session/base/BaseSessionRetriever.ts","../../../projects/preferences/src/lib/persistor/implementation/LocalStoragePersistor.ts","../../../projects/preferences/src/lib/session/implementation/DefaultSessionRetriever.ts","../../../projects/preferences/src/lib/preferences.module.ts","../../../projects/preferences/src/esfaenza-preferences.ts"],"sourcesContent":["import { Observable, forkJoin } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage\r\n */\r\nexport abstract class BasePreferencesPersistor {\r\n\r\n /** @ignore Costruttore */\r\n constructor(protected session: BaseSessionRetriever) {}\r\n\r\n /**\r\n * Salva, per una sessione, una chiave con un valore\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public abstract persist<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean>;\r\n\r\n /**\r\n * Recupera, per una sessione, il valore assegnato ad una chiave\r\n * \r\n * @param {string} key Chiave da recuperare\r\n * \r\n * @returns {Observable<T>} Valore salvato per la chiave **key**\r\n */\r\n public abstract recover<T>(key?: string): Observable<T>;\r\n\r\n /**\r\n * Per una sessione recupera tutte le coppie Chiave - Valore salvate\r\n * \r\n * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione\r\n */\r\n public abstract recoverAll(): Observable<{ [index: string]: any }>;\r\n\r\n /**\r\n * Ripulisce le preference salvate relative ad una sessione\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente\r\n */\r\n public abstract clear(storeLevel: 'cache' | 'preference'): Observable<boolean>;\r\n\r\n /**\r\n * Effettua il **persist** massivo di una lista di Chiave - Valore\r\n * \r\n * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public persistAll(dictionary: { [key: string]: string }, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n let observables: Observable<boolean>[] = [];\r\n for (let key in dictionary)\r\n observables.push(this.persist(key, dictionary[key], storeLevel));\r\n\r\n return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));\r\n }\r\n\r\n /**\r\n * Ottiene la chiave \"Reale\" da utilizzare per la persistenza di una chiave generica\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * \r\n * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata\r\n */\r\n protected getKey(key: string): string {\r\n return this.session.getSessionKey() + \"§\" + key + \"§\";\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.\r\n * \r\n * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte\r\n */\r\nexport const PREF_FULL_RETRIEVE_AT_START: InjectionToken<boolean> = new InjectionToken<boolean>('PREF_FULL_RETRIEVE_AT_START');","// Angular\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { concatMap, take, tap } from 'rxjs/operators';\r\n\r\n// Modelli\r\nimport { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';\r\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\r\n\r\n/**\r\n * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate\r\n */\r\n@Injectable()\r\nexport class PreferencesService {\r\n\r\n /**\r\n * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**\r\n */\r\n private LocalPreferences: { [index: string]: any } = {};\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private persistor: BasePreferencesPersistor, @Optional() @Inject(PREF_FULL_RETRIEVE_AT_START) private PREF_FULL_RETRIEVE_AT_START: boolean) {\r\n if (this.PREF_FULL_RETRIEVE_AT_START)\r\n this.persistor.recoverAll().pipe(take(1)).subscribe(res => { this.LocalPreferences = res; });\r\n }\r\n\r\n /**\r\n * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n */\r\n storeLocal<T>(key: string, item: T): boolean {\r\n this.LocalPreferences[key] = item;\r\n return true;\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito, \r\n * in caso fosse stato modificato fuori sistema o da un altro sistema\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n retrieveLocal<T>(key: string, cacheBust: boolean = false): T {\r\n if (this.LocalPreferences[key] && !cacheBust)\r\n return <T>this.LocalPreferences[key];\r\n else\r\n return null;\r\n }\r\n\r\n /**\r\n * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor\r\n * \r\n * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente\r\n */\r\n clear(storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n this.LocalPreferences = {};\r\n return this.persistor.clear(storeLevel);\r\n }\r\n\r\n /**\r\n * Salva un oggetto sia nella cache locale che nel persistor\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n store<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n this.LocalPreferences[key] = item;\r\n return this.persist(key, item, storeLevel);\r\n }\r\n\r\n /**\r\n * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente\r\n * nel caso si utilizzi il metodo **storeLocal**\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n persist<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n return this.persistor.persist(key, item, storeLevel);\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita.\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito, \r\n * in caso fosse stato modificato fuori sistema o da un altro sistema\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n retrieve<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n if (this.LocalPreferences[key] && !cacheBust)\r\n return of(<T>this.LocalPreferences[key]);\r\n else {\r\n var obj = this.persistor.recover<T>(key);\r\n if (!obj)\r\n return of(null);\r\n obj.pipe(tap(item => { this.LocalPreferences[key] = item; }))\r\n return obj;\r\n }\r\n }\r\n}","import { Type } from \"@angular/core\";\r\nimport { BasePreferencesPersistor } from \"../persistor/base/BasePreferencesPersistor\";\r\nimport { BaseSessionRetriever } from \"../session/base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Classe di Configurazione per la libreria\r\n */\r\nexport class PreferencesModuleConfig{\r\n\r\n /**\r\n * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.\r\n * \r\n * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte\r\n */\r\n retrieveAllAtStart?: boolean;\r\n\r\n /**\r\n * Classe che si deve occupare dello store \"Definitivo\" delle preferenze. Di default viene proposto uno store lato localStorage ma si può facilmente \r\n * fornire uno storage che porta le informazioni lato Database\r\n */\r\n preferencePersistor?: Type<BasePreferencesPersistor>;\r\n\r\n /**\r\n * Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze\r\n */\r\n sessionRetriever?: Type<BaseSessionRetriever>;\r\n}","/**\r\n * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato\r\n */\r\nexport abstract class BaseSessionRetriever {\r\n\r\n /**\r\n * Ottiene un ID sessione\r\n * \r\n * @returns {string} ID sessione\r\n */\r\n public abstract getSessionKey(): string;\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Classi\r\nimport { BasePreferencesPersistor } from \"../base/BasePreferencesPersistor\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\n\r\n// RXJS\r\nimport { Observable, of } from \"rxjs\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\n/** Implementazione di default per la classe **BasePreferencesPersistor** */\r\n@Injectable()\r\nexport class LocalStoragePersistor extends BasePreferencesPersistor {\r\n\r\n /** @ignore Costruttore */\r\n constructor(session: BaseSessionRetriever) { super(session); }\r\n\r\n /** @ignore Vedi classe base */\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n localStorage.setItem(this.getKey(key), JSON.stringify(item));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recover<T>(key: string): Observable<T> {\r\n var ret = <T>JSON.parse(localStorage.getItem(this.getKey(key)));\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n var ret: { [index: string]: string; } = {};\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));\r\n }\r\n\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public clear(): Observable<boolean> {\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n localStorage.removeItem(k);\r\n }\r\n return of(true).pipe(first());\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { BaseSessionRetriever } from \"../base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Implementazione di default per la classe **BaseSessionRetriever**\r\n */\r\n@Injectable()\r\nexport class DefaultSessionRetriever extends BaseSessionRetriever {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor() { super(); }\r\n\r\n /**\r\n * Ottiene un ID sessione\r\n * \r\n * @returns {string} ID sessione\r\n */\r\n getSessionKey(): string {\r\n return \"DUMMY_SESSION\";\r\n }\r\n}","// Angular\nimport { ModuleWithProviders } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\n// Modelli\nimport { PreferencesModuleConfig } from './models/PreferencesModuleConfig';\nimport { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';\nimport { LocalStoragePersistor } from './persistor/implementation/LocalStoragePersistor';\nimport { BaseSessionRetriever } from './session/base/BaseSessionRetriever';\nimport { DefaultSessionRetriever } from './session/implementation/DefaultSessionRetriever';\nimport { PreferencesService } from './preferences.service';\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\n\n@NgModule()\nexport class PreferencesModule {\n static forRoot(config?: PreferencesModuleConfig): ModuleWithProviders<PreferencesModule> {\n return {\n ngModule: PreferencesModule,\n providers: [\n PreferencesService,\n { provide: BasePreferencesPersistor, useClass: config?.preferencePersistor || LocalStoragePersistor },\n { provide: BaseSessionRetriever, useClass: config?.sessionRetriever || DefaultSessionRetriever },\n { provide: PREF_FULL_RETRIEVE_AT_START, useValue: config?.retrieveAllAtStart || true }\n ]\n };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {LocalStoragePersistor as ɵa} from './lib/persistor/implementation/LocalStoragePersistor';\nexport {DefaultSessionRetriever as ɵb} from './lib/session/implementation/DefaultSessionRetriever';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-preferences.js","sources":["../../../projects/preferences/src/lib/persistor/base/BasePreferencesPersistor.ts","../../../projects/preferences/src/lib/tokens.ts","../../../projects/preferences/src/lib/preferences.service.ts","../../../projects/preferences/src/lib/models/PreferencesModuleConfig.ts","../../../projects/preferences/src/lib/session/base/BaseSessionRetriever.ts","../../../projects/preferences/src/lib/persistor/implementation/LocalStoragePersistor.ts","../../../projects/preferences/src/lib/session/implementation/DefaultSessionRetriever.ts","../../../projects/preferences/src/lib/preferences.module.ts","../../../projects/preferences/src/esfaenza-preferences.ts"],"sourcesContent":["import { Observable, forkJoin } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage\r\n */\r\nexport abstract class BasePreferencesPersistor {\r\n\r\n /** @ignore Costruttore */\r\n constructor(protected session: BaseSessionRetriever) {}\r\n\r\n /**\r\n * Salva, per una sessione, una chiave con un valore\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public abstract persist<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean>;\r\n\r\n /**\r\n * Recupera, per una sessione, il valore assegnato ad una chiave\r\n * \r\n * @param {string} key Chiave da recuperare\r\n * \r\n * @returns {Observable<T>} Valore salvato per la chiave **key**\r\n */\r\n public abstract recover<T>(key?: string): Observable<T>;\r\n\r\n /**\r\n * Per una sessione recupera tutte le coppie Chiave - Valore salvate\r\n * \r\n * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public abstract recoverAll(storeLevel: 'cache' | 'preference'): Observable<{ [index: string]: any }>;\r\n\r\n /**\r\n * Ripulisce le preference salvate relative ad una sessione\r\n * @param {'cache' | 'preference' | 'all'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente\r\n */\r\n public abstract clear(storeLevel: 'cache' | 'preference' | 'all'): Observable<boolean>;\r\n\r\n /**\r\n * Elimina un oggetto dalla cache persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public abstract remove(key: string): Observable<boolean>;\r\n\r\n /**\r\n * Effettua il **persist** massivo di una lista di Chiave - Valore\r\n * \r\n * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public persistAll(dictionary: { [key: string]: string }, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n let observables: Observable<boolean>[] = [];\r\n for (let key in dictionary)\r\n observables.push(this.persist(key, dictionary[key], storeLevel));\r\n\r\n return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));\r\n }\r\n\r\n /**\r\n * Ottiene la chiave \"Reale\" da utilizzare per la persistenza di una chiave generica\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * \r\n * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata\r\n */\r\n protected getKey(key: string): string {\r\n return this.session.getSessionKey() + \"§\" + key + \"§\";\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.\r\n * \r\n * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte\r\n */\r\nexport const PREF_FULL_RETRIEVE_AT_START: InjectionToken<boolean> = new InjectionToken<boolean>('PREF_FULL_RETRIEVE_AT_START');","// Angular\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { take, tap } from 'rxjs/operators';\r\n\r\n// Modelli\r\nimport { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';\r\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\r\n\r\n/**\r\n * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate\r\n */\r\n@Injectable()\r\nexport class PreferencesService {\r\n\r\n /**\r\n * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**\r\n */\r\n private LocalPreferences: { [index: string]: any } = {};\r\n\r\n /**\r\n * Indica le chiavi contenute in **LocalPreferences** di che tipo sono in modo da ripulire correttamente sulla clear\r\n */\r\n private LocalPreferenceType: { [index: string]: 'cache' | 'preference' } = {};\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private persistor: BasePreferencesPersistor, @Optional() @Inject(PREF_FULL_RETRIEVE_AT_START) private PREF_FULL_RETRIEVE_AT_START: boolean) {\r\n if (this.PREF_FULL_RETRIEVE_AT_START) {\r\n // Recupero tutti gli oggetti differenziando anche lato locale fra cache e preferences\r\n forkJoin([\r\n this.persistor.recoverAll('cache').pipe(take(1)),\r\n this.persistor.recoverAll('preference').pipe(take(1))\r\n ]).subscribe((res: [{ [index: string]: any }, { [index: string]: any }]) => {\r\n\r\n for (let cProp in res[0]) {\r\n this.LocalPreferences[cProp] = res[0][cProp];\r\n this.LocalPreferenceType[cProp] = 'cache';\r\n }\r\n for (let pProp in res[1]) {\r\n this.LocalPreferences[pProp] = res[0][pProp];\r\n this.LocalPreferenceType[pProp] = 'preference';\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Salva un oggetto sia nella cache locale che nel persistor\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public setItem<T>(key: string, item: T, storeLevel: 'cache' | 'preference' = 'cache'): Observable<boolean> {\r\n this.setLocalItem(key, item, storeLevel)\r\n return this.persist(key, item, storeLevel);\r\n }\r\n\r\n /**\r\n * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public setLocalItem<T>(key: string, item: T, storeLevel: 'cache' | 'preference' = 'cache'): boolean {\r\n this.LocalPreferences[key] = item;\r\n this.LocalPreferenceType[key] = storeLevel;\r\n return true;\r\n }\r\n\r\n /**\r\n * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente\r\n * nel caso si utilizzi il metodo **storeLocal**\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n private persist<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n return this.persistor.persist(key, item, storeLevel);\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita.\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito, \r\n * in caso fosse stato modificato fuori sistema o da un altro sistema\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n public getItem<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n if (this.LocalPreferences[key] && !cacheBust)\r\n return of(<T>this.LocalPreferences[key]);\r\n else {\r\n var obj = this.persistor.recover<T>(key);\r\n if (!obj)\r\n return of(null);\r\n obj.pipe(tap(item => { this.LocalPreferences[key] = item; }))\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n public getLocalItem<T>(key: string): T {\r\n if (this.LocalPreferences[key])\r\n return <T>this.LocalPreferences[key];\r\n else\r\n return null;\r\n }\r\n\r\n /**\r\n * Elimina un oggetto dalla cache sia locale che persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public removeItem(key: string): Observable<boolean> {\r\n if (this.LocalPreferences[key]) {\r\n delete this.LocalPreferences[key];\r\n delete this.LocalPreferenceType[key];\r\n }\r\n\r\n return this.persistor.remove(key);\r\n }\r\n\r\n /**\r\n * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor\r\n * \r\n * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente\r\n */\r\n public clear(storeLevel: 'cache' | 'preference' | 'all'): Observable<boolean> {\r\n // Pulisco la cache locale\r\n for (let prop in this.LocalPreferenceType) {\r\n if (this.LocalPreferenceType[prop] == storeLevel) {\r\n delete this.LocalPreferenceType[prop];\r\n delete this.LocalPreferences[prop];\r\n }\r\n }\r\n // \"Committo\" le modifiche\r\n return this.persistor.clear(storeLevel);\r\n }\r\n}","import { Type } from \"@angular/core\";\r\nimport { BasePreferencesPersistor } from \"../persistor/base/BasePreferencesPersistor\";\r\nimport { BaseSessionRetriever } from \"../session/base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Classe di Configurazione per la libreria\r\n */\r\nexport class PreferencesModuleConfig{\r\n\r\n /**\r\n * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.\r\n * \r\n * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte\r\n */\r\n retrieveAllAtStart?: boolean;\r\n\r\n /**\r\n * Classe che si deve occupare dello store \"Definitivo\" delle preferenze. Di default viene proposto uno store lato localStorage ma si può facilmente \r\n * fornire uno storage che porta le informazioni lato Database\r\n */\r\n preferencePersistor?: Type<BasePreferencesPersistor>;\r\n\r\n /**\r\n * Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze\r\n */\r\n sessionRetriever?: Type<BaseSessionRetriever>;\r\n}","/**\r\n * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato\r\n */\r\nexport abstract class BaseSessionRetriever {\r\n\r\n /**\r\n * Ottiene un ID sessione\r\n * \r\n * @returns {string} ID sessione\r\n */\r\n public abstract getSessionKey(): string;\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Classi\r\nimport { BasePreferencesPersistor } from \"../base/BasePreferencesPersistor\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\n\r\n// RXJS\r\nimport { Observable, of } from \"rxjs\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\n/** Implementazione di default per la classe **BasePreferencesPersistor** */\r\n@Injectable()\r\nexport class LocalStoragePersistor extends BasePreferencesPersistor {\r\n\r\n /** @ignore Costruttore */\r\n constructor(session: BaseSessionRetriever) { super(session); }\r\n\r\n /** @ignore Vedi classe base */\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n localStorage.setItem(this.getKey(key), JSON.stringify(item));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recover<T>(key: string): Observable<T> {\r\n var ret = <T>JSON.parse(localStorage.getItem(this.getKey(key)));\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public remove(key: string): Observable<boolean> {\r\n var ret = localStorage.removeItem(this.getKey(key));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n var ret: { [index: string]: string; } = {};\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));\r\n }\r\n\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public clear(): Observable<boolean> {\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n localStorage.removeItem(k);\r\n }\r\n return of(true).pipe(first());\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { BaseSessionRetriever } from \"../base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Implementazione di default per la classe **BaseSessionRetriever**\r\n */\r\n@Injectable()\r\nexport class DefaultSessionRetriever extends BaseSessionRetriever {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor() { super(); }\r\n\r\n /**\r\n * Ottiene un ID sessione\r\n * \r\n * @returns {string} ID sessione\r\n */\r\n getSessionKey(): string {\r\n return \"DUMMY_SESSION\";\r\n }\r\n}","// Angular\nimport { ModuleWithProviders } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\n// Modelli\nimport { PreferencesModuleConfig } from './models/PreferencesModuleConfig';\nimport { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';\nimport { LocalStoragePersistor } from './persistor/implementation/LocalStoragePersistor';\nimport { BaseSessionRetriever } from './session/base/BaseSessionRetriever';\nimport { DefaultSessionRetriever } from './session/implementation/DefaultSessionRetriever';\nimport { PreferencesService } from './preferences.service';\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\n\n@NgModule()\nexport class PreferencesModule {\n static forRoot(config?: PreferencesModuleConfig): ModuleWithProviders<PreferencesModule> {\n return {\n ngModule: PreferencesModule,\n providers: [\n PreferencesService,\n { provide: BasePreferencesPersistor, useClass: config?.preferencePersistor || LocalStoragePersistor },\n { provide: BaseSessionRetriever, useClass: config?.sessionRetriever || DefaultSessionRetriever },\n { provide: PREF_FULL_RETRIEVE_AT_START, useValue: config?.retrieveAllAtStart || true }\n ]\n };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {LocalStoragePersistor as ɵa} from './lib/persistor/implementation/LocalStoragePersistor';\nexport {DefaultSessionRetriever as ɵb} from './lib/session/implementation/DefaultSessionRetriever';"],"names":[],"mappings":"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"}
@@ -26,15 +26,22 @@ export declare abstract class BasePreferencesPersistor {
26
26
  * Per una sessione recupera tutte le coppie Chiave - Valore salvate
27
27
  *
28
28
  * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione
29
+ * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
29
30
  */
30
- abstract recoverAll(): Observable<{
31
+ abstract recoverAll(storeLevel: 'cache' | 'preference'): Observable<{
31
32
  [index: string]: any;
32
33
  }>;
33
34
  /**
34
35
  * Ripulisce le preference salvate relative ad una sessione
35
- * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
36
+ * @param {'cache' | 'preference' | 'all'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
37
+ */
38
+ abstract clear(storeLevel: 'cache' | 'preference' | 'all'): Observable<boolean>;
39
+ /**
40
+ * Elimina un oggetto dalla cache persistita
41
+ *
42
+ * @param {string} key Chiave da rimuovere
36
43
  */
37
- abstract clear(storeLevel: 'cache' | 'preference'): Observable<boolean>;
44
+ abstract remove(key: string): Observable<boolean>;
38
45
  /**
39
46
  * Effettua il **persist** massivo di una lista di Chiave - Valore
40
47
  *
@@ -10,6 +10,8 @@ export declare class LocalStoragePersistor extends BasePreferencesPersistor {
10
10
  /** @ignore Vedi classe base */
11
11
  recover<T>(key: string): Observable<T>;
12
12
  /** @ignore Vedi classe base */
13
+ remove(key: string): Observable<boolean>;
14
+ /** @ignore Vedi classe base */
13
15
  recoverAll(): Observable<{
14
16
  [index: string]: any;
15
17
  }>;