@esfaenza/preferences 19.2.18 → 20.3.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.
@@ -182,10 +182,10 @@ class CacheService extends BaseService {
182
182
  constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
183
183
  super(persistor, PREF_FULL_RETRIEVE_AT_START);
184
184
  }
185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CacheService, deps: [{ token: CachePersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
186
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CacheService });
185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: CacheService, deps: [{ token: CachePersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
186
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: CacheService });
187
187
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CacheService, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: CacheService, decorators: [{
189
189
  type: Injectable
190
190
  }], ctorParameters: () => [{ type: CachePersistor }, { type: undefined, decorators: [{
191
191
  type: Optional
@@ -233,10 +233,10 @@ class PreferencesService extends BaseService {
233
233
  constructor(persistor, PREF_FULL_RETRIEVE_AT_START) {
234
234
  super(persistor, PREF_FULL_RETRIEVE_AT_START);
235
235
  }
236
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreferencesService, deps: [{ token: PreferencesPersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
237
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreferencesService });
236
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PreferencesService, deps: [{ token: PreferencesPersistor }, { token: PREF_FULL_RETRIEVE_AT_START, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
237
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PreferencesService });
238
238
  }
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreferencesService, decorators: [{
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PreferencesService, decorators: [{
240
240
  type: Injectable
241
241
  }], ctorParameters: () => [{ type: PreferencesPersistor }, { type: undefined, decorators: [{
242
242
  type: Optional
@@ -295,10 +295,10 @@ class DefaultSessionRetriever extends BaseSessionRetriever {
295
295
  getSessionKey() {
296
296
  return "DUMMY_SESSION";
297
297
  }
298
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSessionRetriever, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
299
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSessionRetriever });
298
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: DefaultSessionRetriever, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
299
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: DefaultSessionRetriever });
300
300
  }
301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSessionRetriever, decorators: [{
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: DefaultSessionRetriever, decorators: [{
302
302
  type: Injectable
303
303
  }], ctorParameters: () => [] });
304
304
 
@@ -309,21 +309,37 @@ class LocalStorageCachePersistor extends CachePersistor {
309
309
  }
310
310
  /** @ignore Vedi classe base */
311
311
  persist(key, item) {
312
+ if (!localStorage) {
313
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage");
314
+ return of(true).pipe(first());
315
+ }
312
316
  localStorage.setItem(this.getKey(key), JSON.stringify(item));
313
317
  return of(true).pipe(first());
314
318
  }
315
319
  /** @ignore Vedi classe base */
316
320
  recover(key) {
321
+ if (!localStorage) {
322
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage");
323
+ return of(null).pipe(first());
324
+ }
317
325
  var ret = JSON.parse(localStorage.getItem(this.getKey(key)));
318
326
  return of(ret).pipe(first());
319
327
  }
320
328
  /** @ignore Vedi classe base */
321
329
  remove(key) {
322
- var ret = localStorage.removeItem(this.getKey(key));
330
+ if (!localStorage) {
331
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage");
332
+ return of(true).pipe(first());
333
+ }
334
+ localStorage.removeItem(this.getKey(key));
323
335
  return of(true).pipe(first());
324
336
  }
325
337
  /** @ignore Vedi classe base */
326
338
  recoverAll() {
339
+ if (!localStorage) {
340
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage");
341
+ return of(null).pipe(first());
342
+ }
327
343
  var ret = {};
328
344
  for (var k in localStorage) {
329
345
  if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
@@ -333,16 +349,20 @@ class LocalStorageCachePersistor extends CachePersistor {
333
349
  }
334
350
  /** @ignore Vedi classe base */
335
351
  clear() {
352
+ if (!localStorage) {
353
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage");
354
+ return of(true).pipe(first());
355
+ }
336
356
  for (var k in localStorage) {
337
357
  if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
338
358
  localStorage.removeItem(k);
339
359
  }
340
360
  return of(true).pipe(first());
341
361
  }
342
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LocalStorageCachePersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
343
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LocalStorageCachePersistor });
362
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LocalStorageCachePersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
363
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LocalStorageCachePersistor });
344
364
  }
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LocalStorageCachePersistor, decorators: [{
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LocalStorageCachePersistor, decorators: [{
346
366
  type: Injectable
347
367
  }], ctorParameters: () => [{ type: BaseSessionRetriever }] });
348
368
 
@@ -353,21 +373,37 @@ class LocalStoragePreferencesPersistor extends PreferencesPersistor {
353
373
  }
354
374
  /** @ignore Vedi classe base */
355
375
  persist(key, item) {
376
+ if (!localStorage) {
377
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage");
378
+ return of(true).pipe(first());
379
+ }
356
380
  localStorage.setItem(this.getKey(key), JSON.stringify(item));
357
381
  return of(true).pipe(first());
358
382
  }
359
383
  /** @ignore Vedi classe base */
360
384
  recover(key) {
385
+ if (!localStorage) {
386
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage");
387
+ return of(null).pipe(first());
388
+ }
361
389
  var ret = JSON.parse(localStorage.getItem(this.getKey(key)));
362
390
  return of(ret).pipe(first());
363
391
  }
364
392
  /** @ignore Vedi classe base */
365
393
  remove(key) {
366
- var ret = localStorage.removeItem(this.getKey(key));
394
+ if (!localStorage) {
395
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage");
396
+ return of(true).pipe(first());
397
+ }
398
+ localStorage.removeItem(this.getKey(key));
367
399
  return of(true).pipe(first());
368
400
  }
369
401
  /** @ignore Vedi classe base */
370
402
  recoverAll() {
403
+ if (!localStorage) {
404
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage");
405
+ return of(null).pipe(first());
406
+ }
371
407
  var ret = {};
372
408
  for (var k in localStorage) {
373
409
  if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
@@ -377,16 +413,20 @@ class LocalStoragePreferencesPersistor extends PreferencesPersistor {
377
413
  }
378
414
  /** @ignore Vedi classe base */
379
415
  clear() {
416
+ if (!localStorage) {
417
+ console.error("Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage");
418
+ return of(true).pipe(first());
419
+ }
380
420
  for (var k in localStorage) {
381
421
  if (k.includes("§") && k.startsWith(this.session.getSessionKey()))
382
422
  localStorage.removeItem(k);
383
423
  }
384
424
  return of(true).pipe(first());
385
425
  }
386
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LocalStoragePreferencesPersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
387
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LocalStoragePreferencesPersistor });
426
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LocalStoragePreferencesPersistor, deps: [{ token: BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
427
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LocalStoragePreferencesPersistor });
388
428
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LocalStoragePreferencesPersistor, decorators: [{
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LocalStoragePreferencesPersistor, decorators: [{
390
430
  type: Injectable
391
431
  }], ctorParameters: () => [{ type: BaseSessionRetriever }] });
392
432
 
@@ -405,11 +445,11 @@ class PreferencesModule {
405
445
  ]
406
446
  };
407
447
  }
408
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreferencesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
409
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: PreferencesModule });
410
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreferencesModule });
448
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PreferencesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
449
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.13", ngImport: i0, type: PreferencesModule });
450
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PreferencesModule });
411
451
  }
