@sumaris-net/ngx-components 2.4.57 → 2.4.58

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 (50) hide show
  1. package/doc/changelog.md +5 -0
  2. package/esm2020/public_api.mjs +11 -3
  3. package/esm2020/src/app/core/graphql/graphql.service.mjs +2 -2
  4. package/esm2020/src/app/core/graphql/graphql.utils.mjs +1 -1
  5. package/esm2020/src/app/core/services/platform.service.mjs +24 -5
  6. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +2 -2
  7. package/esm2020/src/app/core/services/storage/entity-store.class.mjs +1 -1
  8. package/esm2020/src/app/core/table/table.class.mjs +1 -1
  9. package/esm2020/src/app/shared/debug/debug-service.class.mjs +3 -0
  10. package/esm2020/src/app/shared/file/json.utils.mjs +4 -4
  11. package/esm2020/src/app/shared/logging/log-level.model.mjs +48 -0
  12. package/esm2020/src/app/shared/logging/logger.model.mjs +47 -0
  13. package/esm2020/src/app/shared/logging/logging-service.class.mjs +121 -0
  14. package/esm2020/src/app/shared/logging/logging-service.config.mjs +2 -0
  15. package/esm2020/src/app/shared/logging/logging-service.module.mjs +30 -0
  16. package/esm2020/src/app/shared/shared.module.mjs +3 -3
  17. package/esm2020/src/app/shared/shared.testing.module.mjs +16 -8
  18. package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +262 -0
  19. package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +60 -0
  20. package/esm2020/src/app/shared/storage/storage.service.mjs +132 -0
  21. package/esm2020/src/app/shared/storage/storage.utils.mjs +13 -0
  22. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
  23. package/esm2020/src/environments/environment.class.mjs +1 -1
  24. package/esm2020/src/environments/environment.mjs +2 -2
  25. package/fesm2015/sumaris-net.ngx-components.mjs +944 -374
  26. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  27. package/fesm2020/sumaris-net.ngx-components.mjs +922 -381
  28. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/public_api.d.ts +10 -2
  31. package/src/app/core/graphql/graphql.service.d.ts +1 -1
  32. package/src/app/core/graphql/graphql.utils.d.ts +1 -1
  33. package/src/app/core/services/platform.service.d.ts +6 -3
  34. package/src/app/core/services/storage/entities-storage.service.d.ts +1 -1
  35. package/src/app/core/services/storage/entity-store.class.d.ts +1 -1
  36. package/src/app/shared/debug/debug-service.class.d.ts +5 -0
  37. package/src/app/shared/logging/log-level.model.d.ts +38 -0
  38. package/src/app/shared/logging/logger.model.d.ts +68 -0
  39. package/src/app/shared/logging/logging-service.class.d.ts +39 -0
  40. package/src/app/shared/logging/logging-service.config.d.ts +25 -0
  41. package/src/app/shared/logging/logging-service.module.d.ts +9 -0
  42. package/src/app/shared/shared.testing.module.d.ts +2 -1
  43. package/src/app/shared/storage/storage-explorer.component.d.ts +58 -0
  44. package/src/app/shared/storage/storage-explorer.module.d.ts +16 -0
  45. package/src/app/shared/{services/storage → storage}/storage.service.d.ts +2 -2
  46. package/src/assets/i18n/fr.json +3 -0
  47. package/src/environments/environment.class.d.ts +2 -0
  48. package/esm2020/src/app/shared/services/storage/storage.service.mjs +0 -132
  49. package/esm2020/src/app/shared/services/storage/storage.utils.mjs +0 -13
  50. /package/src/app/shared/{services/storage → storage}/storage.utils.d.ts +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sumaris-net/ngx-components",
3
3
  "description": "SUMARiS Angular components",
4
- "version": "2.4.57",
4
+ "version": "2.4.58",
5
5
  "author": "contact@e-is.pro",
6
6
  "license": "AGPL-3.0",
7
7
  "readmeFilename": "README.md",
package/public_api.d.ts CHANGED
@@ -50,6 +50,13 @@ export * from './src/app/shared/image/gallery/image-gallery.component';
50
50
  export * from './src/app/shared/image/gallery/image-gallery.module';
51
51
  export * from './src/app/shared/image/image.model';
52
52
  export * from './src/app/shared/image/image.module';
53
+ export * from './src/app/shared/storage/storage-explorer.component';
54
+ export * from './src/app/shared/storage/storage-explorer.module';
55
+ export * from './src/app/shared/logging/log-level.model';
56
+ export * from './src/app/shared/logging/logger.model';
57
+ export * from './src/app/shared/logging/logging-service.class';
58
+ export * from './src/app/shared/logging/logging-service.config';
59
+ export * from './src/app/shared/logging/logging-service.module';
53
60
  export * from './src/app/shared/directives/directives.module';
54
61
  export * from './src/app/shared/directives/autofocus.directive';
55
62
  export * from './src/app/shared/directives/ng-var.directive';
@@ -85,9 +92,10 @@ export * from './src/app/shared/services/memory-entity-service.class';
85
92
  export * from './src/app/shared/services/progress-bar.service';
86
93
  export * from './src/app/shared/services/translate-context.service';
87
94
  export * from './src/app/shared/services/job.utils';
88
- export * from './src/app/shared/services/storage/storage.service';
89
- export * from './src/app/shared/services/storage/storage.utils';
95
+ export * from './src/app/shared/storage/storage.service';
96
+ export * from './src/app/shared/storage/storage.utils';
90
97
  export * from './src/app/shared/validator/form-error-adapter.class';
