@esfaenza/preferences 13.3.2 → 14.2.0
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/esm2020/lib/models/PreferencesModuleConfig.mjs +1 -1
- package/esm2020/lib/persistor/base/CachePersistor.mjs +31 -0
- package/esm2020/lib/persistor/base/IBasePersistor.mjs +2 -0
- package/esm2020/lib/persistor/base/PreferencesPersistor.mjs +33 -0
- package/esm2020/lib/persistor/implementation/LocalStorageCachePersistor.mjs +51 -0
- package/esm2020/lib/persistor/implementation/LocalStoragePreferencesPersistor.mjs +51 -0
- package/esm2020/lib/preferences.module.mjs +14 -9
- package/esm2020/lib/services/base/IBaseStorage.mjs +2 -0
- package/esm2020/lib/services/base/base.service.mjs +119 -0
- package/esm2020/lib/services/cache.service.mjs +25 -0
- package/esm2020/lib/services/preferences.service.mjs +25 -0
- package/esm2020/lib/session/implementation/DefaultSessionRetriever.mjs +4 -4
- package/esm2020/public-api.mjs +5 -3
- package/fesm2015/esfaenza-preferences.mjs +208 -126
- package/fesm2015/esfaenza-preferences.mjs.map +1 -1
- package/fesm2020/esfaenza-preferences.mjs +206 -126
- package/fesm2020/esfaenza-preferences.mjs.map +1 -1
- package/{esfaenza-preferences.d.ts → index.d.ts} +0 -0
- package/lib/models/PreferencesModuleConfig.d.ts +8 -2
- package/lib/persistor/base/CachePersistor.d.ts +57 -0
- package/lib/persistor/base/IBasePersistor.d.ts +17 -0
- package/lib/persistor/base/{BasePreferencesPersistor.d.ts → PreferencesPersistor.d.ts} +7 -10
- package/lib/persistor/implementation/{LocalStoragePersistor.d.ts → LocalStorageCachePersistor.d.ts} +5 -6
- package/lib/persistor/implementation/LocalStoragePreferencesPersistor.d.ts +22 -0
- package/lib/services/base/IBaseStorage.d.ts +9 -0
- package/lib/{preferences.service.d.ts → services/base/base.service.d.ts} +11 -22
- package/lib/services/cache.service.d.ts +10 -0
- package/lib/services/preferences.service.d.ts +10 -0
- package/package.json +3 -3
- package/public-api.d.ts +4 -2
- package/esm2020/lib/persistor/base/BasePreferencesPersistor.mjs +0 -34
- package/esm2020/lib/persistor/implementation/LocalStoragePersistor.mjs +0 -52
- package/esm2020/lib/preferences.service.mjs +0 -150
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { InjectionToken, Optional, Inject, Injectable, NgModule } from '@angular/core';
|
|
3
|
+
import { __decorate, __param } from 'tslib';
|
|
4
|
+
import { of, forkJoin } from 'rxjs';
|
|
5
|
+
import { take, tap, map, first } from 'rxjs/operators';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
|
|
@@ -10,43 +11,10 @@ import { map, take, tap, first } from 'rxjs/operators';
|
|
|
10
11
|
*/
|
|
11
12
|
const PREF_FULL_RETRIEVE_AT_START = new InjectionToken('PREF_FULL_RETRIEVE_AT_START');
|
|
12
13
|
|
|
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
|
-
* @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
|
|
26
|
-
*/
|
|
27
|
-
persistAll(dictionary, storeLevel) {
|
|
28
|
-
let observables = [];
|
|
29
|
-
for (let key in dictionary)
|
|
30
|
-
observables.push(this.persist(key, dictionary[key], storeLevel));
|
|
31
|
-
return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
|
|
35
|
-
*
|
|
36
|
-
* @param {string} key Chiave da storicizzare
|
|
37
|
-
*
|
|
38
|
-
* @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
|
|
39
|
-
*/
|
|
40
|
-
getKey(key) {
|
|
41
|
-
return this.session.getSessionKey() + "§" + key + "§";
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Angular
|
|
46
14
|
/**
|
|
47
15
|
* Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate
|
|
48
16
|
*/
|
|
49
|
-
class
|
|
17
|
+
let BaseService = class BaseService {
|
|
50
18
|
/**
|
|
51
19
|
* Costruttore
|
|
52
20
|
*
|
|
@@ -55,28 +23,12 @@ class PreferencesService {
|
|
|
55
23
|
constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
|
|
56
24
|
this.persistor = persistor;
|
|
57
25
|
this.PREF_FULL_RETRIEVE_AT_START = PREF_FULL_RETRIEVE_AT_START;
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
*/
|
|
61
|
-
this.LocalPreferences = {};
|
|
62
|
-
/**
|
|
63
|
-
* Indica le chiavi contenute in **LocalPreferences** di che tipo sono in modo da ripulire correttamente sulla clear
|
|
64
|
-
*/
|
|
65
|
-
this.LocalPreferenceType = {};
|
|
26
|
+
/** Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor** */
|
|
27
|
+
this.LocalStore = {};
|
|
66
28
|
if (this.PREF_FULL_RETRIEVE_AT_START) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.persistor.recoverAll('preference').pipe(take(1))
|
|
71
|
-
]).subscribe((res) => {
|
|
72
|
-
for (let cProp in res[0]) {
|
|
73
|
-
this.LocalPreferences[cProp] = res[0][cProp];
|
|
74
|
-
this.LocalPreferenceType[cProp] = 'cache';
|
|
75
|
-
}
|
|
76
|
-
for (let pProp in res[1]) {
|
|
77
|
-
this.LocalPreferences[pProp] = res[0][pProp];
|
|
78
|
-
this.LocalPreferenceType[pProp] = 'preference';
|
|
79
|
-
}
|
|
29
|
+
this.persistor.recoverAll().pipe(take(1)).subscribe(t => {
|
|
30
|
+
for (let cProp in t)
|
|
31
|
+
this.LocalStore[cProp] = t[cProp];
|
|
80
32
|
});
|
|
81
33
|
}
|
|
82
34
|
}
|
|
@@ -85,22 +37,22 @@ class PreferencesService {
|
|
|
85
37
|
*
|
|
86
38
|
* @param {string} key Chiave di persistenza
|
|
87
39
|
* @param {T} item Oggetto da salvare
|
|
88
|
-
* @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
|
|
89
40
|
*/
|
|
90
|
-
setItem(key, item
|
|
91
|
-
this.setLocalItem(key, item
|
|
92
|
-
return this.persist(key, item
|
|
41
|
+
setItem(key, item) {
|
|
42
|
+
this.setLocalItem(key, item);
|
|
43
|
+
return this.persist(key, item);
|
|
93
44
|
}
|
|
94
45
|
/**
|
|
95
46
|
* Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
|
|
96
47
|
*
|
|
97
48
|
* @param {string} key Chiave di persistenza
|
|
98
49
|
* @param {T} item Oggetto da salvare
|
|
99
|
-
* @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
|
|
100
50
|
*/
|
|
101
|
-
setLocalItem(key, item
|
|
102
|
-
|
|
103
|
-
|
|
51
|
+
setLocalItem(key, item) {
|
|
52
|
+
let detatched = JSON.parse(JSON.stringify(item));
|
|
53
|
+
if (detatched.selfsearch)
|
|
54
|
+
detatched.selfsearch = false;
|
|
55
|
+
this.LocalStore[key] = detatched;
|
|
104
56
|
return true;
|
|
105
57
|
}
|
|
106
58
|
/**
|
|
@@ -108,10 +60,9 @@ class PreferencesService {
|
|
|
108
60
|
* nel caso si utilizzi il metodo **storeLocal**
|
|
109
61
|
*
|
|
110
62
|
* @param {string} key Chiave da storicizzare
|
|
111
|
-
* @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente
|
|
112
63
|
*/
|
|
113
|
-
persist(key, item
|
|
114
|
-
return this.persistor.persist(key, item
|
|
64
|
+
persist(key, item) {
|
|
65
|
+
return this.persistor.persist(key, item);
|
|
115
66
|
}
|
|
116
67
|
/**
|
|
117
68
|
* Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita.
|
|
@@ -123,13 +74,13 @@ class PreferencesService {
|
|
|
123
74
|
* @returns {T} Oggetto richiesto
|
|
124
75
|
*/
|
|
125
76
|
getItem(key, cacheBust = false) {
|
|
126
|
-
if (this.
|
|
127
|
-
return of(this.
|
|
77
|
+
if (this.LocalStore[key] && !cacheBust)
|
|
78
|
+
return of(this.LocalStore[key]);
|
|
128
79
|
else {
|
|
129
80
|
var obj = this.persistor.recover(key);
|
|
130
81
|
if (!obj)
|
|
131
82
|
return of(null);
|
|
132
|
-
obj.pipe(tap(item => { this.
|
|
83
|
+
obj.pipe(tap(item => { this.LocalStore[key] = item; }));
|
|
133
84
|
return obj;
|
|
134
85
|
}
|
|
135
86
|
}
|
|
@@ -141,8 +92,8 @@ class PreferencesService {
|
|
|
141
92
|
* @returns {T} Oggetto richiesto
|
|
142
93
|
*/
|
|
143
94
|
getLocalItem(key) {
|
|
144
|
-
if (this.
|
|
145
|
-
return this.
|
|
95
|
+
if (this.LocalStore[key])
|
|
96
|
+
return this.LocalStore[key];
|
|
146
97
|
else
|
|
147
98
|
return null;
|
|
148
99
|
}
|
|
@@ -152,35 +103,120 @@ class PreferencesService {
|
|
|
152
103
|
* @param {string} key Chiave da rimuovere
|
|
153
104
|
*/
|
|
154
105
|
removeItem(key) {
|
|
155
|
-
if (this.
|
|
156
|
-
delete this.
|
|
157
|
-
delete this.LocalPreferenceType[key];
|
|
158
|
-
}
|
|
106
|
+
if (this.LocalStore[key])
|
|
107
|
+
delete this.LocalStore[key];
|
|
159
108
|
return this.persistor.remove(key);
|
|
160
109
|
}
|
|
161
110
|
/**
|
|
162
111
|
* Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
|
|
163
|
-
*
|
|
164
|
-
* @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente
|
|
165
112
|
*/
|
|
166
|
-
clear(
|
|
113
|
+
clear() {
|
|
167
114
|
// Pulisco la cache locale
|
|
168
|
-
|
|
169
|
-
if (this.LocalPreferenceType[prop] == storeLevel) {
|
|
170
|
-
delete this.LocalPreferenceType[prop];
|
|
171
|
-
delete this.LocalPreferences[prop];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
115
|
+
this.LocalStore = {};
|
|
174
116
|
// "Committo" le modifiche
|
|
175
|
-
return this.persistor.clear(
|
|
117
|
+
return this.persistor.clear();
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
BaseService = __decorate([
|
|
121
|
+
__param(1, Optional()),
|
|
122
|
+
__param(1, Inject(PREF_FULL_RETRIEVE_AT_START))
|
|
123
|
+
], BaseService);
|
|
124
|
+
|
|
125
|
+
/** Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage */
|
|
126
|
+
class CachePersistor {
|
|
127
|
+
/** @ignore Costruttore */
|
|
128
|
+
constructor(session) {
|
|
129
|
+
this.session = session;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Effettua il **persist** massivo di una lista di Chiave - Valore
|
|
133
|
+
*
|
|
134
|
+
* @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
|
|
135
|
+
*/
|
|
136
|
+
persistAll(dictionary) {
|
|
137
|
+
let observables = [];
|
|
138
|
+
for (let key in dictionary)
|
|
139
|
+
observables.push(this.persist(key, dictionary[key]));
|
|
140
|
+
return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
|
|
144
|
+
*
|
|
145
|
+
* @param {string} key Chiave da storicizzare
|
|
146
|
+
*
|
|
147
|
+
* @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
|
|
148
|
+
*/
|
|
149
|
+
getKey(key) {
|
|
150
|
+
return this.session.getSessionKey() + "§" + key + "§";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Angular
|
|
155
|
+
/** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */
|
|
156
|
+
class CacheService extends BaseService {
|
|
157
|
+
/** @ignore Costruttore */
|
|
158
|
+
constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
|
|
159
|
+
super(persistor, PREF_FULL_RETRIEVE_AT_START);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
CacheService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CacheService, deps: [{ token: CachePersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
163
|
+
CacheService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CacheService });
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CacheService, decorators: [{
|
|
165
|
+
type: Injectable
|
|
166
|
+
}], ctorParameters: function () {
|
|
167
|
+
return [{ type: CachePersistor }, { type: undefined, decorators: [{
|
|
168
|
+
type: Optional
|
|
169
|
+
}, {
|
|
170
|
+
type: Inject,
|
|
171
|
+
args: [PREF_FULL_RETRIEVE_AT_START]
|
|
172
|
+
}] }];
|
|
173
|
+
} });
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
|
|
177
|
+
*/
|
|
178
|
+
class PreferencesPersistor {
|
|
179
|
+
/** @ignore Costruttore */
|
|
180
|
+
constructor(session) {
|
|
181
|
+
this.session = session;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Effettua il **persist** massivo di una lista di Chiave - Valore
|
|
185
|
+
*
|
|
186
|
+
* @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
|
|
187
|
+
*/
|
|
188
|
+
persistAll(dictionary) {
|
|
189
|
+
let observables = [];
|
|
190
|
+
for (let key in dictionary)
|
|
191
|
+
observables.push(this.persist(key, dictionary[key]));
|
|
192
|
+
return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
|
|
196
|
+
*
|
|
197
|
+
* @param {string} key Chiave da storicizzare
|
|
198
|
+
*
|
|
199
|
+
* @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
|
|
200
|
+
*/
|
|
201
|
+
getKey(key) {
|
|
202
|
+
return this.session.getSessionKey() + "§" + key + "§";
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Angular
|
|
207
|
+
/** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */
|
|
208
|
+
class PreferencesService extends BaseService {
|
|
209
|
+
/** @ignore Costruttore */
|
|
210
|
+
constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
|
|
211
|
+
super(persistor, PREF_FULL_RETRIEVE_AT_START);
|
|
176
212
|
}
|
|
177
213
|
}
|
|
178
|
-
PreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
179
|
-
PreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
214
|
+
PreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PreferencesService, deps: [{ token: PreferencesPersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
215
|
+
PreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PreferencesService });
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PreferencesService, decorators: [{
|
|
181
217
|
type: Injectable
|
|
182
218
|
}], ctorParameters: function () {
|
|
183
|
-
return [{ type:
|
|
219
|
+
return [{ type: PreferencesPersistor }, { type: undefined, decorators: [{
|
|
184
220
|
type: Optional
|
|
185
221
|
}, {
|
|
186
222
|
type: Inject,
|
|
@@ -200,11 +236,36 @@ class PreferencesModuleConfig {
|
|
|
200
236
|
class BaseSessionRetriever {
|
|
201
237
|
}
|
|
202
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Implementazione di default per la classe **BaseSessionRetriever**
|
|
241
|
+
*/
|
|
242
|
+
class DefaultSessionRetriever extends BaseSessionRetriever {
|
|
243
|
+
/**
|
|
244
|
+
* Costruttore
|
|
245
|
+
*
|
|
246
|
+
* @ignore
|
|
247
|
+
*/
|
|
248
|
+
constructor() { super(); }
|
|
249
|
+
/**
|
|
250
|
+
* Ottiene un ID sessione
|
|
251
|
+
*
|
|
252
|
+
* @returns {string} ID sessione
|
|
253
|
+
*/
|
|
254
|
+
getSessionKey() {
|
|
255
|
+
return "DUMMY_SESSION";
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
DefaultSessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DefaultSessionRetriever, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
259
|
+
DefaultSessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DefaultSessionRetriever });
|
|
260
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DefaultSessionRetriever, decorators: [{
|
|
261
|
+
type: Injectable
|
|
262
|
+
}], ctorParameters: function () { return []; } });
|
|
263
|
+
|
|
203
264
|
// Angular
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
265
|
+
class LocalStorageCachePersistor extends CachePersistor {
|
|
266
|
+
constructor(session) {
|
|
267
|
+
super(session);
|
|
268
|
+
}
|
|
208
269
|
/** @ignore Vedi classe base */
|
|
209
270
|
persist(key, item) {
|
|
210
271
|
localStorage.setItem(this.getKey(key), JSON.stringify(item));
|
|
@@ -238,54 +299,75 @@ class LocalStoragePersistor extends BasePreferencesPersistor {
|
|
|
238
299
|
return of(true).pipe(first());
|
|
239
300
|
}
|
|
240
301
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
302
|
+
LocalStorageCachePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalStorageCachePersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
303
|
+
LocalStorageCachePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalStorageCachePersistor });
|
|
304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalStorageCachePersistor, decorators: [{
|
|
244
305
|
type: Injectable
|
|
245
306
|
}], ctorParameters: function () { return [{ type: BaseSessionRetriever }]; } });
|
|
246
307
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
308
|
+
// Angular
|
|
309
|
+
class LocalStoragePreferencesPersistor extends PreferencesPersistor {
|
|
310
|
+
constructor(session) {
|
|
311
|
+
super(session);
|
|
312
|
+
}
|
|
313
|
+
/** @ignore Vedi classe base */
|
|
314
|
+
persist(key, item) {
|
|
315
|
+
localStorage.setItem(this.getKey(key), JSON.stringify(item));
|
|
316
|
+
return of(true).pipe(first());
|
|
317
|
+
}
|
|
318
|
+
/** @ignore Vedi classe base */
|
|
319
|
+
recover(key) {
|
|
320
|
+
var ret = JSON.parse(localStorage.getItem(this.getKey(key)));
|
|
321
|
+
return of(ret).pipe(first());
|
|
322
|
+
}
|
|
323
|
+
/** @ignore Vedi classe base */
|
|
324
|
+
remove(key) {
|
|
325
|
+
var ret = localStorage.removeItem(this.getKey(key));
|
|
326
|
+
return of(true).pipe(first());
|
|
327
|
+
}
|
|
328
|
+
/** @ignore Vedi classe base */
|
|
329
|
+
recoverAll() {
|
|
330
|
+
var ret = {};
|
|
331
|
+
for (var k in localStorage) {
|
|
332
|
+
if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
|
|
333
|
+
ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));
|
|
334
|
+
}
|
|
335
|
+
return of(ret).pipe(first());
|
|
336
|
+
}
|
|
337
|
+
/** @ignore Vedi classe base */
|
|
338
|
+
clear() {
|
|
339
|
+
for (var k in localStorage) {
|
|
340
|
+
if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
|
|
341
|
+
localStorage.removeItem(k);
|
|
342
|
+
}
|
|
343
|
+
return of(true).pipe(first());
|
|
264
344
|
}
|
|
265
345
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
346
|
+
LocalStoragePreferencesPersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalStoragePreferencesPersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
347
|
+
LocalStoragePreferencesPersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalStoragePreferencesPersistor });
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalStoragePreferencesPersistor, decorators: [{
|
|
269
349
|
type: Injectable
|
|
270
|
-
}], ctorParameters: function () { return []; } });
|
|
350
|
+
}], ctorParameters: function () { return [{ type: BaseSessionRetriever }]; } });
|
|
271
351
|
|
|
272
352
|
class PreferencesModule {
|
|
273
353
|
static forRoot(config) {
|
|
274
354
|
return {
|
|
275
355
|
ngModule: PreferencesModule,
|
|
276
356
|
providers: [
|
|
357
|
+
CacheService,
|
|
277
358
|
PreferencesService,
|
|
278
|
-
{ provide:
|
|
359
|
+
{ provide: PreferencesPersistor, useClass: (config === null || config === void 0 ? void 0 : config.preferencePersistor) || LocalStoragePreferencesPersistor },
|
|
360
|
+
{ provide: CachePersistor, useClass: (config === null || config === void 0 ? void 0 : config.cachePersistor) || LocalStorageCachePersistor },
|
|
279
361
|
{ provide: BaseSessionRetriever, useClass: (config === null || config === void 0 ? void 0 : config.sessionRetriever) || DefaultSessionRetriever },
|
|
280
362
|
{ provide: PREF_FULL_RETRIEVE_AT_START, useValue: (config === null || config === void 0 ? void 0 : config.retrieveAllAtStart) || true }
|
|
281
363
|
]
|
|
282
364
|
};
|
|
283
365
|
}
|
|
284
366
|
}
|
|
285
|
-
PreferencesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
286
|
-
PreferencesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
287
|
-
PreferencesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
367
|
+
PreferencesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PreferencesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
368
|
+
PreferencesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: PreferencesModule });
|
|
369
|
+
PreferencesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PreferencesModule });
|
|
370
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PreferencesModule, decorators: [{
|
|
289
371
|
type: NgModule
|
|
290
372
|
}] });
|
|
291
373
|
|
|
@@ -293,5 +375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
293
375
|
* Generated bundle index. Do not edit.
|
|
294
376
|
*/
|
|
295
377
|
|
|
296
|
-
export {
|
|
378
|
+
export { BaseSessionRetriever, CachePersistor, CacheService, PREF_FULL_RETRIEVE_AT_START, PreferencesModule, PreferencesModuleConfig, PreferencesPersistor, PreferencesService };
|
|
297
379
|
//# sourceMappingURL=esfaenza-preferences.mjs.map
|
|
@@ -1 +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 * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public abstract persist<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean>;\r\n\r\n /**\r\n * Recupera, per una sessione, il valore assegnato ad una chiave\r\n * \r\n * @param {string} key Chiave da recuperare\r\n * \r\n * @returns {Observable<T>} Valore salvato per la chiave **key**\r\n */\r\n public abstract recover<T>(key?: string): Observable<T>;\r\n\r\n /**\r\n * Per una sessione recupera tutte le coppie Chiave - Valore salvate\r\n * \r\n * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public abstract recoverAll(storeLevel: 'cache' | 'preference'): Observable<{ [index: string]: any }>;\r\n\r\n /**\r\n * Ripulisce le preference salvate relative ad una sessione\r\n * @param {'cache' | 'preference' | 'all'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente\r\n */\r\n public abstract clear(storeLevel: 'cache' | 'preference' | 'all'): Observable<boolean>;\r\n\r\n /**\r\n * Elimina un oggetto dalla cache persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public abstract remove(key: string): Observable<boolean>;\r\n\r\n /**\r\n * Effettua il **persist** massivo di una lista di Chiave - Valore\r\n * \r\n * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public persistAll(dictionary: { [key: string]: string }, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n let observables: Observable<boolean>[] = [];\r\n for (let key in dictionary)\r\n observables.push(this.persist(key, dictionary[key], storeLevel));\r\n\r\n return forkJoin(observables).pipe(map(res => res.reduce((acc, val) => acc && val, true)));\r\n }\r\n\r\n /**\r\n * Ottiene la chiave \"Reale\" da utilizzare per la persistenza di una chiave generica\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * \r\n * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata\r\n */\r\n protected getKey(key: string): string {\r\n return this.session.getSessionKey() + \"§\" + key + \"§\";\r\n }\r\n}","// Angular\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { take, tap } from 'rxjs/operators';\r\n\r\n// Modelli\r\nimport { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';\r\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\r\n\r\n/**\r\n * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate\r\n */\r\n@Injectable()\r\nexport class PreferencesService {\r\n\r\n /**\r\n * Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor**\r\n */\r\n private LocalPreferences: { [index: string]: any } = {};\r\n\r\n /**\r\n * Indica le chiavi contenute in **LocalPreferences** di che tipo sono in modo da ripulire correttamente sulla clear\r\n */\r\n private LocalPreferenceType: { [index: string]: 'cache' | 'preference' } = {};\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private persistor: BasePreferencesPersistor, @Optional() @Inject(PREF_FULL_RETRIEVE_AT_START) private PREF_FULL_RETRIEVE_AT_START: boolean) {\r\n if (this.PREF_FULL_RETRIEVE_AT_START) {\r\n // Recupero tutti gli oggetti differenziando anche lato locale fra cache e preferences\r\n forkJoin([\r\n this.persistor.recoverAll('cache').pipe(take(1)),\r\n this.persistor.recoverAll('preference').pipe(take(1))\r\n ]).subscribe((res: [{ [index: string]: any }, { [index: string]: any }]) => {\r\n\r\n for (let cProp in res[0]) {\r\n this.LocalPreferences[cProp] = res[0][cProp];\r\n this.LocalPreferenceType[cProp] = 'cache';\r\n }\r\n for (let pProp in res[1]) {\r\n this.LocalPreferences[pProp] = res[0][pProp];\r\n this.LocalPreferenceType[pProp] = 'preference';\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Salva un oggetto sia nella cache locale che nel persistor\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public setItem<T>(key: string, item: T, storeLevel: 'cache' | 'preference' = 'cache'): Observable<boolean> {\r\n this.setLocalItem(key, item, storeLevel)\r\n return this.persist(key, item, storeLevel);\r\n }\r\n\r\n /**\r\n * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n public setLocalItem<T>(key: string, item: T, storeLevel: 'cache' | 'preference' = 'cache'): boolean {\r\n this.LocalPreferences[key] = item;\r\n this.LocalPreferenceType[key] = storeLevel;\r\n return true;\r\n }\r\n\r\n /**\r\n * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente\r\n * nel caso si utilizzi il metodo **storeLocal**\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n * @param {'cache' | 'preference'} storeLevel Livello a cui storicizzare l'oggetto. Utilizzare **cache** per cose salvate dall'applicazione, utilizzare **preference** per cose salvate dall'utente\r\n */\r\n private persist<T>(key: string, item: T, storeLevel: 'cache' | 'preference'): Observable<boolean> {\r\n return this.persistor.persist(key, item, storeLevel);\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita.\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito, \r\n * in caso fosse stato modificato fuori sistema o da un altro sistema\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n public getItem<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n if (this.LocalPreferences[key] && !cacheBust)\r\n return of(<T>this.LocalPreferences[key]);\r\n else {\r\n var obj = this.persistor.recover<T>(key);\r\n if (!obj)\r\n return of(null);\r\n obj.pipe(tap(item => { this.LocalPreferences[key] = item; }))\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n public getLocalItem<T>(key: string): T {\r\n if (this.LocalPreferences[key])\r\n return <T>this.LocalPreferences[key];\r\n else\r\n return null;\r\n }\r\n\r\n /**\r\n * Elimina un oggetto dalla cache sia locale che persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public removeItem(key: string): Observable<boolean> {\r\n if (this.LocalPreferences[key]) {\r\n delete this.LocalPreferences[key];\r\n delete this.LocalPreferenceType[key];\r\n }\r\n\r\n return this.persistor.remove(key);\r\n }\r\n\r\n /**\r\n * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor\r\n * \r\n * @param {'cache' | 'preference'} storeLevel Livello a cui ripulire la cache. Utilizzare **cache** per cancellare cose salvate dall'applicazione, utilizzare **preference** per cancellare cose salvate dall'utente\r\n */\r\n public clear(storeLevel: 'cache' | 'preference' | 'all'): Observable<boolean> {\r\n // Pulisco la cache locale\r\n for (let prop in this.LocalPreferenceType) {\r\n if (this.LocalPreferenceType[prop] == storeLevel) {\r\n delete this.LocalPreferenceType[prop];\r\n delete this.LocalPreferences[prop];\r\n }\r\n }\r\n // \"Committo\" le modifiche\r\n return this.persistor.clear(storeLevel);\r\n }\r\n}","import { Type } from \"@angular/core\";\r\nimport { BasePreferencesPersistor } from \"../persistor/base/BasePreferencesPersistor\";\r\nimport { BaseSessionRetriever } from \"../session/base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Classe di Configurazione per la libreria\r\n */\r\nexport class PreferencesModuleConfig{\r\n\r\n /**\r\n * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.\r\n * \r\n * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte\r\n */\r\n retrieveAllAtStart?: boolean;\r\n\r\n /**\r\n * Classe che si deve occupare dello store \"Definitivo\" delle preferenze. Di default viene proposto uno store lato localStorage ma si può facilmente \r\n * fornire uno storage che porta le informazioni lato Database\r\n */\r\n preferencePersistor?: Type<BasePreferencesPersistor>;\r\n\r\n /**\r\n * Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze\r\n */\r\n sessionRetriever?: Type<BaseSessionRetriever>;\r\n}","/**\r\n * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato\r\n */\r\nexport abstract class BaseSessionRetriever {\r\n\r\n /**\r\n * Ottiene un ID sessione\r\n * \r\n * @returns {string} ID sessione\r\n */\r\n public abstract getSessionKey(): string;\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Classi\r\nimport { BasePreferencesPersistor } from \"../base/BasePreferencesPersistor\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\n\r\n// RXJS\r\nimport { Observable, of } from \"rxjs\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\n/** Implementazione di default per la classe **BasePreferencesPersistor** */\r\n@Injectable()\r\nexport class LocalStoragePersistor extends BasePreferencesPersistor {\r\n\r\n /** @ignore Costruttore */\r\n constructor(session: BaseSessionRetriever) { super(session); }\r\n\r\n /** @ignore Vedi classe base */\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n localStorage.setItem(this.getKey(key), JSON.stringify(item));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recover<T>(key: string): Observable<T> {\r\n var ret = <T>JSON.parse(localStorage.getItem(this.getKey(key)));\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public remove(key: string): Observable<boolean> {\r\n var ret = localStorage.removeItem(this.getKey(key));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n var ret: { [index: string]: string; } = {};\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));\r\n }\r\n\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public clear(): Observable<boolean> {\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n localStorage.removeItem(k);\r\n }\r\n return of(true).pipe(first());\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { BaseSessionRetriever } from \"../base/BaseSessionRetriever\";\r\n\r\n/**\r\n * Implementazione di default per la classe **BaseSessionRetriever**\r\n */\r\n@Injectable()\r\nexport class DefaultSessionRetriever extends BaseSessionRetriever {\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor() { super(); }\r\n\r\n /**\r\n * Ottiene un ID sessione\r\n * \r\n * @returns {string} ID sessione\r\n */\r\n getSessionKey(): string {\r\n return \"DUMMY_SESSION\";\r\n }\r\n}","// Angular\nimport { ModuleWithProviders } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\n// Modelli\nimport { PreferencesModuleConfig } from './models/PreferencesModuleConfig';\nimport { BasePreferencesPersistor } from './persistor/base/BasePreferencesPersistor';\nimport { LocalStoragePersistor } from './persistor/implementation/LocalStoragePersistor';\nimport { BaseSessionRetriever } from './session/base/BaseSessionRetriever';\nimport { DefaultSessionRetriever } from './session/implementation/DefaultSessionRetriever';\nimport { PreferencesService } from './preferences.service';\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\n\n@NgModule()\nexport class PreferencesModule {\n static forRoot(config?: PreferencesModuleConfig): ModuleWithProviders<PreferencesModule> {\n return {\n ngModule: PreferencesModule,\n providers: [\n PreferencesService,\n { provide: BasePreferencesPersistor, useClass: config?.preferencePersistor || LocalStoragePersistor },\n { provide: BaseSessionRetriever, useClass: config?.sessionRetriever || DefaultSessionRetriever },\n { provide: PREF_FULL_RETRIEVE_AT_START, useValue: config?.retrieveAllAtStart || true }\n ]\n };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-preferences.mjs","sources":["../../../projects/preferences/src/lib/tokens.ts","../../../projects/preferences/src/lib/services/base/base.service.ts","../../../projects/preferences/src/lib/persistor/base/CachePersistor.ts","../../../projects/preferences/src/lib/services/cache.service.ts","../../../projects/preferences/src/lib/persistor/base/PreferencesPersistor.ts","../../../projects/preferences/src/lib/services/preferences.service.ts","../../../projects/preferences/src/lib/models/PreferencesModuleConfig.ts","../../../projects/preferences/src/lib/session/base/BaseSessionRetriever.ts","../../../projects/preferences/src/lib/session/implementation/DefaultSessionRetriever.ts","../../../projects/preferences/src/lib/persistor/implementation/LocalStorageCachePersistor.ts","../../../projects/preferences/src/lib/persistor/implementation/LocalStoragePreferencesPersistor.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');","// Angular\r\nimport { Inject, Optional } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { take, tap } from 'rxjs/operators';\r\nimport { IBasePersistor } from '../../persistor/base/IBasePersistor';\r\n\r\n// Modelli\r\nimport { PREF_FULL_RETRIEVE_AT_START } from '../../tokens';\r\nimport { IBaseStorage } from './IBaseStorage';\r\n\r\n/**\r\n * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate\r\n */\r\nexport class BaseService implements IBaseStorage {\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 protected LocalStore: { [index: string]: any } = {};\r\n\r\n /**\r\n * Costruttore\r\n * \r\n * @ignore\r\n */\r\n constructor(private persistor: IBasePersistor, @Optional() @Inject(PREF_FULL_RETRIEVE_AT_START) private PREF_FULL_RETRIEVE_AT_START: boolean) {\r\n if (this.PREF_FULL_RETRIEVE_AT_START) {\r\n\r\n this.persistor.recoverAll().pipe(take(1)).subscribe(t => {\r\n for (let cProp in t)\r\n this.LocalStore[cProp] = t[cProp];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Salva un oggetto sia nella cache locale che nel persistor\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n */\r\n public setItem<T>(key: string, item: T): Observable<boolean> {\r\n this.setLocalItem(key, item)\r\n return this.persist(key, item);\r\n }\r\n\r\n /**\r\n * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione\r\n * \r\n * @param {string} key Chiave di persistenza\r\n * @param {T} item Oggetto da salvare\r\n */\r\n public setLocalItem<T>(key: string, item: T): boolean {\r\n let detatched = JSON.parse(JSON.stringify(item));\r\n if (detatched.selfsearch)\r\n detatched.selfsearch = false;\r\n this.LocalStore[key] = detatched;\r\n return true;\r\n }\r\n\r\n /**\r\n * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente\r\n * nel caso si utilizzi il metodo **storeLocal**\r\n * \r\n * @param {string} key Chiave da storicizzare\r\n */\r\n private persist<T>(key: string, item: T): Observable<boolean> {\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.\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito, \r\n * in caso fosse stato modificato fuori sistema o da un altro sistema\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n public getItem<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n if (this.LocalStore[key] && !cacheBust)\r\n return of(<T>this.LocalStore[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.LocalStore[key] = item; }))\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale\r\n * \r\n * @param {string} key Chiave del valore da recuperare\r\n * \r\n * @returns {T} Oggetto richiesto\r\n */\r\n public getLocalItem<T>(key: string): T {\r\n if (this.LocalStore[key])\r\n return <T>this.LocalStore[key];\r\n else\r\n return null;\r\n }\r\n\r\n /**\r\n * Elimina un oggetto dalla cache sia locale che persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public removeItem(key: string): Observable<boolean> {\r\n if (this.LocalStore[key])\r\n delete this.LocalStore[key];\r\n\r\n return this.persistor.remove(key);\r\n }\r\n\r\n /**\r\n * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor\r\n */\r\n public clear(): Observable<boolean> {\r\n // Pulisco la cache locale\r\n this.LocalStore = {};\r\n // \"Committo\" le modifiche\r\n return this.persistor.clear();\r\n }\r\n}","import { Observable, forkJoin } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\nimport { IBasePersistor } from \"./IBasePersistor\";\r\n\r\n/** Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage */\r\nexport abstract class CachePersistor implements IBasePersistor {\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 /**\r\n * Ripulisce le preference salvate relative ad una sessione\r\n */\r\n public abstract clear(): Observable<boolean>;\r\n\r\n /**\r\n * Elimina un oggetto dalla cache persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public abstract remove(key: string): Observable<boolean>;\r\n\r\n /**\r\n * Effettua il **persist** massivo di una lista di Chiave - Valore\r\n * \r\n * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere\r\n */\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 public 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 { BaseService } from './base/base.service';\r\n\r\n// Modelli\r\nimport { PREF_FULL_RETRIEVE_AT_START } from './../tokens';\r\nimport { CachePersistor } from '../persistor/base/CachePersistor';\r\n\r\n/** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */\r\n@Injectable()\r\nexport class CacheService extends BaseService {\r\n\r\n /** @ignore Costruttore */\r\n constructor(persistor: CachePersistor, @Optional() @Inject(PREF_FULL_RETRIEVE_AT_START) PREF_FULL_RETRIEVE_AT_START: boolean) {\r\n super(persistor, PREF_FULL_RETRIEVE_AT_START);\r\n }\r\n}","import { Observable, forkJoin } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\nimport { IBasePersistor } from \"./IBasePersistor\";\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 PreferencesPersistor implements IBasePersistor {\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 /**\r\n * Ripulisce le preference salvate relative ad una sessione\r\n */\r\n public abstract clear(): Observable<boolean>;\r\n\r\n /**\r\n * Elimina un oggetto dalla cache persistita\r\n * \r\n * @param {string} key Chiave da rimuovere\r\n */\r\n public abstract remove(key: string): Observable<boolean>;\r\n\r\n /**\r\n * Effettua il **persist** massivo di una lista di Chiave - Valore\r\n * \r\n * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere\r\n */\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 public 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 { BaseService } from './base/base.service';\r\n\r\n// Modelli\r\nimport { PREF_FULL_RETRIEVE_AT_START } from './../tokens';\r\nimport { PreferencesPersistor } from '../persistor/base/PreferencesPersistor';\r\n\r\n/** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */\r\n@Injectable()\r\nexport class PreferencesService extends BaseService {\r\n\r\n /** @ignore Costruttore */\r\n constructor(persistor: PreferencesPersistor, @Optional() @Inject(PREF_FULL_RETRIEVE_AT_START) PREF_FULL_RETRIEVE_AT_START: boolean) {\r\n super(persistor, PREF_FULL_RETRIEVE_AT_START);\r\n }\r\n}","import { Type } from \"@angular/core\";\r\nimport { CachePersistor } from \"../persistor/base/CachePersistor\";\r\nimport { PreferencesPersistor } from \"../persistor/base/PreferencesPersistor\";\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<PreferencesPersistor>;\r\n\r\n /**\r\n * Classe che si deve occupare dello store \"Definitivo\" delle cache. 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 cachePersistor?: Type<CachePersistor>;\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}","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\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Classi\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\nimport { CachePersistor } from \"../base/CachePersistor\";\r\nimport { IBasePersistor } from \"../base/IBasePersistor\";\r\n\r\n// RXJS\r\nimport { Observable, of } from \"rxjs\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class LocalStorageCachePersistor extends CachePersistor implements IBasePersistor {\r\n\r\n constructor(session: BaseSessionRetriever) {\r\n super(session);\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n localStorage.setItem(this.getKey(key), JSON.stringify(item));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recover<T>(key: string): Observable<T> {\r\n var ret = <T>JSON.parse(localStorage.getItem(this.getKey(key)));\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public remove(key: string): Observable<boolean> {\r\n var ret = localStorage.removeItem(this.getKey(key));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n var ret: { [index: string]: string; } = {};\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));\r\n }\r\n\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public clear(): Observable<boolean> {\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n localStorage.removeItem(k);\r\n }\r\n return of(true).pipe(first());\r\n }\r\n}\r\n\r\n","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// RXJS\r\nimport { Observable, of } from \"rxjs\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\n// Classi\r\nimport { BaseSessionRetriever } from \"../../session/base/BaseSessionRetriever\";\r\nimport { PreferencesPersistor } from \"../base/PreferencesPersistor\";\r\nimport { IBasePersistor } from \"../base/IBasePersistor\";\r\n\r\n@Injectable()\r\nexport class LocalStoragePreferencesPersistor extends PreferencesPersistor implements IBasePersistor {\r\n\r\n constructor(session: BaseSessionRetriever) {\r\n super(session);\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n localStorage.setItem(this.getKey(key), JSON.stringify(item));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recover<T>(key: string): Observable<T> {\r\n var ret = <T>JSON.parse(localStorage.getItem(this.getKey(key)));\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public remove(key: string): Observable<boolean> {\r\n var ret = localStorage.removeItem(this.getKey(key));\r\n return of(true).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n var ret: { [index: string]: string; } = {};\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n ret[k.match(/§(.*)§/)[1]] = JSON.parse(localStorage.getItem(k));\r\n }\r\n\r\n return of(ret).pipe(first());\r\n }\r\n\r\n /** @ignore Vedi classe base */\r\n public clear(): Observable<boolean> {\r\n for (var k in localStorage) {\r\n if (k.includes(\"§\") && k.startsWith(this.session.getSessionKey()))\r\n localStorage.removeItem(k);\r\n }\r\n return of(true).pipe(first());\r\n }\r\n}\r\n","// Angular\r\nimport { ModuleWithProviders } from '@angular/core';\r\nimport { NgModule } from '@angular/core';\r\n\r\n// Modelli\r\nimport { PreferencesModuleConfig } from './models/PreferencesModuleConfig';\r\nimport { CacheService } from './services/cache.service';\r\nimport { PreferencesService } from './services/preferences.service';\r\nimport { BaseSessionRetriever } from './session/base/BaseSessionRetriever';\r\nimport { DefaultSessionRetriever } from './session/implementation/DefaultSessionRetriever';\r\nimport { PREF_FULL_RETRIEVE_AT_START } from './tokens';\r\nimport { CachePersistor } from './persistor/base/CachePersistor';\r\nimport { PreferencesPersistor } from './persistor/base/PreferencesPersistor';\r\nimport { LocalStorageCachePersistor } from './persistor/implementation/LocalStorageCachePersistor';\r\nimport { LocalStoragePreferencesPersistor } from './persistor/implementation/LocalStoragePreferencesPersistor';\r\n\r\n@NgModule()\r\nexport class PreferencesModule {\r\n static forRoot(config?: PreferencesModuleConfig): ModuleWithProviders<PreferencesModule> {\r\n return {\r\n ngModule: PreferencesModule,\r\n providers: [\r\n CacheService,\r\n PreferencesService,\r\n { provide: PreferencesPersistor, useClass: config?.preferencePersistor || LocalStoragePreferencesPersistor },\r\n { provide: CachePersistor, useClass: config?.cachePersistor || LocalStorageCachePersistor },\r\n { provide: BaseSessionRetriever, useClass: config?.sessionRetriever || DefaultSessionRetriever },\r\n { provide: PREF_FULL_RETRIEVE_AT_START, useValue: config?.retrieveAllAtStart || true }\r\n ]\r\n };\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BaseSessionRetriever"],"mappings":"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"}
|