@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,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('ngx-toastr'), require('sweetalert2'), require('cerialize')) :
3
- typeof define === 'function' && define.amd ? define('@esfaenza/extensions', ['exports', '@angular/core', 'ngx-toastr', 'sweetalert2', 'cerialize'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.esfaenza = global.esfaenza || {}, global.esfaenza.extensions = {}), global.ng.core, global.ngxToastr, global.swal, global.cerialize));
5
- })(this, (function (exports, core, ngxToastr, swal, cerialize) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('ngx-toastr'), require('sweetalert2'), require('cerialize'), require('rxjs/operators'), require('rxjs')) :
3
+ typeof define === 'function' && define.amd ? define('@esfaenza/extensions', ['exports', '@angular/core', 'ngx-toastr', 'sweetalert2', 'cerialize', 'rxjs/operators', 'rxjs'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.esfaenza = global.esfaenza || {}, global.esfaenza.extensions = {}), global.ng.core, global.ngxToastr, global.swal, global.cerialize, global.rxjs.operators, global.rxjs));
5
+ })(this, (function (exports, core, ngxToastr, swal, cerialize, operators, rxjs) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -1014,7 +1014,7 @@
1014
1014
  columns.forEach(function (t) {
1015
1015
  var propValue = obj.properties[t.key];
1016
1016
  Object.defineProperty(obj, t.key + "_exp", { value: propValue, writable: false, enumerable: true });
1017
- headers.push({ label: t.label, key: t.key + "_exp", order: t.order });
1017
+ headers.push({ label: t.label, key: t.key + "_exp", order: t.order, type: t.type });
1018
1018
  });
1019
1019
  //Tirati fuori tutti gli header faccio sort sull'ordinamento
1020
1020
  return headers.sort(function (a, b) { return a.order - b.order; });
@@ -1067,7 +1067,7 @@
1067
1067
  // Se è un formato data mi assicuro di non stampare mai una data 00:00:00 altrimenti in esportazione viene uno schifo
1068
1068
  var val = obj[prop] ? this.dates.trimSeconds(obj[prop].toString()) : "";
1069
1069
  Object.defineProperty(obj, prop + "_nofmt", { value: val, writable: false, enumerable: true });
1070
- headers.push({ label: lbl ? lbl : prop + "_nofmt", key: prop + "_nofmt", order: order });
1070
+ headers.push({ label: lbl ? lbl : prop + "_nofmt", key: prop + "_nofmt", order: order, type: "string" });
1071
1071
  }
1072
1072
  else {
1073
1073
  // Caso formato numerico
@@ -1079,7 +1079,7 @@
1079
1079
  // Il singolo punto che c'è, se presente (separatore decimali) lo trasformo in virgola
1080
1080
  var valConverted = val_1.replace(".", ",");
1081
1081
  Object.defineProperty(obj, prop + "_fmt", { value: valConverted, writable: false, enumerable: true });
1082
- headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order });
1082
+ headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order, type: "number" });
1083
1083
  }
1084
1084
  else {
1085
1085
  // Se ho un formato data trasformo in dayjs, formatto ed esporto
@@ -1087,7 +1087,7 @@
1087
1087
  // Se non funziona provo a definirgli la formattazione standard del metering per quel linguaggio
1088
1088
  var val_2 = this.dates.getFormatted(obj[prop], format.length <= 10, false);
1089
1089
  Object.defineProperty(obj, prop + "_fmt", { value: val_2 !== null && val_2 !== void 0 ? val_2 : "", writable: false, enumerable: true });
1090
- headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order });
1090
+ headers.push({ label: lbl ? lbl : prop + "_fmt", key: prop + "_fmt", order: order, type: "date" });
1091
1091
  }
1092
1092
  }
1093
1093
  }
@@ -1120,16 +1120,19 @@
1120
1120
  var order = obj[prop + csvOrdPrefix];
1121
1121
  //Se per questa proprietà ho un formato lo applico
1122
1122
  var format = obj[prop + csvFormatPrefix];
1123
+ var type = "string";
1123
1124
  if (format == "F") {
1124
1125
  var val = value.toString();
1125
1126
  val = val.replace(/,/, "");
1126
1127
  value = val.replace(".", ",");
1128
+ type = "number";
1127
1129
  }
1128
1130
  else if (format) {
1129
1131
  value = this.dates.getFormatted(value, format.length <= 10, false);
1132
+ type = "date";
1130
1133
  }