412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreferencesModule, decorators: [{
452
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PreferencesModule, decorators: [{
413
453
  type: NgModule
414
454
  }] });
415
455
 
@@ -1 +1 @@
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');\r\n\r\n/** Modalità di Debug */\r\nexport const PREF_DEBUG_MODE: InjectionToken<boolean> = new InjectionToken<boolean>('PREF_DEBUG_MODE');","// Angular\r\nimport { Inject, Optional } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { switchMap, 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 /** Indica se ho già effettuato il retrieve di tutta la roba salvata */\r\n private AllRetrieved: boolean = false;\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 }\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 let detatched = JSON.parse(JSON.stringify(item));\r\n if (detatched) {\r\n if (detatched.selfsearch)\r\n detatched.selfsearch = false;\r\n if (detatched.page && detatched.items && detatched.items.length > 0)\r\n detatched.items = [];\r\n }\r\n \r\n this.setLocalItem(key, detatched)\r\n return this.persist(key, detatched);\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 this.LocalStore[key] = item;\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 {Observable<T>} Oggetto richiesto\r\n */\r\n public getItem<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n if (this.PREF_FULL_RETRIEVE_AT_START && !this.AllRetrieved) {\r\n\r\n let retrieveObservable = this.persistor.recoverAll().pipe(take(1), tap(t => {\r\n this.AllRetrieved = true;\r\n for (let cProp in t) this.LocalStore[cProp] = t[cProp];\r\n }));\r\n\r\n return retrieveObservable.pipe(switchMap(r => this.doGetItem<T>(key, cacheBust)));\r\n }\r\n\r\n return this.doGetItem(key, cacheBust);\r\n }\r\n\r\n /**\r\n * Funzione interna che effettivamente recupera le cache\r\n * \r\n * @param key Chiave da recuperare\r\n * @param cacheBust Indica se raccogliere dagli elementi locali o se prendere una copia nuova dell'oggetto dalla cache persistita\r\n * \r\n * @returns Observable che alla sottoscrizione restituisce l'oggetto richiesto\r\n */\r\n private doGetItem<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 as T);\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 /** Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze */\r\n sessionRetriever?: Type<BaseSessionRetriever>;\r\n \r\n /** Attiva la modalità di debug per l'esposizione di messaggi significativi */\r\n debugMode?: boolean;\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, PREF_DEBUG_MODE } 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 { provide: PREF_DEBUG_MODE, useValue: config?.debugMode || false },\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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"}
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');\r\n\r\n/** Modalità di Debug */\r\nexport const PREF_DEBUG_MODE: InjectionToken<boolean> = new InjectionToken<boolean>('PREF_DEBUG_MODE');","// Angular\r\nimport { Inject, Optional } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { switchMap, 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 /** Indica se ho già effettuato il retrieve di tutta la roba salvata */\r\n private AllRetrieved: boolean = false;\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 }\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 let detatched = JSON.parse(JSON.stringify(item));\r\n if (detatched) {\r\n if (detatched.selfsearch)\r\n detatched.selfsearch = false;\r\n if (detatched.page && detatched.items && detatched.items.length > 0)\r\n detatched.items = [];\r\n }\r\n \r\n this.setLocalItem(key, detatched)\r\n return this.persist(key, detatched);\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 this.LocalStore[key] = item;\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 {Observable<T>} Oggetto richiesto\r\n */\r\n public getItem<T>(key: string, cacheBust: boolean = false): Observable<T> {\r\n if (this.PREF_FULL_RETRIEVE_AT_START && !this.AllRetrieved) {\r\n\r\n let retrieveObservable = this.persistor.recoverAll().pipe(take(1), tap(t => {\r\n this.AllRetrieved = true;\r\n for (let cProp in t) this.LocalStore[cProp] = t[cProp];\r\n }));\r\n\r\n return retrieveObservable.pipe(switchMap(r => this.doGetItem<T>(key, cacheBust)));\r\n }\r\n\r\n return this.doGetItem(key, cacheBust);\r\n }\r\n\r\n /**\r\n * Funzione interna che effettivamente recupera le cache\r\n * \r\n * @param key Chiave da recuperare\r\n * @param cacheBust Indica se raccogliere dagli elementi locali o se prendere una copia nuova dell'oggetto dalla cache persistita\r\n * \r\n * @returns Observable che alla sottoscrizione restituisce l'oggetto richiesto\r\n */\r\n private doGetItem<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 as T);\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 /** Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze */\r\n sessionRetriever?: Type<BaseSessionRetriever>;\r\n \r\n /** Attiva la modalità di debug per l'esposizione di messaggi significativi */\r\n debugMode?: boolean;\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(true).pipe(first());\r\n }\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(null).pipe(first());\r\n }\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(true).pipe(first());\r\n }\r\n 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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(null).pipe(first());\r\n }\r\n\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the CachePersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(true).pipe(first());\r\n }\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(true).pipe(first());\r\n }\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(null).pipe(first());\r\n }\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(true).pipe(first());\r\n }\r\n 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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(null).pipe(first());\r\n }\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 if (!localStorage) {\r\n console.error(\"Local storage does not xist. This doesn't seem to be a browser environment. Please implement the PreferencesPersistor, otherwise it will fallback to the browser's LocalStorage\");\r\n return of(true).pipe(first());\r\n }\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, PREF_DEBUG_MODE } 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 { provide: PREF_DEBUG_MODE, useValue: config?.debugMode || false },\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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"}
package/index.d.ts CHANGED
@@ -1,5 +1,327 @@
1
+ import { Observable } from 'rxjs';
2
+ import * as i0 from '@angular/core';
3
+ import { Type, InjectionToken, ModuleWithProviders } from '@angular/core';
4
+
1
5
  /**
2
- * Generated bundle index. Do not edit.
6
+ * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
3
7
  */
4
- /// <amd-module name="@esfaenza/preferences" />
5
- export * from './public-api';
8
+ interface IBasePersistor {
9
+ persist<T>(key: string, item: T): Observable<boolean>;
10
+ recover<T>(key?: string): Observable<T>;
11
+ recoverAll(): Observable<{
12
+ [index: string]: any;
13
+ }>;
14
+ clear(): Observable<boolean>;
15
+ remove(key: string): Observable<boolean>;
16
+ persistAll(dictionary: {
17
+ [key: string]: string;
18
+ }): Observable<boolean>;
19
+ getKey(key: string): string;
20
+ }
21
+
22
+ interface IBaseStorage {
23
+ setItem<T>(key: string, item: T): Observable<boolean>;
24
+ setLocalItem<T>(key: string, item: T): boolean;
25
+ getItem<T>(key: string, cacheBust: boolean): Observable<T>;
26
+ getLocalItem<T>(key: string): T;
27
+ removeItem(key: string): Observable<boolean>;
28
+ clear(): Observable<boolean>;
29
+ }
30
+
31
+ /**
32
+ * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate
33
+ */
34
+ declare class BaseService implements IBaseStorage {
35
+ private persistor;
36
+ private PREF_FULL_RETRIEVE_AT_START;
37
+ /** Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor** */
38
+ protected LocalStore: {
39
+ [index: string]: any;
40
+ };
41
+ /** Indica se ho già effettuato il retrieve di tutta la roba salvata */
42
+ private AllRetrieved;
43
+ /**
44
+ * Costruttore
45
+ *
46
+ * @ignore
47
+ */
48
+ constructor(persistor: IBasePersistor, PREF_FULL_RETRIEVE_AT_START: boolean);
49
+ /**
50
+ * Salva un oggetto sia nella cache locale che nel persistor
51
+ *
52
+ * @param {string} key Chiave di persistenza
53
+ * @param {T} item Oggetto da salvare
54
+ */
55
+ setItem<T>(key: string, item: T): Observable<boolean>;
56
+ /**
57
+ * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
58
+ *
59
+ * @param {string} key Chiave di persistenza
60
+ * @param {T} item Oggetto da salvare
61
+ */
62
+ setLocalItem<T>(key: string, item: T): boolean;
63
+ /**
64
+ * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente
65
+ * nel caso si utilizzi il metodo **storeLocal**
66
+ *
67
+ * @param {string} key Chiave da storicizzare
68
+ */
69
+ private persist;
70
+ /**
71
+ * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita.
72
+ *
73
+ * @param {string} key Chiave del valore da recuperare
74
+ * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito,
75
+ * in caso fosse stato modificato fuori sistema o da un altro sistema
76
+ *
77
+ * @returns {Observable<T>} Oggetto richiesto
78
+ */
79
+ getItem<T>(key: string, cacheBust?: boolean): Observable<T>;
80
+ /**
81
+ * Funzione interna che effettivamente recupera le cache
82
+ *
83
+ * @param key Chiave da recuperare
84
+ * @param cacheBust Indica se raccogliere dagli elementi locali o se prendere una copia nuova dell'oggetto dalla cache persistita
85
+ *
86
+ * @returns Observable che alla sottoscrizione restituisce l'oggetto richiesto
87
+ */
88
+ private doGetItem;
89
+ /**
90
+ * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale
91
+ *
92
+ * @param {string} key Chiave del valore da recuperare
93
+ *
94
+ * @returns {T} Oggetto richiesto
95
+ */
96
+ getLocalItem<T>(key: string): T;
97
+ /**
98
+ * Elimina un oggetto dalla cache sia locale che persistita
99
+ *
100
+ * @param {string} key Chiave da rimuovere
101
+ */
102
+ removeItem(key: string): Observable<boolean>;
103
+ /**
104
+ * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
105
+ */
106
+ clear(): Observable<boolean>;
107
+ }
108
+
109
+ /**
110
+ * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
111
+ */
112
+ declare abstract class BaseSessionRetriever {
113
+ /**
114
+ * Ottiene un ID sessione
115
+ *
116
+ * @returns {string} ID sessione
117
+ */
118
+ abstract getSessionKey(): string;
119
+ }
120
+
121
+ /** Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage */
122
+ declare abstract class CachePersistor implements IBasePersistor {
123
+ protected session: BaseSessionRetriever;
124
+ /** @ignore Costruttore */
125
+ constructor(session: BaseSessionRetriever);
126
+ /**
127
+ * Salva, per una sessione, una chiave con un valore
128
+ *
129
+ * @param {string} key Chiave da storicizzare
130
+ */
131
+ abstract persist<T>(key: string, item: T): Observable<boolean>;
132
+ /**
133
+ * Recupera, per una sessione, il valore assegnato ad una chiave
134
+ *
135
+ * @param {string} key Chiave da recuperare
136
+ *
137
+ * @returns {Observable<T>} Valore salvato per la chiave **key**
138
+ */
139
+ abstract recover<T>(key?: string): Observable<T>;
140
+ /**
141
+ * Per una sessione recupera tutte le coppie Chiave - Valore salvate
142
+ *
143
+ * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione
144
+ */
145
+ abstract recoverAll(): Observable<{
146
+ [index: string]: any;
147
+ }>;
148
+ /**
149
+ * Ripulisce le preference salvate relative ad una sessione
150
+ */
151
+ abstract clear(): Observable<boolean>;
152
+ /**
153
+ * Elimina un oggetto dalla cache persistita
154
+ *
155
+ * @param {string} key Chiave da rimuovere
156
+ */
157
+ abstract remove(key: string): Observable<boolean>;
158
+ /**
159
+ * Effettua il **persist** massivo di una lista di Chiave - Valore
160
+ *
161
+ * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
162
+ */
163
+ persistAll(dictionary: {
164
+ [key: string]: string;
165
+ }): Observable<boolean>;
166
+ /**
167
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
168
+ *
169
+ * @param {string} key Chiave da storicizzare
170
+ *
171
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
172
+ */
173
+ getKey(key: string): string;
174
+ }
175
+
176
+ /** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */
177
+ declare class CacheService extends BaseService {
178
+ /** @ignore Costruttore */
179
+ constructor(persistor: CachePersistor, PREF_FULL_RETRIEVE_AT_START: boolean);
180
+ static ɵfac: i0.ɵɵFactoryDeclaration<CacheService, [null, { optional: true; }]>;
181
+ static ɵprov: i0.ɵɵInjectableDeclaration<CacheService>;
182
+ }
183
+
184
+ /**
185
+ * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
186
+ */
187
+ declare abstract class PreferencesPersistor implements IBasePersistor {
188
+ protected session: BaseSessionRetriever;
189
+ /** @ignore Costruttore */
190
+ constructor(session: BaseSessionRetriever);
191
+ /**
192
+ * Salva, per una sessione, una chiave con un valore
193
+ *
194
+ * @param {string} key Chiave da storicizzare
195
+ */
196
+ abstract persist<T>(key: string, item: T): Observable<boolean>;
197
+ /**
198
+ * Recupera, per una sessione, il valore assegnato ad una chiave
199
+ *
200
+ * @param {string} key Chiave da recuperare
201
+ *
202
+ * @returns {Observable<T>} Valore salvato per la chiave **key**
203
+ */
204
+ abstract recover<T>(key?: string): Observable<T>;
205
+ /**
206
+ * Per una sessione recupera tutte le coppie Chiave - Valore salvate
207
+ *
208
+ * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione
209
+ */
210
+ abstract recoverAll(): Observable<{
211
+ [index: string]: any;
212
+ }>;
213
+ /**
214
+ * Ripulisce le preference salvate relative ad una sessione
215
+ */
216
+ abstract clear(): Observable<boolean>;
217
+ /**
218
+ * Elimina un oggetto dalla cache persistita
219
+ *
220
+ * @param {string} key Chiave da rimuovere
221
+ */
222
+ abstract remove(key: string): Observable<boolean>;
223
+ /**
224
+ * Effettua il **persist** massivo di una lista di Chiave - Valore
225
+ *
226
+ * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
227
+ */
228
+ persistAll(dictionary: {
229
+ [key: string]: string;
230
+ }): Observable<boolean>;
231
+ /**
232
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
233
+ *
234
+ * @param {string} key Chiave da storicizzare
235
+ *
236
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
237
+ */
238
+ getKey(key: string): string;
239
+ }
240
+
241
+ /** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */
242
+ declare class PreferencesService extends BaseService {
243
+ /** @ignore Costruttore */
244
+ constructor(persistor: PreferencesPersistor, PREF_FULL_RETRIEVE_AT_START: boolean);
245
+ static ɵfac: i0.ɵɵFactoryDeclaration<PreferencesService, [null, { optional: true; }]>;
246
+ static ɵprov: i0.ɵɵInjectableDeclaration<PreferencesService>;
247
+ }
248
+
249
+ /**
250
+ * Classe di Configurazione per la libreria
251
+ */
252
+ declare class PreferencesModuleConfig {
253
+ /**
254
+ * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
255
+ *
256
+ * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
257
+ */
258
+ retrieveAllAtStart?: boolean;
259
+ /**
260
+ * Classe che si deve occupare dello store "Definitivo" delle preferenze. Di default viene proposto uno store lato localStorage ma si può facilmente
261
+ * fornire uno storage che porta le informazioni lato Database
262
+ */
263
+ preferencePersistor?: Type<PreferencesPersistor>;
264
+ /**
265
+ * Classe che si deve occupare dello store "Definitivo" delle cache. Di default viene proposto uno store lato localStorage ma si può facilmente
266
+ * fornire uno storage che porta le informazioni lato Database
267
+ */
268
+ cachePersistor?: Type<CachePersistor>;
269
+ /** Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze */
270
+ sessionRetriever?: Type<BaseSessionRetriever>;
271
+ /** Attiva la modalità di debug per l'esposizione di messaggi significativi */
272
+ debugMode?: boolean;
273
+ }
274
+
275
+ /**
276
+ * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
277
+ *
278
+ * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
279
+ */
280
+ declare const PREF_FULL_RETRIEVE_AT_START: InjectionToken<boolean>;
281
+ /** Modalità di Debug */
282
+ declare const PREF_DEBUG_MODE: InjectionToken<boolean>;
283
+
284
+ declare class PreferencesModule {
285
+ static forRoot(config?: PreferencesModuleConfig): ModuleWithProviders<PreferencesModule>;
286
+ static ɵfac: i0.ɵɵFactoryDeclaration<PreferencesModule, never>;
287
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PreferencesModule, never, never, never>;
288
+ static ɵinj: i0.ɵɵInjectorDeclaration<PreferencesModule>;
289
+ }
290
+
291
+ declare class LocalStorageCachePersistor extends CachePersistor implements IBasePersistor {
292
+ constructor(session: BaseSessionRetriever);
293
+ /** @ignore Vedi classe base */
294
+ persist<T>(key: string, item: T): Observable<boolean>;
295
+ /** @ignore Vedi classe base */
296
+ recover<T>(key: string): Observable<T>;
297
+ /** @ignore Vedi classe base */
298
+ remove(key: string): Observable<boolean>;
299
+ /** @ignore Vedi classe base */
300
+ recoverAll(): Observable<{
301
+ [index: string]: any;
302
+ }>;
303
+ /** @ignore Vedi classe base */
304
+ clear(): Observable<boolean>;
305
+ static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageCachePersistor, never>;
306
+ static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageCachePersistor>;
307
+ }
308
+
309
+ declare class LocalStoragePreferencesPersistor extends PreferencesPersistor implements IBasePersistor {
310
+ constructor(session: BaseSessionRetriever);
311
+ /** @ignore Vedi classe base */
312
+ persist<T>(key: string, item: T): Observable<boolean>;
313
+ /** @ignore Vedi classe base */
314
+ recover<T>(key: string): Observable<T>;
315
+ /** @ignore Vedi classe base */
316
+ remove(key: string): Observable<boolean>;
317
+ /** @ignore Vedi classe base */
318
+ recoverAll(): Observable<{
319
+ [index: string]: any;
320
+ }>;
321
+ /** @ignore Vedi classe base */
322
+ clear(): Observable<boolean>;
323
+ static ɵfac: i0.ɵɵFactoryDeclaration<LocalStoragePreferencesPersistor, never>;
324
+ static ɵprov: i0.ɵɵInjectableDeclaration<LocalStoragePreferencesPersistor>;
325
+ }
326
+
327
+ export { BaseSessionRetriever, CachePersistor, CacheService, LocalStorageCachePersistor, LocalStoragePreferencesPersistor, PREF_DEBUG_MODE, PREF_FULL_RETRIEVE_AT_START, PreferencesModule, PreferencesModuleConfig, PreferencesPersistor, PreferencesService };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@esfaenza/preferences",
3
- "version": "19.2.18",
3
+ "version": "20.3.2",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@angular/common": "^19.2.15",
9
- "@angular/core": "^19.2.15"
8
+ "@angular/common": "^20.3.13",
9
+ "@angular/core": "^20.3.13"
10
10
  },
