@esfaenza/extensions 12.2.11 → 12.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/bundles/esfaenza-extensions.umd.js +566 -62
  2. package/bundles/esfaenza-extensions.umd.js.map +1 -1
  3. package/esfaenza-extensions.d.ts +2 -0
  4. package/esfaenza-extensions.metadata.json +1 -1
  5. package/esm2015/esfaenza-extensions.js +3 -1
  6. package/esm2015/lib/models/CsvHeaders.js +1 -1
  7. package/esm2015/lib/models/ExtensionsModuleConfig.js +1 -1
  8. package/esm2015/lib/models/providers/base/BaseStorageProvider.js +25 -0
  9. package/esm2015/lib/models/providers/implementation/DefaultStorageProvider.js +79 -0
  10. package/esm2015/lib/models/session/base/BaseSessionRetriever.js +6 -0
  11. package/esm2015/lib/models/session/implementation/DefaultSessionRetriever.js +26 -0
  12. package/esm2015/lib/modules/extensions.full.module.js +11 -2
  13. package/esm2015/lib/services/extensions.exports.service.js +16 -9
  14. package/esm2015/lib/services/extensions.hashing.service.js +32 -11
  15. package/esm2015/lib/services/extensions.storage.service.js +58 -40
  16. package/esm2015/public-api.js +3 -1
  17. package/fesm2015/esfaenza-extensions.js +238 -59
  18. package/fesm2015/esfaenza-extensions.js.map +1 -1
  19. package/lib/models/CsvHeaders.d.ts +4 -0
  20. package/lib/models/ExtensionsModuleConfig.d.ts +11 -0
  21. package/lib/models/providers/base/BaseStorageProvider.d.ts +65 -0
  22. package/lib/models/providers/implementation/DefaultStorageProvider.d.ts +20 -0
  23. package/lib/models/session/base/BaseSessionRetriever.d.ts +11 -0
  24. package/lib/models/session/implementation/DefaultSessionRetriever.d.ts +18 -0
  25. package/lib/modules/extensions.full.module.d.ts +2 -0
  26. package/lib/services/extensions.hashing.service.d.ts +11 -3
  27. package/lib/services/extensions.storage.service.d.ts +29 -16
  28. package/package.json +5 -5
  29. package/public-api.d.ts +2 -0
@@ -1,9 +1,15 @@
1
1
  // Angular
2
2
  import { Injectable, Inject, Optional } from "@angular/core";
3
+ import { BaseStorageProvider } from "../models/providers/base/BaseStorageProvider";
4
+ import { BaseSessionRetriever } from "../models/session/base/BaseSessionRetriever";
3
5
  // Modelli
4
6
  import { APPSEARCH_PREFIX } from '../tokens';
7
+ import { tap, first } from "rxjs/operators";
5
8
  /**
6
- * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dal localStorage
9
+ * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
10
+ *
11
+ * N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
12
+ * observable effettuino l'unsubscribe automaticamente terminata la prima operazine
7
13
  */
