@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,3 +1,6 @@
1
+ import { Type } from "@angular/core";
2
+ import { BaseStorageProvider } from "./providers/base/BaseStorageProvider";
3
+ import { BaseSessionRetriever } from "./session/base/BaseSessionRetriever";
1
4
  /**
2
5
  * Classe di configurazione per il modulo di estensione
3
6
  */
@@ -18,4 +21,12 @@ export declare class ExtensionsModuleConfig {
18
21
  * Prefisso delle searchView che serve per storicizzarle evitando di tirarsi in memoria anche tutti gli oggetti. Se vuoto viene supposto 'Hot'
19
22
  */
20
23
  appsearch_prefix: string;
24
+ /**
25
+ * Classe che si deve occupare per generare un ID univoco di sessione in base al quale verranno salvate le preferenze
26
+ */
27
+ sessionRetriever?: Type<BaseSessionRetriever>;
28
+ /**
29
+ * Classe che si deve occupare di salvare fisicamente le preferenze su un supporto fisico, sia esso un DB, un localStorage o whatever
30
+ */
31
+ storageProvider?: Type<BaseStorageProvider>;
21
32
  }
@@ -0,0 +1,65 @@
1
+ import { Observable } from "rxjs";
2
+ import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
3
+ /**
4
+ * Classe che gestisce la scrittura delle informazioni nello store locale.
5
+ * Questo store locale potrebbe essere il localStorage (implementazione di default data dal **DefaultStorageProvider**),
6
+ * oppure un'implementazione custom facente capo a un DB esterno.
7
+ *
8
+ * In questo ultimo caso però sarà necessario implementarsi un proprio **BaseSessionRetriever**
9
+ * che generi una chiave univoca di sessione su cui tutte le operazioni di questa classe saranno eseguite
10
+ */
11
+ export declare abstract class BaseStorageProvider {
12
+ protected session: BaseSessionRetriever;
13
+ /** @ignore Costruttore */
14
+ constructor(session: BaseSessionRetriever);
15
+ /**
16
+ * Imposta un oggetto data una chiave
17
+ *
18
+ * @param {string} key Chiave per cui impostare il valore serializzato dell'oggetto **value**
19
+ * @param {T} value Valore da serializzare e salvare
20
+ *
21
+ * @returns {Observable<boolean>} Observable che viene risolto quando l'operazione di salvataggio termina.
22
+ * Restituisce true se l'operazione è andata a buon fine, false altrimenti
23
+ */
24
+ abstract setItem<T>(key: string, value: T): Observable<boolean>;
25
+ /**
26
+ * Risolve un oggetto data una chiave
27
+ *
28
+ * @param {string} key Chiave per cui risolvere e recuperare l'oggetto
29
+ *
30
+ * @returns {Observable<T>} Observable che viene risolto quando l'oggetto viene trovato e recuperato.
31
+ * Restituisce "null" se l'oggetto non viene trovato o se ci sono problemi a recuperarlo
32
+ */
33
+ abstract getItem<T>(key: string): Observable<T>;
34
+ /**
35
+ * Rimuove un oggetto salvato con una specifica chiave
36
+ *
37
+ *
38
+ * @returns {Observable<T>} Observable che viene risolto quando l'operazione di eliminazione termina.
39
+ * Restituisce true se l'operazione è andata a buon fine, false altrimenti
40
+ */
41
+ abstract removeItem(key: string): Observable<boolean>;
42
+ /**
43
+ * Ripulisce completamente lo store locale
44
+ *
45
+ * @returns {Observable<boolean>} Observable che viene risolto quando l'operazione di pulizia termina.
46
+ * Restituisce true se l'operazione è andata a buon fine, false altrimenti
47
+ */
48
+ abstract clear(): Observable<boolean>;
49
+ /**
50
+ * Ottiene tutte le chiavi salvate nello store locale
51
+ *
52
+ * @returns {Observable<{ [index: string]: string; }>} Observable che viene risolto quando l'operazione di recupero dati termina.
53
+ */
54
+ abstract getAll(): Observable<{
55
+ [index: string]: string;
56
+ }>;
57
+ /**
58
+ * Ottiene la chiave "Reale" da utilizzare per la persistenza di una chiave generica
59
+ *
60
+ * @param {string} key Chiave da storicizzare
61
+ *
62
+ * @returns {string} Unione fra l'identificativo della sessione e la chiave specificata
63
+ */
64
+ protected getKey(key: string): string;
65
+ }
@@ -0,0 +1,20 @@
1
+ import { Observable } from "rxjs";
2
+ import { BaseSessionRetriever } from "../../session/base/BaseSessionRetriever";
3
+ import { BaseStorageProvider } from "../base/BaseStorageProvider";
4
+ /** Implementazione di default per la classe **BaseStorageProvider** */
5
+ export declare class DefaultStorageProvider extends BaseStorageProvider {
6
+ /** @ignore Costruttore */
7
+ constructor(session: BaseSessionRetriever);
8
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
9
+ setItem<T>(key: string, value: T): Observable<boolean>;
10
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
11
+ getItem<T>(key: string): Observable<T>;
12
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
13
+ removeItem(key: string): Observable<boolean>;
14
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
15
+ clear(): Observable<boolean>;
16
+ /** @ignore Implementazione di Default con localStorage. Identity viene ignorata perché essendo già nel localStorage è già per sito */
17
+ getAll(): Observable<{
18
+ [index: string]: string;
19
+ }>;
20
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Classe astratta che si occupa di recuperare l'Id sessione univoco per applicazione ed utente collegato
3
+ */
4
+ export declare abstract class BaseSessionRetriever {
5
+ /**
6
+ * Ottiene un ID sessione
7
+ *
8
+ * @returns {string} ID sessione
9
+ */
10
+ abstract getSessionKey(): string;
11
+ }
@@ -0,0 +1,18 @@
1
+ import { BaseSessionRetriever } from "../base/BaseSessionRetriever";
2
+ /**
3
+ * Implementazione di default per la classe **BaseSessionRetriever**
4
+ */
5
+ export declare class DefaultSessionRetriever extends BaseSessionRetriever {
6
+ /**
7
+ * Costruttore
8
+ *
9
+ * @ignore
10
+ */
11
+ constructor();
12
+ /**
13
+ * Ottiene un ID sessione
14
+ *
15
+ * @returns {string} ID sessione
16
+ */
17
+ getSessionKey(): string;
18
+ }
@@ -9,6 +9,8 @@ import { ExtensionsModuleConfig } from '../models/ExtensionsModuleConfig';
9
9
  * MessageService,
10
10
  * UtilityService,
11
11
  * StorageService,
12
+ *
13
+ * con eventuali provider che utilizzano
12
14
  */
13
15
  export declare class FullExtensionsModule {
14
16
  static forRoot(config?: ExtensionsModuleConfig): ModuleWithProviders<FullExtensionsModule>;
@@ -15,13 +15,21 @@ export declare class HashingService {
15
15
  * @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
16
16
  * @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
17
17
  *
18
- * @returns {string} md5 generato per l'oggetto in questione
18
+ * @returns {string} Hash generato per l'oggetto in questione
19
19
  */
20
- hashObject(o: any, level?: number, navigateFullDepth?: boolean): string;
20
+ hashObject(o: any, level?: number, navigateFullDepth?: boolean, precise?: boolean): string;
21
+ /**
22
+ * Hash più semplice e più veloce dell'md5, ma meno sicuro
23
+ *
24
+ * Vedi https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
25
+ *
26
+ * @param {string} str Stringa di cui calcolare l'hash
27
+ */
28
+ private simpleHash;
21
29
  /**
22
30
  * Blacklist dei tipi da ignorare quando si effettua l'hashing degli oggetti
23
31
  */
24
- private ObjectHashingBlacklist;
32
+ private objBlacklist;
25
33
  /**
26
34
  * Genera una stringa che identifica univocamente l'oggetto in questione
27
35
  *
@@ -1,14 +1,22 @@
1
+ import { BaseStorageProvider } from "../models/providers/base/BaseStorageProvider";
2
+ import { BaseSessionRetriever } from "../models/session/base/BaseSessionRetriever";
3
+ import { Observable } from "rxjs";
1
4
  /**
2
- * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dal localStorage
5
+ * Service che fornisce funzionalità di base per storicizzazione e recupero oggetti dallo Storage Locale
6
+ *
7
+ * N.B: In ogni chiamata è presente l'operatore rxjs **first()** per far sì che a prescindere dall'implementazione utente/default gli
8
+ * observable effettuino l'unsubscribe automaticamente terminata la prima operazine
3
9
  */
4
10
  export declare class StorageService {
5
11
  private APPSEARCH_PREFIX;
12
+ private _session;
13
+ private _storage;
6
14
  /**
7
15
  * Costruttore
8
16
  *
9
17
  * @ignore
10
18
  */
11
- constructor(APPSEARCH_PREFIX: string);
19
+ constructor(APPSEARCH_PREFIX: string, _session: BaseSessionRetriever, _storage: BaseStorageProvider);
12
20
  /**
13
21
  * 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
14
22
  * salvato, in modo che quando viene recuperato il sistema non pensi che sia un oggetto vuoto ma che sappia che gli oggetti son stati ripuliti per risparmiare spazio
@@ -16,28 +24,33 @@ export declare class StorageService {
16
24
  * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **itemsContainer**
17
25
  * @param {{ items: any[] }} itemsContainer Oggetto da storicizzare
18
26
  */
19
- setItem(storeName: string, itemsContainer: {
20
- items: any[];
21
- }): void;
27
+ setItem<T>(storeName: string, item: T): Observable<boolean>;
22
28
  /**
23
- * Inserisce un oggetto nel localstorage dopo averlo serializzato
24
- *
25
- * @param {string} storeName Chiave del localStorage in cui storicizzare l'oggetto **item**
26
- * @param {any} item Oggetto da storicizzare
27
- */
28
- setAny(storeName: string, item: any): void;
29
- /**
30
- * Recupera un oggetto dal localStorage
29
+ * Recupera un oggetto dallo Storage Locale
31
30
  *
32
31
  * @param {string} storeName Chiave del localStorage da cui recuperare l'oggetto
33
32
  *
34
33
  * @returns {any} Oggetto recuperato e deserializzato
35
34
  */
36
- getAny(storeName: string): any;
35
+ getItem<T>(storeName: string): Observable<T>;
36
+ /**
37
+ * Ripulisce lo Storage Locale
38
+ *
39
+ * @param {string} storeName Chiave del localStorage da ripulire
40
+ */
41
+ removeItem(storeName: string): Observable<boolean>;
37
42
  /**
38
- * Ripulisce il localStorage
43
+ * Ripulisce lo Storage Locale di ogni cosa salvata
39
44
  *
40
45
  * @param {string} storeName Chiave del localStorage da ripulire
41
46
  */
42
- clear(storeName: string): void;
47
+ clear(): Observable<boolean>;
48
+ /**
49
+ * Restituisce tutte le chiavi-valore associate alla sessione corrente
50
+ *
51
+ * @returns {Observable<{ [index: string]: string; }>} Risultato della query
52
+ */
53
+ getAll(): Observable<{
54
+ [index: string]: string;
55
+ }>;
43
56
  }
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@esfaenza/extensions",
3
- "version": "12.2.8",
3
+ "version": "12.2.12",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@angular/common": "~12.2.3",
9
- "@angular/core": "~12.2.3",
10
- "sweetalert2": "^11.1.4",
11
- "ngx-toastr": "^14.1.0",
12
- "dayjs": "^1.10.6",
13
- "cerialize": "^0.1.18"
8
+ "@angular/common": "~12.2.12",
9
+ "@angular/core": "~12.2.12",
10
+ "sweetalert2": "11.1.9",
11
+ "ngx-toastr": "14.1.4",
12
+ "dayjs": "1.10.7",
13
+ "cerialize": "0.1.18"
14
14
  },
15
15
  "main": "bundles/esfaenza-extensions.umd.js",
16
16
  "module": "fesm2015/esfaenza-extensions.js",
package/public-api.d.ts CHANGED
@@ -11,3 +11,5 @@ export * from './lib/tokens';
11
11
  export * from './lib/models/CallResult';
12
12
  export * from './lib/models/CsvHeaders';
13
13
  export * from './lib/models/GenericItem';
14
+ export * from './lib/models/providers/base/BaseStorageProvider';
15
+ export * from './lib/models/session/base/BaseSessionRetriever';