@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.
- package/esfaenza-preferences.d.ts +1 -2
- package/esm2020/esfaenza-preferences.mjs +5 -0
- package/{esm2015/lib/models/PreferencesModuleConfig.js → esm2020/lib/models/PreferencesModuleConfig.mjs} +0 -0
- package/{esm2015/lib/persistor/base/BasePreferencesPersistor.js → esm2020/lib/persistor/base/BasePreferencesPersistor.mjs} +0 -0
- package/esm2020/lib/persistor/implementation/LocalStoragePersistor.mjs +47 -0
- package/esm2020/lib/preferences.module.mjs +28 -0
- package/esm2020/lib/preferences.service.mjs +93 -0
- package/{esm2015/lib/session/base/BaseSessionRetriever.js → esm2020/lib/session/base/BaseSessionRetriever.mjs} +0 -0
- package/esm2020/lib/session/implementation/DefaultSessionRetriever.mjs +28 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{esfaenza-preferences.js → esfaenza-preferences.mjs} +38 -29
- package/fesm2015/esfaenza-preferences.mjs.map +1 -0
- package/fesm2020/esfaenza-preferences.mjs +232 -0
- package/fesm2020/esfaenza-preferences.mjs.map +1 -0
- package/lib/persistor/implementation/LocalStoragePersistor.d.ts +3 -0
- package/lib/preferences.module.d.ts +4 -0
- package/lib/preferences.service.d.ts +3 -0
- package/lib/session/implementation/DefaultSessionRetriever.d.ts +3 -0
- package/package.json +21 -9
- package/bundles/esfaenza-preferences.umd.js +0 -572
- package/bundles/esfaenza-preferences.umd.js.map +0 -1
- package/esfaenza-preferences.metadata.json +0 -1
- package/esm2015/esfaenza-preferences.js +0 -7
- package/esm2015/lib/persistor/implementation/LocalStoragePersistor.js +0 -47
- package/esm2015/lib/preferences.module.js +0 -24
- package/esm2015/lib/preferences.service.js +0 -90
- package/esm2015/lib/session/implementation/DefaultSessionRetriever.js +0 -26
- 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==
|
|
File without changes
|
|
File without changes
|
|
@@ -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==
|
|
File without changes
|
|
@@ -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==
|
|
File without changes
|
|
File without changes
|
|
@@ -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
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
|
217
|
-
|
|
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
|
|
225
|
-
//# sourceMappingURL=esfaenza-preferences.
|
|
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
|