8
14
  export class StorageService {
9
15
  /**
@@ -11,8 +17,10 @@ export class StorageService {
11
17
  *
12
18
  * @ignore
13
19
  */
14
- constructor(APPSEARCH_PREFIX) {
20
+ constructor(APPSEARCH_PREFIX, _session, _storage) {
15
21
  this.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
22
+ this._session = _session;
23
+ this._storage = _storage;
16
24
  }
17
25
  /**
18
26
  * Inserisce un oggetto che funga da contenitore di oggetti nel local storage, ripulendone gli oggetti (supponendo che sia una view di ricerca) e marcandolo come
@@ -21,62 +29,72 @@ export class StorageService {
21
29
  * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
22
30
  * @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
23
31
  */
24
- setItem(storeName, itemsContainer) {
25
- var _a;
26
- //Prima di salvare elimino gli oggetti per non fillare il localStorage di spazzatura
27
- var item = JSON.parse(JSON.stringify(itemsContainer));
28
- item.items = [];
29
- item.savedstate = true;
30
- try {
31
- localStorage.setItem(storeName, JSON.stringify(item));
32
- }
33
- catch (e) {
34
- console.warn("Spazio del local Storage insufficiente per salvare la view. Fallback a cleanup e salvataggio");
35
- //Pulisco tutte le view con nome che parta per "Hot"
36
- for (let key in localStorage) {
37
- if (localStorage.hasOwnProperty(key) && key.startsWith((_a = this.APPSEARCH_PREFIX) !== null && _a !== void 0 ? _a : 'Hot'))
38
- delete localStorage[key];
39
- }
40
- try {
41
- localStorage.setItem(storeName, JSON.stringify(item));
42
- }
43
- catch (e) {
44
- console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
45
- }
32
+ setItem(storeName, item) {
33
+ var finalItem;
34
+ //Se sto salvando un oggetto con "items" e "page" vuol dire che è un appsearch, la ripulisco
35
+ if (item.items && item.page) {
36
+ finalItem = JSON.parse(JSON.stringify(item));
37
+ finalItem.items = [];
38
+ finalItem.savedstate = true;
39
+ finalItem.savedprefix = this.APPSEARCH_PREFIX || 'Hot';
46
40
  }
41
+ else
42
+ finalItem = item;
43
+ return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
44
+ if (res == false)
45
+ console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
46
+ }));
47
47
  }
48
48
  /**
49
- * Inserisce un oggetto nel localstorage dopo averlo serializzato
49
+ * Recupera un oggetto dallo Storage Locale
50
+ *
51
+ * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
50
52
  *
51
- * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **item**
52
- * @param {any} item Oggetto da storicizzare
53
+ * @returns {any} Oggetto recuperato e deserializzato
53
54
  */
54
- setAny(storeName, item) {
55
- localStorage.setItem(storeName, JSON.stringify(item));
55
+ getItem(storeName) {
56
+ return this._storage.getItem(storeName).pipe(first(), tap(res => {
57
+ if (res == null)
58
+ console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
59
+ }));
56
60
  }
57
61
  /**
58
- * Recupera un oggetto dal localStorage
59
- *
60
- * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
62
+ * Ripulisce lo Storage Locale
61
63
  *
62
- * @returns {any} Oggetto recuperato e deserializzato
64
+ * @param {string} storeName Chiave del localStorage da ripulire
63
65
  */
64
- getAny(storeName) {
65
- return JSON.parse(localStorage.getItem(storeName));
66
+ removeItem(storeName) {
67
+ return this._storage.removeItem(storeName).pipe(first(), tap(res => {
68
+ if (res == false)
69
+ console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
70
+ }));
66
71
  }
67
72
  /**
68
- * Ripulisce il localStorage
73
+ * Ripulisce lo Storage Locale di ogni cosa salvata
69
74
  *
70
75
  * @param {string} storeName Chiave del localStorage da ripulire
71
76
  */
72
- clear(storeName) {
73
- localStorage.removeItem(storeName);
77
+ clear() {
78
+ return this._storage.clear().pipe(first(), tap(res => {
79
+ if (res == false)
80
+ console.warn("Impossibile ripulire lo Storage Locale");
81
+ }));
82
+ }
83
+ /**
84
+ * Restituisce tutte le chiavi-valore associate alla sessione corrente
85
+ *
86
+ * @returns {Observable<{ [index: string]: string; }>} Risultato della query
87
+ */
88
+ getAll() {
89
+ return this._storage.getAll().pipe(first());
74
90
  }
75
91
  }
76
92
  StorageService.decorators = [
77
93
  { type: Injectable }
78
94
  ];
79
95
  StorageService.ctorParameters = () => [
80
- { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] }
96
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] },
97
+ { type: BaseSessionRetriever },
98
+ { type: BaseStorageProvider }
81
99
  ];
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFFdkI7Ozs7T0FJRztJQUNILFlBQTBELGdCQUF3QjtRQUF4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7SUFBRSxDQUFDO0lBRXJGOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBQyxTQUFpQixFQUFFLGNBQWdDOztRQUM5RCxvRkFBb0Y7UUFDcEYsSUFBSSxJQUFJLEdBQTBDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXZCLElBQUk7WUFDQSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEZBQThGLENBQUMsQ0FBQztZQUU3RyxvREFBb0Q7WUFDcEQsS0FBSyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUU7Z0JBQzFCLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQUEsSUFBSSxDQUFDLGdCQUFnQixtQ0FBSSxLQUFLLENBQUM7b0JBQ2xGLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2hDO1lBQ0QsSUFBSTtnQkFDQSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDekQ7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLDRHQUE0RyxDQUFDLENBQUM7YUFDL0g7U0FDSjtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxTQUFpQixFQUFFLElBQVM7UUFDdEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsU0FBaUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxTQUFpQjtRQUMxQixZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OztZQXJFSixVQUFVOzs7eUNBUU0sUUFBUSxZQUFJLE1BQU0sU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBBUFBTRUFSQ0hfUFJFRklYIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSBmdW56aW9uYWxpdMOgIGRpIGJhc2UgcGVyIHN0b3JpY2l6emF6aW9uZSBlIHJlY3VwZXJvIG9nZ2V0dGkgZGFsIGxvY2FsU3RvcmFnZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFQUFNFQVJDSF9QUkVGSVgpIHByaXZhdGUgQVBQU0VBUkNIX1BSRUZJWDogc3RyaW5nKXt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcmlzY2UgdW4gb2dnZXR0byBjaGUgZnVuZ2EgZGEgY29udGVuaXRvcmUgZGkgb2dnZXR0aSBuZWwgbG9jYWwgc3RvcmFnZSwgcmlwdWxlbmRvbmUgZ2xpIG9nZ2V0dGkgKHN1cHBvbmVuZG8gY2hlIHNpYSB1bmEgdmlldyBkaSByaWNlcmNhKSBlIG1hcmNhbmRvbG8gY29tZSBcclxuICAgICAqIHNhbHZhdG8sIGluIG1vZG8gY2hlIHF1YW5kbyB2aWVuZSByZWN1cGVyYXRvIGlsIHNpc3RlbWEgbm9uIHBlbnNpIGNoZSBzaWEgdW4gb2dnZXR0byB2dW90byBtYSBjaGUgc2FwcGlhIGNoZSBnbGkgb2dnZXR0aSBzb24gc3RhdGkgcmlwdWxpdGkgcGVyIHJpc3Bhcm1pYXJlIHNwYXppb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGluIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvICoqaXRlbXNDb250YWluZXIqKlxyXG4gICAgICogQHBhcmFtIHt7IGl0ZW1zOiBhbnlbXSB9fSBpdGVtc0NvbnRhaW5lciBPZ2dldHRvIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0SXRlbShzdG9yZU5hbWU6IHN0cmluZywgaXRlbXNDb250YWluZXI6IHsgaXRlbXM6IGFueVtdIH0pIHtcclxuICAgICAgICAvL1ByaW1hIGRpIHNhbHZhcmUgZWxpbWlubyBnbGkgb2dnZXR0aSBwZXIgbm9uIGZpbGxhcmUgaWwgbG9jYWxTdG9yYWdlIGRpIHNwYXp6YXR1cmFcclxuICAgICAgICB2YXIgaXRlbTogeyBpdGVtczogYW55W10sIHNhdmVkc3RhdGU6IGJvb2xlYW4gfSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbXNDb250YWluZXIpKTtcclxuICAgICAgICBpdGVtLml0ZW1zID0gW107XHJcbiAgICAgICAgaXRlbS5zYXZlZHN0YXRlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oc3RvcmVOYW1lLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJTcGF6aW8gZGVsIGxvY2FsIFN0b3JhZ2UgaW5zdWZmaWNpZW50ZSBwZXIgc2FsdmFyZSBsYSB2aWV3LiBGYWxsYmFjayBhIGNsZWFudXAgZSBzYWx2YXRhZ2dpb1wiKTtcclxuXHJcbiAgICAgICAgICAgIC8vUHVsaXNjbyB0dXR0ZSBsZSB2aWV3IGNvbiBub21lIGNoZSBwYXJ0YSBwZXIgXCJIb3RcIlxyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmhhc093blByb3BlcnR5KGtleSkgJiYga2V5LnN0YXJ0c1dpdGgodGhpcy5BUFBTRUFSQ0hfUFJFRklYID8/ICdIb3QnKSlcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxTdG9yYWdlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JlTmFtZSwgSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiU3BhemlvIGRlbCBsb2NhbCBTdG9yYWdlIGluc3VmZmljaWVudGUgcGVyIHNhbHZhcmUgaSByaXN1bHRhdGkgZGkgcmljZXJjYSBjb24gc29sbyBmaWx0cmkuIE5vbiBzYWx2byBudWxsYVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluc2VyaXNjZSB1biBvZ2dldHRvIG5lbCBsb2NhbHN0b3JhZ2UgZG9wbyBhdmVybG8gc2VyaWFsaXp6YXRvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yZU5hbWUgQ2hpYXZlIGRlbCBsb2NhbFN0b3JhZ2UgaW4gY3VpIHN0b3JpY2l6emFyZSBsJ29nZ2V0dG8gKippdGVtKipcclxuICAgICAqIEBwYXJhbSB7YW55fSBpdGVtIE9nZ2V0dG8gZGEgc3RvcmljaXp6YXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRBbnkoc3RvcmVOYW1lOiBzdHJpbmcsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JlTmFtZSwgSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjdXBlcmEgdW4gb2dnZXR0byBkYWwgbG9jYWxTdG9yYWdlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yZU5hbWUgQ2hpYXZlIGRlbCBsb2NhbFN0b3JhZ2UgZGEgY3VpIHJlY3VwZXJhcmUgbCdvZ2dldHRvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHthbnl9IE9nZ2V0dG8gcmVjdXBlcmF0byBlIGRlc2VyaWFsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRBbnkoc3RvcmVOYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JlTmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmlwdWxpc2NlIGlsIGxvY2FsU3RvcmFnZSBcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSByaXB1bGlyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xlYXIoc3RvcmVOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yZU5hbWUpO1xyXG4gICAgfVxyXG59Il19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVuRixVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUV2Qjs7OztPQUlHO0lBQ0gsWUFBMEQsZ0JBQXdCLEVBQVUsUUFBOEIsRUFBVSxRQUE2QjtRQUF2RyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXFCO0lBQUksQ0FBQztJQUV0Szs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUksU0FBaUIsRUFBRSxJQUFPO1FBQ3hDLElBQUksU0FBYyxDQUFDO1FBQ25CLDRGQUE0RjtRQUM1RixJQUFVLElBQUssQ0FBQyxLQUFLLElBQVUsSUFBSyxDQUFDLElBQUksRUFBRTtZQUN2QyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdEIsU0FBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1NBQ2pFOztZQUVHLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2RSxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0dBQW9HLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDeEksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUksU0FBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksR0FBRyxJQUFJLElBQUk7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxvREFBb0QsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsU0FBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksR0FBRyxJQUFJLEtBQUs7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakQsSUFBSSxHQUFHLElBQUksS0FBSztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFoRkosVUFBVTs7O3lDQVFNLFFBQVEsWUFBSSxNQUFNLFNBQUMsZ0JBQWdCO1lBdkIzQyxvQkFBb0I7WUFEcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VQcm92aWRlciB9IGZyb20gXCIuLi9tb2RlbHMvcHJvdmlkZXJzL2Jhc2UvQmFzZVN0b3JhZ2VQcm92aWRlclwiO1xyXG5pbXBvcnQgeyBCYXNlU2Vzc2lvblJldHJpZXZlciB9IGZyb20gXCIuLi9tb2RlbHMvc2Vzc2lvbi9iYXNlL0Jhc2VTZXNzaW9uUmV0cmlldmVyXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEFQUFNFQVJDSF9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwLCBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIGZ1bnppb25hbGl0w6AgZGkgYmFzZSBwZXIgc3RvcmljaXp6YXppb25lIGUgcmVjdXBlcm8gb2dnZXR0aSBkYWxsbyBTdG9yYWdlIExvY2FsZVxyXG4gKiBcclxuICogTi5COiBJbiBvZ25pIGNoaWFtYXRhIMOoIHByZXNlbnRlIGwnb3BlcmF0b3JlIHJ4anMgKipmaXJzdCgpKiogcGVyIGZhciBzw6wgY2hlIGEgcHJlc2NpbmRlcmUgZGFsbCdpbXBsZW1lbnRhemlvbmUgdXRlbnRlL2RlZmF1bHQgZ2xpIFxyXG4gKiBvYnNlcnZhYmxlIGVmZmV0dHVpbm8gbCd1bnN1YnNjcmliZSBhdXRvbWF0aWNhbWVudGUgdGVybWluYXRhIGxhIHByaW1hIG9wZXJhemluZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFQUFNFQVJDSF9QUkVGSVgpIHByaXZhdGUgQVBQU0VBUkNIX1BSRUZJWDogc3RyaW5nLCBwcml2YXRlIF9zZXNzaW9uOiBCYXNlU2Vzc2lvblJldHJpZXZlciwgcHJpdmF0ZSBfc3RvcmFnZTogQmFzZVN0b3JhZ2VQcm92aWRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcmlzY2UgdW4gb2dnZXR0byBjaGUgZnVuZ2EgZGEgY29udGVuaXRvcmUgZGkgb2dnZXR0aSBuZWwgbG9jYWwgc3RvcmFnZSwgcmlwdWxlbmRvbmUgZ2xpIG9nZ2V0dGkgKHN1cHBvbmVuZG8gY2hlIHNpYSB1bmEgdmlldyBkaSByaWNlcmNhKSBlIG1hcmNhbmRvbG8gY29tZSBcclxuICAgICAqIHNhbHZhdG8sIGluIG1vZG8gY2hlIHF1YW5kbyB2aWVuZSByZWN1cGVyYXRvIGlsIHNpc3RlbWEgbm9uIHBlbnNpIGNoZSBzaWEgdW4gb2dnZXR0byB2dW90byBtYSBjaGUgc2FwcGlhIGNoZSBnbGkgb2dnZXR0aSBzb24gc3RhdGkgcmlwdWxpdGkgcGVyIHJpc3Bhcm1pYXJlIHNwYXppb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGluIGN1aSBzdG9yaWNpenphcmUgbCdvZ2dldHRvICoqaXRlbXNDb250YWluZXIqKlxyXG4gICAgICogQHBhcmFtIHt7IGl0ZW1zOiBhbnlbXSB9fSBpdGVtc0NvbnRhaW5lciBPZ2dldHRvIGRhIHN0b3JpY2l6emFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0SXRlbTxUPihzdG9yZU5hbWU6IHN0cmluZywgaXRlbTogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHZhciBmaW5hbEl0ZW06IGFueTtcclxuICAgICAgICAvL1NlIHN0byBzYWx2YW5kbyB1biBvZ2dldHRvIGNvbiBcIml0ZW1zXCIgZSBcInBhZ2VcIiB2dW9sIGRpcmUgY2hlIMOoIHVuIGFwcHNlYXJjaCwgbGEgcmlwdWxpc2NvXHJcbiAgICAgICAgaWYgKCg8YW55Pml0ZW0pLml0ZW1zICYmICg8YW55Pml0ZW0pLnBhZ2UpIHtcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICAgICAgICAgIGZpbmFsSXRlbS5pdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICBmaW5hbEl0ZW0uc2F2ZWRzdGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICg8YW55PmZpbmFsSXRlbSkuc2F2ZWRwcmVmaXggPSB0aGlzLkFQUFNFQVJDSF9QUkVGSVggfHwgJ0hvdCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZmluYWxJdGVtID0gaXRlbTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbShzdG9yZU5hbWUsIGZpbmFsSXRlbSkucGlwZShmaXJzdCgpLCB0YXAocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyA9PSBmYWxzZSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbXBvc3NpYmlsZSBlZmZldHR1YXJlIGlsIHNhbHZhdGFnZ2lvIGRlbGwnb2dnZXR0byBhbGwnaW50ZXJubyBkZWxsbyBTdG9yYWdlIExvY2FsZSBwZXIgbGEgY2hpYXZlIFwiICsgc3RvcmVOYW1lKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWN1cGVyYSB1biBvZ2dldHRvIGRhbGxvIFN0b3JhZ2UgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yZU5hbWUgQ2hpYXZlIGRlbCBsb2NhbFN0b3JhZ2UgZGEgY3VpIHJlY3VwZXJhcmUgbCdvZ2dldHRvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHthbnl9IE9nZ2V0dG8gcmVjdXBlcmF0byBlIGRlc2VyaWFsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtPFQ+KHN0b3JlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbTxUPihzdG9yZU5hbWUpLnBpcGUoZmlyc3QoKSwgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkltcG9zc2liaWxlIG90dGVuZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0b3JlTmFtZSBDaGlhdmUgZGVsIGxvY2FsU3RvcmFnZSBkYSByaXB1bGlyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlSXRlbShzdG9yZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmVOYW1lKS5waXBlKGZpcnN0KCksIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGwnb2dnZXR0byBzYWx2YXRvIGNvbiBjaGlhdmUgXCIgKyBzdG9yZU5hbWUpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSBsbyBTdG9yYWdlIExvY2FsZSBkaSBvZ25pIGNvc2Egc2FsdmF0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmVOYW1lIENoaWF2ZSBkZWwgbG9jYWxTdG9yYWdlIGRhIHJpcHVsaXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5jbGVhcigpLnBpcGUoZmlyc3QoKSwgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJJbXBvc3NpYmlsZSByaXB1bGlyZSBsbyBTdG9yYWdlIExvY2FsZVwiKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0aXR1aXNjZSB0dXR0ZSBsZSBjaGlhdmktdmFsb3JlIGFzc29jaWF0ZSBhbGxhIHNlc3Npb25lIGNvcnJlbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+fSBSaXN1bHRhdG8gZGVsbGEgcXVlcnlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFsbCgpOiBPYnNlcnZhYmxlPHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7IH0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXRBbGwoKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG59Il19
@@ -14,4 +14,6 @@ export * from './lib/tokens';
14
14
  export * from './lib/models/CallResult';