1131
1134
  Object.defineProperty(obj, prop, { value: value, writable: false, enumerable: true });
1132
- headers.push({ label: lbl ? lbl : prop, key: prop, order: order });
1135
+ headers.push({ label: lbl ? lbl : prop, key: prop, order: order, type: type });
1133
1136
  };
1134
1137
  /**
1135
1138
  * Setup per l'esportazione di una lista di valori pivottati dinamicamente:
@@ -1171,15 +1174,19 @@
1171
1174
  tmpRes = JSON.parse(JSON.stringify(listitem));
1172
1175
  jumps.forEach(function (pp) { tmpRes = tmpRes[pp]; });
1173
1176
  var value = tmpRes;
1177
+ var type = "string";
1174
1178
  if (valueformat == "F") {
1175
1179
  var val = value != null ? value.toString() : "";
1176
1180
  val = val.replace(/,/, "");
1177
1181
  value = val.replace(".", ",");
1182
+ type = "number";
1178
1183
  }
1179
- else if (valueformat)
1184
+ else if (valueformat) {
1180
1185
  value = this_1.dates.getFormatted(obj[prop], valueformat.length <= 10, false);
1186
+ type = "date";
1187
+ }
1181
1188
  Object.defineProperty(obj, prop + idx, { value: value, writable: false });
1182
- headers.push({ label: header, key: prop + idx, order: order + idx });
1189
+ headers.push({ label: header, key: prop + idx, order: order + idx, type: type });
1183
1190
  };
1184
1191
  var this_1 = this, headersplit, header;
1185
1192
  for (var idx = 0; idx < objs.length; idx++) {
@@ -1230,7 +1237,7 @@
1230
1237
  var value = tmpRes;
1231
1238
  var propname = prop + idx.toString() + idxinternal.toString();
1232
1239
  Object.defineProperty(obj, propname, { value: value, writable: false });
1233
- headers.push({ label: header + " " + desc, key: propname, order: order + idx });
1240
+ headers.push({ label: header + " " + desc, key: propname, order: order + idx, type: 'string' });
1234
1241
  });
1235
1242
  };
1236
1243
  var headersplit, header, valuesplit;
@@ -1268,8 +1275,11 @@
1268
1275
  /**
1269
1276
  * Blacklist dei tipi da ignorare quando si effettua l'hashing degli oggetti
1270
1277
  */
1271
- this.ObjectHashingBlacklist = ["NgForm", "ElementRef", "ExtensionsService", "ToastrService", "LocaleService", "AppState", "Router", "ActivatedRoute", "HTTPService", "Location",
1272
- "CanvasComponent", "ModalDirective", "ChangeDetectorRef", "DateService", "EventEmitter", "ViewRef_", "Subscriber", "ItemLocalization"];
1278
+ this.objBlacklist = {
1279
+ "NgForm": true, "ElementRef": true, "ExtensionsService": true, "ToastrService": true, "LocaleService": true, "AppState": true, "Router": true,
1280
+ "ActivatedRoute": true, "HTTPService": true, "Location": true, "CanvasComponent": true, "ModalDirective": true, "ChangeDetectorRef": true,
1281
+ "DateService": true, "EventEmitter": true, "ViewRef_": true, "Subscriber": true, "ItemLocalization": true
1282
+ };
1273
1283
  /**
1274
1284
  * Array dei possibili valori di un simbolo esadecimale
1275
1285
  */
@@ -1293,14 +1303,34 @@
1293
1303
  * @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
1294
1304
  * @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
1295
1305
  *
1296
- * @returns {string} md5 generato per l'oggetto in questione
1306
+ * @returns {string} Hash generato per l'oggetto in questione
1297
1307
  */