98
+ export * from './src/app/shared/debug/debug-service.class';
91
99
  export * from './src/app/shared/types';
92
100
  export * from './src/app/shared/dates';
93
101
  export * from './src/app/shared/functions';
@@ -14,7 +14,7 @@ import { Cache } from '@apollo/client/cache/core/types/Cache';
14
14
  import { CryptoService } from '../services/crypto.service';
15
15
  import { PropertiesMap } from '../../shared/types';
16
16
  import { StartableService } from '../../shared/services/startable-service.class';
17
- import { StorageService } from '../../shared/services/storage/storage.service';
17
+ import { StorageService } from '../../shared/storage/storage.service';
18
18
  import { DocumentNode } from 'graphql';
19
19
  import * as i0 from "@angular/core";
20
20
  export interface WatchQueryOptions<V> {
@@ -2,7 +2,7 @@ import { ApolloClient, ApolloLink, Operation } from '@apollo/client/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { PersistentStorage } from 'apollo3-cache-persist';
4
4
  import { ConnectionType } from '../services/network.types';
5
- import { StorageService } from '../../shared/services/storage/storage.service';
5
+ import { StorageService } from '../../shared/storage/storage.service';
6
6
  export declare const NativeWebSocket: any;
7
7
  export declare type EmptyObject = {
8
8
  [key: string]: any;
@@ -14,8 +14,9 @@ import { ConfigService } from './config.service';
14
14
  import { MomentDateAdapter } from '@angular/material-moment-adapter';
15
15
  import { Downloader, DownloadRequest } from '@ionic-native/downloader/ngx';
16
16
  import { StartableService } from '../../shared/services/startable-service.class';
17
- import { StorageService } from '../../shared/services/storage/storage.service';
17
+ import { StorageService } from '../../shared/storage/storage.service';
18
18
  import { OpenOptions } from '@capacitor/browser';
19
+ import { ILoggingService } from '../../shared/logging/logger.model';
19
20
  import * as i0 from "@angular/core";
20
21
  export declare const AndroidOsEnvironment: Readonly<{
21
22
  DIRECTORY_DOWNLOADS: string;
@@ -36,15 +37,17 @@ export declare class PlatformService extends StartableService {
36
37
  private cache;
37
38
  private audioProvider;
38
39
  protected environment: any;
40
+ private loggingService;
39
41
  private downloader;
42
+ private _logger;
40
43
  private _mobile;
41
44
  private _cordova;
42
45
  private _capacitor;
43
46
  private _android;
44
47
  private _ios;
48
+ constructor(ionicPlatform: Platform, cdkPlatform: CdkPlatform, toastController: ToastController, translate: TranslateService, dateAdapter: MomentDateAdapter, storageService: StorageService, entitiesStorage: EntitiesStorage, settings: LocalSettingsService, networkService: NetworkService, accountService: AccountService, configService: ConfigService, cache: CacheService, audioProvider: AudioProvider, environment: any, loggingService: ILoggingService, downloader: Downloader);
45
49
  private _downloadingJobs;
46
50
  private checkAppVersionTimer;
47
- constructor(ionicPlatform: Platform, cdkPlatform: CdkPlatform, toastController: ToastController, translate: TranslateService, dateAdapter: MomentDateAdapter, storageService: StorageService, entitiesStorage: EntitiesStorage, settings: LocalSettingsService, networkService: NetworkService, accountService: AccountService, configService: ConfigService, cache: CacheService, audioProvider: AudioProvider, environment: any, downloader: Downloader);
48
51
  is(platformName: Platforms): boolean;
49
52
  get mobile(): boolean;
50
53
  /**
@@ -86,6 +89,6 @@ export declare class PlatformService extends StartableService {
86
89
  }): Promise<void>;
87
90
  protected showToast(opts: ShowToastOptions): Promise<HTMLIonToastElement>;
88
91
  protected onStartupError(err: any): Promise<void>;
89
- static ɵfac: i0.ɵɵFactoryDeclaration<PlatformService, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
92
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlatformService, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
90
93
  static ɵprov: i0.ɵɵInjectableDeclaration<PlatformService>;
91
94
  }
@@ -7,7 +7,7 @@ import { EntityStorageLoadOptions, EntityStore, EntityStoreTypePolicy } from './
7
7
  import { IProgressBarService } from '../../../shared/services/progress-bar.service';
8
8
  import { Environment } from '../../../../environments/environment.class';
9
9
  import { StartableService } from '../../../shared/services/startable-service.class';
10
- import { IStorage } from '../../../shared/services/storage/storage.utils';
10
+ import { IStorage } from '../../../shared/storage/storage.utils';
11
11
  import * as i0 from "@angular/core";
12
12
  export interface EntitiesStorageTypePolicies {
13
13
  [__typename: string]: EntityStoreTypePolicy;
@@ -1,7 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { Entity, IEntity } from '../model/entity.model';
3
3
  import { LoadResult } from '../../../shared/services/entity-service.class';
4
- import { IStorage } from '../../../shared/services/storage/storage.utils';
4
+ import { IStorage } from '../../../shared/storage/storage.utils';
5
5
  export declare const ENTITIES_STORAGE_KEY_PREFIX = "entities";
6
6
  export declare type EntityStoreTypePolicyMode = 'default' | 'by-id';
7
7
  export declare interface EntityStoreTypePolicy<T extends Entity<T, any> = Entity<any, any>, K = keyof T> {
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const APP_DEBUG_DATA_SERVICE: InjectionToken<IDebugDataService>;
3
+ export interface IDebugDataService {
4
+ sendDebugData: (data: any) => Promise<void>;
5
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Logging levels.
3
+ * Based on https://github.com/Ritzlgrmft/ionic-logging-service/blob/main/projects/ionic-logging-service/src/lib/log-level.model.ts
4
+ */
5
+ export declare enum LogLevel {
6
+ /**
7
+ * All events should be logged.
8
+ */
9
+ ALL = 0,
10
+ /**
11
+ * A fine-grained debug message, typically capturing the flow through the application.
12
+ */
13
+ TRACE = 1,
14
+ /**
15
+ * A general debugging event.
16
+ */
17
+ DEBUG = 2,
18
+ /**
19
+ * An event for informational purposes.
20
+ */
21
+ INFO = 3,
22
+ /**
23
+ * An event that might possible lead to an error.
24
+ */
25
+ WARN = 4,
26
+ /**
27
+ * An error in the application, possibly recoverable.
28
+ */
29
+ ERROR = 5,
30
+ /**
31
+ * A severe error that will prevent the application from continuing.
32
+ */
33
+ FATAL = 6,
34
+ /**
35
+ * No events will be logged.
36
+ */
37
+ OFF = 7
38
+ }
@@ -0,0 +1,68 @@
1
+ import { LogLevel } from './log-level.model';
2
+ import { Moment } from 'moment';
3
+ import { LoggingServiceConfig } from './logging-service.config';
4
+ import { AppColors } from '../types';
5
+ export interface ILoggingService {
6
+ configure(configuration: LoggingServiceConfig): Promise<void>;
7
+ getLogger(loggerName: string): ILogger;
8
+ }
9
+ export interface ILoggingAppender {
10
+ append(loggerName: string, level: LogLevel, message: string): any;
11
+ }
12
+ export interface ILogger {
13
+ /**
14
+ * Logs a message at level TRACE.
15
+ *
16
+ * @param methodName name of the method
17
+ * @param params optional parameters to be logged; objects will be formatted as JSON
18
+ */
19
+ trace(methodName: string, ...params: any[]): void;
20
+ /**
21
+ * Logs a message at level DEBUG.
22
+ *
23
+ * @param methodName name of the method
24
+ * @param params optional parameters to be logged; objects will be formatted as JSON
25
+ */
26
+ debug(methodName: string, ...params: any[]): void;
27
+ /**
28
+ * Logs a message at level INFO.
29
+ *
30
+ * @param methodName name of the method
31
+ * @param params optional parameters to be logged; objects will be formatted as JSON
32
+ */
33
+ info(methodName: string, ...params: any[]): void;
34
+ /**
35
+ * Logs a message at level WARN.
36
+ *
37
+ * @param methodName name of the method
38
+ * @param params optional parameters to be logged; objects will be formatted as JSON
39
+ */
40
+ warn(methodName: string, ...params: any[]): void;
41
+ /**
42
+ * Logs a message at level ERROR.
43
+ *
44
+ * @param methodName name of the method
45
+ * @param params optional parameters to be logged; objects will be formatted as JSON
46
+ */
47
+ error(methodName: string, ...params: any[]): any;
48
+ /**
49
+ * Logs a message at level FATAL.
50
+ *
51
+ * @param methodName name of the method
52
+ * @param params optional parameters to be logged; objects will be formatted as JSON
53
+ */
54
+ fatal(methodName: string, ...params: any[]): any;
55
+ }
56
+ export interface Log {
57
+ loggerName: string;
58
+ level: LogLevel;
59
+ message: string;
60
+ date: Moment;
61
+ }
62
+ export declare class LogUtils {
63
+ static fromObject(source: any): Log;
64
+ static asObject(source: Log): any;
65
+ static fromObjects(sources: any[]): Log[];
66
+ static levelToString(level: LogLevel): string;
67
+ static levelToColor(level: LogLevel): AppColors;
68
+ }
@@ -0,0 +1,39 @@
1
+ import { ILogger, ILoggingAppender, ILoggingService, Log } from './logger.model';
2
+ import { InjectionToken } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { IStorage } from '../storage/storage.utils';
5
+ import { Environment } from '../../../environments/environment.class';
6
+ import { LoggingServiceConfig } from './logging-service.config';
7
+ import { LogLevel } from './log-level.model';
8
+ import { StartableService } from '../services/startable-service.class';
9
+ import * as i0 from "@angular/core";
10
+ export declare class Logger implements ILogger {
11
+ private _name;
12
+ private _appender;
13
+ constructor(_name: string, _appender: ILoggingAppender);
14
+ trace(methodName: string, ...params: any[]): void;
15
+ debug(methodName: string, ...params: any[]): void;
16
+ info(methodName: string, ...params: any[]): void;
17
+ warn(methodName: string, ...params: any[]): void;
18
+ error(methodName: string, ...params: any[]): void;
19
+ fatal(methodName: string, ...params: any[]): void;
20
+ private toString;
21
+ }
22
+ export declare const APP_LOGGING_SERVICE: InjectionToken<ILoggingService>;
23
+ export declare class LoggingService extends StartableService<void> implements ILoggingService, ILoggingAppender {
24
+ private storage;
25
+ protected environment: Environment;
26
+ _dataSubject: BehaviorSubject<Log[]>;
27
+ _debounceTimeMs: number;
28
+ _storageKey: string;
29
+ _maxMessages: number;
30
+ _saving: boolean;
31
+ constructor(storage: IStorage, environment: Environment);
32
+ configure(config: LoggingServiceConfig): Promise<void>;
33
+ protected ngOnStart(opts?: LoggingServiceConfig): Promise<void>;
34
+ getLogger(loggerName: string): ILogger;
35
+ append(loggerName: string, level: LogLevel, message: string): void;
36
+ protected storeLocally(): Promise<void>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoggingService, never>;
38
+ static ɵprov: i0.ɵɵInjectableDeclaration<LoggingService>;
39
+ }
@@ -0,0 +1,25 @@
1
+ export interface LoggingServiceConfig {
2
+ localStorageAppender?: {
3
+ /**
4
+ * Key which is used to store the messages in the local storage.
5
+ *
6
+ * Default: 'log'.
7
+ */
8
+ localStorageKey: string;
9
+ /**
10
+ * Maximum number of log messages stored by the appender.
11
+ *
12
+ * Default: 250.
13
+ */
14
+ maxMessages?: number;
15
+ /**
16
+ * Threshold.
17
+ *
18
+ * Valid values are: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN
19
+ *
20
+ * Default: WARN.
21
+ */
22
+ threshold?: string;
23
+ debounceTimeMs?: number;
24
+ };
25
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "@ionic/angular";
4
+ import * as i3 from "@ngx-translate/core";
5
+ export declare class LoggingServiceModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoggingServiceModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<LoggingServiceModule, never, [typeof i1.CommonModule, typeof i2.IonicModule, typeof i3.TranslateModule], never>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<LoggingServiceModule>;
9
+ }
@@ -8,9 +8,10 @@ import * as i5 from "./toast/toast.testing.module";
8
8
  import * as i6 from "./upload-file/testing/upload-file.testing.module";
9
9
  import * as i7 from "./image/gallery/testing/gallery.testing.module";
10
10
  import * as i8 from "./audio/audio.testing.module";
11
+ import * as i9 from "./storage/storage-explorer.module";
11
12
  export declare const SHARED_TESTING_PAGES: TestingPage[];
12
13
  export declare class SharedTestingModule {
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedTestingModule, never>;
14
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedTestingModule, never, [typeof i1.CommonModule, typeof i2.IonicModule, typeof i3.TranslateModule, typeof i4.MaterialTestingModule, typeof i5.ToastTestingModule, typeof i6.UploadFileTestingModule, typeof i7.ImageGalleryTestingModule, typeof i8.AudioTestingModule], [typeof i4.MaterialTestingModule, typeof i5.ToastTestingModule, typeof i6.UploadFileTestingModule, typeof i7.ImageGalleryTestingModule, typeof i8.AudioTestingModule]>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedTestingModule, never, [typeof i1.CommonModule, typeof i2.IonicModule, typeof i3.TranslateModule, typeof i4.MaterialTestingModule, typeof i5.ToastTestingModule, typeof i6.UploadFileTestingModule, typeof i7.ImageGalleryTestingModule, typeof i8.AudioTestingModule, typeof i9.StorageExplorerModule], [typeof i4.MaterialTestingModule, typeof i5.ToastTestingModule, typeof i6.UploadFileTestingModule, typeof i7.ImageGalleryTestingModule, typeof i8.AudioTestingModule, typeof i9.StorageExplorerModule]>;
15
16
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedTestingModule>;
16
17
  }
@@ -0,0 +1,58 @@
1
+ import { ChangeDetectorRef, InjectionToken, OnInit } from '@angular/core';
2
+ import { AlertController, IonModal, Platform, ToastController } from '@ionic/angular';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { IStorage } from './storage.utils';
5
+ import { IDebugDataService } from '../debug/debug-service.class';
6
+ import { TranslateService } from '@ngx-translate/core';
7
+ import { Environment } from '../../../environments/environment.class';
8
+ import { Log, LogUtils } from '../logging/logger.model';
9
+ import { MomentDateAdapter } from '@angular/material-moment-adapter';
10
+ import { LogLevel } from '../logging/log-level.model';
11
+ import * as i0 from "@angular/core";
12
+ declare type StorageItemInfo = {
13
+ key: string;
14
+ type: 'array' | 'object' | 'string' | 'number';
15
+ total: number;
16
+ };
17
+ export declare const APP_STORAGE_EXPLORER_PROTECTED_KEYS: InjectionToken<string[]>;
18
+ export declare class StorageExplorerComponent implements OnInit {
19
+ protected platform: Platform;
20
+ protected toastController: ToastController;
21
+ protected alertCtrl: AlertController;
22
+ protected translate: TranslateService;
23
+ protected dateAdapter: MomentDateAdapter;
24
+ protected cd: ChangeDetectorRef;
25
+ protected readonly storage: IStorage;
26
+ protected readonly environment: Environment;
27
+ protected readonly debugDataService: IDebugDataService;
28
+ private readonly _protectedKeys;
29
+ private _logPrefix;
30
+ protected $loading: BehaviorSubject<boolean>;
31
+ protected $items: BehaviorSubject<StorageItemInfo[]>;
32
+ protected _logKey: string;
33
+ protected data: any;
34
+ protected logs: Log[];
35
+ protected key: string;
36
+ mobile: boolean;
37
+ showSendButton: boolean;
38
+ sendDataModal: IonModal;
39
+ viewDataModal: IonModal;
40
+ constructor(platform: Platform, toastController: ToastController, alertCtrl: AlertController, translate: TranslateService, dateAdapter: MomentDateAdapter, cd: ChangeDetectorRef, storage: IStorage, environment: Environment, debugDataService: IDebugDataService, _protectedKeys: string[]);
41
+ ngOnInit(): void;
42
+ sendDataClick(event: Event, key: string): Promise<void>;
43
+ viewDataClick(event: Event, key: string): Promise<void>;
44
+ sendData(key: string): Promise<void>;
45
+ downloadAsJson(key: string): Promise<void>;
46
+ copyToClipboard(key: string): Promise<void>;
47
+ protected start(): Promise<void>;
48
+ protected refresh(): Promise<void>;
49
+ protected toString(key: string, data: any, html?: boolean): string;
50
+ protected toLogs(data: any): Log[];
51
+ protected clear(key: string): Promise<void>;
52
+ protected trackByFn(index: number, item: StorageItemInfo): any;
53
+ protected levelToColor(level: LogLevel): string;
54
+ protected levelToString: typeof LogUtils.levelToString;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<StorageExplorerComponent, [null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<StorageExplorerComponent, "app-storage-explorer", never, { "mobile": "mobile"; "showSendButton": "showSendButton"; }, {}, never, never, false>;
57
+ }
58
+ export {};
@@ -0,0 +1,16 @@
1
+ import { TestingPage } from '../testing/tests.page';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./storage-explorer.component";
4
+ import * as i2 from "@ionic/angular";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@ngx-translate/core";
7
+ import * as i5 from "@angular/router";
8
+ import * as i6 from "@rx-angular/template/for";
9
+ import * as i7 from "../pipes/pipes.module";
10
+ import * as i8 from "../material/material.module";
11
+ export declare const SHARED_STORAGE_TESTING_PAGES: TestingPage[];
12
+ export declare class StorageExplorerModule {
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<StorageExplorerModule, never>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<StorageExplorerModule, [typeof i1.StorageExplorerComponent], [typeof i2.IonicModule, typeof i3.CommonModule, typeof i4.TranslateModule, typeof i5.RouterModule, typeof i6.ForModule, typeof i7.SharedPipesModule, typeof i8.SharedMaterialModule], [typeof i1.StorageExplorerComponent]>;
15
+ static ɵinj: i0.ɵɵInjectorDeclaration<StorageExplorerModule>;
16
+ }
@@ -1,8 +1,8 @@
1
1
  import { Storage } from '@ionic/storage-angular';
2
2
  import { IStorage } from './storage.utils';
3
- import { StartableService } from '../startable-service.class';
3
+ import { StartableService } from '../services/startable-service.class';
4
4
  import { Platform } from '@ionic/angular';
5
- import { Environment } from '../../../../environments/environment.class';
5
+ import { Environment } from '../../../environments/environment.class';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class StorageService extends StartableService<Storage> implements IStorage<Storage> {
8
8
  private platform;
@@ -10,6 +10,7 @@
10
10
  "BTN_APPLY": "Appliquer",
11
11
  "BTN_BURST_INPUT": "Mode rafale",
12
12
  "BTN_BURST_INPUT_HELP": "Saisir en mode rafale",
13
+ "BTN_COPY": "Copier",
13
14
  "BTN_CLEAR": "Vider",
14
15
  "BTN_CLOSE": "Fermer",
15
16
  "BTN_DONE": "Terminer",
@@ -263,6 +264,7 @@
263
264
  "REFERENTIAL": {
264
265
  "LABEL": "Code",
265
266
  "NAME": "Libellé",
267
+ "TYPE": "Type",
266
268
  "STATUS_ENUM": {
267
269
  "ENABLE": "Actif à la saisie",
268
270
  "DISABLE": "Inactif à la saisie",
@@ -573,6 +575,7 @@
573
575
  "INFO": {
574
576
  "ALERT_HEADER": "Information",
575
577
  "SYNCHRONIZATION_SUCCEED": "Synchronisation terminée avec succès !<br/>Les données ont bien été recues par le serveur.",
578
+ "COPY_SUCCEED": "Copier avec succès !",
576
579
  "DEBUG_DATA_SEND": "Demande d'aide envoyée à l'administrateur.",
577
580
  "DATA_MIGRATION_STARTED": "Restauration de données en cours.<br/><b>Veuillez patienter...</b>",
578
581
  "DATA_MIGRATION_SUCCEED": "Restauration de données <b>terminée avec succès</b> !",
@@ -2,6 +2,7 @@ import { FetchPolicy } from '@apollo/client/core';
2
2
  import { StorageConfig } from '@ionic/storage';
3
3
  import { InjectionToken } from '@angular/core';
4
4
  import { CacheConfig } from 'ionic-cache/lib/interfaces/cache-config.interface';
5
+ import { LoggingServiceConfig } from '../app/shared/logging/logging-service.config';
5
6
  export declare const ENVIRONMENT: InjectionToken<Environment>;
6
7
  export declare class Environment {
7
8
  name: string;
@@ -31,6 +32,7 @@ export declare class Environment {
31
32
  defaultDepartmentId?: number;
32
33
  defaultAppName?: string;
33
34
  defaultAndroidInstallUrl?: string;
35
+ logging?: Partial<LoggingServiceConfig>;
34
36
  cache?: Partial<CacheConfig>;
35
37
  storage?: Partial<StorageConfig>;
36
38
  storageSavePeriodMs?: number;
@@ -1,132 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { StorageDrivers } from './storage.utils';
3
- import { StartableService } from '../startable-service.class';
4
- import { environment } from '../../../../environments/environment';
5
- import { ENVIRONMENT } from '../../../../environments/environment.class';
6
- import * as cordovaSQLiteDriver from 'localforage-cordovasqlitedriver';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@ionic/angular";
9
- import * as i2 from "@ionic/storage-angular";
10
- import * as i3 from "../../../../environments/environment.class";
11
- export class StorageService extends StartableService {
12
- constructor(platform, storage, environment) {
13
- super(platform);
14
- this.platform = platform;
15
- this.storage = storage;
16
- this.environment = environment;
17
- this._debug = !environment.production;
18
- this.start();
19
- }
20
- get driver() {
21
- return this._data?.driver;
22
- }
23
- async ngOnStart() {
24
- try {
25
- console.debug(`[storage-service] Starting... {driverOrder: ${environment.storage?.driverOrder}}`);
26
- // Define Cordova SQLLite driver
27
- await this.storage.defineDriver(cordovaSQLiteDriver);
28
- // Create the storage instance
29
- const storage = await this.storage.create();
30
- // Migrate from old storage
31
- await this.migrate(storage);
32
- console.info(`[storage-service] Started using driver: ${storage?.driver}`);
33
- return storage;
34
- }
35
- catch (err) {
36
- console.error('[storage-service] Cannot create storage: ' + (err?.message || err), err);
37
- }
38
- }
39
- async migrate(storage) {
40
- const canMigrate = storage?.driver === StorageDrivers.SQLLite;
41
- if (!canMigrate)
42
- return; // Skip
43
- //
44
- // const oldForage = storage.createInstance({
45
- // name: storage.config().name,
46
- // storeName: storage.config().storeName,
47
- // driver: [storage.INDEXEDDB, storage.WEBSQL]
48
- // });
49
- //
50
- // const keys = await oldForage.keys();
51
- //
52
- // // No data in the odl storage: skip migration
53
- // if (isEmptyArray(keys)) {
54
- // // Drop the old instance (not need anymore)
55
- // console.debug(`[platform] Old storage is empty: dropping unused instance {name: '${storage.config().name}', driver: '${oldForage.driver()}'}`);
56
- // await oldForage.dropInstance();
57
- // }
58
- // // IF some data stored in the OLD storage: start migration
59
- // else {
60
- //
61
- // const now = Date.now();
62
- // console.info(`[platform] Starting storage migration...`);
63
- //
64
- // const toast = await this.showToast({message: 'INFO.DATA_MIGRATION_STARTED', type: 'info', duration: 30000});
65
- // try {
66
- // await StorageUtils.copy(oldForage, storage, {keys, deleteAfterCopy: false});
67
- //
68
- // const duration = Date.now() - now;
69
- // setTimeout(() => toast.dismiss(), Math.max(2000 - duration, 0));
70
- // await this.showToast({message: 'INFO.DATA_MIGRATION_SUCCEED',
71
- // type: 'info',
72
- // showCloseButton: true
73
- // });
74
- // console.info('[platform] Starting storage migration [OK]');
75
- //
76
- // // Drop the old instance
77
- // console.info(`[platform] Drop old storage {name: '${storage.config().name}', driver: '${oldForage.driver()}'}`);
78
- // await oldForage.dropInstance();
79
- // }
80
- // catch (err) {
81
- // console.error(err && err.message || err, err);
82
- // await toast.dismiss();
83
- // await this.showToast({message: 'ERROR.DATA_MIGRATION_FAILED',
84
- // type: 'error',
85
- // showCloseButton: true
86
- // });
87
- // }
88
- //}
89
- }
90
- async set(key, value) {
91
- if (!this.started)
92
- await this.ready();
93
- return this._data.set(key, value);
94
- }
95
- async get(key) {
96
- if (!this.started)
97
- await this.ready();
98
- return this._data.get(key);
99
- }
100
- async remove(key) {
101
- if (!this.started)
102
- await this.ready();
103
- return this._data.remove(key);
104
- }
105
- async keys() {
106
- if (!this.started)
107
- await this.ready();
108
- return this._data.keys();
109
- }
110
- async clear() {
111
- if (!this.started)
112
- await this.ready();
113
- await this._data.clear();
114
- }
115
- async forEach(iteratorCallback) {
116
- if (!this.started)
117
- await this.ready();
118
- return this._data.forEach(iteratorCallback);
119
- }
120
- }
121
- StorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StorageService, deps: [{ token: i1.Platform }, { token: i2.Storage }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
122
- StorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StorageService, providedIn: 'root' });
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StorageService, decorators: [{
124
- type: Injectable,
125
- args: [{
126
- providedIn: 'root', deps: [ENVIRONMENT]
127
- }]
128
- }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i2.Storage }, { type: i3.Environment, decorators: [{
129
- type: Inject,
130
- args: [ENVIRONMENT]
131
- }] }]; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMvc3RvcmFnZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFXLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsV0FBVyxFQUFjLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUt2RSxNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUF5QjtJQU8zRCxZQUFvQixRQUFrQixFQUNsQixPQUFnQixFQUNLLFdBQXdCO1FBRS9ELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpFLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNLLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFYRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFXUyxLQUFLLENBQUMsU0FBUztRQUN2QixJQUFJO1lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBRWxHLGdDQUFnQztZQUNoQyxNQUFN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QUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQTJFO1FBQ3ZGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs0R0F2SFUsY0FBYyxpRUFTTCxXQUFXO2dIQVRwQixjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN4Qzs7MEJBVWMsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdG9yYWdlfSBmcm9tICdAaW9uaWMvc3RvcmFnZS1hbmd1bGFyJztcbmltcG9ydCB7SVN0b3JhZ2UsIFN0b3JhZ2VEcml2ZXJzfSBmcm9tICcuL3N0b3JhZ2UudXRpbHMnO1xuaW1wb3J0IHtTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVCwgRW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgKiBhcyBjb3Jkb3ZhU1FMaXRlRHJpdmVyIGZyb20gJ2xvY2FsZm9yYWdlLWNvcmRvdmFzcWxpdGVkcml2ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290JywgZGVwczogW0VOVklST05NRU5UXVxufSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8U3RvcmFnZT5cbiAgaW1wbGVtZW50cyBJU3RvcmFnZTxTdG9yYWdlPiB7XG5cbiAgZ2V0IGRyaXZlcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhPy5kcml2ZXI7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlLFxuICAgICAgICAgICAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICAgICAgICAgICAgKSB7XG4gICAgc3VwZXIocGxhdGZvcm0pO1xuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPFN0b3JhZ2U+IHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3N0b3JhZ2Utc2VydmljZV0gU3RhcnRpbmcuLi4ge2RyaXZlck9yZGVyOiAke2Vudmlyb25tZW50LnN0b3JhZ2U/LmRyaXZlck9yZGVyfX1gKTtcblxuICAgICAgLy8gRGVmaW5lIENvcmRvdmEgU1FMTGl0ZSBkcml2ZXJcbiAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5kZWZpbmVEcml2ZXIoY29yZG92YVNRTGl0ZURyaXZlcik7XG5cblxuICAgICAgLy8gQ3JlYXRlIHRoZSBzdG9yYWdlIGluc3RhbmNlXG4gICAgICBjb25zdCBzdG9yYWdlID0gYXdhaXQgdGhpcy5zdG9yYWdlLmNyZWF0ZSgpO1xuXG4gICAgICAvLyBNaWdyYXRlIGZyb20gb2xkIHN0b3JhZ2VcbiAgICAgIGF3YWl0IHRoaXMubWlncmF0ZShzdG9yYWdlKTtcblxuICAgICAgY29uc29sZS5pbmZvKGBbc3RvcmFnZS1zZXJ2aWNlXSBTdGFydGVkIHVzaW5nIGRyaXZlcjogJHtzdG9yYWdlPy5kcml2ZXJ9YCk7XG4gICAgICByZXR1cm4gc3RvcmFnZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW3N0b3JhZ2Utc2VydmljZV0gQ2Fubm90IGNyZWF0ZSBzdG9yYWdlOiAnICsgKGVycj8ubWVzc2FnZSB8fCBlcnIpLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBtaWdyYXRlKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICBjb25zdCBjYW5NaWdyYXRlID0gc3RvcmFnZT8uZHJpdmVyID09PSBTdG9yYWdlRHJpdmVycy5TUUxMaXRlO1xuXG4gICAgaWYgKCFjYW5NaWdyYXRlKSByZXR1cm47IC8vIFNraXBcblxuICAgIC8vXG4gICAgLy8gY29uc3Qgb2xkRm9yYWdlID0gc3RvcmFnZS5jcmVhdGVJbnN0YW5jZSh7XG4gICAgLy8gICBuYW1lOiBzdG9yYWdlLmNvbmZpZygpLm5hbWUsXG4gICAgLy8gICBzdG9yZU5hbWU6IHN0b3JhZ2UuY29uZmlnKCkuc3RvcmVOYW1lLFxuICAgIC8vICAgZHJpdmVyOiBbc3RvcmFnZS5JTkRFWEVEREIsIHN0b3JhZ2UuV0VCU1FMXVxuICAgIC8vIH0pO1xuICAgIC8vXG4gICAgLy8gY29uc3Qga2V5cyA9IGF3YWl0IG9sZEZvcmFnZS5rZXlzKCk7XG4gICAgLy9cbiAgICAvLyAvLyBObyBkYXRhIGluIHRoZSBvZGwgc3RvcmFnZTogc2tpcCBtaWdyYXRpb25cbiAgICAvLyBpZiAoaXNFbXB0eUFycmF5KGtleXMpKSB7XG4gICAgLy8gICAvLyBEcm9wIHRoZSBvbGQgaW5zdGFuY2UgKG5vdCBuZWVkIGFueW1vcmUpXG4gICAgLy8gICBjb25zb2xlLmRlYnVnKGBbcGxhdGZvcm1dIE9sZCBzdG9yYWdlIGlzIGVtcHR5OiBkcm9wcGluZyB1bnVzZWQgaW5zdGFuY2Uge25hbWU6ICcke3N0b3JhZ2UuY29uZmlnKCkubmFtZX0nLCBkcml2ZXI6ICcke29sZEZvcmFnZS5kcml2ZXIoKX0nfWApO1xuICAgIC8vICAgYXdhaXQgb2xkRm9yYWdlLmRyb3BJbnN0YW5jZSgpO1xuICAgIC8vIH1cbiAgICAvLyAvLyBJRiBzb21lIGRhdGEgc3RvcmVkIGluIHRoZSBPTEQgc3RvcmFnZTogc3RhcnQgbWlncmF0aW9uXG4gICAgLy8gZWxzZSB7XG4gICAgLy9cbiAgICAvLyAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgLy8gICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gU3RhcnRpbmcgc3RvcmFnZSBtaWdyYXRpb24uLi5gKTtcbiAgICAvL1xuICAgIC8vICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnNob3dUb2FzdCh7bWVzc2FnZTogJ0lORk8uREFUQV9NSUdSQVRJT05fU1RBUlRFRCcsIHR5cGU6ICdpbmZvJywgZHVyYXRpb246IDMwMDAwfSk7XG4gICAgLy8gICB0cnkge1xuICAgIC8vICAgICBhd2FpdCBTdG9yYWdlVXRpbHMuY29weShvbGRGb3JhZ2UsIHN0b3JhZ2UsIHtrZXlzLCBkZWxldGVBZnRlckNvcHk6IGZhbHNlfSk7XG4gICAgLy9cbiAgICAvLyAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gbm93O1xuICAgIC8vICAgICBzZXRUaW1lb3V0KCgpID0+IHRvYXN0LmRpc21pc3MoKSwgIE1hdGgubWF4KDIwMDAgLSBkdXJhdGlvbiwgMCkpO1xuICAgIC8vICAgICBhd2FpdCB0aGlzLnNob3dUb2FzdCh7bWVzc2FnZTogJ0lORk8uREFUQV9NSUdSQVRJT05fU1VDQ0VFRCcsXG4gICAgLy8gICAgICAgdHlwZTogJ2luZm8nLFxuICAgIC8vICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgIC8vICAgICB9KTtcbiAgICAvLyAgICAgY29uc29sZS5pbmZvKCdbcGxhdGZvcm1dIFN0YXJ0aW5nIHN0b3JhZ2UgbWlncmF0aW9uIFtPS10nKTtcbiAgICAvL1xuICAgIC8vICAgICAvLyBEcm9wIHRoZSBvbGQgaW5zdGFuY2VcbiAgICAvLyAgICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIERyb3Agb2xkIHN0b3JhZ2Uge25hbWU6ICcke3N0b3JhZ2UuY29uZmlnKCkubmFtZX0nLCBkcml2ZXI6ICcke29sZEZvcmFnZS5kcml2ZXIoKX0nfWApO1xuICAgIC8vICAgICBhd2FpdCBvbGRGb3JhZ2UuZHJvcEluc3RhbmNlKCk7XG4gICAgLy8gICB9XG4gICAgLy8gICBjYXRjaCAoZXJyKSB7XG4gICAgLy8gICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICAvLyAgICAgYXdhaXQgdG9hc3QuZGlzbWlzcygpO1xuICAgIC8vICAgICBhd2FpdCB0aGlzLnNob3dUb2FzdCh7bWVzc2FnZTogJ0VSUk9SLkRBVEFfTUlHUkFUSU9OX0ZBSUxFRCcsXG4gICAgLy8gICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAvLyAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9XG4gICAgLy99XG4gIH1cblxuICBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLl9kYXRhLnNldChrZXksIHZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5nZXQoa2V5KTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZShrZXk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEucmVtb3ZlKGtleSk7XG4gIH1cblxuICBhc3luYyBrZXlzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmtleXMoKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyKCkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgYXdhaXQgdGhpcy5fZGF0YS5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZm9yRWFjaChpdGVyYXRvckNhbGxiYWNrOiAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcsIGl0ZXJhdGlvbk51bWJlcjogTnVtYmVyKSA9PiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmZvckVhY2goaXRlcmF0b3JDYWxsYmFjayk7XG4gIH1cbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { Drivers } from '@ionic/storage';
3
- import * as LocalForage from 'localforage';
4
- import * as CordovaSQLiteDriver from 'localforage-cordovasqlitedriver';
5
- export const StorageDrivers = {
6
- SQLLite: CordovaSQLiteDriver._driver,
7
- SecureStorage: Drivers.SecureStorage,
8
- WebSQL: LocalForage.WEBSQL,
9
- IndexedDB: Drivers.IndexedDB,
10
- LocalStorage: Drivers.LocalStorage
11
- };
12
- export const APP_STORAGE = new InjectionToken('Storage');
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0b3JhZ2Uvc3RvcmFnZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEtBQUssV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEtBQUssbUJBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFhdkUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQ3BDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtJQUNwQyxNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU07SUFDMUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO0lBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtDQUNuQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFXLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RyaXZlcnN9IGZyb20gJ0Bpb25pYy9zdG9yYWdlJztcbmltcG9ydCAqIGFzIExvY2FsRm9yYWdlIGZyb20gJ2xvY2FsZm9yYWdlJztcbmltcG9ydCAqIGFzIENvcmRvdmFTUUxpdGVEcml2ZXIgZnJvbSAnbG9jYWxmb3JhZ2UtY29yZG92YXNxbGl0ZWRyaXZlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JhZ2U8VCA9IGFueT4ge1xuICByZWFkb25seSBkcml2ZXI6IHN0cmluZztcbiAgcmVhZHkoKTogUHJvbWlzZTxUPlxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIHJlbW92ZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD5cbiAga2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgY2xlYXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgZm9yRWFjaChpdGVyYXRvckNhbGxiYWNrOiAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcsIGl0ZXJhdGlvbk51bWJlcjogTnVtYmVyKSA9PiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY29uc3QgU3RvcmFnZURyaXZlcnMgPSB7XG4gIFNRTExpdGU6IENvcmRvdmFTUUxpdGVEcml2ZXIuX2RyaXZlcixcbiAgU2VjdXJlU3RvcmFnZTogRHJpdmVycy5TZWN1cmVTdG9yYWdlLFxuICBXZWJTUUw6IExvY2FsRm9yYWdlLldFQlNRTCxcbiAgSW5kZXhlZERCOiBEcml2ZXJzLkluZGV4ZWREQixcbiAgTG9jYWxTdG9yYWdlOiBEcml2ZXJzLkxvY2FsU3RvcmFnZVxufTtcblxuZXhwb3J0IGNvbnN0IEFQUF9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPElTdG9yYWdlPignU3RvcmFnZScpO1xuIl19