15
15
  export * from './lib/models/CsvHeaders';
16
16
  export * from './lib/models/GenericItem';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBleHRlbnNpb25zXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9leHRlbnNpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvZXh0ZW5zaW9ucy5mdWxsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZXhwb3J0cy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuaGFzaGluZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0NhbGxSZXN1bHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvQ3N2SGVhZGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9HZW5lcmljSXRlbSc7Il19
17
+ export * from './lib/models/providers/base/BaseStorageProvider';
18
+ export * from './lib/models/session/base/BaseSessionRetriever';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZXh0ZW5zaW9uc1xyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9leHRlbnNpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvZXh0ZW5zaW9ucy5mdWxsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZXhwb3J0cy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuaGFzaGluZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0NhbGxSZXN1bHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvQ3N2SGVhZGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9HZW5lcmljSXRlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9wcm92aWRlcnMvYmFzZS9CYXNlU3RvcmFnZVByb3ZpZGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3Nlc3Npb24vYmFzZS9CYXNlU2Vzc2lvblJldHJpZXZlcic7Il19
@@ -2,6 +2,8 @@ import { InjectionToken, NgModule, Injectable, Optional, Inject } from '@angular
2
2
  import { ToastrService } from 'ngx-toastr';
3
3
  import swal from 'sweetalert2';
