@esfaenza/extensions 12.2.8 → 12.2.12

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 (27) hide show
  1. package/bundles/esfaenza-extensions.umd.js +555 -58
  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/ExtensionsModuleConfig.js +1 -1
  7. package/esm2015/lib/models/providers/base/BaseStorageProvider.js +25 -0
  8. package/esm2015/lib/models/providers/implementation/DefaultStorageProvider.js +79 -0
  9. package/esm2015/lib/models/session/base/BaseSessionRetriever.js +6 -0
  10. package/esm2015/lib/models/session/implementation/DefaultSessionRetriever.js +26 -0
  11. package/esm2015/lib/modules/extensions.full.module.js +11 -2
  12. package/esm2015/lib/services/extensions.exports.service.js +5 -5
  13. package/esm2015/lib/services/extensions.hashing.service.js +32 -11
  14. package/esm2015/lib/services/extensions.storage.service.js +58 -40
  15. package/esm2015/public-api.js +3 -1
  16. package/fesm2015/esfaenza-extensions.js +227 -55
  17. package/fesm2015/esfaenza-extensions.js.map +1 -1
  18. package/lib/models/ExtensionsModuleConfig.d.ts +11 -0
  19. package/lib/models/providers/base/BaseStorageProvider.d.ts +65 -0
  20. package/lib/models/providers/implementation/DefaultStorageProvider.d.ts +20 -0
  21. package/lib/models/session/base/BaseSessionRetriever.d.ts +11 -0
  22. package/lib/models/session/implementation/DefaultSessionRetriever.d.ts +18 -0
  23. package/lib/modules/extensions.full.module.d.ts +2 -0
  24. package/lib/services/extensions.hashing.service.d.ts +11 -3
  25. package/lib/services/extensions.storage.service.d.ts +29 -16
  26. package/package.json +7 -7
  27. 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'
