From 53034c6077ead21964a4328bc8796b3c1dc57541 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Mon, 3 Oct 2022 20:41:01 +0800 Subject: [PATCH 01/19] fix: set defaultHref for header back-button --- src/app/pages/about/about.page.html | 2 +- .../setting-auto-brightness/setting-auto-brightness.page.html | 2 +- src/app/pages/setting-auto-exit/setting-auto-exit.page.html | 2 +- src/app/pages/setting-auto-qr/setting-auto-qr.page.html | 2 +- src/app/pages/setting-color/setting-color.page.html | 2 +- src/app/pages/setting-debug/setting-debug.page.html | 2 +- src/app/pages/setting-language/setting-language.page.html | 2 +- src/app/pages/setting-orientation/setting-orientation.page.html | 2 +- src/app/pages/setting-qr/setting-qr.page.html | 2 +- src/app/pages/setting-record/setting-record.page.html | 2 +- .../setting-result-buttons/setting-result-buttons.page.html | 2 +- src/app/pages/setting-result/setting-result.page.html | 2 +- .../pages/setting-search-engine/setting-search-engine.page.html | 2 +- src/app/pages/setting-start-page/setting-start-page.page.html | 2 +- src/app/pages/setting-vibration/setting-vibration.page.html | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/app/pages/about/about.page.html b/src/app/pages/about/about.page.html index 4b7d298..7f3ebd8 100644 --- a/src/app/pages/about/about.page.html +++ b/src/app/pages/about/about.page.html @@ -1,7 +1,7 @@ - + {{ 'ABOUT' | translate }} diff --git a/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.html b/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.html index da98819..f61e1b8 100644 --- a/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.html +++ b/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.html @@ -1,7 +1,7 @@ - + {{ 'AUTO_MAX_BRIGHTNESS' | translate }} diff --git a/src/app/pages/setting-auto-exit/setting-auto-exit.page.html b/src/app/pages/setting-auto-exit/setting-auto-exit.page.html index c0ccc02..b18c0e9 100644 --- a/src/app/pages/setting-auto-exit/setting-auto-exit.page.html +++ b/src/app/pages/setting-auto-exit/setting-auto-exit.page.html @@ -1,7 +1,7 @@ - + {{ 'AUTO_KILL_BACKGROUND' | translate }} diff --git a/src/app/pages/setting-auto-qr/setting-auto-qr.page.html b/src/app/pages/setting-auto-qr/setting-auto-qr.page.html index 358a05e..4ec840b 100644 --- a/src/app/pages/setting-auto-qr/setting-auto-qr.page.html +++ b/src/app/pages/setting-auto-qr/setting-auto-qr.page.html @@ -1,7 +1,7 @@ - + {{ 'AUTO_QR_CODE_POPUP' | translate }} diff --git a/src/app/pages/setting-color/setting-color.page.html b/src/app/pages/setting-color/setting-color.page.html index 77f67da..d523f7e 100644 --- a/src/app/pages/setting-color/setting-color.page.html +++ b/src/app/pages/setting-color/setting-color.page.html @@ -1,7 +1,7 @@ - + {{ 'COLOR_THEME' | translate }} diff --git a/src/app/pages/setting-debug/setting-debug.page.html b/src/app/pages/setting-debug/setting-debug.page.html index 7076e9a..32de1b9 100644 --- a/src/app/pages/setting-debug/setting-debug.page.html +++ b/src/app/pages/setting-debug/setting-debug.page.html @@ -1,7 +1,7 @@ - + {{ 'DEBUG_MODE' | translate }} diff --git a/src/app/pages/setting-language/setting-language.page.html b/src/app/pages/setting-language/setting-language.page.html index 8ff6fb8..5d66da1 100644 --- a/src/app/pages/setting-language/setting-language.page.html +++ b/src/app/pages/setting-language/setting-language.page.html @@ -1,7 +1,7 @@ - + {{ 'LANGUAGE' | translate }} diff --git a/src/app/pages/setting-orientation/setting-orientation.page.html b/src/app/pages/setting-orientation/setting-orientation.page.html index 112ba51..fccbae1 100644 --- a/src/app/pages/setting-orientation/setting-orientation.page.html +++ b/src/app/pages/setting-orientation/setting-orientation.page.html @@ -1,7 +1,7 @@ - + {{ 'SCREEN_ORIENTATION' | translate }} diff --git a/src/app/pages/setting-qr/setting-qr.page.html b/src/app/pages/setting-qr/setting-qr.page.html index 07d18a2..1c6eec0 100644 --- a/src/app/pages/setting-qr/setting-qr.page.html +++ b/src/app/pages/setting-qr/setting-qr.page.html @@ -1,7 +1,7 @@ - + {{ 'QR_CODE_STYLE' | translate }} diff --git a/src/app/pages/setting-record/setting-record.page.html b/src/app/pages/setting-record/setting-record.page.html index eeb884b..a0016fc 100644 --- a/src/app/pages/setting-record/setting-record.page.html +++ b/src/app/pages/setting-record/setting-record.page.html @@ -1,7 +1,7 @@ - + {{ 'LOG_BACKUP_AND_RESTORE' | translate }} diff --git a/src/app/pages/setting-result-buttons/setting-result-buttons.page.html b/src/app/pages/setting-result-buttons/setting-result-buttons.page.html index 4c9b882..cedd3fc 100644 --- a/src/app/pages/setting-result-buttons/setting-result-buttons.page.html +++ b/src/app/pages/setting-result-buttons/setting-result-buttons.page.html @@ -1,7 +1,7 @@ - + {{ 'TASK_BUTTON_LAYOUT' | translate }} diff --git a/src/app/pages/setting-result/setting-result.page.html b/src/app/pages/setting-result/setting-result.page.html index dfc64f3..99d447e 100644 --- a/src/app/pages/setting-result/setting-result.page.html +++ b/src/app/pages/setting-result/setting-result.page.html @@ -1,7 +1,7 @@ - + {{ 'QR_CODE_AND_DECODED_RESULT' | translate }} diff --git a/src/app/pages/setting-search-engine/setting-search-engine.page.html b/src/app/pages/setting-search-engine/setting-search-engine.page.html index c7dc4c0..d33aee9 100644 --- a/src/app/pages/setting-search-engine/setting-search-engine.page.html +++ b/src/app/pages/setting-search-engine/setting-search-engine.page.html @@ -1,7 +1,7 @@ - + {{ 'SEARCH_ENGINE' | translate }} diff --git a/src/app/pages/setting-start-page/setting-start-page.page.html b/src/app/pages/setting-start-page/setting-start-page.page.html index f88a0f0..ddab0cb 100644 --- a/src/app/pages/setting-start-page/setting-start-page.page.html +++ b/src/app/pages/setting-start-page/setting-start-page.page.html @@ -1,7 +1,7 @@ - + {{ 'APP_INITIAL_PAGE' | translate }} diff --git a/src/app/pages/setting-vibration/setting-vibration.page.html b/src/app/pages/setting-vibration/setting-vibration.page.html index 5089de6..b53bd6a 100644 --- a/src/app/pages/setting-vibration/setting-vibration.page.html +++ b/src/app/pages/setting-vibration/setting-vibration.page.html @@ -1,7 +1,7 @@ - + {{ 'VIBRATION' | translate }} From df225cc67e62b5d3ba1f2cd43db057f6f9c96bed Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Mon, 3 Oct 2022 22:11:23 +0800 Subject: [PATCH 02/19] style: change presentation of tutorials --- src/app/app.module.ts | 4 - .../bookmark-tutorial.module.ts | 40 -- .../bookmark-tutorial.page.html | 57 --- .../bookmark-tutorial.page.scss | 18 - .../bookmark-tutorial.page.ts | 65 --- .../history-tutorial.module.ts | 39 -- .../history-tutorial.page.html | 57 --- .../history-tutorial.page.scss | 18 - .../history-tutorial/history-tutorial.page.ts | 65 --- src/app/pages/history/history.page.html | 4 +- src/app/pages/history/history.page.ts | 46 -- .../setting-record/setting-record.page.html | 399 ++++++++++-------- .../setting-record/setting-record.page.scss | 8 + .../setting-record/setting-record.page.ts | 37 +- src/app/services/env.service.ts | 30 +- src/assets/i18n/de.json | 6 +- src/assets/i18n/en.json | 6 +- src/assets/i18n/fr.json | 6 +- src/assets/i18n/it.json | 6 +- src/assets/i18n/zh-CN.json | 6 +- src/assets/i18n/zh-HK.json | 6 +- 21 files changed, 297 insertions(+), 626 deletions(-) delete mode 100644 src/app/modals/bookmark-tutorial/bookmark-tutorial.module.ts delete mode 100644 src/app/modals/bookmark-tutorial/bookmark-tutorial.page.html delete mode 100644 src/app/modals/bookmark-tutorial/bookmark-tutorial.page.scss delete mode 100644 src/app/modals/bookmark-tutorial/bookmark-tutorial.page.ts delete mode 100644 src/app/modals/history-tutorial/history-tutorial.module.ts delete mode 100644 src/app/modals/history-tutorial/history-tutorial.page.html delete mode 100644 src/app/modals/history-tutorial/history-tutorial.page.scss delete mode 100644 src/app/modals/history-tutorial/history-tutorial.page.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index efae496..8a5fc34 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -19,14 +19,12 @@ import { ScreenOrientation } from '@awesome-cordova-plugins/screen-orientation/n import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MatFormFieldModule } from '@angular/material/form-field'; -import { HistoryTutorialPageModule } from './modals/history-tutorial/history-tutorial.module'; import { DatePipe } from '@angular/common'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatButtonModule } from '@angular/material/button'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { EnvService } from './services/env.service'; import { FormsModule } from '@angular/forms'; -import { BookmarkTutorialPageModule } from './modals/bookmark-tutorial/bookmark-tutorial.module'; import { QrCodePageModule } from './modals/qr-code/qr-code.module'; export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { @@ -51,8 +49,6 @@ export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { } }), IonicStorageModule.forRoot(), - HistoryTutorialPageModule, - BookmarkTutorialPageModule, QrCodePageModule, BrowserAnimationsModule, MatFormFieldModule, diff --git a/src/app/modals/bookmark-tutorial/bookmark-tutorial.module.ts b/src/app/modals/bookmark-tutorial/bookmark-tutorial.module.ts deleted file mode 100644 index cbb7fd2..0000000 --- a/src/app/modals/bookmark-tutorial/bookmark-tutorial.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import { IonicModule } from '@ionic/angular'; - -import { BookmarkTutorialPage } from './bookmark-tutorial.page'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { TranslateHttpLoader } from '@ngx-translate/http-loader'; -import { HttpClient } from '@angular/common/http'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; - -export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { - return new TranslateHttpLoader(http, './assets/i18n/', '.json'); -} - - -@NgModule({ - imports: [ - CommonModule, - FormsModule, - IonicModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - MatSelectModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient] - } - }), - ], - declarations: [BookmarkTutorialPage] -}) -export class BookmarkTutorialPageModule {} diff --git a/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.html b/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.html deleted file mode 100644 index d562d6b..0000000 --- a/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - {{ 'TUTORIAL' | translate }} - - - - -

- - {{ 'MSG.TUTORIAL_SWIPE_LEFT' | translate }} - -

-
-
- - - - -

- - {{ 'MSG.BOOKMARK_TUTORIAL_SWIPE_RIGHT' | translate }} - -

-
-
- -
- - - - - - -

- - {{ 'MSG.TUTORIAL_NOT_SHOW_AGAIN' | translate }} - -

-
-
- - - - - {{ 'OK' | translate }} - - - - -
\ No newline at end of file diff --git a/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.scss b/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.scss deleted file mode 100644 index 0ed98c0..0000000 --- a/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.scss +++ /dev/null @@ -1,18 +0,0 @@ -mat-form-field { - width: 100%; -} - -.content-item { - padding-left: 16px; - padding-right: 16px; -} - -ion-footer { - &.footer-md::before { - background-image: none; - } -} - -.footer-ios ion-toolbar:first-of-type { - --border-width: 0 !important; -} \ No newline at end of file diff --git a/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.ts b/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.ts deleted file mode 100644 index 5ae05e6..0000000 --- a/src/app/modals/bookmark-tutorial/bookmark-tutorial.page.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Component, ViewChild } from '@angular/core'; -import { Haptics, ImpactStyle } from '@capacitor/haptics'; -import { Toast } from '@capacitor/toast'; -import { ModalController } from '@ionic/angular'; -import { TranslateService } from '@ngx-translate/core'; -import { EnvService } from 'src/app/services/env.service'; - -@Component({ - selector: 'app-bookmark-tutorial', - templateUrl: './bookmark-tutorial.page.html', - styleUrls: ['./bookmark-tutorial.page.scss'], -}) -export class BookmarkTutorialPage { - - @ViewChild('content') contentEl: HTMLIonContentElement; - - constructor( - public modalController: ModalController, - public translate: TranslateService, - public env: EnvService, - ) { - setTimeout( - () => { - this.contentEl.scrollToBottom(500); - }, 750 - ); - } - - async saveBookmarkTutorialShowing() { - if (this.env.notShowBookmarkTutorial === true) { - await this.env.storageSet("not-show-bookmark-tutorial", 'yes'); - } else { - await this.env.storageSet("not-show-bookmark-tutorial", 'no'); - } - } - - async tapHaptic() { - if (this.env.vibration === 'on' || this.env.vibration === 'on-haptic') { - await Haptics.impact({ style: ImpactStyle.Medium }) - .catch(async err => { - if (this.env.debugMode === 'on') { - await Toast.show({ text: 'Err when Haptics.impact: ' + JSON.stringify(err), position: "top", duration: "long" }) - } - }) - } - } - - closeModal(): void { - this.modalController.dismiss(); - } - - get color() { - switch (this.env.colorTheme) { - case 'dark': - return 'dark'; - case 'light': - return 'white'; - case 'black': - return 'black'; - default: - return 'white'; - } - } - -} diff --git a/src/app/modals/history-tutorial/history-tutorial.module.ts b/src/app/modals/history-tutorial/history-tutorial.module.ts deleted file mode 100644 index 5452d6e..0000000 --- a/src/app/modals/history-tutorial/history-tutorial.module.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import { IonicModule } from '@ionic/angular'; - -import { HistoryTutorialPage } from './history-tutorial.page'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { TranslateHttpLoader } from '@ngx-translate/http-loader'; -import { HttpClient } from '@angular/common/http'; - -export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { - return new TranslateHttpLoader(http, './assets/i18n/', '.json'); -} - -@NgModule({ - imports: [ - CommonModule, - FormsModule, - IonicModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - MatSelectModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient] - } - }), - ], - declarations: [HistoryTutorialPage] -}) -export class HistoryTutorialPageModule {} diff --git a/src/app/modals/history-tutorial/history-tutorial.page.html b/src/app/modals/history-tutorial/history-tutorial.page.html deleted file mode 100644 index ed6b767..0000000 --- a/src/app/modals/history-tutorial/history-tutorial.page.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - {{ 'TUTORIAL' | translate }} - - - - -

- - {{ 'MSG.TUTORIAL_SWIPE_LEFT' | translate }} - -

-
-
- - - - -

- - {{ 'MSG.TUTORIAL_SWIPE_RIGHT' | translate }} - -

-
-
- -
- - - - - - -

- - {{ 'MSG.TUTORIAL_NOT_SHOW_AGAIN' | translate }} - -