4
4
  import { Deserialize } from 'cerialize';
5
+ import { first, tap } from 'rxjs/operators';
6
+ import { of } from 'rxjs';
5
7
 
6
8
  /**
7
9
  * Token che identifica il locale da utilizzare per questa libreria, sono supportati i locali 'it-IT' ed 'en-US'
@@ -980,7 +982,7 @@ class ExportService {
980
982
  columns.forEach(t => {
981
983
  var propValue = obj.properties[t.key];
982
984
  Object.defineProperty(obj, t.key + "_exp", { value: propValue, writable: false, enumerable: true });
983
- headers.push({ label: t.label, key: t.key + "_exp", order: t.order });
985
+ headers.push({ label: t.label, key: t.key + "_exp", order: t.order, type: t.type });
984
986
  });
985
987
  //Tirati fuori tutti gli header faccio sort sull'ordinamento
986
988
  return headers.sort((a, b) => { return a.order - b.order; });
@@ -1033,7 +1035,7 @@ class ExportService {
1033
1035
  // Se è un formato data mi assicuro di non stampare mai una data 00:00:00 altrimenti in esportazione viene uno schifo
1034
1036
  var val = obj[prop] ? this.dates.trimSeconds(obj[prop].toString()) : "";
1035
1037
  Object.defineProperty(obj, prop + "_nofmt", { value: val, writable: false, enumerable: true });
1036
- headers.push({ label: lbl ? lbl : prop + "_nofmt", key: prop + "_nofmt", order: order });
1038
+ headers.push({ label: lbl ? lbl : prop + "_nofmt", key: prop + "_nofmt", order: order, type: "string" });
1037
1039
  }
1038
1040
  else {
1039
1041
  // Caso formato numerico
@@ -1045,7 +1047,7 @@ class ExportService {
1045
1047
  // Il singolo punto che c'è, se presente (separatore decimali) lo trasformo in virgola
1046
1048
  let valConverted = val.replace(".", ",");
1047
1049
  Object.defineProperty(obj, prop + "_fmt", { value: valConverted, writable: false, enumerable: true });
1048
- headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order });
1050
+ headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order, type: "number" });
1049
1051
  }
1050
1052
  else {
1051
1053
  // Se ho un formato data trasformo in dayjs, formatto ed esporto
@@ -1053,7 +1055,7 @@ class ExportService {
1053
1055
  // Se non funziona provo a definirgli la formattazione standard del metering per quel linguaggio
1054
1056
  let val = this.dates.getFormatted(obj[prop], format.length <= 10, false);
1055
1057
  Object.defineProperty(obj, prop + "_fmt", { value: val !== null && val !== void 0 ? val : "", writable: false, enumerable: true });
1056
- headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order });
1058
+ headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order, type: "date" });
1057
1059
  }
1058
1060
  }
1059
1061
  }
@@ -1086,16 +1088,19 @@ class ExportService {
1086
1088
  let order = obj[prop + csvOrdPrefix];
1087
1089
  //Se per questa proprietà ho un formato lo applico
1088
1090
  let format = obj[prop + csvFormatPrefix];
1091
+ let type = "string";
1089
1092
  if (format == "F") {
1090
1093
  let val = value.toString();
1091
1094
  val = val.replace(/,/, "");
1092
1095
  value = val.replace(".", ",");
1096
+ type = "number";
1093
1097
  }
1094
1098
  else if (format) {
1095
1099
  value = this.dates.getFormatted(value, format.length <= 10, false);
1100
+ type = "date";
1096
1101
  }
1097
1102
  Object.defineProperty(obj, prop, { value: value, writable: false, enumerable: true });
1098
- headers.push({ label: lbl ? lbl : prop, key: prop, order: order });
1103
+ headers.push({ label: lbl ? lbl : prop, key: prop, order: order, type: type });
1099
1104
  }
1100
1105
  /**
1101
1106
  * Setup per l'esportazione di una lista di valori pivottati dinamicamente:
@@ -1137,15 +1142,19 @@ class ExportService {
1137
1142
  tmpRes = JSON.parse(JSON.stringify(listitem));
1138
1143
  jumps.forEach(pp => { tmpRes = tmpRes[pp]; });
1139
1144
  let value = tmpRes;
1145
+ let type = "string";
1140
1146
  if (valueformat == "F") {
1141
1147
  let val = value != null ? value.toString() : "";
1142
1148
  val = val.replace(/,/, "");
1143
1149
  value = val.replace(".", ",");
1150
+ type = "number";
1144
1151
  }
1145
- else if (valueformat)
1152
+ else if (valueformat) {
1146
1153
  value = this.dates.getFormatted(obj[prop], valueformat.length <= 10, false);
1154
+ type = "date";
1155
+ }
1147
1156
  Object.defineProperty(obj, prop + idx, { value: value, writable: false });
1148
- headers.push({ label: header, key: prop + idx, order: order + idx });
1157
+ headers.push({ label: header, key: prop + idx, order: order + idx, type: type });
1149
1158
  }
1150
1159
  }
1151
1160
  /**
@@ -1192,7 +1201,7 @@ class ExportService {
1192
1201
  let value = tmpRes;
1193
1202
  let propname = prop + idx.toString() + idxinternal.toString();
1194
1203
  Object.defineProperty(obj, propname, { value: value, writable: false });
1195
- headers.push({ label: header + " " + desc, key: propname, order: order + idx });
1204
+ headers.push({ label: header + " " + desc, key: propname, order: order + idx, type: 'string' });
1196
1205
  });
1197
1206
  }
1198
1207
  }
@@ -1225,8 +1234,11 @@ class HashingService {
1225
1234
  /**
1226
1235
  * Blacklist dei tipi da ignorare quando si effettua l'hashing degli oggetti
1227
1236
  */