11
11
  "module": "fesm2022/esfaenza-preferences.mjs",
12
12
  "typings": "index.d.ts",
@@ -1,29 +0,0 @@
1
- import { Type } from "@angular/core";
2
- import { CachePersistor } from "../persistor/base/CachePersistor";
3
- import { PreferencesPersistor } from "../persistor/base/PreferencesPersistor";
4
- import { BaseSessionRetriever } from "../session/base/BaseSessionRetriever";
5
- /**
6
- * Classe di Configurazione per la libreria
7
- */
8
- export declare class PreferencesModuleConfig {
9
- /**
10
- * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
11
- *
12
- * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
13
- */
14
- retrieveAllAtStart?: boolean;
15
- /**
16
- * Classe che si deve occupare dello store "Definitivo" delle preferenze. Di default viene proposto uno store lato localStorage ma si può facilmente
17
- * fornire uno storage che porta le informazioni lato Database
18
- */
19
- preferencePersistor?: Type<PreferencesPersistor>;
20
- /**
21
- * Classe che si deve occupare dello store "Definitivo" delle cache. Di default viene proposto uno store lato localStorage ma si può facilmente
22
- * fornire uno storage che porta le informazioni lato Database
23
- */
24
- cachePersistor?: Type<CachePersistor>;
25
- /** Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze */
26
- sessionRetriever?: Type<BaseSessionRetriever>;
27
- /** Attiva la modalità di debug per l'esposizione di messaggi significativi */
28
- debugMode?: boolean;
29
- }
@@ -1,57 +0,0 @@
1
- import { Observable } from "rxjs";
2
- import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
3
- import { IBasePersistor } from "./IBasePersistor";
4
- /** Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage */
5
- export declare abstract class CachePersistor implements IBasePersistor {
6
- protected session: BaseSessionRetriever;
7
- /** @ignore Costruttore */
8
- constructor(session: BaseSessionRetriever);
9
- /**
10
- * Salva, per una sessione, una chiave con un valore
11
- *
12
- * @param {string} key Chiave da storicizzare
13
- */
14
- abstract persist<T>(key: string, item: T): Observable<boolean>;
15
- /**
16
- * Recupera, per una sessione, il valore assegnato ad una chiave
17
- *
18
- * @param {string} key Chiave da recuperare
19
- *
20
- * @returns {Observable<T>} Valore salvato per la chiave **key**
21
- */
22
- abstract recover<T>(key?: string): Observable<T>;
23
- /**
24
- * Per una sessione recupera tutte le coppie Chiave - Valore salvate
25
- *
26
- * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione
27
- */
28
- abstract recoverAll(): Observable<{
29
- [index: string]: any;
30
- }>;
31
- /**
32
- * Ripulisce le preference salvate relative ad una sessione
33
- */
34
- abstract clear(): Observable<boolean>;
35
- /**
36
- * Elimina un oggetto dalla cache persistita
37
- *
38
- * @param {string} key Chiave da rimuovere
39
- */
40
- abstract remove(key: string): Observable<boolean>;
41
- /**
42
- * Effettua il **persist** massivo di una lista di Chiave - Valore
43
- *
44
- * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
45
- */
46
- persistAll(dictionary: {
47
- [key: string]: string;
48
- }): Observable<boolean>;
49
- /**
50
- * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
51
- *
52
- * @param {string} key Chiave da storicizzare
53
- *
54
- * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
55
- */
56
- getKey(key: string): string;
57
- }
@@ -1,17 +0,0 @@
1
- import { Observable } from "rxjs";
2
- /**
3
- * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
4
- */
5
- export interface IBasePersistor {
6
- persist<T>(key: string, item: T): Observable<boolean>;
7
- recover<T>(key?: string): Observable<T>;
8
- recoverAll(): Observable<{
9
- [index: string]: any;
10
- }>;
11
- clear(): Observable<boolean>;
12
- remove(key: string): Observable<boolean>;
13
- persistAll(dictionary: {
14
- [key: string]: string;
15
- }): Observable<boolean>;
16
- getKey(key: string): string;
17
- }
@@ -1,59 +0,0 @@
1
- import { Observable } from "rxjs";
2
- import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
3
- import { IBasePersistor } from "./IBasePersistor";
4
- /**
5
- * Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage
6
- */
7
- export declare abstract class PreferencesPersistor implements IBasePersistor {
8
- protected session: BaseSessionRetriever;
9
- /** @ignore Costruttore */
10
- constructor(session: BaseSessionRetriever);
11
- /**
12
- * Salva, per una sessione, una chiave con un valore
13
- *
14
- * @param {string} key Chiave da storicizzare
15
- */
16
- abstract persist<T>(key: string, item: T): Observable<boolean>;
17
- /**
18
- * Recupera, per una sessione, il valore assegnato ad una chiave
19
- *
20
- * @param {string} key Chiave da recuperare
21
- *
22
- * @returns {Observable<T>} Valore salvato per la chiave **key**
23
- */
24
- abstract recover<T>(key?: string): Observable<T>;
25
- /**
26
- * Per una sessione recupera tutte le coppie Chiave - Valore salvate
27
- *
28
- * @returns {Observable<{ [index: string]: any }>} Dizionario con tutte le preference salvate per la sessione
29
- */
30
- abstract recoverAll(): Observable<{
31
- [index: string]: any;
32
- }>;
33
- /**
34
- * Ripulisce le preference salvate relative ad una sessione
35
- */
36
- abstract clear(): Observable<boolean>;
37
- /**
38
- * Elimina un oggetto dalla cache persistita
39
- *
40
- * @param {string} key Chiave da rimuovere
41
- */
42
- abstract remove(key: string): Observable<boolean>;
43
- /**
44
- * Effettua il **persist** massivo di una lista di Chiave - Valore
45
- *
46
- * @param {{ [key: string]: string }} dictionary Dizionario (lista di Chiave - Valore) da persistere
47
- */
48
- persistAll(dictionary: {
49
- [key: string]: string;
50
- }): Observable<boolean>;
51
- /**
52
- * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
53
- *
54
- * @param {string} key Chiave da storicizzare
55
- *
56
- * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
57
- */
58
- getKey(key: string): string;
59
- }
@@ -1,22 +0,0 @@
1
- import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
2
- import { CachePersistor } from "../base/CachePersistor";
3
- import { IBasePersistor } from "../base/IBasePersistor";
4
- import { Observable } from "rxjs";
5
- import * as i0 from "@angular/core";
6
- export declare class LocalStorageCachePersistor extends CachePersistor implements IBasePersistor {
7
- constructor(session: BaseSessionRetriever);
8
- /** @ignore Vedi classe base */
9
- persist<T>(key: string, item: T): Observable<boolean>;
10
- /** @ignore Vedi classe base */
11
- recover<T>(key: string): Observable<T>;
12
- /** @ignore Vedi classe base */
13
- remove(key: string): Observable<boolean>;
14
- /** @ignore Vedi classe base */
15
- recoverAll(): Observable<{
16
- [index: string]: any;
17
- }>;
18
- /** @ignore Vedi classe base */
19
- clear(): Observable<boolean>;
20
- static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageCachePersistor, never>;
21
- static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageCachePersistor>;
22
- }
@@ -1,22 +0,0 @@
1
- import { Observable } from "rxjs";
2
- import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
3
- import { PreferencesPersistor } from "../base/PreferencesPersistor";
4
- import { IBasePersistor } from "../base/IBasePersistor";
5
- import * as i0 from "@angular/core";
6
- export declare class LocalStoragePreferencesPersistor extends PreferencesPersistor implements IBasePersistor {
7
- constructor(session: BaseSessionRetriever);
8
- /** @ignore Vedi classe base */
9
- persist<T>(key: string, item: T): Observable<boolean>;
10
- /** @ignore Vedi classe base */
11
- recover<T>(key: string): Observable<T>;
12
- /** @ignore Vedi classe base */
13
- remove(key: string): Observable<boolean>;
14
- /** @ignore Vedi classe base */
15
- recoverAll(): Observable<{
16
- [index: string]: any;
17
- }>;
18
- /** @ignore Vedi classe base */
19
- clear(): Observable<boolean>;
20
- static ɵfac: i0.ɵɵFactoryDeclaration<LocalStoragePreferencesPersistor, never>;
21
- static ɵprov: i0.ɵɵInjectableDeclaration<LocalStoragePreferencesPersistor>;
22
- }
@@ -1,9 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { PreferencesModuleConfig } from './models/PreferencesModuleConfig';
3
- import * as i0 from "@angular/core";
4
- export declare class PreferencesModule {
5
- static forRoot(config?: PreferencesModuleConfig): ModuleWithProviders<PreferencesModule>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<PreferencesModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<PreferencesModule, never, never, never>;
8
- static ɵinj: i0.ɵɵInjectorDeclaration<PreferencesModule>;
9
- }
@@ -1,9 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- export interface IBaseStorage {
3
- setItem<T>(key: string, item: T): Observable<boolean>;
4
- setLocalItem<T>(key: string, item: T): boolean;
5
- getItem<T>(key: string, cacheBust: boolean): Observable<T>;
6
- getLocalItem<T>(key: string): T;
7
- removeItem(key: string): Observable<boolean>;
8
- clear(): Observable<boolean>;
9
- }
@@ -1,80 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { IBasePersistor } from '../../persistor/base/IBasePersistor';
3
- import { IBaseStorage } from './IBaseStorage';
4
- /**
5
- * Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate
6
- */
7
- export declare class BaseService implements IBaseStorage {
8
- private persistor;
9
- private PREF_FULL_RETRIEVE_AT_START;
10
- /** Store in memoria delle preferenze locali che sarà persistito per mezzo della classe che fa le veci del **BasePreferencesPersistor** */
11
- protected LocalStore: {
12
- [index: string]: any;
13
- };
14
- /** Indica se ho già effettuato il retrieve di tutta la roba salvata */
15
- private AllRetrieved;
16
- /**
17
- * Costruttore
18
- *
19
- * @ignore
20
- */
21
- constructor(persistor: IBasePersistor, PREF_FULL_RETRIEVE_AT_START: boolean);
22
- /**
23
- * Salva un oggetto sia nella cache locale che nel persistor
24
- *
25
- * @param {string} key Chiave di persistenza
26
- * @param {T} item Oggetto da salvare
27
- */
28
- setItem<T>(key: string, item: T): Observable<boolean>;
29
- /**
30
- * Salva un oggetto solo nella cache locale. Dovrà essere persistito manualmente o andrà perso al riavvio dell'applicazione
31
- *
32
- * @param {string} key Chiave di persistenza
33
- * @param {T} item Oggetto da salvare
34
- */
35
- setLocalItem<T>(key: string, item: T): boolean;
36
- /**
37
- * Salva, per una sessione, una chiave con un valore, viene chiamato automaticamente dal metodo **store** ma dev'essere chiamato manualmente
38
- * nel caso si utilizzi il metodo **storeLocal**
39
- *
40
- * @param {string} key Chiave da storicizzare
41
- */
42
- private persist;
43
- /**
44
- * Recupera un oggetto in base a una chiave. Permette di accedere alla copia locale o alla copia persistita.
45
- *
46
- * @param {string} key Chiave del valore da recuperare
47
- * @param {boolean} cacheBust Indica se ignorare il valore della cache locale e recuperare l'oggetto dallo store persistito,
48
- * in caso fosse stato modificato fuori sistema o da un altro sistema
49
- *
50
- * @returns {Observable<T>} Oggetto richiesto
51
- */
52
- getItem<T>(key: string, cacheBust?: boolean): Observable<T>;
53
- /**
54
- * Funzione interna che effettivamente recupera le cache
55
- *
56
- * @param key Chiave da recuperare
57
- * @param cacheBust Indica se raccogliere dagli elementi locali o se prendere una copia nuova dell'oggetto dalla cache persistita
58
- *
59
- * @returns Observable che alla sottoscrizione restituisce l'oggetto richiesto
60
- */
61
- private doGetItem;
62
- /**
63
- * Recupera un oggetto in base a una chiave. Permette di accedere solo alla copia locale
64
- *
65
- * @param {string} key Chiave del valore da recuperare
66
- *
67
- * @returns {T} Oggetto richiesto
68
- */
69
- getLocalItem<T>(key: string): T;
70
- /**
71
- * Elimina un oggetto dalla cache sia locale che persistita
72
- *
73
- * @param {string} key Chiave da rimuovere
74
- */
75
- removeItem(key: string): Observable<boolean>;
76
- /**
77
- * Ripulisce le impostazioni locali e le impostazioni salvate dal persistor
78
- */
79
- clear(): Observable<boolean>;
80
- }
@@ -1,10 +0,0 @@
1
- import { BaseService } from './base/base.service';
2
- import { CachePersistor } from '../persistor/base/CachePersistor';
3
- import * as i0 from "@angular/core";
4
- /** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */
5
- export declare class CacheService extends BaseService {
6
- /** @ignore Costruttore */
7
- constructor(persistor: CachePersistor, PREF_FULL_RETRIEVE_AT_START: boolean);
8
- static ɵfac: i0.ɵɵFactoryDeclaration<CacheService, [null, { optional: true; }]>;
9
- static ɵprov: i0.ɵɵInjectableDeclaration<CacheService>;
10
- }
@@ -1,10 +0,0 @@
1
- import { BaseService } from './base/base.service';
2
- import { PreferencesPersistor } from '../persistor/base/PreferencesPersistor';
3
- import * as i0 from "@angular/core";
4
- /** Service che si occupa di salvare e recuperare le preferenze utente rispetto alle chiavi salvate */
5
- export declare class PreferencesService extends BaseService {
6
- /** @ignore Costruttore */
7
- constructor(persistor: PreferencesPersistor, PREF_FULL_RETRIEVE_AT_START: boolean);
8
- static ɵfac: i0.ɵɵFactoryDeclaration<PreferencesService, [null, { optional: true; }]>;
9
- static ɵprov: i0.ɵɵInjectableDeclaration<PreferencesService>;
10
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
3
- */
4
- export declare abstract class BaseSessionRetriever {
5
- /**
6
- * Ottiene un ID sessione
7
- *
8
- * @returns {string} ID sessione
9
- */
10
- abstract getSessionKey(): string;
11
- }
@@ -1,21 +0,0 @@
1
- import { BaseSessionRetriever } from "../base/BaseSessionRetriever";
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Implementazione di default per la classe **BaseSessionRetriever**
5
- */
6
- export declare class DefaultSessionRetriever extends BaseSessionRetriever {
7
- /**
8
- * Costruttore
9
- *
10
- * @ignore
11
- */
12
- constructor();
13
- /**
14
- * Ottiene un ID sessione
15
- *
16
- * @returns {string} ID sessione
17
- */
18
- getSessionKey(): string;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<DefaultSessionRetriever, never>;
20
- static ɵprov: i0.ɵɵInjectableDeclaration<DefaultSessionRetriever>;
21
- }
package/lib/tokens.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Indica se recuperare autonomamente tutte le configurazioni salvate al bootstrap della libreria o se aspettare le richieste specifiche.
4
- *
5
- * Utile se non vengono salvate tante cose, potrebbe creare un momento di irresponsività se le info da recuperare sono molte
6
- */
7
- export declare const PREF_FULL_RETRIEVE_AT_START: InjectionToken<boolean>;
8
- /** Modalità di Debug */
9
- export declare const PREF_DEBUG_MODE: InjectionToken<boolean>;
package/public-api.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export * from './lib/services/cache.service';
2
- export * from './lib/services/preferences.service';
3
- export * from './lib/models/PreferencesModuleConfig';
4
- export * from './lib/tokens';
5
- export * from './lib/preferences.module';
6
- export * from './lib/persistor/base/CachePersistor';
7
- export * from './lib/persistor/base/PreferencesPersistor';
8
- export * from './lib/session/base/BaseSessionRetriever';
9
- export * from './lib/persistor/implementation/LocalStorageCachePersistor';
10
- export * from './lib/persistor/implementation/LocalStoragePreferencesPersistor';