@@ -1000,14 +1002,14 @@ class ExportService {
1000
1002
  for (var prop in obj) {
1001
1003
  let toCall;
1002
1004
  if (typeof obj[prop + listCsvHdrPrefix] !== "undefined")
1003
- toCall = this.parseList;
1005
+ toCall = this.parseList.bind(this);
1004
1006
  else if (typeof obj[prop + dictionaryCsvHdrPrefix] !== "undefined")
1005
- toCall = this.parseDictionary;
1007
+ toCall = this.parseDictionary.bind(this);
1006
1008
  else if (typeof obj[prop + csvVisPrefix] !== "undefined") {
1007
1009
  if (typeof obj[prop + csvValueNavigator] !== "undefined")
1008
- toCall = this.parseObject;
1010
+ toCall = this.parseObject.bind(this);
1009
1011
  else
1010
- toCall = this.parseProperty;
1012
+ toCall = this.parseProperty.bind(this);
1011
1013
  }
1012
1014
  if (toCall)
1013
1015
  toCall(obj, prop, headers);
@@ -1225,8 +1227,11 @@ class HashingService {
1225
1227
  /**
1226
1228
  * Blacklist dei tipi da ignorare quando si effettua l'hashing degli oggetti
1227
1229
  */
1228
- this.ObjectHashingBlacklist = ["NgForm", "ElementRef", "ExtensionsService", "ToastrService", "LocaleService", "AppState", "Router", "ActivatedRoute", "HTTPService", "Location",
1229
- "CanvasComponent", "ModalDirective", "ChangeDetectorRef", "DateService", "EventEmitter", "ViewRef_", "Subscriber", "ItemLocalization"];
1230
+ this.objBlacklist = {
1231
+ "NgForm": true, "ElementRef": true, "ExtensionsService": true, "ToastrService": true, "LocaleService": true, "AppState": true, "Router": true,
1232
+ "ActivatedRoute": true, "HTTPService": true, "Location": true, "CanvasComponent": true, "ModalDirective": true, "ChangeDetectorRef": true,
1233
+ "DateService": true, "EventEmitter": true, "ViewRef_": true, "Subscriber": true, "ItemLocalization": true
1234
+ };
1230
1235
  /**
1231
1236
  * Array dei possibili valori di un simbolo esadecimale
1232
1237
  */
@@ -1250,12 +1255,30 @@ class HashingService {
1250
1255
  * @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
1251
1256
  * @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
1252
1257
  *
1253
- * @returns {string} md5 generato per l'oggetto in questione
1258
+ * @returns {string} Hash generato per l'oggetto in questione
1254
1259
  */
1255
- hashObject(o, level = 0, navigateFullDepth = false) {
1260
+ hashObject(o, level = 0, navigateFullDepth = false, precise = false) {
1256
1261
  var strDef = this.stringify(o, level, navigateFullDepth);
1257
- var md5 = this.md5(strDef);
1258
- return md5;
1262
+ var hash = precise ? this.md5(strDef) : this.simpleHash(strDef);
1263
+ return hash;
1264
+ }
1265
+ /**
1266
+ * Hash più semplice e più veloce dell'md5, ma meno sicuro
1267
+ *
1268
+ * Vedi https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
1269
+ *
1270
+ * @param {string} str Stringa di cui calcolare l'hash
1271
+ */
1272
+ simpleHash(str, seed = 0) {
1273
+ let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
1274
+ for (let i = 0, ch; i < str.length; i++) {
1275
+ ch = str.charCodeAt(i);
1276
+ h1 = Math.imul(h1 ^ ch, 2654435761);
1277
+ h2 = Math.imul(h2 ^ ch, 1597334677);
1278
+ }
1279
+ h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
1280
+ h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
1281
+ return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString();
1259
1282
  }
1260
1283
  /**
1261
1284
  * Genera una stringa che identifica univocamente l'oggetto in questione
@@ -1273,14 +1296,14 @@ class HashingService {
1273
1296
  if (o === false)
1274
1297
  return "f";
1275
1298
  if (o instanceof Date)
1276
- return "d:" + o.toString();
1299
+ return 'd:' + o.valueOf().toString();
1277
1300
  i = typeof o;
1278
1301
  if (i === "string")
1279
- return "s:" + o.replace(/([\\\\;])/g, "\\$1");
1302
+ return "s:" + o;
1280
1303
  if (i === "number")
1281
1304
  return "n:" + o;
1282
1305
  if (o instanceof Function)
1283
- return "m:" + o.toString().replace(/([\\\\;])/g, "\\$1");
1306
+ return "m:" + o.toString();
1284
1307
  if (o instanceof Array) {
1285
1308
  r = [];
1286
1309
  for (i = 0; i < o.length; i++) {
@@ -1294,7 +1317,7 @@ class HashingService {
1294
1317
  //Se è oggetto, escludo tutti quelli di sistema/inutili
1295
1318
  if (o) {
1296
1319
  var name = o.__proto__.constructor.name;
1297
- if (this.ObjectHashingBlacklist.indexOf(name) == -1) {
1320
+ if (!this.objBlacklist[name]) {
1298
1321
  for (i in o) {
1299
1322
  if (o.hasOwnProperty(i) && (level <= 2 || navigateFullDepth)) {
1300
1323
  let res = this.stringify(o[i], level + 1, navigateFullDepth);
@@ -1707,9 +1730,43 @@ UtilityService.decorators = [
1707
1730
  { type: Injectable }
1708
1731
  ];
1709
1732
 
1733
+ /**
1734
+ * Classe che gestisce la scrittura delle informazioni nello store locale.
1735
+ * Questo store locale potrebbe essere il localStorage (implementazione di default data dal **DefaultStorageProvider**),
1736
+ * oppure un'implementazione custom facente capo a un DB esterno.
1737
+ *
1738
+ * In questo ultimo caso però sarà necessario implementarsi un proprio **BaseSessionRetriever**
1739
+ * che generi una chiave univoca di sessione su cui tutte le operazioni di questa classe saranno eseguite
1740
+ */
1741
+ class BaseStorageProvider {
1742
+ /** @ignore Costruttore */
1743
+ constructor(session) {
1744
+ this.session = session;
1745
+ }
1746
+ /**
1747
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
1748
+ *
1749
+ * @param {string} key Chiave da storicizzare
1750
+ *
1751
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
1752
+ */
1753
+ getKey(key) {
1754
+ return this.session.getSessionKey() + "§" + key + "§";
1755
+ }
1756
+ }
1757
+
1758
+ /**
1759
+ * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
1760
+ */
1761
+ class BaseSessionRetriever {
1762
+ }
1763
+
1710
1764
  // Angular
1711
1765
  /**
1712
- * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dal localStorage
1766
+ * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
1767
+ *
1768
+ * N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
1769
+ * observable effettuino l'unsubscribe automaticamente terminata la prima operazine
1713
1770
  */
1714
1771
  class StorageService {
1715
1772
  /**
@@ -1717,8 +1774,10 @@ class StorageService {
1717
1774
  *
1718
1775
  * @ignore
1719
1776
  */
1720
- constructor(APPSEARCH_PREFIX) {
1777
+ constructor(APPSEARCH_PREFIX, _session, _storage) {
1721
1778
  this.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
1779
+ this._session = _session;
1780
+ this._storage = _storage;
1722
1781
  }
1723
1782
  /**
1724
1783
  * 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 +1786,172 @@ class StorageService {
1727
1786
  * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
1728
1787
  * @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
1729
1788
  */
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
- }
1789
+ setItem(storeName, item) {
1790
+ var finalItem;
1791
+ //Se sto salvando un oggetto con "items" e "page" vuol dire che è un appsearch, la ripulisco
1792
+ if (item.items && item.page) {
1793
+ finalItem = JSON.parse(JSON.stringify(item));
1794
+ finalItem.items = [];
1795
+ finalItem.savedstate = true;
1796
+ finalItem.savedprefix = this.APPSEARCH_PREFIX || 'Hot';
1752
1797
  }
1798
+ else
1799
+ finalItem = item;
1800
+ return this._storage.setItem(storeName, finalItem).pipe(first(), tap(res => {
1801
+ if (res == false)
1802
+ console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
1803
+ }));
1753
1804
  }
1754
1805
  /**
1755
- * Inserisce un oggetto nel localstorage dopo averlo serializzato
1806
+ * Recupera un oggetto dallo Storage Locale
1807
+ *
1808
+ * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
1756
1809
  *
1757
- * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **item**
1758
- * @param {any} item Oggetto da storicizzare
1810
+ * @returns {any} Oggetto recuperato e deserializzato
1759
1811
  */
1760
- setAny(storeName, item) {
1761
- localStorage.setItem(storeName, JSON.stringify(item));
1812
+ getItem(storeName) {
1813
+ return this._storage.getItem(storeName).pipe(first(), tap(res => {
1814
+ if (res == null)
1815
+ console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
1816
+ }));
1762
1817
  }
1763
1818
  /**
1764
- * Recupera un oggetto dal localStorage
1765
- *
1766
- * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
1819
+ * Ripulisce lo Storage Locale
1767
1820
  *
1768
- * @returns {any} Oggetto recuperato e deserializzato
1821
+ * @param {string} storeName Chiave del localStorage da ripulire
1769
1822
  */
1770
- getAny(storeName) {
1771
- return JSON.parse(localStorage.getItem(storeName));
1823
+ removeItem(storeName) {
1824
+ return this._storage.removeItem(storeName).pipe(first(), tap(res => {
1825
+ if (res == false)
1826
+ console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
1827
+ }));
1772
1828
  }
1773
1829
  /**
1774
- * Ripulisce il localStorage
1830
+ * Ripulisce lo Storage Locale di ogni cosa salvata
1775
1831
  *
1776
1832
  * @param {string} storeName Chiave del localStorage da ripulire
1777
1833
  */
1778
- clear(storeName) {
1779
- localStorage.removeItem(storeName);
1834
+ clear() {
1835
+ return this._storage.clear().pipe(first(), tap(res => {
1836
+ if (res == false)
1837
+ console.warn("Impossibile ripulire lo Storage Locale");
1838
+ }));
1839
+ }
1840
+ /**
1841
+ * Restituisce tutte le chiavi-valore associate alla sessione corrente
1842
+ *
1843
+ * @returns {Observable<{ [index: string]: string; }>} Risultato della query
1844
+ */
1845
+ getAll() {
1846
+ return this._storage.getAll().pipe(first());
1780
1847
  }
1781
1848
  }
1782
1849
  StorageService.decorators = [
1783
1850
  { type: Injectable }
1784
1851
  ];
1785
1852
  StorageService.ctorParameters = () => [
1786
- { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] }
1853
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APPSEARCH_PREFIX,] }] },
1854
+ { type: BaseSessionRetriever },
1855
+ { type: BaseStorageProvider }
1856
+ ];
1857
+
1858
+ /**
1859
+ * Implementazione di default per la classe **BaseSessionRetriever**
1860
+ */
1861
+ class DefaultSessionRetriever extends BaseSessionRetriever {
1862
+ /**
1863
+ * Costruttore
1864
+ *
1865
+ * @ignore
1866
+ */
1867
+ constructor() { super(); }
1868
+ /**
1869
+ * Ottiene un ID sessione
1870
+ *
1871
+ * @returns {string} ID sessione
1872
+ */
1873
+ getSessionKey() {
1874
+ return "DUMMY_SESSION";
1875
+ }
1876
+ }
1877
+ DefaultSessionRetriever.decorators = [
1878
+ { type: Injectable }
1879
+ ];
1880
+ DefaultSessionRetriever.ctorParameters = () => [];
1881
+
1882
+ /** Implementazione di default per la classe **BaseStorageProvider** */
1883
+ class DefaultStorageProvider extends BaseStorageProvider {
1884
+ /** @ignore Costruttore */
1885
+ constructor(session) { super(session); }
1886
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1887
+ setItem(key, value) {
1888
+ try {
1889
+ localStorage.setItem(key, JSON.stringify(value));
1890
+ return of(true);
1891
+ }
1892
+ catch (_a) {
1893
+ // 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
1894
+ if (value.savedprefix) {
1895
+ console.warn("Spazio del local Storage insufficiente, prova a ripulirlo e risalvare");
1896
+ //Pulisco tutte le view con nome che parta per "Hot"
1897
+ for (let key in localStorage) {
1898
+ if (localStorage.hasOwnProperty(key) && key.startsWith(value.savedprefix))
1899
+ delete localStorage[key];
1900
+ }
1901
+ try {
1902
+ localStorage.setItem(key, JSON.stringify(value));
1903
+ }
1904
+ catch (e) {
1905
+ console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
1906
+ }
1907
+ }
1908
+ return of(false);
1909
+ }
1910
+ }
1911
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1912
+ getItem(key) {
1913
+ try {
1914
+ var ret = JSON.parse(localStorage.getItem(key));
1915
+ return of(ret);
1916
+ }
1917
+ catch (_a) {
1918
+ return of(null);
1919
+ }
1920
+ }
1921
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1922
+ removeItem(key) {
1923
+ try {
1924
+ localStorage.removeItem(key);
1925
+ return of(true);
1926
+ }
1927
+ catch (_a) {
1928
+ return of(false);
1929
+ }
1930
+ }
1931
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1932
+ clear() {
1933
+ try {
1934
+ localStorage.clear();
1935
+ return of(true);
1936
+ }
1937
+ catch (_a) {
1938
+ return of(false);
1939
+ }
1940
+ }
1941
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
1942
+ getAll() {
1943
+ var ret = {};
1944
+ for (let key in localStorage) {
1945
+ ret[key] = localStorage[key];
1946
+ }
1947
+ return of(ret);
1948
+ }
1949
+ }
1950
+ DefaultStorageProvider.decorators = [
1951
+ { type: Injectable }
1952
+ ];
1953
+ DefaultStorageProvider.ctorParameters = () => [
1954
+ { type: BaseSessionRetriever }
1787
1955
  ];
1788
1956
 
1789
1957
  // Angular
@@ -1796,6 +1964,8 @@ StorageService.ctorParameters = () => [
1796
1964
  * MessageService,
1797
1965
  * UtilityService,
1798
1966
  * StorageService,
1967
+ *
1968
+ * con eventuali provider che utilizzano
1799
1969
  */
1800
1970
  class FullExtensionsModule {
1801
1971
  static forRoot(config) {
@@ -1812,7 +1982,9 @@ class FullExtensionsModule {
1812
1982
  { provide: EXT_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
1813
1983
  { provide: EXT_FANCY_ALERTS, useValue: (config === null || config === void 0 ? void 0 : config.fancy_alerts) || true },
1814
1984
  { 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 }
1985
+ { 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 },
1986
+ { provide: BaseSessionRetriever, useClass: (config === null || config === void 0 ? void 0 : config.sessionRetriever) || DefaultSessionRetriever },
1987
+ { provide: BaseStorageProvider, useClass: (config === null || config === void 0 ? void 0 : config.storageProvider) || DefaultStorageProvider },
1816
1988
  ]
1817
1989
  };
1818
1990
  }
@@ -1847,5 +2019,5 @@ class GenericItem {
1847
2019
  * Generated bundle index. Do not edit.
1848
2020
  */
1849
2021
 
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 };
2022
+ 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
2023
  //# sourceMappingURL=esfaenza-extensions.js.map