@esfaenza/preferences 12.2.10 → 13.1.2

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.
Files changed (29) hide show
  1. package/esfaenza-preferences.d.ts +1 -2
  2. package/esm2020/esfaenza-preferences.mjs +5 -0
  3. package/{esm2015/lib/models/PreferencesModuleConfig.js → esm2020/lib/models/PreferencesModuleConfig.mjs} +0 -0
  4. package/{esm2015/lib/persistor/base/BasePreferencesPersistor.js → esm2020/lib/persistor/base/BasePreferencesPersistor.mjs} +0 -0
  5. package/esm2020/lib/persistor/implementation/LocalStoragePersistor.mjs +47 -0
  6. package/esm2020/lib/preferences.module.mjs +28 -0
  7. package/esm2020/lib/preferences.service.mjs +93 -0
  8. package/{esm2015/lib/session/base/BaseSessionRetriever.js → esm2020/lib/session/base/BaseSessionRetriever.mjs} +0 -0
  9. package/esm2020/lib/session/implementation/DefaultSessionRetriever.mjs +28 -0
  10. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  11. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  12. package/fesm2015/{esfaenza-preferences.js → esfaenza-preferences.mjs} +38 -29
  13. package/fesm2015/esfaenza-preferences.mjs.map +1 -0
  14. package/fesm2020/esfaenza-preferences.mjs +232 -0
  15. package/fesm2020/esfaenza-preferences.mjs.map +1 -0
  16. package/lib/persistor/implementation/LocalStoragePersistor.d.ts +3 -0
  17. package/lib/preferences.module.d.ts +4 -0
  18. package/lib/preferences.service.d.ts +3 -0
  19. package/lib/session/implementation/DefaultSessionRetriever.d.ts +3 -0
  20. package/package.json +21 -9
  21. package/bundles/esfaenza-preferences.umd.js +0 -572
  22. package/bundles/esfaenza-preferences.umd.js.map +0 -1
  23. package/esfaenza-preferences.metadata.json +0 -1
  24. package/esm2015/esfaenza-preferences.js +0 -7
  25. package/esm2015/lib/persistor/implementation/LocalStoragePersistor.js +0 -47
  26. package/esm2015/lib/preferences.module.js +0 -24
  27. package/esm2015/lib/preferences.service.js +0 -90
  28. package/esm2015/lib/session/implementation/DefaultSessionRetriever.js +0 -26
  29. package/fesm2015/esfaenza-preferences.js.map +0 -1
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
+ /// <amd-module name="@esfaenza/preferences" />
4
5
  export * from './public-api';