1298
- HashingService.prototype.hashObject = function (o, level, navigateFullDepth) {
1308
+ HashingService.prototype.hashObject = function (o, level, navigateFullDepth, precise) {
1299
1309
  if (level === void 0) { level = 0; }
1300
1310
  if (navigateFullDepth === void 0) { navigateFullDepth = false; }
1311
+ if (precise === void 0) { precise = false; }
1301
1312
  var strDef = this.stringify(o, level, navigateFullDepth);
1302
- var md5 = this.md5(strDef);
1303
- return md5;
1313
+ var hash = precise ? this.md5(strDef) : this.simpleHash(strDef);
1314
+ return hash;
1315
+ };
1316
+ /**
1317
+ * Hash più semplice e più veloce dell'md5, ma meno sicuro
1318
+ *
1319
+ * Vedi https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
1320
+ *
1321
+ * @param {string} str Stringa di cui calcolare l'hash
1322
+ */
1323
+ HashingService.prototype.simpleHash = function (str, seed) {
1324
+ if (seed === void 0) { seed = 0; }
1325
+ var h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
1326
+ for (var i = 0, ch = void 0; i < str.length; i++) {
1327
+ ch = str.charCodeAt(i);
1328
+ h1 = Math.imul(h1 ^ ch, 2654435761);
1329
+ h2 = Math.imul(h2 ^ ch, 1597334677);
1330
+ }
1331
+ h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
1332
+ h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
1333
+ return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString();
1304
1334
  };
1305
1335
  /**
1306
1336
  * Genera una stringa che identifica univocamente l'oggetto in questione
@@ -1318,14 +1348,14 @@
1318
1348
  if (o === false)
1319
1349
  return "f";
1320
1350
  if (o instanceof Date)
1321
- return "d:" + o.toString();
1351
+ return 'd:' + o.valueOf().toString();
1322
1352
  i = typeof o;
1323
1353
  if (i === "string")
1324
- return "s:" + o.replace(/([\\\\;])/g, "\\$1");
1354
+ return "s:" + o;
1325
1355
  if (i === "number")
1326
1356
  return "n:" + o;
1327
1357
  if (o instanceof Function)
1328
- return "m:" + o.toString().replace(/([\\\\;])/g, "\\$1");
1358
+ return "m:" + o.toString();
1329
1359
  if (o instanceof Array) {
1330
1360
  r = [];
1331
1361
  for (i = 0; i < o.length; i++) {
@@ -1339,7 +1369,7 @@
1339
1369
  //Se è oggetto, escludo tutti quelli di sistema/inutili
1340
1370
  if (o) {
1341
1371
  var name = o.__proto__.constructor.name;
1342
- if (this.ObjectHashingBlacklist.indexOf(name) == -1) {
1372
+ if (!this.objBlacklist[name]) {
1343
1373
  for (i in o) {
1344
1374
  if (o.hasOwnProperty(i) && (level <= 2 || navigateFullDepth)) {
1345
1375
  var res = this.stringify(o[i], level + 1, navigateFullDepth);
@@ -1758,9 +1788,47 @@
1758
1788
  { type: core.Injectable }
1759
1789
  ];
1760
1790
 
1791
+ /**
1792
+ * Classe che gestisce la scrittura delle informazioni nello store locale.
1793
+ * Questo store locale potrebbe essere il localStorage (implementazione di default data dal **DefaultStorageProvider**),
1794
+ * oppure un'implementazione custom facente capo a un DB esterno.
1795
+ *
1796
+ * In questo ultimo caso però sarà necessario implementarsi un proprio **BaseSessionRetriever**
1797
+ * che generi una chiave univoca di sessione su cui tutte le operazioni di questa classe saranno eseguite
1798
+ */
1799
+ var BaseStorageProvider = /** @class */ (function () {
1800
+ /** @ignore Costruttore */
1801
+ function BaseStorageProvider(session) {
1802
+ this.session = session;
1803
+ }
1804
+ /**
1805
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
1806
+ *
1807
+ * @param {string} key Chiave da storicizzare
1808
+ *
1809
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
1810
+ */
1811
+ BaseStorageProvider.prototype.getKey = function (key) {
1812
+ return this.session.getSessionKey() + "§" + key + "§";
1813
+ };
1814
+ return BaseStorageProvider;
1815
+ }());
1816
+
1817
+ /**
1818
+ * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
1819
+ */
1820
+ var BaseSessionRetriever = /** @class */ (function () {
1821
+ function BaseSessionRetriever() {
1822
+ }
1823
+ return BaseSessionRetriever;
1824
+ }());
1825
+
1761
1826
  // Angular
1762
1827
  /**
1763
- * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dal localStorage
1828
+ * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
1829
+ *
1830
+ * N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
1831
+ * observable effettuino l'unsubscribe automaticamente terminata la prima operazine
1764
1832
  */
1765
1833
  var StorageService = /** @class */ (function () {
1766
1834
  /**
@@ -1768,8 +1836,10 @@
1768
1836
  *
1769
1837
  * @ignore
1770
1838
  */
1771
- function StorageService(APPSEARCH_PREFIX) {
1839
+ function StorageService(APPSEARCH_PREFIX, _session, _storage) {
1772
1840
  this.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
1841
+ this._session = _session;
1842
+ this._storage = _storage;
1773
1843
  }
1774
1844
  /**
1775
1845
  * 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
@@ -1778,56 +1848,64 @@
1778
1848
  * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
1779
1849
  * @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
1780
1850
  */
1781
- StorageService.prototype.setItem = function (storeName, itemsContainer) {
1782
- var _a;
1783
- //Prima di salvare elimino gli oggetti per non fillare il localStorage di spazzatura
1784
- var item = JSON.parse(JSON.stringify(itemsContainer));
1785
- item.items = [];
1786
- item.savedstate = true;
1787
- try {
1788
- localStorage.setItem(storeName, JSON.stringify(item));
1789
- }
1790
- catch (e) {
1791
- console.warn("Spazio del local Storage insufficiente per salvare la view. Fallback a cleanup e salvataggio");
1792
- //Pulisco tutte le view con nome che parta per "Hot"
1793
- for (var key in localStorage) {
1794
- if (localStorage.hasOwnProperty(key) && key.startsWith((_a = this.APPSEARCH_PREFIX) !== null && _a !== void 0 ? _a : 'Hot'))
1795
- delete localStorage[key];
1796
- }
1797
- try {
1798
- localStorage.setItem(storeName, JSON.stringify(item));
1799
- }
1800
- catch (e) {
1801
- console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
1802
- }
1851
+ StorageService.prototype.setItem = function (storeName, item) {
1852
+ var finalItem;
1853
+ //Se sto salvando un oggetto con "items" e "page" vuol dire che è un appsearch, la ripulisco
1854
+ if (item.items && item.page) {
1855
+ finalItem = JSON.parse(JSON.stringify(item));
1856
+ finalItem.items = [];
1857
+ finalItem.savedstate = true;
1858
+ finalItem.savedprefix = this.APPSEARCH_PREFIX || 'Hot';
1803
1859
  }
1860
+ else
1861
+ finalItem = item;
1862
+ return this._storage.setItem(storeName, finalItem).pipe(operators.first(), operators.tap(function (res) {
1863
+ if (res == false)
1864
+ console.error("Impossibile effettuare il salvataggio dell'oggetto all'interno dello Storage Locale per la chiave " + storeName);
1865
+ }));
1804
1866
  };
1805
1867
  /**
1806
- * Inserisce un oggetto nel localstorage dopo averlo serializzato
1868
+ * Recupera un oggetto dallo Storage Locale
1869
+ *
1870
+ * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
1807
1871
  *
1808
- * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **item**
1809
- * @param {any} item Oggetto da storicizzare
1872
+ * @returns {any} Oggetto recuperato e deserializzato
1810
1873
  */
1811
- StorageService.prototype.setAny = function (storeName, item) {
1812
- localStorage.setItem(storeName, JSON.stringify(item));
1874
+ StorageService.prototype.getItem = function (storeName) {
1875
+ return this._storage.getItem(storeName).pipe(operators.first(), operators.tap(function (res) {
1876
+ if (res == null)
1877
+ console.warn("Impossibile ottenere l'oggetto salvato con chiave " + storeName);
1878
+ }));
1813
1879
  };
1814
1880
  /**
1815
- * Recupera un oggetto dal localStorage
1816
- *
1817
- * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
1881
+ * Ripulisce lo Storage Locale
1818
1882
  *
1819
- * @returns {any} Oggetto recuperato e deserializzato
1883
+ * @param {string} storeName Chiave del localStorage da ripulire
1820
1884
  */
1821
- StorageService.prototype.getAny = function (storeName) {
1822
- return JSON.parse(localStorage.getItem(storeName));
1885
+ StorageService.prototype.removeItem = function (storeName) {
1886
+ return this._storage.removeItem(storeName).pipe(operators.first(), operators.tap(function (res) {
1887
+ if (res == false)
1888
+ console.warn("Impossibile rimuovere l'oggetto salvato con chiave " + storeName);
1889
+ }));
1823
1890
  };
1824
1891
  /**
1825
- * Ripulisce il localStorage
1892
+ * Ripulisce lo Storage Locale di ogni cosa salvata
1826
1893
  *
1827
1894
  * @param {string} storeName Chiave del localStorage da ripulire
1828
1895
  */
1829
- StorageService.prototype.clear = function (storeName) {
1830
- localStorage.removeItem(storeName);
1896
+ StorageService.prototype.clear = function () {
1897
+ return this._storage.clear().pipe(operators.first(), operators.tap(function (res) {
1898
+ if (res == false)
1899
+ console.warn("Impossibile ripulire lo Storage Locale");
1900
+ }));
1901
+ };
1902
+ /**
1903
+ * Restituisce tutte le chiavi-valore associate alla sessione corrente
1904
+ *
1905
+ * @returns {Observable<{ [index: string]: string; }>} Risultato della query
1906
+ */
1907
+ StorageService.prototype.getAll = function () {
1908
+ return this._storage.getAll().pipe(operators.first());
1831
1909
  };
1832
1910
  return StorageService;
1833
1911
  }());
@@ -1835,7 +1913,425 @@
1835
1913
  { type: core.Injectable }
1836
1914
  ];
1837
1915
  StorageService.ctorParameters = function () { return [
1838
- { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [APPSEARCH_PREFIX,] }] }
1916
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [APPSEARCH_PREFIX,] }] },
1917
+ { type: BaseSessionRetriever },
1918
+ { type: BaseStorageProvider }
1919
+ ]; };
1920
+
1921
+ /*! *****************************************************************************
1922
+ Copyright (c) Microsoft Corporation.
1923
+
1924
+ Permission to use, copy, modify, and/or distribute this software for any
1925
+ purpose with or without fee is hereby granted.
1926
+
1927
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1928
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1929
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1930
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1931
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1932
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1933
+ PERFORMANCE OF THIS SOFTWARE.
1934
+ ***************************************************************************** */
1935
+ /* global Reflect, Promise */
1936
+ var extendStatics = function (d, b) {
1937
+ extendStatics = Object.setPrototypeOf ||
1938
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1939
+ function (d, b) { for (var p in b)
1940
+ if (Object.prototype.hasOwnProperty.call(b, p))
1941
+ d[p] = b[p]; };
1942
+ return extendStatics(d, b);
1943
+ };
1944
+ function __extends(d, b) {
1945
+ if (typeof b !== "function" && b !== null)
1946
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1947
+ extendStatics(d, b);
1948
+ function __() { this.constructor = d; }
1949
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1950
+ }
1951
+ var __assign = function () {
1952
+ __assign = Object.assign || function __assign(t) {
1953
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1954
+ s = arguments[i];
1955
+ for (var p in s)
1956
+ if (Object.prototype.hasOwnProperty.call(s, p))
1957
+ t[p] = s[p];
1958
+ }
1959
+ return t;
1960
+ };
1961
+ return __assign.apply(this, arguments);
1962
+ };
1963
+ function __rest(s, e) {
1964
+ var t = {};
1965
+ for (var p in s)
1966
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
1967
+ t[p] = s[p];
1968
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
1969
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1970
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
1971
+ t[p[i]] = s[p[i]];
1972
+ }
1973
+ return t;
1974
+ }
1975
+ function __decorate(decorators, target, key, desc) {
1976
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1977
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
1978
+ r = Reflect.decorate(decorators, target, key, desc);
1979
+ else
1980
+ for (var i = decorators.length - 1; i >= 0; i--)
1981
+ if (d = decorators[i])
1982
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1983
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1984
+ }
1985
+ function __param(paramIndex, decorator) {
1986
+ return function (target, key) { decorator(target, key, paramIndex); };
1987
+ }
1988
+ function __metadata(metadataKey, metadataValue) {
1989
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1990
+ return Reflect.metadata(metadataKey, metadataValue);
1991
+ }
1992
+ function __awaiter(thisArg, _arguments, P, generator) {
1993
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1994
+ return new (P || (P = Promise))(function (resolve, reject) {
1995
+ function fulfilled(value) { try {
1996
+ step(generator.next(value));
1997
+ }
1998
+ catch (e) {
1999
+ reject(e);
2000
+ } }
2001
+ function rejected(value) { try {
2002
+ step(generator["throw"](value));
2003
+ }
2004
+ catch (e) {
2005
+ reject(e);
2006
+ } }
2007
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
2008
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
2009
+ });
2010
+ }
2011
+ function __generator(thisArg, body) {
2012
+ var _ = { label: 0, sent: function () { if (t[0] & 1)
2013
+ throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
2014
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
2015
+ function verb(n) { return function (v) { return step([n, v]); }; }
2016
+ function step(op) {
2017
+ if (f)
2018
+ throw new TypeError("Generator is already executing.");
2019
+ while (_)
2020
+ try {
2021
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
2022
+ return t;
2023
+ if (y = 0, t)
2024
+ op = [op[0] & 2, t.value];
2025
+ switch (op[0]) {
2026
+ case 0:
2027
+ case 1:
2028
+ t = op;
2029
+ break;
2030
+ case 4:
2031
+ _.label++;
2032
+ return { value: op[1], done: false };
2033
+ case 5:
2034
+ _.label++;
2035
+ y = op[1];
2036
+ op = [0];
2037
+ continue;
2038
+ case 7:
2039
+ op = _.ops.pop();
2040
+ _.trys.pop();
2041
+ continue;
2042
+ default:
2043
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
2044
+ _ = 0;
2045
+ continue;
2046
+ }
2047
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
2048
+ _.label = op[1];
2049
+ break;
2050
+ }
2051
+ if (op[0] === 6 && _.label < t[1]) {
2052
+ _.label = t[1];
2053
+ t = op;
2054
+ break;
2055
+ }
2056
+ if (t && _.label < t[2]) {
2057
+ _.label = t[2];
2058
+ _.ops.push(op);
2059
+ break;
2060
+ }
2061
+ if (t[2])
2062
+ _.ops.pop();
2063
+ _.trys.pop();
2064
+ continue;
2065
+ }
2066
+ op = body.call(thisArg, _);
2067
+ }
2068
+ catch (e) {
2069
+ op = [6, e];
2070
+ y = 0;
2071
+ }
2072
+ finally {
2073
+ f = t = 0;
2074
+ }
2075
+ if (op[0] & 5)
2076
+ throw op[1];
2077
+ return { value: op[0] ? op[1] : void 0, done: true };
2078
+ }
2079
+ }
2080
+ var __createBinding = Object.create ? (function (o, m, k, k2) {
2081
+ if (k2 === undefined)
2082
+ k2 = k;
2083
+ Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
2084
+ }) : (function (o, m, k, k2) {
2085
+ if (k2 === undefined)
2086
+ k2 = k;
2087
+ o[k2] = m[k];
2088
+ });
2089
+ function __exportStar(m, o) {
2090
+ for (var p in m)
2091
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
2092
+ __createBinding(o, m, p);
2093
+ }
2094
+ function __values(o) {
2095
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
2096
+ if (m)
2097
+ return m.call(o);
2098
+ if (o && typeof o.length === "number")
2099
+ return {
2100
+ next: function () {
2101
+ if (o && i >= o.length)
2102
+ o = void 0;
2103
+ return { value: o && o[i++], done: !o };
2104
+ }
2105
+ };
2106
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
2107
+ }
2108
+ function __read(o, n) {
2109
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
2110
+ if (!m)
2111
+ return o;
2112
+ var i = m.call(o), r, ar = [], e;
2113
+ try {
2114
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
2115
+ ar.push(r.value);
2116
+ }
2117
+ catch (error) {
2118
+ e = { error: error };
2119
+ }
2120
+ finally {
2121
+ try {
2122
+ if (r && !r.done && (m = i["return"]))
2123
+ m.call(i);
2124
+ }
2125
+ finally {
2126
+ if (e)
2127
+ throw e.error;
2128
+ }
2129
+ }
2130
+ return ar;
2131
+ }
2132
+ /** @deprecated */
2133
+ function __spread() {
2134
+ for (var ar = [], i = 0; i < arguments.length; i++)
2135
+ ar = ar.concat(__read(arguments[i]));
2136
+ return ar;
2137
+ }
2138
+ /** @deprecated */
2139
+ function __spreadArrays() {
2140
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++)
2141
+ s += arguments[i].length;
2142
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
2143
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
2144
+ r[k] = a[j];
2145
+ return r;
2146
+ }
2147
+ function __spreadArray(to, from) {
2148
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
2149
+ to[j] = from[i];
2150
+ return to;
2151
+ }
2152
+ function __await(v) {
2153
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
2154
+ }
2155
+ function __asyncGenerator(thisArg, _arguments, generator) {
2156
+ if (!Symbol.asyncIterator)
2157
+ throw new TypeError("Symbol.asyncIterator is not defined.");
2158
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
2159
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
2160
+ function verb(n) { if (g[n])
2161
+ i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
2162
+ function resume(n, v) { try {
2163
+ step(g[n](v));
2164
+ }
2165
+ catch (e) {
2166
+ settle(q[0][3], e);
2167
+ } }
2168
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
2169
+ function fulfill(value) { resume("next", value); }
2170
+ function reject(value) { resume("throw", value); }
2171
+ function settle(f, v) { if (f(v), q.shift(), q.length)
2172
+ resume(q[0][0], q[0][1]); }
2173
+ }
2174
+ function __asyncDelegator(o) {
2175
+ var i, p;
2176
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
2177
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
2178
+ }
2179
+ function __asyncValues(o) {
2180
+ if (!Symbol.asyncIterator)
2181
+ throw new TypeError("Symbol.asyncIterator is not defined.");
2182
+ var m = o[Symbol.asyncIterator], i;
2183
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
2184
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
2185
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
2186
+ }
2187
+ function __makeTemplateObject(cooked, raw) {
2188
+ if (Object.defineProperty) {
2189
+ Object.defineProperty(cooked, "raw", { value: raw });
2190
+ }
2191
+ else {
2192
+ cooked.raw = raw;
2193
+ }
2194
+ return cooked;
2195
+ }
2196
+ ;
2197
+ var __setModuleDefault = Object.create ? (function (o, v) {
2198
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
2199
+ }) : function (o, v) {
2200
+ o["default"] = v;
2201
+ };
2202
+ function __importStar(mod) {
2203
+ if (mod && mod.__esModule)
2204
+ return mod;
2205
+ var result = {};
2206
+ if (mod != null)
2207
+ for (var k in mod)
2208
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
2209
+ __createBinding(result, mod, k);
2210
+ __setModuleDefault(result, mod);
2211
+ return result;
2212
+ }
2213
+ function __importDefault(mod) {
2214
+ return (mod && mod.__esModule) ? mod : { default: mod };
2215
+ }
2216
+ function __classPrivateFieldGet(receiver, privateMap) {
2217
+ if (!privateMap.has(receiver)) {
2218
+ throw new TypeError("attempted to get private field on non-instance");
2219
+ }
2220
+ return privateMap.get(receiver);
2221
+ }
2222
+ function __classPrivateFieldSet(receiver, privateMap, value) {
2223
+ if (!privateMap.has(receiver)) {
2224
+ throw new TypeError("attempted to set private field on non-instance");
2225
+ }
2226
+ privateMap.set(receiver, value);
2227
+ return value;
2228
+ }
2229
+
2230
+ /**
2231
+ * Implementazione di default per la classe **BaseSessionRetriever**
2232
+ */
2233
+ var DefaultSessionRetriever = /** @class */ (function (_super) {
2234
+ __extends(DefaultSessionRetriever, _super);
2235
+ /**
2236
+ * Costruttore
2237
+ *
2238
+ * @ignore
2239
+ */
2240
+ function DefaultSessionRetriever() {
2241
+ return _super.call(this) || this;
2242
+ }
2243
+ /**
2244
+ * Ottiene un ID sessione
2245
+ *
2246
+ * @returns {string} ID sessione
2247
+ */
2248
+ DefaultSessionRetriever.prototype.getSessionKey = function () {
2249
+ return "DUMMY_SESSION";
2250
+ };
2251
+ return DefaultSessionRetriever;
2252
+ }(BaseSessionRetriever));
2253
+ DefaultSessionRetriever.decorators = [
2254
+ { type: core.Injectable }
2255
+ ];
2256
+ DefaultSessionRetriever.ctorParameters = function () { return []; };
2257
+
2258
+ /** Implementazione di default per la classe **BaseStorageProvider** */
2259
+ var DefaultStorageProvider = /** @class */ (function (_super) {
2260
+ __extends(DefaultStorageProvider, _super);
2261
+ /** @ignore Costruttore */
2262
+ function DefaultStorageProvider(session) {
2263
+ return _super.call(this, session) || this;
2264
+ }
2265
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
2266
+ DefaultStorageProvider.prototype.setItem = function (key, value) {
2267
+ try {
2268
+ localStorage.setItem(key, JSON.stringify(value));
2269
+ return rxjs.of(true);
2270
+ }
2271
+ catch (_a) {
2272
+ // 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
2273
+ if (value.savedprefix) {
2274
+ console.warn("Spazio del local Storage insufficiente, prova a ripulirlo e risalvare");
2275
+ //Pulisco tutte le view con nome che parta per "Hot"
2276
+ for (var key_1 in localStorage) {
2277
+ if (localStorage.hasOwnProperty(key_1) && key_1.startsWith(value.savedprefix))
2278
+ delete localStorage[key_1];
2279
+ }
2280
+ try {
2281
+ localStorage.setItem(key, JSON.stringify(value));
2282
+ }
2283
+ catch (e) {
2284
+ console.error("Spazio del local Storage insufficiente per salvare i risultati di ricerca con solo filtri. Non salvo nulla");
2285
+ }
2286
+ }
2287
+ return rxjs.of(false);
2288
+ }
2289
+ };
2290
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
2291
+ DefaultStorageProvider.prototype.getItem = function (key) {
2292
+ try {
2293
+ var ret = JSON.parse(localStorage.getItem(key));
2294
+ return rxjs.of(ret);
2295
+ }
2296
+ catch (_a) {
2297
+ return rxjs.of(null);
2298
+ }
2299
+ };
2300
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
2301
+ DefaultStorageProvider.prototype.removeItem = function (key) {
2302
+ try {
2303
+ localStorage.removeItem(key);
2304
+ return rxjs.of(true);
2305
+ }
2306
+ catch (_a) {
2307
+ return rxjs.of(false);
2308
+ }
2309
+ };
2310
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
2311
+ DefaultStorageProvider.prototype.clear = function () {
2312
+ try {
2313
+ localStorage.clear();
2314
+ return rxjs.of(true);
2315
+ }
2316
+ catch (_a) {
2317
+ return rxjs.of(false);
2318
+ }
2319
+ };
2320
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
2321
+ DefaultStorageProvider.prototype.getAll = function () {
2322
+ var ret = {};
2323
+ for (var key in localStorage) {
2324
+ ret[key] = localStorage[key];
2325
+ }
2326
+ return rxjs.of(ret);
2327
+ };
2328
+ return DefaultStorageProvider;
2329
+ }(BaseStorageProvider));
2330
+ DefaultStorageProvider.decorators = [
2331
+ { type: core.Injectable }
2332
+ ];
2333
+ DefaultStorageProvider.ctorParameters = function () { return [
2334
+ { type: BaseSessionRetriever }
1839
2335
  ]; };
1840
2336
 
1841
2337
  // Angular
@@ -1848,6 +2344,8 @@
1848
2344
  * MessageService,
1849
2345
  * UtilityService,
1850
2346
  * StorageService,
2347
+ *
2348
+ * con eventuali provider che utilizzano
1851
2349
  */
1852
2350
  var FullExtensionsModule = /** @class */ (function () {
1853
2351
  function FullExtensionsModule() {
@@ -1866,7 +2364,9 @@
1866
2364
  { provide: EXT_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
1867
2365
  { provide: EXT_FANCY_ALERTS, useValue: (config === null || config === void 0 ? void 0 : config.fancy_alerts) || true },
1868
2366
  { provide: APPSEARCH_PREFIX, useValue: (config === null || config === void 0 ? void 0 : config.appsearch_prefix) || 'Hot' },
1869
- { 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 }
2367
+ { 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 },
2368
+ { provide: BaseSessionRetriever, useClass: (config === null || config === void 0 ? void 0 : config.sessionRetriever) || DefaultSessionRetriever },
2369
+ { provide: BaseStorageProvider, useClass: (config === null || config === void 0 ? void 0 : config.storageProvider) || DefaultStorageProvider },
1870
2370
  ]
1871
2371
  };
1872
2372
  };
@@ -1912,6 +2412,8 @@
1912
2412
  */
1913
2413
 
1914
2414
  exports.APPSEARCH_PREFIX = APPSEARCH_PREFIX;
2415
+ exports.BaseSessionRetriever = BaseSessionRetriever;
2416
+ exports.BaseStorageProvider = BaseStorageProvider;
1915
2417
  exports.CallResult = CallResult;
1916
2418
  exports.ClipboardService = ClipboardService;
1917
2419
  exports.CsvHeaders = CsvHeaders;
@@ -1931,6 +2433,8 @@
1931
2433
  exports.MessageService = MessageService;
1932
2434
  exports.StorageService = StorageService;
1933
2435
  exports.UtilityService = UtilityService;
2436
+ exports["ɵa"] = DefaultSessionRetriever;
2437
+ exports["ɵb"] = DefaultStorageProvider;
1934
2438
 
1935
2439
  Object.defineProperty(exports, '__esModule', { value: true });
1936
2440