-
-
- - - - - {{ 'OK' | translate }} - - - - -
\ No newline at end of file diff --git a/src/app/modals/history-tutorial/history-tutorial.page.scss b/src/app/modals/history-tutorial/history-tutorial.page.scss deleted file mode 100644 index 0ed98c0..0000000 --- a/src/app/modals/history-tutorial/history-tutorial.page.scss +++ /dev/null @@ -1,18 +0,0 @@ -mat-form-field { - width: 100%; -} - -.content-item { - padding-left: 16px; - padding-right: 16px; -} - -ion-footer { - &.footer-md::before { - background-image: none; - } -} - -.footer-ios ion-toolbar:first-of-type { - --border-width: 0 !important; -} \ No newline at end of file diff --git a/src/app/modals/history-tutorial/history-tutorial.page.ts b/src/app/modals/history-tutorial/history-tutorial.page.ts deleted file mode 100644 index 22b4c1a..0000000 --- a/src/app/modals/history-tutorial/history-tutorial.page.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Component, ViewChild } from '@angular/core'; -import { Haptics, ImpactStyle } from '@capacitor/haptics'; -import { Toast } from '@capacitor/toast'; -import { ModalController, ToastController } from '@ionic/angular'; -import { TranslateService } from '@ngx-translate/core'; -import { EnvService } from 'src/app/services/env.service'; - -@Component({ - selector: 'app-history-tutorial', - templateUrl: './history-tutorial.page.html', - styleUrls: ['./history-tutorial.page.scss'], -}) -export class HistoryTutorialPage { - - @ViewChild('content') contentEl: HTMLIonContentElement; - - constructor( - public modalController: ModalController, - public translate: TranslateService, - public env: EnvService, - ) { - setTimeout( - () => { - this.contentEl.scrollToBottom(500); - }, 750 - ); - } - - async saveHistoryTutorialShowing() { - if (this.env.notShowHistoryTutorial === true) { - await this.env.storageSet("not-show-history-tutorial", 'yes'); - } else { - await this.env.storageSet("not-show-history-tutorial", 'no'); - } - } - - async tapHaptic() { - if (this.env.vibration === 'on' || this.env.vibration === 'on-haptic') { - await Haptics.impact({ style: ImpactStyle.Medium }) - .catch(async err => { - if (this.env.debugMode === 'on') { - await Toast.show({ text: 'Err when Haptics.impact: ' + JSON.stringify(err), position: "top", duration: "long" }) - } - }) - } - } - - closeModal(): void { - this.modalController.dismiss(); - } - - get color() { - switch (this.env.colorTheme) { - case 'dark': - return 'dark'; - case 'light': - return 'white'; - case 'black': - return 'black'; - default: - return 'white'; - } - } - -} diff --git a/src/app/pages/history/history.page.html b/src/app/pages/history/history.page.html index ad0acd5..2860c02 100644 --- a/src/app/pages/history/history.page.html +++ b/src/app/pages/history/history.page.html @@ -6,7 +6,7 @@ {{ 'SIMPLE_QR' | translate}} - {{ 'SETTING' | translate }} + {{ 'MORE' | translate }}
@@ -17,7 +17,7 @@ {{ 'BOOKMARKS' | translate }} - {{ 'SETTING' | translate }} + {{ 'MORE' | translate }}
diff --git a/src/app/pages/history/history.page.ts b/src/app/pages/history/history.page.ts index 222fe58..a6737fe 100644 --- a/src/app/pages/history/history.page.ts +++ b/src/app/pages/history/history.page.ts @@ -7,10 +7,8 @@ import { de, enUS, fr, it, zhCN, zhHK } from 'date-fns/locale'; import { ScanRecord } from 'src/app/models/scan-record'; import { TranslateService } from '@ngx-translate/core'; import { Bookmark } from 'src/app/models/bookmark'; -import { HistoryTutorialPage } from 'src/app/modals/history-tutorial/history-tutorial.page'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; import { Toast } from '@capacitor/toast'; -import { BookmarkTutorialPage } from 'src/app/modals/bookmark-tutorial/bookmark-tutorial.page'; import { fastFadeIn, flyOut } from 'src/app/utils/animations'; import { SplashScreen } from '@capacitor/splash-screen'; @@ -100,19 +98,6 @@ export class HistoryPage { async ionViewDidEnter() { await SplashScreen.hide() this.segmentModel = this.env.historyPageStartSegment; - if (this.segmentModel == 'history') { - if (this.env.notShowHistoryTutorial === false) { - this.env.notShowHistoryTutorial = true; - this.env.storageSet("not-show-history-tutorial", 'yes'); - await this.showHistoryTutorial(); - } - } else if (this.segmentModel == 'bookmarks') { - if (this.env.notShowBookmarkTutorial === false) { - this.env.notShowBookmarkTutorial = true; - this.env.storageSet("not-show-bookmark-tutorial", 'yes'); - await this.showBookmarkTutorial(); - } - } } ionViewWillLeave() { @@ -135,24 +120,6 @@ export class HistoryPage { return bookmark.id; } - async showHistoryTutorial() { - const modal = await this.modalController.create({ - component: HistoryTutorialPage, - componentProps: { - } - }); - modal.present(); - } - - async showBookmarkTutorial() { - const modal = await this.modalController.create({ - component: BookmarkTutorialPage, - componentProps: { - } - }); - modal.present(); - } - maskDatetimeAndSource(date: Date, source: 'create' | 'view' | 'scan' | undefined): string { if (!date) { return "-"; @@ -256,19 +223,6 @@ export class HistoryPage { } async segmentChanged(ev: any) { - if (ev?.detail?.value == 'history') { - if (this.env.notShowHistoryTutorial === false) { - this.env.notShowHistoryTutorial = true; - this.env.storageSet("not-show-history-tutorial", 'yes'); - await this.showHistoryTutorial(); - } - } else if (ev?.detail?.value == 'bookmarks') { - if (this.env.notShowBookmarkTutorial === false) { - this.env.notShowBookmarkTutorial = true; - this.env.storageSet("not-show-bookmark-tutorial", 'yes'); - await this.showBookmarkTutorial(); - } - } this.firstLoadItems(); } diff --git a/src/app/pages/setting-record/setting-record.page.html b/src/app/pages/setting-record/setting-record.page.html index a0016fc..e61c921 100644 --- a/src/app/pages/setting-record/setting-record.page.html +++ b/src/app/pages/setting-record/setting-record.page.html @@ -1,177 +1,234 @@ - - - - - - - {{ 'LOG_BACKUP_AND_RESTORE' | translate }} - - +
+ + + + + + + {{ 'LOG_BACKUP_AND_RESTORE' | translate }} + + - + -
- {{ 'INITIAL_SEGMENT' | translate }} - - - - - -

- - {{ 'LOG' | translate }} - -

-
- - -
- - - - -

- - {{ 'BOOKMARK' | translate }} - -

-
- - -
-
-
- -
- {{ 'AUTO_LOGGING' | translate }} - - -

- - {{ 'MSG.AUTO_LOGGING_EXPLAIN' | translate }} - -

-
-
- - -

- - {{ (env.scanRecordLogging == 'on'? 'TURNED_ON' : 'TURNED_OFF') | translate }} - -

-
- - -
-
- -
- {{ 'RECORDS_LIMIT' | translate }} - - -

- - {{ 'MSG.RECORDS_LIMIT_EXPLAIN' | translate }} - -

-
-
- - - -

- - {{ '30_RECORDS' | translate }} - -

-
- - -
- - -

- - {{ '50_RECORDS' | translate }} - -

-
- - -
- - -

- - {{ '100_RECORDS' | translate }} - -

-
- - -
- - -

- - {{ 'NO_LIMIT' | translate }} - -

-
- - -
-
- - -

- - {{ 'SHOW_NUMBER_OR_RECORDS' | translate }} - -

-
- - -
-
- -
- {{ 'BACKUP' | translate }} - - -

- - {{ 'MSG.BACKUP_EXPLAIN' | translate }} - -

-
-
-
- - {{ 'BACKUP' | translate }} - +
+ {{ 'INITIAL_SEGMENT' | translate }} + + + + + + +

+ + {{ 'LOG' | translate }} + +

+
+ + +
+ + + + +

+ + {{ 'BOOKMARK' | translate }} + +

+
+ + +
+
-
-
- {{ 'RESTORE' | translate }} - - -

- - {{ (isIOS? 'MSG.RESTORE_EXPLAIN_IOS' : 'MSG.RESTORE_EXPLAIN') | translate }} - -

-
-
-
- - {{ 'RESTORE' | translate }} - +
+ {{ 'MANAGE_RECORDS' | translate }} + +
+ + {{ 'VIEW_INSTRUCTIONS' | translate }} + +
-
- \ No newline at end of file + + + + + + + {{ 'OK' | translate }} + + + + + + + {{ 'TUTORIAL' | translate }} + + + + +

+ + {{ 'MSG.TUTORIAL_SWIPE_LEFT' | translate }} + +

+
+
+ + + + +

+ + {{ 'MSG.TUTORIAL_SWIPE_RIGHT' | translate }} + +

+
+
+
+
+
+ +
+ {{ 'AUTO_LOGGING' | translate }} + + + +

+ + {{ 'MSG.AUTO_LOGGING_EXPLAIN' | translate }} + +

+
+
+ + +

+ + {{ (env.scanRecordLogging == 'on'? 'TURNED_ON' : 'TURNED_OFF') | translate }} + +

+
+ + +
+
+ +
+ {{ 'RECORDS_LIMIT' | translate }} + + + +

+ + {{ 'MSG.RECORDS_LIMIT_EXPLAIN' | translate }} + +

+
+
+ + + +

+ + {{ '30_RECORDS' | translate }} + +

+
+ + +
+ + +

+ + {{ '50_RECORDS' | translate }} + +

+
+ + +
+ + +

+ + {{ '100_RECORDS' | translate }} + +

+
+ + +
+ + +

+ + {{ 'NO_LIMIT' | translate }} + +

+
+ + +
+
+ + +

+ + {{ 'SHOW_NUMBER_OR_RECORDS' | translate }} + +

+
+ + +
+
+ +
+ {{ 'BACKUP' | translate }} + + +

+ + {{ 'MSG.BACKUP_EXPLAIN' | translate }} + +

+
+
+
+ + {{ 'BACKUP' | translate }} + +
+
+ +
+ {{ 'RESTORE' | translate }} + + +

+ + {{ (isIOS? 'MSG.RESTORE_EXPLAIN_IOS' : 'MSG.RESTORE_EXPLAIN') | translate }} + +

+
+
+
+ + {{ 'RESTORE' | translate }} + +
+
+ + +
\ No newline at end of file diff --git a/src/app/pages/setting-record/setting-record.page.scss b/src/app/pages/setting-record/setting-record.page.scss index e69de29..2c16e8d 100644 --- a/src/app/pages/setting-record/setting-record.page.scss +++ b/src/app/pages/setting-record/setting-record.page.scss @@ -0,0 +1,8 @@ +mat-form-field { + width: 100%; +} + +.content-item { + padding-left: 16px; + padding-right: 16px; +} diff --git a/src/app/pages/setting-record/setting-record.page.ts b/src/app/pages/setting-record/setting-record.page.ts index 68668b2..195cae2 100644 --- a/src/app/pages/setting-record/setting-record.page.ts +++ b/src/app/pages/setting-record/setting-record.page.ts @@ -1,5 +1,5 @@ -import { Component } from '@angular/core'; -import { AlertController, LoadingController, Platform } from '@ionic/angular'; +import { Component, OnInit } from '@angular/core'; +import { AlertController, LoadingController, ModalController, Platform } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; import { Clipboard } from '@capacitor/clipboard'; @@ -18,10 +18,12 @@ import { Haptics, ImpactStyle } from '@capacitor/haptics'; templateUrl: './setting-record.page.html', styleUrls: ['./setting-record.page.scss'], }) -export class SettingRecordPage { +export class SettingRecordPage implements OnInit { preventRecordsLimitToast: boolean = true; + presentingElement = null; + constructor( public translate: TranslateService, public env: EnvService, @@ -30,9 +32,14 @@ export class SettingRecordPage { private loadingController: LoadingController, private chooser: Chooser, private socialSharing: SocialSharing, - private platform: Platform + private platform: Platform, + private modalController: ModalController, ) { } + ngOnInit() { + this.presentingElement = document.querySelector('.ion-page'); + } + ionViewDidEnter() { setTimeout(() => this.preventRecordsLimitToast = false, 100); } @@ -41,6 +48,15 @@ export class SettingRecordPage { this.preventRecordsLimitToast = true; } + // async showTutorial() { + // const modal = await this.modalController.create({ + // component: HistoryTutorialPage, + // componentProps: { + // } + // }); + // modal.present(); + // } + async saveHistoryPageStartSegment() { await this.env.storageSet("history-page-start-segment", this.env.historyPageStartSegment); } @@ -322,6 +338,19 @@ export class SettingRecordPage { } } + get color() { + switch (this.env.colorTheme) { + case 'dark': + return 'dark'; + case 'light': + return 'white'; + case 'black': + return 'black'; + default: + return 'white'; + } + } + get isIOS() { return this.platform.is('ios'); } diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index e673426..7535603 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -44,8 +44,8 @@ export class EnvService { public qrCodeMargin: number = 3; public vibration: 'on' | 'on-haptic' | 'on-scanned' | 'off' = 'on'; public orientation: 'default' | 'portrait' | 'landscape' = 'default'; - public notShowHistoryTutorial: boolean = false; - public notShowBookmarkTutorial: boolean = false; + // public notShowHistoryTutorial: boolean = false; + // public notShowBookmarkTutorial: boolean = false; public notShowUpdateNotes: boolean = false; public searchEngine: 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' = 'google'; public resultPageButtons: 'detailed' | 'icon-only' = 'detailed'; @@ -193,24 +193,6 @@ export class EnvService { } } ) - this._storage.get("not-show-history-tutorial").then( - value => { - if (value !== null && value !== undefined) { - this.notShowHistoryTutorial = (value === 'yes' ? true : false); - } else { - this.notShowHistoryTutorial = false; - } - } - ); - this._storage.get("not-show-bookmark-tutorial").then( - value => { - if (value !== null && value !== undefined) { - this.notShowBookmarkTutorial = (value === 'yes' ? true : false); - } else { - this.notShowBookmarkTutorial = false; - } - } - ); this._storage.get("language").then( async value => { if (value !== null && value !== undefined) { @@ -585,8 +567,6 @@ export class EnvService { this.vibration = 'on'; this.orientation = 'default'; await this.toggleOrientationChange(); - this.notShowHistoryTutorial = false; - this.notShowBookmarkTutorial = false; this.notShowUpdateNotes = false; this.searchEngine = 'google'; this.resultPageButtons = 'detailed'; @@ -678,12 +658,6 @@ export class EnvService { await this.toggleOrientationChange(); await this.storageSet("orientation", this.orientation); - this.notShowHistoryTutorial = false; - await this.storageSet("not-show-history-tutorial", 'no'); - - this.notShowBookmarkTutorial = false; - await this.storageSet("not-show-bookmark-tutorial", 'no'); - this.notShowUpdateNotes = false; if (this.platform.is('ios')) { await this.storageSet(this.IOS_PATCH_NOTE_STORAGE_KEY, 'no'); diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index e256de2..e892864 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -108,11 +108,13 @@ "LOG": "Protokoll", "LOG_BACKUP_AND_RESTORE": "Protokoll, Sicherung und Wiederherstellung", "MALE": "Männlich", + "MANAGE_RECORDS": "Aufzeichnungen verwalten", "MARGIN": "Rand", "MESSAGE": "Nachricht", "MESSAGE_CONTENT": "Inhalt der Nachricht", "MICROSOFT_BING": "Microsoft Bing", "MOBILE_PHONE_NUMBER": "Mobiltelefon Nummer", + "MORE": "Mehr", "NAME": "Name", "NO": "Nein", "NONE": "Keine", @@ -200,6 +202,7 @@ "VIEW_GITHUB": "GitHub anzeigen", "VIEW_LOG": "Protokoll anzeigen", "VIEW_STORE_AND_SOURCE_CODE": "Store und Quellcode anzeigen", + "VIEW_INSTRUCTIONS": "Anweisungen anzeigen", "WEBSITE": "Website", "WIFI": "WiFi", "WIFI_ENCRYPTION": "WiFi Verschlüsselung", @@ -221,7 +224,6 @@ "BACKUP_SUCCESSFULLY": "

Die Sicherung wurde erfolgreich durchgeführt. Bitte speichere die Sicherungsdatei und bewahre das folgende Geheimnis sicher auf

{secret}

", "BARCODE_TYPE": "Scanne
  • QR Code
  • 1D Barcode
  • Aztec Code
  • Data Matrix
  • PDF417
Bild importieren
  • QR Code
Erstelle
  • QR Code
", "BOOKMARKED": "Erfolgreich mit Lesezeichen versehen", - "BOOKMARK_TUTORIAL_SWIPE_RIGHT": "Wische nach rechts, um das Tag des entsprechenden Lesezeichens zu bearbeiten.", "BUTTON_DISPLAY_EXPLAIN": "Ein- und Ausblenden der Aufgabenschaltflächen.", "BUTTON_STYLE_EXPLAIN": "Wähle den Stil der Aufgabenschaltflächen.", "CAMERA_PERMISSION": "Um das Scannen zu aktivieren, muss man der Kamera die Erlaubnis erteilen.", @@ -279,7 +281,7 @@ "TAG_MAX_LENGTH_EXPLAIN": "Die Länge des Tags darf 30 Zeichen nicht überschreiten.", "TUTORIAL_NOT_SHOW_AGAIN": "Nicht wieder zeigen", "TUTORIAL_SWIPE_LEFT": "Wische nach links, um den entsprechenden Datensatz zu löschen.", - "TUTORIAL_SWIPE_RIGHT": "Wische nach rechts, um den Text des entsprechenden Datensatzes mit einem Lesezeichen zu versehen.", + "TUTORIAL_SWIPE_RIGHT": "Wische nach rechts, um den Text des entsprechenden Datensatzes mit einem Lesezeichen zu versehen / Bearbeiten Sie das Label des entsprechenden Lesezeichens.", "UNDO_DELETE": "Du kannst die Löschung rückgängig machen", "VIBRATION_EXPLAIN": "Vibration oder haptisches Feedback geben. Bitte beachte, dass nicht alle Geräte diese Funktion unterstützen." }, diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 13e479a..584fda3 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -108,11 +108,13 @@ "LOG": "Log", "LOG_BACKUP_AND_RESTORE": "Log, Backup & Restore", "MALE": "Male", + "MANAGE_RECORDS": "Manage Records", "MARGIN": "Margin", "MESSAGE": "Message", "MESSAGE_CONTENT": "Message Content", "MICROSOFT_BING": "Microsoft Bing", "MOBILE_PHONE_NUMBER": "Mobile Phone Number", + "MORE": "More", "NAME": "Name", "NO": "No", "NONE": "None", @@ -200,6 +202,7 @@ "VIEW_GITHUB": "View GitHub", "VIEW_LOG": "View Log", "VIEW_STORE_AND_SOURCE_CODE": "View Store & Source Code", + "VIEW_INSTRUCTIONS": "View Instructions", "WEBSITE": "Website", "WIFI": "WiFi", "WIFI_ENCRYPTION": "WiFi Encryption", @@ -221,7 +224,6 @@ "BACKUP_SUCCESSFULLY": "

Successfully backed up. Please save the backup file and keep the following secret securely

{secret}

", "BARCODE_TYPE": "Scan
  • QR Code
  • 1D Barcode
  • Aztec Code
  • Data Matrix
  • PDF417
Import Image
  • QR Code
Create
  • QR Code
", "BOOKMARKED": "Bookmarked Successfully", - "BOOKMARK_TUTORIAL_SWIPE_RIGHT": "Swipe right to edit the tag of corresponding bookmark.", "BUTTON_DISPLAY_EXPLAIN": "Show or hide the task buttons.", "BUTTON_STYLE_EXPLAIN": "Choose the style of the task buttons.", "CAMERA_PERMISSION": "To enable scanning, you must grant Camera permission.", @@ -279,7 +281,7 @@ "TAG_MAX_LENGTH_EXPLAIN": "The length of the tag must not exceed 30 characters.", "TUTORIAL_NOT_SHOW_AGAIN": "Do not show again", "TUTORIAL_SWIPE_LEFT": "Swipe left to delete corresponding record.", - "TUTORIAL_SWIPE_RIGHT": "Swipe right to bookmark the text of corresponding record.", + "TUTORIAL_SWIPE_RIGHT": "Swipe right to bookmark the text of corresponding record / edit the tag of corresponding bookmark.", "UNDO_DELETE": "You can undo the deletion", "VIBRATION_EXPLAIN": "Provide vibration or haptic feedback. Please note that not all devices support this feature." }, diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 1492a2a..e6b5f4e 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -108,11 +108,13 @@ "LOG": "Registre", "LOG_BACKUP_AND_RESTORE": "Journalisation, sauvegarde et restauration", "MALE": "Mâle", + "MANAGE_RECORDS": "Gérer les enregistrements", "MARGIN": "Marge", "MESSAGE": "Message", "MESSAGE_CONTENT": "Contenu du message", "MICROSOFT_BING": "Microsoft Bing", "MOBILE_PHONE_NUMBER": "Numéro de portable", + "MORE": "Plus", "NAME": "Nom", "NO": "Non", "NONE": "Aucun", @@ -200,6 +202,7 @@ "VIEW_GITHUB": "Afficher le GitHub", "VIEW_LOG": "Afficher le journal", "VIEW_STORE_AND_SOURCE_CODE": "Afficher le magasin et le code source", + "VIEW_INSTRUCTIONS": "Afficher les instructions", "WEBSITE": "Site Web", "WIFI": "Wi-Fi", "WIFI_ENCRYPTION": "Cryptage Wi-Fi", @@ -221,7 +224,6 @@ "BACKUP_SUCCESSFULLY": "

Sauvegarde réussie. Veuillez enregistrer le fichier de sauvegarde et conserver le secret suivant en toute sécurité

{secret}

", "BARCODE_TYPE": "Scanner
  • Code QR
  • Code-barres 1D
  • Code aztèque
  • Data Matrix
  • PDF417
Importer une image
  • Code QR
Créer
  • Code QR
", "BOOKMARKED": "Mis en signet avec succès", - "BOOKMARK_TUTORIAL_SWIPE_RIGHT": "Balayez vers la droite pour modifier la balise du signet correspondant.", "BUTTON_DISPLAY_EXPLAIN": "Afficher ou masquer les boutons de tâche.", "BUTTON_STYLE_EXPLAIN": "Choisissez le style des boutons de tâche.", "CAMERA_PERMISSION": "Pour activer la numérisation, vous devez accorder l'autorisation Caméra.", @@ -279,7 +281,7 @@ "TAG_MAX_LENGTH_EXPLAIN": "La longueur de la balise ne doit pas dépasser 30 caractères.", "TUTORIAL_NOT_SHOW_AGAIN": "Ne pas montrer de nouveau", "TUTORIAL_SWIPE_LEFT": "Balayez vers la gauche pour supprimer l'enregistrement correspondant.", - "TUTORIAL_SWIPE_RIGHT": "Balayez vers la droite pour mettre en signet le texte de l'enregistrement correspondant.", + "TUTORIAL_SWIPE_RIGHT": "Balayez vers la droite pour mettre en signet le texte de l'enregistrement / modifier la balise du signet correspondant.", "UNDO_DELETE": "Vous pouvez annuler la suppression", "VIBRATION_EXPLAIN": "Fournir des vibrations ou un retour haptique. Veuillez noter que tous les appareils ne prennent pas en charge cette fonctionnalité." }, diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 2ab23f2..23d23e4 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -108,11 +108,13 @@ "LOG": "Log", "LOG_BACKUP_AND_RESTORE": "Logga, Esegui backup & Ripristina", "MALE": "Uomo", + "MANAGE_RECORDS": "Gestisci record", "MARGIN": "Margine", "MESSAGE": "Messaggio", "MESSAGE_CONTENT": "Contenuto del messaggio", "MICROSOFT_BING": "Microsoft Bing", "MOBILE_PHONE_NUMBER": "Numero di telefono cellulare", + "MORE": "Più", "NAME": "Nome", "NO": "No", "NONE": "Nessuno", @@ -200,6 +202,7 @@ "VIEW_GITHUB": "Visualizza GitHub", "VIEW_LOG": "Visualizza Log", "VIEW_STORE_AND_SOURCE_CODE": "Visualizza Store & Codice Sorgente", + "VIEW_INSTRUCTIONS": "Visualizza le istruzioni", "WEBSITE": "Sito Web", "WIFI": "WiFi", "WIFI_ENCRYPTION": "Crittografia WiFi", @@ -221,7 +224,6 @@ "BACKUP_SUCCESSFULLY": "

Backup riuscito. Si prega di salvare il file di backup e salvare la seguente chiave segreta in modo sicuro

{secret}

", "BARCODE_TYPE": "Scannerizzazione
  • Codice QR
  • Codice a barre 1D
  • Codice Aztec
  • Matrice di Dati
  • PDF417
Importa Immagine
  • Codice QR
Crea
  • Codice QR
", "BOOKMARKED": "Segnalibro salvato con successo", - "BOOKMARK_TUTORIAL_SWIPE_RIGHT": "Scorri verso destra per modificare il tag del segnalibro corrispondente.", "BUTTON_DISPLAY_EXPLAIN": "Mostra o nascondi il pulsante operazione.", "BUTTON_STYLE_EXPLAIN": "Scegli lo stile del pulsante operazione.", "CAMERA_PERMISSION": "Per abilitare la scansione, è necessario concedere l'autorizzazione Fotocamera.", @@ -279,7 +281,7 @@ "TAG_MAX_LENGTH_EXPLAIN": "La lunghezza del tag non deve superare i 30 caratteri.", "TUTORIAL_NOT_SHOW_AGAIN": "Non mostrare di nuovo", "TUTORIAL_SWIPE_LEFT": "Scorri verso sinistra per eliminare il record corrispondente.", - "TUTORIAL_SWIPE_RIGHT": "Scorri verso destra per aggiungere ai segnalibri il testo del record corrispondente.", + "TUTORIAL_SWIPE_RIGHT": "Scorri verso destra per aggiungere ai segnalibri il testo del record / modificare il tag del segnalibro corrispondente.", "UNDO_DELETE": "È possibile annullare l'eliminazione", "VIBRATION_EXPLAIN": "Fornire vibrazioni o feedback tattile. Tieni presente che non tutti i dispositivi supportano questa funzione." }, diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index 9bc560f..554409e 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -108,11 +108,13 @@ "LOG": "记录", "LOG_BACKUP_AND_RESTORE": "记录、备份与还原", "MALE": "男性", + "MANAGE_RECORDS": "管理记录", "MARGIN": "边距", "MESSAGE": "信息", "MESSAGE_CONTENT": "信息内容", "MICROSOFT_BING": "Microsoft Bing", "MOBILE_PHONE_NUMBER": "手提电话号码", + "MORE": "更多", "NAME": "姓名", "NO": "否", "NONE": "没有", @@ -200,6 +202,7 @@ "VIEW_GITHUB": "查看 GitHub", "VIEW_LOG": "查看记录", "VIEW_STORE_AND_SOURCE_CODE": "查看商店及源代码", + "VIEW_INSTRUCTIONS": "查看说明", "WEBSITE": "网站", "WIFI": "WiFi", "WIFI_ENCRYPTION": "安全性", @@ -221,7 +224,6 @@ "BACKUP_SUCCESSFULLY": "

成功备份。请妥善保存备份档及以下密码

{secret}

", "BARCODE_TYPE": "扫描
  • QR 码
  • 一维条码
  • Aztec 码
  • 数据矩阵码
  • PDF417 条码
汇入图片
  • QR 码
建立
  • QR 码
", "BOOKMARKED": "成功加入书签", - "BOOKMARK_TUTORIAL_SWIPE_RIGHT": "向右划项目可修改标签", "BUTTON_DISPLAY_EXPLAIN": "显示或隐藏行动按键。", "BUTTON_STYLE_EXPLAIN": "选择行动按键的样式。", "CAMERA_PERMISSION": "要使用扫描功能,您必须授权「简易QR」使用相机。 ", @@ -279,7 +281,7 @@ "TAG_MAX_LENGTH_EXPLAIN": "标签长度不能多于 30 个字元。", "TUTORIAL_NOT_SHOW_AGAIN": "下次不再提醒", "TUTORIAL_SWIPE_LEFT": "向左划项目可删除相关记录", - "TUTORIAL_SWIPE_RIGHT": "向右划项目可将相关记录的文字加入书签", + "TUTORIAL_SWIPE_RIGHT": "向右划项目可将相关记录的文字加入书签 / 修改标签", "UNDO_DELETE": "您可在数秒内复原记录", "VIBRATION_EXPLAIN": "提供震动或触感反馈。请注意,并非所有设备皆支援此功能。" }, diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index 9c29b10..1c1fffe 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -108,11 +108,13 @@ "LOG": "記錄", "LOG_BACKUP_AND_RESTORE": "記錄、備份與還原", "MALE": "男性", + "MANAGE_RECORDS": "管理記錄", "MARGIN": "邊距", "MESSAGE": "信息", "MESSAGE_CONTENT": "信息內容", "MICROSOFT_BING": "Microsoft Bing", "MOBILE_PHONE_NUMBER": "手提電話號碼", + "MORE": "更多", "NAME": "姓名", "NO": "否", "NONE": "沒有", @@ -200,6 +202,7 @@ "VIEW_GITHUB": "查看 GitHub", "VIEW_LOG": "查看記錄", "VIEW_STORE_AND_SOURCE_CODE": "查看商店及源代碼", + "VIEW_INSTRUCTIONS": "查看說明", "WEBSITE": "網站", "WIFI": "WiFi", "WIFI_ENCRYPTION": "安全性", @@ -221,7 +224,6 @@ "BACKUP_SUCCESSFULLY": "

成功備份。請妥善保存備份檔及以下密碼

{secret}

", "BARCODE_TYPE": "掃描
  • QR 碼
  • 一維條碼
  • Aztec 碼
  • 數據矩陣碼
  • PDF417 條碼
匯入圖片
  • QR 碼
建立
  • QR 碼
", "BOOKMARKED": "成功加入書籤", - "BOOKMARK_TUTORIAL_SWIPE_RIGHT": "向右劃項目可修改標籤", "BUTTON_DISPLAY_EXPLAIN": "顯示或隱藏行動按鍵。", "BUTTON_STYLE_EXPLAIN": "選擇行動按鍵的樣式。", "CAMERA_PERMISSION": "要使用掃描功能,您必須授權「簡易QR」使用相機。", @@ -279,7 +281,7 @@ "TAG_MAX_LENGTH_EXPLAIN": "標籤長度不能多於 30 個字元。", "TUTORIAL_NOT_SHOW_AGAIN": "下次不再提醒", "TUTORIAL_SWIPE_LEFT": "向左劃項目可刪除相關記錄", - "TUTORIAL_SWIPE_RIGHT": "向右劃項目可將相關記錄的文字加入書籤", + "TUTORIAL_SWIPE_RIGHT": "向右劃項目可將相關記錄的文字加入書籤 / 修改標籤", "UNDO_DELETE": "您可在數秒內還原記錄", "VIBRATION_EXPLAIN": "提供震動或觸感反饋。請注意,並非所有設備皆支援此功能。" }, From d3d154ea54cc9ea4b86c1b2f5a2affe258e1b744 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 4 Oct 2022 10:13:03 +0800 Subject: [PATCH 03/19] debug: remove SplashScreen.hide() on tabs.page --- src/app/pages/tabs/tabs.page.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/pages/tabs/tabs.page.ts b/src/app/pages/tabs/tabs.page.ts index fa32f7a..03de76f 100644 --- a/src/app/pages/tabs/tabs.page.ts +++ b/src/app/pages/tabs/tabs.page.ts @@ -60,7 +60,6 @@ export class TabsPage { } async ionViewDidEnter() { - await SplashScreen.hide() if (this.env.firstAppLoad) { this.env.firstAppLoad = false; await this.router.navigate([this.env.startPage], { replaceUrl: true }); From cf2cb349c92241707c7ee97f02af50d761373ab4 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 4 Oct 2022 16:35:26 +0800 Subject: [PATCH 04/19] refactor --- android/app/src/main/AndroidManifest.xml | 11 ++++++++++- .../java/com/tomfong/simpleqr/MyQSTileService.java | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4de2de3..dee769c 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,16 @@ - + diff --git a/android/app/src/main/java/com/tomfong/simpleqr/MyQSTileService.java b/android/app/src/main/java/com/tomfong/simpleqr/MyQSTileService.java index 521a36d..42cdf60 100644 --- a/android/app/src/main/java/com/tomfong/simpleqr/MyQSTileService.java +++ b/android/app/src/main/java/com/tomfong/simpleqr/MyQSTileService.java @@ -11,6 +11,8 @@ import androidx.annotation.RequiresApi; @RequiresApi(api = Build.VERSION_CODES.N) public class MyQSTileService extends TileService { + public MyQSTileService() {} + // Called when the user adds your tile. @Override public void onTileAdded() { From 521445c3e3c91a534bfcc3e2c219a1ff799b0c54 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 4 Oct 2022 16:47:28 +0800 Subject: [PATCH 05/19] style: adjust tutorial modal sheet --- .../setting-record/setting-record.page.html | 384 +++++++++--------- .../setting-record/setting-record.page.ts | 19 +- 2 files changed, 186 insertions(+), 217 deletions(-) diff --git a/src/app/pages/setting-record/setting-record.page.html b/src/app/pages/setting-record/setting-record.page.html index e61c921..836a6b4 100644 --- a/src/app/pages/setting-record/setting-record.page.html +++ b/src/app/pages/setting-record/setting-record.page.html @@ -1,234 +1,218 @@ -
- - - - - - - {{ 'LOG_BACKUP_AND_RESTORE' | translate }} - - + + + + + + + {{ 'LOG_BACKUP_AND_RESTORE' | translate }} + + - + -
- {{ 'INITIAL_SEGMENT' | translate }} - - - - - - -

- - {{ 'LOG' | translate }} - -

-
- - -
- - - - -

- - {{ 'BOOKMARK' | translate }} - -

-
- - -
-
-
- -
- {{ 'MANAGE_RECORDS' | translate }} - -
- - {{ 'VIEW_INSTRUCTIONS' | translate }} - -
-
- - - - - - - - {{ 'OK' | translate }} - - - - - - - {{ 'TUTORIAL' | translate }} - - - - -

- - {{ 'MSG.TUTORIAL_SWIPE_LEFT' | translate }} - -

-
-
- - - - -

- - {{ 'MSG.TUTORIAL_SWIPE_RIGHT' | translate }} - -

-
-
-
-
-
- -
- {{ 'AUTO_LOGGING' | translate }} - - - -

- - {{ 'MSG.AUTO_LOGGING_EXPLAIN' | translate }} - -

-
-
- - -

+

+ {{ 'INITIAL_SEGMENT' | translate }} + + + + + + +

- {{ (env.scanRecordLogging == 'on'? 'TURNED_ON' : 'TURNED_OFF') | translate }} + {{ 'LOG' | translate }}

- - + +
-
+ + + + +

+ + {{ 'BOOKMARK' | translate }} + +

+
+ + +
+ +
-
- {{ 'RECORDS_LIMIT' | translate }} - - - -

- - {{ 'MSG.RECORDS_LIMIT_EXPLAIN' | translate }} - -

-
-
- - - -

- - {{ '30_RECORDS' | translate }} +

+ {{ 'MANAGE_RECORDS' | translate }} + +
+ + {{ 'VIEW_INSTRUCTIONS' | translate }} + +
+
+ + + + + {{ 'TUTORIAL' | translate }} + + + +

+ + {{ 'MSG.TUTORIAL_SWIPE_LEFT' | translate }}

- -
- - -

- - {{ '50_RECORDS' | translate }} + + + +

+ + {{ 'MSG.TUTORIAL_SWIPE_RIGHT' | translate }}

- -
- - -

- - {{ '100_RECORDS' | translate }} - -

-
- - -
- - -

- - {{ 'NO_LIMIT' | translate }} - -

-
- - -
-
- + + + + +
+ {{ 'AUTO_LOGGING' | translate }} + + + +

+ + {{ 'MSG.AUTO_LOGGING_EXPLAIN' | translate }} + +

+
+
+ + +

+ + {{ (env.scanRecordLogging == 'on'? 'TURNED_ON' : 'TURNED_OFF') | translate }} + +

+
+ + +
+
+ +
+ {{ 'RECORDS_LIMIT' | translate }} + + + +

+ + {{ 'MSG.RECORDS_LIMIT_EXPLAIN' | translate }} + +

+
+
+ +

- {{ 'SHOW_NUMBER_OR_RECORDS' | translate }} + {{ '30_RECORDS' | translate }}

- - + +
-
- -
- {{ 'BACKUP' | translate }} - + -

- - {{ 'MSG.BACKUP_EXPLAIN' | translate }} +

+ + {{ '50_RECORDS' | translate }}

+ +
-
- - {{ 'BACKUP' | translate }} - -
-
- -
- {{ 'RESTORE' | translate }} - + -

- - {{ (isIOS? 'MSG.RESTORE_EXPLAIN_IOS' : 'MSG.RESTORE_EXPLAIN') | translate }} +

+ + {{ '100_RECORDS' | translate }}

+ +
-
- - {{ 'RESTORE' | translate }} - -
-
+ + +

+ + {{ 'NO_LIMIT' | translate }} + +

+
+ + +
+ + + +

+ + {{ 'SHOW_NUMBER_OR_RECORDS' | translate }} + +

+
+ + +
+
-
-
\ No newline at end of file +
+ {{ 'BACKUP' | translate }} + + +

+ + {{ 'MSG.BACKUP_EXPLAIN' | translate }} + +

+
+
+
+ + {{ 'BACKUP' | translate }} + +
+
+ +
+ {{ 'RESTORE' | translate }} + + +

+ + {{ (isIOS? 'MSG.RESTORE_EXPLAIN_IOS' : 'MSG.RESTORE_EXPLAIN') | translate }} + +

+
+
+
+ + {{ 'RESTORE' | translate }} + +
+
+ + \ No newline at end of file diff --git a/src/app/pages/setting-record/setting-record.page.ts b/src/app/pages/setting-record/setting-record.page.ts index 195cae2..23a0e83 100644 --- a/src/app/pages/setting-record/setting-record.page.ts +++ b/src/app/pages/setting-record/setting-record.page.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component } from '@angular/core'; import { AlertController, LoadingController, ModalController, Platform } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; @@ -18,12 +18,10 @@ import { Haptics, ImpactStyle } from '@capacitor/haptics'; templateUrl: './setting-record.page.html', styleUrls: ['./setting-record.page.scss'], }) -export class SettingRecordPage implements OnInit { +export class SettingRecordPage { preventRecordsLimitToast: boolean = true; - presentingElement = null; - constructor( public translate: TranslateService, public env: EnvService, @@ -36,10 +34,6 @@ export class SettingRecordPage implements OnInit { private modalController: ModalController, ) { } - ngOnInit() { - this.presentingElement = document.querySelector('.ion-page'); - } - ionViewDidEnter() { setTimeout(() => this.preventRecordsLimitToast = false, 100); } @@ -48,15 +42,6 @@ export class SettingRecordPage implements OnInit { this.preventRecordsLimitToast = true; } - // async showTutorial() { - // const modal = await this.modalController.create({ - // component: HistoryTutorialPage, - // componentProps: { - // } - // }); - // modal.present(); - // } - async saveHistoryPageStartSegment() { await this.env.storageSet("history-page-start-segment", this.env.historyPageStartSegment); } From 3363600ea9e30253f2f84b9355805acefffba18e Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sat, 15 Oct 2022 11:17:47 +0800 Subject: [PATCH 06/19] chore: regular update on dependencies --- package-lock.json | 6046 ++++++++++++--------------------------------- package.json | 38 +- 2 files changed, 1620 insertions(+), 4464 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9037196..07dcb3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,37 +12,37 @@ "@angular/cdk": "^14.2.2", "@angular/common": "^14.2.3", "@angular/core": "^14.2.3", - "@angular/forms": "^14.2.3", - "@angular/localize": "^14.2.3", + "@angular/forms": "^14.2.6", + "@angular/localize": "^14.2.6", "@angular/material": "^14.2.2", - "@angular/material-moment-adapter": "^14.2.2", + "@angular/material-moment-adapter": "^14.2.5", "@angular/platform-browser": "^14.2.3", - "@angular/platform-browser-dynamic": "^14.2.3", - "@angular/router": "^14.2.3", - "@awesome-cordova-plugins/aes-256": "^5.45.0", - "@awesome-cordova-plugins/chooser": "^5.45.0", - "@awesome-cordova-plugins/core": "^5.45.0", - "@awesome-cordova-plugins/screen-orientation": "^5.45.0", - "@awesome-cordova-plugins/sms": "^5.45.0", - "@awesome-cordova-plugins/social-sharing": "^5.45.0", - "@awesome-cordova-plugins/theme-detection": "^5.45.0", + "@angular/platform-browser-dynamic": "^14.2.6", + "@angular/router": "^14.2.6", + "@awesome-cordova-plugins/aes-256": "^5.46.0", + "@awesome-cordova-plugins/chooser": "^5.46.0", + "@awesome-cordova-plugins/core": "^5.46.0", + "@awesome-cordova-plugins/screen-orientation": "^5.46.0", + "@awesome-cordova-plugins/sms": "^5.46.0", + "@awesome-cordova-plugins/social-sharing": "^5.46.0", + "@awesome-cordova-plugins/theme-detection": "^5.46.0", "@capacitor-community/barcode-scanner": "^3.0.0", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^2.0.0-0", "@capacitor/android": "^4.3.0", "@capacitor/app": "^4.0.1", - "@capacitor/camera": "^4.1.1", + "@capacitor/camera": "^4.1.2", "@capacitor/clipboard": "^4.0.1", "@capacitor/core": "^4.3.0", "@capacitor/device": "^4.0.1", - "@capacitor/filesystem": "^4.1.1", + "@capacitor/filesystem": "^4.1.2", "@capacitor/haptics": "^4.0.1", "@capacitor/ios": "^4.3.0", "@capacitor/keyboard": "^4.0.1", - "@capacitor/splash-screen": "^4.0.1", + "@capacitor/splash-screen": "^4.1.0", "@capacitor/status-bar": "^4.0.1", "@capacitor/toast": "^4.0.1", - "@ionic/angular": "^6.2.8", + "@ionic/angular": "^6.3.1", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.0.0", @@ -70,11 +70,11 @@ "zone.js": "^0.11.8" }, "devDependencies": { - "@angular-devkit/build-angular": "^14.2.3", - "@angular/cli": "^14.2.3", + "@angular-devkit/build-angular": "^14.2.6", + "@angular/cli": "^14.2.6", "@angular/compiler": "^14.2.3", "@angular/compiler-cli": "^14.2.3", - "@angular/language-service": "^14.2.3", + "@angular/language-service": "^14.2.6", "@capacitor/cli": "^4.3.0", "@ionic/angular-toolkit": "^6.1.0", "@ionic/cli": "6.20.1", @@ -113,12 +113,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1402.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.3.tgz", - "integrity": "sha512-vU5j0WhSYxux5RzhuZ3VY3B4XbRJuEtVqSoW5j9ew3Oc78tkR6RNXgT97PPr0GfRA1fOEhVoReR7NbsKU3uIkQ==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.6.tgz", + "integrity": "sha512-qTmPBD7fBXBtlSapGLUEcJvRuL/O556zCFFpH3kSlzPNTYxi2falBjGY+4aG+078RXT1vVZtFsvRTart6VbhAg==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.2.3", + "@angular-devkit/core": "14.2.6", "rxjs": "6.6.7" }, "engines": { @@ -127,73 +127,16 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.3.tgz", - "integrity": "sha512-E8bnC6F0xNni4IIKAnIDBDkbi6cOePm4Q/Y9IrTk3wquGTfsiMlQpdnRA0nr+FTN/LT3N08O5dEw2Gd4ff4tGA==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/architect/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/architect/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "node_modules/@angular-devkit/architect/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/@angular-devkit/build-angular": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.3.tgz", - "integrity": "sha512-Gun2WBM9oXqgOmpwan0OC5OEW2RY6Sd6nrOGzdC5HkvvwxLBV5uycrpYVJiQSPLuQjDLp9S2QTjA2yLtVABYCA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.6.tgz", + "integrity": "sha512-XtaUwb3aZ8S0vl0y9bmbdFOH0KQCQ778twFH+ZfHW2BcPYtQz2Cy2rcVKXBQ850RyC0GxgMPfco6OGQndPpizg==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.3", - "@angular-devkit/build-webpack": "0.1402.3", - "@angular-devkit/core": "14.2.3", + "@angular-devkit/architect": "0.1402.6", + "@angular-devkit/build-webpack": "0.1402.6", + "@angular-devkit/core": "14.2.6", "@babel/core": "7.18.10", "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", @@ -204,7 +147,7 @@ "@babel/runtime": "7.18.9", "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.3", + "@ngtools/webpack": "14.2.6", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -292,10 +235,29 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.3.tgz", - "integrity": "sha512-E8bnC6F0xNni4IIKAnIDBDkbi6cOePm4Q/Y9IrTk3wquGTfsiMlQpdnRA0nr+FTN/LT3N08O5dEw2Gd4ff4tGA==", + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.6.tgz", + "integrity": "sha512-gKsDxQ9pze0N1qDM0kdM4FfwpkjSOb0bQzqjZi7wTfrh/WGIQMCjG9CRwWT+Z289ZKaTpcQDPsDtOSo5QpKNDg==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.6", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.6.tgz", + "integrity": "sha512-qtRSdRm/h7C3ya04PJTDgQXV6mM8Y4RakANX1GTSXetCf9AVSxg74NJX76DWUgiHT4JiPYnJgJU6Hr/L0H6JOQ==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -318,199 +280,28 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "node_modules/@angular-devkit/schematics": { + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.6.tgz", + "integrity": "sha512-mSFtc4M49mWrYsgJx/P6bA6SzXb8SeZqmppKRMoEQxiXI1bwFdGLNWzAmzEsGvS96h/nPIaOfcX5cKJSp++4FA==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1402.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.3.tgz", - "integrity": "sha512-d7ZG7dZElJgtPbp2x2dzMv6usqqzz9CH+RtaGueuivIa/Cd061c3D0pi3XuUBvfaS0qENrlnysYhLkuTnUQGcQ==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1402.3", + "@angular-devkit/core": "14.2.6", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", "rxjs": "6.6.7" }, "engines": { "node": "^14.15.0 || >=16.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", - "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", - "dev": true, - "dependencies": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", - "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.3.9", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" } }, "node_modules/@angular/animations": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.3.tgz", - "integrity": "sha512-5psQgSia7pUUKYpFuwA+c+yWyM8afl9ZlOW2pxBU/2mTMLpxJEnVrUnKRsx3WSrOc9YqoLn6DOtDLXq2dbTxFQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.6.tgz", + "integrity": "sha512-Tmb3Jj016j8m8OOGSk/ReL0b+OuUCMj0KQansk3C4pCpH9oPF67Vnm0fmVC2wYjjsSS/iDgl4kaDW740wfPGNQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -518,13 +309,13 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.3" + "@angular/core": "14.2.6" } }, "node_modules/@angular/cdk": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.2.tgz", - "integrity": "sha512-PXEnhX+QDOsmHVVnqTuoGaK7Wn9hFd5kWAmHTTU7lZr3XVu/AtDcEU+LB19wOFU0fY+kSYHMgN+BYo1TiR8vbw==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.5.tgz", + "integrity": "sha512-kKneb9Z/2E+EXMsHuH8MWy8aygKhdFlKXYltEG7r4W/B6FJC012kJfe+Euj8X0O26akOVW9Q0X7nczCqHqU4tQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -538,15 +329,15 @@ } }, "node_modules/@angular/cli": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.3.tgz", - "integrity": "sha512-pFo/h3ImjebjKzdw6yWcaERSIzWsSu4eqH9qQ/dWD1ChkSph+krBw3+5Q+Kda5l3dLgl7mQXX6mC5u8IHTdvDg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.6.tgz", + "integrity": "sha512-8tXpe3htfZY8a+Am4nluVcztMFD5wnx4edGEDkkOiqkrUzbCtX4AyEBjUFldsYKZXbRFU46xEfM6jBnLOjxDZQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1402.3", - "@angular-devkit/core": "14.2.3", - "@angular-devkit/schematics": "14.2.3", - "@schematics/angular": "14.2.3", + "@angular-devkit/architect": "0.1402.6", + "@angular-devkit/core": "14.2.6", + "@angular-devkit/schematics": "14.2.6", + "@schematics/angular": "14.2.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -573,128 +364,10 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.3.tgz", - "integrity": "sha512-E8bnC6F0xNni4IIKAnIDBDkbi6cOePm4Q/Y9IrTk3wquGTfsiMlQpdnRA0nr+FTN/LT3N08O5dEw2Gd4ff4tGA==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.3.tgz", - "integrity": "sha512-98ldx+To7xW1BH/DqIToQwHVscPZhXnZP01SeoiUnFlJE5FnXx8Lv7qHAQtE96M+cfE5NR1NKBgfCH3S3rnmFA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.2.3", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/@schematics/angular": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.3.tgz", - "integrity": "sha512-lHWeeWrhpyMwJRTK4RpFVptWZo5kTdI+bOOd+lZBTjOAs+PM8r9VXHzB6qhE6P2e3HsceXM59PonvekTUdOJtQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.2.3", - "@angular-devkit/schematics": "14.2.3", - "jsonc-parser": "3.1.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular/cli/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "node_modules/@angular/cli/node_modules/magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/cli/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/cli/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/@angular/common": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.3.tgz", - "integrity": "sha512-DoBQk9uBWfGc+mZ9+lwpmZQy05zKgOeIfDM+2f7Wjrv1/X/V+YUJhjS66GIEBGOe23DoSeivLLCpVj8QqR058A==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.6.tgz", + "integrity": "sha512-WNX7xe8LKP5DHPlae+c77PDwj0iIAAPIe1lWbhQysyi8uttbtL9VVP2XTFuQ3E6oVHJr+0IR0LMVGJ+a8i6zsw==", "dependencies": { "tslib": "^2.3.0" }, @@ -702,14 +375,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.3", + "@angular/core": "14.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.3.tgz", - "integrity": "sha512-DG2lqSqD5hx6Qk362jhjU9O+I2gOlsV8oUSTOkH4eFQ54PUad1D3hjqfcs3/lsvWggALCSjv9X8BOG8jb7n8vw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.6.tgz", + "integrity": "sha512-XtmJRNQQ/bUcRjB6jG67km3EPug8frnHH50sLqxye+cljCzWQpzFN/Qr1z0abuzEX8OC4alqxCDCFgTFyyVkaQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -717,7 +390,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.3" + "@angular/core": "14.2.6" }, "peerDependenciesMeta": { "@angular/core": { @@ -726,9 +399,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.3.tgz", - "integrity": "sha512-MPKZTD4j5EnvpHXLOj6VnXBv/LXfVLoLNc4nNShfuJFJjK9vOqXelb2GJt+2iL+9xKevGxDk7NIcl++fhV2lkQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.6.tgz", + "integrity": "sha512-zKnpZ5WDbM31dwr5GDAbCblMIEUzWSglUyqCxJfbCg21dE0EuLfd/WzsROgM2TucOtCT5xNipqz4bc+wdEOIgQ==", "dependencies": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -750,88 +423,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.3", + "@angular/compiler": "14.2.6", "typescript": ">=4.6.2 <4.9" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", - "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", - "@babel/helper-compilation-targets": "^7.19.1", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", - "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", - "dependencies": { - "@babel/types": "^7.19.0", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/magic-string": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz", - "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==", - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@angular/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.3.tgz", - "integrity": "sha512-neW2n5Ts2purYEVh0Lf207otZbhYH4C4lwwu8ffxdRiXahQiTCbmyM3IQFrQZbLDb/ZeD2KhoCl6p0hlyg14cA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.6.tgz", + "integrity": "sha512-fEIz7E488X03tLIqmWQRpahxRRU2SMjb9i/rMUjMQJkbppJC3cykl31bCYzeixNO+zpE55GPGuQX2qI/yDenZA==", "dependencies": { "tslib": "^2.3.0" }, @@ -844,9 +443,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.3.tgz", - "integrity": "sha512-rL6adBHp51i3eDBecexrlrS+t+hlK6EnrEot/+Ec+DzVjJgw5VNJ4p2Ig72HPe0m+H0dcPkbQhlpb6cs677ISA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.6.tgz", + "integrity": "sha512-t7Hd9RMnHbXRTdH/H8h8ZC3PsK1U4rH+XYaIbQNcys/XSf1uRFHx9MWqkwS5hoQEFOxkFSX5dRv2xSnHtxfq5w==", "dependencies": { "tslib": "^2.3.0" }, @@ -854,25 +453,25 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.3", - "@angular/core": "14.2.3", - "@angular/platform-browser": "14.2.3", + "@angular/common": "14.2.6", + "@angular/core": "14.2.6", + "@angular/platform-browser": "14.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.3.tgz", - "integrity": "sha512-11rp2DumlZFO5+/N38RW6lXzicD/6LlqeVoS4qf8sIMGJ4bzeyOrG0T/PAG2iEA7hay1jPH51t0G529xaSw0tQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.6.tgz", + "integrity": "sha512-o6MZ+n0zThdYhMDchgNAiqKme1pgFKvZfRibxgnntEua77BL0Ty7uEwDdehNk3eaVu8ddtW7svYfsGhL53HZWA==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0" } }, "node_modules/@angular/localize": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.3.tgz", - "integrity": "sha512-ZHRV7/BZyhVmYVSYcYcC0kmSUFL3SUICFFRsGQk2XTkraVqh4RKlm/LcgzGMO6OwyMAZQX32FncsnRvcZUxy9A==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.6.tgz", + "integrity": "sha512-cUUAPV9IFNkcMe/tauqaqaml9ZXbaZ75A2NXDom78ETwVCqybjtfJfSl3ExlfP4oFKw62XMJla8yuEE0ZMaLew==", "dependencies": { "@babel/core": "7.18.9", "glob": "8.0.3", @@ -887,57 +486,57 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.3", - "@angular/compiler-cli": "14.2.3" + "@angular/compiler": "14.2.6", + "@angular/compiler-cli": "14.2.6" } }, - "node_modules/@angular/localize/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@angular/localize/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@angular/localize/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@angular/material": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.2.tgz", - "integrity": "sha512-jVCaESSTTkLjRvMzSQj294s0Lz1YMVFkl0svrMtWgkUMXHEfx2Vjw6FXdrVrBXlxEIrpfhkTEXVN2DC1kkAkQw==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.5.tgz", + "integrity": "sha512-vC3F1r8WHclL1BbQVxOc9Ite1xH/pCOLnYYcx8HK1T2jlzeX7NxU1A58iBZC3rLj494tsMnRQDSZPXfazBiw0g==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.2.2", + "@angular/cdk": "14.2.5", "@angular/common": "^14.0.0 || ^15.0.0", "@angular/core": "^14.0.0 || ^15.0.0", "@angular/forms": "^14.0.0 || ^15.0.0", @@ -946,22 +545,22 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-14.2.2.tgz", - "integrity": "sha512-EOnchBkcICJQXYcXEk+4FSgQXllhJAfE56rkeCDS0r0iFe+zdM4da6JseBQPIKMraYXcnuDnMC1Q2cjVMggn+A==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-14.2.5.tgz", + "integrity": "sha512-BCyzLMAGKKU7veLuLHI1AbiKJ7/iBvDGB9DqwWng6vncTE90so6ARZDTppPpWRiS+FW/Q2kWiI9f+aXY/3IvnQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "^14.0.0 || ^15.0.0", - "@angular/material": "14.2.2", + "@angular/material": "14.2.5", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.3.tgz", - "integrity": "sha512-Ky5ITBVmr+T5zHRowLRTJx1exXo99bUA6vosxG4B/YlXkjNfqVz4BETgPwnoIdN00Y9lxGQrMbjqSuzOjGQ7IQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.6.tgz", + "integrity": "sha512-KQUN4YVYEK5NOL7QFnDulQta6tm9rPh/mruX/XCLkSmoRMlFBmsHyjx+VJBnBNUbUxNsBj7kknifOu9PqDgAWg==", "dependencies": { "tslib": "^2.3.0" }, @@ -969,9 +568,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.2.3", - "@angular/common": "14.2.3", - "@angular/core": "14.2.3" + "@angular/animations": "14.2.6", + "@angular/common": "14.2.6", + "@angular/core": "14.2.6" }, "peerDependenciesMeta": { "@angular/animations": { @@ -980,9 +579,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.3.tgz", - "integrity": "sha512-yqSH9NrgkXN3aslbD9IHWnFClwwVlLTypaMfSGmhPL1LvgL/HL/A9rDYI2ZrybVoVmAZLsJ4uF2/GvK/pzUcNQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.6.tgz", + "integrity": "sha512-SlWEYLED4ST1AFfgeB8SyKLVJYp36XT+3Vw3yDrObsthzXCiFAuYHQZfSWgT1Sfx3uFqEdN7nskJqD05wN3mQg==", "dependencies": { "tslib": "^2.3.0" }, @@ -990,16 +589,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.3", - "@angular/compiler": "14.2.3", - "@angular/core": "14.2.3", - "@angular/platform-browser": "14.2.3" + "@angular/common": "14.2.6", + "@angular/compiler": "14.2.6", + "@angular/core": "14.2.6", + "@angular/platform-browser": "14.2.6" } }, "node_modules/@angular/router": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.3.tgz", - "integrity": "sha512-ACSBYZCMWBaVHmclaFS5C+zSTTcMbY6iJFjI0tiTqicqdpzAOIt6s5Ius1wzN9L6ANijn1ZdGAzH6j45GV/XtQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.6.tgz", + "integrity": "sha512-Vz1kadGSqA7ZCZQ2woNbSBPMdiE5eTZv8cGympaFnFQQUzQTQ6zi22wY4RzovDk5Lw+EQkvOmaW2864LDzDeug==", "dependencies": { "tslib": "^2.3.0" }, @@ -1007,9 +606,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.3", - "@angular/core": "14.2.3", - "@angular/platform-browser": "14.2.3", + "@angular/common": "14.2.6", + "@angular/core": "14.2.6", + "@angular/platform-browser": "14.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1020,9 +619,9 @@ "dev": true }, "node_modules/@awesome-cordova-plugins/aes-256": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-5.45.0.tgz", - "integrity": "sha512-Uw1VO/V01qWlVP+btUP9+lkAVIvY5erwPONwwVzu4pVvdS+qHOvkJ3PJeoToZ3eXEDdlOOvx5u+8ZsLtAyCytw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-5.46.0.tgz", + "integrity": "sha512-Sq7Ze/QTZ7VBcS7Vz699IFbZ3K8n3g1Sp1m14QtP8wdgqJr/zq4OPFTX5Sm2LsdGddmYoJKW3c+nAxSdBY45DQ==", "dependencies": { "@types/cordova": "latest" }, @@ -1032,9 +631,9 @@ } }, "node_modules/@awesome-cordova-plugins/chooser": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-5.45.0.tgz", - "integrity": "sha512-+YFRJKOGQch1oan986VD8g2+Ovr7yMmaS23lJSWe3MCwvj+jMDj32rE1Fuw/53hYHKs9UYAxx7UOZ3IRHLeBJA==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-5.46.0.tgz", + "integrity": "sha512-m14q3DnhWCwPC1/xOkABkkI0Y2pQEwFcf68mZfhRTtMYoS4tbBhJhxTbTMDk4nHzfb2bxxTuaSbwcDfcVFjSWg==", "dependencies": { "@types/cordova": "latest" }, @@ -1044,9 +643,9 @@ } }, "node_modules/@awesome-cordova-plugins/core": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.45.0.tgz", - "integrity": "sha512-VrFNy6KLu3yyIKX3+6knUTDfSy59MPWUDni31ypGIQyxZv0eInuAgy3D4dhEdSbTkCIRyF40u4CJk4bN5zUYzQ==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.46.0.tgz", + "integrity": "sha512-EkCTsS9sE4lXzPbKZonn7PEzoF1/vvhsJDnIyqP3FObBqb8fjqhEz4r7z4iNRNHel4Mq9bICzI5J/3vQ+jbWVw==", "dependencies": { "@types/cordova": "latest" }, @@ -1055,9 +654,9 @@ } }, "node_modules/@awesome-cordova-plugins/screen-orientation": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-5.45.0.tgz", - "integrity": "sha512-FbEmUO8if/QHdqs0Dk3Ozgvy3F9Idqh0JoUBzGTzTEboAWp7PJhMwJ78UkFnmUbxLOvX6WlYVsrReIBo+b8tTQ==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-5.46.0.tgz", + "integrity": "sha512-RaCEGQCChk8/R5aWsNbKJSDi3wh6tI0VFufWSyodxoaWuy8cjRmhhdH+Y1Nqq2h19oNoBGsXQOGOONUwDBaLyA==", "dependencies": { "@types/cordova": "latest" }, @@ -1067,9 +666,9 @@ } }, "node_modules/@awesome-cordova-plugins/sms": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-5.45.0.tgz", - "integrity": "sha512-W4Ink1TlwLsshq4SMUF+dIiwk6v+Ojm3fp1N75nT4GZpAKRzrZPGv03jhZnEkvABN7b/dV8n5HS6bDiFmlvExw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-5.46.0.tgz", + "integrity": "sha512-BkzGq/jis6p3o+weTy0qpGYgUEaU9XXuPa4esJcU7NDObmV3MJMhH09235gO8TLHUpH5vM4aDDbLcEvsXHr8qg==", "dependencies": { "@types/cordova": "latest" }, @@ -1079,9 +678,9 @@ } }, "node_modules/@awesome-cordova-plugins/social-sharing": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-5.45.0.tgz", - "integrity": "sha512-gOmFsM9mo7kb+BNulasbpywafdekhB0IuDu8CDK/jvy/GSAR50CH2887MlChwJdkqx5y9mCEPtojGwyBIHK5Mg==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-5.46.0.tgz", + "integrity": "sha512-Q4t+MT29nJTUYD43Fq/uoX4mzegi2utQTx16yZBiTdOuJ3gA0BI0p6bJy6Xl55y4qo/udk16XsM09BVN+VBN2w==", "dependencies": { "@types/cordova": "latest" }, @@ -1091,9 +690,9 @@ } }, "node_modules/@awesome-cordova-plugins/theme-detection": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-5.45.0.tgz", - "integrity": "sha512-AoSYWt5NKZn1JirgfB2fL6LCFc+2hrBKhhYQYHsGxzGzgLNT+okScnw9aCZEbbovN4kpYKwezO1P9e7DbjI9xw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-5.46.0.tgz", + "integrity": "sha512-2hWY2qTbPb9ctBpEP7rTRA5I3JLMq+Z9+/ejyVIphruOpSMMuk0mJbwYkwk3le5ccbq0L7Yw14a2wAljmjCXUg==", "dependencies": { "@types/cordova": "latest" }, @@ -1114,28 +713,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", - "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", - "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-module-transforms": "^7.18.9", "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1210,11 +809,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", - "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dependencies": { - "@babel/compat-data": "^7.19.1", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -1437,11 +1036,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -1471,9 +1070,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "engines": { "node": ">=6.9.0" } @@ -1510,13 +1109,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "dependencies": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -1536,9 +1135,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", - "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", + "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1726,14 +1325,14 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.18.8" }, @@ -2067,12 +1666,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -2120,12 +1719,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -2697,18 +2296,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", - "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", + "@babel/generator": "^7.19.4", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.1", - "@babel/types": "^7.19.0", + "@babel/parser": "^7.19.4", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2717,11 +2316,11 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", - "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dependencies": { - "@babel/types": "^7.19.0", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2743,12 +2342,12 @@ } }, "node_modules/@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2796,9 +2395,9 @@ } }, "node_modules/@capacitor/camera": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.1.tgz", - "integrity": "sha512-L/1KLg4IRCAUmwhmu5jIic4U2OLAHFSW5GoExFU9yR8iCJo1SBGSiay2TpU3PpgmJHRtazO6pxKUCyAmDExkhw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.2.tgz", + "integrity": "sha512-YJMw8sflNj3aa9jSqOgSKOhjKNjc6fb1wxdVMW7Ek6SWsykbcAMWRkecOsSqPNPyDbNRBiwB8P5ZuUC8ZwRm0A==", "peerDependencies": { "@capacitor/core": "^4.0.0" } @@ -2835,21 +2434,6 @@ "node": ">=12.4.0" } }, - "node_modules/@capacitor/cli/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@capacitor/clipboard": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@capacitor/clipboard/-/clipboard-4.0.1.tgz", @@ -2875,9 +2459,9 @@ } }, "node_modules/@capacitor/filesystem": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@capacitor/filesystem/-/filesystem-4.1.1.tgz", - "integrity": "sha512-qpXIR4kxW2age91EiDFOh5KpZ5SUFs1rgWmNrO60wo+AT3Ok0Dzfol2aLSqvNAenDGUilA44ThJPeE+ArRPVzg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/filesystem/-/filesystem-4.1.2.tgz", + "integrity": "sha512-akQTgNZBIRE5mN8IPagd4TUk9vx8c2xTllX8yBRzf4BhHHkQPzAnEVikmX+qB/114DvRMh3l2s8mtpXiWOg9NQ==", "peerDependencies": { "@capacitor/core": "^4.0.0" } @@ -2907,9 +2491,9 @@ } }, "node_modules/@capacitor/splash-screen": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-4.0.1.tgz", - "integrity": "sha512-7hklUx69aZDonuLP1R5X4ZTGgZLwX8RTj9/3U1905Kz/XflcT7Rhighbad+uZBaOU+L/8Vm6Y3RlR3rFj4ELVA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-4.1.0.tgz", + "integrity": "sha512-b+IpnM+dhwHZ7zkXr8M9dgJauwSf8wyOweEkM38EDaw4XhZtZoBjJOby1fAeaxgK4iO2qoej95LgtOjcv6eGkg==", "peerDependencies": { "@capacitor/core": "^4.0.0" } @@ -3252,11 +2836,11 @@ "dev": true }, "node_modules/@ionic/angular": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.2.8.tgz", - "integrity": "sha512-ilO/IH5a4vSoZkL8u/GknYwJU5w1gbqunxd3rbXJ70o4dFXY7VP6Ieyin6mdjYMdAmrV7zw2UxBXBJ3qWId1EQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.1.tgz", + "integrity": "sha512-hT97StH54ZhefdXDSkEAdBc8ssWBf9W8PrEXEUiYtBpp6AbTu/EL5AjHFIIWyyBXPic0sh5+KeJSu86Xxz5yMA==", "dependencies": { - "@ionic/core": "^6.2.8", + "@ionic/core": "^6.3.1", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" }, @@ -3279,6 +2863,107 @@ "@schematics/angular": "^13.0.1" } }, + "node_modules/@ionic/angular-toolkit/node_modules/@angular-devkit/core": { + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", + "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/@angular-devkit/schematics": { + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", + "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.9", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/@schematics/angular": { + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", + "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.9", + "@angular-devkit/schematics": "13.3.9", + "jsonc-parser": "3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "node_modules/@ionic/angular-toolkit/node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/@ionic/cli": { "version": "6.20.1", "resolved": "https://registry.npmjs.org/@ionic/cli/-/cli-6.20.1.tgz", @@ -3612,15 +3297,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ionic/cli/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, "node_modules/@ionic/cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3634,11 +3310,11 @@ } }, "node_modules/@ionic/core": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.2.8.tgz", - "integrity": "sha512-tUUdvCPo9Z4RQXjvxNXBXQsVTFDAH2ju/HAhzZiAvdfwpHfpA39DWkXwAQeoV9gfFFblaOmCmeSq/8JP/FRn4A==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.1.tgz", + "integrity": "sha512-OpmGQQ/sGtoXW4PQRvRjYa9mTlAmAWwFMu8g/1rcdAPaTQQAlRnfZ62wYYqmChLSFlVbn6mCleeljzR9FaYrAg==", "dependencies": { - "@stencil/core": "^2.17.4", + "@stencil/core": "^2.18.0", "ionicons": "^6.0.3", "tslib": "^2.1.0" } @@ -3875,12 +3551,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3906,9 +3582,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.3.tgz", - "integrity": "sha512-/9bOlmpx7a5P8QhjmggxEJ6LX5qvfkBZhxM8Orjr6ZjJcmAfm+3wiUDzU3EM+5M0YV3y3+dvQpn6Jrwy9y4rfQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.6.tgz", + "integrity": "sha512-HdfoHLGPzyP135BOlvTQcpeWisVfiH0u40YNTBVK3QAsrLnY17e2QG5BWBOrVYipRu1975cZtTC9rPjcCY8aLQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0", @@ -4014,15 +3690,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", @@ -4100,17 +3767,17 @@ } }, "node_modules/@schematics/angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", - "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.6.tgz", + "integrity": "sha512-oeyMAQr3Q9nvAX+5FRgXcTMX9lqqenElBmAuwfqqdB0qD1jmkJ8TpWRuvYVA/931njpIwhfyLrzmzeNnJb23Sg==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "jsonc-parser": "3.0.0" + "@angular-devkit/core": "14.2.6", + "@angular-devkit/schematics": "14.2.6", + "jsonc-parser": "3.1.0" }, "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "node": "^14.15.0 || >=16.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } @@ -4122,9 +3789,9 @@ "dev": true }, "node_modules/@stencil/core": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.18.0.tgz", - "integrity": "sha512-NLEY8Jq59smyiivBAxHKipsp9YkkW/K/Vm90zAyXQqukb12i2SFucWHJ1Ik7ropVlhmMVvigyxXgRfQ9quIqtg==", + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.18.1.tgz", + "integrity": "sha512-/fXkh1lwZ+X9JQCw50mPjhBogzEHOBvVC5pLoDLZqodVYK0DGWILM2YLV4dcIUBNEK8/HMDpO/Rq81/rS3mNOw==", "bin": { "stencil": "bin/stencil" }, @@ -4324,14 +3991,6 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, - "node_modules/@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -4350,14 +4009,6 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@types/selenium-webdriver": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz", - "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -4653,17 +4304,6 @@ "node": ">=8.9.0" } }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.3.0" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -4713,9 +4353,9 @@ } }, "node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -4858,62 +4498,12 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -4983,25 +4573,6 @@ "postcss": "^8.1.0" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/babel-loader": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", @@ -5147,17 +4718,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -5194,27 +4754,10 @@ "readable-stream": "^3.4.0" } }, - "node_modules/blocking-proxy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", - "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "blocking-proxy": "built/lib/bin.js" - }, - "engines": { - "node": ">=6.9.x" - } - }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -5225,7 +4768,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -5308,12 +4851,11 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -5354,57 +4896,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/browserstack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", - "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "https-proxy-agent": "^2.2.1" - } - }, - "node_modules/browserstack/node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/browserstack/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/browserstack/node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -5491,55 +4982,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -5571,9 +5013,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001410", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001410.tgz", - "integrity": "sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ==", + "version": "1.0.30001419", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", + "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==", "funding": [ { "type": "opencollective", @@ -5585,14 +5027,6 @@ } ] }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -5781,9 +5215,9 @@ } }, "node_modules/commander": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", - "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", "dev": true, "engines": { "node": "^12.20.0 || >=14" @@ -5855,6 +5289,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5917,26 +5357,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -5947,12 +5367,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { "version": "0.4.2", @@ -6052,6 +5469,45 @@ "xcode": "^2.0.0" } }, + "node_modules/cordova-plugin-add-swift-support/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cordova-plugin-add-swift-support/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cordova-plugin-add-swift-support/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/cordova-plugin-add-swift-support/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -6113,9 +5569,9 @@ ] }, "node_modules/core-js-compat": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz", - "integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, "dependencies": { "browserslist": "^4.21.4" @@ -6126,9 +5582,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/cors": { @@ -6370,9 +5826,9 @@ } }, "node_modules/cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", + "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "dev": true, "funding": { "type": "opencollective", @@ -6397,20 +5853,6 @@ "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/data-uri-to-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", @@ -6433,9 +5875,9 @@ } }, "node_modules/date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "engines": { "node": ">=4.0" @@ -6484,12 +5926,15 @@ } }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-lazy-prop": { @@ -6532,73 +5977,6 @@ "node": ">= 6" } }, - "node_modules/del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6788,6 +6166,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/duplexer2/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -6797,18 +6181,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6816,9 +6188,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.258", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz", - "integrity": "sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A==" + "version": "1.4.283", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz", + "integrity": "sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==" }, "node_modules/elementtree": { "version": "0.1.7", @@ -6993,30 +6365,11 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/es6-promise-plugin": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/es6-promise-plugin/-/es6-promise-plugin-4.2.2.tgz", "integrity": "sha512-uoA4aVplXI9oqUYJFBAVRwAqIN9/n9JgrTAUGX3qPbnSZVE5yY1+6/MsoN5f4xsaPO62WjPHOdtts6okMN6tNA==" }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "es6-promise": "^4.0.3" - } - }, "node_modules/esbuild": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", @@ -7558,26 +6911,15 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -7596,7 +6938,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -7659,26 +7001,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -7708,17 +7030,6 @@ "node": ">=4" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "peer": true - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7924,31 +7235,18 @@ } } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" } }, "node_modules/formidable": { @@ -8214,31 +7512,19 @@ "node": ">= 4.0.0" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8300,59 +7586,6 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -8365,31 +7598,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -8457,15 +7665,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -8493,6 +7692,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -8609,23 +7814,6 @@ } } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -8721,27 +7909,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -8923,9 +8090,9 @@ } }, "node_modules/inquirer/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -9072,45 +8239,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "path-is-inside": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -9216,14 +8344,6 @@ "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -9234,9 +8354,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -9329,22 +8449,6 @@ "node": ">=8" } }, - "node_modules/jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.8.0" - }, - "bin": { - "jasmine": "bin/jasmine.js" - } - }, "node_modules/jasmine-core": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.8.0.tgz", @@ -9360,25 +8464,6 @@ "colors": "1.4.0" } }, - "node_modules/jasmine/node_modules/jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/jasminewd2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 6.9.x" - } - }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -9441,14 +8526,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -9466,28 +8543,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -9500,9 +8561,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" }, "node_modules/jsonfile": { "version": "6.1.0", @@ -9525,81 +8586,11 @@ "node >= 0.2.0" ] }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/jsqr": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/karma": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", @@ -9692,6 +8683,36 @@ "url": "https://github.com/sponsors/mattlewis92" } }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/karma-coverage-istanbul-reporter/node_modules/istanbul-lib-source-maps": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", @@ -9730,6 +8751,18 @@ "node": ">=6" } }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/karma-coverage-istanbul-reporter/node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -9769,6 +8802,16 @@ "node": ">=0.10.0" } }, + "node_modules/karma-coverage/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", @@ -9784,6 +8827,18 @@ "node": ">=8" } }, + "node_modules/karma-coverage/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/karma-coverage/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -9828,6 +8883,48 @@ "source-map-support": "^0.5.5" } }, + "node_modules/karma/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/karma/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -10309,30 +9406,28 @@ } }, "node_modules/log4js": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", - "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", + "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", "dev": true, "dependencies": { - "date-format": "^4.0.13", + "date-format": "^4.0.14", "debug": "^4.3.4", - "flatted": "^3.2.6", + "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.2" + "streamroller": "^3.1.3" }, "engines": { "node": ">=8.0" } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/macos-release": { @@ -10348,12 +9443,14 @@ } }, "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", "dependencies": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" } }, "node_modules/make-dir": { @@ -10413,15 +9510,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/material-design-icons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", @@ -10578,21 +9666,24 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=10" } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.3.4", @@ -10752,9 +9843,9 @@ } }, "node_modules/native-run": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.0.tgz", - "integrity": "sha512-tkd0E9hwJcxd9xbpC1Z4KED3bK+bavQJ7p4BRMHtlikrvJX+OwHm7/qwDLzQ4emDEMQUG9rskRdJfo1UoGditA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.1.tgz", + "integrity": "sha512-70ZneVVcOL1ifqw7SG5O2AJYIHEBSX5C25ShwwKCcdMcgbZ+MzvAc2fjHzfekcPYtInHqcJQOki6NXj9f6LgOg==", "dev": true, "dependencies": { "@ionic/utils-fs": "^3.1.6", @@ -10785,6 +9876,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/native-run/node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/needle": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", @@ -10889,16 +9989,16 @@ } }, "node_modules/node-gyp": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", "dev": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -10924,24 +10024,66 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "dependencies": { - "abbrev": "1" + "abbrev": "^1.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-package-data": { @@ -11036,46 +10178,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-packlist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-packlist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-packlist/node_modules/npm-bundled": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", @@ -11169,17 +10271,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -11747,14 +10838,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -11791,14 +10874,6 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -11824,31 +10899,6 @@ "node": ">=0.10.0" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/piscina": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", @@ -12274,21 +11324,6 @@ "webpack": "^5.0.0" } }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/postcss-logical": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", @@ -12679,291 +11714,6 @@ "node": ">= 0.3.1" } }, - "node_modules/protractor": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", - "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", - "deprecated": "We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.1.7", - "yargs": "^15.3.1" - }, - "bin": { - "protractor": "bin/protractor", - "webdriver-manager": "bin/webdriver-manager" - }, - "engines": { - "node": ">=10.13.x" - } - }, - "node_modules/protractor/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/protractor/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/protractor/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/protractor/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/protractor/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/protractor/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/protractor/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/protractor/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/protractor/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -13070,14 +11820,6 @@ "dev": true, "optional": true }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -13097,18 +11839,6 @@ "node": ">=6" } }, - "node_modules/q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -13227,9 +11957,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -13331,46 +12061,6 @@ "node": ">=10" } }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", @@ -13493,63 +12183,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -13696,6 +12329,48 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/rsvp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", @@ -13754,9 +12429,24 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -13819,60 +12509,6 @@ } } }, - "node_modules/saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "https-proxy-agent": "^2.2.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/saucelabs/node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/saucelabs/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/saucelabs/node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/sax": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", @@ -13934,51 +12570,6 @@ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, - "node_modules/selenium-webdriver": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", - "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "jszip": "^3.1.3", - "rimraf": "^2.5.4", - "tmp": "0.0.30", - "xml2js": "^0.4.17" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/selenium-webdriver/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/selenium-webdriver/node_modules/tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/selfsigned": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", @@ -13992,9 +12583,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -14005,6 +12596,17 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -14169,14 +12771,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14383,9 +12977,9 @@ } }, "node_modules/socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "dependencies": { "ip": "^2.0.0", @@ -14411,9 +13005,9 @@ } }, "node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -14548,47 +13142,26 @@ } }, "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, - "engines": { - "node": ">= 10.x" + "dependencies": { + "readable-stream": "^3.0.0" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/ssh-config": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-1.1.6.tgz", "integrity": "sha512-ZPO9rECxzs5JIQ6G/2EfL1I9ho/BVZkx9HRKn8+0af7QgwAmumQ7XBFP1ggMyPMo+/tUbmv0HFdv4qifdO/9JA==", "dev": true }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -14643,6 +13216,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/stream-combiner2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/stream-combiner2/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -14653,12 +13232,12 @@ } }, "node_modules/streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", "dev": true, "dependencies": { - "date-format": "^4.0.13", + "date-format": "^4.0.14", "debug": "^4.3.4", "fs-extra": "^8.1.0" }, @@ -14707,26 +13286,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14808,6 +13367,48 @@ "webpack": "^5.0.0" } }, + "node_modules/stylus/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/stylus/node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -14853,20 +13454,6 @@ "superagent": ">= 0.15.4 || 1 || 2 || 3" } }, - "node_modules/superagent/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -15046,6 +13633,48 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -15113,21 +13742,6 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -15164,28 +13778,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -15239,9 +13831,9 @@ } }, "node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15355,9 +13947,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "funding": [ { "type": "opencollective", @@ -15442,22 +14034,6 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/vm2": { "version": "3.9.11", "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", @@ -15514,146 +14090,6 @@ "defaults": "^1.0.3" } }, - "node_modules/webdriver-js-extender": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", - "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/selenium-webdriver": "^3.0.0", - "selenium-webdriver": "^3.0.1" - }, - "engines": { - "node": ">=6.9.x" - } - }, - "node_modules/webdriver-manager": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", - "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "adm-zip": "^0.4.9", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" - }, - "bin": { - "webdriver-manager": "bin/webdriver-manager" - }, - "engines": { - "node": ">=6.9.x" - } - }, - "node_modules/webdriver-manager/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webdriver-manager/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webdriver-manager/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webdriver-manager/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/webdriver-manager/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/webdriver-manager/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/webdriver-manager/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webdriver-manager/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/webpack": { "version": "5.74.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", @@ -16295,64 +14731,25 @@ } }, "@angular-devkit/architect": { - "version": "0.1402.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.3.tgz", - "integrity": "sha512-vU5j0WhSYxux5RzhuZ3VY3B4XbRJuEtVqSoW5j9ew3Oc78tkR6RNXgT97PPr0GfRA1fOEhVoReR7NbsKU3uIkQ==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.6.tgz", + "integrity": "sha512-qTmPBD7fBXBtlSapGLUEcJvRuL/O556zCFFpH3kSlzPNTYxi2falBjGY+4aG+078RXT1vVZtFsvRTart6VbhAg==", "dev": true, "requires": { - "@angular-devkit/core": "14.2.3", + "@angular-devkit/core": "14.2.6", "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.3.tgz", - "integrity": "sha512-E8bnC6F0xNni4IIKAnIDBDkbi6cOePm4Q/Y9IrTk3wquGTfsiMlQpdnRA0nr+FTN/LT3N08O5dEw2Gd4ff4tGA==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } } }, "@angular-devkit/build-angular": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.3.tgz", - "integrity": "sha512-Gun2WBM9oXqgOmpwan0OC5OEW2RY6Sd6nrOGzdC5HkvvwxLBV5uycrpYVJiQSPLuQjDLp9S2QTjA2yLtVABYCA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.6.tgz", + "integrity": "sha512-XtaUwb3aZ8S0vl0y9bmbdFOH0KQCQ778twFH+ZfHW2BcPYtQz2Cy2rcVKXBQ850RyC0GxgMPfco6OGQndPpizg==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.3", - "@angular-devkit/build-webpack": "0.1402.3", - "@angular-devkit/core": "14.2.3", + "@angular-devkit/architect": "0.1402.6", + "@angular-devkit/build-webpack": "0.1402.6", + "@angular-devkit/core": "14.2.6", "@babel/core": "7.18.10", "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", @@ -16363,7 +14760,7 @@ "@babel/runtime": "7.18.9", "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.3", + "@ngtools/webpack": "14.2.6", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -16412,182 +14809,71 @@ "webpack-dev-server": "4.11.0", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.3.tgz", - "integrity": "sha512-E8bnC6F0xNni4IIKAnIDBDkbi6cOePm4Q/Y9IrTk3wquGTfsiMlQpdnRA0nr+FTN/LT3N08O5dEw2Gd4ff4tGA==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - } - }, - "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } } }, "@angular-devkit/build-webpack": { - "version": "0.1402.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.3.tgz", - "integrity": "sha512-d7ZG7dZElJgtPbp2x2dzMv6usqqzz9CH+RtaGueuivIa/Cd061c3D0pi3XuUBvfaS0qENrlnysYhLkuTnUQGcQ==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.6.tgz", + "integrity": "sha512-gKsDxQ9pze0N1qDM0kdM4FfwpkjSOb0bQzqjZi7wTfrh/WGIQMCjG9CRwWT+Z289ZKaTpcQDPsDtOSo5QpKNDg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1402.3", + "@angular-devkit/architect": "0.1402.6", "rxjs": "6.6.7" } }, "@angular-devkit/core": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", - "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.6.tgz", + "integrity": "sha512-qtRSdRm/h7C3ya04PJTDgQXV6mM8Y4RakANX1GTSXetCf9AVSxg74NJX76DWUgiHT4JiPYnJgJU6Hr/L0H6JOQ==", "dev": true, "requires": { - "ajv": "8.9.0", + "ajv": "8.11.0", "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", + "jsonc-parser": "3.1.0", "rxjs": "6.6.7", - "source-map": "0.7.3" + "source-map": "0.7.4" } }, "@angular-devkit/schematics": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", - "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.6.tgz", + "integrity": "sha512-mSFtc4M49mWrYsgJx/P6bA6SzXb8SeZqmppKRMoEQxiXI1bwFdGLNWzAmzEsGvS96h/nPIaOfcX5cKJSp++4FA==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.9", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", + "@angular-devkit/core": "14.2.6", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", "ora": "5.4.1", "rxjs": "6.6.7" } }, "@angular/animations": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.3.tgz", - "integrity": "sha512-5psQgSia7pUUKYpFuwA+c+yWyM8afl9ZlOW2pxBU/2mTMLpxJEnVrUnKRsx3WSrOc9YqoLn6DOtDLXq2dbTxFQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.6.tgz", + "integrity": "sha512-Tmb3Jj016j8m8OOGSk/ReL0b+OuUCMj0KQansk3C4pCpH9oPF67Vnm0fmVC2wYjjsSS/iDgl4kaDW740wfPGNQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/cdk": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.2.tgz", - "integrity": "sha512-PXEnhX+QDOsmHVVnqTuoGaK7Wn9hFd5kWAmHTTU7lZr3XVu/AtDcEU+LB19wOFU0fY+kSYHMgN+BYo1TiR8vbw==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.5.tgz", + "integrity": "sha512-kKneb9Z/2E+EXMsHuH8MWy8aygKhdFlKXYltEG7r4W/B6FJC012kJfe+Euj8X0O26akOVW9Q0X7nczCqHqU4tQ==", "requires": { "parse5": "^5.0.0", "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.3.tgz", - "integrity": "sha512-pFo/h3ImjebjKzdw6yWcaERSIzWsSu4eqH9qQ/dWD1ChkSph+krBw3+5Q+Kda5l3dLgl7mQXX6mC5u8IHTdvDg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.6.tgz", + "integrity": "sha512-8tXpe3htfZY8a+Am4nluVcztMFD5wnx4edGEDkkOiqkrUzbCtX4AyEBjUFldsYKZXbRFU46xEfM6jBnLOjxDZQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1402.3", - "@angular-devkit/core": "14.2.3", - "@angular-devkit/schematics": "14.2.3", - "@schematics/angular": "14.2.3", + "@angular-devkit/architect": "0.1402.6", + "@angular-devkit/core": "14.2.6", + "@angular-devkit/schematics": "14.2.6", + "@schematics/angular": "14.2.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -16604,109 +14890,28 @@ "symbol-observable": "4.0.0", "uuid": "8.3.2", "yargs": "17.5.1" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.3.tgz", - "integrity": "sha512-E8bnC6F0xNni4IIKAnIDBDkbi6cOePm4Q/Y9IrTk3wquGTfsiMlQpdnRA0nr+FTN/LT3N08O5dEw2Gd4ff4tGA==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - } - }, - "@angular-devkit/schematics": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.3.tgz", - "integrity": "sha512-98ldx+To7xW1BH/DqIToQwHVscPZhXnZP01SeoiUnFlJE5FnXx8Lv7qHAQtE96M+cfE5NR1NKBgfCH3S3rnmFA==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.3", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "@schematics/angular": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.3.tgz", - "integrity": "sha512-lHWeeWrhpyMwJRTK4RpFVptWZo5kTdI+bOOd+lZBTjOAs+PM8r9VXHzB6qhE6P2e3HsceXM59PonvekTUdOJtQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.3", - "@angular-devkit/schematics": "14.2.3", - "jsonc-parser": "3.1.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } } }, "@angular/common": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.3.tgz", - "integrity": "sha512-DoBQk9uBWfGc+mZ9+lwpmZQy05zKgOeIfDM+2f7Wjrv1/X/V+YUJhjS66GIEBGOe23DoSeivLLCpVj8QqR058A==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.6.tgz", + "integrity": "sha512-WNX7xe8LKP5DHPlae+c77PDwj0iIAAPIe1lWbhQysyi8uttbtL9VVP2XTFuQ3E6oVHJr+0IR0LMVGJ+a8i6zsw==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.3.tgz", - "integrity": "sha512-DG2lqSqD5hx6Qk362jhjU9O+I2gOlsV8oUSTOkH4eFQ54PUad1D3hjqfcs3/lsvWggALCSjv9X8BOG8jb7n8vw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.6.tgz", + "integrity": "sha512-XtmJRNQQ/bUcRjB6jG67km3EPug8frnHH50sLqxye+cljCzWQpzFN/Qr1z0abuzEX8OC4alqxCDCFgTFyyVkaQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.3.tgz", - "integrity": "sha512-MPKZTD4j5EnvpHXLOj6VnXBv/LXfVLoLNc4nNShfuJFJjK9vOqXelb2GJt+2iL+9xKevGxDk7NIcl++fhV2lkQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.6.tgz", + "integrity": "sha512-zKnpZ5WDbM31dwr5GDAbCblMIEUzWSglUyqCxJfbCg21dE0EuLfd/WzsROgM2TucOtCT5xNipqz4bc+wdEOIgQ==", "requires": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -16718,165 +14923,105 @@ "sourcemap-codec": "^1.4.8", "tslib": "^2.3.0", "yargs": "^17.2.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", - "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", - "@babel/helper-compilation-targets": "^7.19.1", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/generator": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", - "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", - "requires": { - "@babel/types": "^7.19.0", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "magic-string": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz", - "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - } } }, "@angular/core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.3.tgz", - "integrity": "sha512-neW2n5Ts2purYEVh0Lf207otZbhYH4C4lwwu8ffxdRiXahQiTCbmyM3IQFrQZbLDb/ZeD2KhoCl6p0hlyg14cA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.6.tgz", + "integrity": "sha512-fEIz7E488X03tLIqmWQRpahxRRU2SMjb9i/rMUjMQJkbppJC3cykl31bCYzeixNO+zpE55GPGuQX2qI/yDenZA==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.3.tgz", - "integrity": "sha512-rL6adBHp51i3eDBecexrlrS+t+hlK6EnrEot/+Ec+DzVjJgw5VNJ4p2Ig72HPe0m+H0dcPkbQhlpb6cs677ISA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.6.tgz", + "integrity": "sha512-t7Hd9RMnHbXRTdH/H8h8ZC3PsK1U4rH+XYaIbQNcys/XSf1uRFHx9MWqkwS5hoQEFOxkFSX5dRv2xSnHtxfq5w==", "requires": { "tslib": "^2.3.0" } }, "@angular/language-service": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.3.tgz", - "integrity": "sha512-11rp2DumlZFO5+/N38RW6lXzicD/6LlqeVoS4qf8sIMGJ4bzeyOrG0T/PAG2iEA7hay1jPH51t0G529xaSw0tQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.6.tgz", + "integrity": "sha512-o6MZ+n0zThdYhMDchgNAiqKme1pgFKvZfRibxgnntEua77BL0Ty7uEwDdehNk3eaVu8ddtW7svYfsGhL53HZWA==", "dev": true }, "@angular/localize": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.3.tgz", - "integrity": "sha512-ZHRV7/BZyhVmYVSYcYcC0kmSUFL3SUICFFRsGQk2XTkraVqh4RKlm/LcgzGMO6OwyMAZQX32FncsnRvcZUxy9A==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.6.tgz", + "integrity": "sha512-cUUAPV9IFNkcMe/tauqaqaml9ZXbaZ75A2NXDom78ETwVCqybjtfJfSl3ExlfP4oFKw62XMJla8yuEE0ZMaLew==", "requires": { "@babel/core": "7.18.9", "glob": "8.0.3", "yargs": "^17.2.1" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "requires": { - "balanced-match": "^1.0.0" + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" } }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, "@angular/material": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.2.tgz", - "integrity": "sha512-jVCaESSTTkLjRvMzSQj294s0Lz1YMVFkl0svrMtWgkUMXHEfx2Vjw6FXdrVrBXlxEIrpfhkTEXVN2DC1kkAkQw==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.5.tgz", + "integrity": "sha512-vC3F1r8WHclL1BbQVxOc9Ite1xH/pCOLnYYcx8HK1T2jlzeX7NxU1A58iBZC3rLj494tsMnRQDSZPXfazBiw0g==", "requires": { "tslib": "^2.3.0" } }, "@angular/material-moment-adapter": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-14.2.2.tgz", - "integrity": "sha512-EOnchBkcICJQXYcXEk+4FSgQXllhJAfE56rkeCDS0r0iFe+zdM4da6JseBQPIKMraYXcnuDnMC1Q2cjVMggn+A==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-14.2.5.tgz", + "integrity": "sha512-BCyzLMAGKKU7veLuLHI1AbiKJ7/iBvDGB9DqwWng6vncTE90so6ARZDTppPpWRiS+FW/Q2kWiI9f+aXY/3IvnQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.3.tgz", - "integrity": "sha512-Ky5ITBVmr+T5zHRowLRTJx1exXo99bUA6vosxG4B/YlXkjNfqVz4BETgPwnoIdN00Y9lxGQrMbjqSuzOjGQ7IQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.6.tgz", + "integrity": "sha512-KQUN4YVYEK5NOL7QFnDulQta6tm9rPh/mruX/XCLkSmoRMlFBmsHyjx+VJBnBNUbUxNsBj7kknifOu9PqDgAWg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.3.tgz", - "integrity": "sha512-yqSH9NrgkXN3aslbD9IHWnFClwwVlLTypaMfSGmhPL1LvgL/HL/A9rDYI2ZrybVoVmAZLsJ4uF2/GvK/pzUcNQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.6.tgz", + "integrity": "sha512-SlWEYLED4ST1AFfgeB8SyKLVJYp36XT+3Vw3yDrObsthzXCiFAuYHQZfSWgT1Sfx3uFqEdN7nskJqD05wN3mQg==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.3.tgz", - "integrity": "sha512-ACSBYZCMWBaVHmclaFS5C+zSTTcMbY6iJFjI0tiTqicqdpzAOIt6s5Ius1wzN9L6ANijn1ZdGAzH6j45GV/XtQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.6.tgz", + "integrity": "sha512-Vz1kadGSqA7ZCZQ2woNbSBPMdiE5eTZv8cGympaFnFQQUzQTQ6zi22wY4RzovDk5Lw+EQkvOmaW2864LDzDeug==", "requires": { "tslib": "^2.3.0" } @@ -16888,57 +15033,57 @@ "dev": true }, "@awesome-cordova-plugins/aes-256": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-5.45.0.tgz", - "integrity": "sha512-Uw1VO/V01qWlVP+btUP9+lkAVIvY5erwPONwwVzu4pVvdS+qHOvkJ3PJeoToZ3eXEDdlOOvx5u+8ZsLtAyCytw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-5.46.0.tgz", + "integrity": "sha512-Sq7Ze/QTZ7VBcS7Vz699IFbZ3K8n3g1Sp1m14QtP8wdgqJr/zq4OPFTX5Sm2LsdGddmYoJKW3c+nAxSdBY45DQ==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/chooser": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-5.45.0.tgz", - "integrity": "sha512-+YFRJKOGQch1oan986VD8g2+Ovr7yMmaS23lJSWe3MCwvj+jMDj32rE1Fuw/53hYHKs9UYAxx7UOZ3IRHLeBJA==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-5.46.0.tgz", + "integrity": "sha512-m14q3DnhWCwPC1/xOkABkkI0Y2pQEwFcf68mZfhRTtMYoS4tbBhJhxTbTMDk4nHzfb2bxxTuaSbwcDfcVFjSWg==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/core": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.45.0.tgz", - "integrity": "sha512-VrFNy6KLu3yyIKX3+6knUTDfSy59MPWUDni31ypGIQyxZv0eInuAgy3D4dhEdSbTkCIRyF40u4CJk4bN5zUYzQ==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.46.0.tgz", + "integrity": "sha512-EkCTsS9sE4lXzPbKZonn7PEzoF1/vvhsJDnIyqP3FObBqb8fjqhEz4r7z4iNRNHel4Mq9bICzI5J/3vQ+jbWVw==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/screen-orientation": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-5.45.0.tgz", - "integrity": "sha512-FbEmUO8if/QHdqs0Dk3Ozgvy3F9Idqh0JoUBzGTzTEboAWp7PJhMwJ78UkFnmUbxLOvX6WlYVsrReIBo+b8tTQ==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-5.46.0.tgz", + "integrity": "sha512-RaCEGQCChk8/R5aWsNbKJSDi3wh6tI0VFufWSyodxoaWuy8cjRmhhdH+Y1Nqq2h19oNoBGsXQOGOONUwDBaLyA==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/sms": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-5.45.0.tgz", - "integrity": "sha512-W4Ink1TlwLsshq4SMUF+dIiwk6v+Ojm3fp1N75nT4GZpAKRzrZPGv03jhZnEkvABN7b/dV8n5HS6bDiFmlvExw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-5.46.0.tgz", + "integrity": "sha512-BkzGq/jis6p3o+weTy0qpGYgUEaU9XXuPa4esJcU7NDObmV3MJMhH09235gO8TLHUpH5vM4aDDbLcEvsXHr8qg==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/social-sharing": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-5.45.0.tgz", - "integrity": "sha512-gOmFsM9mo7kb+BNulasbpywafdekhB0IuDu8CDK/jvy/GSAR50CH2887MlChwJdkqx5y9mCEPtojGwyBIHK5Mg==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-5.46.0.tgz", + "integrity": "sha512-Q4t+MT29nJTUYD43Fq/uoX4mzegi2utQTx16yZBiTdOuJ3gA0BI0p6bJy6Xl55y4qo/udk16XsM09BVN+VBN2w==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/theme-detection": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-5.45.0.tgz", - "integrity": "sha512-AoSYWt5NKZn1JirgfB2fL6LCFc+2hrBKhhYQYHsGxzGzgLNT+okScnw9aCZEbbovN4kpYKwezO1P9e7DbjI9xw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-5.46.0.tgz", + "integrity": "sha512-2hWY2qTbPb9ctBpEP7rTRA5I3JLMq+Z9+/ejyVIphruOpSMMuk0mJbwYkwk3le5ccbq0L7Yw14a2wAljmjCXUg==", "requires": { "@types/cordova": "latest" } @@ -16952,25 +15097,25 @@ } }, "@babel/compat-data": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", - "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==" + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" }, "@babel/core": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", - "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-module-transforms": "^7.18.9", "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -17027,11 +15172,11 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", - "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "requires": { - "@babel/compat-data": "^7.19.1", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -17195,11 +15340,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.19.4" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -17220,9 +15365,9 @@ } }, "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" }, "@babel/helper-validator-identifier": { "version": "7.19.1", @@ -17247,13 +15392,13 @@ } }, "@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "requires": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" } }, "@babel/highlight": { @@ -17267,9 +15412,9 @@ } }, "@babel/parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", - "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==" + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", + "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -17385,14 +15530,14 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.18.8" } @@ -17615,12 +15760,12 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-classes": { @@ -17650,12 +15795,12 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -18048,28 +16193,28 @@ } }, "@babel/traverse": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", - "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", + "@babel/generator": "^7.19.4", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.1", - "@babel/types": "^7.19.0", + "@babel/parser": "^7.19.4", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", - "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "requires": { - "@babel/types": "^7.19.0", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -18087,12 +16232,12 @@ } }, "@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -18127,9 +16272,9 @@ "requires": {} }, "@capacitor/camera": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.1.tgz", - "integrity": "sha512-L/1KLg4IRCAUmwhmu5jIic4U2OLAHFSW5GoExFU9yR8iCJo1SBGSiay2TpU3PpgmJHRtazO6pxKUCyAmDExkhw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.2.tgz", + "integrity": "sha512-YJMw8sflNj3aa9jSqOgSKOhjKNjc6fb1wxdVMW7Ek6SWsykbcAMWRkecOsSqPNPyDbNRBiwB8P5ZuUC8ZwRm0A==", "requires": {} }, "@capacitor/cli": { @@ -18155,17 +16300,6 @@ "tar": "^6.1.11", "tslib": "^2.4.0", "xml2js": "^0.4.23" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@capacitor/clipboard": { @@ -18189,9 +16323,9 @@ "requires": {} }, "@capacitor/filesystem": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@capacitor/filesystem/-/filesystem-4.1.1.tgz", - "integrity": "sha512-qpXIR4kxW2age91EiDFOh5KpZ5SUFs1rgWmNrO60wo+AT3Ok0Dzfol2aLSqvNAenDGUilA44ThJPeE+ArRPVzg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@capacitor/filesystem/-/filesystem-4.1.2.tgz", + "integrity": "sha512-akQTgNZBIRE5mN8IPagd4TUk9vx8c2xTllX8yBRzf4BhHHkQPzAnEVikmX+qB/114DvRMh3l2s8mtpXiWOg9NQ==", "requires": {} }, "@capacitor/haptics": { @@ -18213,9 +16347,9 @@ "requires": {} }, "@capacitor/splash-screen": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-4.0.1.tgz", - "integrity": "sha512-7hklUx69aZDonuLP1R5X4ZTGgZLwX8RTj9/3U1905Kz/XflcT7Rhighbad+uZBaOU+L/8Vm6Y3RlR3rFj4ELVA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-4.1.0.tgz", + "integrity": "sha512-b+IpnM+dhwHZ7zkXr8M9dgJauwSf8wyOweEkM38EDaw4XhZtZoBjJOby1fAeaxgK4iO2qoej95LgtOjcv6eGkg==", "requires": {} }, "@capacitor/status-bar": { @@ -18392,11 +16526,11 @@ "dev": true }, "@ionic/angular": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.2.8.tgz", - "integrity": "sha512-ilO/IH5a4vSoZkL8u/GknYwJU5w1gbqunxd3rbXJ70o4dFXY7VP6Ieyin6mdjYMdAmrV7zw2UxBXBJ3qWId1EQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.1.tgz", + "integrity": "sha512-hT97StH54ZhefdXDSkEAdBc8ssWBf9W8PrEXEUiYtBpp6AbTu/EL5AjHFIIWyyBXPic0sh5+KeJSu86Xxz5yMA==", "requires": { - "@ionic/core": "^6.2.8", + "@ionic/core": "^6.3.1", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" } @@ -18410,6 +16544,79 @@ "@angular-devkit/core": "^13.0.1", "@angular-devkit/schematics": "^13.0.1", "@schematics/angular": "^13.0.1" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", + "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", + "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.9", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + } + }, + "@schematics/angular": { + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", + "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.9", + "@angular-devkit/schematics": "13.3.9", + "jsonc-parser": "3.0.0" + } + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "@ionic/cli": { @@ -18496,15 +16703,6 @@ "is-wsl": "^2.1.1" } }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "requires": { - "readable-stream": "^3.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18686,11 +16884,11 @@ } }, "@ionic/core": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.2.8.tgz", - "integrity": "sha512-tUUdvCPo9Z4RQXjvxNXBXQsVTFDAH2ju/HAhzZiAvdfwpHfpA39DWkXwAQeoV9gfFFblaOmCmeSq/8JP/FRn4A==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.1.tgz", + "integrity": "sha512-OpmGQQ/sGtoXW4PQRvRjYa9mTlAmAWwFMu8g/1rcdAPaTQQAlRnfZ62wYYqmChLSFlVbn6mCleeljzR9FaYrAg==", "requires": { - "@stencil/core": "^2.17.4", + "@stencil/core": "^2.18.0", "ionicons": "^6.0.3", "tslib": "^2.1.0" } @@ -18885,12 +17083,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -18908,9 +17106,9 @@ } }, "@ngtools/webpack": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.3.tgz", - "integrity": "sha512-/9bOlmpx7a5P8QhjmggxEJ6LX5qvfkBZhxM8Orjr6ZjJcmAfm+3wiUDzU3EM+5M0YV3y3+dvQpn6Jrwy9y4rfQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.6.tgz", + "integrity": "sha512-HdfoHLGPzyP135BOlvTQcpeWisVfiH0u40YNTBVK3QAsrLnY17e2QG5BWBOrVYipRu1975cZtTC9rPjcCY8aLQ==", "dev": true, "requires": {} }, @@ -18981,14 +17179,6 @@ "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - } } }, "@npmcli/installed-package-contents": { @@ -19046,14 +17236,14 @@ "peer": true }, "@schematics/angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", - "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.6.tgz", + "integrity": "sha512-oeyMAQr3Q9nvAX+5FRgXcTMX9lqqenElBmAuwfqqdB0qD1jmkJ8TpWRuvYVA/931njpIwhfyLrzmzeNnJb23Sg==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "jsonc-parser": "3.0.0" + "@angular-devkit/core": "14.2.6", + "@angular-devkit/schematics": "14.2.6", + "jsonc-parser": "3.1.0" } }, "@socket.io/component-emitter": { @@ -19063,9 +17253,9 @@ "dev": true }, "@stencil/core": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.18.0.tgz", - "integrity": "sha512-NLEY8Jq59smyiivBAxHKipsp9YkkW/K/Vm90zAyXQqukb12i2SFucWHJ1Ik7ropVlhmMVvigyxXgRfQ9quIqtg==" + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.18.1.tgz", + "integrity": "sha512-/fXkh1lwZ+X9JQCw50mPjhBogzEHOBvVC5pLoDLZqodVYK0DGWILM2YLV4dcIUBNEK8/HMDpO/Rq81/rS3mNOw==" }, "@techiediaries/ngx-qrcode": { "version": "9.1.0", @@ -19250,14 +17440,6 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", - "dev": true, - "optional": true, - "peer": true - }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -19276,14 +17458,6 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "@types/selenium-webdriver": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz", - "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==", - "dev": true, - "optional": true, - "peer": true - }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -19561,14 +17735,6 @@ } } }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "optional": true, - "peer": true - }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -19608,9 +17774,9 @@ } }, "ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -19709,14 +17875,6 @@ "dev": true, "requires": { "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - } } }, "array-flatten": { @@ -19725,41 +17883,6 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "optional": true, - "peer": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "optional": true, - "peer": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "optional": true, - "peer": true - }, "ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -19801,22 +17924,6 @@ "postcss-value-parser": "^4.2.0" } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "optional": true, - "peer": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "optional": true, - "peer": true - }, "babel-loader": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", @@ -19924,17 +18031,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -19962,21 +18058,10 @@ "readable-stream": "^3.4.0" } }, - "blocking-proxy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", - "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "minimist": "^1.2.0" - } - }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -19987,7 +18072,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -20052,12 +18137,11 @@ } }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "braces": { @@ -20079,53 +18163,6 @@ "update-browserslist-db": "^1.0.9" } }, - "browserstack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", - "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "https-proxy-agent": "^2.2.1" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } - } - }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -20187,45 +18224,6 @@ "ssri": "^9.0.0", "tar": "^6.1.11", "unique-filename": "^1.1.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } } }, "call-bind": { @@ -20250,17 +18248,9 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { - "version": "1.0.30001410", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001410.tgz", - "integrity": "sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "optional": true, - "peer": true + "version": "1.0.30001419", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", + "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==" }, "chalk": { "version": "2.4.2", @@ -20400,9 +18390,9 @@ } }, "commander": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", - "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", "dev": true }, "commondir": { @@ -20461,6 +18451,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -20517,14 +18513,6 @@ "dev": true, "requires": { "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "content-type": { @@ -20534,12 +18522,9 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "cookie": { "version": "0.4.2", @@ -20615,6 +18600,36 @@ "xcode": "^2.0.0" }, "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -20656,18 +18671,18 @@ "integrity": "sha512-plbjtBtr5bnUEWh+5bLj2afKdQDL9dRwXu+wW46AKTsqQqx03/C3NPvDSXOLn7knrU+Vr4kDciClmK2zCMxJPg==" }, "core-js-compat": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz", - "integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, "requires": { "browserslist": "^4.21.4" } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "cors": { @@ -20836,9 +18851,9 @@ "dev": true }, "cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", + "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "dev": true }, "cssesc": { @@ -20853,17 +18868,6 @@ "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "data-uri-to-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", @@ -20876,9 +18880,9 @@ "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" }, "date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true }, "debug": { @@ -20910,9 +18914,9 @@ } }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -20946,63 +18950,6 @@ "vm2": "^3.9.8" } }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -21152,6 +19099,12 @@ "util-deprecate": "~1.0.1" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -21163,18 +19116,6 @@ } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -21182,9 +19123,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.258", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz", - "integrity": "sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A==" + "version": "1.4.283", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz", + "integrity": "sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==" }, "elementtree": { "version": "0.1.7", @@ -21331,30 +19272,11 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true, - "optional": true, - "peer": true - }, "es6-promise-plugin": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/es6-promise-plugin/-/es6-promise-plugin-4.2.2.tgz", "integrity": "sha512-uoA4aVplXI9oqUYJFBAVRwAqIN9/n9JgrTAUGX3qPbnSZVE5yY1+6/MsoN5f4xsaPO62WjPHOdtts6okMN6tNA==" }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, "esbuild": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", @@ -21655,23 +19577,15 @@ "strip-final-newline": "^2.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "optional": true, - "peer": true - }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -21690,7 +19604,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -21744,12 +19658,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -21775,14 +19683,6 @@ "tmp": "^0.0.33" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "optional": true, - "peer": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -21943,24 +19843,14 @@ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "optional": true, - "peer": true - }, "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, - "optional": true, - "peer": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, @@ -22165,28 +20055,16 @@ } } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" } }, "glob-parent": { @@ -22233,50 +20111,6 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "optional": true, - "peer": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -22286,27 +20120,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -22357,14 +20170,6 @@ "dev": true, "requires": { "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - } } }, "hpack.js": { @@ -22394,6 +20199,12 @@ "util-deprecate": "~1.0.1" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -22491,19 +20302,6 @@ "micromatch": "^4.0.2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -22563,26 +20361,6 @@ "dev": true, "requires": { "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } } }, "image-size": { @@ -22723,9 +20501,9 @@ "dev": true }, "rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -22833,36 +20611,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", - "dev": true, - "optional": true, - "peer": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -22935,14 +20683,6 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "optional": true, - "peer": true - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -22950,9 +20690,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -23027,29 +20767,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.8.0" - }, - "dependencies": { - "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "jasmine-core": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.8.0.tgz", @@ -23065,14 +20782,6 @@ "colors": "1.4.0" } }, - "jasminewd2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", - "dev": true, - "optional": true, - "peer": true - }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -23122,14 +20831,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "optional": true, - "peer": true - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -23141,37 +20842,21 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true, - "peer": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true, - "peer": true - }, "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" }, "jsonfile": { "version": "6.1.0", @@ -23189,80 +20874,11 @@ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "jsqr": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - }, - "dependencies": { - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "immediate": "~3.0.5" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "karma": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", @@ -23295,6 +20911,39 @@ "yargs": "^16.1.1" }, "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -23376,6 +21025,16 @@ "minimatch": "^3.0.4" }, "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", @@ -23388,6 +21047,15 @@ "semver": "^6.3.0" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -23409,6 +21077,30 @@ "minimatch": "^3.0.4" }, "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "istanbul-lib-source-maps": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", @@ -23440,6 +21132,15 @@ "semver": "^5.6.0" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -23828,25 +21529,23 @@ } }, "log4js": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", - "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", + "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", "dev": true, "requires": { - "date-format": "^4.0.13", + "date-format": "^4.0.14", "debug": "^4.3.4", - "flatted": "^3.2.6", + "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.2" + "streamroller": "^3.1.3" } }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true }, "macos-release": { "version": "2.5.0", @@ -23855,12 +21554,11 @@ "dev": true }, "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "make-dir": { @@ -23908,14 +21606,6 @@ "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", "ssri": "^9.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - } } }, "material-design-icons": { @@ -24029,17 +21719,17 @@ "dev": true }, "minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "minipass": { @@ -24159,9 +21849,9 @@ "dev": true }, "native-run": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.0.tgz", - "integrity": "sha512-tkd0E9hwJcxd9xbpC1Z4KED3bK+bavQJ7p4BRMHtlikrvJX+OwHm7/qwDLzQ4emDEMQUG9rskRdJfo1UoGditA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.1.tgz", + "integrity": "sha512-70ZneVVcOL1ifqw7SG5O2AJYIHEBSX5C25ShwwKCcdMcgbZ+MzvAc2fjHzfekcPYtInHqcJQOki6NXj9f6LgOg==", "dev": true, "requires": { "@ionic/utils-fs": "^3.1.6", @@ -24182,6 +21872,12 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", "dev": true + }, + "split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true } } }, @@ -24269,21 +21965,56 @@ "dev": true }, "node-gyp": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", "dev": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", "tar": "^6.1.2", "which": "^2.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "node-gyp-build": { @@ -24299,12 +22030,12 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^1.0.0" } }, "normalize-package-data": { @@ -24378,37 +22109,6 @@ "npm-normalize-package-bin": "^2.0.0" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, "npm-bundled": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", @@ -24483,14 +22183,6 @@ "boolbase": "^1.0.0" } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true, - "peer": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -24931,14 +22623,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true, - "optional": true, - "peer": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -24969,14 +22653,6 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "optional": true, - "peer": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -24993,25 +22669,6 @@ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "optional": true, - "peer": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "piscina": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", @@ -25242,17 +22899,6 @@ "cosmiconfig": "^7.0.0", "klona": "^2.0.5", "semver": "^7.3.7" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "postcss-logical": { @@ -25510,241 +23156,6 @@ "string.prototype.codepointat": "^0.2.0" } }, - "protractor": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", - "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.1.7", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "peer": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "optional": true, - "peer": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "optional": true, - "peer": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true, - "peer": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "optional": true, - "peer": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "optional": true, - "peer": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "optional": true, - "peer": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "optional": true, - "peer": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -25837,14 +23248,6 @@ "dev": true, "optional": true }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true, - "optional": true, - "peer": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -25861,14 +23264,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", - "dev": true, - "optional": true, - "peer": true - }, "qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -25962,9 +23357,9 @@ } }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -26024,37 +23419,6 @@ "npm-normalize-package-bin": "^2.0.0" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, "npm-normalize-package-bin": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", @@ -26170,54 +23534,6 @@ } } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "optional": true, - "peer": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -26324,6 +23640,41 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "rsvp": { @@ -26363,9 +23714,10 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -26394,53 +23746,6 @@ "neo-async": "^2.6.2" } }, - "saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "https-proxy-agent": "^2.2.1" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } - } - }, "sax": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", @@ -26491,44 +23796,6 @@ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, - "selenium-webdriver": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", - "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "jszip": "^3.1.3", - "rimraf": "^2.5.4", - "tmp": "0.0.30", - "xml2js": "^0.4.17" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "os-tmpdir": "~1.0.1" - } - } - } - }, "selfsigned": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", @@ -26539,11 +23806,21 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + } } }, "send": { @@ -26692,14 +23969,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "optional": true, - "peer": true - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -26864,9 +24133,9 @@ } }, "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { "ip": "^2.0.0", @@ -26885,9 +24154,9 @@ } }, "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true }, "source-map-js": { @@ -27001,9 +24270,18 @@ } }, "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "ssh-config": { @@ -27012,25 +24290,6 @@ "integrity": "sha512-ZPO9rECxzs5JIQ6G/2EfL1I9ho/BVZkx9HRKn8+0af7QgwAmumQ7XBFP1ggMyPMo+/tUbmv0HFdv4qifdO/9JA==", "dev": true }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -27076,6 +24335,12 @@ "util-deprecate": "~1.0.1" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -27088,12 +24353,12 @@ } }, "streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", "dev": true, "requires": { - "date-format": "^4.0.13", + "date-format": "^4.0.14", "debug": "^4.3.4", "fs-extra": "^8.1.0" }, @@ -27133,14 +24398,6 @@ "dev": true, "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "string-width": { @@ -27184,6 +24441,39 @@ "source-map": "^0.7.3" }, "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -27220,19 +24510,6 @@ "qs": "^6.9.4", "readable-stream": "^3.6.0", "semver": "^7.3.2" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } } }, "superagent-proxy": { @@ -27365,6 +24642,41 @@ "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "text-table": { @@ -27422,18 +24734,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -27458,25 +24758,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "optional": true, - "peer": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -27518,9 +24799,9 @@ } }, "typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==" + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" }, "ua-parser-js": { "version": "0.7.31", @@ -27593,9 +24874,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -27652,19 +24933,6 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vm2": { "version": "3.9.11", "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", @@ -27709,118 +24977,6 @@ "defaults": "^1.0.3" } }, - "webdriver-js-extender": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", - "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/selenium-webdriver": "^3.0.0", - "selenium-webdriver": "^3.0.1" - } - }, - "webdriver-manager": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", - "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "adm-zip": "^0.4.9", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "peer": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "optional": true, - "peer": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "optional": true, - "peer": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "peer": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "webpack": { "version": "5.74.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", diff --git a/package.json b/package.json index 2732212..01a8854 100644 --- a/package.json +++ b/package.json @@ -21,37 +21,37 @@ "@angular/cdk": "^14.2.2", "@angular/common": "^14.2.3", "@angular/core": "^14.2.3", - "@angular/forms": "^14.2.3", - "@angular/localize": "^14.2.3", + "@angular/forms": "^14.2.6", + "@angular/localize": "^14.2.6", "@angular/material": "^14.2.2", - "@angular/material-moment-adapter": "^14.2.2", + "@angular/material-moment-adapter": "^14.2.5", "@angular/platform-browser": "^14.2.3", - "@angular/platform-browser-dynamic": "^14.2.3", - "@angular/router": "^14.2.3", - "@awesome-cordova-plugins/aes-256": "^5.45.0", - "@awesome-cordova-plugins/chooser": "^5.45.0", - "@awesome-cordova-plugins/core": "^5.45.0", - "@awesome-cordova-plugins/screen-orientation": "^5.45.0", - "@awesome-cordova-plugins/sms": "^5.45.0", - "@awesome-cordova-plugins/social-sharing": "^5.45.0", - "@awesome-cordova-plugins/theme-detection": "^5.45.0", + "@angular/platform-browser-dynamic": "^14.2.6", + "@angular/router": "^14.2.6", + "@awesome-cordova-plugins/aes-256": "^5.46.0", + "@awesome-cordova-plugins/chooser": "^5.46.0", + "@awesome-cordova-plugins/core": "^5.46.0", + "@awesome-cordova-plugins/screen-orientation": "^5.46.0", + "@awesome-cordova-plugins/sms": "^5.46.0", + "@awesome-cordova-plugins/social-sharing": "^5.46.0", + "@awesome-cordova-plugins/theme-detection": "^5.46.0", "@capacitor-community/barcode-scanner": "^3.0.0", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^2.0.0-0", "@capacitor/android": "^4.3.0", "@capacitor/app": "^4.0.1", - "@capacitor/camera": "^4.1.1", + "@capacitor/camera": "^4.1.2", "@capacitor/clipboard": "^4.0.1", "@capacitor/core": "^4.3.0", "@capacitor/device": "^4.0.1", - "@capacitor/filesystem": "^4.1.1", + "@capacitor/filesystem": "^4.1.2", "@capacitor/haptics": "^4.0.1", "@capacitor/ios": "^4.3.0", "@capacitor/keyboard": "^4.0.1", - "@capacitor/splash-screen": "^4.0.1", + "@capacitor/splash-screen": "^4.1.0", "@capacitor/status-bar": "^4.0.1", "@capacitor/toast": "^4.0.1", - "@ionic/angular": "^6.2.8", + "@ionic/angular": "^6.3.1", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.0.0", @@ -79,11 +79,11 @@ "zone.js": "^0.11.8" }, "devDependencies": { - "@angular-devkit/build-angular": "^14.2.3", - "@angular/cli": "^14.2.3", + "@angular-devkit/build-angular": "^14.2.6", + "@angular/cli": "^14.2.6", "@angular/compiler": "^14.2.3", "@angular/compiler-cli": "^14.2.3", - "@angular/language-service": "^14.2.3", + "@angular/language-service": "^14.2.6", "@capacitor/cli": "^4.3.0", "@ionic/angular-toolkit": "^6.1.0", "@ionic/cli": "6.20.1", From 0b7a624ba9e6c3dbdea107a741c1b79f881ca194 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sat, 15 Oct 2022 11:23:18 +0800 Subject: [PATCH 07/19] refactor --- src/app/pages/generate/generate.page.ts | 1 - src/app/pages/result/result.page.ts | 9 --- src/app/pages/scan/scan.page.ts | 2 +- src/app/services/env.service.ts | 78 ++++++++++++------------- 4 files changed, 38 insertions(+), 52 deletions(-) diff --git a/src/app/pages/generate/generate.page.ts b/src/app/pages/generate/generate.page.ts index 3aff475..5344c9a 100644 --- a/src/app/pages/generate/generate.page.ts +++ b/src/app/pages/generate/generate.page.ts @@ -4,7 +4,6 @@ import { Router } from '@angular/router'; import { Haptics, ImpactStyle, NotificationType } from '@capacitor/haptics'; import { AlertController, LoadingController, ToastController } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; -// import * as moment from 'moment'; import { format } from 'date-fns'; import { EnvService } from 'src/app/services/env.service'; import { Toast } from '@capacitor/toast'; diff --git a/src/app/pages/result/result.page.ts b/src/app/pages/result/result.page.ts index 055b3b1..da6e750 100644 --- a/src/app/pages/result/result.page.ts +++ b/src/app/pages/result/result.page.ts @@ -810,15 +810,6 @@ export class ResultPage { await alert.present(); } - // async removeBookmark() { - // await this.env.deleteBookmark(this.qrCodeContent); - // if (this.env.bookmarks.find(x => x.text === this.qrCodeContent)) { - // this.bookmarked = true; - // } else { - // this.bookmarked = false; - // } - // } - get contentTypeText(): string { switch (this.contentType) { case 'freeText': diff --git a/src/app/pages/scan/scan.page.ts b/src/app/pages/scan/scan.page.ts index 8988df3..eb89722 100644 --- a/src/app/pages/scan/scan.page.ts +++ b/src/app/pages/scan/scan.page.ts @@ -109,7 +109,7 @@ export class ScanPage { async (result: ScanResult) => { if (result.hasContent) { const text = result.content; - if (text === undefined || text === null || (text && text.trim().length <= 0) || text === "") { + if (text == null || text?.trim()?.length <= 0 || text == "") { this.presentToast(this.translate.instant('MSG.QR_CODE_VALUE_NOT_EMPTY'), "short", "center"); this.scanQr(); return; diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index 7535603..a4db9ec 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -44,8 +44,6 @@ export class EnvService { public qrCodeMargin: number = 3; public vibration: 'on' | 'on-haptic' | 'on-scanned' | 'off' = 'on'; public orientation: 'default' | 'portrait' | 'landscape' = 'default'; - // public notShowHistoryTutorial: boolean = false; - // public notShowBookmarkTutorial: boolean = false; public notShowUpdateNotes: boolean = false; public searchEngine: 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' = 'google'; public resultPageButtons: 'detailed' | 'icon-only' = 'detailed'; @@ -141,7 +139,7 @@ export class EnvService { ); this._storage.get("start-page-header").then( async value => { - if (value !== null && value !== undefined) { + if (value != null) { this.startPageHeader = value; } else { this.startPageHeader = 'on'; @@ -150,7 +148,7 @@ export class EnvService { ); this._storage.get(environment.storageScanRecordKey).then( value => { - if (value !== null && value !== undefined) { + if (value != null) { try { this._scanRecords = JSON.parse(value); this._scanRecords.forEach( @@ -171,7 +169,7 @@ export class EnvService { ); this._storage.get(environment.storageBookmarkKey).then( value => { - if (value !== null && value !== undefined) { + if (value != null) { try { this._bookmarks = JSON.parse(value); this._bookmarks.forEach( @@ -195,7 +193,7 @@ export class EnvService { ) this._storage.get("language").then( async value => { - if (value !== null && value !== undefined) { + if (value != null) { this.selectedLanguage = value; } else { this.selectedLanguage = 'default'; @@ -205,7 +203,7 @@ export class EnvService { ); this._storage.get("color").then( async value => { - if (value !== null && value !== undefined) { + if (value != null) { this.selectedColorTheme = value; } else { this.selectedColorTheme = 'default'; @@ -224,7 +222,7 @@ export class EnvService { ); this._storage.get("orientation").then( async value => { - if (value !== null && value !== undefined) { + if (value != null) { this.orientation = value; } else { this.orientation = 'default'; @@ -234,7 +232,7 @@ export class EnvService { ); this._storage.get("scan-record-logging").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.scanRecordLogging = value; } else { this.scanRecordLogging = 'on'; @@ -243,7 +241,7 @@ export class EnvService { ); this._storage.get("recordsLimit").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.recordsLimit = value; } else { this.recordsLimit = -1; @@ -252,7 +250,7 @@ export class EnvService { ); this._storage.get("showNumberOfRecords").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showNumberOfRecords = value; } else { this.showNumberOfRecords = 'on'; @@ -261,7 +259,7 @@ export class EnvService { ); this._storage.get("vibration").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.vibration = value; } else { this.vibration = 'on'; @@ -270,7 +268,7 @@ export class EnvService { ); this._storage.get("error-correction-level").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.errorCorrectionLevel = value; } else { this.errorCorrectionLevel = 'M'; @@ -279,7 +277,7 @@ export class EnvService { ); this._storage.get("qrCodeLightR").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeLightR = value; } else { this.qrCodeLightR = 255; @@ -288,7 +286,7 @@ export class EnvService { ); this._storage.get("qrCodeLightG").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeLightG = value; } else { this.qrCodeLightG = 255; @@ -297,7 +295,7 @@ export class EnvService { ); this._storage.get("qrCodeLightB").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeLightB = value; } else { this.qrCodeLightB = 255; @@ -306,7 +304,7 @@ export class EnvService { ); this._storage.get("qrCodeDarkR").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeDarkR = value; } else { this.qrCodeDarkR = 34; @@ -315,7 +313,7 @@ export class EnvService { ); this._storage.get("qrCodeDarkG").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeDarkG = value; } else { this.qrCodeDarkG = 36; @@ -324,7 +322,7 @@ export class EnvService { ); this._storage.get("qrCodeDarkB").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeDarkB = value; } else { this.qrCodeDarkB = 40; @@ -333,7 +331,7 @@ export class EnvService { ); this._storage.get("qrCodeMargin").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.qrCodeMargin = value; } else { this.qrCodeMargin = 3; @@ -342,7 +340,7 @@ export class EnvService { ); this._storage.get("auto-max-brightness").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.autoMaxBrightness = value; } else { this.autoMaxBrightness = 'on'; @@ -351,7 +349,7 @@ export class EnvService { ); this._storage.get("search-engine").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.searchEngine = value; } else { this.searchEngine = 'google'; @@ -360,7 +358,7 @@ export class EnvService { ); this._storage.get("result-page-buttons").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.resultPageButtons = value; } else { this.resultPageButtons = 'detailed'; @@ -369,7 +367,7 @@ export class EnvService { ); this._storage.get("show-qr-after-camera-scan").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showQrAfterCameraScan = value; } else { this.showQrAfterCameraScan = 'off'; @@ -378,7 +376,7 @@ export class EnvService { ); this._storage.get("show-qr-after-image-scan").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showQrAfterImageScan = value; } else { this.showQrAfterImageScan = 'off'; @@ -387,7 +385,7 @@ export class EnvService { ); this._storage.get("show-qr-after-create").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showQrAfterCreate = value; } else { this.showQrAfterCreate = 'on'; @@ -396,7 +394,7 @@ export class EnvService { ); this._storage.get("show-qr-after-log-view").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showQrAfterLogView = value; } else { this.showQrAfterLogView = 'on'; @@ -405,7 +403,7 @@ export class EnvService { ); this._storage.get("show-qr-after-bookmark-view").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showQrAfterBookmarkView = value; } else { this.showQrAfterBookmarkView = 'on'; @@ -414,7 +412,7 @@ export class EnvService { ); this._storage.get("showSearchButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showSearchButton = value; } else { this.showSearchButton = 'on'; @@ -423,7 +421,7 @@ export class EnvService { ); this._storage.get("showCopyButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showCopyButton = value; } else { this.showCopyButton = 'on'; @@ -432,7 +430,7 @@ export class EnvService { ); this._storage.get("showBase64Button").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showBase64Button = value; } else { this.showBase64Button = 'on'; @@ -441,7 +439,7 @@ export class EnvService { ); this._storage.get("showEnlargeButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showEnlargeButton = value; } else { this.showEnlargeButton = 'on'; @@ -450,7 +448,7 @@ export class EnvService { ); this._storage.get("showBookmarkButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showBookmarkButton = value; } else { this.showBookmarkButton = 'on'; @@ -459,7 +457,7 @@ export class EnvService { ); this._storage.get("showOpenUrlButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showOpenUrlButton = value; } else { this.showOpenUrlButton = 'on'; @@ -468,7 +466,7 @@ export class EnvService { ); this._storage.get("showBrowseButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showBrowseButton = value; } else { this.showBrowseButton = 'on'; @@ -477,7 +475,7 @@ export class EnvService { ); this._storage.get("showAddContactButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showAddContactButton = value; } else { this.showAddContactButton = 'on'; @@ -486,7 +484,7 @@ export class EnvService { ); this._storage.get("showCallButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showCallButton = value; } else { this.showCallButton = 'on'; @@ -495,7 +493,7 @@ export class EnvService { ); this._storage.get("showSendMessageButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showSendMessageButton = value; } else { this.showSendMessageButton = 'on'; @@ -504,7 +502,7 @@ export class EnvService { ); this._storage.get("showSendEmailButton").then( value => { - if (value !== null && value !== undefined) { + if (value != null) { this.showSendEmailButton = value; } else { this.showSendEmailButton = 'on'; @@ -1018,7 +1016,6 @@ export class EnvService { this.screenOrientation.unlock(); return; case 'portrait': - // this.screenOrientation.unlock(); await this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT) .catch(err => { if (this.isDebugging) { @@ -1027,7 +1024,6 @@ export class EnvService { }); return; case 'landscape': - // this.screenOrientation.unlock(); await this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.LANDSCAPE) .catch(err => { if (this.isDebugging) { From 570de3a8dff0a98afa1eb68ad59a29010bb62652 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sat, 15 Oct 2022 12:29:00 +0800 Subject: [PATCH 08/19] fix: make save scan records safer --- src/app/pages/result/result.page.ts | 2 +- src/app/services/env.service.ts | 95 ++++++++++++++++++++++++++--- 2 files changed, 86 insertions(+), 11 deletions(-) diff --git a/src/app/pages/result/result.page.ts b/src/app/pages/result/result.page.ts index da6e750..dc8f9e2 100644 --- a/src/app/pages/result/result.page.ts +++ b/src/app/pages/result/result.page.ts @@ -92,7 +92,7 @@ export class ResultPage { await this.enlarge(); } } - if (this.env.scanRecordLogging == 'on') { + if (this.env.scanRecordLogging == 'on' && this.qrCodeContent != null && this.qrCodeContent != "") { await this.env.saveScanRecord(this.qrCodeContent); } if (this.env.bookmarks.find(x => x.text == this.qrCodeContent)) { diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index a4db9ec..a2b8c72 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -785,6 +785,11 @@ export class EnvService { if (this.recordSource == 'scan') { record.barcodeType = this._scannedDataFormat; } + } else { + record.source = "view"; + } + if (this._scanRecords == null) { + this._scanRecords = []; } this._scanRecords.unshift(record); if (this.recordsLimit != -1) { @@ -792,7 +797,14 @@ export class EnvService { this._scanRecords = this._scanRecords.slice(0, this.recordsLimit); } } - await this.storageSet(environment.storageScanRecordKey, JSON.stringify(this._scanRecords)); + try { + const stringified = JSON.stringify(this._scanRecords); + await this.storageSet(environment.storageScanRecordKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); + } + } } async saveRestoredScanRecords(records: ScanRecord[]): Promise { @@ -810,7 +822,14 @@ export class EnvService { this._scanRecords.sort((r1, r2) => { return r2.createdAt.getTime() - r1.createdAt.getTime(); }); - await this.storageSet(environment.storageScanRecordKey, JSON.stringify(this._scanRecords)); + try { + const stringified = JSON.stringify(this._scanRecords); + await this.storageSet(environment.storageScanRecordKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); + } + } } async saveRestoredBookmarks(bookmarks: Bookmark[]): Promise { @@ -831,7 +850,14 @@ export class EnvService { this._bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); - await this.storageSet(environment.storageBookmarkKey, JSON.stringify(this._bookmarks)); + try { + const stringified = JSON.stringify(this._bookmarks); + await this.storageSet(environment.storageBookmarkKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); + } + } } async undoScanRecordDeletion(record: ScanRecord): Promise { @@ -839,20 +865,41 @@ export class EnvService { this._scanRecords.sort((r1, r2) => { return r2.createdAt.getTime() - r1.createdAt.getTime(); }); - await this.storageSet(environment.storageScanRecordKey, JSON.stringify(this._scanRecords)); + try { + const stringified = JSON.stringify(this._scanRecords); + await this.storageSet(environment.storageScanRecordKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); + } + } } async deleteScanRecord(recordId: string): Promise { const index = this._scanRecords.findIndex(r => r.id === recordId); if (index !== -1) { this._scanRecords.splice(index, 1); - await this.storageSet(environment.storageScanRecordKey, JSON.stringify(this._scanRecords)); + try { + const stringified = JSON.stringify(this._scanRecords); + await this.storageSet(environment.storageScanRecordKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); + } + } } } async deleteAllScanRecords(): Promise { this._scanRecords = []; - await this.storageSet(environment.storageScanRecordKey, JSON.stringify(this._scanRecords)); + try { + const stringified = JSON.stringify(this._scanRecords); + await this.storageSet(environment.storageScanRecordKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); + } + } } get bookmarks(): Bookmark[] { @@ -872,7 +919,14 @@ export class EnvService { this._bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); - await this.storageSet(environment.storageBookmarkKey, JSON.stringify(this._bookmarks)); + try { + const stringified = JSON.stringify(this._bookmarks); + await this.storageSet(environment.storageBookmarkKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); + } + } return bookmark; } else { return null; @@ -884,20 +938,41 @@ export class EnvService { this._bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); - await this.storageSet(environment.storageBookmarkKey, JSON.stringify(this._bookmarks)); + try { + const stringified = JSON.stringify(this._bookmarks); + await this.storageSet(environment.storageBookmarkKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); + } + } } async deleteBookmark(text: string): Promise { const index = this._bookmarks.findIndex(t => t.text === text); if (index !== -1) { this._bookmarks.splice(index, 1); - await this.storageSet(environment.storageBookmarkKey, JSON.stringify(this._bookmarks)); + try { + const stringified = JSON.stringify(this._bookmarks); + await this.storageSet(environment.storageBookmarkKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); + } + } } } async deleteAllBookmarks(): Promise { this._bookmarks = []; - await this.storageSet(environment.storageBookmarkKey, JSON.stringify(this._bookmarks)); + try { + const stringified = JSON.stringify(this._bookmarks); + await this.storageSet(environment.storageBookmarkKey, stringified); + } catch (e) { + if (this.isDebugging) { + this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); + } + } } toggleLanguageChange() { From 438768d7b717ea0a6bec19d41954816c1c136bf0 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sat, 15 Oct 2022 12:51:19 +0800 Subject: [PATCH 09/19] feat: support Ecosia as search engine --- src/app/pages/result/result.page.html | 4 ++ src/app/pages/result/result.page.ts | 3 ++ .../setting-result-buttons.page.html | 3 ++ .../setting-result/setting-result.page.html | 3 ++ .../setting-search-engine.page.html | 42 ++++++++++++------- src/app/services/env.service.ts | 5 ++- src/assets/i18n/de.json | 1 + src/assets/i18n/en.json | 1 + src/assets/i18n/fr.json | 1 + src/assets/i18n/it.json | 1 + src/assets/i18n/zh-CN.json | 1 + src/assets/i18n/zh-HK.json | 1 + src/assets/icon/ecosia.svg | 4 ++ 13 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 src/assets/icon/ecosia.svg diff --git a/src/app/pages/result/result.page.html b/src/app/pages/result/result.page.html index 8194045..1c2c650 100644 --- a/src/app/pages/result/result.page.html +++ b/src/app/pages/result/result.page.html @@ -178,6 +178,8 @@ + + + + {{ 'SEARCH' | translate}} + +

diff --git a/src/app/pages/setting-result/setting-result.page.html b/src/app/pages/setting-result/setting-result.page.html index 99d447e..60d73cd 100644 --- a/src/app/pages/setting-result/setting-result.page.html +++ b/src/app/pages/setting-result/setting-result.page.html @@ -73,6 +73,9 @@ + +

diff --git a/src/app/pages/setting-search-engine/setting-search-engine.page.html b/src/app/pages/setting-search-engine/setting-search-engine.page.html index d33aee9..fa96a21 100644 --- a/src/app/pages/setting-search-engine/setting-search-engine.page.html +++ b/src/app/pages/setting-search-engine/setting-search-engine.page.html @@ -31,12 +31,12 @@

- + - +

@@ -44,12 +44,12 @@

- +
- + +

@@ -57,12 +57,12 @@

- +
- + +

@@ -70,12 +70,12 @@

- +
- + +

@@ -83,10 +83,22 @@

- + + +
+ + + + +

+ + {{ 'ECOSIA' | translate }} + +

+
+
- + \ No newline at end of file diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index a2b8c72..63bd509 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -45,7 +45,7 @@ export class EnvService { public vibration: 'on' | 'on-haptic' | 'on-scanned' | 'off' = 'on'; public orientation: 'default' | 'portrait' | 'landscape' = 'default'; public notShowUpdateNotes: boolean = false; - public searchEngine: 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' = 'google'; + public searchEngine: 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' | 'ecosia' = 'google'; public resultPageButtons: 'detailed' | 'icon-only' = 'detailed'; public showQrAfterCameraScan: 'on' | 'off' = 'off'; public showQrAfterImageScan: 'on' | 'off' = 'off'; @@ -67,11 +67,14 @@ export class EnvService { public autoExitAppMin: 1 | 3 | 5 | -1 = -1; public readonly APP_FOLDER_NAME: string = 'SimpleQR'; + public readonly GOOGLE_SEARCH_URL: string = "https://www.google.com/search?q="; public readonly BING_SEARCH_URL: string = "https://www.bing.com/search?q="; public readonly YAHOO_SEARCH_URL: string = "https://search.yahoo.com/search?p="; public readonly DUCK_DUCK_GO_SEARCH_URL: string = "https://duckduckgo.com/?q="; public readonly YANDEX_SEARCH_URL: string = "https://yandex.com/search/?text="; + public readonly ECOSIA_SEARCH_URL: string = "https://www.ecosia.org/search?method=index&q="; + public readonly GITHUB_REPO_URL: string = "https://github.com/tomfong/simple-qr"; public readonly GOOGLE_PLAY_URL: string = "https://play.google.com/store/apps/details?id=com.tomfong.simpleqr"; public readonly APP_STORE_URL: string = "https://apps.apple.com/us/app/simple-qr-by-tom-fong/id1621121553"; diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index e892864..af5337f 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -65,6 +65,7 @@ "DETAILED": "Detailliert", "DONE": "Erledigt", "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", "EDIT": "Bearbeiten", "EMAIL_ADDRESS": "Email Adresse", "EMAIL_BODY": "Email Stelle", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 584fda3..a0fb795 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -65,6 +65,7 @@ "DETAILED": "Detailed", "DONE": "Done", "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", "EDIT": "Edit", "EMAIL_ADDRESS": "Email Address", "EMAIL_BODY": "Email Body", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index e6b5f4e..4967437 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -65,6 +65,7 @@ "DETAILED": "Détaillé", "DONE": "Fini", "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", "EDIT": "Modifier", "EMAIL_ADDRESS": "Adresse e-mail", "EMAIL_BODY": "Corps de l'e-mail", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 23d23e4..4cf8d52 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -65,6 +65,7 @@ "DETAILED": "Dettagli", "DONE": "Completato", "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", "EDIT": "Modifica", "EMAIL_ADDRESS": "Email", "EMAIL_BODY": "Corpo della mail", diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index 554409e..ce92501 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -65,6 +65,7 @@ "DETAILED": "详细说明", "DONE": "完成", "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", "EDIT": "修改", "EMAIL_ADDRESS": "电邮地址", "EMAIL_BODY": "电邮内容", diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index 1c1fffe..c0313cd 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -65,6 +65,7 @@ "DETAILED": "詳細說明", "DONE": "完成", "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", "EDIT": "修改", "EMAIL_ADDRESS": "電郵地址", "EMAIL_BODY": "電郵內容", diff --git a/src/assets/icon/ecosia.svg b/src/assets/icon/ecosia.svg new file mode 100644 index 0000000..d76bc36 --- /dev/null +++ b/src/assets/icon/ecosia.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 63ea056c2a32635200cae73484995d102af13bcb Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sun, 16 Oct 2022 14:05:25 +0800 Subject: [PATCH 10/19] chore: change to use @capacitor/preferences as storage --- android/app/capacitor.build.gradle | 1 + .../src/main/assets/capacitor.plugins.json | 4 + android/capacitor.settings.gradle | 3 + ios/App/Podfile | 1 + package-lock.json | 15 + package.json | 1 + src/app/modals/qr-code/qr-code.page.ts | 3 +- src/app/pages/about/about.page.ts | 3 +- src/app/pages/generate/generate.page.ts | 4 +- src/app/pages/history/history.page.ts | 6 +- .../pages/import-image/import-image.page.ts | 4 +- src/app/pages/result/result.page.html | 2 +- src/app/pages/result/result.page.ts | 9 +- src/app/pages/scan/scan.page.ts | 4 +- .../setting-auto-brightness.page.ts | 5 +- .../setting-auto-exit.page.ts | 3 +- .../setting-auto-qr/setting-auto-qr.page.ts | 11 +- .../pages/setting-color/setting-color.page.ts | 3 +- .../pages/setting-debug/setting-debug.page.ts | 3 +- .../setting-language/setting-language.page.ts | 3 +- .../setting-orientation.page.ts | 3 +- src/app/pages/setting-qr/setting-qr.page.ts | 17 +- .../setting-record/setting-record.page.ts | 9 +- .../setting-result-buttons.page.ts | 25 +- .../setting-search-engine.page.ts | 3 +- .../setting-start-page.page.ts | 5 +- .../setting-vibration.page.ts | 3 +- src/app/pages/tabs/tabs.page.ts | 27 +- src/app/services/env.service.ts | 1321 ++++++++++++----- src/assets/i18n/de.json | 1 + src/assets/i18n/en.json | 1 + src/assets/i18n/fr.json | 1 + src/assets/i18n/it.json | 1 + src/assets/i18n/zh-CN.json | 1 + src/assets/i18n/zh-HK.json | 1 + 35 files changed, 1073 insertions(+), 434 deletions(-) diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle index 88b4aa4..3670260 100644 --- a/android/app/capacitor.build.gradle +++ b/android/app/capacitor.build.gradle @@ -19,6 +19,7 @@ dependencies { implementation project(':capacitor-filesystem') implementation project(':capacitor-haptics') implementation project(':capacitor-keyboard') + implementation project(':capacitor-preferences') implementation project(':capacitor-splash-screen') implementation project(':capacitor-status-bar') implementation project(':capacitor-toast') diff --git a/android/app/src/main/assets/capacitor.plugins.json b/android/app/src/main/assets/capacitor.plugins.json index 3049e0b..abeb088 100644 --- a/android/app/src/main/assets/capacitor.plugins.json +++ b/android/app/src/main/assets/capacitor.plugins.json @@ -39,6 +39,10 @@ "pkg": "@capacitor/keyboard", "classpath": "com.capacitorjs.plugins.keyboard.KeyboardPlugin" }, + { + "pkg": "@capacitor/preferences", + "classpath": "com.capacitorjs.plugins.preferences.PreferencesPlugin" + }, { "pkg": "@capacitor/splash-screen", "classpath": "com.capacitorjs.plugins.splashscreen.SplashScreenPlugin" diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle index 21c8ce0..d2b39a1 100644 --- a/android/capacitor.settings.gradle +++ b/android/capacitor.settings.gradle @@ -32,6 +32,9 @@ project(':capacitor-haptics').projectDir = new File('../node_modules/@capacitor/ include ':capacitor-keyboard' project(':capacitor-keyboard').projectDir = new File('../node_modules/@capacitor/keyboard/android') +include ':capacitor-preferences' +project(':capacitor-preferences').projectDir = new File('../node_modules/@capacitor/preferences/android') + include ':capacitor-splash-screen' project(':capacitor-splash-screen').projectDir = new File('../node_modules/@capacitor/splash-screen/android') diff --git a/ios/App/Podfile b/ios/App/Podfile index 4c869cd..0ab33c8 100644 --- a/ios/App/Podfile +++ b/ios/App/Podfile @@ -21,6 +21,7 @@ def capacitor_pods pod 'CapacitorFilesystem', :path => '../../node_modules/@capacitor/filesystem' pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics' pod 'CapacitorKeyboard', :path => '../../node_modules/@capacitor/keyboard' + pod 'CapacitorPreferences', :path => '../../node_modules/@capacitor/preferences' pod 'CapacitorSplashScreen', :path => '../../node_modules/@capacitor/splash-screen' pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar' pod 'CapacitorToast', :path => '../../node_modules/@capacitor/toast' diff --git a/package-lock.json b/package-lock.json index 07dcb3b..67329fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "@capacitor/haptics": "^4.0.1", "@capacitor/ios": "^4.3.0", "@capacitor/keyboard": "^4.0.1", + "@capacitor/preferences": "^4.0.1", "@capacitor/splash-screen": "^4.1.0", "@capacitor/status-bar": "^4.0.1", "@capacitor/toast": "^4.0.1", @@ -2490,6 +2491,14 @@ "@capacitor/core": "^4.0.0" } }, + "node_modules/@capacitor/preferences": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-4.0.1.tgz", + "integrity": "sha512-FffJjKS4XcodUj/rtFtWizQ9q/oYDSn5opZ+JYwj/EkjiMWMhY/Pk9lN3vwQfp+VJrTt3hjr+bwKXjhTbYBqKw==", + "peerDependencies": { + "@capacitor/core": "^4.0.0" + } + }, "node_modules/@capacitor/splash-screen": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-4.1.0.tgz", @@ -16346,6 +16355,12 @@ "integrity": "sha512-JZVci2v9jAKH0sIoNNZzmw/cWGXWf+KneLt0yDr/6YSs/2/tfuH10yOrUOhgrKFkR+fFj/rddTClQXUQ8Rqcrg==", "requires": {} }, + "@capacitor/preferences": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-4.0.1.tgz", + "integrity": "sha512-FffJjKS4XcodUj/rtFtWizQ9q/oYDSn5opZ+JYwj/EkjiMWMhY/Pk9lN3vwQfp+VJrTt3hjr+bwKXjhTbYBqKw==", + "requires": {} + }, "@capacitor/splash-screen": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-4.1.0.tgz", diff --git a/package.json b/package.json index 01a8854..ddda0a0 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@capacitor/haptics": "^4.0.1", "@capacitor/ios": "^4.3.0", "@capacitor/keyboard": "^4.0.1", + "@capacitor/preferences": "^4.0.1", "@capacitor/splash-screen": "^4.1.0", "@capacitor/status-bar": "^4.0.1", "@capacitor/toast": "^4.0.1", diff --git a/src/app/modals/qr-code/qr-code.page.ts b/src/app/modals/qr-code/qr-code.page.ts index 420c0ef..8696fdf 100644 --- a/src/app/modals/qr-code/qr-code.page.ts +++ b/src/app/modals/qr-code/qr-code.page.ts @@ -10,6 +10,7 @@ import { NgxQrcodeElementTypes, NgxQrcodeErrorCorrectionLevels, QrcodeComponent import { EnvService } from 'src/app/services/env.service'; import { ScreenBrightness } from '@capacitor-community/screen-brightness'; import { rgbToHex } from 'src/app/utils/helpers'; +import { Preferences } from '@capacitor/preferences'; @Component({ selector: 'app-qr-code', @@ -149,7 +150,7 @@ export class QrCodePage { async onErrorCorrectionLevelChange() { this.setErrorCorrectionLevel(); - await this.env.storageSet("error-correction-level", this.env.errorCorrectionLevel); + await Preferences.set({ key: this.env.KEY_ERROR_CORRECTION_LEVEL, value: this.env.errorCorrectionLevel }); if (this.qrcodeElement != null) { this.qrcodeElement.errorCorrectionLevel = this.errorCorrectionLevel; } else { diff --git a/src/app/pages/about/about.page.ts b/src/app/pages/about/about.page.ts index bfd0f83..43afd39 100644 --- a/src/app/pages/about/about.page.ts +++ b/src/app/pages/about/about.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { Toast } from '@capacitor/toast'; import { AlertController, Platform } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; @@ -89,7 +90,7 @@ export class AboutPage { if (this.env.debugMode != 'on') { if (this.tapAppVersionTimes >= 5) { this.env.debugMode = 'on'; - await this.env.storageSet("debug-mode-on", 'on'); + await Preferences.set({ key: this.env.KEY_DEBUG_MODE, value: 'on' }); await Toast.show({ text: this.translate.instant("MSG.DEBUG_MODE_ON"), duration: "short", diff --git a/src/app/pages/generate/generate.page.ts b/src/app/pages/generate/generate.page.ts index 5344c9a..4db6930 100644 --- a/src/app/pages/generate/generate.page.ts +++ b/src/app/pages/generate/generate.page.ts @@ -295,8 +295,8 @@ export class GeneratePage { } async processQrCode(loading: HTMLIonLoadingElement): Promise { - this.env.result = this.qrCodeContent; - this.env.resultFormat = ""; + this.env.resultContent = this.qrCodeContent; + this.env.resultContentFormat = ""; this.qrCodeContent = ''; this.env.recordSource = "create"; this.env.detailedRecordSource = "create"; diff --git a/src/app/pages/history/history.page.ts b/src/app/pages/history/history.page.ts index a6737fe..5ed56ca 100644 --- a/src/app/pages/history/history.page.ts +++ b/src/app/pages/history/history.page.ts @@ -198,7 +198,7 @@ export class HistoryPage { case "RSS_EXPANDED": return this.translate.instant("BARCODE_TYPE.RSS").trim(); default: - return this.env.resultFormat; + return this.env.resultContentFormat; } } @@ -210,8 +210,8 @@ export class HistoryPage { this.changeDetectorRef.detectChanges(); this.changeDetectorRef.reattach(); const loading = await this.presentLoading(this.translate.instant('PLEASE_WAIT')); - this.env.result = data; - this.env.resultFormat = ""; + this.env.resultContent = data; + this.env.resultContentFormat = ""; this.env.recordSource = "view"; this.env.detailedRecordSource = source; this.env.viewResultFrom = "/tabs/history"; diff --git a/src/app/pages/import-image/import-image.page.ts b/src/app/pages/import-image/import-image.page.ts index a44b0a9..7d91b95 100644 --- a/src/app/pages/import-image/import-image.page.ts +++ b/src/app/pages/import-image/import-image.page.ts @@ -101,8 +101,8 @@ export class ImportImagePage { } async processQrCode(scannedData: string, loading: HTMLIonLoadingElement): Promise { - this.env.result = scannedData; - this.env.resultFormat = "QR_CODE"; + this.env.resultContent = scannedData; + this.env.resultContentFormat = "QR_CODE"; this.env.recordSource = "scan"; this.env.detailedRecordSource = "scan-image"; this.env.viewResultFrom = "/tabs/import-image"; diff --git a/src/app/pages/result/result.page.html b/src/app/pages/result/result.page.html index 1c2c650..28a2609 100644 --- a/src/app/pages/result/result.page.html +++ b/src/app/pages/result/result.page.html @@ -28,7 +28,7 @@ + [ngTemplateOutletContext]="{ label: barcodeFormat + ('CONTENT' | translate), content: qrCodeContent, hint: env.resultContentFormat }"> { const tLine = line.trim(); - console.log(tLine); if (tLine.toUpperCase().substr(0, fullNameId1.length) === fullNameId1) { this.vCardContact.fullName = tLine.substr(fullNameId1.length); } else if (tLine.toUpperCase().substr(0, fullNameId2.length) === fullNameId2) { @@ -860,7 +859,7 @@ export class ResultPage { } get barcodeFormat(): string { - switch (this.env.resultFormat) { + switch (this.env.resultContentFormat) { case "UPC_A": return this.translate.instant("BARCODE_TYPE.UPC"); case "UPC_E": @@ -900,7 +899,7 @@ export class ResultPage { case "RSS_EXPANDED": return this.translate.instant("BARCODE_TYPE.RSS"); default: - return this.env.resultFormat; + return this.env.resultContentFormat; } } diff --git a/src/app/pages/scan/scan.page.ts b/src/app/pages/scan/scan.page.ts index eb89722..427ac28 100644 --- a/src/app/pages/scan/scan.page.ts +++ b/src/app/pages/scan/scan.page.ts @@ -137,8 +137,8 @@ export class ScanPage { } async processQrCode(scannedData: string, format: string, loading: HTMLIonLoadingElement): Promise { - this.env.result = scannedData; - this.env.resultFormat = format; + this.env.resultContent = scannedData; + this.env.resultContentFormat = format; this.env.recordSource = "scan"; this.env.detailedRecordSource = "scan-camera"; this.env.viewResultFrom = "/tabs/scan"; diff --git a/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.ts b/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.ts index afd69e5..790698f 100644 --- a/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.ts +++ b/src/app/pages/setting-auto-brightness/setting-auto-brightness.page.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; import { Toast } from '@capacitor/toast'; import { EnvService } from 'src/app/services/env.service'; @@ -15,12 +16,12 @@ export class SettingAutoBrightnessPage { ) { } async saveAutoMaxBrightness() { - await this.env.storageSet("auto-max-brightness", this.env.autoMaxBrightness); + await Preferences.set({ key: this.env.KEY_AUTO_MAX_BRIGHTNESS, value: this.env.autoMaxBrightness }); } async onAutoMaxBrightnessChange(ev: any) { this.env.autoMaxBrightness = ev ? 'on' : 'off'; - await this.env.storageSet("auto-max-brightness", this.env.autoMaxBrightness); + await Preferences.set({ key: this.env.KEY_AUTO_MAX_BRIGHTNESS, value: this.env.autoMaxBrightness }); await this.tapHaptic(); } diff --git a/src/app/pages/setting-auto-exit/setting-auto-exit.page.ts b/src/app/pages/setting-auto-exit/setting-auto-exit.page.ts index ae00a25..5b8bc2a 100644 --- a/src/app/pages/setting-auto-exit/setting-auto-exit.page.ts +++ b/src/app/pages/setting-auto-exit/setting-auto-exit.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { EnvService } from 'src/app/services/env.service'; @Component({ @@ -13,6 +14,6 @@ export class SettingAutoExitPage{ ) { } async saveAutoExitAppMin() { - await this.env.storageSet("autoExitAppMin", this.env.autoExitAppMin); + await Preferences.set({ key: this.env.KEY_AUTO_EXIT_MIN, value: JSON.stringify(this.env.autoExitAppMin) }); } } diff --git a/src/app/pages/setting-auto-qr/setting-auto-qr.page.ts b/src/app/pages/setting-auto-qr/setting-auto-qr.page.ts index dfe347b..7303820 100644 --- a/src/app/pages/setting-auto-qr/setting-auto-qr.page.ts +++ b/src/app/pages/setting-auto-qr/setting-auto-qr.page.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; import { Toast } from '@capacitor/toast'; import { EnvService } from 'src/app/services/env.service'; @@ -16,31 +17,31 @@ export class SettingAutoQrPage { async onShowQrAfterCameraScanChange(ev: any) { this.env.showQrAfterCameraScan = ev ? 'on' : 'off'; - await this.env.storageSet("show-qr-after-camera-scan", this.env.showQrAfterCameraScan); + await Preferences.set({ key: this.env.KEY_SHOW_QR_AFTER_CAMERA_SCAN, value: this.env.showQrAfterCameraScan }); await this.tapHaptic(); } async onShowQrAfterImageScanChange(ev: any) { this.env.showQrAfterImageScan = ev ? 'on' : 'off'; - await this.env.storageSet("show-qr-after-image-scan", this.env.showQrAfterImageScan); + await Preferences.set({ key: this.env.KEY_SHOW_QR_AFTER_IMAGE_SCAN, value: this.env.showQrAfterImageScan }); await this.tapHaptic(); } async onShowQrAfterCreateChange(ev: any) { this.env.showQrAfterCreate = ev ? 'on' : 'off'; - await this.env.storageSet("show-qr-after-create", this.env.showQrAfterCreate); + await Preferences.set({ key: this.env.KEY_SHOW_QR_AFTER_CREATE, value: this.env.showQrAfterCreate }); await this.tapHaptic(); } async onShowQrAfterLogViewChange(ev: any) { this.env.showQrAfterLogView = ev ? 'on' : 'off'; - await this.env.storageSet("show-qr-after-log-view", this.env.showQrAfterLogView); + await Preferences.set({ key: this.env.KEY_SHOW_QR_AFTER_LOG_VIEW, value: this.env.showQrAfterLogView }); await this.tapHaptic(); } async onShowQrAfterBookmarkViewChange(ev: any) { this.env.showQrAfterBookmarkView = ev ? 'on' : 'off'; - await this.env.storageSet("show-qr-after-bookmark-view", this.env.showQrAfterBookmarkView); + await Preferences.set({ key: this.env.KEY_SHOW_QR_AFTER_BOOKMARK_VIEW, value: this.env.showQrAfterBookmarkView }); await this.tapHaptic(); } diff --git a/src/app/pages/setting-color/setting-color.page.ts b/src/app/pages/setting-color/setting-color.page.ts index a31cf72..277109b 100644 --- a/src/app/pages/setting-color/setting-color.page.ts +++ b/src/app/pages/setting-color/setting-color.page.ts @@ -1,5 +1,6 @@ import { OverlayContainer } from '@angular/cdk/overlay'; import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; @@ -18,7 +19,7 @@ export class SettingColorPage { async saveColorTheme() { await this.env.toggleColorTheme(); - await this.env.storageSet("color", this.env.selectedColorTheme); + await Preferences.set({ key: this.env.KEY_COLOR, value: this.env.selectedColorTheme }); } } diff --git a/src/app/pages/setting-debug/setting-debug.page.ts b/src/app/pages/setting-debug/setting-debug.page.ts index 9b21836..96e8118 100644 --- a/src/app/pages/setting-debug/setting-debug.page.ts +++ b/src/app/pages/setting-debug/setting-debug.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; @@ -15,7 +16,7 @@ export class SettingDebugPage { ) { } async saveDebugMode() { - await this.env.storageSet("debug-mode-on", this.env.debugMode); + await Preferences.set({ key: this.env.KEY_DEBUG_MODE, value: this.env.debugMode }); } } diff --git a/src/app/pages/setting-language/setting-language.page.ts b/src/app/pages/setting-language/setting-language.page.ts index f82e486..b6b0507 100644 --- a/src/app/pages/setting-language/setting-language.page.ts +++ b/src/app/pages/setting-language/setting-language.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; @@ -16,6 +17,6 @@ export class SettingLanguagePage { async saveLanguage() { this.env.toggleLanguageChange(); - await this.env.storageSet("language", this.env.selectedLanguage); + await Preferences.set({ key: this.env.KEY_LANGUAGE, value: this.env.selectedLanguage }); } } diff --git a/src/app/pages/setting-orientation/setting-orientation.page.ts b/src/app/pages/setting-orientation/setting-orientation.page.ts index 1c16752..4d357d5 100644 --- a/src/app/pages/setting-orientation/setting-orientation.page.ts +++ b/src/app/pages/setting-orientation/setting-orientation.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { EnvService } from 'src/app/services/env.service'; @Component({ @@ -14,6 +15,6 @@ export class SettingOrientationPage { async saveOrientation() { await this.env.toggleOrientationChange(); - await this.env.storageSet("orientation", this.env.orientation); + await Preferences.set({ key: this.env.KEY_ORIENTATION, value: this.env.orientation }); } } diff --git a/src/app/pages/setting-qr/setting-qr.page.ts b/src/app/pages/setting-qr/setting-qr.page.ts index 3c2de2b..01a921b 100644 --- a/src/app/pages/setting-qr/setting-qr.page.ts +++ b/src/app/pages/setting-qr/setting-qr.page.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; import { Toast } from '@capacitor/toast'; import { AlertController, Platform } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; @@ -68,35 +69,35 @@ export class SettingQrPage { async saveErrorCorrectionLevel() { this.setErrorCorrectionLevel(); - await this.env.storageSet("error-correction-level", this.env.errorCorrectionLevel); + await Preferences.set({ key: this.env.KEY_ERROR_CORRECTION_LEVEL, value: this.env.errorCorrectionLevel }); } async saveQrCodeDarkR() { - await this.env.storageSet("qrCodeDarkR", this.env.qrCodeDarkR); + await Preferences.set({ key: this.env.KEY_QR_CODE_DARK_R, value: JSON.stringify(this.env.qrCodeDarkR) }); } async saveQrCodeDarkG() { - await this.env.storageSet("qrCodeDarkG", this.env.qrCodeDarkG); + await Preferences.set({ key: this.env.KEY_QR_CODE_DARK_G, value: JSON.stringify(this.env.qrCodeDarkG) }); } async saveQrCodeDarkB() { - await this.env.storageSet("qrCodeDarkB", this.env.qrCodeDarkB); + await Preferences.set({ key: this.env.KEY_QR_CODE_DARK_B, value: JSON.stringify(this.env.qrCodeDarkB) }); } async saveQrCodeLightR() { - await this.env.storageSet("qrCodeLightR", this.env.qrCodeLightR); + await Preferences.set({ key: this.env.KEY_QR_CODE_LIGHT_R, value: JSON.stringify(this.env.qrCodeLightR) }); } async saveQrCodeLightG() { - await this.env.storageSet("qrCodeLightG", this.env.qrCodeLightG); + await Preferences.set({ key: this.env.KEY_QR_CODE_LIGHT_G, value: JSON.stringify(this.env.qrCodeLightG) }); } async saveQrCodeLightB() { - await this.env.storageSet("qrCodeLightB", this.env.qrCodeLightB); + await Preferences.set({ key: this.env.KEY_QR_CODE_LIGHT_B, value: JSON.stringify(this.env.qrCodeLightB) }); } async saveQrCodeMargin() { - await this.env.storageSet("qrCodeMargin", this.env.qrCodeMargin); + await Preferences.set({ key: this.env.KEY_QR_CODE_MARGIN, value: JSON.stringify(this.env.qrCodeMargin) }); } async resetDefault() { diff --git a/src/app/pages/setting-record/setting-record.page.ts b/src/app/pages/setting-record/setting-record.page.ts index 23a0e83..607de42 100644 --- a/src/app/pages/setting-record/setting-record.page.ts +++ b/src/app/pages/setting-record/setting-record.page.ts @@ -12,6 +12,7 @@ import { ScanRecord } from 'src/app/models/scan-record'; import { Bookmark } from 'src/app/models/bookmark'; import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; @Component({ selector: 'app-setting-record', @@ -43,17 +44,17 @@ export class SettingRecordPage { } async saveHistoryPageStartSegment() { - await this.env.storageSet("history-page-start-segment", this.env.historyPageStartSegment); + await Preferences.set({ key: this.env.KEY_HISTORY_PAGE_START_SEGMENT, value: this.env.historyPageStartSegment }); } async onScanRecordLoggingChange(ev: any) { this.env.scanRecordLogging = ev ? 'on' : 'off'; - await this.env.storageSet("scan-record-logging", this.env.scanRecordLogging); + await Preferences.set({ key: this.env.KEY_SCAN_RECORD_LOGGING, value: this.env.scanRecordLogging }); await this.tapHaptic(); } async saveRecordsLimit() { - await this.env.storageSet("recordsLimit", this.env.recordsLimit); + await Preferences.set({ key: this.env.KEY_RECORDS_LIMIT, value: JSON.stringify(this.env.recordsLimit) }); if (this.env.recordsLimit != -1 && !this.preventRecordsLimitToast) { this.presentToast(this.translate.instant("MSG.DELETE_OVERFLOWED_RECORDS"), "short", "bottom"); } @@ -61,7 +62,7 @@ export class SettingRecordPage { async onShowNumberOfRecordsChange(ev: any) { this.env.showNumberOfRecords = ev ? 'on' : 'off'; - await this.env.storageSet("showNumberOfRecords", this.env.showNumberOfRecords); + await Preferences.set({ key: this.env.KEY_SHOW_NUMBER_OF_RECORDS, value: this.env.showNumberOfRecords }); await this.tapHaptic(); } diff --git a/src/app/pages/setting-result-buttons/setting-result-buttons.page.ts b/src/app/pages/setting-result-buttons/setting-result-buttons.page.ts index 4cf800b..0c9e5a2 100644 --- a/src/app/pages/setting-result-buttons/setting-result-buttons.page.ts +++ b/src/app/pages/setting-result-buttons/setting-result-buttons.page.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; import { Toast } from '@capacitor/toast'; import { EnvService } from 'src/app/services/env.service'; @@ -15,72 +16,72 @@ export class SettingResultButtonsPage { ) { } async saveResultPageButtons() { - await this.env.storageSet("result-page-buttons", this.env.resultPageButtons); + await Preferences.set({ key: this.env.KEY_RESULT_PAGE_BUTTONS, value: this.env.resultPageButtons }); } async onSearchButtonChange(ev: any) { this.env.showSearchButton = ev ? 'on' : 'off'; - await this.env.storageSet("showSearchButton", this.env.showSearchButton); + await Preferences.set({ key: this.env.KEY_SHOW_SEARCH_BUTTON, value: this.env.showSearchButton }); await this.tapHaptic(); } async onCopyButtonChange(ev: any) { this.env.showCopyButton = ev ? 'on' : 'off'; - await this.env.storageSet("showCopyButton", this.env.showCopyButton); + await Preferences.set({ key: this.env.KEY_SHOW_COPY_BUTTON, value: this.env.showCopyButton }); await this.tapHaptic(); } async onBase64ButtonChange(ev: any) { this.env.showBase64Button = ev ? 'on' : 'off'; - await this.env.storageSet("showBase64Button", this.env.showBase64Button); + await Preferences.set({ key: this.env.KEY_SHOW_BASE64_BUTTON, value: this.env.showBase64Button }); await this.tapHaptic(); } async onEnlargeButtonChange(ev: any) { this.env.showEnlargeButton = ev ? 'on' : 'off'; - await this.env.storageSet("showEnlargeButton", this.env.showEnlargeButton); + await Preferences.set({ key: this.env.KEY_SHOW_ENLARGE_BUTTON, value: this.env.showEnlargeButton }); await this.tapHaptic(); } async onBookmarkButtonChange(ev: any) { this.env.showBookmarkButton = ev ? 'on' : 'off'; - await this.env.storageSet("showBookmarkButton", this.env.showBookmarkButton); + await Preferences.set({ key: this.env.KEY_SHOW_BOOKMARK_BUTTON, value: this.env.showBookmarkButton }); await this.tapHaptic(); } async onOpenUrlButtonChange(ev: any) { this.env.showOpenUrlButton = ev ? 'on' : 'off'; - await this.env.storageSet("showOpenUrlButton", this.env.showOpenUrlButton); + await Preferences.set({ key: this.env.KEY_SHOW_OPEN_URL_BUTTON, value: this.env.showOpenUrlButton }); await this.tapHaptic(); } async onBrowseButtonChange(ev: any) { this.env.showBrowseButton = ev ? 'on' : 'off'; - await this.env.storageSet("showBrowseButton", this.env.showBrowseButton); + await Preferences.set({ key: this.env.KEY_SHOW_BROWSE_BUTTON, value: this.env.showBrowseButton }); await this.tapHaptic(); } async onAddContactButtonChange(ev: any) { this.env.showAddContactButton = ev ? 'on' : 'off'; - await this.env.storageSet("showAddContactButton", this.env.showAddContactButton); + await Preferences.set({ key: this.env.KEY_SHOW_ADD_CONTACT_BUTTON, value: this.env.showAddContactButton }); await this.tapHaptic(); } async onCallButtonChange(ev: any) { this.env.showCallButton = ev ? 'on' : 'off'; - await this.env.storageSet("showCallButton", this.env.showCallButton); + await Preferences.set({ key: this.env.KEY_SHOW_CALL_BUTTON, value: this.env.showCallButton }); await this.tapHaptic(); } async onSendMessageButtonChange(ev: any) { this.env.showSendMessageButton = ev ? 'on' : 'off'; - await this.env.storageSet("showSendMessageButton", this.env.showSendMessageButton); + await Preferences.set({ key: this.env.KEY_SHOW_SEND_MESSAGE_BUTTON, value: this.env.showSendMessageButton }); await this.tapHaptic(); } async onSendEmailButtonChange(ev: any) { this.env.showSendEmailButton = ev ? 'on' : 'off'; - await this.env.storageSet("showSendEmailButton", this.env.showSendEmailButton); + await Preferences.set({ key: this.env.KEY_SHOW_SEND_EMAIL_BUTTON, value: this.env.showSendEmailButton }); await this.tapHaptic(); } diff --git a/src/app/pages/setting-search-engine/setting-search-engine.page.ts b/src/app/pages/setting-search-engine/setting-search-engine.page.ts index fbb66b7..5bd4080 100644 --- a/src/app/pages/setting-search-engine/setting-search-engine.page.ts +++ b/src/app/pages/setting-search-engine/setting-search-engine.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; @@ -15,7 +16,7 @@ export class SettingSearchEnginePage { ) { } async saveSearchEngine() { - await this.env.storageSet("search-engine", this.env.searchEngine); + await Preferences.set({ key: this.env.KEY_SEARCH_ENGINE, value: this.env.searchEngine }); } diff --git a/src/app/pages/setting-start-page/setting-start-page.page.ts b/src/app/pages/setting-start-page/setting-start-page.page.ts index a18ae9e..b37f81d 100644 --- a/src/app/pages/setting-start-page/setting-start-page.page.ts +++ b/src/app/pages/setting-start-page/setting-start-page.page.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; import { Toast } from '@capacitor/toast'; import { EnvService } from 'src/app/services/env.service'; import { fadeIn } from 'src/app/utils/animations'; @@ -17,12 +18,12 @@ export class SettingStartPagePage { ) { } async saveStartPage() { - await this.env.storageSet("start-page", this.env.startPage); + await Preferences.set({ key: this.env.KEY_START_PAGE, value: this.env.startPage }); } async onStartPageHeaderChange(ev: any) { this.env.startPageHeader = ev ? 'on' : 'off'; - await this.env.storageSet("start-page-header", this.env.startPageHeader); + await Preferences.set({ key: this.env.KEY_START_PAGE_HEADER, value: this.env.startPageHeader }); await this.tapHaptic(); } diff --git a/src/app/pages/setting-vibration/setting-vibration.page.ts b/src/app/pages/setting-vibration/setting-vibration.page.ts index a46bfef..0fe8f70 100644 --- a/src/app/pages/setting-vibration/setting-vibration.page.ts +++ b/src/app/pages/setting-vibration/setting-vibration.page.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { Preferences } from '@capacitor/preferences'; import { EnvService } from 'src/app/services/env.service'; @Component({ @@ -13,6 +14,6 @@ export class SettingVibrationPage { ) { } async saveVibration() { - await this.env.storageSet("vibration", this.env.vibration); + await Preferences.set({ key: this.env.KEY_VIBRATION, value: this.env.vibration }); } } diff --git a/src/app/pages/tabs/tabs.page.ts b/src/app/pages/tabs/tabs.page.ts index 03de76f..b42dc74 100644 --- a/src/app/pages/tabs/tabs.page.ts +++ b/src/app/pages/tabs/tabs.page.ts @@ -1,6 +1,7 @@ import { Component } from '@angular/core'; import { Router } from '@angular/router'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; +import { Preferences } from '@capacitor/preferences'; import { SplashScreen } from '@capacitor/splash-screen'; import { Toast } from '@capacitor/toast'; import { AlertController, Platform } from '@ionic/angular'; @@ -62,29 +63,35 @@ export class TabsPage { async ionViewDidEnter() { if (this.env.firstAppLoad) { this.env.firstAppLoad = false; - await this.router.navigate([this.env.startPage], { replaceUrl: true }); - await this.loadPatchNote(); + this.env.initObservable.subscribe(async value => { + console.log(`tabs.page.ts - ionViewDidEnter() - initObservable value: ${value}`) + if (value) { + console.log(`tabs.page.ts - ionViewDidEnter() - env.startPage: ${this.env.startPage}`) + await this.router.navigate([this.env.startPage], { replaceUrl: true }); + await this.loadPatchNote(); + } + }); } } async loadPatchNote() { - const storageKey = this.platform.is('ios') ? this.env.IOS_PATCH_NOTE_STORAGE_KEY : this.env.AN_PATCH_NOTE_STORAGE_KEY; - await this.env.storageGet(storageKey).then( - async value => { - if (value != null) { - this.env.notShowUpdateNotes = (value === 'yes' ? true : false); + const storageKey = this.platform.is('ios') ? this.env.KEY_IOS_NOT_SHOW_UPDATE_NOTES : this.env.KEY_ANDROID_NOT_SHOW_UPDATE_NOTES; + await Preferences.get({ key: storageKey }).then( + async result => { + if (result.value != null) { + this.env.notShowUpdateNotes = result.value == 'yes'; } else { this.env.notShowUpdateNotes = false; } - await this.env.storageSet(storageKey, 'yes'); - if (this.env.notShowUpdateNotes === false) { + await Preferences.set({ key: storageKey, value: 'yes' }); + if (!this.env.notShowUpdateNotes) { this.env.notShowUpdateNotes = true; await this.showUpdateNotes(); const versionWording = this.translate.instant("VERSION_VERSION") as string; await this.presentToast(versionWording.replace("{version}", this.env.appVersionNumber), "short", 'bottom'); } } - ); + ) } async showUpdateNotes() { diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index 63bd509..b239de1 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; import { Device, DeviceInfo } from '@capacitor/device'; import { ThemeDetection, ThemeDetectionResponse } from '@awesome-cordova-plugins/theme-detection/ngx'; import { ScreenOrientation } from '@awesome-cordova-plugins/screen-orientation/ngx'; -import { Platform } from '@ionic/angular'; +import { LoadingController, Platform } from '@ionic/angular'; import { Storage } from '@ionic/storage-angular'; import { TranslateService } from '@ngx-translate/core'; import { format } from 'date-fns'; @@ -12,8 +12,19 @@ import { Bookmark } from '../models/bookmark'; import { ScanRecord } from '../models/scan-record'; import { Toast } from '@capacitor/toast'; import { v4 as uuidv4 } from 'uuid'; +import { Preferences } from '@capacitor/preferences'; +import { Observable } from 'rxjs'; export declare type LanguageType = 'de' | 'en' | 'fr' | 'it' | 'zh-CN' | 'zh-HK'; +export declare type TabPageType = "/tabs/scan" | "/tabs/generate" | "/tabs/import-image" | "/tabs/history" | "/tabs/setting"; +export declare type HistoryPageSegmentType = 'history' | 'bookmarks'; +export declare type OnOffType = "on" | "off"; +export declare type ColorThemeType = 'light' | 'dark' | 'black'; +export declare type ErrorCorrectionLevelType = 'L' | 'M' | 'Q' | 'H'; +export declare type VibrationType = "on" | "off" | 'on-haptic' | 'on-scanned'; +export declare type OrientationType = 'portrait' | 'landscape'; +export declare type SearchEngineType = 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' | 'ecosia'; +export declare type ResultPageButtonsType = 'detailed' | 'icon-only'; @Injectable({ providedIn: 'root' @@ -22,19 +33,19 @@ export class EnvService { public appVersionNumber: string = '3.0.1'; - public startPage: "/tabs/scan" | "/tabs/generate" | "/tabs/import-image" | "/tabs/history" | "/tabs/setting" = "/tabs/scan"; - public historyPageStartSegment: 'history' | 'bookmarks' = 'history'; - public startPageHeader: 'on' | 'off' = 'on'; + public startPage: TabPageType = "/tabs/scan"; + public historyPageStartSegment: HistoryPageSegmentType = 'history'; + public startPageHeader: OnOffType = 'on'; public languages: LanguageType[] = ['en', 'zh-HK', 'zh-CN', 'de', 'fr', 'it']; public language: LanguageType = 'en'; public selectedLanguage: 'default' | LanguageType = 'default'; - public colorTheme: 'light' | 'dark' | 'black' = 'light'; - public selectedColorTheme: 'default' | 'light' | 'dark' | 'black' = 'default'; - public scanRecordLogging: 'on' | 'off' = 'on'; + public colorTheme: ColorThemeType = 'light'; + public selectedColorTheme: 'default' | ColorThemeType = 'default'; + public scanRecordLogging: OnOffType = 'on'; public recordsLimit: 30 | 50 | 100 | -1 = -1; - public showNumberOfRecords: 'on' | 'off' = 'on'; - public autoMaxBrightness: 'on' | 'off' = 'on'; - public errorCorrectionLevel: 'L' | 'M' | 'Q' | 'H' = 'M'; + public showNumberOfRecords: OnOffType = 'on'; + public autoMaxBrightness: OnOffType = 'on'; + public errorCorrectionLevel: ErrorCorrectionLevelType = 'M'; public qrCodeLightR: number = 255; public qrCodeLightG: number = 255; public qrCodeLightB: number = 255; @@ -42,30 +53,77 @@ export class EnvService { public qrCodeDarkG: number = 36; public qrCodeDarkB: number = 40; public qrCodeMargin: number = 3; - public vibration: 'on' | 'on-haptic' | 'on-scanned' | 'off' = 'on'; - public orientation: 'default' | 'portrait' | 'landscape' = 'default'; + public vibration: VibrationType = 'on'; + public orientation: 'default' | OrientationType = 'default'; public notShowUpdateNotes: boolean = false; - public searchEngine: 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' | 'ecosia' = 'google'; - public resultPageButtons: 'detailed' | 'icon-only' = 'detailed'; - public showQrAfterCameraScan: 'on' | 'off' = 'off'; - public showQrAfterImageScan: 'on' | 'off' = 'off'; - public showQrAfterCreate: 'on' | 'off' = 'on'; - public showQrAfterLogView: 'on' | 'off' = 'on'; - public showQrAfterBookmarkView: 'on' | 'off' = 'on'; - public showSearchButton: 'on' | 'off' = 'on'; - public showCopyButton: 'on' | 'off' = 'on'; - public showBase64Button: 'on' | 'off' = 'on'; - public showEnlargeButton: 'on' | 'off' = 'on'; - public showBookmarkButton: 'on' | 'off' = 'on'; - public showOpenUrlButton: 'on' | 'off' = 'on'; - public showBrowseButton: 'on' | 'off' = 'on'; - public showAddContactButton: 'on' | 'off' = 'on'; - public showCallButton: 'on' | 'off' = 'on'; - public showSendMessageButton: 'on' | 'off' = 'on'; - public showSendEmailButton: 'on' | 'off' = 'on'; - public debugMode: 'on' | 'off' = 'off'; + public searchEngine: SearchEngineType = 'google'; + public resultPageButtons: ResultPageButtonsType = 'detailed'; + public showQrAfterCameraScan: OnOffType = 'off'; + public showQrAfterImageScan: OnOffType = 'off'; + public showQrAfterCreate: OnOffType = 'on'; + public showQrAfterLogView: OnOffType = 'on'; + public showQrAfterBookmarkView: OnOffType = 'on'; + public showSearchButton: OnOffType = 'on'; + public showCopyButton: OnOffType = 'on'; + public showBase64Button: OnOffType = 'on'; + public showEnlargeButton: OnOffType = 'on'; + public showBookmarkButton: OnOffType = 'on'; + public showOpenUrlButton: OnOffType = 'on'; + public showBrowseButton: OnOffType = 'on'; + public showAddContactButton: OnOffType = 'on'; + public showCallButton: OnOffType = 'on'; + public showSendMessageButton: OnOffType = 'on'; + public showSendEmailButton: OnOffType = 'on'; + public debugMode: OnOffType = 'off'; public autoExitAppMin: 1 | 3 | 5 | -1 = -1; + public readonly KEY_START_PAGE = "start-page"; + public readonly KEY_HISTORY_PAGE_START_SEGMENT = "history-page-start-segment"; + public readonly KEY_START_PAGE_HEADER = "start-page-header"; + public readonly KEY_SCAN_RECORDS = "scanRecords"; + public readonly KEY_BOOKMARKS = "bookmarks"; + public readonly KEY_LANGUAGE = "language"; + public readonly KEY_COLOR = "color"; + public readonly KEY_DEBUG_MODE = "debug-mode-on"; + public readonly KEY_ORIENTATION = "orientation"; + public readonly KEY_SCAN_RECORD_LOGGING = "scan-record-logging"; + public readonly KEY_RECORDS_LIMIT = "recordsLimit"; + public readonly KEY_SHOW_NUMBER_OF_RECORDS = "showNumberOfRecords"; + public readonly KEY_VIBRATION = "vibration"; + public readonly KEY_ERROR_CORRECTION_LEVEL = "error-correction-level"; + public readonly KEY_QR_CODE_LIGHT_R = "qrCodeLightR"; + public readonly KEY_QR_CODE_LIGHT_G = "qrCodeLightG"; + public readonly KEY_QR_CODE_LIGHT_B = "qrCodeLightB"; + public readonly KEY_QR_CODE_DARK_R = "qrCodeDarkR"; + public readonly KEY_QR_CODE_DARK_G = "qrCodeDarkG"; + public readonly KEY_QR_CODE_DARK_B = "qrCodeDarkB"; + public readonly KEY_QR_CODE_MARGIN = "qrCodeMargin"; + public readonly KEY_AUTO_MAX_BRIGHTNESS = "auto-max-brightness"; + public readonly KEY_SEARCH_ENGINE = "search-engine"; + public readonly KEY_RESULT_PAGE_BUTTONS = "result-page-buttons"; + public readonly KEY_SHOW_QR_AFTER_CAMERA_SCAN = "show-qr-after-camera-scan"; + public readonly KEY_SHOW_QR_AFTER_IMAGE_SCAN = "show-qr-after-image-scan"; + public readonly KEY_SHOW_QR_AFTER_CREATE = "show-qr-after-create"; + public readonly KEY_SHOW_QR_AFTER_LOG_VIEW = "show-qr-after-log-view"; + public readonly KEY_SHOW_QR_AFTER_BOOKMARK_VIEW = "show-qr-after-bookmark-view"; + public readonly KEY_SHOW_SEARCH_BUTTON = "showSearchButton"; + public readonly KEY_SHOW_COPY_BUTTON = "showCopyButton"; + public readonly KEY_SHOW_BASE64_BUTTON = "showBase64Button"; + public readonly KEY_SHOW_ENLARGE_BUTTON = "showEnlargeButton"; + public readonly KEY_SHOW_BOOKMARK_BUTTON = "showBookmarkButton"; + public readonly KEY_SHOW_OPEN_URL_BUTTON = "showOpenUrlButton"; + public readonly KEY_SHOW_BROWSE_BUTTON = "showBrowseButton"; + public readonly KEY_SHOW_ADD_CONTACT_BUTTON = "showAddContactButton"; + public readonly KEY_SHOW_CALL_BUTTON = "showCallButton"; + public readonly KEY_SHOW_SEND_MESSAGE_BUTTON = "showSendMessageButton"; + public readonly KEY_SHOW_SEND_EMAIL_BUTTON = "showSendEmailButton"; + public readonly KEY_AUTO_EXIT_MIN = "autoExitAppMin"; + + public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30001"; + public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30001"; + public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30000"; + public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30000"; + public readonly APP_FOLDER_NAME: string = 'SimpleQR'; public readonly GOOGLE_SEARCH_URL: string = "https://www.google.com/search?q="; @@ -80,16 +138,11 @@ export class EnvService { public readonly APP_STORE_URL: string = "https://apps.apple.com/us/app/simple-qr-by-tom-fong/id1621121553"; public readonly GITHUB_RELEASE_URL: string = "https://github.com/tomfong/simple-qr/releases"; public readonly PRIVACY_POLICY: string = "https://www.privacypolicies.com/live/771b1123-99bb-4bfe-815e-1046c0437a0f"; - public readonly AN_PREV_PATCH_NOTE_STORAGE_KEY = "not-show-update-notes-v30000"; - public readonly IOS_PREV_PATCH_NOTE_STORAGE_KEY = "not-show-update-notes-v30000"; - public readonly AN_PATCH_NOTE_STORAGE_KEY = "not-show-update-notes-v30001"; - public readonly IOS_PATCH_NOTE_STORAGE_KEY = "not-show-update-notes-v30001"; - private _storage: Storage | null = null; - private _scannedData: string = ''; - private _scannedDataFormat: string = ''; - private _scanRecords: ScanRecord[] = []; - private _bookmarks: Bookmark[] = []; + resultContent: string = ''; + resultContentFormat: string = ''; + scanRecords: ScanRecord[] = []; + bookmarks: Bookmark[] = []; viewingScanRecords: ScanRecord[] = []; viewingBookmarks: Bookmark[] = []; private _deviceInfo: DeviceInfo | undefined = undefined; @@ -100,82 +153,666 @@ export class EnvService { public firstAppLoad: boolean = true; // once loaded, turn it false + initObservable: Observable; + constructor( private platform: Platform, - private storage: Storage, + private ionicStorage: Storage, public translate: TranslateService, private overlayContainer: OverlayContainer, private themeDetection: ThemeDetection, - private screenOrientation: ScreenOrientation + private screenOrientation: ScreenOrientation, ) { this.platform.ready().then( async _ => { - await this.init(); + this.initObservable = new Observable(subs => { + new Promise(async _ => { + await this._transferStorage(); + console.log(`env.service.ts - constructor - _transferStorage()`) + await this._loadStorage(); + console.log(`env.service.ts - constructor - _loadStorage()`) + await Device.getInfo().then( + value => { + this._deviceInfo = value; + } + ); + console.log(`env.service.ts - constructor - Device.getInfo()`) + subs.next(true); + }); + }); } ) } - private async init() { - await Device.getInfo().then( - value => { - this._deviceInfo = value; - } - ) - this._storage = await this.storage.create(); - this._storage.get("start-page").then( - value => { - if (value != null) { - this.startPage = value; + private async _transferStorage() { + const oldStorage = await this.ionicStorage.create(); + const length = await oldStorage.length(); + if (length > 0) { + await oldStorage.get(this.KEY_LANGUAGE).then( + async value => { + if (value != null) { + this.selectedLanguage = value; + } else { + this.selectedLanguage = 'default'; + } + this.toggleLanguageChange(); + await Preferences.set({ + key: this.KEY_LANGUAGE, + value: this.selectedLanguage, + }); + } + ); + await this.presentToast(this.translate.instant("OPTIMIZING_DATA"), "short", "bottom"); + await oldStorage.get(this.KEY_START_PAGE).then( + async value => { + if (value != null) { + this.startPage = value; + } else { + this.startPage = '/tabs/scan'; + } + await Preferences.set({ + key: this.KEY_START_PAGE, + value: this.startPage, + }); + } + ); + await oldStorage.get(this.KEY_HISTORY_PAGE_START_SEGMENT).then( + async value => { + if (value != null) { + this.historyPageStartSegment = value; + } else { + this.historyPageStartSegment = 'history'; + } + await Preferences.set({ + key: this.KEY_HISTORY_PAGE_START_SEGMENT, + value: this.historyPageStartSegment, + }); + } + ); + await oldStorage.get(this.KEY_START_PAGE_HEADER).then( + async value => { + if (value != null) { + this.startPageHeader = value; + } else { + this.startPageHeader = 'on'; + } + await Preferences.set({ + key: this.KEY_START_PAGE_HEADER, + value: this.startPageHeader, + }); + } + ); + await oldStorage.get("RZUeHwaYWGkiNhsb5nld7vdDYE7pzRyB").then( + async value => { + if (value != null) { + try { + this.scanRecords = JSON.parse(value); + this.scanRecords.forEach( + r => { + const tCreatedAt = r.createdAt; + r.createdAt = new Date(tCreatedAt); + } + ); + this.scanRecords.sort((r1, r2) => { + return r2.createdAt.getTime() - r1.createdAt.getTime(); + }); + } catch (err) { + console.error(err); + this.scanRecords = []; + } + } + await Preferences.set({ + key: this.KEY_SCAN_RECORDS, + value: JSON.stringify(this.scanRecords), + }); + } + ); + await oldStorage.get("lB9STlXHpk7G8STLcJZNreiIxeFWPxPS").then( + async value => { + if (value != null) { + try { + this.bookmarks = JSON.parse(value); + this.bookmarks.forEach( + b => { + if (b.id == null) { + b.id = uuidv4(); + } + const tCreatedAt = b.createdAt; + b.createdAt = new Date(tCreatedAt); + } + ); + this.bookmarks.sort((a, b) => { + return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); + }); + } catch (err) { + console.error(err); + this.bookmarks = []; + } + } + await Preferences.set({ + key: this.KEY_BOOKMARKS, + value: JSON.stringify(this.bookmarks), + }); + } + ) + await oldStorage.get(this.KEY_COLOR).then( + async value => { + if (value != null) { + this.selectedColorTheme = value; + } else { + this.selectedColorTheme = 'default'; + } + await this.toggleColorTheme(); + await Preferences.set({ + key: this.KEY_COLOR, + value: this.selectedColorTheme, + }); + } + ); + await oldStorage.get(this.KEY_DEBUG_MODE).then( + async value => { + if (value != null) { + this.debugMode = value; + } else { + this.debugMode = 'off'; + } + await Preferences.set({ + key: this.KEY_DEBUG_MODE, + value: this.debugMode, + }); + } + ); + await oldStorage.get(this.KEY_ORIENTATION).then( + async value => { + if (value != null) { + this.orientation = value; + } else { + this.orientation = 'default'; + } + await this.toggleOrientationChange(); + await Preferences.set({ + key: this.KEY_ORIENTATION, + value: this.orientation, + }); + } + ); + await oldStorage.get(this.KEY_SCAN_RECORD_LOGGING).then( + async value => { + if (value != null) { + this.scanRecordLogging = value; + } else { + this.scanRecordLogging = 'on'; + } + await Preferences.set({ + key: this.KEY_SCAN_RECORD_LOGGING, + value: this.scanRecordLogging, + }); + } + ); + await oldStorage.get(this.KEY_RECORDS_LIMIT).then( + async value => { + if (value != null) { + this.recordsLimit = value; + } else { + this.recordsLimit = -1; + } + await Preferences.set({ + key: this.KEY_RECORDS_LIMIT, + value: JSON.stringify(this.recordsLimit), + }); + } + ); + await oldStorage.get(this.KEY_SHOW_NUMBER_OF_RECORDS).then( + async value => { + if (value != null) { + this.showNumberOfRecords = value; + } else { + this.showNumberOfRecords = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_NUMBER_OF_RECORDS, + value: this.showNumberOfRecords, + }); + } + ); + await oldStorage.get(this.KEY_VIBRATION).then( + async value => { + if (value != null) { + this.vibration = value; + } else { + this.vibration = 'on'; + } + await Preferences.set({ + key: this.KEY_VIBRATION, + value: this.vibration, + }); + } + ); + await oldStorage.get(this.KEY_ERROR_CORRECTION_LEVEL).then( + async value => { + if (value != null) { + this.errorCorrectionLevel = value; + } else { + this.errorCorrectionLevel = 'M'; + } + await Preferences.set({ + key: this.KEY_ERROR_CORRECTION_LEVEL, + value: this.errorCorrectionLevel, + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_LIGHT_R).then( + async value => { + if (value != null) { + this.qrCodeLightR = value; + } else { + this.qrCodeLightR = 255; + } + await Preferences.set({ + key: this.KEY_QR_CODE_LIGHT_R, + value: JSON.stringify(this.qrCodeLightR), + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_LIGHT_G).then( + async value => { + if (value != null) { + this.qrCodeLightG = value; + } else { + this.qrCodeLightG = 255; + } + await Preferences.set({ + key: this.KEY_QR_CODE_LIGHT_G, + value: JSON.stringify(this.qrCodeLightG), + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_LIGHT_B).then( + async value => { + if (value != null) { + this.qrCodeLightB = value; + } else { + this.qrCodeLightB = 255; + } + await Preferences.set({ + key: this.KEY_QR_CODE_LIGHT_B, + value: JSON.stringify(this.qrCodeLightB), + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_DARK_R).then( + async value => { + if (value != null) { + this.qrCodeDarkR = value; + } else { + this.qrCodeDarkR = 34; + } + await Preferences.set({ + key: this.KEY_QR_CODE_DARK_R, + value: JSON.stringify(this.qrCodeDarkR), + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_DARK_G).then( + async value => { + if (value != null) { + this.qrCodeDarkG = value; + } else { + this.qrCodeDarkG = 36; + } + await Preferences.set({ + key: this.KEY_QR_CODE_DARK_G, + value: JSON.stringify(this.qrCodeDarkG), + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_DARK_B).then( + async value => { + if (value != null) { + this.qrCodeDarkB = value; + } else { + this.qrCodeDarkB = 40; + } + await Preferences.set({ + key: this.KEY_QR_CODE_DARK_B, + value: JSON.stringify(this.qrCodeDarkB), + }); + } + ); + await oldStorage.get(this.KEY_QR_CODE_MARGIN).then( + async value => { + if (value != null) { + this.qrCodeMargin = value; + } else { + this.qrCodeMargin = 3; + } + await Preferences.set({ + key: this.KEY_QR_CODE_MARGIN, + value: JSON.stringify(this.qrCodeMargin), + }); + } + ); + await oldStorage.get(this.KEY_AUTO_MAX_BRIGHTNESS).then( + async value => { + if (value != null) { + this.autoMaxBrightness = value; + } else { + this.autoMaxBrightness = 'on'; + } + await Preferences.set({ + key: this.KEY_AUTO_MAX_BRIGHTNESS, + value: this.autoMaxBrightness, + }); + } + ); + await oldStorage.get(this.KEY_SEARCH_ENGINE).then( + async value => { + if (value != null) { + this.searchEngine = value; + } else { + this.searchEngine = 'google'; + } + await Preferences.set({ + key: this.KEY_SEARCH_ENGINE, + value: this.searchEngine, + }); + } + ); + await oldStorage.get(this.KEY_RESULT_PAGE_BUTTONS).then( + async value => { + if (value != null) { + this.resultPageButtons = value; + } else { + this.resultPageButtons = 'detailed'; + } + await Preferences.set({ + key: this.KEY_RESULT_PAGE_BUTTONS, + value: this.resultPageButtons, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_QR_AFTER_CAMERA_SCAN).then( + async value => { + if (value != null) { + this.showQrAfterCameraScan = value; + } else { + this.showQrAfterCameraScan = 'off'; + } + await Preferences.set({ + key: this.KEY_SHOW_QR_AFTER_CAMERA_SCAN, + value: this.showQrAfterCameraScan, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_QR_AFTER_IMAGE_SCAN).then( + async value => { + if (value != null) { + this.showQrAfterImageScan = value; + } else { + this.showQrAfterImageScan = 'off'; + } + await Preferences.set({ + key: this.KEY_SHOW_QR_AFTER_IMAGE_SCAN, + value: this.showQrAfterImageScan, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_QR_AFTER_CREATE).then( + async value => { + if (value != null) { + this.showQrAfterCreate = value; + } else { + this.showQrAfterCreate = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_QR_AFTER_CREATE, + value: this.showQrAfterCreate, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_QR_AFTER_LOG_VIEW).then( + async value => { + if (value != null) { + this.showQrAfterLogView = value; + } else { + this.showQrAfterLogView = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_QR_AFTER_LOG_VIEW, + value: this.showQrAfterLogView, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_QR_AFTER_BOOKMARK_VIEW).then( + async value => { + if (value != null) { + this.showQrAfterBookmarkView = value; + } else { + this.showQrAfterBookmarkView = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_QR_AFTER_BOOKMARK_VIEW, + value: this.showQrAfterBookmarkView, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_SEARCH_BUTTON).then( + async value => { + if (value != null) { + this.showSearchButton = value; + } else { + this.showSearchButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_SEARCH_BUTTON, + value: this.showSearchButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_COPY_BUTTON).then( + async value => { + if (value != null) { + this.showCopyButton = value; + } else { + this.showCopyButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_COPY_BUTTON, + value: this.showCopyButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_BASE64_BUTTON).then( + async value => { + if (value != null) { + this.showBase64Button = value; + } else { + this.showBase64Button = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_BASE64_BUTTON, + value: this.showBase64Button, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_ENLARGE_BUTTON).then( + async value => { + if (value != null) { + this.showEnlargeButton = value; + } else { + this.showEnlargeButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_ENLARGE_BUTTON, + value: this.showEnlargeButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_BOOKMARK_BUTTON).then( + async value => { + if (value != null) { + this.showBookmarkButton = value; + } else { + this.showBookmarkButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_BOOKMARK_BUTTON, + value: this.showBookmarkButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_OPEN_URL_BUTTON).then( + async value => { + if (value != null) { + this.showOpenUrlButton = value; + } else { + this.showOpenUrlButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_OPEN_URL_BUTTON, + value: this.showOpenUrlButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_BROWSE_BUTTON).then( + async value => { + if (value != null) { + this.showBrowseButton = value; + } else { + this.showBrowseButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_BROWSE_BUTTON, + value: this.showBrowseButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_ADD_CONTACT_BUTTON).then( + async value => { + if (value != null) { + this.showAddContactButton = value; + } else { + this.showAddContactButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_ADD_CONTACT_BUTTON, + value: this.showAddContactButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_CALL_BUTTON).then( + async value => { + if (value != null) { + this.showCallButton = value; + } else { + this.showCallButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_CALL_BUTTON, + value: this.showCallButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_SEND_MESSAGE_BUTTON).then( + async value => { + if (value != null) { + this.showSendMessageButton = value; + } else { + this.showSendMessageButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_SEND_MESSAGE_BUTTON, + value: this.showSendMessageButton, + }); + } + ); + await oldStorage.get(this.KEY_SHOW_SEND_EMAIL_BUTTON).then( + async value => { + if (value != null) { + this.showSendEmailButton = value; + } else { + this.showSendEmailButton = 'on'; + } + await Preferences.set({ + key: this.KEY_SHOW_SEND_EMAIL_BUTTON, + value: this.showSendEmailButton, + }); + } + ); + await oldStorage.get(this.KEY_AUTO_EXIT_MIN).then( + async value => { + if (value != null) { + this.autoExitAppMin = value; + } else { + this.autoExitAppMin = -1; + } + await Preferences.set({ + key: this.KEY_AUTO_EXIT_MIN, + value: JSON.stringify(this.autoExitAppMin), + }); + } + ); + } + await oldStorage.clear(); + } + + private async _loadStorage() { + if (this.platform.is('android')) await Preferences.remove({ key: this.KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES }); + if (this.platform.is('ios')) await Preferences.remove({ key: this.KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES }); + await Preferences.get({ key: this.KEY_START_PAGE }).then( + async result => { + if (result.value != null) { + this.startPage = result.value as TabPageType; } else { this.startPage = '/tabs/scan'; } } ); - this._storage.get("history-page-start-segment").then( - value => { - if (value != null) { - this.historyPageStartSegment = value; + await Preferences.get({ key: this.KEY_HISTORY_PAGE_START_SEGMENT }).then( + async result => { + if (result.value != null) { + this.historyPageStartSegment = result.value as HistoryPageSegmentType; } else { this.historyPageStartSegment = 'history'; } } ); - this._storage.get("start-page-header").then( - async value => { - if (value != null) { - this.startPageHeader = value; + await Preferences.get({ key: this.KEY_START_PAGE_HEADER }).then( + async result => { + if (result.value != null) { + this.startPageHeader = result.value as OnOffType; } else { this.startPageHeader = 'on'; } } ); - this._storage.get(environment.storageScanRecordKey).then( - value => { - if (value != null) { + await Preferences.get({ key: this.KEY_SCAN_RECORDS }).then( + async result => { + if (result.value != null) { try { - this._scanRecords = JSON.parse(value); - this._scanRecords.forEach( + this.scanRecords = JSON.parse(result.value); + this.scanRecords.forEach( r => { const tCreatedAt = r.createdAt; r.createdAt = new Date(tCreatedAt); } ); - this._scanRecords.sort((r1, r2) => { + this.scanRecords.sort((r1, r2) => { return r2.createdAt.getTime() - r1.createdAt.getTime(); }); } catch (err) { console.error(err); - this._scanRecords = []; + this.scanRecords = []; } } } ); - this._storage.get(environment.storageBookmarkKey).then( - value => { - if (value != null) { + await Preferences.get({ key: this.KEY_BOOKMARKS }).then( + async result => { + if (result.value != null) { try { - this._bookmarks = JSON.parse(value); - this._bookmarks.forEach( + this.bookmarks = JSON.parse(result.value); + this.bookmarks.forEach( b => { if (b.id == null) { b.id = uuidv4(); @@ -184,368 +821,347 @@ export class EnvService { b.createdAt = new Date(tCreatedAt); } ); - this._bookmarks.sort((a, b) => { + this.bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); } catch (err) { console.error(err); - this._bookmarks = []; + this.bookmarks = []; } } } ) - this._storage.get("language").then( - async value => { - if (value != null) { - this.selectedLanguage = value; + await Preferences.get({ key: this.KEY_LANGUAGE }).then( + async result => { + if (result.value != null) { + this.selectedLanguage = result.value as 'default' | LanguageType; } else { this.selectedLanguage = 'default'; } this.toggleLanguageChange(); } ); - this._storage.get("color").then( - async value => { - if (value != null) { - this.selectedColorTheme = value; + await Preferences.get({ key: this.KEY_COLOR }).then( + async result => { + if (result.value != null) { + this.selectedColorTheme = result.value as 'default' | ColorThemeType; } else { this.selectedColorTheme = 'default'; } await this.toggleColorTheme(); } ); - this._storage.get("debug-mode-on").then( - value => { - if (value != null) { - this.debugMode = value; + await Preferences.get({ key: this.KEY_DEBUG_MODE }).then( + async result => { + if (result.value != null) { + this.debugMode = result.value as OnOffType; } else { this.debugMode = 'off'; } } ); - this._storage.get("orientation").then( - async value => { - if (value != null) { - this.orientation = value; + await Preferences.get({ key: this.KEY_ORIENTATION }).then( + async result => { + if (result.value != null) { + this.orientation = result.value as 'default' | OrientationType; } else { this.orientation = 'default'; } await this.toggleOrientationChange(); } ); - this._storage.get("scan-record-logging").then( - value => { - if (value != null) { - this.scanRecordLogging = value; + await Preferences.get({ key: this.KEY_SCAN_RECORD_LOGGING }).then( + async result => { + if (result.value != null) { + this.scanRecordLogging = result.value as OnOffType; } else { this.scanRecordLogging = 'on'; } } ); - this._storage.get("recordsLimit").then( - value => { - if (value != null) { - this.recordsLimit = value; + await Preferences.get({ key: this.KEY_RECORDS_LIMIT }).then( + async result => { + if (result.value != null) { + this.recordsLimit = JSON.parse(result.value); } else { this.recordsLimit = -1; } } ); - this._storage.get("showNumberOfRecords").then( - value => { - if (value != null) { - this.showNumberOfRecords = value; + await Preferences.get({ key: this.KEY_SHOW_NUMBER_OF_RECORDS }).then( + async result => { + if (result.value != null) { + this.showNumberOfRecords = result.value as OnOffType; } else { this.showNumberOfRecords = 'on'; } } ); - this._storage.get("vibration").then( - value => { - if (value != null) { - this.vibration = value; + await Preferences.get({ key: this.KEY_VIBRATION }).then( + async result => { + if (result.value != null) { + this.vibration = result.value as VibrationType; } else { this.vibration = 'on'; } } ); - this._storage.get("error-correction-level").then( - value => { - if (value != null) { - this.errorCorrectionLevel = value; + await Preferences.get({ key: this.KEY_ERROR_CORRECTION_LEVEL }).then( + async result => { + if (result.value != null) { + this.errorCorrectionLevel = result.value as ErrorCorrectionLevelType; } else { this.errorCorrectionLevel = 'M'; } } ); - this._storage.get("qrCodeLightR").then( - value => { - if (value != null) { - this.qrCodeLightR = value; + await Preferences.get({ key: this.KEY_QR_CODE_LIGHT_R }).then( + async result => { + if (result.value != null) { + this.qrCodeLightR = JSON.parse(result.value); } else { this.qrCodeLightR = 255; } } ); - this._storage.get("qrCodeLightG").then( - value => { - if (value != null) { - this.qrCodeLightG = value; + await Preferences.get({ key: this.KEY_QR_CODE_LIGHT_G }).then( + async result => { + if (result.value != null) { + this.qrCodeLightG = JSON.parse(result.value); } else { this.qrCodeLightG = 255; } } ); - this._storage.get("qrCodeLightB").then( - value => { - if (value != null) { - this.qrCodeLightB = value; + await Preferences.get({ key: this.KEY_QR_CODE_LIGHT_B }).then( + async result => { + if (result.value != null) { + this.qrCodeLightB = JSON.parse(result.value); } else { this.qrCodeLightB = 255; } } ); - this._storage.get("qrCodeDarkR").then( - value => { - if (value != null) { - this.qrCodeDarkR = value; + await Preferences.get({ key: this.KEY_QR_CODE_DARK_R }).then( + async result => { + if (result.value != null) { + this.qrCodeDarkR = JSON.parse(result.value); } else { this.qrCodeDarkR = 34; } } ); - this._storage.get("qrCodeDarkG").then( - value => { - if (value != null) { - this.qrCodeDarkG = value; + await Preferences.get({ key: this.KEY_QR_CODE_DARK_G }).then( + async result => { + if (result.value != null) { + this.qrCodeDarkG = JSON.parse(result.value); } else { this.qrCodeDarkG = 36; } } ); - this._storage.get("qrCodeDarkB").then( - value => { - if (value != null) { - this.qrCodeDarkB = value; + await Preferences.get({ key: this.KEY_QR_CODE_DARK_B }).then( + async result => { + if (result.value != null) { + this.qrCodeDarkB = JSON.parse(result.value); } else { this.qrCodeDarkB = 40; } } ); - this._storage.get("qrCodeMargin").then( - value => { - if (value != null) { - this.qrCodeMargin = value; + await Preferences.get({ key: this.KEY_QR_CODE_MARGIN }).then( + async result => { + if (result.value != null) { + this.qrCodeMargin = JSON.parse(result.value); } else { this.qrCodeMargin = 3; } } ); - this._storage.get("auto-max-brightness").then( - value => { - if (value != null) { - this.autoMaxBrightness = value; + await Preferences.get({ key: this.KEY_AUTO_MAX_BRIGHTNESS }).then( + async result => { + if (result.value != null) { + this.autoMaxBrightness = result.value as OnOffType; } else { this.autoMaxBrightness = 'on'; } } ); - this._storage.get("search-engine").then( - value => { - if (value != null) { - this.searchEngine = value; + await Preferences.get({ key: this.KEY_SEARCH_ENGINE }).then( + async result => { + if (result.value != null) { + this.searchEngine = result.value as SearchEngineType; } else { this.searchEngine = 'google'; } } ); - this._storage.get("result-page-buttons").then( - value => { - if (value != null) { - this.resultPageButtons = value; + await Preferences.get({ key: this.KEY_RESULT_PAGE_BUTTONS }).then( + async result => { + if (result.value != null) { + this.resultPageButtons = result.value as ResultPageButtonsType; } else { this.resultPageButtons = 'detailed'; } } ); - this._storage.get("show-qr-after-camera-scan").then( - value => { - if (value != null) { - this.showQrAfterCameraScan = value; + await Preferences.get({ key: this.KEY_SHOW_QR_AFTER_CAMERA_SCAN }).then( + async result => { + if (result.value != null) { + this.showQrAfterCameraScan = result.value as OnOffType; } else { this.showQrAfterCameraScan = 'off'; } } ); - this._storage.get("show-qr-after-image-scan").then( - value => { - if (value != null) { - this.showQrAfterImageScan = value; + await Preferences.get({ key: this.KEY_SHOW_QR_AFTER_IMAGE_SCAN }).then( + async result => { + if (result.value != null) { + this.showQrAfterImageScan = result.value as OnOffType; } else { this.showQrAfterImageScan = 'off'; } } ); - this._storage.get("show-qr-after-create").then( - value => { - if (value != null) { - this.showQrAfterCreate = value; + await Preferences.get({ key: this.KEY_SHOW_QR_AFTER_CREATE }).then( + async result => { + if (result.value != null) { + this.showQrAfterCreate = result.value as OnOffType; } else { this.showQrAfterCreate = 'on'; } } ); - this._storage.get("show-qr-after-log-view").then( - value => { - if (value != null) { - this.showQrAfterLogView = value; + await Preferences.get({ key: this.KEY_SHOW_QR_AFTER_LOG_VIEW }).then( + async result => { + if (result.value != null) { + this.showQrAfterLogView = result.value as OnOffType; } else { this.showQrAfterLogView = 'on'; } } ); - this._storage.get("show-qr-after-bookmark-view").then( - value => { - if (value != null) { - this.showQrAfterBookmarkView = value; + await Preferences.get({ key: this.KEY_SHOW_QR_AFTER_BOOKMARK_VIEW }).then( + async result => { + if (result.value != null) { + this.showQrAfterBookmarkView = result.value as OnOffType; } else { this.showQrAfterBookmarkView = 'on'; } } ); - this._storage.get("showSearchButton").then( - value => { - if (value != null) { - this.showSearchButton = value; + await Preferences.get({ key: this.KEY_SHOW_SEARCH_BUTTON }).then( + async result => { + if (result.value != null) { + this.showSearchButton = result.value as OnOffType; } else { this.showSearchButton = 'on'; } } ); - this._storage.get("showCopyButton").then( - value => { - if (value != null) { - this.showCopyButton = value; + await Preferences.get({ key: this.KEY_SHOW_COPY_BUTTON }).then( + async result => { + if (result.value != null) { + this.showCopyButton = result.value as OnOffType; } else { this.showCopyButton = 'on'; } } ); - this._storage.get("showBase64Button").then( - value => { - if (value != null) { - this.showBase64Button = value; + await Preferences.get({ key: this.KEY_SHOW_BASE64_BUTTON }).then( + async result => { + if (result.value != null) { + this.showBase64Button = result.value as OnOffType; } else { this.showBase64Button = 'on'; } } ); - this._storage.get("showEnlargeButton").then( - value => { - if (value != null) { - this.showEnlargeButton = value; + await Preferences.get({ key: this.KEY_SHOW_ENLARGE_BUTTON }).then( + async result => { + if (result.value != null) { + this.showEnlargeButton = result.value as OnOffType; } else { this.showEnlargeButton = 'on'; } } ); - this._storage.get("showBookmarkButton").then( - value => { - if (value != null) { - this.showBookmarkButton = value; + await Preferences.get({ key: this.KEY_SHOW_BOOKMARK_BUTTON }).then( + async result => { + if (result.value != null) { + this.showBookmarkButton = result.value as OnOffType; } else { this.showBookmarkButton = 'on'; } } ); - this._storage.get("showOpenUrlButton").then( - value => { - if (value != null) { - this.showOpenUrlButton = value; + await Preferences.get({ key: this.KEY_SHOW_OPEN_URL_BUTTON }).then( + async result => { + if (result.value != null) { + this.showOpenUrlButton = result.value as OnOffType; } else { this.showOpenUrlButton = 'on'; } } ); - this._storage.get("showBrowseButton").then( - value => { - if (value != null) { - this.showBrowseButton = value; + await Preferences.get({ key: this.KEY_SHOW_BROWSE_BUTTON }).then( + async result => { + if (result.value != null) { + this.showBrowseButton = result.value as OnOffType; } else { this.showBrowseButton = 'on'; } } ); - this._storage.get("showAddContactButton").then( - value => { - if (value != null) { - this.showAddContactButton = value; + await Preferences.get({ key: this.KEY_SHOW_ADD_CONTACT_BUTTON }).then( + async result => { + if (result.value != null) { + this.showAddContactButton = result.value as OnOffType; } else { this.showAddContactButton = 'on'; } } ); - this._storage.get("showCallButton").then( - value => { - if (value != null) { - this.showCallButton = value; + await Preferences.get({ key: this.KEY_SHOW_CALL_BUTTON }).then( + async result => { + if (result.value != null) { + this.showCallButton = result.value as OnOffType; } else { this.showCallButton = 'on'; } } ); - this._storage.get("showSendMessageButton").then( - value => { - if (value != null) { - this.showSendMessageButton = value; + await Preferences.get({ key: this.KEY_SHOW_SEND_MESSAGE_BUTTON }).then( + async result => { + if (result.value != null) { + this.showSendMessageButton = result.value as OnOffType; } else { this.showSendMessageButton = 'on'; } } ); - this._storage.get("showSendEmailButton").then( - value => { - if (value != null) { - this.showSendEmailButton = value; + await Preferences.get({ key: this.KEY_SHOW_SEND_EMAIL_BUTTON }).then( + async result => { + if (result.value != null) { + this.showSendEmailButton = result.value as OnOffType; } else { this.showSendEmailButton = 'on'; } } ); - this._storage.get("autoExitAppMin").then( - value => { - if (value != null) { - this.autoExitAppMin = value; + await Preferences.get({ key: this.KEY_AUTO_EXIT_MIN }).then( + async result => { + if (result.value != null) { + this.autoExitAppMin = JSON.parse(result.value); } else { this.autoExitAppMin = -1; } } ); - if (this.platform.is('android')) this._storage.remove(this.AN_PREV_PATCH_NOTE_STORAGE_KEY).catch(err => { }); - if (this.platform.is('ios')) this._storage.remove(this.IOS_PREV_PATCH_NOTE_STORAGE_KEY).catch(err => { }); - } - - public async storageSet(key: string, value: any) { - await this._storage?.set(key, value); - } - - public async storageGet(key: string): Promise { - const value = await this._storage?.get(key).then( - value => { - return value; - }, - err => { - if (this.isDebugging) { - this.presentToast("Error when get item from storage: " + JSON.stringify(err), "long", "top"); - } - return null; - } - ); - return value; } public async resetAll() { - await this._storage.clear(); + await Preferences.clear(); this.startPage = '/tabs/scan'; this.historyPageStartSegment = 'history'; this.startPageHeader = 'on'; @@ -587,8 +1203,8 @@ export class EnvService { this.showCallButton = 'on'; this.showSendMessageButton = 'on'; this.showSendEmailButton = 'on'; - this._scanRecords = []; - this._bookmarks = []; + this.scanRecords = []; + this.bookmarks = []; this.debugMode = 'off'; this.autoExitAppMin = -1; } @@ -600,181 +1216,156 @@ export class EnvService { public async resetSetting() { this.startPage = '/tabs/scan'; - await this.storageSet("start-page", this.startPage); + await Preferences.set({ key: this.KEY_START_PAGE, value: this.startPage }); this.historyPageStartSegment = 'history'; - await this.storageSet("history-page-start-segment", this.historyPageStartSegment); + await Preferences.set({ key: this.KEY_HISTORY_PAGE_START_SEGMENT, value: this.historyPageStartSegment }); this.startPageHeader = 'on'; - await this.storageSet("start-page-header", this.startPageHeader); + await Preferences.set({ key: this.KEY_START_PAGE_HEADER, value: this.startPageHeader }); this.selectedLanguage = 'default'; this.toggleLanguageChange(); - await this.storageSet("language", this.selectedLanguage); + await Preferences.set({ key: this.KEY_LANGUAGE, value: this.selectedLanguage }); this.selectedColorTheme = 'default'; await this.toggleColorTheme(); - await this.storageSet("color", this.selectedColorTheme); + await Preferences.set({ key: this.KEY_COLOR, value: this.selectedColorTheme }); this.scanRecordLogging = 'on'; - await this.storageSet("scan-record-logging", this.scanRecordLogging); + await Preferences.set({ key: this.KEY_SCAN_RECORD_LOGGING, value: this.scanRecordLogging }); this.recordsLimit = -1; - await this.storageSet("recordsLimit", this.recordsLimit); + await Preferences.set({ key: this.KEY_RECORDS_LIMIT, value: JSON.stringify(this.recordsLimit) }); this.showNumberOfRecords = 'on'; - await this.storageSet("showNumberOfRecords", this.showNumberOfRecords); + await Preferences.set({ key: this.KEY_SHOW_NUMBER_OF_RECORDS, value: this.showNumberOfRecords }); this.autoMaxBrightness = 'on'; - await this.storageSet("auto-max-brightness", this.autoMaxBrightness); + await Preferences.set({ key: this.KEY_AUTO_MAX_BRIGHTNESS, value: this.autoMaxBrightness }); this.errorCorrectionLevel = 'M'; - await this.storageSet("error-correction-level", this.errorCorrectionLevel); + await Preferences.set({ key: this.KEY_ERROR_CORRECTION_LEVEL, value: this.errorCorrectionLevel }); this.qrCodeLightR = 255; - await this.storageSet("qrCodeLightR", this.qrCodeLightR); + await Preferences.set({ key: this.KEY_QR_CODE_LIGHT_R, value: JSON.stringify(this.qrCodeLightR) }); this.qrCodeLightG = 255; - await this.storageSet("qrCodeLightG", this.qrCodeLightG); + await Preferences.set({ key: this.KEY_QR_CODE_LIGHT_G, value: JSON.stringify(this.qrCodeLightG) }); this.qrCodeLightB = 255; - await this.storageSet("qrCodeLightB", this.qrCodeLightB); + await Preferences.set({ key: this.KEY_QR_CODE_LIGHT_B, value: JSON.stringify(this.qrCodeLightB) }); this.qrCodeDarkR = 34; - await this.storageSet("qrCodeDarkR", this.qrCodeDarkR); + await Preferences.set({ key: this.KEY_QR_CODE_DARK_R, value: JSON.stringify(this.qrCodeDarkR) }); this.qrCodeDarkG = 36; - await this.storageSet("qrCodeDarkG", this.qrCodeDarkG); + await Preferences.set({ key: this.KEY_QR_CODE_DARK_G, value: JSON.stringify(this.qrCodeDarkG) }); this.qrCodeDarkB = 40; - await this.storageSet("qrCodeDarkB", this.qrCodeDarkB); + await Preferences.set({ key: this.KEY_QR_CODE_DARK_B, value: JSON.stringify(this.qrCodeDarkB) }); this.qrCodeMargin = 3; - await this.storageSet("qrCodeMargin", this.qrCodeMargin); - + await Preferences.set({ key: this.KEY_QR_CODE_MARGIN, value: JSON.stringify(this.qrCodeMargin) }); this.vibration = 'on'; - await this.storageSet("vibration", this.vibration); + await Preferences.set({ key: this.KEY_VIBRATION, value: this.vibration }); this.orientation = 'default'; await this.toggleOrientationChange(); - await this.storageSet("orientation", this.orientation); + await Preferences.set({ key: this.KEY_ORIENTATION, value: this.orientation }); this.notShowUpdateNotes = false; if (this.platform.is('ios')) { - await this.storageSet(this.IOS_PATCH_NOTE_STORAGE_KEY, 'no'); + await Preferences.set({ key: this.KEY_IOS_NOT_SHOW_UPDATE_NOTES, value: 'no' }); } else if (this.platform.is('android')) { - await this.storageSet(this.AN_PATCH_NOTE_STORAGE_KEY, 'no'); + await Preferences.set({ key: this.KEY_ANDROID_NOT_SHOW_UPDATE_NOTES, value: 'no' }); } this.searchEngine = 'google'; - await this.storageSet("search-engine", this.searchEngine); + await Preferences.set({ key: this.KEY_SEARCH_ENGINE, value: this.searchEngine }); this.resultPageButtons = 'detailed'; - await this.storageSet("result-page-buttons", this.resultPageButtons); + await Preferences.set({ key: this.KEY_RESULT_PAGE_BUTTONS, value: this.resultPageButtons }); this.showQrAfterCameraScan = 'off'; - await this.storageSet("show-qr-after-camera-scan", this.showQrAfterCameraScan); + await Preferences.set({ key: this.KEY_SHOW_QR_AFTER_CAMERA_SCAN, value: this.showQrAfterCameraScan }); this.showQrAfterImageScan = 'off'; - await this.storageSet("show-qr-after-image-scan", this.showQrAfterImageScan); + await Preferences.set({ key: this.KEY_SHOW_QR_AFTER_IMAGE_SCAN, value: this.showQrAfterImageScan }); this.showQrAfterCreate = 'on'; - await this.storageSet("show-qr-after-create", this.showQrAfterCreate); + await Preferences.set({ key: this.KEY_SHOW_QR_AFTER_CREATE, value: this.showQrAfterCreate }); this.showQrAfterLogView = 'on'; - await this.storageSet("show-qr-after-log-view", this.showQrAfterLogView); + await Preferences.set({ key: this.KEY_SHOW_QR_AFTER_LOG_VIEW, value: this.showQrAfterLogView }); this.showQrAfterBookmarkView = 'on'; - await this.storageSet("show-qr-after-bookmark-view", this.showQrAfterBookmarkView); + await Preferences.set({ key: this.KEY_SHOW_QR_AFTER_BOOKMARK_VIEW, value: this.showQrAfterBookmarkView }); this.showSearchButton = 'on'; - await this.storageSet("showSearchButton", this.showSearchButton); + await Preferences.set({ key: this.KEY_SHOW_SEARCH_BUTTON, value: this.showSearchButton }); this.showCopyButton = 'on'; - await this.storageSet("showCopyButton", this.showCopyButton); + await Preferences.set({ key: this.KEY_SHOW_COPY_BUTTON, value: this.showCopyButton }); this.showBase64Button = 'on'; - await this.storageSet("showBase64Button", this.showBase64Button); + await Preferences.set({ key: this.KEY_SHOW_BASE64_BUTTON, value: this.showBase64Button }); this.showEnlargeButton = 'on'; - await this.storageSet("showEnlargeButton", this.showEnlargeButton); + await Preferences.set({ key: this.KEY_SHOW_ENLARGE_BUTTON, value: this.showEnlargeButton }); this.showBookmarkButton = 'on'; - await this.storageSet("showBookmarkButton", this.showBookmarkButton); + await Preferences.set({ key: this.KEY_SHOW_BOOKMARK_BUTTON, value: this.showBookmarkButton }); this.showOpenUrlButton = 'on'; - await this.storageSet("showOpenUrlButton", this.showOpenUrlButton); + await Preferences.set({ key: this.KEY_SHOW_OPEN_URL_BUTTON, value: this.showOpenUrlButton }); this.showBrowseButton = 'on'; - await this.storageSet("showBrowseButton", this.showBrowseButton); + await Preferences.set({ key: this.KEY_SHOW_BROWSE_BUTTON, value: this.showBrowseButton }); this.showAddContactButton = 'on'; - await this.storageSet("showAddContactButton", this.showAddContactButton); + await Preferences.set({ key: this.KEY_SHOW_ADD_CONTACT_BUTTON, value: this.showAddContactButton }); this.showCallButton = 'on'; - await this.storageSet("showCallButton", this.showCallButton); + await Preferences.set({ key: this.KEY_SHOW_CALL_BUTTON, value: this.showCallButton }); this.showSendMessageButton = 'on'; - await this.storageSet("showSendMessageButton", this.showSendMessageButton); + await Preferences.set({ key: this.KEY_SHOW_SEND_MESSAGE_BUTTON, value: this.showSendMessageButton }); this.showSendEmailButton = 'on'; - await this.storageSet("showSendEmailButton", this.showSendEmailButton); + await Preferences.set({ key: this.KEY_SHOW_SEND_EMAIL_BUTTON, value: this.showSendEmailButton }); this.debugMode = 'off'; - await this.storageSet("debug-mode-on", this.debugMode); + await Preferences.set({ key: this.KEY_DEBUG_MODE, value: this.debugMode }); this.autoExitAppMin = -1; - await this.storageSet("autoExitAppMin", this.autoExitAppMin); + await Preferences.set({ key: this.KEY_AUTO_EXIT_MIN, value: JSON.stringify(this.autoExitAppMin) }); } async resetQrCodeSettings() { this.errorCorrectionLevel = 'M'; - await this.storageSet("error-correction-level", this.errorCorrectionLevel); + await Preferences.set({ key: this.KEY_ERROR_CORRECTION_LEVEL, value: this.errorCorrectionLevel }); this.qrCodeLightR = 255; - await this.storageSet("qrCodeLightR", this.qrCodeLightR); + await Preferences.set({ key: this.KEY_QR_CODE_LIGHT_R, value: JSON.stringify(this.qrCodeLightR) }); this.qrCodeLightG = 255; - await this.storageSet("qrCodeLightG", this.qrCodeLightG); + await Preferences.set({ key: this.KEY_QR_CODE_LIGHT_G, value: JSON.stringify(this.qrCodeLightG) }); this.qrCodeLightB = 255; - await this.storageSet("qrCodeLightB", this.qrCodeLightB); + await Preferences.set({ key: this.KEY_QR_CODE_LIGHT_B, value: JSON.stringify(this.qrCodeLightB) }); this.qrCodeDarkR = 34; - await this.storageSet("qrCodeDarkR", this.qrCodeDarkR); + await Preferences.set({ key: this.KEY_QR_CODE_DARK_R, value: JSON.stringify(this.qrCodeDarkR) }); this.qrCodeDarkG = 36; - await this.storageSet("qrCodeDarkG", this.qrCodeDarkG); + await Preferences.set({ key: this.KEY_QR_CODE_DARK_G, value: JSON.stringify(this.qrCodeDarkG) }); this.qrCodeDarkB = 40; - await this.storageSet("qrCodeDarkB", this.qrCodeDarkB); + await Preferences.set({ key: this.KEY_QR_CODE_DARK_B, value: JSON.stringify(this.qrCodeDarkB) }); this.qrCodeMargin = 3; - await this.storageSet("qrCodeMargin", this.qrCodeMargin); - } - - get result(): string { - return this._scannedData; - } - - set result(value: string) { - this._scannedData = value; - } - - get resultFormat(): string { - return this._scannedDataFormat; - } - - set resultFormat(value: string) { - this._scannedDataFormat = value; - } - - get scanRecords(): ScanRecord[] { - return this._scanRecords; - } - - set scanRecords(value: ScanRecord[]) { - this._scanRecords = value; + await Preferences.set({ key: this.KEY_QR_CODE_MARGIN, value: JSON.stringify(this.qrCodeMargin) }); } async saveScanRecord(value: string): Promise { @@ -786,23 +1377,23 @@ export class EnvService { if (this.recordSource != null) { record.source = this.recordSource; if (this.recordSource == 'scan') { - record.barcodeType = this._scannedDataFormat; + record.barcodeType = this.resultContentFormat; } } else { record.source = "view"; } - if (this._scanRecords == null) { - this._scanRecords = []; + if (this.scanRecords == null) { + this.scanRecords = []; } - this._scanRecords.unshift(record); + this.scanRecords.unshift(record); if (this.recordsLimit != -1) { - if (this._scanRecords.length > this.recordsLimit) { - this._scanRecords = this._scanRecords.slice(0, this.recordsLimit); + if (this.scanRecords.length > this.recordsLimit) { + this.scanRecords = this.scanRecords.slice(0, this.recordsLimit); } } try { - const stringified = JSON.stringify(this._scanRecords); - await this.storageSet(environment.storageScanRecordKey, stringified); + const stringified = JSON.stringify(this.scanRecords); + await Preferences.set({ key: this.KEY_SCAN_RECORDS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); @@ -813,21 +1404,21 @@ export class EnvService { async saveRestoredScanRecords(records: ScanRecord[]): Promise { records.forEach( r => { - this._scanRecords.unshift(r); + this.scanRecords.unshift(r); } ); - this._scanRecords.forEach( + this.scanRecords.forEach( t => { const tCreatedAt = t.createdAt; t.createdAt = new Date(tCreatedAt); } ); - this._scanRecords.sort((r1, r2) => { + this.scanRecords.sort((r1, r2) => { return r2.createdAt.getTime() - r1.createdAt.getTime(); }); try { - const stringified = JSON.stringify(this._scanRecords); - await this.storageSet(environment.storageScanRecordKey, stringified); + const stringified = JSON.stringify(this.scanRecords); + await Preferences.set({ key: this.KEY_SCAN_RECORDS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); @@ -838,10 +1429,10 @@ export class EnvService { async saveRestoredBookmarks(bookmarks: Bookmark[]): Promise { bookmarks.forEach( b => { - this._bookmarks.unshift(b); + this.bookmarks.unshift(b); } ); - this._bookmarks.forEach( + this.bookmarks.forEach( b => { if (b.id == null) { b.id = uuidv4(); @@ -850,12 +1441,12 @@ export class EnvService { b.createdAt = new Date(tCreatedAt); } ); - this._bookmarks.sort((a, b) => { + this.bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); try { - const stringified = JSON.stringify(this._bookmarks); - await this.storageSet(environment.storageBookmarkKey, stringified); + const stringified = JSON.stringify(this.bookmarks); + await Preferences.set({ key: this.KEY_BOOKMARKS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); @@ -864,13 +1455,13 @@ export class EnvService { } async undoScanRecordDeletion(record: ScanRecord): Promise { - this._scanRecords.push(record); - this._scanRecords.sort((r1, r2) => { + this.scanRecords.push(record); + this.scanRecords.sort((r1, r2) => { return r2.createdAt.getTime() - r1.createdAt.getTime(); }); try { - const stringified = JSON.stringify(this._scanRecords); - await this.storageSet(environment.storageScanRecordKey, stringified); + const stringified = JSON.stringify(this.scanRecords); + await Preferences.set({ key: this.KEY_SCAN_RECORDS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); @@ -879,12 +1470,12 @@ export class EnvService { } async deleteScanRecord(recordId: string): Promise { - const index = this._scanRecords.findIndex(r => r.id === recordId); + const index = this.scanRecords.findIndex(r => r.id === recordId); if (index !== -1) { - this._scanRecords.splice(index, 1); + this.scanRecords.splice(index, 1); try { - const stringified = JSON.stringify(this._scanRecords); - await this.storageSet(environment.storageScanRecordKey, stringified); + const stringified = JSON.stringify(this.scanRecords); + await Preferences.set({ key: this.KEY_SCAN_RECORDS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); @@ -894,10 +1485,10 @@ export class EnvService { } async deleteAllScanRecords(): Promise { - this._scanRecords = []; + this.scanRecords = []; try { - const stringified = JSON.stringify(this._scanRecords); - await this.storageSet(environment.storageScanRecordKey, stringified); + const stringified = JSON.stringify(this.scanRecords); + await Preferences.set({ key: this.KEY_SCAN_RECORDS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify scanRecords: " + JSON.stringify(e), "long", "top"); @@ -905,12 +1496,8 @@ export class EnvService { } } - get bookmarks(): Bookmark[] { - return this._bookmarks; - } - async saveBookmark(value: string, tag: string): Promise { - const index = this._bookmarks.findIndex(x => x.text === value); + const index = this.bookmarks.findIndex(x => x.text === value); if (index === -1) { const bookmark = new Bookmark(); const date = new Date(); @@ -918,13 +1505,13 @@ export class EnvService { bookmark.text = value; bookmark.createdAt = date; bookmark.tag = tag; - this._bookmarks.unshift(bookmark); - this._bookmarks.sort((a, b) => { + this.bookmarks.unshift(bookmark); + this.bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); try { - const stringified = JSON.stringify(this._bookmarks); - await this.storageSet(environment.storageBookmarkKey, stringified); + const stringified = JSON.stringify(this.bookmarks); + await Preferences.set({ key: this.KEY_BOOKMARKS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); @@ -937,13 +1524,13 @@ export class EnvService { } async undoBookmarkDeletion(bookmark: Bookmark): Promise { - this._bookmarks.push(bookmark); - this._bookmarks.sort((a, b) => { + this.bookmarks.push(bookmark); + this.bookmarks.sort((a, b) => { return ('' + a.tag ?? '').localeCompare(b.tag ?? ''); }); try { - const stringified = JSON.stringify(this._bookmarks); - await this.storageSet(environment.storageBookmarkKey, stringified); + const stringified = JSON.stringify(this.bookmarks); + await Preferences.set({ key: this.KEY_BOOKMARKS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); @@ -952,12 +1539,12 @@ export class EnvService { } async deleteBookmark(text: string): Promise { - const index = this._bookmarks.findIndex(t => t.text === text); + const index = this.bookmarks.findIndex(t => t.text === text); if (index !== -1) { - this._bookmarks.splice(index, 1); + this.bookmarks.splice(index, 1); try { - const stringified = JSON.stringify(this._bookmarks); - await this.storageSet(environment.storageBookmarkKey, stringified); + const stringified = JSON.stringify(this.bookmarks); + await Preferences.set({ key: this.KEY_BOOKMARKS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); @@ -967,10 +1554,10 @@ export class EnvService { } async deleteAllBookmarks(): Promise { - this._bookmarks = []; + this.bookmarks = []; try { - const stringified = JSON.stringify(this._bookmarks); - await this.storageSet(environment.storageBookmarkKey, stringified); + const stringified = JSON.stringify(this.bookmarks); + await Preferences.set({ key: this.KEY_BOOKMARKS, value: stringified }); } catch (e) { if (this.isDebugging) { this.presentToast("Err when stringify bookmarks: " + JSON.stringify(e), "long", "top"); diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index af5337f..ea66cd4 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -130,6 +130,7 @@ "OPEN": "Öffnen", "OPEN_URL": "Öffne URL", "OPEN_WITH_...": "Öffnen mit...", + "OPTIMIZING_DATA": "Optimierung der Daten", "ORGANIZATION": "Organization", "ORIGINAL": "Original", "OTHERS": "Andere", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index a0fb795..3deb4fd 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -130,6 +130,7 @@ "OPEN": "Open", "OPEN_URL": "Open URL", "OPEN_WITH_...": "Open with...", + "OPTIMIZING_DATA": "Optimizing data", "ORGANIZATION": "Organization", "ORIGINAL": "Original", "OTHERS": "Others", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 4967437..838f549 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -130,6 +130,7 @@ "OPEN": "Ouvrir", "OPEN_URL": "Ouvrir l'URL", "OPEN_WITH_...": "Ouvrir avec...", + "OPTIMIZING_DATA": "Optimiser les données", "ORGANIZATION": "Organisme", "ORIGINAL": "Original", "OTHERS": "Autres", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 4cf8d52..d67b125 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -130,6 +130,7 @@ "OPEN": "Aprire", "OPEN_URL": "Aprire l'URL", "OPEN_WITH_...": "Apri con...", + "OPTIMIZING_DATA": "Ottimizzazione dei dati", "ORGANIZATION": "Organizzazione", "ORIGINAL": "Orginale", "OTHERS": "Altri", diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index ce92501..9c7ef7a 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -130,6 +130,7 @@ "OPEN": "打开", "OPEN_URL": "打开网址", "OPEN_WITH_...": "以下方式打开", + "OPTIMIZING_DATA": "优化数据", "ORGANIZATION": "组织", "ORIGINAL": "原始", "OTHERS": "其他", diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index c0313cd..8800132 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -130,6 +130,7 @@ "OPEN": "打開", "OPEN_URL": "打開網址", "OPEN_WITH_...": "用以下方式打開", + "OPTIMIZING_DATA": "最佳化數據", "ORGANIZATION": "組織", "ORIGINAL": "原始", "OTHERS": "其他", From 484004ce1fad8fae79b0f56e2e4ba77f319fa061 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sun, 16 Oct 2022 14:10:35 +0800 Subject: [PATCH 11/19] style: change wordings --- src/app/services/env.service.ts | 2 +- src/assets/i18n/de.json | 2 +- src/assets/i18n/en.json | 2 +- src/assets/i18n/fr.json | 2 +- src/assets/i18n/it.json | 2 +- src/assets/i18n/zh-CN.json | 2 +- src/assets/i18n/zh-HK.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index b239de1..044815a 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -202,7 +202,7 @@ export class EnvService { }); } ); - await this.presentToast(this.translate.instant("OPTIMIZING_DATA"), "short", "bottom"); + await this.presentToast(this.translate.instant("OPTIMIZING_DATA_..."), "short", "bottom"); await oldStorage.get(this.KEY_START_PAGE).then( async value => { if (value != null) { diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index ea66cd4..3d09a1c 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -130,7 +130,7 @@ "OPEN": "Öffnen", "OPEN_URL": "Öffne URL", "OPEN_WITH_...": "Öffnen mit...", - "OPTIMIZING_DATA": "Optimierung der Daten", + "OPTIMIZING_DATA_...": "Optimierung der Daten...", "ORGANIZATION": "Organization", "ORIGINAL": "Original", "OTHERS": "Andere", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 3deb4fd..5b9b946 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -130,7 +130,7 @@ "OPEN": "Open", "OPEN_URL": "Open URL", "OPEN_WITH_...": "Open with...", - "OPTIMIZING_DATA": "Optimizing data", + "OPTIMIZING_DATA_...": "Optimizing data...", "ORGANIZATION": "Organization", "ORIGINAL": "Original", "OTHERS": "Others", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 838f549..b16ae8a 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -130,7 +130,7 @@ "OPEN": "Ouvrir", "OPEN_URL": "Ouvrir l'URL", "OPEN_WITH_...": "Ouvrir avec...", - "OPTIMIZING_DATA": "Optimiser les données", + "OPTIMIZING_DATA_...": "Optimiser les données...", "ORGANIZATION": "Organisme", "ORIGINAL": "Original", "OTHERS": "Autres", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index d67b125..900c0a1 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -130,7 +130,7 @@ "OPEN": "Aprire", "OPEN_URL": "Aprire l'URL", "OPEN_WITH_...": "Apri con...", - "OPTIMIZING_DATA": "Ottimizzazione dei dati", + "OPTIMIZING_DATA_...": "Ottimizzazione dei dati...", "ORGANIZATION": "Organizzazione", "ORIGINAL": "Orginale", "OTHERS": "Altri", diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index 9c7ef7a..17f2f62 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -130,7 +130,7 @@ "OPEN": "打开", "OPEN_URL": "打开网址", "OPEN_WITH_...": "以下方式打开", - "OPTIMIZING_DATA": "优化数据", + "OPTIMIZING_DATA_...": "优化数据...", "ORGANIZATION": "组织", "ORIGINAL": "原始", "OTHERS": "其他", diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index 8800132..90f1c0e 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -130,7 +130,7 @@ "OPEN": "打開", "OPEN_URL": "打開網址", "OPEN_WITH_...": "用以下方式打開", - "OPTIMIZING_DATA": "最佳化數據", + "OPTIMIZING_DATA_...": "最佳化數據...", "ORGANIZATION": "組織", "ORIGINAL": "原始", "OTHERS": "其他", From 1975b9a6f7827cd4319f341d4873c34d4f18a347 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sun, 16 Oct 2022 14:21:46 +0800 Subject: [PATCH 12/19] chore: version bump --- android/app/build.gradle | 4 ++-- ios/App/App.xcodeproj/project.pbxproj | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- src/app/services/env.service.ts | 10 +++++----- src/assets/i18n/de.json | 2 +- src/assets/i18n/en.json | 2 +- src/assets/i18n/fr.json | 2 +- src/assets/i18n/it.json | 2 +- src/assets/i18n/zh-CN.json | 2 +- src/assets/i18n/zh-HK.json | 2 +- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 8b7d3df..71671a9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.tomfong.simpleqr" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 3000100 - versionName "3.0.1" + versionCode 3010000 + versionName "3.1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 9e23e8e..20bf9bb 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -396,7 +396,7 @@ INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.0.1; + MARKETING_VERSION = 3.1.0; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.tomfong.simpleqr; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -419,7 +419,7 @@ INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.0.1; + MARKETING_VERSION = 3.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.tomfong.simpleqr; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Simple QR"; diff --git a/package-lock.json b/package-lock.json index 67329fc..9d7c7b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simple-qr", - "version": "3.0.1", + "version": "3.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "simple-qr", - "version": "3.0.1", + "version": "3.1.0", "dependencies": { "@angular/animations": "^14.2.3", "@angular/cdk": "^14.2.2", diff --git a/package.json b/package.json index ddda0a0..9111808 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simple-qr", - "version": "3.0.1", + "version": "3.1.0", "author": "Tom Fong", "homepage": "https://tomfong.github.io", "scripts": { diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index 044815a..81f8687 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -31,7 +31,7 @@ export declare type ResultPageButtonsType = 'detailed' | 'icon-only'; }) export class EnvService { - public appVersionNumber: string = '3.0.1'; + public appVersionNumber: string = '3.1.0'; public startPage: TabPageType = "/tabs/scan"; public historyPageStartSegment: HistoryPageSegmentType = 'history'; @@ -119,10 +119,10 @@ export class EnvService { public readonly KEY_SHOW_SEND_EMAIL_BUTTON = "showSendEmailButton"; public readonly KEY_AUTO_EXIT_MIN = "autoExitAppMin"; - public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30001"; - public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30001"; - public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30000"; - public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30000"; + public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30100"; + public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30100"; + public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30001"; + public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30001"; public readonly APP_FOLDER_NAME: string = 'SimpleQR'; diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 3d09a1c..57f45e7 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -299,7 +299,7 @@ "UPC": "Universeller Produktcode " }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details.

Android-Benutzer können jetzt die Kachel Simple QR im Bereich Schnelleinstellungen für einen schnellen Zugriff aktivieren.

", + "UPDATE_NOTES_ANDROID": "

Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details.

", "UPDATE_NOTES_IOS": "Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details." } } \ No newline at end of file diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 5b9b946..22a2864 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -299,7 +299,7 @@ "UPC": "Universal Product Code " }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

This release brings you several updates and new features. Please check GitHub for details.

Android users can now enable the Simple QR tile in the Quick Settings panel for quick access.

", + "UPDATE_NOTES_ANDROID": "

This release brings you several updates and new features. Please check GitHub for details.

", "UPDATE_NOTES_IOS": "This release brings you several updates and new features. Please check GitHub for details." } } \ No newline at end of file diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index b16ae8a..ba69477 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -299,7 +299,7 @@ "UPC": "Code produit universel" }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails.

Les utilisateurs d'Android peuvent désormais activer la vignette Simple QR dans le panneau Paramètres rapides pour un accès rapide.

", + "UPDATE_NOTES_ANDROID": "

Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails.

", "UPDATE_NOTES_IOS": "Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails." } } \ No newline at end of file diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 900c0a1..5b12c6a 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -299,7 +299,7 @@ "UPC": "Codice Prodotto Universale " }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli.

Gli utenti Android possono ora abilitare il riquadro Simple QR nel pannello Impostazioni rapide per un rapido accesso.

", + "UPDATE_NOTES_ANDROID": "

Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli.

", "UPDATE_NOTES_IOS": "Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli." } } \ No newline at end of file diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index 17f2f62..306c79e 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -299,7 +299,7 @@ "UPC": "通用产品代码" }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

此版本为您带来多项更新和新功能,详情请查看 GitHub。

Android 用户现在可以在快速设定面板中加入简易 QR 按键以进行快速启动。

", + "UPDATE_NOTES_ANDROID": "

此版本为您带来多项更新和新功能,详情请查看 GitHub。

", "UPDATE_NOTES_IOS": "此版本为您带来多项更新和新功能,详情请查看 GitHub。" } } \ No newline at end of file diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index 90f1c0e..b8767a9 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -299,7 +299,7 @@ "UPC": "通用產品代碼" }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

此版本為您帶來多項更新和新功能,詳情請查看 GitHub。

Android 用戶現在可以在快速設定面板中加入簡易 QR 按鍵以進行快速啟動。

", + "UPDATE_NOTES_ANDROID": "

此版本為您帶來多項更新和新功能,詳情請查看 GitHub。

", "UPDATE_NOTES_IOS": "此版本為您帶來多項更新和新功能,詳情請查看 GitHub。" } } \ No newline at end of file From 786528f52b07d3657a4deffbd10f27c0b586cecf Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Sun, 16 Oct 2022 14:42:13 +0800 Subject: [PATCH 13/19] chore: upgrade @awesome-cordova-plugins --- package-lock.json | 98 +++++++++++++++++++++++------------------------ package.json | 14 +++---- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d7c7b7..5dbc2e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,13 +19,13 @@ "@angular/platform-browser": "^14.2.3", "@angular/platform-browser-dynamic": "^14.2.6", "@angular/router": "^14.2.6", - "@awesome-cordova-plugins/aes-256": "^5.46.0", - "@awesome-cordova-plugins/chooser": "^5.46.0", - "@awesome-cordova-plugins/core": "^5.46.0", - "@awesome-cordova-plugins/screen-orientation": "^5.46.0", - "@awesome-cordova-plugins/sms": "^5.46.0", - "@awesome-cordova-plugins/social-sharing": "^5.46.0", - "@awesome-cordova-plugins/theme-detection": "^5.46.0", + "@awesome-cordova-plugins/aes-256": "^6.0.0", + "@awesome-cordova-plugins/chooser": "^6.0.0", + "@awesome-cordova-plugins/core": "^6.0.0", + "@awesome-cordova-plugins/screen-orientation": "^6.0.0", + "@awesome-cordova-plugins/sms": "^6.0.0", + "@awesome-cordova-plugins/social-sharing": "^6.0.0", + "@awesome-cordova-plugins/theme-detection": "^6.0.0", "@capacitor-community/barcode-scanner": "^3.0.0", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^2.0.0-0", @@ -620,9 +620,9 @@ "dev": true }, "node_modules/@awesome-cordova-plugins/aes-256": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-5.46.0.tgz", - "integrity": "sha512-Sq7Ze/QTZ7VBcS7Vz699IFbZ3K8n3g1Sp1m14QtP8wdgqJr/zq4OPFTX5Sm2LsdGddmYoJKW3c+nAxSdBY45DQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-6.0.0.tgz", + "integrity": "sha512-sZuxt7jAB22ucdnbFkDj9z8zFeRZvhPUCBLtrmYNygSTUXGjubvdld4v6heo4Ynyjn7uIuP8u6KfATumEMPP8A==", "dependencies": { "@types/cordova": "latest" }, @@ -632,9 +632,9 @@ } }, "node_modules/@awesome-cordova-plugins/chooser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-5.46.0.tgz", - "integrity": "sha512-m14q3DnhWCwPC1/xOkABkkI0Y2pQEwFcf68mZfhRTtMYoS4tbBhJhxTbTMDk4nHzfb2bxxTuaSbwcDfcVFjSWg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-6.0.0.tgz", + "integrity": "sha512-RYh+A8xQq+7N5HaXk+aFtLqhuq6sR649CeOQAu3LzfwxujwOKUIKXFJHAJVvgdMuzHxfjcURpsz+tZjJEi2Yog==", "dependencies": { "@types/cordova": "latest" }, @@ -644,9 +644,9 @@ } }, "node_modules/@awesome-cordova-plugins/core": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.46.0.tgz", - "integrity": "sha512-EkCTsS9sE4lXzPbKZonn7PEzoF1/vvhsJDnIyqP3FObBqb8fjqhEz4r7z4iNRNHel4Mq9bICzI5J/3vQ+jbWVw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-6.0.0.tgz", + "integrity": "sha512-BufKNyfif6+A82EkUS+JSC9tzhcYYJhU08TsUbGtcOKJACbyhn8gEuOujA9Ue7e+/I6e7VNqqzUru7JxMaAEZA==", "dependencies": { "@types/cordova": "latest" }, @@ -655,9 +655,9 @@ } }, "node_modules/@awesome-cordova-plugins/screen-orientation": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-5.46.0.tgz", - "integrity": "sha512-RaCEGQCChk8/R5aWsNbKJSDi3wh6tI0VFufWSyodxoaWuy8cjRmhhdH+Y1Nqq2h19oNoBGsXQOGOONUwDBaLyA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-6.0.0.tgz", + "integrity": "sha512-HOQAl+0Zff8jPbXquoPB6FWhE4OCqLk5bLZV4P9QgrR3jGd4ECmaoO9dUuiNrYD+Cde/8gHeeZsHx97xvRf+qA==", "dependencies": { "@types/cordova": "latest" }, @@ -667,9 +667,9 @@ } }, "node_modules/@awesome-cordova-plugins/sms": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-5.46.0.tgz", - "integrity": "sha512-BkzGq/jis6p3o+weTy0qpGYgUEaU9XXuPa4esJcU7NDObmV3MJMhH09235gO8TLHUpH5vM4aDDbLcEvsXHr8qg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-6.0.0.tgz", + "integrity": "sha512-8DsvQ7hKfVe/4Zy6ZE1JenGFayzRI24qHC7hrxmEGJOZqzBoSX+V5MbmjrSjdO7sVFcRbxdD2rzJd2LPJvENHQ==", "dependencies": { "@types/cordova": "latest" }, @@ -679,9 +679,9 @@ } }, "node_modules/@awesome-cordova-plugins/social-sharing": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-5.46.0.tgz", - "integrity": "sha512-Q4t+MT29nJTUYD43Fq/uoX4mzegi2utQTx16yZBiTdOuJ3gA0BI0p6bJy6Xl55y4qo/udk16XsM09BVN+VBN2w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-6.0.0.tgz", + "integrity": "sha512-0J6AtvZ+kt8geRoG0bQcPp35YSBwYthvVMj/jQ827Jdt+afnoUTK1atSjrcv6YgPNxNpQE3FycfEXeNZuGY0+A==", "dependencies": { "@types/cordova": "latest" }, @@ -691,9 +691,9 @@ } }, "node_modules/@awesome-cordova-plugins/theme-detection": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-5.46.0.tgz", - "integrity": "sha512-2hWY2qTbPb9ctBpEP7rTRA5I3JLMq+Z9+/ejyVIphruOpSMMuk0mJbwYkwk3le5ccbq0L7Yw14a2wAljmjCXUg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-6.0.0.tgz", + "integrity": "sha512-Eo1Vm4elnAxRnRIJ6g2kHVFw36kdNRxQrJDU0JTwh8SW5DlxKsgSsxZYcuuTeer4fQcT8p/3Qcj0+kJUmdKmQw==", "dependencies": { "@types/cordova": "latest" }, @@ -15042,57 +15042,57 @@ "dev": true }, "@awesome-cordova-plugins/aes-256": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-5.46.0.tgz", - "integrity": "sha512-Sq7Ze/QTZ7VBcS7Vz699IFbZ3K8n3g1Sp1m14QtP8wdgqJr/zq4OPFTX5Sm2LsdGddmYoJKW3c+nAxSdBY45DQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-6.0.0.tgz", + "integrity": "sha512-sZuxt7jAB22ucdnbFkDj9z8zFeRZvhPUCBLtrmYNygSTUXGjubvdld4v6heo4Ynyjn7uIuP8u6KfATumEMPP8A==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/chooser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-5.46.0.tgz", - "integrity": "sha512-m14q3DnhWCwPC1/xOkABkkI0Y2pQEwFcf68mZfhRTtMYoS4tbBhJhxTbTMDk4nHzfb2bxxTuaSbwcDfcVFjSWg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-6.0.0.tgz", + "integrity": "sha512-RYh+A8xQq+7N5HaXk+aFtLqhuq6sR649CeOQAu3LzfwxujwOKUIKXFJHAJVvgdMuzHxfjcURpsz+tZjJEi2Yog==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/core": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.46.0.tgz", - "integrity": "sha512-EkCTsS9sE4lXzPbKZonn7PEzoF1/vvhsJDnIyqP3FObBqb8fjqhEz4r7z4iNRNHel4Mq9bICzI5J/3vQ+jbWVw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-6.0.0.tgz", + "integrity": "sha512-BufKNyfif6+A82EkUS+JSC9tzhcYYJhU08TsUbGtcOKJACbyhn8gEuOujA9Ue7e+/I6e7VNqqzUru7JxMaAEZA==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/screen-orientation": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-5.46.0.tgz", - "integrity": "sha512-RaCEGQCChk8/R5aWsNbKJSDi3wh6tI0VFufWSyodxoaWuy8cjRmhhdH+Y1Nqq2h19oNoBGsXQOGOONUwDBaLyA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-6.0.0.tgz", + "integrity": "sha512-HOQAl+0Zff8jPbXquoPB6FWhE4OCqLk5bLZV4P9QgrR3jGd4ECmaoO9dUuiNrYD+Cde/8gHeeZsHx97xvRf+qA==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/sms": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-5.46.0.tgz", - "integrity": "sha512-BkzGq/jis6p3o+weTy0qpGYgUEaU9XXuPa4esJcU7NDObmV3MJMhH09235gO8TLHUpH5vM4aDDbLcEvsXHr8qg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-6.0.0.tgz", + "integrity": "sha512-8DsvQ7hKfVe/4Zy6ZE1JenGFayzRI24qHC7hrxmEGJOZqzBoSX+V5MbmjrSjdO7sVFcRbxdD2rzJd2LPJvENHQ==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/social-sharing": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-5.46.0.tgz", - "integrity": "sha512-Q4t+MT29nJTUYD43Fq/uoX4mzegi2utQTx16yZBiTdOuJ3gA0BI0p6bJy6Xl55y4qo/udk16XsM09BVN+VBN2w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-6.0.0.tgz", + "integrity": "sha512-0J6AtvZ+kt8geRoG0bQcPp35YSBwYthvVMj/jQ827Jdt+afnoUTK1atSjrcv6YgPNxNpQE3FycfEXeNZuGY0+A==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/theme-detection": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-5.46.0.tgz", - "integrity": "sha512-2hWY2qTbPb9ctBpEP7rTRA5I3JLMq+Z9+/ejyVIphruOpSMMuk0mJbwYkwk3le5ccbq0L7Yw14a2wAljmjCXUg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-6.0.0.tgz", + "integrity": "sha512-Eo1Vm4elnAxRnRIJ6g2kHVFw36kdNRxQrJDU0JTwh8SW5DlxKsgSsxZYcuuTeer4fQcT8p/3Qcj0+kJUmdKmQw==", "requires": { "@types/cordova": "latest" } diff --git a/package.json b/package.json index 9111808..e29cdfb 100644 --- a/package.json +++ b/package.json @@ -28,13 +28,13 @@ "@angular/platform-browser": "^14.2.3", "@angular/platform-browser-dynamic": "^14.2.6", "@angular/router": "^14.2.6", - "@awesome-cordova-plugins/aes-256": "^5.46.0", - "@awesome-cordova-plugins/chooser": "^5.46.0", - "@awesome-cordova-plugins/core": "^5.46.0", - "@awesome-cordova-plugins/screen-orientation": "^5.46.0", - "@awesome-cordova-plugins/sms": "^5.46.0", - "@awesome-cordova-plugins/social-sharing": "^5.46.0", - "@awesome-cordova-plugins/theme-detection": "^5.46.0", + "@awesome-cordova-plugins/aes-256": "^6.0.0", + "@awesome-cordova-plugins/chooser": "^6.0.0", + "@awesome-cordova-plugins/core": "^6.0.0", + "@awesome-cordova-plugins/screen-orientation": "^6.0.0", + "@awesome-cordova-plugins/sms": "^6.0.0", + "@awesome-cordova-plugins/social-sharing": "^6.0.0", + "@awesome-cordova-plugins/theme-detection": "^6.0.0", "@capacitor-community/barcode-scanner": "^3.0.0", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^2.0.0-0", From 6aa3746f09575f3d9b62c3de78f529eee2958995 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 18 Oct 2022 12:13:38 +0800 Subject: [PATCH 14/19] feat: export to CSV --- .../setting-record/setting-record.page.html | 39 ++++- .../setting-record/setting-record.page.ts | 141 ++++++++++++++++++ src/assets/i18n/de.json | 6 + src/assets/i18n/en.json | 6 + src/assets/i18n/fr.json | 6 + src/assets/i18n/it.json | 6 + src/assets/i18n/zh-CN.json | 6 + src/assets/i18n/zh-HK.json | 6 + 8 files changed, 215 insertions(+), 1 deletion(-) diff --git a/src/app/pages/setting-record/setting-record.page.html b/src/app/pages/setting-record/setting-record.page.html index 836a6b4..20704b4 100644 --- a/src/app/pages/setting-record/setting-record.page.html +++ b/src/app/pages/setting-record/setting-record.page.html @@ -197,7 +197,7 @@
-
+
{{ 'RESTORE' | translate }} @@ -215,4 +215,41 @@
+
+ {{ 'EXPORT' | translate }} + + +

+ + {{ 'MSG.EXPORT_TO_CSV_EXPLAIN' | translate }} + +

+
+
+
+ + {{ 'EXPORT_TO_CSV' | translate }} + +
+
+ + +
+ {{ 'IMPORT' | translate }} + + +

+ + {{ 'MSG.IMPORT_FROM_CSV_EXPLAIN' | translate }} + +

+
+
+
+ + {{ 'COMING_SOON' | translate }} + +
+
+ \ No newline at end of file diff --git a/src/app/pages/setting-record/setting-record.page.ts b/src/app/pages/setting-record/setting-record.page.ts index 607de42..b658e82 100644 --- a/src/app/pages/setting-record/setting-record.page.ts +++ b/src/app/pages/setting-record/setting-record.page.ts @@ -13,6 +13,7 @@ import { Bookmark } from 'src/app/models/bookmark'; import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; import { Preferences } from '@capacitor/preferences'; +import { de, enUS, fr, it, zhCN, zhHK } from 'date-fns/locale'; @Component({ selector: 'app-setting-record', @@ -297,6 +298,146 @@ export class SettingRecordPage { }); } + async onExportToCsv() { + const loading = await this.presentLoading(this.translate.instant("EXPORTING")); + const now = format(new Date(), "yyyyMMddHHmmss"); + const filename = `simpleqr-${now}.csv`; + let rawCsvData: string; + switch (this.env.language) { + case "de": + rawCsvData = "ID,Inhalt,Erstellt um,Quelle,Barcode-Typ,Lesezeichen gesetzt?,Etikett\r\n"; + break; + case "en": + rawCsvData = "ID,Content,Created at,Source,Barcode Type,Bookmarked?,Tag\r\n"; + break; + case "fr": + rawCsvData = "ID,Le contenu,Créé à,La source,Type de code-barres,En signet?,Étiquette\r\n"; + break; + case "it": + rawCsvData = "ID,Contenuto,Creato a,Fonte,Tipo di codice a barre,Aggiunto ai preferiti?,Etichetta\r\n"; + break; + case "zh-CN": + rawCsvData = "ID,内容,建立于,来源,条码类型,已书签?,标签\r\n"; + break; + case "zh-HK": + rawCsvData = "ID,内容,建立於,來源,條碼類型,已書籤?,標籤\r\n"; + break; + default: + rawCsvData = "ID,Content,Created at,Source,Barcode Type,Bookmarked?,Tag\r\n"; + } + this.env.scanRecords.forEach(r => { + rawCsvData += `${r.id},"${r.text}","${this.maskDatetime(r.createdAt)}",${this.maskSource(r.source)},${r.barcodeType ?? ''},` + const bookmark = this.env.bookmarks.find(b => b.text == r.text); + if (bookmark != null) { + rawCsvData += `TRUE,"${bookmark.tag}"\r\n`; + } else { + rawCsvData += "FALSE, \r\n"; + } + }); + await Filesystem.writeFile({ + path: `${filename}`, + data: rawCsvData, + directory: Directory.External, + encoding: Encoding.UTF8, + recursive: true + }).then( + async result => { + loading.dismiss(); + const loading2 = await this.presentLoading(this.translate.instant("PLEASE_WAIT")); + await this.socialSharing.share(null, filename, result.uri, null).then(() => { + loading2.dismiss(); + }).catch( + err => { + loading2.dismiss(); + if (this.env.isDebugging) { + this.presentToast("Error when SocialSharing.share: " + JSON.stringify(err), "long", "top"); + } + } + ); + } + ).catch( + err => { + loading.dismiss(); + if (this.env.isDebugging) { + this.presentToast("Error when call Filesystem.writeFile: " + JSON.stringify(err), "long", "top"); + } else { + this.presentToast("Error!", "short", "bottom"); + } + } + ); + } + + async onImportFromCsv() { + // TODO: Import from CSV + } + + maskDatetime(date: Date): string { + if (!date) { + return "-"; + } + let locale: Locale; + switch (this.env.language) { + case "de": + locale = de; + break; + case "en": + locale = enUS; + break; + case "fr": + locale = fr; + break; + case "it": + locale = it; + break; + case "zh-CN": + locale = zhCN; + break; + case "zh-HK": + locale = zhHK; + break; + default: + locale = enUS; + } + return format(date, "PP pp", { locale: locale }); + } + + maskSource(source: 'create' | 'view' | 'scan' | undefined): string { + if (source == null) { + return "-"; + } + let locale: Locale; + switch (this.env.language) { + case "de": + locale = de; + break; + case "en": + locale = enUS; + break; + case "fr": + locale = fr; + break; + case "it": + locale = it; + break; + case "zh-CN": + locale = zhCN; + break; + case "zh-HK": + locale = zhHK; + break; + default: + locale = enUS; + } + switch (source) { + case 'create': + return `${this.translate.instant("CREATED")}`; + case 'view': + return `${this.translate.instant("VIEWED")}`; + case 'scan': + return `${this.translate.instant("SCANNED")}`; + } + } + async presentToast(msg: string, duration: "short" | "long", pos: "top" | "center" | "bottom") { await Toast.show({ text: msg, diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 57f45e7..91c9612 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -45,6 +45,7 @@ "CLOSE": "Schließen", "COLOR": "Farbe", "COLOR_THEME": "Farbthema", + "COMING_SOON": "Bald verfügbar", "CONTACT_METHOD": "Kontakt Methode", "CONTACT_NAME": "Kontakt Name", "CONTENT": "Inhalt", @@ -78,6 +79,9 @@ "ERROR_CORRECTION_LEVEL": "Fehlerkorrektur-Level", "EXIT": "Beenden", "EXIT_APP": "App beenden", + "EXPORT": "Exportieren", + "EXPORTING": "Exportieren", + "EXPORT_TO_CSV": "In CSV exportieren", "FAX_NUMBER": "Fax Nummer", "FEMALE": "Weiblich", "FIRST_NAME": "Vorname", @@ -240,8 +244,10 @@ "EMAIL_SUBJECT_MAX_LENGTH": "Max. 78 Zeichen", "ERROR_CORRECTION_LEVEL_EXPLAIN": "

Der QR-Code verfügt über eine Fehlerkorrekturfunktion, die es ermöglicht, Daten wiederherzustellen, selbst wenn der Code beschädigt ist.


Es stehen 4 Stufen zur Verfügung:

Level L stellt 7 % der Datenbytes wieder her.

Level M stellt 15 % der Datenbytes wieder her.

Level Q stellt 25 % der Datenbytes wieder her.

Level H stellt 30 % der Datenbytes wieder her.


Bitte beachte, dass eine Erhöhung der Level die Fehlerkorrekturfähigkeit verbessern kann, aber auch die Größe des QR-Codes erhöht. Daher wird für allgemeine Fälle die Level M empfohlen.

", "EXIT_APP": "

Bist du sicher, dass du die App beenden willst?

Wenn dir Simple QR gefällt, bewerte es bitte im Store.

", + "EXPORT_TO_CSV_EXPLAIN": "Sie können alle Datensätze und Lesezeichen in eine CSV-Datei exportieren.", "FAILED_SAVING_CONTACT": "Kontakt konnte nicht gespeichert werden", "FAIL_PREPARE_SMS": "Nachricht konnte nicht gesendet werden", + "IMPORT_FROM_CSV_EXPLAIN": "Sie können Datensätze und Lesezeichen aus einer CSV-Datei mit dem von Simple QR definierten Format importieren. Wenn Sie Daten zwischen Android und iOS übertragen möchten, verwenden Sie bitte diese Funktion.", "INPUT_TAG": "Bitte gib dem Lesezeichen einen Tag", "INVALID_BK_FILE": "Dies ist keine gültige Sicherungsdatei.", "NOT_BASE64_DE": "Daten können nicht Base64-dekodiert werden", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 22a2864..142b3bd 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -45,6 +45,7 @@ "CLOSE": "Close", "COLOR": "Color", "COLOR_THEME": "Color Theme", + "COMING_SOON": "Coming soon", "CONTACT_METHOD": "Contact Method", "CONTACT_NAME": "Contact Name", "CONTENT": "Content", @@ -78,6 +79,9 @@ "ERROR_CORRECTION_LEVEL": "Error Correction Level", "EXIT": "Exit", "EXIT_APP": "Exit App", + "EXPORT": "Export", + "EXPORTING": "Exporting", + "EXPORT_TO_CSV": "Export to CSV", "FAX_NUMBER": "Fax Number", "FEMALE": "Female", "FIRST_NAME": "First Name", @@ -240,8 +244,10 @@ "EMAIL_SUBJECT_MAX_LENGTH": "Max. 78 characters", "ERROR_CORRECTION_LEVEL_EXPLAIN": "

QR code has error correction capability to restore data even if the code is damaged.


There are 4 levels available:

Level L restores 7% of data bytes.

Level M restores 15% of data bytes.

Level Q restores 25% of data bytes.

Level H restores 30% of data bytes.


Please be reminded that raising the level can improve error correction capability but also increases the QR code size. Therefore, for general cases, level M is recommended.

", "EXIT_APP": "

Are you sure to exit the app?

If you like Simple QR, please rate it on the store.

", + "EXPORT_TO_CSV_EXPLAIN": "You can export all records and bookmarks to a CSV file.", "FAILED_SAVING_CONTACT": "Failed to save contact", "FAIL_PREPARE_SMS": "Failed to send message", + "IMPORT_FROM_CSV_EXPLAIN": "You can import records and bookmarks from a CSV file with the format defined by Simple QR. If you want to transfer data between Android and iOS, please use this function.", "INPUT_TAG": "Please give a tag to the bookmark", "INVALID_BK_FILE": "This is not a valid backup file.", "NOT_BASE64_DE": "Data cannot be Base64 decoded", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index ba69477..c1f1465 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -45,6 +45,7 @@ "CLOSE": "Fermer", "COLOR": "Couleur", "COLOR_THEME": "Thème de couleur", + "COMING_SOON": "Bientôt disponible", "CONTACT_METHOD": "Méthode de contact", "CONTACT_NAME": "Nom du contact", "CONTENT": "Le contenu", @@ -78,6 +79,9 @@ "ERROR_CORRECTION_LEVEL": "Niveau de correction d'erreur", "EXIT": "Quitter", "EXIT_APP": "Quitter l'application", + "EXPORT": "Exporter", + "EXPORTING": "Exportation", + "EXPORT_TO_CSV": "Exporter vers CSV", "FAX_NUMBER": "Numéro de fax", "FEMALE": "Femelle", "FIRST_NAME": "Prénom", @@ -240,8 +244,10 @@ "EMAIL_SUBJECT_MAX_LENGTH": "Max. 78 caractères", "ERROR_CORRECTION_LEVEL_EXPLAIN": "

Le code QR a une capacité de correction d'erreur pour restaurer les données même si le code est endommagé.


Il existe 4 niveaux disponibles :

Le niveau L restaure 7 % des octets de données.

Le niveau M restaure 15 % des octets de données.

Le niveau Q restaure 25 % des octets de données.

Le niveau H restaure 30 % des octets de données.


N'oubliez pas que l'augmentation du niveau peut améliorer la capacité de correction des erreurs, mais augmente également la taille du code QR. Par conséquent, pour les cas généraux, le niveau M est recommandé.

", "EXIT_APP": "

Voulez-vous vraiment quitter l'application ?

Si vous aimez Simple QR, veuillez l'évaluer sur la magasin.

", + "EXPORT_TO_CSV_EXPLAIN": "Vous pouvez exporter tous les enregistrements et signets dans un fichier CSV.", "FAILED_SAVING_CONTACT": "Échec de l'enregistrement des contacts", "FAIL_PREPARE_SMS": "Échec de l'envoi du message", + "IMPORT_FROM_CSV_EXPLAIN": "Vous pouvez importer des enregistrements et des signets à partir d'un fichier CSV au format défini par Simple QR. Si vous souhaitez transférer des données entre Android et iOS, veuillez utiliser cette fonction.", "INPUT_TAG": "Veuillez donner une étiquette au signet", "INVALID_BK_FILE": "Ce fichier de sauvegarde n'est pas valide.", "NOT_BASE64_DE": "Les données ne peuvent pas être décodées en Base64", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 5b12c6a..bdc0613 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -45,6 +45,7 @@ "CLOSE": "Chiudi", "COLOR": "Colore", "COLOR_THEME": "Tema colore", + "COMING_SOON": "Prossimamente", "CONTACT_METHOD": "Metodi di contatto", "CONTACT_NAME": "Nome", "CONTENT": "Contenuto", @@ -78,6 +79,9 @@ "ERROR_CORRECTION_LEVEL": "Errore di correttezza", "EXIT": "Esci", "EXIT_APP": "Esci dall'app", + "EXPORT": "Esporta", + "EXPORTING": "Esportazione in corso", + "EXPORT_TO_CSV": "Esporta in CSV", "FAX_NUMBER": "Numero fax", "FEMALE": "Donna", "FIRST_NAME": "Nome", @@ -240,8 +244,10 @@ "EMAIL_SUBJECT_MAX_LENGTH": "Massimo 78 caratteri", "ERROR_CORRECTION_LEVEL_EXPLAIN": "

Il codice QR ha la capacità di correzione degli errori per ripristinare i dati anche se il codice è danneggiato.


Sono disponibili 4 livelli::

Il Livello L recupera il 7% di byte di dati.

Il Livello M recupera il 15% dei byte di dati.

Il Livello Q recupera il 25% di byte di dati.

Il Livello H recupera il 30% di byte di dati.


Si ricorda che l'innalzamento del livello può migliorare la capacità di correzione degli errori, ma aumenta anche la dimensione del codice QR. Pertanto, per i casi generali, si raccomanda il livello M.

", "EXIT_APP": "

Sei sicuro di voler uscire?

Se ti piace Simple QR, valutala sullo store

", + "EXPORT_TO_CSV_EXPLAIN": "Puoi esportare tutti i record e i segnalibri in un file CSV.", "FAILED_SAVING_CONTACT": "Salvataggio dei dati fallito", "FAIL_PREPARE_SMS": "Impossibile inviare il messaggio", + "IMPORT_FROM_CSV_EXPLAIN": "Puoi importare record e segnalibri da un file CSV con il formato definito da Simple QR. Se desideri trasferire dati tra Android e iOS, utilizza questa funzione.", "INPUT_TAG": "Si prega di dare un tag al segnalibro", "INVALID_BK_FILE": "Backup non valido.", "NOT_BASE64_DE": "I dati non possono essere decodificati in Base64", diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index 306c79e..8a26fe6 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -45,6 +45,7 @@ "CLOSE": "关闭", "COLOR": "颜色", "COLOR_THEME": "颜色主题", + "COMING_SOON": "即将推出", "CONTACT_METHOD": "联络方法", "CONTACT_NAME": "联络人名称", "CONTENT": "内容", @@ -78,6 +79,9 @@ "ERROR_CORRECTION_LEVEL": "容错等级", "EXIT": "离开", "EXIT_APP": "离开程序", + "EXPORT": "导出", + "EXPORTING": "导出中", + "EXPORT_TO_CSV": "导出到CSV", "FAX_NUMBER": "传真号码", "FEMALE": "女性", "FIRST_NAME": "名字", @@ -240,8 +244,10 @@ "EMAIL_SUBJECT_MAX_LENGTH": "最多 78 个字元", "ERROR_CORRECTION_LEVEL_EXPLAIN": "

QR 码具有容错能力,即使图形有破损,仍然可以被机器读取内容。


容错率分为四个等级:

L 等级可容错 7% 的字码;

M 等级可容错 15% 的字码;

Q 等级可容错 25% 的字码;

H 等级可容错 30% 的字码。


容错率愈高,QR 码图形面积则愈大。因此,在一般情况下建议使用 M 等级。

", "EXIT_APP": "

确定要离开?

若您喜欢简易QR,欢迎前往商店评分。

", + "EXPORT_TO_CSV_EXPLAIN": "您可以将所有扫描记录及书签导出到CSV档案。", "FAILED_SAVING_CONTACT": "无法新增联络人", "FAIL_PREPARE_SMS": "无法传送信息", + "IMPORT_FROM_CSV_EXPLAIN": "您可以从简易QR定义的CSV档案导入记录和书签。若您想在Android和iOS设备之间传输数据,请使用此功能。", "INPUT_TAG": "请为此书签输入一个标签", "INVALID_BK_FILE": "这不是有效的备份档", "NOT_BASE64_DE": "内容不能被 Base64 解码", diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index b8767a9..596b17d 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -45,6 +45,7 @@ "CLOSE": "關閉", "COLOR": "顏色", "COLOR_THEME": "顏色主題", + "COMING_SOON": "即將推出", "CONTACT_METHOD": "聯絡方法", "CONTACT_NAME": "聯絡人名稱", "CONTENT": "内容", @@ -78,6 +79,9 @@ "ERROR_CORRECTION_LEVEL": "容錯等級", "EXIT": "離開", "EXIT_APP": "離開程式", + "EXPORT": "匯出", + "EXPORTING": "匯出中", + "EXPORT_TO_CSV": "匯出至CSV", "FAX_NUMBER": "傳真號碼", "FEMALE": "女性", "FIRST_NAME": "名字", @@ -240,8 +244,10 @@ "EMAIL_SUBJECT_MAX_LENGTH": "最多 78 個字元", "ERROR_CORRECTION_LEVEL_EXPLAIN": "

QR 碼具有容錯能力,即使圖形有破損,仍然可以被機器讀取內容。


容錯率分為四個等級:

L 等級可容錯 7% 的字碼;

M 等級可容錯 15% 的字碼;

Q 等級可容錯 25% 的字碼;

H 等級可容錯 30% 的字碼。


容錯率愈高,QR 碼圖形面積則愈大。因此,在一般情況下建議使用 M 等級。

", "EXIT_APP": "

確定要離開?

若您喜歡簡易QR,歡迎前往商店評分。

", + "EXPORT_TO_CSV_EXPLAIN": "您可以將所有掃描記錄及書籤匯出至CSV檔案。", "FAILED_SAVING_CONTACT": "無法新增聯絡人", "FAIL_PREPARE_SMS": "無法傳送信息", + "IMPORT_FROM_CSV_EXPLAIN": "您可以從簡易QR定義的CSV檔案匯入記錄和書籤。若您想在Android和iOS設備之間傳輸數據,請使用此功能。", "INPUT_TAG": "請為此書籤輸入一個標籤", "INVALID_BK_FILE": "這不是有效的備份檔", "NOT_BASE64_DE": "內容不能被 Base64 解碼", From 4112190dbc4e6ec1f7caac13b625681be83236cf Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 18 Oct 2022 12:18:07 +0800 Subject: [PATCH 15/19] style --- src/app/pages/setting-record/setting-record.page.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/pages/setting-record/setting-record.page.html b/src/app/pages/setting-record/setting-record.page.html index 20704b4..9fb8ffc 100644 --- a/src/app/pages/setting-record/setting-record.page.html +++ b/src/app/pages/setting-record/setting-record.page.html @@ -190,7 +190,7 @@

-
+
{{ 'BACKUP' | translate }} @@ -208,7 +208,7 @@

-
+
{{ 'RESTORE' | translate }} @@ -226,7 +226,7 @@

-
+
{{ 'EXPORT_TO_CSV' | translate }} @@ -234,7 +234,7 @@
-
+
{{ 'IMPORT' | translate }} @@ -245,7 +245,7 @@

-
+
{{ 'COMING_SOON' | translate }} From 0e1661fe4b5ce9ace0bfce7dfdfa750da8484b6d Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 18 Oct 2022 12:24:15 +0800 Subject: [PATCH 16/19] fix: make csv content safer --- src/app/pages/setting-record/setting-record.page.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/pages/setting-record/setting-record.page.ts b/src/app/pages/setting-record/setting-record.page.ts index b658e82..40ae2f6 100644 --- a/src/app/pages/setting-record/setting-record.page.ts +++ b/src/app/pages/setting-record/setting-record.page.ts @@ -326,10 +326,10 @@ export class SettingRecordPage { rawCsvData = "ID,Content,Created at,Source,Barcode Type,Bookmarked?,Tag\r\n"; } this.env.scanRecords.forEach(r => { - rawCsvData += `${r.id},"${r.text}","${this.maskDatetime(r.createdAt)}",${this.maskSource(r.source)},${r.barcodeType ?? ''},` + rawCsvData += `${r.id},"${r.text?.split('"').join('') ?? ""}","${this.maskDatetime(r.createdAt)}",${this.maskSource(r.source)},${r.barcodeType ?? ''},` const bookmark = this.env.bookmarks.find(b => b.text == r.text); if (bookmark != null) { - rawCsvData += `TRUE,"${bookmark.tag}"\r\n`; + rawCsvData += `TRUE,"${bookmark.tag?.split('"').join('') ?? ""}"\r\n`; } else { rawCsvData += "FALSE, \r\n"; } From 20e105c68ffde9167d6785f9c15184f263d0a66b Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 18 Oct 2022 12:28:14 +0800 Subject: [PATCH 17/19] fix: color detection not work --- src/app/services/env.service.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index 81f8687..1b52147 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -167,16 +167,15 @@ export class EnvService { async _ => { this.initObservable = new Observable(subs => { new Promise(async _ => { - await this._transferStorage(); - console.log(`env.service.ts - constructor - _transferStorage()`) - await this._loadStorage(); - console.log(`env.service.ts - constructor - _loadStorage()`) await Device.getInfo().then( value => { this._deviceInfo = value; } ); - console.log(`env.service.ts - constructor - Device.getInfo()`) + await this._transferStorage(); + console.log(`env.service.ts - constructor - _transferStorage()`) + await this._loadStorage(); + console.log(`env.service.ts - constructor - _loadStorage()`) subs.next(true); }); }); From 92d355ae1cff0d4f985b49f51fe9bbd5e8eaf9dc Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 18 Oct 2022 12:31:50 +0800 Subject: [PATCH 18/19] chore: update dependencies --- package-lock.json | 188 +++++++++++++++++++++++----------------------- package.json | 16 ++-- 2 files changed, 102 insertions(+), 102 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5dbc2e4..d73e355 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,13 +19,13 @@ "@angular/platform-browser": "^14.2.3", "@angular/platform-browser-dynamic": "^14.2.6", "@angular/router": "^14.2.6", - "@awesome-cordova-plugins/aes-256": "^6.0.0", - "@awesome-cordova-plugins/chooser": "^6.0.0", - "@awesome-cordova-plugins/core": "^6.0.0", - "@awesome-cordova-plugins/screen-orientation": "^6.0.0", - "@awesome-cordova-plugins/sms": "^6.0.0", - "@awesome-cordova-plugins/social-sharing": "^6.0.0", - "@awesome-cordova-plugins/theme-detection": "^6.0.0", + "@awesome-cordova-plugins/aes-256": "^6.0.1", + "@awesome-cordova-plugins/chooser": "^6.0.1", + "@awesome-cordova-plugins/core": "^6.0.1", + "@awesome-cordova-plugins/screen-orientation": "^6.0.1", + "@awesome-cordova-plugins/sms": "^6.0.1", + "@awesome-cordova-plugins/social-sharing": "^6.0.1", + "@awesome-cordova-plugins/theme-detection": "^6.0.1", "@capacitor-community/barcode-scanner": "^3.0.0", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^2.0.0-0", @@ -43,7 +43,7 @@ "@capacitor/splash-screen": "^4.1.0", "@capacitor/status-bar": "^4.0.1", "@capacitor/toast": "^4.0.1", - "@ionic/angular": "^6.3.1", + "@ionic/angular": "^6.3.2", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.0.0", @@ -620,33 +620,33 @@ "dev": true }, "node_modules/@awesome-cordova-plugins/aes-256": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-6.0.0.tgz", - "integrity": "sha512-sZuxt7jAB22ucdnbFkDj9z8zFeRZvhPUCBLtrmYNygSTUXGjubvdld4v6heo4Ynyjn7uIuP8u6KfATumEMPP8A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-6.0.1.tgz", + "integrity": "sha512-Dw8E+TawW24avIq+eYSBoNoBo7r55NxQK+GQ6o7ap2ZgIp8gOtXTD5+jfMIDHpYKNaWK6Mm3oE2D7WN/5UfmhA==", "dependencies": { "@types/cordova": "latest" }, "peerDependencies": { - "@awesome-cordova-plugins/core": "^5.1.0", + "@awesome-cordova-plugins/core": "^6.0.1", "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0" } }, "node_modules/@awesome-cordova-plugins/chooser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-6.0.0.tgz", - "integrity": "sha512-RYh+A8xQq+7N5HaXk+aFtLqhuq6sR649CeOQAu3LzfwxujwOKUIKXFJHAJVvgdMuzHxfjcURpsz+tZjJEi2Yog==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-6.0.1.tgz", + "integrity": "sha512-U6qICQGfa0GFroWixTfxA400SPeMhOjyGdwaKzv2HtbKbVsrXCYNKH528EwSishf70QKG03AU9b0xeSCUNtD7g==", "dependencies": { "@types/cordova": "latest" }, "peerDependencies": { - "@awesome-cordova-plugins/core": "^5.1.0", + "@awesome-cordova-plugins/core": "^6.0.1", "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0" } }, "node_modules/@awesome-cordova-plugins/core": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-6.0.0.tgz", - "integrity": "sha512-BufKNyfif6+A82EkUS+JSC9tzhcYYJhU08TsUbGtcOKJACbyhn8gEuOujA9Ue7e+/I6e7VNqqzUru7JxMaAEZA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-6.0.1.tgz", + "integrity": "sha512-DTlyvVrqwRG7fwhmc2Nu514ACiSX7AkwG8lCoJqgnav6md+hABqZ+pJNpfmMtuQEzhoev/Mh+aZ2LdG3d065ow==", "dependencies": { "@types/cordova": "latest" }, @@ -655,50 +655,50 @@ } }, "node_modules/@awesome-cordova-plugins/screen-orientation": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-6.0.0.tgz", - "integrity": "sha512-HOQAl+0Zff8jPbXquoPB6FWhE4OCqLk5bLZV4P9QgrR3jGd4ECmaoO9dUuiNrYD+Cde/8gHeeZsHx97xvRf+qA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-6.0.1.tgz", + "integrity": "sha512-Y7QMMioDSSiUW2es5pD8XbFfb+owXNQ06EDx6TduOifPPjZqdWlZhDz5d7RqTuUi70E+AqMwCJZ3oH4fdy7yqw==", "dependencies": { "@types/cordova": "latest" }, "peerDependencies": { - "@awesome-cordova-plugins/core": "^5.1.0", + "@awesome-cordova-plugins/core": "^6.0.1", "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0" } }, "node_modules/@awesome-cordova-plugins/sms": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-6.0.0.tgz", - "integrity": "sha512-8DsvQ7hKfVe/4Zy6ZE1JenGFayzRI24qHC7hrxmEGJOZqzBoSX+V5MbmjrSjdO7sVFcRbxdD2rzJd2LPJvENHQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-6.0.1.tgz", + "integrity": "sha512-pV0rNQ46gaVa//ubfcll1P0MBXZtnq5T9wFUWzGZPXunwdzUhNvkVlCohJmNoYUpAinCWu2brLh2zWmb1fAt0w==", "dependencies": { "@types/cordova": "latest" }, "peerDependencies": { - "@awesome-cordova-plugins/core": "^5.1.0", + "@awesome-cordova-plugins/core": "^6.0.1", "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0" } }, "node_modules/@awesome-cordova-plugins/social-sharing": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-6.0.0.tgz", - "integrity": "sha512-0J6AtvZ+kt8geRoG0bQcPp35YSBwYthvVMj/jQ827Jdt+afnoUTK1atSjrcv6YgPNxNpQE3FycfEXeNZuGY0+A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-6.0.1.tgz", + "integrity": "sha512-7XrK34+DqEZpGnk835JBJlQY+PLE5DJORuqDHlAnVBR6TNavMSnlMqJlrVyfdvCBVcjEWRna6JEiYrqagybURg==", "dependencies": { "@types/cordova": "latest" }, "peerDependencies": { - "@awesome-cordova-plugins/core": "^5.1.0", + "@awesome-cordova-plugins/core": "^6.0.1", "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0" } }, "node_modules/@awesome-cordova-plugins/theme-detection": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-6.0.0.tgz", - "integrity": "sha512-Eo1Vm4elnAxRnRIJ6g2kHVFw36kdNRxQrJDU0JTwh8SW5DlxKsgSsxZYcuuTeer4fQcT8p/3Qcj0+kJUmdKmQw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-6.0.1.tgz", + "integrity": "sha512-mTNtlojjZSXSVoIqXFa5wU+MzggCLqPDKSVdTGMC6TAdgP7fwSrqNIlk3WGhLDgvf91nWCFl3vTGFN58ABzPzA==", "dependencies": { "@types/cordova": "latest" }, "peerDependencies": { - "@awesome-cordova-plugins/core": "^5.1.0", + "@awesome-cordova-plugins/core": "^6.0.1", "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0" } }, @@ -2845,11 +2845,11 @@ "dev": true }, "node_modules/@ionic/angular": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.1.tgz", - "integrity": "sha512-hT97StH54ZhefdXDSkEAdBc8ssWBf9W8PrEXEUiYtBpp6AbTu/EL5AjHFIIWyyBXPic0sh5+KeJSu86Xxz5yMA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.2.tgz", + "integrity": "sha512-DbG5PKuk/i+7XweWqrpre+2NbkNZoa1AhEJQjeVgwYqKBXvkR4ZlQXPxHif9AAta093Xjt2uKgU2/0R8kh6lyQ==", "dependencies": { - "@ionic/core": "^6.3.1", + "@ionic/core": "^6.3.2", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" }, @@ -3319,9 +3319,9 @@ } }, "node_modules/@ionic/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.1.tgz", - "integrity": "sha512-OpmGQQ/sGtoXW4PQRvRjYa9mTlAmAWwFMu8g/1rcdAPaTQQAlRnfZ62wYYqmChLSFlVbn6mCleeljzR9FaYrAg==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.2.tgz", + "integrity": "sha512-L4xqJyixmGApwYc5fQgGoK80wXGCrbjL8vGfeNbjYqxxP0ZIKGAhURPoMAtSTqLLK9gdhh4Mv6gw4gNKvxodPA==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.3", @@ -5022,9 +5022,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001419", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", - "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==", + "version": "1.0.30001420", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz", + "integrity": "sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==", "funding": [ { "type": "opencollective", @@ -6197,9 +6197,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz", - "integrity": "sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, "node_modules/elementtree": { "version": "0.1.7", @@ -12939,9 +12939,9 @@ } }, "node_modules/socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -13852,9 +13852,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", "dev": true, "funding": [ { @@ -15042,57 +15042,57 @@ "dev": true }, "@awesome-cordova-plugins/aes-256": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-6.0.0.tgz", - "integrity": "sha512-sZuxt7jAB22ucdnbFkDj9z8zFeRZvhPUCBLtrmYNygSTUXGjubvdld4v6heo4Ynyjn7uIuP8u6KfATumEMPP8A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/aes-256/-/aes-256-6.0.1.tgz", + "integrity": "sha512-Dw8E+TawW24avIq+eYSBoNoBo7r55NxQK+GQ6o7ap2ZgIp8gOtXTD5+jfMIDHpYKNaWK6Mm3oE2D7WN/5UfmhA==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/chooser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-6.0.0.tgz", - "integrity": "sha512-RYh+A8xQq+7N5HaXk+aFtLqhuq6sR649CeOQAu3LzfwxujwOKUIKXFJHAJVvgdMuzHxfjcURpsz+tZjJEi2Yog==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/chooser/-/chooser-6.0.1.tgz", + "integrity": "sha512-U6qICQGfa0GFroWixTfxA400SPeMhOjyGdwaKzv2HtbKbVsrXCYNKH528EwSishf70QKG03AU9b0xeSCUNtD7g==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/core": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-6.0.0.tgz", - "integrity": "sha512-BufKNyfif6+A82EkUS+JSC9tzhcYYJhU08TsUbGtcOKJACbyhn8gEuOujA9Ue7e+/I6e7VNqqzUru7JxMaAEZA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-6.0.1.tgz", + "integrity": "sha512-DTlyvVrqwRG7fwhmc2Nu514ACiSX7AkwG8lCoJqgnav6md+hABqZ+pJNpfmMtuQEzhoev/Mh+aZ2LdG3d065ow==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/screen-orientation": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-6.0.0.tgz", - "integrity": "sha512-HOQAl+0Zff8jPbXquoPB6FWhE4OCqLk5bLZV4P9QgrR3jGd4ECmaoO9dUuiNrYD+Cde/8gHeeZsHx97xvRf+qA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/screen-orientation/-/screen-orientation-6.0.1.tgz", + "integrity": "sha512-Y7QMMioDSSiUW2es5pD8XbFfb+owXNQ06EDx6TduOifPPjZqdWlZhDz5d7RqTuUi70E+AqMwCJZ3oH4fdy7yqw==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/sms": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-6.0.0.tgz", - "integrity": "sha512-8DsvQ7hKfVe/4Zy6ZE1JenGFayzRI24qHC7hrxmEGJOZqzBoSX+V5MbmjrSjdO7sVFcRbxdD2rzJd2LPJvENHQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/sms/-/sms-6.0.1.tgz", + "integrity": "sha512-pV0rNQ46gaVa//ubfcll1P0MBXZtnq5T9wFUWzGZPXunwdzUhNvkVlCohJmNoYUpAinCWu2brLh2zWmb1fAt0w==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/social-sharing": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-6.0.0.tgz", - "integrity": "sha512-0J6AtvZ+kt8geRoG0bQcPp35YSBwYthvVMj/jQ827Jdt+afnoUTK1atSjrcv6YgPNxNpQE3FycfEXeNZuGY0+A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/social-sharing/-/social-sharing-6.0.1.tgz", + "integrity": "sha512-7XrK34+DqEZpGnk835JBJlQY+PLE5DJORuqDHlAnVBR6TNavMSnlMqJlrVyfdvCBVcjEWRna6JEiYrqagybURg==", "requires": { "@types/cordova": "latest" } }, "@awesome-cordova-plugins/theme-detection": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-6.0.0.tgz", - "integrity": "sha512-Eo1Vm4elnAxRnRIJ6g2kHVFw36kdNRxQrJDU0JTwh8SW5DlxKsgSsxZYcuuTeer4fQcT8p/3Qcj0+kJUmdKmQw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/theme-detection/-/theme-detection-6.0.1.tgz", + "integrity": "sha512-mTNtlojjZSXSVoIqXFa5wU+MzggCLqPDKSVdTGMC6TAdgP7fwSrqNIlk3WGhLDgvf91nWCFl3vTGFN58ABzPzA==", "requires": { "@types/cordova": "latest" } @@ -16541,11 +16541,11 @@ "dev": true }, "@ionic/angular": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.1.tgz", - "integrity": "sha512-hT97StH54ZhefdXDSkEAdBc8ssWBf9W8PrEXEUiYtBpp6AbTu/EL5AjHFIIWyyBXPic0sh5+KeJSu86Xxz5yMA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.2.tgz", + "integrity": "sha512-DbG5PKuk/i+7XweWqrpre+2NbkNZoa1AhEJQjeVgwYqKBXvkR4ZlQXPxHif9AAta093Xjt2uKgU2/0R8kh6lyQ==", "requires": { - "@ionic/core": "^6.3.1", + "@ionic/core": "^6.3.2", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" } @@ -16899,9 +16899,9 @@ } }, "@ionic/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.1.tgz", - "integrity": "sha512-OpmGQQ/sGtoXW4PQRvRjYa9mTlAmAWwFMu8g/1rcdAPaTQQAlRnfZ62wYYqmChLSFlVbn6mCleeljzR9FaYrAg==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.2.tgz", + "integrity": "sha512-L4xqJyixmGApwYc5fQgGoK80wXGCrbjL8vGfeNbjYqxxP0ZIKGAhURPoMAtSTqLLK9gdhh4Mv6gw4gNKvxodPA==", "requires": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.3", @@ -18263,9 +18263,9 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { - "version": "1.0.30001419", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", - "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==" + "version": "1.0.30001420", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz", + "integrity": "sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==" }, "chalk": { "version": "2.4.2", @@ -19138,9 +19138,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz", - "integrity": "sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, "elementtree": { "version": "0.1.7", @@ -24107,9 +24107,9 @@ "dev": true }, "socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -24819,9 +24819,9 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" }, "ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", "dev": true }, "unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index e29cdfb..9a68889 100644 --- a/package.json +++ b/package.json @@ -28,13 +28,13 @@ "@angular/platform-browser": "^14.2.3", "@angular/platform-browser-dynamic": "^14.2.6", "@angular/router": "^14.2.6", - "@awesome-cordova-plugins/aes-256": "^6.0.0", - "@awesome-cordova-plugins/chooser": "^6.0.0", - "@awesome-cordova-plugins/core": "^6.0.0", - "@awesome-cordova-plugins/screen-orientation": "^6.0.0", - "@awesome-cordova-plugins/sms": "^6.0.0", - "@awesome-cordova-plugins/social-sharing": "^6.0.0", - "@awesome-cordova-plugins/theme-detection": "^6.0.0", + "@awesome-cordova-plugins/aes-256": "^6.0.1", + "@awesome-cordova-plugins/chooser": "^6.0.1", + "@awesome-cordova-plugins/core": "^6.0.1", + "@awesome-cordova-plugins/screen-orientation": "^6.0.1", + "@awesome-cordova-plugins/sms": "^6.0.1", + "@awesome-cordova-plugins/social-sharing": "^6.0.1", + "@awesome-cordova-plugins/theme-detection": "^6.0.1", "@capacitor-community/barcode-scanner": "^3.0.0", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^2.0.0-0", @@ -52,7 +52,7 @@ "@capacitor/splash-screen": "^4.1.0", "@capacitor/status-bar": "^4.0.1", "@capacitor/toast": "^4.0.1", - "@ionic/angular": "^6.3.1", + "@ionic/angular": "^6.3.2", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.0.0", From c3eece4717a607403585b67cb372ae5ed68616fd Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Tue, 18 Oct 2022 12:48:42 +0800 Subject: [PATCH 19/19] update release notes --- README.md | 15 +++++++-------- src/assets/i18n/de.json | 4 ++-- src/assets/i18n/en.json | 4 ++-- src/assets/i18n/fr.json | 4 ++-- src/assets/i18n/it.json | 4 ++-- src/assets/i18n/zh-CN.json | 4 ++-- src/assets/i18n/zh-HK.json | 4 ++-- 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 978fac6..8682288 100644 --- a/README.md +++ b/README.md @@ -103,11 +103,10 @@ You are welcomed to help translate the app into more languages (refer to this DO NOT change the order. 4. Email the JSON to me (tomfong.dev@gmail.com) after you finish. -### Build the project (Android) +### Build the project 1. Run ```npm install``` to install all dependencies. -2. Run ```npm run build:an``` or ```npm run build:ios``` (for first time). -3. Run ```npm run sync``` and ```npm run copy:an``` or ```npm run copy:ios```. +2. Run ```npm run build``` ### Contributors @@ -122,10 +121,10 @@ Thank you the following contributors who have made the app better! ```sh Ionic CLI : 6.20.1 - Ionic Framework : @ionic/angular 6.2.8 - @angular-devkit/build-angular : 14.2.3 - @angular-devkit/schematics : 13.3.9 - @angular/cli : 14.2.3 + Ionic Framework : @ionic/angular 6.3.2 + @angular-devkit/build-angular : 14.2.6 + @angular-devkit/schematics : 14.2.6 + @angular/cli : 14.2.6 @ionic/angular-toolkit : 6.1.0 Capacitor CLI : 4.3.0 @@ -134,7 +133,7 @@ Thank you the following contributors who have made the app better! @capacitor/ios : 4.3.0 NodeJS : v16.15.1 - npm : 8.11.0 + npm : 8.19.2 ``` ## Privacy Policy diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 91c9612..9b197d4 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -305,7 +305,7 @@ "UPC": "Universeller Produktcode " }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details.

", - "UPDATE_NOTES_IOS": "Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details." + "UPDATE_NOTES_ANDROID": "

Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

", + "UPDATE_NOTES_IOS": "

Diese Version bringt Ihnen mehrere Updates und neue Funktionen. Bitte überprüfen Sie GitHub für Details.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

" } } \ No newline at end of file diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 142b3bd..2d07f43 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -305,7 +305,7 @@ "UPC": "Universal Product Code " }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

This release brings you several updates and new features. Please check GitHub for details.

", - "UPDATE_NOTES_IOS": "This release brings you several updates and new features. Please check GitHub for details." + "UPDATE_NOTES_ANDROID": "

This release brings you several updates and new features. Please check GitHub for details.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

", + "UPDATE_NOTES_IOS": "

This release brings you several updates and new features. Please check GitHub for details.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

" } } \ No newline at end of file diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index c1f1465..57f378e 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -305,7 +305,7 @@ "UPC": "Code produit universel" }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails.

", - "UPDATE_NOTES_IOS": "Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails." + "UPDATE_NOTES_ANDROID": "

Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

", + "UPDATE_NOTES_IOS": "

Cette version vous apporte plusieurs mises à jour et nouvelles fonctionnalités. Veuillez consulter GitHub pour plus de détails.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

" } } \ No newline at end of file diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index bdc0613..4c5e57d 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -305,7 +305,7 @@ "UPC": "Codice Prodotto Universale " }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli.

", - "UPDATE_NOTES_IOS": "Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli." + "UPDATE_NOTES_ANDROID": "

Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

", + "UPDATE_NOTES_IOS": "

Questa versione offre numerosi aggiornamenti e nuove funzionalità. Si prega di controllare GitHub per i dettagli.

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

" } } \ No newline at end of file diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index 8a26fe6..15210a0 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -305,7 +305,7 @@ "UPC": "通用产品代码" }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

此版本为您带来多项更新和新功能,详情请查看 GitHub。

", - "UPDATE_NOTES_IOS": "此版本为您带来多项更新和新功能,详情请查看 GitHub。" + "UPDATE_NOTES_ANDROID": "

此版本为您带来多项更新和新功能,详情请查看 GitHub。

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

", + "UPDATE_NOTES_IOS": "

此版本为您带来多项更新和新功能,详情请查看 GitHub。

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

" } } \ No newline at end of file diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index 596b17d..292eb01 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -305,7 +305,7 @@ "UPC": "通用產品代碼" }, "UPDATE": { - "UPDATE_NOTES_ANDROID": "

此版本為您帶來多項更新和新功能,詳情請查看 GitHub。

", - "UPDATE_NOTES_IOS": "此版本為您帶來多項更新和新功能,詳情請查看 GitHub。" + "UPDATE_NOTES_ANDROID": "

此版本為您帶來多項更新和新功能,詳情請查看 GitHub。

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

", + "UPDATE_NOTES_IOS": "

此版本為您帶來多項更新和新功能,詳情請查看 GitHub。

Starting from this version, you can use Ecosia as search engine, export records to CSV and enjoy more reliable data logging.

" } } \ No newline at end of file