5
- export { LocalStoragePersistor as ɵa } from './lib/persistor/implementation/LocalStoragePersistor';
6
- export { DefaultSessionRetriever as ɵb } from './lib/session/implementation/DefaultSessionRetriever';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNmYWVuemEtcHJlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9wcmVmZXJlbmNlcy9zcmMvZXNmYWVuemEtcHJlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ // Angular
2
+ import { Injectable } from "@angular/core";
3
+ // Classi
4
+ import { BasePreferencesPersistor } from "../base/BasePreferencesPersistor";
5
+ // RXJS
6
+ import { of } from "rxjs";
7
+ import { first } from "rxjs/operators";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../session/base/BaseSessionRetriever";
10
+ /** Implementazione di default per la classe **BasePreferencesPersistor** */
11
+ export class LocalStoragePersistor extends BasePreferencesPersistor {
12
+ /** @ignore Costruttore */
13
+ constructor(session) { super(session); }
14
+ /** @ignore Vedi classe base */
15
+ persist(key, item) {
16
+ localStorage.setItem(this.getKey(key), JSON.stringify(item));
17
+ return of(true).pipe(first());
18
+ }
19
+ /** @ignore Vedi classe base */
20
+ recover(key) {
21
+ var ret = JSON.parse(localStorage.getItem(this.getKey(key)));
22
+ return of(ret).pipe(first());
23
+ }
24
+ /** @ignore Vedi classe base */
25
+ recoverAll() {
26
+ var ret = {};
27
+ for (var k in localStorage) {
28
+ if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
29
+ ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));
30
+ }
31
+ return of(ret).pipe(first());
32
+ }
33
+ /** @ignore Vedi classe base */
34
+ clear() {
35
+ for (var k in localStorage) {
36
+ if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
37
+ localStorage.removeItem(k);
38
+ }
39
+ return of(true).pipe(first());
40
+ }
41
+ }
42
+ LocalStoragePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor, deps: [{ token: i1.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
43
+ LocalStoragePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor, decorators: [{
45
+ type: Injectable
46
+ }], ctorParameters: function () { return [{ type: i1.BaseSessionRetriever }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxTdG9yYWdlUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlZmVyZW5jZXMvc3JjL2xpYi9wZXJzaXN0b3IvaW1wbGVtZW50YXRpb24vTG9jYWxTdG9yYWdlUGVyc2lzdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLFNBQVM7QUFDVCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUc1RSxPQUFPO0FBQ1AsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV2Qyw0RUFBNEU7QUFFNUUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHdCQUF3QjtJQUUvRCwwQkFBMEI7SUFDMUIsWUFBWSxPQUE2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUQsK0JBQStCO0lBQ3hCLE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUNsQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCwrQkFBK0I7SUFDeEIsT0FBTyxDQUFJLEdBQVc7UUFDekIsSUFBSSxHQUFHLEdBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQkFBK0I7SUFDeEIsVUFBVTtRQUNiLElBQUksR0FBRyxHQUFpQyxFQUFFLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsSUFBSSxZQUFZLEVBQUU7WUFDeEIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDN0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTtRQUVELE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQkFBK0I7SUFDeEIsS0FBSztRQUNSLEtBQUssSUFBSSxDQUFDLElBQUksWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdELFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDOztrSEFuQ1EscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yIH0gZnJvbSBcIi4uL2Jhc2UvQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7IEJhc2VTZXNzaW9uUmV0cmlldmVyIH0gZnJvbSBcIi4uLy4uL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlclwiO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG4vKiogSW1wbGVtZW50YXppb25lIGRpIGRlZmF1bHQgcGVyIGxhIGNsYXNzZSAqKkJhc2VQcmVmZXJlbmNlc1BlcnNpc3RvcioqICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVBlcnNpc3RvciBleHRlbmRzIEJhc2VQcmVmZXJlbmNlc1BlcnNpc3RvciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHNlc3Npb246IEJhc2VTZXNzaW9uUmV0cmlldmVyKSB7IHN1cGVyKHNlc3Npb24pOyB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIHBlcnNpc3Q8VD4oa2V5OiBzdHJpbmcsIGl0ZW06IFQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmdldEtleShrZXkpLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIHJlY292ZXI8VD4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICB2YXIgcmV0ID0gPFQ+SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldEtleShrZXkpKSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKHJldCkucGlwZShmaXJzdCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBWZWRpIGNsYXNzZSBiYXNlICovXHJcbiAgICBwdWJsaWMgcmVjb3ZlckFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBhbnk7IH0+IHtcclxuICAgICAgICB2YXIgcmV0OiB7IFtpbmRleDogc3RyaW5nXTogc3RyaW5nOyB9ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgaWYgKGsuaW5jbHVkZXMoXCLCp1wiKSAmJiBrLnN0YXJ0c1dpdGgodGhpcy5zZXNzaW9uLmdldFNlc3Npb25LZXkoKSkpXHJcbiAgICAgICAgICAgICAgICByZXRbay5tYXRjaCgvwqcoLiopwqcvKVsxXV0gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGspKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBvZihyZXQpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrLmluY2x1ZGVzKFwiwqdcIikgJiYgay5zdGFydHNXaXRoKHRoaXMuc2Vzc2lvbi5nZXRTZXNzaW9uS2V5KCkpKVxyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih0cnVlKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,28 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';
3
+ import { LocalStoragePersistor } from './persistor/implementation/LocalStoragePersistor';
4
+ import { BaseSessionRetriever } from './session/base/BaseSessionRetriever';
5
+ import { DefaultSessionRetriever } from './session/implementation/DefaultSessionRetriever';
6
+ import { PreferencesService } from './preferences.service';
7
+ import { PREF_FULL_RETRIEVE_AT_START } from './tokens';
8
+ import * as i0 from "@angular/core";
9
+ export class PreferencesModule {
10
+ static forRoot(config) {
11
+ return {
12
+ ngModule: PreferencesModule,
13
+ providers: [
14
+ PreferencesService,
15
+ { provide: BasePreferencesPersistor, useClass: config?.preferencePersistor || LocalStoragePersistor },
16
+ { provide: BaseSessionRetriever, useClass: config?.sessionRetriever || DefaultSessionRetriever },
17
+ { provide: PREF_FULL_RETRIEVE_AT_START, useValue: config?.retrieveAllAtStart || true }
18
+ ]
19
+ };
20
+ }
21
+ }
22
+ PreferencesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
+ PreferencesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule });
24
+ PreferencesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule, decorators: [{
26
+ type: NgModule
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlZmVyZW5jZXMvc3JjL2xpYi9wcmVmZXJlbmNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFnQztRQUM3QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUU7Z0JBQ1Qsa0JBQWtCO2dCQUNsQixFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixJQUFJLHFCQUFxQixFQUFFO2dCQUNyRyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLHVCQUF1QixFQUFFO2dCQUNoRyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixJQUFJLElBQUksRUFBRTthQUN2RjtTQUNGLENBQUM7SUFDSixDQUFDOzs4R0FYVSxpQkFBaUI7K0dBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBNb2RlbGxpXG5pbXBvcnQgeyBQcmVmZXJlbmNlc01vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL1ByZWZlcmVuY2VzTW9kdWxlQ29uZmlnJztcbmltcG9ydCB7IEJhc2VQcmVmZXJlbmNlc1BlcnNpc3RvciB9IGZyb20gJy4vcGVyc2lzdG9yL2Jhc2UvQmFzZVByZWZlcmVuY2VzUGVyc2lzdG9yJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVBlcnNpc3RvciB9IGZyb20gJy4vcGVyc2lzdG9yL2ltcGxlbWVudGF0aW9uL0xvY2FsU3RvcmFnZVBlcnNpc3Rvcic7XG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gJy4vc2Vzc2lvbi9iYXNlL0Jhc2VTZXNzaW9uUmV0cmlldmVyJztcbmltcG9ydCB7IERlZmF1bHRTZXNzaW9uUmV0cmlldmVyIH0gZnJvbSAnLi9zZXNzaW9uL2ltcGxlbWVudGF0aW9uL0RlZmF1bHRTZXNzaW9uUmV0cmlldmVyJztcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vcHJlZmVyZW5jZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQUkVGX0ZVTExfUkVUUklFVkVfQVRfU1RBUlQgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgUHJlZmVyZW5jZXNNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBQcmVmZXJlbmNlc01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8UHJlZmVyZW5jZXNNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFByZWZlcmVuY2VzTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFByZWZlcmVuY2VzU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IsIHVzZUNsYXNzOiBjb25maWc/LnByZWZlcmVuY2VQZXJzaXN0b3IgfHwgTG9jYWxTdG9yYWdlUGVyc2lzdG9yIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQmFzZVNlc3Npb25SZXRyaWV2ZXIsIHVzZUNsYXNzOiBjb25maWc/LnNlc3Npb25SZXRyaWV2ZXIgfHwgRGVmYXVsdFNlc3Npb25SZXRyaWV2ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBQUkVGX0ZVTExfUkVUUklFVkVfQVRfU1RBUlQsIHVzZVZhbHVlOiBjb25maWc/LnJldHJpZXZlQWxsQXRTdGFydCB8fCB0cnVlIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59Il19
@@ -0,0 +1,93 @@
1
+ // Angular
2
+ import { Inject, Injectable, Optional } from '@angular/core';
3
+ import { of } from 'rxjs';
4
+ import { concatMap, tap } from 'rxjs/operators';
5
+ import { PREF_FULL_RETRIEVE_AT_START } from './tokens';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./persistor/base/BasePreferencesPersistor";
8
+ /**
9
+ * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate
10
+ */
11
+ export class PreferencesService {
12
+ /**
13
+ * Costruttore
14
+ *
15
+ * @ignore
16
+ */
17
+ constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
18
+ this.persistor = persistor;
19
+ this.PREF_FULL_RETRIEVE_AT_START = PREF_FULL_RETRIEVE_AT_START;
20
+ /**
21
+ * Indica se è la prima volta che viene effettuata un'operazione di retrieve. Appena effettuata questa variabile viene impostata a **false** e (in quanto singleton,
22
+ * se configurato bene) mai più modificata
23
+ */
24
+ this.FirstRetrieve = true;
25
+ /**
26
+ * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**
27
+ */
28
+ this.LocalPreferences = {};
29
+ }
30
+ /**
31
+ * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
32
+ */
33
+ clear() {
34
+ this.LocalPreferences = {};
35
+ return this.persistor.clear();
36
+ }
37
+ /**
38
+ * Salva un oggetto sia nella cache locale che nel persistor
39
+ *
40
+ * @param {string} key Chiave di persistenza
41
+ * @param {T} item Oggetto da salvare
42
+ */
43
+ store(key, item) {
44
+ this.LocalPreferences[key] = item;
45
+ return this.persistor.persist(key, item);
46
+ }
47
+ /**
48
+ * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita ed in caso fosse il primo caricamento e l'impostazione
49
+ * **retrieveAllAtStart** della classe di configurazione fosse **true** si occupa anche della prima valorizzazione della cache locale
50
+ *
51
+ * @param {string} key Chiave del valore da recuperare
52
+ * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito,
53
+ * in caso fosse stato modificato fuori sistema o da un altro sistema
54
+ *
55
+ * @returns {T} Oggetto richiesto
56
+ */
57
+ retrieve(key, cacheBust = false) {
58
+ // Se è il primo retrieve e sono configurato per recuperare tutta la configurazione all'inizio
59
+ // eseguo, altrimenti prendo l'oggetto se lo trovo e se non lo trovo lo carico prima in cache
60
+ if (this.FirstRetrieve) {
61
+ if (this.PREF_FULL_RETRIEVE_AT_START)
62
+ return this.persistor.recoverAll().pipe(concatMap(res => {
63
+ this.LocalPreferences = res;
64
+ this.FirstRetrieve = false;
65
+ return this.internalRetrieve(key, cacheBust);
66
+ }));
67
+ }
68
+ return this.internalRetrieve(key, cacheBust);
69
+ }
70
+ /** @ignore Vedi **retrieve** */
71
+ internalRetrieve(key, cacheBust = false) {
72
+ if (this.LocalPreferences[key] && !cacheBust)
73
+ return of(this.LocalPreferences[key]);
74
+ else {
75
+ var obj = this.persistor.recover(key);
76
+ if (!obj)
77
+ return of(null);
78
+ obj.pipe(tap(item => { this.LocalPreferences[key] = item; }));
79
+ return obj;
80
+ }
81
+ }
82
+ }
83
+ PreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService, deps: [{ token: i1.BasePreferencesPersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ PreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService, decorators: [{
86
+ type: Injectable
87
+ }], ctorParameters: function () { return [{ type: i1.BasePreferencesPersistor }, { type: undefined, decorators: [{
88
+ type: Optional
89
+ }, {
90
+ type: Inject,
91
+ args: [PREF_FULL_RETRIEVE_AT_START]
92
+ }] }]; } });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZWZlcmVuY2VzL3NyYy9saWIvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUV2RDs7R0FFRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFhN0I7Ozs7T0FJRztJQUNILFlBQW9CLFNBQW1DLEVBQTJELDJCQUFvQztRQUFsSSxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUEyRCxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQVM7UUFoQnRKOzs7V0FHRztRQUNLLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRXRDOztXQUVHO1FBQ0sscUJBQWdCLEdBQTZCLEVBQUUsQ0FBQztJQU9rRyxDQUFDO0lBRTNKOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxRQUFRLENBQUksR0FBVyxFQUFFLFlBQXFCLEtBQUs7UUFDakQsOEZBQThGO1FBQzlGLDZGQUE2RjtRQUM3RixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsMkJBQTJCO2dCQUNsQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFJLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUksR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxnQ0FBZ0M7SUFDeEIsZ0JBQWdCLENBQUksR0FBVyxFQUFFLFlBQXFCLEtBQUs7UUFDakUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQzFDLE9BQU8sRUFBRSxDQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0gsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUksR0FBRyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEdBQUc7Z0JBQ04sT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM3RCxPQUFPLEdBQUcsQ0FBQztTQUNaO0lBQ0gsQ0FBQzs7K0dBM0VVLGtCQUFrQiwwREFrQmdELDJCQUEyQjttSEFsQjdGLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVOzswQkFtQmlELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNvbmNhdE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IgfSBmcm9tICcuL3BlcnNpc3Rvci9iYXNlL0Jhc2VQcmVmZXJlbmNlc1BlcnNpc3Rvcic7XHJcbmltcG9ydCB7IFBSRUZfRlVMTF9SRVRSSUVWRV9BVF9TVEFSVCB9IGZyb20gJy4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBzaSBvY2N1cGEgZGkgc2FsdmFyZSBlIHJlY3VwZXJhcmUgbGUgcHJlZmVyZW56ZSB1dGVudGUgcmlzcGV0dG8gYWxsZSBjaGlhdmkgc2FsdmF0ZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJlZmVyZW5jZXNTZXJ2aWNlIHtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIMOoIGxhIHByaW1hIHZvbHRhIGNoZSB2aWVuZSBlZmZldHR1YXRhIHVuJ29wZXJhemlvbmUgZGkgcmV0cmlldmUuIEFwcGVuYSBlZmZldHR1YXRhIHF1ZXN0YSB2YXJpYWJpbGUgdmllbmUgaW1wb3N0YXRhIGEgKipmYWxzZSoqIGUgKGluIHF1YW50byBzaW5nbGV0b24sXHJcbiAgICogc2UgY29uZmlndXJhdG8gYmVuZSkgbWFpIHBpw7kgbW9kaWZpY2F0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgRmlyc3RSZXRyaWV2ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3JlIGluIG1lbW9yaWEgZGVsbGUgcHJlZmVyZW56ZSBsb2NhbGkgY2hlIHNhcsOgIHBlcnNpc3RpdG8gcGVyIG1lenpvIGRlbGxhIGNsYXNzZSBjaGUgZmEgbGUgdmVjaSBkZWwgKipCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IqKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgTG9jYWxQcmVmZXJlbmNlczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIENvc3RydXR0b3JlXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVyc2lzdG9yOiBCYXNlUHJlZmVyZW5jZXNQZXJzaXN0b3IsIEBPcHRpb25hbCgpIEBJbmplY3QoUFJFRl9GVUxMX1JFVFJJRVZFX0FUX1NUQVJUKSBwcml2YXRlIFBSRUZfRlVMTF9SRVRSSUVWRV9BVF9TVEFSVDogYm9vbGVhbikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJpcHVsaXNjZSBsZSBpbXBvc3RhemlvbmkgbG9jYWxpIGUgbGUgaW1wb3N0YXppb25pIHNhbHZhdGUgZGFsIHBlcnNpc3RvclxyXG4gICAqL1xyXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgdGhpcy5Mb2NhbFByZWZlcmVuY2VzID0ge307XHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0b3IuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhIHVuIG9nZ2V0dG8gc2lhIG5lbGxhIGNhY2hlIGxvY2FsZSBjaGUgbmVsIHBlcnNpc3RvclxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRpIHBlcnNpc3RlbnphXHJcbiAgICogQHBhcmFtIHtUfSBpdGVtIE9nZ2V0dG8gZGEgc2FsdmFyZVxyXG4gICAqL1xyXG4gIHN0b3JlPFQ+KGtleTogc3RyaW5nLCBpdGVtOiBUKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSA9IGl0ZW07XHJcbiAgICByZXR1cm4gdGhpcy5wZXJzaXN0b3IucGVyc2lzdChrZXksIGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjdXBlcmEgdW4gb2dnZXR0byBpbiBiYXNlIGEgdW5hIGNoaWF2ZS4gUGVybWV0dGUgZGkgYWNjZWRlcmUgYWxsYSBjb3BpYSBsb2NhbGUgbyBhbGxhIGNvcGlhIHBlcnNpc3RpdGEgZWQgaW4gY2FzbyBmb3NzZSBpbCBwcmltbyBjYXJpY2FtZW50byBlIGwnaW1wb3N0YXppb25lIFxyXG4gICAqICoqcmV0cmlldmVBbGxBdFN0YXJ0KiogZGVsbGEgY2xhc3NlIGRpIGNvbmZpZ3VyYXppb25lIGZvc3NlICoqdHJ1ZSoqIHNpIG9jY3VwYSBhbmNoZSBkZWxsYSBwcmltYSB2YWxvcml6emF6aW9uZSBkZWxsYSBjYWNoZSBsb2NhbGVcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IENoaWF2ZSBkZWwgdmFsb3JlIGRhIHJlY3VwZXJhcmVcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlQnVzdCBJbmRpY2Egc2UgaWdub3JhcmUgaWwgdmFsb3JlIGRlbGxhIGNhY2hlIGxvY2FsZSBlIHJlY3VwZXJhcmUgbCdvZ2dldHRvIGRhbGxvIHN0b3JlIHBlcnNpc3RpdG8sIFxyXG4gICAqIGluIGNhc28gZm9zc2Ugc3RhdG8gbW9kaWZpY2F0byBmdW9yaSBzaXN0ZW1hIG8gZGEgdW4gYWx0cm8gc2lzdGVtYVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtUfSBPZ2dldHRvIHJpY2hpZXN0b1xyXG4gICAqL1xyXG4gIHJldHJpZXZlPFQ+KGtleTogc3RyaW5nLCBjYWNoZUJ1c3Q6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgLy8gU2Ugw6ggaWwgcHJpbW8gcmV0cmlldmUgZSBzb25vIGNvbmZpZ3VyYXRvIHBlciByZWN1cGVyYXJlIHR1dHRhIGxhIGNvbmZpZ3VyYXppb25lIGFsbCdpbml6aW9cclxuICAgIC8vIGVzZWd1bywgYWx0cmltZW50aSBwcmVuZG8gbCdvZ2dldHRvIHNlIGxvIHRyb3ZvIGUgc2Ugbm9uIGxvIHRyb3ZvIGxvIGNhcmljbyBwcmltYSBpbiBjYWNoZVxyXG4gICAgaWYgKHRoaXMuRmlyc3RSZXRyaWV2ZSkge1xyXG4gICAgICBpZiAodGhpcy5QUkVGX0ZVTExfUkVUUklFVkVfQVRfU1RBUlQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGVyc2lzdG9yLnJlY292ZXJBbGwoKS5waXBlKGNvbmNhdE1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5Mb2NhbFByZWZlcmVuY2VzID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5GaXJzdFJldHJpZXZlID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFJldHJpZXZlPFQ+KGtleSwgY2FjaGVCdXN0KTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxSZXRyaWV2ZTxUPihrZXksIGNhY2hlQnVzdCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSBWZWRpICoqcmV0cmlldmUqKiAqL1xyXG4gIHByaXZhdGUgaW50ZXJuYWxSZXRyaWV2ZTxUPihrZXk6IHN0cmluZywgY2FjaGVCdXN0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmICh0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSAmJiAhY2FjaGVCdXN0KVxyXG4gICAgICByZXR1cm4gb2YoPFQ+dGhpcy5Mb2NhbFByZWZlcmVuY2VzW2tleV0pO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBvYmogPSB0aGlzLnBlcnNpc3Rvci5yZWNvdmVyPFQ+KGtleSk7XHJcbiAgICAgIGlmICghb2JqKVxyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgb2JqLnBpcGUodGFwKGl0ZW0gPT4geyB0aGlzLkxvY2FsUHJlZmVyZW5jZXNba2V5XSA9IGl0ZW07IH0pKVxyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { BaseSessionRetriever } from "../base/BaseSessionRetriever";
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Implementazione di default per la classe **BaseSessionRetriever**
6
+ */
7
+ export class DefaultSessionRetriever extends BaseSessionRetriever {
8
+ /**
9
+ * Costruttore
10
+ *
11
+ * @ignore
12
+ */
13
+ constructor() { super(); }
14
+ /**
15
+ * Ottiene un ID sessione
16
+ *
17
+ * @returns {string} ID sessione
18
+ */
19
+ getSessionKey() {
20
+ return "DUMMY_SESSION";
21
+ }
22
+ }
23
+ DefaultSessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
24
+ DefaultSessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever, decorators: [{
26
+ type: Injectable
27
+ }], ctorParameters: function () { return []; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFNlc3Npb25SZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVmZXJlbmNlcy9zcmMvbGliL3Nlc3Npb24vaW1wbGVtZW50YXRpb24vRGVmYXVsdFNlc3Npb25SZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFcEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsb0JBQW9CO0lBRTdEOzs7O09BSUc7SUFDSCxnQkFBZ0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTFCOzs7O09BSUc7SUFDSCxhQUFhO1FBQ1QsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQzs7b0hBaEJRLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZVNlc3Npb25SZXRyaWV2ZXIgfSBmcm9tIFwiLi4vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlclwiO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF6aW9uZSBkaSBkZWZhdWx0IHBlciBsYSBjbGFzc2UgKipCYXNlU2Vzc2lvblJldHJpZXZlcioqXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0U2Vzc2lvblJldHJpZXZlciBleHRlbmRzIEJhc2VTZXNzaW9uUmV0cmlldmVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgdW4gSUQgc2Vzc2lvbmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gSUQgc2Vzc2lvbmVcclxuICAgICAqL1xyXG4gICAgZ2V0U2Vzc2lvbktleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBcIkRVTU1ZX1NFU1NJT05cIjtcclxuICAgIH1cclxufSJdfQ==
@@ -1,7 +1,15 @@
1
+ import * as i0 from '@angular/core';
1
2
  import { InjectionToken, Injectable, Optional, Inject, NgModule } from '@angular/core';
2
3
  import { forkJoin, of } from 'rxjs';
3
4
  import { map, concatMap, tap, first } from 'rxjs/operators';
4
5
 
6
+ /**
7
+ * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
8
+ *
9
+ * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
10
+ */
11
+ const PREF_FULL_RETRIEVE_AT_START = new InjectionToken('PREF_FULL_RETRIEVE_AT_START');
12
+
5
13
  /**
6
14
  * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
7
15
  */
@@ -33,13 +41,6 @@ class BasePreferencesPersistor {
33
41
  }
34
42
  }
35
43
 
36
- /**
37
- * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
38
- *
39
- * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
40
- */
41
- const PREF_FULL_RETRIEVE_AT_START = new InjectionToken('PREF_FULL_RETRIEVE_AT_START');
42
-
43
44
  // Angular
44
45
  /**
45
46
  * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate
@@ -116,13 +117,18 @@ class PreferencesService {
116
117
  }
117
118
  }
118
119
  }
119
- PreferencesService.decorators = [
120
- { type: Injectable }
121
- ];
122
- PreferencesService.ctorParameters = () => [
123
- { type: BasePreferencesPersistor },
124
- { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [PREF_FULL_RETRIEVE_AT_START,] }] }
125
- ];
120
+ PreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService, deps: [{ token: BasePreferencesPersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
121
+ PreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService });
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService, decorators: [{
123
+ type: Injectable
124
+ }], ctorParameters: function () {
125
+ return [{ type: BasePreferencesPersistor }, { type: undefined, decorators: [{
126
+ type: Optional
127
+ }, {
128
+ type: Inject,
129
+ args: [PREF_FULL_RETRIEVE_AT_START]
130
+ }] }];
131
+ } });
126
132
 
127
133
  /**
128
134
  * Classe di Configurazione per la libreria
@@ -169,12 +175,11 @@ class LocalStoragePersistor extends BasePreferencesPersistor {
169
175
  return of(true).pipe(first());
170
176
  }
171
177
  }
172
- LocalStoragePersistor.decorators = [
173
- { type: Injectable }
174
- ];
175
- LocalStoragePersistor.ctorParameters = () => [
176
- { type: BaseSessionRetriever }
177
- ];
178
+ LocalStoragePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
179
+ LocalStoragePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor });
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor, decorators: [{
181
+ type: Injectable
182
+ }], ctorParameters: function () { return [{ type: BaseSessionRetriever }]; } });
178
183
 
179
184
  /**
180
185
  * Implementazione di default per la classe **BaseSessionRetriever**
@@ -195,10 +200,11 @@ class DefaultSessionRetriever extends BaseSessionRetriever {
195
200
  return "DUMMY_SESSION";
196
201
  }
197
202
  }
198
- DefaultSessionRetriever.decorators = [
199
- { type: Injectable }
200
- ];
201
- DefaultSessionRetriever.ctorParameters = () => [];
203
+ DefaultSessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
204
+ DefaultSessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever });
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever, decorators: [{
206
+ type: Injectable
207
+ }], ctorParameters: function () { return []; } });
202
208
 
203
209
  class PreferencesModule {
204
210
  static forRoot(config) {
@@ -213,13 +219,16 @@ class PreferencesModule {
213
219
  };
214
220
  }
215
221
  }
216
- PreferencesModule.decorators = [
217
- { type: NgModule }
218
- ];
222
+ PreferencesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
223
+ PreferencesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule });
224
+ PreferencesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule });
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule, decorators: [{
226
+ type: NgModule
227
+ }] });
219
228
 
220
229
  /**
221
230
  * Generated bundle index. Do not edit.
222
231
  */
223
232
 
224
- export { BasePreferencesPersistor, BaseSessionRetriever, PREF_FULL_RETRIEVE_AT_START, PreferencesModule, PreferencesModuleConfig, PreferencesService, LocalStoragePersistor as ɵa, DefaultSessionRetriever as ɵb };
225
- //# sourceMappingURL=esfaenza-preferences.js.map
233
+ export { BasePreferencesPersistor, BaseSessionRetriever, PREF_FULL_RETRIEVE_AT_START, PreferencesModule, PreferencesModuleConfig, PreferencesService };
234
+ //# sourceMappingURL=esfaenza-preferences.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esfaenza-preferences.mjs","sources":["../../../projects/preferences/src/lib/tokens.ts","../../../projects/preferences/src/lib/persistor/base/BasePreferencesPersistor.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 { 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');","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 */\r\n public abstract persist<T>(key: string, item: T): 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 /** Ripulisce le preference salvate relative ad una sessione */\r\n public abstract clear(): 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 */\r\n public persistAll(dictionary: { [key: string]: string }): Observable<boolean> {\r\n let observables: Observable<boolean>[] = [];\r\n for (let key in dictionary)\r\n observables.push(this.persist(key, dictionary[key]));\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}","// Angular\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { concatMap, 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 * Indica se è la prima volta che viene effettuata un'operazione di retrieve. Appena effettuata questa variabile viene impostata a **false** e (in quanto singleton,\r\n * se configurato bene) mai più modificata\r\n */\r\n private FirstRetrieve: boolean = true;\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\r\n /**\r\n * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor\r\n */\r\n clear(): Observable<boolean> {\r\n this.LocalPreferences = {};\r\n return this.persistor.clear();\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 */\r\n store<T>(key: string, item: T): Observable<boolean> {\r\n this.LocalPreferences[key] = item;\r\n return this.persistor.persist(key, item);\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 ed in caso fosse il primo caricamento e l'impostazione \r\n * **retrieveAllAtStart** della classe di configurazione fosse **true** si occupa anche della prima valorizzazione della cache 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 retrieve<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n // Se è il primo retrieve e sono configurato per recuperare tutta la configurazione all'inizio\r\n // eseguo, altrimenti prendo l'oggetto se lo trovo e se non lo trovo lo carico prima in cache\r\n if (this.FirstRetrieve) {\r\n if (this.PREF_FULL_RETRIEVE_AT_START)\r\n return this.persistor.recoverAll().pipe(concatMap(res => {\r\n this.LocalPreferences = res;\r\n this.FirstRetrieve = false;\r\n return this.internalRetrieve<T>(key, cacheBust);\r\n }));\r\n }\r\n\r\n return this.internalRetrieve<T>(key, cacheBust);\r\n }\r\n\r\n /** @ignore Vedi **retrieve** */\r\n private internalRetrieve<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"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Injectable, Optional, Inject, NgModule } from '@angular/core';
3
+ import { forkJoin, of } from 'rxjs';
4
+ import { map, concatMap, tap, first } from 'rxjs/operators';
5
+
6
+ /**
7
+ * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
8
+ *
9
+ * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
10
+ */
11
+ const PREF_FULL_RETRIEVE_AT_START = new InjectionToken('PREF_FULL_RETRIEVE_AT_START');
12
+
13
+ /**
14
+ * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
15
+ */
16
+ class BasePreferencesPersistor {
17
+ /** @ignore Costruttore */
18
+ constructor(session) {
19
+ this.session = session;
20
+ }
21
+ /**
22
+ * Effettua il **persist** massivo di una lista di Chiave - Valore
23
+ *
24
+ * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
25
+ */
26
+ persistAll(dictionary) {
27
+ let observables = [];
28
+ for (let key in dictionary)
29
+ observables.push(this.persist(key, dictionary[key]));
30
+ return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));
31
+ }
32
+ /**
33
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
34
+ *
35
+ * @param {string} key Chiave da storicizzare
36
+ *
37
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
38
+ */
39
+ getKey(key) {
40
+ return this.session.getSessionKey() + "§" + key + "§";
41
+ }
42
+ }
43
+
44
+ // Angular
45
+ /**
46
+ * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate
47
+ */
48
+ class PreferencesService {
49
+ /**
50
+ * Costruttore
51
+ *
52
+ * @ignore
53
+ */
54
+ constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
55
+ this.persistor = persistor;
56
+ this.PREF_FULL_RETRIEVE_AT_START = PREF_FULL_RETRIEVE_AT_START;
57
+ /**
58
+ * Indica se è la prima volta che viene effettuata un'operazione di retrieve. Appena effettuata questa variabile viene impostata a **false** e (in quanto singleton,
59
+ * se configurato bene) mai più modificata
60
+ */
61
+ this.FirstRetrieve = true;
62
+ /**
63
+ * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**
64
+ */
65
+ this.LocalPreferences = {};
66
+ }
67
+ /**
68
+ * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
69
+ */
70
+ clear() {
71
+ this.LocalPreferences = {};
72
+ return this.persistor.clear();
73
+ }
74
+ /**
75
+ * Salva un oggetto sia nella cache locale che nel persistor
76
+ *
77
+ * @param {string} key Chiave di persistenza
78
+ * @param {T} item Oggetto da salvare
79
+ */
80
+ store(key, item) {
81
+ this.LocalPreferences[key] = item;
82
+ return this.persistor.persist(key, item);
83
+ }
84
+ /**
85
+ * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita ed in caso fosse il primo caricamento e l'impostazione
86
+ * **retrieveAllAtStart** della classe di configurazione fosse **true** si occupa anche della prima valorizzazione della cache locale
87
+ *
88
+ * @param {string} key Chiave del valore da recuperare
89
+ * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito,
90
+ * in caso fosse stato modificato fuori sistema o da un altro sistema
91
+ *
92
+ * @returns {T} Oggetto richiesto
93
+ */
94
+ retrieve(key, cacheBust = false) {
95
+ // Se è il primo retrieve e sono configurato per recuperare tutta la configurazione all'inizio
96
+ // eseguo, altrimenti prendo l'oggetto se lo trovo e se non lo trovo lo carico prima in cache
97
+ if (this.FirstRetrieve) {
98
+ if (this.PREF_FULL_RETRIEVE_AT_START)
99
+ return this.persistor.recoverAll().pipe(concatMap(res => {
100
+ this.LocalPreferences = res;
101
+ this.FirstRetrieve = false;
102
+ return this.internalRetrieve(key, cacheBust);
103
+ }));
104
+ }
105
+ return this.internalRetrieve(key, cacheBust);
106
+ }
107
+ /** @ignore Vedi **retrieve** */
108
+ internalRetrieve(key, cacheBust = false) {
109
+ if (this.LocalPreferences[key] && !cacheBust)
110
+ return of(this.LocalPreferences[key]);
111
+ else {
112
+ var obj = this.persistor.recover(key);
113
+ if (!obj)
114
+ return of(null);
115
+ obj.pipe(tap(item => { this.LocalPreferences[key] = item; }));
116
+ return obj;
117
+ }
118
+ }
119
+ }
120
+ PreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService, deps: [{ token: BasePreferencesPersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
121
+ PreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService });
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesService, decorators: [{
123
+ type: Injectable
124
+ }], ctorParameters: function () { return [{ type: BasePreferencesPersistor }, { type: undefined, decorators: [{
125
+ type: Optional
126
+ }, {
127
+ type: Inject,
128
+ args: [PREF_FULL_RETRIEVE_AT_START]
129
+ }] }]; } });
130
+
131
+ /**
132
+ * Classe di Configurazione per la libreria
133
+ */
134
+ class PreferencesModuleConfig {
135
+ }
136
+
137
+ /**
138
+ * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
139
+ */
140
+ class BaseSessionRetriever {
141
+ }
142
+
143
+ // Angular
144
+ /** Implementazione di default per la classe **BasePreferencesPersistor** */
145
+ class LocalStoragePersistor extends BasePreferencesPersistor {
146
+ /** @ignore Costruttore */
147
+ constructor(session) { super(session); }
148
+ /** @ignore Vedi classe base */
149
+ persist(key, item) {
150
+ localStorage.setItem(this.getKey(key), JSON.stringify(item));
151
+ return of(true).pipe(first());
152
+ }
153
+ /** @ignore Vedi classe base */
154
+ recover(key) {
155
+ var ret = JSON.parse(localStorage.getItem(this.getKey(key)));
156
+ return of(ret).pipe(first());
157
+ }
158
+ /** @ignore Vedi classe base */
159
+ recoverAll() {
160
+ var ret = {};
161
+ for (var k in localStorage) {
162
+ if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
163
+ ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));
164
+ }
165
+ return of(ret).pipe(first());
166
+ }
167
+ /** @ignore Vedi classe base */
168
+ clear() {
169
+ for (var k in localStorage) {
170
+ if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
171
+ localStorage.removeItem(k);
172
+ }
173
+ return of(true).pipe(first());
174
+ }
175
+ }
176
+ LocalStoragePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
177
+ LocalStoragePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor });
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LocalStoragePersistor, decorators: [{
179
+ type: Injectable
180
+ }], ctorParameters: function () { return [{ type: BaseSessionRetriever }]; } });
181
+
182
+ /**
183
+ * Implementazione di default per la classe **BaseSessionRetriever**
184
+ */
185
+ class DefaultSessionRetriever extends BaseSessionRetriever {
186
+ /**
187
+ * Costruttore
188
+ *
189
+ * @ignore
190
+ */
191
+ constructor() { super(); }
192
+ /**
193
+ * Ottiene un ID sessione
194
+ *
195
+ * @returns {string} ID sessione
196
+ */
197
+ getSessionKey() {
198
+ return "DUMMY_SESSION";
199
+ }
200
+ }
201
+ DefaultSessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
202
+ DefaultSessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever });
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DefaultSessionRetriever, decorators: [{
204
+ type: Injectable
205
+ }], ctorParameters: function () { return []; } });
206
+
207
+ class PreferencesModule {
208
+ static forRoot(config) {
209
+ return {
210
+ ngModule: PreferencesModule,
211
+ providers: [
212
+ PreferencesService,
213
+ { provide: BasePreferencesPersistor, useClass: config?.preferencePersistor || LocalStoragePersistor },
214
+ { provide: BaseSessionRetriever, useClass: config?.sessionRetriever || DefaultSessionRetriever },
215
+ { provide: PREF_FULL_RETRIEVE_AT_START, useValue: config?.retrieveAllAtStart || true }
216
+ ]
217
+ };
218
+ }
219
+ }
220
+ PreferencesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
221
+ PreferencesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule });
222
+ PreferencesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule });
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PreferencesModule, decorators: [{
224
+ type: NgModule
225
+ }] });
226
+
227
+ /**
228
+ * Generated bundle index. Do not edit.
229
+ */
230
+
231
+ export { BasePreferencesPersistor, BaseSessionRetriever, PREF_FULL_RETRIEVE_AT_START, PreferencesModule, PreferencesModuleConfig, PreferencesService };
232
+ //# sourceMappingURL=esfaenza-preferences.mjs.map