1228
- this.ObjectHashingBlacklist = ["NgForm", "ElementRef", "ExtensionsService", "ToastrService", "LocaleService", "AppState", "Router", "ActivatedRoute", "HTTPService", "Location",
1229
- "CanvasComponent", "ModalDirective", "ChangeDetectorRef", "DateService", "EventEmitter", "ViewRef_", "Subscriber", "ItemLocalization"];
1237
+ this.objBlacklist = {
1238
+ "NgForm": true, "ElementRef": true, "ExtensionsService": true, "ToastrService": true, "LocaleService": true, "AppState": true, "Router": true,
1239
+ "ActivatedRoute": true, "HTTPService": true, "Location": true, "CanvasComponent": true, "ModalDirective": true, "ChangeDetectorRef": true,
1240
+ "DateService": true, "EventEmitter": true, "ViewRef_": true, "Subscriber": true, "ItemLocalization": true
1241
+ };
1230
1242
  /**
1231
1243
  * Array dei possibili valori di un simbolo esadecimale
1232
1244
  */
@@ -1250,12 +1262,30 @@ class HashingService {
1250
1262
  * @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
1251
1263
  * @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
1252
1264
  *
1253
- * @returns {string} md5 generato per l'oggetto in questione
1265
+ * @returns {string} Hash generato per l'oggetto in questione
1254
1266
  */
1255
- hashObject(o, level = 0, navigateFullDepth = false) {
1267
+ hashObject(o, level = 0, navigateFullDepth = false, precise = false) {
1256
1268
  var strDef = this.stringify(o, level, navigateFullDepth);
1257
- var md5 = this.md5(strDef);
1258
- return md5;
1269
+ var hash = precise ? this.md5(strDef) : this.simpleHash(strDef);
1270
+ return hash;
1271
+ }
1272
+ /**
1273
+ * Hash più semplice e più veloce dell'md5, ma meno sicuro
1274
+ *
1275
+ * Vedi https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
1276
+ *
1277
+ * @param {string} str Stringa di cui calcolare l'hash
1278
+ */
1279
+ simpleHash(str, seed = 0) {
1280
+ let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
1281
+ for (let i = 0, ch; i < str.length; i++) {
1282
+ ch = str.charCodeAt(i);
1283
+ h1 = Math.imul(h1 ^ ch, 2654435761);
1284
+ h2 = Math.imul(h2 ^ ch, 1597334677);
1285
+ }
1286
+ h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
1287
+ h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
1288
+ return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString();
1259
1289
  }
1260
1290
  /**
1261
1291
  * Genera una stringa che identifica univocamente l'oggetto in questione
@@ -1273,14 +1303,14 @@ class HashingService {
1273
1303
  if (o === false)
1274
1304
  return "f";
1275
1305
  if (o instanceof Date)
1276
- return "d:" + o.toString();
1306
+ return 'd:' + o.valueOf().toString();
1277
1307
  i = typeof o;
1278
1308
  if (i === "string")
1279
- return "s:" + o.replace(/([\\\\;])/g, "\\$1");
1309
+ return "s:" + o;
1280
1310
  if (i === "number")
1281
1311
  return "n:" + o;
1282
1312
  if (o instanceof Function)
1283
- return "m:" + o.toString().replace(/([\\\\;])/g, "\\$1");
1313
+ return "m:" + o.toString();
1284
1314
  if (o instanceof Array) {
1285
1315
  r = [];
1286
1316
  for (i = 0; i < o.length; i++) {
@@ -1294,7 +1324,7 @@ class HashingService {
1294
1324
  //Se è oggetto, escludo tutti quelli di sistema/inutili
1295
1325
  if (o) {
1296
1326
  var name = o.__proto__.constructor.name;
1297
- if (this.ObjectHashingBlacklist.indexOf(name) == -1) {
1327
+ if (!this.objBlacklist[name]) {
1298
1328
  for (i in o) {
1299
1329
  if (o.hasOwnProperty(i) && (level <= 2 || navigateFullDepth)) {
1300
1330
  let res = this.stringify(o[i], level + 1, navigateFullDepth);
@@ -1707,9 +1737,43 @@ UtilityService.decorators = [
1707
1737
  { type: Injectable }
1708
1738
  ];
1709
1739
 
1740
+ /**
1741
+ * Classe che gestisce la scrittura delle informazioni nello store locale.
1742
+ * Questo store locale potrebbe essere il localStorage (implementazione di default data dal **DefaultStorageProvider**),
1743
+ * oppure un'implementazione custom facente capo a un DB esterno.
1744
+ *
1745
+ * In questo ultimo caso però sarà necessario implementarsi un proprio **BaseSessionRetriever**
1746
+ * che generi una chiave univoca di sessione su cui tutte le operazioni di questa classe saranno eseguite
1747
+ */
1748
+ class BaseStorageProvider {
1749
+ /** @ignore Costruttore */
1750
+ constructor(session) {
1751
+ this.session = session;
1752
+ }
1753
+ /**
1754
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
1755
+ *
1756
+ * @param {string} key Chiave da storicizzare
1757
+ *
1758
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
1759
+ */
1760
+ getKey(key) {
1761
+ return this.session.getSessionKey() + "§" + key + "§";
1762
+ }
1763
+ }
1764
+
1765
+ /**
1766
+ * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
1767
+ */
1768
+ class BaseSessionRetriever {
1769
+ }
1770
+
1710
1771
  // Angular
1711
1772
  /**
1712
- * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dal localStorage
1773
+ * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
1774
+ *
1775
+ * N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
1776
+ * observable effettuino l'unsubscribe automaticamente terminata la prima operazine
1713
1777
  */
1714
1778
  class StorageService {
1715
1779
  /**
@@ -1717,8 +1781,10 @@ class StorageService {
1717
1781
  *
1718
1782
  * @ignore
1719
1783
  */
1720
- constructor(APPSEARCH_PREFIX) {
1784
+ constructor(APPSEARCH_PREFIX, _session, _storage) {
1721
1785
  this.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
1786
+ this._session = _session;
1787
+ this._storage = _storage;
1722
1788
  }
1723
1789
  /**
1724
1790
  * Inserisce un oggetto che funga da contenitore di oggetti nel local storage, ripulendone gli oggetti (supponendo che sia una view di ricerca) e marcandolo come
@@ -1727,63 +1793,172 @@ class StorageService {
1727
1793
  * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
1728
1794
  * @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
1729
1795
  */
1730
- setItem(storeName, itemsContainer) {
1731
- var _a;
1732
- //Prima di salvare elimino gli oggetti per non fillare il localStorage di spazzatura
1733
- var item = JSON.parse(JSON.stringify(itemsContainer));
1734
- item.items = [];
1735
- item.savedstate = true;
1736
- try {
1737
- localStorage.setItem(storeName, JSON.stringify(item));
1738
- }
1739
- catch (e) {
1740
- console.warn("Spazio del local Storage insufficiente per salvare la view. Fallback a cleanup e salvataggio");
1741
- //Pulisco tutte le view con nome che parta per "Hot"
1742
- for (let key in localStorage) {
1743
- if (localStorage.hasOwnProperty(key) && key.startsWith((_a = this.APPSEARCH_PREFIX) !== null && _a !== void 0 ? _a : 'Hot'))
1744
- delete localStorage[key];
1745
- }
1746
- try {
1747
- localStorage.setItem(storeName, JSON.stringify(item));
1748
- }
1749
- catch (e) {
1750
- console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
1751
- }
1796
+ setItem(storeName, item) {
1797
+ var finalItem;
1798
+ //Se sto salvando un oggetto con "items" e "page" vuol dire che è un appsearch, la ripulisco
1799
+ if (item.items && item.page) {
1800
+ finalItem = JSON.parse(JSON.stringify(item));
1801
+ finalItem.items = [];
1802
+ finalItem.savedstate = true;
1803
+ finalItem.savedprefix = this.APPSEARCH_PREFIX || 'Hot';
1752
1804
  }
1805
+ else
1806
+ finalItem = item;
1807
+ return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
1808
+ if (res == false)
1809
+ console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
1810
+ }));
1753
1811
  }
1754
1812
  /**
1755
- * Inserisce un oggetto nel localstorage dopo averlo serializzato
1813
+ * Recupera un oggetto dallo Storage Locale
1814
+ *
1815
+ * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
1756
1816
  *
1757
- * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **item**
1758
- * @param {any} item Oggetto da storicizzare
1817
+ * @returns {any} Oggetto recuperato e deserializzato
1759
1818
  */
1760
- setAny(storeName, item) {
1761
- localStorage.setItem(storeName, JSON.stringify(item));
1819
+ getItem(storeName) {
1820
+ return this._storage.getItem(storeName).pipe(first(), tap(res => {
1821
+ if (res == null)
1822
+ console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
1823
+ }));
1762
1824
  }
1763
1825
  /**
1764
- * Recupera un oggetto dal localStorage
1826
+ * Ripulisce lo Storage Locale
1765
1827
  *
1766
- * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
1767
- *
1768
- * @returns {any} Oggetto recuperato e deserializzato
1828
+ * @param {string} storeName Chiave del localStorage da ripulire
1769
1829
  */
1770
- getAny(storeName) {
1771
- return JSON.parse(localStorage.getItem(storeName));
1830
+ removeItem(storeName) {
1831
+ return this._storage.removeItem(storeName).pipe(first(), tap(res => {
1832
+ if (res == false)
1833
+ console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
1834
+ }));
1772
1835
  }
1773
1836
  /**
1774
- * Ripulisce il localStorage
1837
+ * Ripulisce lo Storage Locale di ogni cosa salvata
1775
1838
  *
1776
1839
  * @param {string} storeName Chiave del localStorage da ripulire
1777
1840
  */
1778
- clear(storeName) {
1779
- localStorage.removeItem(storeName);
1841
+ clear() {
1842
+ return this._storage.clear().pipe(first(), tap(res => {
1843
+ if (res == false)
1844
+ console.warn("Impossibile ripulire lo Storage Locale");
1845
+ }));
1846
+ }
1847
+ /**
1848
+ * Restituisce tutte le chiavi-valore associate alla sessione corrente
1849
+ *
1850
+ * @returns {Observable<{ [index: string]: string; }>} Risultato della query
1851
+ */
1852
+ getAll() {
1853
+ return this._storage.getAll().pipe(first());
1780
1854
  }
1781
1855
  }
1782
1856
  StorageService.decorators = [
1783
1857
  { type: Injectable }
1784
1858
  ];
1785
1859
  StorageService.ctorParameters = () => [
1786
- { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] }
1860
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] },
1861
+ { type: BaseSessionRetriever },
1862
+ { type: BaseStorageProvider }
1863
+ ];
1864
+
1865
+ /**
1866
+ * Implementazione di default per la classe **BaseSessionRetriever**
1867
+ */
1868
+ class DefaultSessionRetriever extends BaseSessionRetriever {
1869
+ /**
1870
+ * Costruttore
1871
+ *
1872
+ * @ignore
1873
+ */
1874
+ constructor() { super(); }
1875
+ /**
1876
+ * Ottiene un ID sessione
1877
+ *
1878
+ * @returns {string} ID sessione
1879
+ */
1880
+ getSessionKey() {
1881
+ return "DUMMY_SESSION";
1882
+ }
1883
+ }
1884
+ DefaultSessionRetriever.decorators = [
1885
+ { type: Injectable }
1886
+ ];
1887
+ DefaultSessionRetriever.ctorParameters = () => [];
1888
+
1889
+ /** Implementazione di default per la classe **BaseStorageProvider** */
1890
+ class DefaultStorageProvider extends BaseStorageProvider {
1891
+ /** @ignore Costruttore */
1892
+ constructor(session) { super(session); }
1893
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1894
+ setItem(key, value) {
1895
+ try {
1896
+ localStorage.setItem(key, JSON.stringify(value));
1897
+ return of(true);
1898
+ }
1899
+ catch (_a) {
1900
+ // Potrebbe arrivarmi un prefisso di salvataggio nella modalità di default. Questo serve per ripulire le stesse cose con quel prefisso e sperare di liberare spazio
1901
+ if (value.savedprefix) {
1902
+ console.warn("Spazio del local Storage insufficiente, prova a ripulirlo e risalvare");
1903
+ //Pulisco tutte le view con nome che parta per "Hot"
1904
+ for (let key in localStorage) {
1905
+ if (localStorage.hasOwnProperty(key) && key.startsWith(value.savedprefix))
1906
+ delete localStorage[key];
1907
+ }
1908
+ try {
1909
+ localStorage.setItem(key, JSON.stringify(value));
1910
+ }
1911
+ catch (e) {
1912
+ console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
1913
+ }
1914
+ }
1915
+ return of(false);
1916
+ }
1917
+ }
1918
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1919
+ getItem(key) {
1920
+ try {
1921
+ var ret = JSON.parse(localStorage.getItem(key));
1922
+ return of(ret);
1923
+ }
1924
+ catch (_a) {
1925
+ return of(null);
1926
+ }
1927
+ }
1928
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1929
+ removeItem(key) {
1930
+ try {
1931
+ localStorage.removeItem(key);
1932
+ return of(true);
1933
+ }
1934
+ catch (_a) {
1935
+ return of(false);
1936
+ }
1937
+ }
1938
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1939
+ clear() {
1940
+ try {
1941
+ localStorage.clear();
1942
+ return of(true);
1943
+ }
1944
+ catch (_a) {
1945
+ return of(false);
1946
+ }
1947
+ }
1948
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1949
+ getAll() {
1950
+ var ret = {};
1951
+ for (let key in localStorage) {
1952
+ ret[key] = localStorage[key];
1953
+ }
1954
+ return of(ret);
1955
+ }
1956
+ }
1957
+ DefaultStorageProvider.decorators = [
1958
+ { type: Injectable }
1959
+ ];
1960
+ DefaultStorageProvider.ctorParameters = () => [
1961
+ { type: BaseSessionRetriever }
1787
1962
  ];
1788
1963
 
1789
1964
  // Angular
@@ -1796,6 +1971,8 @@ StorageService.ctorParameters = () => [
1796
1971
  * MessageService,
1797
1972
  * UtilityService,
1798
1973
  * StorageService,
1974
+ *
1975
+ * con eventuali provider che utilizzano
1799
1976
  */
1800
1977
  class FullExtensionsModule {
1801
1978
  static forRoot(config) {
@@ -1812,7 +1989,9 @@ class FullExtensionsModule {
1812
1989
  { provide: EXT_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
1813
1990
  { provide: EXT_FANCY_ALERTS, useValue: (config === null || config === void 0 ? void 0 : config.fancy_alerts) || true },
1814
1991
  { provide: APPSEARCH_PREFIX, useValue: (config === null || config === void 0 ? void 0 : config.appsearch_prefix) || 'Hot' },
1815
- { provide: EXT_ALLOW_UTC, useValue: (config === null || config === void 0 ? void 0 : config.allow_utc) == null ? false : config === null || config === void 0 ? void 0 : config.allow_utc }
1992
+ { provide: EXT_ALLOW_UTC, useValue: (config === null || config === void 0 ? void 0 : config.allow_utc) == null ? false : config === null || config === void 0 ? void 0 : config.allow_utc },
1993
+ { provide: BaseSessionRetriever, useClass: (config === null || config === void 0 ? void 0 : config.sessionRetriever) || DefaultSessionRetriever },
1994
+ { provide: BaseStorageProvider, useClass: (config === null || config === void 0 ? void 0 : config.storageProvider) || DefaultStorageProvider },
1816
1995
  ]
1817
1996
  };
1818
1997
  }
@@ -1847,5 +2026,5 @@ class GenericItem {
1847
2026
  * Generated bundle index. Do not edit.
1848
2027
  */
1849
2028
 
1850
- export { APPSEARCH_PREFIX, CallResult, ClipboardService, CsvHeaders, DateService, EXT_ALLOW_UTC, EXT_FANCY_ALERTS, EXT_LOCALE, Export, ExportAs, ExportDictionary, ExportList, ExportService, ExtensionsModule, FullExtensionsModule, GenericItem, HashingService, MessageService, StorageService, UtilityService };
2029
+ export { APPSEARCH_PREFIX, BaseSessionRetriever, BaseStorageProvider, CallResult, ClipboardService, CsvHeaders, DateService, EXT_ALLOW_UTC, EXT_FANCY_ALERTS, EXT_LOCALE, Export, ExportAs, ExportDictionary, ExportList, ExportService, ExtensionsModule, FullExtensionsModule, GenericItem, HashingService, MessageService, StorageService, UtilityService, DefaultSessionRetriever as ɵa, DefaultStorageProvider as ɵb };
1851
2030
  //# sourceMappingURL=esfaenza-extensions.js.map