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