From ddd5f86e3f0c434d1006127bcd6c83106b7ff3d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Fri, 14 May 2021 17:18:08 +0300 Subject: [PATCH 1/6] New edit project dialog WIP --- .../admin-side-nav.component.html | 17 ++++ .../admin-side-nav.component.scss | 0 .../admin-side-nav.component.ts} | 8 +- .../src/app/modules/admin/admin.module.ts | 6 +- .../side-nav/side-nav.component.html | 17 ---- .../add-edit-rule-set-dialog.component.html | 5 +- .../add-edit-rule-set-dialog.component.scss | 4 +- .../active-fields-listing.component.html | 4 +- .../screens/audit/audit-screen.component.html | 2 +- .../default-colors-screen.component.html | 2 +- .../dictionary-listing-screen.component.html | 2 +- .../dictionary-overview-screen.component.html | 2 +- .../digital-signature-screen.component.html | 2 +- ...e-attributes-listing-screen.component.html | 2 +- .../license-information-screen.component.html | 2 +- .../rule-sets-listing-screen.component.html | 2 +- .../screens/rules/rules-screen.component.html | 2 +- .../smtp-config-screen.component.html | 2 +- .../user-listing-screen.component.html | 2 +- .../watermark/watermark-screen.component.html | 2 +- .../add-project-dialog.component.html} | 36 +++---- .../add-project-dialog.component.scss} | 8 +- .../add-project-dialog.component.ts} | 86 +++++----------- ...it-project-download-package.component.html | 15 +++ ...it-project-download-package.component.scss | 15 +++ ...edit-project-download-package.component.ts | 78 +++++++++++++++ .../edit-project-dialog.component.html | 42 ++++++++ .../edit-project-dialog.component.scss | 25 +++++ .../edit-project-dialog.component.ts | 87 ++++++++++++++++ .../edit-project-section.interface.ts | 6 ++ .../edit-project-general-info.component.html | 53 ++++++++++ .../edit-project-general-info.component.scss | 14 +++ .../edit-project-general-info.component.ts | 98 +++++++++++++++++++ .../app/modules/projects/projects.module.ts | 10 +- .../file-preview-screen.component.scss | 4 - .../project-overview-screen.component.ts | 12 ++- .../services/projects-dialog.service.ts | 35 +++---- .../dictionary-manager.component.scss | 5 - .../components/filter/filter.component.html | 4 +- .../components/filter/filter.component.scss | 4 - .../components/select/select.component.html | 24 +++-- .../components/select/select.component.scss | 12 ++- .../components/select/select.component.ts | 1 + .../side-nav/side-nav.component.html | 3 + .../side-nav/side-nav.component.scss | 4 +- .../components/side-nav/side-nav.component.ts | 12 +++ .../src/app/modules/shared/shared.module.ts | 2 + .../red-ui/src/app/state/app-state.service.ts | 32 +++--- apps/red-ui/src/assets/i18n/en.json | 79 ++++++++++----- apps/red-ui/src/assets/styles/red-menu.scss | 6 +- .../src/assets/styles/red-page-layout.scss | 9 +- 51 files changed, 673 insertions(+), 233 deletions(-) create mode 100644 apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.html create mode 100644 apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.scss rename apps/red-ui/src/app/modules/admin/{components/side-nav/side-nav.component.ts => admin-side-nav/admin-side-nav.component.ts} (89%) delete mode 100644 apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.html rename apps/red-ui/src/app/modules/projects/dialogs/{add-edit-project-dialog/add-edit-project-dialog.component.html => add-project-dialog/add-project-dialog.component.html} (68%) rename apps/red-ui/src/app/modules/projects/dialogs/{add-edit-project-dialog/add-edit-project-dialog.component.scss => add-project-dialog/add-project-dialog.component.scss} (91%) rename apps/red-ui/src/app/modules/projects/dialogs/{add-edit-project-dialog/add-edit-project-dialog.component.ts => add-project-dialog/add-project-dialog.component.ts} (52%) create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.html create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.scss create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.ts create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.html create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.scss create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.ts create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-section.interface.ts create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.html create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.scss create mode 100644 apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.ts create mode 100644 apps/red-ui/src/app/modules/shared/components/side-nav/side-nav.component.html rename apps/red-ui/src/app/modules/{admin => shared}/components/side-nav/side-nav.component.scss (91%) create mode 100644 apps/red-ui/src/app/modules/shared/components/side-nav/side-nav.component.ts diff --git a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.html b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.html new file mode 100644 index 000000000..fa279c019 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.html @@ -0,0 +1,17 @@ + + +
+ {{ item.label || item.screen | translate }} +
+
+
diff --git a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.scss b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.ts b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts similarity index 89% rename from apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.ts rename to apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts index 82c236d6c..ff71a17d2 100644 --- a/apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.ts +++ b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts @@ -4,11 +4,11 @@ import { UserPreferenceService } from '@services/user-preference.service'; import { AppStateService } from '@state/app-state.service'; @Component({ - selector: 'redaction-side-nav', - templateUrl: './side-nav.component.html', - styleUrls: ['./side-nav.component.scss'] + selector: 'redaction-admin-side-nav', + templateUrl: './admin-side-nav.component.html', + styleUrls: ['./admin-side-nav.component.scss'] }) -export class SideNavComponent { +export class AdminSideNavComponent { @Input() type: 'settings' | 'project-templates'; items: { [key: string]: { screen: string; onlyDevMode?: boolean; onlyAdmin?: boolean; userManagerOnly?: boolean; label?: string }[] } = { diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index bdc0e2bde..6afd65f81 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -32,7 +32,7 @@ import { UsersStatsComponent } from './components/users-stats/users-stats.compon import { ConfirmDeleteUsersDialogComponent } from './dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component'; import { FileAttributesCsvImportDialogComponent } from './dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component'; import { ActiveFieldsListingComponent } from './dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component'; -import { SideNavComponent } from './components/side-nav/side-nav.component'; +import { AdminSideNavComponent } from './admin-side-nav/admin-side-nav.component'; const dialogs = [ AddEditRuleSetDialogComponent, @@ -43,7 +43,8 @@ const dialogs = [ SmtpAuthDialogComponent, AddEditUserDialogComponent, ConfirmDeleteUsersDialogComponent, - FileAttributesCsvImportDialogComponent + FileAttributesCsvImportDialogComponent, + AdminSideNavComponent ]; const screens = [ @@ -68,7 +69,6 @@ const components = [ ComboSeriesVerticalComponent, UsersStatsComponent, ActiveFieldsListingComponent, - SideNavComponent, ...dialogs, ...screens diff --git a/apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.html b/apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.html deleted file mode 100644 index 4ff6bb202..000000000 --- a/apps/red-ui/src/app/modules/admin/components/side-nav/side-nav.component.html +++ /dev/null @@ -1,17 +0,0 @@ -
- - -
- {{ item.label || item.screen | translate }} -
-
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.html index 2098145f2..37eab17f5 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.html @@ -56,19 +56,18 @@

{{ 'download-includes' | translate }}

-
+
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.scss b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.scss index 4c179d996..b5fcaf6e8 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.scss +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-rule-set-dialog/add-edit-rule-set-dialog.component.scss @@ -22,8 +22,8 @@ } } -.w-410 { - width: 410px; +redaction-select { + flex: 1; } .download-includes { diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html index 6b8e98d14..a958c6d7b 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html @@ -31,7 +31,7 @@ - + - + diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html index dc51ab6e1..f7a8f5eb5 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html @@ -1,7 +1,7 @@
- +
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts index 3299cf870..183db47cc 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts @@ -3,7 +3,11 @@ import { AbstractControl, FormGroup, ValidatorFn, Validators } from '@angular/fo import { AppStateService } from '@state/app-state.service'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import * as Papa from 'papaparse'; -import { FileAttributeConfig, FileAttributesConfig, FileAttributesControllerService } from '@redaction/red-ui-http'; +import { + FileAttributeConfig, + FileAttributesConfig, + FileAttributesControllerService +} from '@redaction/red-ui-http'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { Observable } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; @@ -40,7 +44,8 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent keepPreview = false; columnSample = []; initialParseConfig: { delimiter?: string; encoding?: string } = {}; - @ViewChild(CdkVirtualScrollViewport, { static: false }) cdkVirtualScrollViewport: CdkVirtualScrollViewport; + @ViewChild(CdkVirtualScrollViewport, { static: false }) + cdkVirtualScrollViewport: CdkVirtualScrollViewport; protected readonly _searchKey = 'csvColumn'; constructor( @@ -50,14 +55,18 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent private readonly _notificationService: NotificationService, public dialogRef: MatDialogRef, protected readonly _injector: Injector, - @Inject(MAT_DIALOG_DATA) public data: { csv: File; ruleSetId: string; existingConfiguration: FileAttributesConfig } + @Inject(MAT_DIALOG_DATA) + public data: { csv: File; ruleSetId: string; existingConfiguration: FileAttributesConfig } ) { super(_injector); this.csvFile = data.csv; this.ruleSetId = data.ruleSetId; this.baseConfigForm = this._formBuilder.group({ - filenameMappingColumnHeaderName: ['', [Validators.required, this._autocompleteStringValidator()]], + filenameMappingColumnHeaderName: [ + '', + [Validators.required, this._autocompleteStringValidator()] + ], delimiter: [undefined, Validators.required], encoding: ['UTF-8', Validators.required] }); @@ -87,12 +96,16 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent this.parseResult.meta.fields = Object.keys(this.parseResult.data[0]); } - this.allEntities = this.parseResult.meta.fields.map((field) => this._buildAttribute(field)); + this.allEntities = this.parseResult.meta.fields.map((field) => + this._buildAttribute(field) + ); this.displayedEntities = [...this.allEntities]; this.activeFields = []; for (const entity of this.allEntities) { - const existing = this.data.existingConfiguration.fileAttributeConfigs.find((a) => a.csvColumnHeader === entity.csvColumn); + const existing = this.data.existingConfiguration.fileAttributeConfigs.find( + (a) => a.csvColumnHeader === entity.csvColumn + ); if (existing) { entity.id = existing.id; entity.name = existing.label; @@ -104,18 +117,35 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent } } - this.filteredKeyOptions = this.baseConfigForm.get('filenameMappingColumnHeaderName').valueChanges.pipe( - startWith(this.baseConfigForm.get('filenameMappingColumnHeaderName').value as string), - map((value: string) => - this.allEntities.filter((field) => field.csvColumn.toLowerCase().indexOf(value.toLowerCase()) !== -1).map((field) => field.csvColumn) - ) - ); + this.filteredKeyOptions = this.baseConfigForm + .get('filenameMappingColumnHeaderName') + .valueChanges.pipe( + startWith( + this.baseConfigForm.get('filenameMappingColumnHeaderName').value as string + ), + map((value: string) => + this.allEntities + .filter( + (field) => + field.csvColumn.toLowerCase().indexOf(value.toLowerCase()) !== + -1 + ) + .map((field) => field.csvColumn) + ) + ); if ( this.data.existingConfiguration && - this.allEntities.find((entity) => entity.csvColumn === this.data.existingConfiguration.filenameMappingColumnHeaderName) + this.allEntities.find( + (entity) => + entity.csvColumn === + this.data.existingConfiguration.filenameMappingColumnHeaderName + ) ) { - this.baseConfigForm.patchValue({ filenameMappingColumnHeaderName: this.data.existingConfiguration.filenameMappingColumnHeaderName }); + this.baseConfigForm.patchValue({ + filenameMappingColumnHeaderName: + this.data.existingConfiguration.filenameMappingColumnHeaderName + }); } this.initialParseConfig = { @@ -169,14 +199,17 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent const newPrimary = !!this.activeFields.find((attr) => attr.primaryAttribute); if (newPrimary) { - this.data.existingConfiguration.fileAttributeConfigs.forEach((attr) => (attr.primaryAttribute = false)); + this.data.existingConfiguration.fileAttributeConfigs.forEach( + (attr) => (attr.primaryAttribute = false) + ); } const fileAttributes = { ...this.baseConfigForm.getRawValue(), fileAttributeConfigs: [ ...this.data.existingConfiguration.fileAttributeConfigs.filter( - (a) => !this.allEntities.find((entity) => entity.csvColumn === a.csvColumnHeader) + (a) => + !this.allEntities.find((entity) => entity.csvColumn === a.csvColumnHeader) ), ...this.activeFields.map((field) => ({ id: field.id, @@ -190,9 +223,13 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent }; try { - await this._fileAttributesControllerService.setFileAttributesConfig(fileAttributes, this.ruleSetId).toPromise(); + await this._fileAttributesControllerService + .setFileAttributesConfig(fileAttributes, this.ruleSetId) + .toPromise(); this._notificationService.showToastNotification( - this._translateService.instant('file-attributes-csv-import.save.success', { count: this.activeFields.length }), + this._translateService.instant('file-attributes-csv-import.save.success', { + count: this.activeFields.length + }), null, NotificationType.SUCCESS ); @@ -217,7 +254,9 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent if (!column) { this.columnSample = []; } else { - this.columnSample = this.parseResult.data.filter((row) => !!row[column]).map((row) => row[column]); + this.columnSample = this.parseResult.data + .filter((row) => !!row[column]) + .map((row) => row[column]); } }, 0); } @@ -238,7 +277,9 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent csvColumn, name: csvColumn, temporaryName: csvColumn, - type: isNumber ? FileAttributeConfig.TypeEnum.NUMBER : FileAttributeConfig.TypeEnum.TEXT, + type: isNumber + ? FileAttributeConfig.TypeEnum.NUMBER + : FileAttributeConfig.TypeEnum.TEXT, readonly: false, primaryAttribute: false }; diff --git a/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.html index e3b00f0eb..68f9dfa0b 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.html @@ -5,7 +5,12 @@
- +
@@ -18,9 +23,17 @@ -
+
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html index f7a8f5eb5..8dde51fe2 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html @@ -22,7 +22,10 @@
- {{ 'audit-screen.table-header.title' | translate: { length: logs?.totalHits || 0 } }} + {{ + 'audit-screen.table-header.title' + | translate: { length: logs?.totalHits || 0 } + }}
- + {{ category | translate }} @@ -50,7 +56,10 @@ [withName]="true" size="small" > -
+
-
+
·
- + - +
@@ -76,9 +95,16 @@
- + - +
@@ -87,14 +113,31 @@
- - - - + + + +
- +
@@ -105,7 +148,11 @@ {{ log.recordDate | date: 'd MMM. yyyy, hh:mm a' }}
- +
{{ log.category }} @@ -118,4 +165,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts index 224bf5237..19a29640f 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts @@ -61,7 +61,16 @@ export class AuditScreenComponent { } private _updateDateFilters(value): boolean { - if (applyIntervalConstraints(value, this._previousFrom, this._previousTo, this.filterForm, 'from', 'to')) { + if ( + applyIntervalConstraints( + value, + this._previousFrom, + this._previousTo, + this.filterForm, + 'from', + 'to' + ) + ) { return true; } diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html index 4e4a92cc5..7a9514dd2 100644 --- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html @@ -5,7 +5,12 @@
- +
@@ -17,7 +22,10 @@
- {{ 'default-colors-screen.table-header.title' | translate: { length: allEntities.length } }} + {{ + 'default-colors-screen.table-header.title' + | translate: { length: allEntities.length } + }}
@@ -30,7 +38,10 @@ label="default-colors-screen.table-col-names.key" > - +
@@ -38,13 +49,24 @@ -
+
-
+
-
+
@@ -66,4 +88,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts index e3f98d3b1..79f03f9a5 100644 --- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts @@ -11,7 +11,10 @@ import { BaseListingComponent } from '@shared/base/base-listing.component'; templateUrl: './default-colors-screen.component.html', styleUrls: ['./default-colors-screen.component.scss'] }) -export class DefaultColorsScreenComponent extends BaseListingComponent<{ key: string; value: string }> { +export class DefaultColorsScreenComponent extends BaseListingComponent<{ + key: string; + value: string; +}> { viewReady = false; protected readonly _sortKey = 'default-colors'; private _colorsObj: Colors; @@ -35,9 +38,14 @@ export class DefaultColorsScreenComponent extends BaseListingComponent<{ key: st openEditColorDialog($event: any, color: { key: string; value: string }) { $event.stopPropagation(); - this._dialogService.openEditColorsDialog(this._colorsObj, color.key, this._appStateService.activeRuleSetId, async () => { - this._loadColors(); - }); + this._dialogService.openEditColorsDialog( + this._colorsObj, + color.key, + this._appStateService.activeRuleSetId, + async () => { + this._loadColors(); + } + ); } private _loadColors() { diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html index 0aa28ecc8..89b842d01 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html @@ -5,7 +5,12 @@
- +
@@ -25,11 +30,17 @@
- {{ 'dictionary-listing.table-header.title' | translate: { length: displayedEntities.length } }} + {{ + 'dictionary-listing.table-header.title' + | translate: { length: displayedEntities.length } + }}
- +
-
+
- +
@@ -75,20 +93,32 @@ screen="dictionary-listing" > - +
- +
-
+
{{ dict.label }} @@ -111,7 +141,10 @@
- +
@@ -154,4 +187,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts index e8dc49242..f07b18611 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts @@ -14,7 +14,10 @@ import { BaseListingComponent } from '@shared/base/base-listing.component'; templateUrl: './dictionary-listing-screen.component.html', styleUrls: ['./dictionary-listing-screen.component.scss'] }) -export class DictionaryListingScreenComponent extends BaseListingComponent implements OnInit { +export class DictionaryListingScreenComponent + extends BaseListingComponent + implements OnInit +{ viewReady = false; chartData: DoughnutChartConfig[] = []; protected readonly _searchKey = 'label'; @@ -39,38 +42,50 @@ export class DictionaryListingScreenComponent extends BaseListingComponent { - if (newDictionary) { - await this._appStateService.loadDictionaryData(); - this._loadDictionaryData(); + this._dialogService.openAddEditDictionaryDialog( + dict, + this._appStateService.activeRuleSetId, + async (newDictionary) => { + if (newDictionary) { + await this._appStateService.loadDictionaryData(); + this._loadDictionaryData(); + } } - }); + ); } openDeleteDictionaryDialog($event: any, dict: TypeValue) { - this._dialogService.openDeleteDictionaryDialog($event, dict, this._appStateService.activeRuleSetId, async () => { - await this._appStateService.loadDictionaryData(); - this._loadDictionaryData(); - }); + this._dialogService.openDeleteDictionaryDialog( + $event, + dict, + this._appStateService.activeRuleSetId, + async () => { + await this._appStateService.loadDictionaryData(); + this._loadDictionaryData(); + } + ); } private _loadDictionaryData() { - const appStateDictionaryData = this._appStateService.dictionaryData[this._appStateService.activeRuleSetId]; + const appStateDictionaryData = + this._appStateService.dictionaryData[this._appStateService.activeRuleSetId]; this.allEntities = Object.keys(appStateDictionaryData) .map((key) => appStateDictionaryData[key]) .filter((d) => !d.virtual); this.displayedEntities = [...this.allEntities]; const dataObs = this.allEntities.map((dict) => - this._dictionaryControllerService.getDictionaryForType(this._appStateService.activeRuleSetId, dict.type).pipe( - tap((values) => { - dict.entries = values.entries ? values.entries : []; - }), - catchError(() => { - console.log('error'); - dict.entries = []; - return of({}); - }) - ) + this._dictionaryControllerService + .getDictionaryForType(this._appStateService.activeRuleSetId, dict.type) + .pipe( + tap((values) => { + dict.entries = values.entries ? values.entries : []; + }), + catchError(() => { + console.log('error'); + dict.entries = []; + return of({}); + }) + ) ); forkJoin(dataObs) .pipe(defaultIfEmpty(null)) diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.html index 176e8293e..91f14e497 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.html @@ -38,7 +38,14 @@ tooltipPosition="below" > - +
-
+
{{ dictionary.description }}
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts index 0517b0fd1..d8c5b401d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts @@ -21,7 +21,8 @@ export class DictionaryOverviewScreenComponent extends ComponentHasChanges imple processing = false; entries: string[] = []; - @ViewChild('dictionaryManager', { static: false }) private _dictionaryManager: DictionaryManagerComponent; + @ViewChild('dictionaryManager', { static: false }) + private _dictionaryManager: DictionaryManagerComponent; @ViewChild('fileInput') private _fileInput: ElementRef; constructor( @@ -37,7 +38,10 @@ export class DictionaryOverviewScreenComponent extends ComponentHasChanges imple private readonly _formBuilder: FormBuilder ) { super(_translateService); - this._appStateService.activateDictionary(this._activatedRoute.snapshot.params.type, this._activatedRoute.snapshot.params.ruleSetId); + this._appStateService.activateDictionary( + this._activatedRoute.snapshot.params.type, + this._activatedRoute.snapshot.params.ruleSetId + ); } ngOnInit(): void { @@ -54,16 +58,25 @@ export class DictionaryOverviewScreenComponent extends ComponentHasChanges imple openEditDictionaryDialog($event: any) { $event.stopPropagation(); - this._dialogService.openAddEditDictionaryDialog(this.dictionary, this.dictionary.ruleSetId, async () => { - await this._appStateService.loadDictionaryData(); - }); + this._dialogService.openAddEditDictionaryDialog( + this.dictionary, + this.dictionary.ruleSetId, + async () => { + await this._appStateService.loadDictionaryData(); + } + ); } openDeleteDictionaryDialog($event: any) { - this._dialogService.openDeleteDictionaryDialog($event, this.dictionary, this.dictionary.ruleSetId, async () => { - await this._appStateService.loadDictionaryData(); - this._router.navigate(['..']); - }); + this._dialogService.openDeleteDictionaryDialog( + $event, + this.dictionary, + this.dictionary.ruleSetId, + async () => { + await this._appStateService.loadDictionaryData(); + this._router.navigate(['..']); + } + ); } download(): void { @@ -89,28 +102,40 @@ export class DictionaryOverviewScreenComponent extends ComponentHasChanges imple saveEntries(entries: string[]) { this.processing = true; - this._dictionarySaveService.saveEntries(entries, this.entries, this.dictionary.ruleSetId, this.dictionary.type, null).subscribe( - () => { - this.processing = false; - this._loadEntries(); - }, - () => { - this.processing = false; - } - ); + this._dictionarySaveService + .saveEntries( + entries, + this.entries, + this.dictionary.ruleSetId, + this.dictionary.type, + null + ) + .subscribe( + () => { + this.processing = false; + this._loadEntries(); + }, + () => { + this.processing = false; + } + ); } private _loadEntries() { this.processing = true; - this._dictionaryControllerService.getDictionaryForType(this.dictionary.ruleSetId, this.dictionary.type).subscribe( - (data) => { - this.processing = false; - this.entries = data.entries.sort((str1, str2) => str1.localeCompare(str2, undefined, { sensitivity: 'accent' })); - }, - () => { - this.processing = false; - this.entries = []; - } - ); + this._dictionaryControllerService + .getDictionaryForType(this.dictionary.ruleSetId, this.dictionary.type) + .subscribe( + (data) => { + this.processing = false; + this.entries = data.entries.sort((str1, str2) => + str1.localeCompare(str2, undefined, { sensitivity: 'accent' }) + ); + }, + () => { + this.processing = false; + this.entries = []; + } + ); } } diff --git a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html index 182ef8581..4dcd2727d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html @@ -22,8 +22,19 @@
-
- + + -
- +
+
-
+
- +
- +
- +
@@ -96,4 +139,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts index a22970fd6..261f8caa0 100644 --- a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts @@ -29,7 +29,10 @@ export class DigitalSignatureScreenComponent { } get hasDigitalSignatureSet() { - return this.digitalSignatureExists || !!this.digitalSignatureForm.get('base64EncodedPrivateKey').value; + return ( + this.digitalSignatureExists || + !!this.digitalSignatureForm.get('base64EncodedPrivateKey').value + ); } saveDigitalSignature() { @@ -55,13 +58,17 @@ export class DigitalSignatureScreenComponent { (error) => { if (error.status === 400) { this._notificationService.showToastNotification( - this._translateService.instant('digital-signature-screen.action.certificate-not-valid-error'), + this._translateService.instant( + 'digital-signature-screen.action.certificate-not-valid-error' + ), null, NotificationType.ERROR ); } else { this._notificationService.showToastNotification( - this._translateService.instant('digital-signature-screen.action.save-error'), + this._translateService.instant( + 'digital-signature-screen.action.save-error' + ), null, NotificationType.ERROR ); @@ -75,7 +82,9 @@ export class DigitalSignatureScreenComponent { () => { this.loadDigitalSignatureAndInitializeForm(); this._notificationService.showToastNotification( - this._translateService.instant('digital-signature-screen.action.delete-success'), + this._translateService.instant( + 'digital-signature-screen.action.delete-success' + ), null, NotificationType.SUCCESS ); @@ -130,9 +139,13 @@ export class DigitalSignatureScreenComponent { certificateName: [this.digitalSignature.certificateName, Validators.required], contactInfo: this.digitalSignature.contactInfo, location: this.digitalSignature.location, - keySecret: this.digitalSignatureExists ? null : [this.digitalSignature.password, Validators.required], + keySecret: this.digitalSignatureExists + ? null + : [this.digitalSignature.password, Validators.required], reason: this.digitalSignature.reason, - base64EncodedPrivateKey: this.digitalSignatureExists ? null : [this.digitalSignature.base64EncodedPrivateKey, Validators.required] + base64EncodedPrivateKey: this.digitalSignatureExists + ? null + : [this.digitalSignature.base64EncodedPrivateKey, Validators.required] }); } } diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html index 00d6b7a4d..534485a2d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html @@ -3,7 +3,12 @@
- +
@@ -23,7 +28,10 @@
- {{ 'file-attributes-listing.table-header.title' | translate: { length: displayedEntities.length } }} + {{ + 'file-attributes-listing.table-header.title' + | translate: { length: displayedEntities.length } + }}
- - + +
-
+
- +
- + -
+
- +
{{ attribute.label }}
-
+
- +
@@ -162,4 +204,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts index d81a256b0..d22b8298d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts @@ -1,6 +1,10 @@ import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; -import { FileAttributeConfig, FileAttributesConfig, FileAttributesControllerService } from '@redaction/red-ui-http'; +import { + FileAttributeConfig, + FileAttributesConfig, + FileAttributesControllerService +} from '@redaction/red-ui-http'; import { AppStateService } from '@state/app-state.service'; import { ActivatedRoute } from '@angular/router'; import { AdminDialogService } from '../../services/admin-dialog.service'; @@ -11,7 +15,10 @@ import { BaseListingComponent } from '@shared/base/base-listing.component'; templateUrl: './file-attributes-listing-screen.component.html', styleUrls: ['./file-attributes-listing-screen.component.scss'] }) -export class FileAttributesListingScreenComponent extends BaseListingComponent implements OnInit { +export class FileAttributesListingScreenComponent + extends BaseListingComponent + implements OnInit +{ viewReady = false; loading = false; protected readonly _searchKey = 'label'; @@ -39,38 +46,65 @@ export class FileAttributesListingScreenComponent extends BaseListingComponent { - this.loading = true; - await this._fileAttributesService.setFileAttributesConfiguration(newValue, this._appStateService.activeRuleSetId).toPromise(); - await this._loadData(); - }); + this._dialogService.openAddEditFileAttributeDialog( + fileAttribute, + this._appStateService.activeRuleSetId, + async (newValue: FileAttributeConfig) => { + this.loading = true; + await this._fileAttributesService + .setFileAttributesConfiguration(newValue, this._appStateService.activeRuleSetId) + .toPromise(); + await this._loadData(); + } + ); } openConfirmDeleteAttributeDialog($event: MouseEvent, fileAttribute?: FileAttributeConfig) { $event.stopPropagation(); - this._dialogService.openConfirmDeleteFileAttributeDialog(fileAttribute, this._appStateService.activeRuleSetId, async () => { - this.loading = true; - if (fileAttribute) { - await this._fileAttributesService.deleteFileAttribute(this._appStateService.activeRuleSetId, fileAttribute.id).toPromise(); - } else { - await this._fileAttributesService.deleteFileAttributes(this.selectedEntitiesIds, this._appStateService.activeRuleSetId).toPromise(); + this._dialogService.openConfirmDeleteFileAttributeDialog( + fileAttribute, + this._appStateService.activeRuleSetId, + async () => { + this.loading = true; + if (fileAttribute) { + await this._fileAttributesService + .deleteFileAttribute( + this._appStateService.activeRuleSetId, + fileAttribute.id + ) + .toPromise(); + } else { + await this._fileAttributesService + .deleteFileAttributes( + this.selectedEntitiesIds, + this._appStateService.activeRuleSetId + ) + .toPromise(); + } + await this._loadData(); } - await this._loadData(); - }); + ); } importCSV(files: FileList | File[]) { const csvFile = files[0]; this._fileInput.nativeElement.value = null; - this._dialogService.openImportFileAttributeCSVDialog(csvFile, this._appStateService.activeRuleSetId, this._existingConfiguration, async () => { - await this._loadData(); - }); + this._dialogService.openImportFileAttributeCSVDialog( + csvFile, + this._appStateService.activeRuleSetId, + this._existingConfiguration, + async () => { + await this._loadData(); + } + ); } private async _loadData() { try { - const response = await this._fileAttributesService.getFileAttributesConfiguration(this._appStateService.activeRuleSetId).toPromise(); + const response = await this._fileAttributesService + .getFileAttributesConfiguration(this._appStateService.activeRuleSetId) + .toPromise(); this._existingConfiguration = response; this.allEntities = response?.fileAttributeConfigs || []; } catch (e) { diff --git a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html index f718c0007..dd4692bc2 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html @@ -8,7 +8,12 @@
- +
-
{{ 'license-info-screen.copyright-claim-text' | translate: { currentYear: currentYear } }}
+
+ {{ + 'license-info-screen.copyright-claim-text' + | translate: { currentYear: currentYear } + }} +
@@ -54,7 +64,10 @@ -
+
@@ -63,7 +76,10 @@
-
{{ appConfigService.getConfig('LICENSE_START', '-') }} / {{ appConfigService.getConfig('LICENSE_END', '-') }}
+
+ {{ appConfigService.getConfig('LICENSE_START', '-') }} / + {{ appConfigService.getConfig('LICENSE_END', '-') }} +
@@ -76,16 +92,28 @@
{{ currentInfo.numberOfAnalyzedPages }}
-
+
-
{{ 'license-info-screen.total-analyzed' | translate: { date: totalInfo.startDate | date: 'longDate' } }}
+
+ {{ + 'license-info-screen.total-analyzed' + | translate: { date: totalInfo.startDate | date: 'longDate' } + }} +
{{ totalInfo.numberOfAnalyzedPages }}
-
{{ currentInfo.numberOfAnalyzedPages }} ({{ analysisPercentageOfLicense | number: '1.0-2' }}%)
+
+ {{ currentInfo.numberOfAnalyzedPages }} ({{ + analysisPercentageOfLicense | number: '1.0-2' + }}%) +
@@ -123,4 +151,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts index e2080c449..13653695f 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.ts @@ -54,31 +54,47 @@ export class LicenseInformationScreenComponent implements OnInit { startDate: startDate.toDate(), endDate: endDate.toDate() }; - const promises = [this._licenseReportController.licenseReport(currentConfig).toPromise(), this._licenseReportController.licenseReport({}).toPromise()]; + const promises = [ + this._licenseReportController.licenseReport(currentConfig).toPromise(), + this._licenseReportController.licenseReport({}).toPromise() + ]; if (endDate.isBefore(moment())) { const unlicensedConfig = { startDate: endDate.toDate() }; - promises.push(this._licenseReportController.licenseReport(unlicensedConfig).toPromise()); + promises.push( + this._licenseReportController.licenseReport(unlicensedConfig).toPromise() + ); } Promise.all(promises).then((reports) => { [this.currentInfo, this.totalInfo, this.unlicensedInfo] = reports; this.viewReady = true; this.analysisPercentageOfLicense = - this.totalLicensedNumberOfPages > 0 ? (this.currentInfo.numberOfAnalyzedPages / this.totalLicensedNumberOfPages) * 100 : 100; + this.totalLicensedNumberOfPages > 0 + ? (this.currentInfo.numberOfAnalyzedPages / this.totalLicensedNumberOfPages) * + 100 + : 100; }); } sendMail(): void { const licenseCustomer = this.appConfigService.getConfig('LICENSE_CUSTOMER'); - const subject = this._translateService.instant('license-info-screen.email.title', { licenseCustomer }); + const subject = this._translateService.instant('license-info-screen.email.title', { + licenseCustomer + }); const body = [ - this._translateService.instant('license-info-screen.email.body.analyzed', { pages: this.currentInfo.numberOfAnalyzedPages }), - this._translateService.instant('license-info-screen.email.body.licensed', { pages: this.totalLicensedNumberOfPages }) + this._translateService.instant('license-info-screen.email.body.analyzed', { + pages: this.currentInfo.numberOfAnalyzedPages + }), + this._translateService.instant('license-info-screen.email.body.licensed', { + pages: this.totalLicensedNumberOfPages + }) ].join('%0D%0A'); - window.location.href = `mailto:${this.appConfigService.getConfig('LICENSE_EMAIL')}?subject=${subject}&body=${body}`; + window.location.href = `mailto:${this.appConfigService.getConfig( + 'LICENSE_EMAIL' + )}?subject=${subject}&body=${body}`; } private async _setMonthlyStats(startDate: moment.Moment, endDate: moment.Moment) { diff --git a/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.html index 130bc9c4d..d4d946aff 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.html @@ -28,15 +28,24 @@
- {{ 'project-templates-listing.table-header.title' | translate: { length: displayedEntities.length } }} + {{ + 'project-templates-listing.table-header.title' + | translate: { length: displayedEntities.length } + }}
- +
-
+
- +
- +
-
- +
+
@@ -97,13 +125,19 @@
- {{ 'project-templates-listing.dictionaries' | translate: { length: ruleSet.dictionariesCount } }} + {{ + 'project-templates-listing.dictionaries' + | translate: { length: ruleSet.dictionariesCount } + }}
- +
{{ ruleSet.dateAdded | date: 'd MMM. yyyy' }} diff --git a/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.ts index 00902537a..f81ffe5b5 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rule-sets-listing/rule-sets-listing-screen.component.ts @@ -11,7 +11,10 @@ import { RuleSetModel } from '@redaction/red-ui-http'; templateUrl: './rule-sets-listing-screen.component.html', styleUrls: ['./rule-sets-listing-screen.component.scss'] }) -export class RuleSetsListingScreenComponent extends BaseListingComponent implements OnInit { +export class RuleSetsListingScreenComponent + extends BaseListingComponent + implements OnInit +{ protected readonly _searchKey = 'name'; protected readonly _selectionKey = 'ruleSetId'; protected readonly _sortKey = 'rule-sets-listing'; diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html index 17ab17bba..dcac0f4c7 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html @@ -5,7 +5,12 @@
- +
@@ -29,10 +34,21 @@
- -
+ +
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts index cc5b75b16..4d17a85dd 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts @@ -69,7 +69,12 @@ export class RulesScreenComponent extends ComponentHasChanges { const entry = this.currentLines[i]; if (entry?.trim().length > 0) { // only mark non-empty lines - this.activeEditMarkers.push(this.editorComponent.getEditor().getSession().addMarker(new range(i, 0, i, 1), 'changed-row-marker', 'fullLine')); + this.activeEditMarkers.push( + this.editorComponent + .getEditor() + .getSession() + .addMarker(new range(i, 0, i, 1), 'changed-row-marker', 'fullLine') + ); } } } @@ -92,7 +97,11 @@ export class RulesScreenComponent extends ComponentHasChanges { }, () => { this.processing = false; - this._notificationService.showToastNotification(this._translateService.instant('rules-screen.error.generic'), null, NotificationType.ERROR); + this._notificationService.showToastNotification( + this._translateService.instant('rules-screen.error.generic'), + null, + NotificationType.ERROR + ); } ); } diff --git a/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.html index 01184c09b..ebb986f5f 100644 --- a/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.html @@ -34,7 +34,9 @@
@@ -44,7 +46,9 @@
@@ -54,20 +58,30 @@
- + - +
@@ -75,44 +89,69 @@
- +
- + - +
- +
- +
- +
- @@ -141,4 +185,6 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.ts index 3a1ae84f1..09f82b5ae 100644 --- a/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/smtp-config/smtp-config-screen.component.ts @@ -65,32 +65,43 @@ export class SmtpConfigScreenComponent implements OnInit { async save() { this.viewReady = false; - await this._smtpConfigService.updateSMTPConfiguration(this.configForm.getRawValue()).toPromise(); + await this._smtpConfigService + .updateSMTPConfiguration(this.configForm.getRawValue()) + .toPromise(); this._initialValue = this.configForm.getRawValue(); this.viewReady = true; } openAuthConfigDialog(skipDisableOnCancel?: boolean) { - this._dialogService.openSMTPAuthConfigDialog(this.configForm.getRawValue(), (authConfig) => { - if (authConfig) { - this.configForm.patchValue(authConfig); - } else if (!skipDisableOnCancel) { - this.configForm.patchValue({ auth: false }, { emitEvent: false }); + this._dialogService.openSMTPAuthConfigDialog( + this.configForm.getRawValue(), + (authConfig) => { + if (authConfig) { + this.configForm.patchValue(authConfig); + } else if (!skipDisableOnCancel) { + this.configForm.patchValue({ auth: false }, { emitEvent: false }); + } } - }); + ); } async testConnection() { this.viewReady = false; try { - await this._smtpConfigService.testSMTPConfiguration(this.configForm.getRawValue()).toPromise(); + await this._smtpConfigService + .testSMTPConfiguration(this.configForm.getRawValue()) + .toPromise(); this._notificationService.showToastNotification( this._translateService.instant('smtp-config-screen.test.success'), undefined, NotificationType.SUCCESS ); } catch (e) { - this._notificationService.showToastNotification(this._translateService.instant('smtp-config-screen.test.error'), undefined, NotificationType.ERROR); + this._notificationService.showToastNotification( + this._translateService.instant('smtp-config-screen.test.error'), + undefined, + NotificationType.ERROR + ); } finally { this.viewReady = true; } @@ -98,7 +109,9 @@ export class SmtpConfigScreenComponent implements OnInit { private async _loadData() { try { - this._initialValue = await this._smtpConfigService.getCurrentSMTPConfiguration().toPromise(); + this._initialValue = await this._smtpConfigService + .getCurrentSMTPConfiguration() + .toPromise(); this.configForm.patchValue(this._initialValue, { emitEvent: false }); } catch (e) { } finally { diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html index 70985fc3a..297852b3c 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html @@ -8,7 +8,10 @@
- + - {{ 'user-listing.table-header.title' | translate: { length: displayedEntities.length } }} + {{ + 'user-listing.table-header.title' + | translate: { length: displayedEntities.length } + }}
- + - + - + - +
- +
- +
- +
{{ user.email || '-' }}
- +
{{ getDisplayRoles(user) }}
@@ -113,10 +146,15 @@
- +
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts index 918f4d6d0..76274e4e9 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts @@ -50,7 +50,9 @@ export class UserListingScreenComponent extends BaseListingComponent imple if (result.action === 'CREATE') { await this._userControllerService.createUser(result.user).toPromise(); } else if (result.action === 'UPDATE') { - await this._userControllerService.updateProfile(result.user, user.userId).toPromise(); + await this._userControllerService + .updateProfile(result.user, user.userId) + .toPromise(); } await this._loadData(); } @@ -67,7 +69,10 @@ export class UserListingScreenComponent extends BaseListingComponent imple } getDisplayRoles(user: User) { - return user.roles.map((role) => this._translateService.instant('roles.' + role)).join(', ') || this._translateService.instant('roles.NO_ROLE'); + return ( + user.roles.map((role) => this._translateService.instant('roles.' + role)).join(', ') || + this._translateService.instant('roles.NO_ROLE') + ); } async toggleActive(user: User) { @@ -101,32 +106,46 @@ export class UserListingScreenComponent extends BaseListingComponent imple this.chartData = this._translateChartService.translateRoles( [ { - value: this.allEntities.filter((user) => !this.userService.isActive(user)).length, + value: this.allEntities.filter((user) => !this.userService.isActive(user)) + .length, color: 'INACTIVE', label: 'INACTIVE' }, { - value: this.allEntities.filter((user) => user.roles.length === 1 && user.roles[0] === 'RED_USER').length, + value: this.allEntities.filter( + (user) => user.roles.length === 1 && user.roles[0] === 'RED_USER' + ).length, color: 'REGULAR', label: 'REGULAR' }, { - value: this.allEntities.filter((user) => this.userService.isManager(user) && !this.userService.isAdmin(user)).length, + value: this.allEntities.filter( + (user) => + this.userService.isManager(user) && !this.userService.isAdmin(user) + ).length, color: 'MANAGER', label: 'RED_MANAGER' }, { - value: this.allEntities.filter((user) => this.userService.isManager(user) && this.userService.isAdmin(user)).length, + value: this.allEntities.filter( + (user) => this.userService.isManager(user) && this.userService.isAdmin(user) + ).length, color: 'MANAGER_ADMIN', label: 'MANAGER_ADMIN' }, { - value: this.allEntities.filter((user) => this.userService.isUserAdmin(user) && !this.userService.isAdmin(user)).length, + value: this.allEntities.filter( + (user) => + this.userService.isUserAdmin(user) && !this.userService.isAdmin(user) + ).length, color: 'USER_ADMIN', label: 'RED_USER_ADMIN' }, { - value: this.allEntities.filter((user) => this.userService.isAdmin(user) && !this.userService.isManager(user)).length, + value: this.allEntities.filter( + (user) => + this.userService.isAdmin(user) && !this.userService.isManager(user) + ).length, color: 'ADMIN', label: 'RED_ADMIN' } diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html index d101061cf..5ad2ec3a3 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html @@ -3,7 +3,12 @@
- +
@@ -22,7 +27,11 @@ text="watermark-screen.action.save" type="primary" > -
+
@@ -43,7 +52,10 @@
- +
- - + +
- +
- +
- +
- + diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts index 76a2e0f57..6d40b9cbe 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts @@ -78,20 +78,33 @@ export class WatermarkScreenComponent implements OnInit { }; const observable = watermark.text - ? this._watermarkControllerService.saveWatermark(watermark, this.appStateService.activeRuleSetId) - : this._watermarkControllerService.deleteWatermark(this.appStateService.activeRuleSetId); + ? this._watermarkControllerService.saveWatermark( + watermark, + this.appStateService.activeRuleSetId + ) + : this._watermarkControllerService.deleteWatermark( + this.appStateService.activeRuleSetId + ); observable.subscribe( () => { this._loadWatermark(); this._notificationService.showToastNotification( - this._translateService.instant(watermark.text ? 'watermark-screen.action.change-success' : 'watermark-screen.action.delete-success'), + this._translateService.instant( + watermark.text + ? 'watermark-screen.action.change-success' + : 'watermark-screen.action.delete-success' + ), null, NotificationType.SUCCESS ); }, () => { - this._notificationService.showToastNotification(this._translateService.instant('watermark-screen.action.error'), null, NotificationType.ERROR); + this._notificationService.showToastNotification( + this._translateService.instant('watermark-screen.action.error'), + null, + NotificationType.ERROR + ); } ); } @@ -111,18 +124,20 @@ export class WatermarkScreenComponent implements OnInit { } private _loadWatermark() { - this._watermarkControllerService.getWatermark(this.appStateService.activeRuleSetId).subscribe( - (watermark) => { - this._watermark = watermark; - this.configForm.setValue({ ...this._watermark }); - this._loadViewer(); - }, - () => { - this._watermark = DEFAULT_WATERMARK; - this.configForm.setValue({ ...this._watermark }); - this._loadViewer(); - } - ); + this._watermarkControllerService + .getWatermark(this.appStateService.activeRuleSetId) + .subscribe( + (watermark) => { + this._watermark = watermark; + this.configForm.setValue({ ...this._watermark }); + this._loadViewer(); + }, + () => { + this._watermark = DEFAULT_WATERMARK; + this.configForm.setValue({ ...this._watermark }); + this._loadViewer(); + } + ); } private _loadViewer() { @@ -177,14 +192,17 @@ export class WatermarkScreenComponent implements OnInit { const text = this.configForm.get('text').value || ''; const fontSize = this.configForm.get('fontSize').value; const fontType = this.configForm.get('fontType').value; - const orientation: WatermarkModel.WatermarkOrientationEnum = this.configForm.get('orientation').value; + const orientation: WatermarkModel.WatermarkOrientationEnum = + this.configForm.get('orientation').value; const opacity = this.configForm.get('opacity').value; const color = this.configForm.get('hexColor').value; const rgbColor = hexToRgb(color); const stamper = await pdfNet.Stamper.create(3, fontSize, 0); - await stamper.setFontColor(await pdfNet.ColorPt.init(rgbColor.r / 255, rgbColor.g / 255, rgbColor.b / 255)); + await stamper.setFontColor( + await pdfNet.ColorPt.init(rgbColor.r / 255, rgbColor.g / 255, rgbColor.b / 255) + ); await stamper.setOpacity(opacity / 100); switch (orientation) { @@ -200,7 +218,10 @@ export class WatermarkScreenComponent implements OnInit { await stamper.setRotation(-45); } - const font = await pdfNet.Font.createAndEmbed(document, this._convertFont(fontType)); + const font = await pdfNet.Font.createAndEmbed( + document, + this._convertFont(fontType) + ); await stamper.setFont(font); await stamper.setTextAlignment(0); await stamper.stampText(document, text, pageSet); @@ -216,11 +237,26 @@ export class WatermarkScreenComponent implements OnInit { private _initForm() { this.configForm = this._formBuilder.group({ text: [{ value: null, disabled: !this.permissionsService.isAdmin() }], - hexColor: [{ value: null, disabled: !this.permissionsService.isAdmin() }, Validators.required], - opacity: [{ value: null, disabled: !this.permissionsService.isAdmin() }, Validators.required], - fontSize: [{ value: null, disabled: !this.permissionsService.isAdmin() }, Validators.required], - fontType: [{ value: null, disabled: !this.permissionsService.isAdmin() }, Validators.required], - orientation: [{ value: null, disabled: !this.permissionsService.isAdmin() }, Validators.required] + hexColor: [ + { value: null, disabled: !this.permissionsService.isAdmin() }, + Validators.required + ], + opacity: [ + { value: null, disabled: !this.permissionsService.isAdmin() }, + Validators.required + ], + fontSize: [ + { value: null, disabled: !this.permissionsService.isAdmin() }, + Validators.required + ], + fontType: [ + { value: null, disabled: !this.permissionsService.isAdmin() }, + Validators.required + ], + orientation: [ + { value: null, disabled: !this.permissionsService.isAdmin() }, + Validators.required + ] }); } diff --git a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts index 447a76fd7..fa5d22c68 100644 --- a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts +++ b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts @@ -53,19 +53,30 @@ export class AdminDialogService { private readonly _manualRedactionControllerService: ManualRedactionControllerService ) {} - openDeleteDictionaryDialog($event: MouseEvent, dictionary: TypeValue, ruleSetId: string, cb?: Function): MatDialogRef { + openDeleteDictionaryDialog( + $event: MouseEvent, + dictionary: TypeValue, + ruleSetId: string, + cb?: Function + ): MatDialogRef { $event.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, dialogConfig); ref.afterClosed().subscribe(async (result) => { if (result) { - await this._dictionaryControllerService.deleteType(dictionary.type, ruleSetId).toPromise(); + await this._dictionaryControllerService + .deleteType(dictionary.type, ruleSetId) + .toPromise(); if (cb) cb(); } }); return ref; } - openDeleteRuleSetDialog($event: MouseEvent, ruleSet: RuleSetModel, cb?: Function): MatDialogRef { + openDeleteRuleSetDialog( + $event: MouseEvent, + ruleSet: RuleSetModel, + cb?: Function + ): MatDialogRef { $event.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, dialogConfig); ref.afterClosed().subscribe(async (result) => { @@ -77,7 +88,11 @@ export class AdminDialogService { return ref; } - openAddEditDictionaryDialog(dictionary: TypeValue, ruleSetId: string, cb?: Function): MatDialogRef { + openAddEditDictionaryDialog( + dictionary: TypeValue, + ruleSetId: string, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(AddEditDictionaryDialogComponent, { ...dialogConfig, data: { dictionary, ruleSetId }, @@ -93,7 +108,12 @@ export class AdminDialogService { return ref; } - openEditColorsDialog(colors: Colors, colorKey: string, ruleSetId: string, cb?: Function): MatDialogRef { + openEditColorsDialog( + colors: Colors, + colorKey: string, + ruleSetId: string, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(EditColorDialogComponent, { ...dialogConfig, data: { colors, colorKey, ruleSetId }, @@ -109,7 +129,10 @@ export class AdminDialogService { return ref; } - openAddEditRuleSetDialog(ruleSet: RuleSetModel, cb?: Function): MatDialogRef { + openAddEditRuleSetDialog( + ruleSet: RuleSetModel, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(AddEditRuleSetDialogComponent, { ...dialogConfig, width: '900px', @@ -146,7 +169,11 @@ export class AdminDialogService { return ref; } - openAddEditFileAttributeDialog(fileAttribute: FileAttributeConfig, ruleSetId: string, cb?: Function): MatDialogRef { + openAddEditFileAttributeDialog( + fileAttribute: FileAttributeConfig, + ruleSetId: string, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(AddEditFileAttributeDialogComponent, { ...dialogConfig, data: { fileAttribute, ruleSetId }, @@ -182,7 +209,10 @@ export class AdminDialogService { return ref; } - openSMTPAuthConfigDialog(smtpConfig: SMTPConfigurationModel, cb?: Function): MatDialogRef { + openSMTPAuthConfigDialog( + smtpConfig: SMTPConfigurationModel, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(SmtpAuthDialogComponent, { ...dialogConfig, data: smtpConfig, @@ -214,7 +244,10 @@ export class AdminDialogService { return ref; } - openConfirmDeleteUsersDialog(users: User[], cb?: Function): MatDialogRef { + openConfirmDeleteUsersDialog( + users: User[], + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(ConfirmDeleteUsersDialogComponent, { ...dialogConfig, data: users, diff --git a/apps/red-ui/src/app/modules/app-config/app-config.service.ts b/apps/red-ui/src/app/modules/app-config/app-config.service.ts index ba0d7ee79..f9452d13f 100644 --- a/apps/red-ui/src/app/modules/app-config/app-config.service.ts +++ b/apps/red-ui/src/app/modules/app-config/app-config.service.ts @@ -3,7 +3,9 @@ import { HttpClient } from '@angular/common/http'; import { tap } from 'rxjs/operators'; import { Observable } from 'rxjs'; import { Title } from '@angular/platform-browser'; -import { version } from '../../../../../../package.json'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import packageInfo from '../../../../../../package.json'; import { CacheApiService, wipeCaches } from '@redaction/red-cache'; export enum AppConfigKey { @@ -34,23 +36,37 @@ export enum AppConfigKey { export class AppConfigService { private _config: { [key in AppConfigKey]?: any } = {}; - constructor(private readonly _httpClient: HttpClient, private readonly _cacheApiService: CacheApiService, private readonly _titleService: Title) {} + constructor( + private readonly _httpClient: HttpClient, + private readonly _cacheApiService: CacheApiService, + private readonly _titleService: Title + ) {} loadAppConfig(): Observable { - this._cacheApiService.getCachedValue(AppConfigKey.FRONTEND_APP_VERSION).then(async (lastVersion) => { - console.log('[REDACTION] Last app version: ', lastVersion, ' current version ', version); - if (lastVersion !== version) { - console.log('[REDACTION] Version-missmatch - wiping caches!'); - await wipeCaches(); - } - await this._cacheApiService.cacheValue(AppConfigKey.FRONTEND_APP_VERSION, version); - }); + this._cacheApiService + .getCachedValue(AppConfigKey.FRONTEND_APP_VERSION) + .then(async (lastVersion) => { + console.log( + '[REDACTION] Last app version: ', + lastVersion, + ' current version ', + this.version + ); + if (lastVersion !== this.version) { + console.log('[REDACTION] Version-missmatch - wiping caches!'); + await wipeCaches(); + } + await this._cacheApiService.cacheValue( + AppConfigKey.FRONTEND_APP_VERSION, + this.version + ); + }); return this._httpClient.get('/assets/config/config.json').pipe( tap((config) => { console.log('[REDACTION] Started with config: ', config); this._config = config; - this._config[AppConfigKey.FRONTEND_APP_VERSION] = version; + this._config[AppConfigKey.FRONTEND_APP_VERSION] = this.version; this._titleService.setTitle(this.getConfig(AppConfigKey.APP_NAME, 'DDA-R')); }) ); @@ -59,4 +75,8 @@ export class AppConfigService { getConfig(key: AppConfigKey | string, defaultValue?: any) { return this._config[key] ? this._config[key] : defaultValue; } + + get version(): string { + return packageInfo.version; + } } diff --git a/apps/red-ui/src/app/modules/auth/auth.module.ts b/apps/red-ui/src/app/modules/auth/auth.module.ts index eead711f4..33336be2a 100644 --- a/apps/red-ui/src/app/modules/auth/auth.module.ts +++ b/apps/red-ui/src/app/modules/auth/auth.module.ts @@ -7,7 +7,11 @@ import { KeycloakAngularModule, KeycloakOptions, KeycloakService } from 'keycloa import { AppConfigKey, AppConfigService } from '@app-config/app-config.service'; import { BASE_HREF } from '../../tokens'; -export function keycloakInitializer(keycloak: KeycloakService, appConfigService: AppConfigService, baseUrl) { +export function keycloakInitializer( + keycloak: KeycloakService, + appConfigService: AppConfigService, + baseUrl +) { return () => appConfigService .loadAppConfig() @@ -26,12 +30,15 @@ export function keycloakInitializer(keycloak: KeycloakService, appConfigService: initOptions: { checkLoginIframe: false, onLoad: 'check-sso', - silentCheckSsoRedirectUri: window.location.origin + baseUrl + '/assets/oauth/silent-refresh.html', + silentCheckSsoRedirectUri: + window.location.origin + baseUrl + '/assets/oauth/silent-refresh.html', flow: 'standard' }, enableBearerInterceptor: true }; - return keycloak.init(options).then(() => configureAutomaticRedirectToLoginScreen(keycloak)); + return keycloak + .init(options) + .then(() => configureAutomaticRedirectToLoginScreen(keycloak)); }); } diff --git a/apps/red-ui/src/app/modules/auth/red-role.guard.ts b/apps/red-ui/src/app/modules/auth/red-role.guard.ts index a457bfb82..1d9dfecc4 100644 --- a/apps/red-ui/src/app/modules/auth/red-role.guard.ts +++ b/apps/red-ui/src/app/modules/auth/red-role.guard.ts @@ -8,7 +8,11 @@ import { Observable } from 'rxjs'; providedIn: 'root' }) export class RedRoleGuard implements CanActivate { - constructor(protected readonly _router: Router, private readonly _appLoadStateService: AppLoadStateService, private readonly _userService: UserService) {} + constructor( + protected readonly _router: Router, + private readonly _appLoadStateService: AppLoadStateService, + private readonly _userService: UserService + ) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { return new Observable((obs) => { @@ -20,7 +24,11 @@ export class RedRoleGuard implements CanActivate { } else { // we have at least 1 RED Role -> if it's not user he must be admin - if (this._userService.user.isUserAdmin && !this._userService.user.isAdmin && !state.url.startsWith('/main/admin/users')) { + if ( + this._userService.user.isUserAdmin && + !this._userService.user.isAdmin && + !state.url.startsWith('/main/admin/users') + ) { this._router.navigate(['/main/admin/users']); obs.next(false); obs.complete(); diff --git a/apps/red-ui/src/app/modules/icons/icons.module.ts b/apps/red-ui/src/app/modules/icons/icons.module.ts index 4a388f7ef..78e1045d3 100644 --- a/apps/red-ui/src/app/modules/icons/icons.module.ts +++ b/apps/red-ui/src/app/modules/icons/icons.module.ts @@ -9,7 +9,10 @@ import { DomSanitizer } from '@angular/platform-browser'; exports: [MatIconModule] }) export class IconsModule { - constructor(private readonly _iconRegistry: MatIconRegistry, private readonly _sanitizer: DomSanitizer) { + constructor( + private readonly _iconRegistry: MatIconRegistry, + private readonly _sanitizer: DomSanitizer + ) { const icons = [ 'add', 'analyse', @@ -84,7 +87,11 @@ export class IconsModule { ]; for (const icon of icons) { - _iconRegistry.addSvgIconInNamespace('red', icon, _sanitizer.bypassSecurityTrustResourceUrl(`/assets/icons/general/${icon}.svg`)); + _iconRegistry.addSvgIconInNamespace( + 'red', + icon, + _sanitizer.bypassSecurityTrustResourceUrl(`/assets/icons/general/${icon}.svg`) + ); } } } diff --git a/apps/red-ui/src/app/modules/projects/components/annotation-actions/annotation-actions.component.html b/apps/red-ui/src/app/modules/projects/components/annotation-actions/annotation-actions.component.html index 936fdffbe..2fbf16500 100644 --- a/apps/red-ui/src/app/modules/projects/components/annotation-actions/annotation-actions.component.html +++ b/apps/red-ui/src/app/modules/projects/components/annotation-actions/annotation-actions.component.html @@ -10,7 +10,13 @@ -
- +
+
-
- +
+
-
+
diff --git a/apps/red-ui/src/app/modules/projects/components/annotation-remove-actions/annotation-remove-actions.component.ts b/apps/red-ui/src/app/modules/projects/components/annotation-remove-actions/annotation-remove-actions.component.ts index 69b8cef19..897641459 100644 --- a/apps/red-ui/src/app/modules/projects/components/annotation-remove-actions/annotation-remove-actions.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/annotation-remove-actions/annotation-remove-actions.component.ts @@ -65,20 +65,44 @@ export class AnnotationRemoveActionsComponent { suggestRemoveAnnotations($event, removeFromDict: boolean) { $event.stopPropagation(); - this._annotationActionsService.suggestRemoveAnnotation($event, this.annotations, removeFromDict, this.annotationsChanged); + this._annotationActionsService.suggestRemoveAnnotation( + $event, + this.annotations, + removeFromDict, + this.annotationsChanged + ); } markAsFalsePositive($event) { - this._annotationActionsService.markAsFalsePositive($event, this.annotations, this.annotationsChanged); + this._annotationActionsService.markAsFalsePositive( + $event, + this.annotations, + this.annotationsChanged + ); } private _setPermissions() { this.permissions = { - canRemoveOrSuggestToRemoveOnlyHere: this._annotationsPermissions(['canRemoveOrSuggestToRemoveOnlyHere'], true), - canPerformMultipleRemoveActions: this._annotationsPermissions(['canPerformMultipleRemoveActions'], true), - canNotPerformMultipleRemoveActions: this._annotationsPermissions(['canPerformMultipleRemoveActions'], false), - canRemoveOrSuggestToRemoveFromDictionary: this._annotationsPermissions(['canRemoveOrSuggestToRemoveFromDictionary'], true), - canMarkAsFalsePositive: this._annotationsPermissions(['canMarkAsFalsePositive', 'canMarkTextOnlyAsFalsePositive'], true) + canRemoveOrSuggestToRemoveOnlyHere: this._annotationsPermissions( + ['canRemoveOrSuggestToRemoveOnlyHere'], + true + ), + canPerformMultipleRemoveActions: this._annotationsPermissions( + ['canPerformMultipleRemoveActions'], + true + ), + canNotPerformMultipleRemoveActions: this._annotationsPermissions( + ['canPerformMultipleRemoveActions'], + false + ), + canRemoveOrSuggestToRemoveFromDictionary: this._annotationsPermissions( + ['canRemoveOrSuggestToRemoveFromDictionary'], + true + ), + canMarkAsFalsePositive: this._annotationsPermissions( + ['canMarkAsFalsePositive', 'canMarkTextOnlyAsFalsePositive'], + true + ) }; } @@ -89,7 +113,10 @@ export class AnnotationRemoveActionsComponent { this._permissionsService.currentUser, annotation ); - const hasAtLeastOnePermission = keys.reduce((acc, key) => acc || annotationPermissions[key] === expectedValue, false); + const hasAtLeastOnePermission = keys.reduce( + (acc, key) => acc || annotationPermissions[key] === expectedValue, + false + ); return prevValue && hasAtLeastOnePermission; }, true); } diff --git a/apps/red-ui/src/app/modules/projects/components/bulk-actions/project-overview-bulk-actions.component.html b/apps/red-ui/src/app/modules/projects/components/bulk-actions/project-overview-bulk-actions.component.html index f607bf22d..bafe79c00 100644 --- a/apps/red-ui/src/app/modules/projects/components/bulk-actions/project-overview-bulk-actions.component.html +++ b/apps/red-ui/src/app/modules/projects/components/bulk-actions/project-overview-bulk-actions.component.html @@ -7,9 +7,21 @@ type="dark-bg" > - + - + - + - + - + - + this._appStateService.getFileById(this._appStateService.activeProject.project.projectId, fileId)); + return this.selectedFileIds.map((fileId) => + this._appStateService.getFileById( + this._appStateService.activeProject.project.projectId, + fileId + ) + ); } get areAllFilesSelected() { - return this._appStateService.activeProject.files.length !== 0 && this.selectedFileIds.length === this._appStateService.activeProject.files.length; + return ( + this._appStateService.activeProject.files.length !== 0 && + this.selectedFileIds.length === this._appStateService.activeProject.files.length + ); } get areSomeFilesSelected() { @@ -53,8 +64,14 @@ export class ProjectOverviewBulkActionsComponent { get allSelectedFilesCanBeAssignedIntoSameState() { if (this.areSomeFilesSelected) { const selectedFiles = this.selectedFiles; - const allFilesAreUnderReviewOrUnassigned = selectedFiles.reduce((acc, file) => acc && (file.isUnderReview || file.isUnassigned), true); - const allFilesAreUnderApproval = selectedFiles.reduce((acc, file) => acc && file.isUnderApproval, true); + const allFilesAreUnderReviewOrUnassigned = selectedFiles.reduce( + (acc, file) => acc && (file.isUnderReview || file.isUnassigned), + true + ); + const allFilesAreUnderApproval = selectedFiles.reduce( + (acc, file) => acc && file.isUnderApproval, + true + ); return allFilesAreUnderReviewOrUnassigned || allFilesAreUnderApproval; } return false; @@ -63,27 +80,42 @@ export class ProjectOverviewBulkActionsComponent { get canAssignToSelf() { return ( this.allSelectedFilesCanBeAssignedIntoSameState && - this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canAssignToSelf(file), true) + this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canAssignToSelf(file), + true + ) ); } get canAssign() { return ( this.allSelectedFilesCanBeAssignedIntoSameState && - this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canAssignUser(file), true) + this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canAssignUser(file), + true + ) ); } get canDelete() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canDeleteFile(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canDeleteFile(file), + true + ); } get canReanalyse() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canReanalyseFile(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canReanalyseFile(file), + true + ); } get canOcr() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canOcrFile(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canOcrFile(file), + true + ); } get fileStatuses() { @@ -92,47 +124,74 @@ export class ProjectOverviewBulkActionsComponent { // Under review get canSetToUnderReview() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canSetUnderReview(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canSetUnderReview(file), + true + ); } // Under approval get canSetToUnderApproval() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canSetUnderApproval(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canSetUnderApproval(file), + true + ); } // Approve get isReadyForApproval() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.isReadyForApproval(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.isReadyForApproval(file), + true + ); } get canApprove() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canApprove(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canApprove(file), + true + ); } // Undo approval get canUndoApproval() { - return this.selectedFiles.reduce((acc, file) => acc && this._permissionsService.canUndoApproval(file), true); + return this.selectedFiles.reduce( + (acc, file) => acc && this._permissionsService.canUndoApproval(file), + true + ); } get assignTooltip() { - const allFilesAreUnderApproval = this.selectedFiles.reduce((acc, file) => acc && file.isUnderApproval, true); - return allFilesAreUnderApproval ? 'project-overview.assign-approver' : 'project-overview.assign-reviewer'; + const allFilesAreUnderApproval = this.selectedFiles.reduce( + (acc, file) => acc && file.isUnderApproval, + true + ); + return allFilesAreUnderApproval + ? 'project-overview.assign-approver' + : 'project-overview.assign-reviewer'; } delete() { this.loading = true; - this._dialogService.openDeleteFilesDialog(null, this._appStateService.activeProjectId, this.selectedFileIds, () => { - this.reload.emit(); - this.loading = false; - this.selectedFileIds.splice(0, this.selectedFileIds.length); - }); + this._dialogService.openDeleteFilesDialog( + null, + this._appStateService.activeProjectId, + this.selectedFileIds, + () => { + this.reload.emit(); + this.loading = false; + this.selectedFileIds.splice(0, this.selectedFileIds.length); + } + ); } setToUnderApproval() { // If more than 1 approver - show dialog and ask who to assign if (this._appStateService.activeProject.approverIds.length > 1) { this.loading = true; - const files = this.selectedFileIds.map((fileId) => this._appStateService.getFileById(this._appStateService.activeProjectId, fileId)); + const files = this.selectedFileIds.map((fileId) => + this._appStateService.getFileById(this._appStateService.activeProjectId, fileId) + ); this._dialogService.openAssignFileToUserDialog( files, @@ -144,13 +203,25 @@ export class ProjectOverviewBulkActionsComponent { true ); } else { - this._performBulkAction(this._fileActionService.setFileUnderApproval(this.selectedFiles, this._appStateService.activeProject.approverIds[0])); + this._performBulkAction( + this._fileActionService.setFileUnderApproval( + this.selectedFiles, + this._appStateService.activeProject.approverIds[0] + ) + ); } } async reanalyse() { - const fileIds = this.selectedFiles.filter((file) => this._permissionsService.fileRequiresReanalysis(file)).map((file) => file.fileId); - this._performBulkAction(this._reanalysisControllerService.reanalyzeFilesForProject(fileIds, this._appStateService.activeProject.projectId)); + const fileIds = this.selectedFiles + .filter((file) => this._permissionsService.fileRequiresReanalysis(file)) + .map((file) => file.fileId); + this._performBulkAction( + this._reanalysisControllerService.reanalyzeFilesForProject( + fileIds, + this._appStateService.activeProject.projectId + ) + ); } ocr() { @@ -175,7 +246,9 @@ export class ProjectOverviewBulkActionsComponent { assign() { this.loading = true; - const files = this.selectedFileIds.map((fileId) => this._appStateService.getFileById(this._appStateService.activeProjectId, fileId)); + const files = this.selectedFileIds.map((fileId) => + this._appStateService.getFileById(this._appStateService.activeProjectId, fileId) + ); const mode = files[0].isUnderApproval ? 'approver' : 'reviewer'; diff --git a/apps/red-ui/src/app/modules/projects/components/comments/comments.component.html b/apps/red-ui/src/app/modules/projects/components/comments/comments.component.html index 68c459c82..abd019aa0 100644 --- a/apps/red-ui/src/app/modules/projects/components/comments/comments.component.html +++ b/apps/red-ui/src/app/modules/projects/components/comments/comments.component.html @@ -1,10 +1,20 @@
-
- +
+
-
+
@@ -20,9 +30,14 @@ {{ expanded ? translateService.instant('comments.hide-comments') - : translateService.instant(annotation.comments.length === 1 ? 'comments.comment' : 'comments.comments', { - count: annotation.comments.length - }) + : translateService.instant( + annotation.comments.length === 1 + ? 'comments.comment' + : 'comments.comments', + { + count: annotation.comments.length + } + ) }}
- +
- +
- -
+ +
diff --git a/apps/red-ui/src/app/modules/projects/components/comments/comments.component.ts b/apps/red-ui/src/app/modules/projects/components/comments/comments.component.ts index 30a1c421b..7dd82fc20 100644 --- a/apps/red-ui/src/app/modules/projects/components/comments/comments.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/comments/comments.component.ts @@ -58,25 +58,29 @@ export class CommentsComponent { addComment(): void { const value = this.commentForm.value.comment; if (value) { - this._manualAnnotationService.addComment(value, this.annotation.id).subscribe((commentResponse) => { - this.annotation.comments.push({ - text: value, - id: commentResponse.commentId, - user: this._userService.userId + this._manualAnnotationService + .addComment(value, this.annotation.id) + .subscribe((commentResponse) => { + this.annotation.comments.push({ + text: value, + id: commentResponse.commentId, + user: this._userService.userId + }); }); - }); this.commentForm.reset(); this.toggleAddingComment(); } } deleteComment(comment: Comment): void { - this._manualAnnotationService.deleteComment(comment.id, this.annotation.id).subscribe(() => { - this.annotation.comments.splice(this.annotation.comments.indexOf(comment), 1); - if (!this.annotation.comments.length) { - this.expanded = false; - } - }); + this._manualAnnotationService + .deleteComment(comment.id, this.annotation.id) + .subscribe(() => { + this.annotation.comments.splice(this.annotation.comments.indexOf(comment), 1); + if (!this.annotation.comments.length) { + this.expanded = false; + } + }); } isCommentOwner(comment: Comment): boolean { diff --git a/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.html b/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.html index 027063856..afea53c5d 100644 --- a/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.html +++ b/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.html @@ -26,19 +26,31 @@
- {{ 'file-preview.tabs.document-info.details.project' | translate: { projectName: project.name } }} + {{ + 'file-preview.tabs.document-info.details.project' + | translate: { projectName: project.name } + }}
- {{ 'file-preview.tabs.document-info.details.pages' | translate: { pages: file.numberOfPages } }} + {{ + 'file-preview.tabs.document-info.details.pages' + | translate: { pages: file.numberOfPages } + }}
- {{ 'file-preview.tabs.document-info.details.created-on' | translate: { date: file.added | date: 'mediumDate' } }} + {{ + 'file-preview.tabs.document-info.details.created-on' + | translate: { date: file.added | date: 'mediumDate' } + }}
- {{ 'file-preview.tabs.document-info.details.due' | translate: { date: project.project.dueDate | date: 'mediumDate' } }} + {{ + 'file-preview.tabs.document-info.details.due' + | translate: { date: project.project.dueDate | date: 'mediumDate' } + }}
diff --git a/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.ts b/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.ts index 443ef4c89..5c3b73055 100644 --- a/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/document-info/document-info.component.ts @@ -14,7 +14,10 @@ export class DocumentInfoComponent { fileAttributesConfig: FileAttributesConfig; - constructor(private readonly _appStateService: AppStateService, private readonly _dialogService: ProjectsDialogService) { + constructor( + private readonly _appStateService: AppStateService, + private readonly _dialogService: ProjectsDialogService + ) { this.fileAttributesConfig = this._appStateService.activeFileAttributesConfig; } diff --git a/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.html b/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.html index c15d51686..ad86243aa 100644 --- a/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.html +++ b/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.html @@ -94,7 +94,11 @@ *ngIf="permissionsService.isReadyForApproval(fileStatus)" [disabled]="!permissionsService.canApprove(fileStatus)" [tooltipPosition]="tooltipPosition" - [tooltip]="permissionsService.canApprove(fileStatus) ? 'project-overview.approve' : 'project-overview.approve-disabled'" + [tooltip]=" + permissionsService.canApprove(fileStatus) + ? 'project-overview.approve' + : 'project-overview.approve-disabled' + " [type]="buttonType" icon="red:approved" > diff --git a/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.ts b/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.ts index a16fc6c8c..6284a6d85 100644 --- a/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/file-actions/file-actions.component.ts @@ -38,7 +38,9 @@ export class FileActionsComponent implements OnInit { return 'file-preview.toggle-analysis.only-managers'; } - return this.fileStatus?.isExcluded ? 'file-preview.toggle-analysis.enable' : 'file-preview.toggle-analysis.disable'; + return this.fileStatus?.isExcluded + ? 'file-preview.toggle-analysis.enable' + : 'file-preview.toggle-analysis.disable'; } get canAssignToSelf() { @@ -86,7 +88,9 @@ export class FileActionsComponent implements OnInit { } get assignTooltip() { - return this.fileStatus.isUnderApproval ? 'project-overview.assign-approver' : 'project-overview.assign-reviewer'; + return this.fileStatus.isUnderApproval + ? 'project-overview.assign-approver' + : 'project-overview.assign-reviewer'; } ngOnInit(): void { @@ -108,9 +112,14 @@ export class FileActionsComponent implements OnInit { } openDeleteFileDialog($event: MouseEvent) { - this._dialogService.openDeleteFilesDialog($event, this.fileStatus.projectId, [this.fileStatus.fileId], () => { - this.actionPerformed.emit('delete'); - }); + this._dialogService.openDeleteFilesDialog( + $event, + this.fileStatus.projectId, + [this.fileStatus.fileId], + () => { + this.actionPerformed.emit('delete'); + } + ); } assign($event: MouseEvent) { @@ -137,7 +146,11 @@ export class FileActionsComponent implements OnInit { setFileUnderApproval($event: MouseEvent) { $event.stopPropagation(); if (this.appStateService.activeProject.approverIds.length > 1) { - this._fileActionService.assignProjectApprover(this.fileStatus, () => this.actionPerformed.emit('assign-reviewer'), true); + this._fileActionService.assignProjectApprover( + this.fileStatus, + () => this.actionPerformed.emit('assign-reviewer'), + true + ); } else { this._fileActionService.setFileUnderApproval(this.fileStatus).subscribe(() => { this.reloadProjects('set-under-approval'); @@ -161,7 +174,11 @@ export class FileActionsComponent implements OnInit { setFileUnderReview($event: MouseEvent, ignoreDialogChanges = false) { $event.stopPropagation(); - this._fileActionService.assignProjectReviewer(this.fileStatus, () => this.actionPerformed.emit('assign-reviewer'), ignoreDialogChanges); + this._fileActionService.assignProjectReviewer( + this.fileStatus, + () => this.actionPerformed.emit('assign-reviewer'), + ignoreDialogChanges + ); } reloadProjects(action: string) { @@ -174,6 +191,8 @@ export class FileActionsComponent implements OnInit { $event.stopPropagation(); await this._fileActionService.toggleAnalysis(this.fileStatus).toPromise(); await this.appStateService.getFiles(); - this.actionPerformed.emit(this.fileStatus?.isExcluded ? 'enable-analysis' : 'disable-analysis'); + this.actionPerformed.emit( + this.fileStatus?.isExcluded ? 'enable-analysis' : 'disable-analysis' + ); } } diff --git a/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.html index 64c466bdb..4f4b27476 100644 --- a/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.html @@ -33,7 +33,11 @@ tooltipPosition="above" >
- +
{{ activeViewerPage }} - {{ displayedAnnotations[activeViewerPage]?.annotations?.length || 0 }} - {{ activeViewerPage }} - + {{ displayedAnnotations[activeViewerPage]?.annotations?.length || 0 }} +
-
All
-
None
+
+ All +
+
+ None +
@@ -98,7 +113,12 @@ tabindex="1" > - +
- +
- +
{{ annotation.typeLabel | translate }}
-
+
{{ annotation.descriptor | translate }}: {{ annotation.dictionary | humanize: false }}
- : {{ annotation.content }} + : {{ annotation.content }}
{{ annotation.id }}
@@ -155,7 +188,9 @@
@@ -170,16 +205,25 @@
- + - + {{ filter.key | humanize: false }} - + diff --git a/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.ts index 015968686..c583b6b10 100644 --- a/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/file-workload/file-workload.component.ts @@ -1,4 +1,14 @@ -import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, Output, TemplateRef, ViewChild } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + ElementRef, + EventEmitter, + HostListener, + Input, + Output, + TemplateRef, + ViewChild +} from '@angular/core'; import { FilterModel } from '@shared/components/filter/model/filter.model'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { AnnotationProcessingService } from '../../services/annotation-processing.service'; @@ -27,7 +37,9 @@ export class FileWorkloadComponent { @Input() hideSkipped: boolean; @Input() annotationActionsTemplate: TemplateRef; @Output() shouldDeselectAnnotationsOnPageChangeChange = new EventEmitter(); - @Output() selectAnnotations = new EventEmitter(); + @Output() selectAnnotations = new EventEmitter< + AnnotationWrapper[] | { annotations: AnnotationWrapper[]; multiSelect: boolean } + >(); @Output() deselectAnnotations = new EventEmitter(); @Output() selectPage = new EventEmitter(); @Output() toggleSkipped = new EventEmitter(); @@ -37,7 +49,10 @@ export class FileWorkloadComponent { @ViewChild('annotationsElement') private _annotationsElement: ElementRef; @ViewChild('quickNavigation') private _quickNavigationElement: ElementRef; - constructor(private readonly _changeDetectorRef: ChangeDetectorRef, private readonly _annotationProcessingService: AnnotationProcessingService) {} + constructor( + private readonly _changeDetectorRef: ChangeDetectorRef, + private readonly _annotationProcessingService: AnnotationProcessingService + ) {} private _annotations: AnnotationWrapper[]; @@ -66,7 +81,10 @@ export class FileWorkloadComponent { return this.selectedAnnotations?.length ? this.selectedAnnotations[0] : null; } - private static _scrollToFirstElement(elements: HTMLElement[], mode: 'always' | 'if-needed' = 'if-needed') { + private static _scrollToFirstElement( + elements: HTMLElement[], + mode: 'always' | 'if-needed' = 'if-needed' + ) { if (elements.length > 0) { scrollIntoView(elements[0], { behavior: 'smooth', @@ -86,7 +104,9 @@ export class FileWorkloadComponent { } pageHasSelection(page: number) { - return this.multiSelectActive && !!this.selectedAnnotations?.find((a) => a.pageNumber === page); + return ( + this.multiSelectActive && !!this.selectedAnnotations?.find((a) => a.pageNumber === page) + ); } selectAllOnActivePage() { @@ -101,7 +121,11 @@ export class FileWorkloadComponent { @debounce(0) filtersChanged(filters: { primary: FilterModel[]; secondary?: FilterModel[] }) { - this.displayedAnnotations = this._annotationProcessingService.filterAndGroupAnnotations(this._annotations, filters.primary, filters.secondary); + this.displayedAnnotations = this._annotationProcessingService.filterAndGroupAnnotations( + this._annotations, + filters.primary, + filters.secondary + ); this.displayedPages = Object.keys(this.displayedAnnotations).map((key) => Number(key)); this._changeDetectorRef.markForCheck(); } @@ -114,13 +138,20 @@ export class FileWorkloadComponent { if (($event.ctrlKey || $event.metaKey) && this.selectedAnnotations.length > 0) { this.multiSelectActive = true; } - this.selectAnnotations.emit({ annotations: [annotation], multiSelect: this.multiSelectActive }); + this.selectAnnotations.emit({ + annotations: [annotation], + multiSelect: this.multiSelectActive + }); } } @HostListener('window:keyup', ['$event']) handleKeyEvent($event: KeyboardEvent) { - if (!ALL_HOTKEY_ARRAY.includes($event.key) || this.dialogRef?.getState() === MatDialogState.OPEN || ($event.target as any).localName === 'input') { + if ( + !ALL_HOTKEY_ARRAY.includes($event.key) || + this.dialogRef?.getState() === MatDialogState.OPEN || + ($event.target as any).localName === 'input' + ) { return; } @@ -131,7 +162,8 @@ export class FileWorkloadComponent { if ($event.key === 'ArrowRight') { this.pagesPanelActive = false; - // if we activated annotationsPanel - select first annotation from this page in case there is no + // if we activated annotationsPanel - + // select first annotation from this page in case there is no // selected annotation on this page and not in multi select mode if (!this.pagesPanelActive && !this.multiSelectActive) { this._selectFirstAnnotationOnCurrentPageIfNecessary(); @@ -140,7 +172,8 @@ export class FileWorkloadComponent { } if (!this.pagesPanelActive) { - // Disable annotation navigation in multi select mode => TODO: maybe implement selection on enter? + // Disable annotation navigation in multi select mode + // => TODO: maybe implement selection on enter? if (!this.multiSelectActive) { this._navigateAnnotations($event); } @@ -159,7 +192,9 @@ export class FileWorkloadComponent { } scrollAnnotationsToPage(page: number, mode: 'always' | 'if-needed' = 'if-needed') { - const elements: any[] = this._annotationsElement.nativeElement.querySelectorAll(`div[anotation-page-header="${page}"]`); + const elements: any[] = this._annotationsElement.nativeElement.querySelectorAll( + `div[anotation-page-header="${page}"]` + ); FileWorkloadComponent._scrollToFirstElement(elements, mode); } @@ -168,13 +203,18 @@ export class FileWorkloadComponent { if (!this.selectedAnnotations || this.selectedAnnotations.length === 0) { return; } - const elements: any[] = this._annotationsElement.nativeElement.querySelectorAll(`div[annotation-id="${this._firstSelectedAnnotation?.id}"].active`); + const elements: any[] = this._annotationsElement.nativeElement.querySelectorAll( + `div[annotation-id="${this._firstSelectedAnnotation?.id}"].active` + ); FileWorkloadComponent._scrollToFirstElement(elements); } scrollQuickNavigation() { let quickNavPageIndex = this.displayedPages.findIndex((p) => p >= this.activeViewerPage); - if (quickNavPageIndex === -1 || this.displayedPages[quickNavPageIndex] !== this.activeViewerPage) { + if ( + quickNavPageIndex === -1 || + this.displayedPages[quickNavPageIndex] !== this.activeViewerPage + ) { quickNavPageIndex = Math.max(0, quickNavPageIndex - 1); } this._scrollQuickNavigationToPage(this.displayedPages[quickNavPageIndex]); @@ -194,7 +234,10 @@ export class FileWorkloadComponent { } preventKeyDefault($event: KeyboardEvent) { - if (COMMAND_KEY_ARRAY.includes($event.key) && !(($event.target as any).localName === 'input')) { + if ( + COMMAND_KEY_ARRAY.includes($event.key) && + !(($event.target as any).localName === 'input') + ) { $event.preventDefault(); } } @@ -213,39 +256,53 @@ export class FileWorkloadComponent { private _selectFirstAnnotationOnCurrentPageIfNecessary() { if ( - (!this._firstSelectedAnnotation || this.activeViewerPage !== this._firstSelectedAnnotation.pageNumber) && + (!this._firstSelectedAnnotation || + this.activeViewerPage !== this._firstSelectedAnnotation.pageNumber) && this.displayedPages.indexOf(this.activeViewerPage) >= 0 ) { - this.selectAnnotations.emit([this.displayedAnnotations[this.activeViewerPage].annotations[0]]); + this.selectAnnotations.emit([ + this.displayedAnnotations[this.activeViewerPage].annotations[0] + ]); } } private _navigateAnnotations($event: KeyboardEvent) { - if (!this._firstSelectedAnnotation || this.activeViewerPage !== this._firstSelectedAnnotation.pageNumber) { + if ( + !this._firstSelectedAnnotation || + this.activeViewerPage !== this._firstSelectedAnnotation.pageNumber + ) { const pageIdx = this.displayedPages.indexOf(this.activeViewerPage); if (pageIdx !== -1) { // Displayed page has annotations - this.selectAnnotations.emit([this.displayedAnnotations[this.activeViewerPage].annotations[0]]); + this.selectAnnotations.emit([ + this.displayedAnnotations[this.activeViewerPage].annotations[0] + ]); } else { // Displayed page doesn't have annotations if ($event.key === 'ArrowDown') { const nextPage = this._nextPageWithAnnotations(); this.shouldDeselectAnnotationsOnPageChange = false; this.shouldDeselectAnnotationsOnPageChangeChange.emit(false); - this.selectAnnotations.emit([this.displayedAnnotations[nextPage].annotations[0]]); + this.selectAnnotations.emit([ + this.displayedAnnotations[nextPage].annotations[0] + ]); } else { const prevPage = this._prevPageWithAnnotations(); this.shouldDeselectAnnotationsOnPageChange = false; this.shouldDeselectAnnotationsOnPageChangeChange.emit(false); const prevPageAnnotations = this.displayedAnnotations[prevPage].annotations; - this.selectAnnotations.emit([prevPageAnnotations[prevPageAnnotations.length - 1]]); + this.selectAnnotations.emit([ + prevPageAnnotations[prevPageAnnotations.length - 1] + ]); } } } else { const page = this._firstSelectedAnnotation.pageNumber; const pageIdx = this.displayedPages.indexOf(page); const annotationsOnPage = this.displayedAnnotations[page].annotations; - const idx = annotationsOnPage.findIndex((a) => a.id === this._firstSelectedAnnotation.id); + const idx = annotationsOnPage.findIndex( + (a) => a.id === this._firstSelectedAnnotation.id + ); if ($event.key === 'ArrowDown') { if (idx + 1 !== annotationsOnPage.length) { @@ -253,7 +310,8 @@ export class FileWorkloadComponent { this.selectAnnotations.emit([annotationsOnPage[idx + 1]]); } else if (pageIdx + 1 < this.displayedPages.length) { // If not last page - const nextPageAnnotations = this.displayedAnnotations[this.displayedPages[pageIdx + 1]].annotations; + const nextPageAnnotations = + this.displayedAnnotations[this.displayedPages[pageIdx + 1]].annotations; this.shouldDeselectAnnotationsOnPageChange = false; this.shouldDeselectAnnotationsOnPageChangeChange.emit(false); this.selectAnnotations.emit([nextPageAnnotations[0]]); @@ -264,10 +322,13 @@ export class FileWorkloadComponent { this.selectAnnotations.emit([annotationsOnPage[idx - 1]]); } else if (pageIdx) { // If not first page - const prevPageAnnotations = this.displayedAnnotations[this.displayedPages[pageIdx - 1]].annotations; + const prevPageAnnotations = + this.displayedAnnotations[this.displayedPages[pageIdx - 1]].annotations; this.shouldDeselectAnnotationsOnPageChange = false; this.shouldDeselectAnnotationsOnPageChangeChange.emit(false); - this.selectAnnotations.emit([prevPageAnnotations[prevPageAnnotations.length - 1]]); + this.selectAnnotations.emit([ + prevPageAnnotations[prevPageAnnotations.length - 1] + ]); } } } @@ -329,7 +390,9 @@ export class FileWorkloadComponent { } private _scrollQuickNavigationToPage(page: number) { - const elements: any[] = this._quickNavigationElement.nativeElement.querySelectorAll(`#quick-nav-page-${page}`); + const elements: any[] = this._quickNavigationElement.nativeElement.querySelectorAll( + `#quick-nav-page-${page}` + ); FileWorkloadComponent._scrollToFirstElement(elements); } } diff --git a/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.html b/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.html index ced0314a7..0a14004fe 100644 --- a/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.html +++ b/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.html @@ -1,9 +1,39 @@
- - - - - - + + + + + +
diff --git a/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.scss b/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.scss index 37dc214e1..3e244cd8a 100644 --- a/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.scss +++ b/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.scss @@ -1,4 +1,4 @@ -@import '/apps/red-ui/src/assets/styles/red-variables'; +@import 'apps/red-ui/src/assets/styles/red-variables'; .needs-work { display: flex; diff --git a/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.ts b/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.ts index 7fc415b67..45dd53f38 100644 --- a/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/needs-work-badge/needs-work-badge.component.ts @@ -12,7 +12,10 @@ import { ProjectWrapper } from '@state/model/project.wrapper'; export class NeedsWorkBadgeComponent { @Input() needsWorkInput: FileStatusWrapper | ProjectWrapper; - constructor(private readonly _appStateService: AppStateService, private readonly _permissionsService: PermissionsService) {} + constructor( + private readonly _appStateService: AppStateService, + private readonly _permissionsService: PermissionsService + ) {} get suggestionColor() { return this._getDictionaryColor('suggestion'); @@ -47,7 +50,10 @@ export class NeedsWorkBadgeComponent { } get hasAnnotationComments(): boolean { - return this.needsWorkInput instanceof FileStatusWrapper && (this.needsWorkInput).hasAnnotationComments; + return ( + this.needsWorkInput instanceof FileStatusWrapper && + (this.needsWorkInput).hasAnnotationComments + ); } reanalysisRequired() { diff --git a/apps/red-ui/src/app/modules/projects/components/page-indicator/page-indicator.component.ts b/apps/red-ui/src/app/modules/projects/components/page-indicator/page-indicator.component.ts index f7b1e8e65..95f63ad02 100644 --- a/apps/red-ui/src/app/modules/projects/components/page-indicator/page-indicator.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/page-indicator/page-indicator.component.ts @@ -1,4 +1,13 @@ -import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core'; +import { + Component, + EventEmitter, + Input, + OnChanges, + OnDestroy, + OnInit, + Output, + SimpleChanges +} from '@angular/core'; import { ViewedPages, ViewedPagesControllerService } from '@redaction/red-ui-http'; import { AppStateService } from '@state/app-state.service'; import { PermissionsService } from '@services/permissions.service'; @@ -95,15 +104,25 @@ export class PageIndicatorComponent implements OnChanges, OnInit, OnDestroy { private _markPageRead() { this._viewedPagesControllerService - .addPage({ page: this.number }, this._appStateService.activeProjectId, this._appStateService.activeFileId) + .addPage( + { page: this.number }, + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ) .subscribe(() => { this.viewedPages?.pages?.push(this.number); }); } private _markPageUnread() { - this._viewedPagesControllerService.removePage(this._appStateService.activeProjectId, this._appStateService.activeFileId, this.number).subscribe(() => { - this.viewedPages?.pages?.splice(this.viewedPages?.pages?.indexOf(this.number), 1); - }); + this._viewedPagesControllerService + .removePage( + this._appStateService.activeProjectId, + this._appStateService.activeFileId, + this.number + ) + .subscribe(() => { + this.viewedPages?.pages?.splice(this.viewedPages?.pages?.indexOf(this.number), 1); + }); } } diff --git a/apps/red-ui/src/app/modules/projects/components/pdf-viewer/pdf-viewer.component.ts b/apps/red-ui/src/app/modules/projects/components/pdf-viewer/pdf-viewer.component.ts index 2fa608302..7529fa3b6 100644 --- a/apps/red-ui/src/app/modules/projects/components/pdf-viewer/pdf-viewer.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/pdf-viewer/pdf-viewer.component.ts @@ -1,4 +1,17 @@ -import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, NgZone, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'; +import { + AfterViewInit, + Component, + ElementRef, + EventEmitter, + Inject, + Input, + NgZone, + OnChanges, + OnInit, + Output, + SimpleChanges, + ViewChild +} from '@angular/core'; import { ManualRedactionEntry, Rectangle } from '@redaction/red-ui-http'; import WebViewer, { Annotations, Tools, WebViewerInstance } from '@pdftron/webviewer'; import { TranslateService } from '@ngx-translate/core'; @@ -72,7 +85,9 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { this.instance.annotManager.deselectAllAnnotations(); } - selectAnnotations($event: AnnotationWrapper[] | { annotations: AnnotationWrapper[]; multiSelect: boolean }) { + selectAnnotations( + $event: AnnotationWrapper[] | { annotations: AnnotationWrapper[]; multiSelect: boolean } + ) { let annotations: AnnotationWrapper[]; let multiSelect: boolean; if ($event instanceof Array) { @@ -87,14 +102,18 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { this.deselectAllAnnotations(); } - const annotationsFromViewer = annotations.map((ann) => this.instance.annotManager.getAnnotationById(ann.id)); + const annotationsFromViewer = annotations.map((ann) => + this.instance.annotManager.getAnnotationById(ann.id) + ); this.instance.annotManager.selectAnnotations(annotationsFromViewer); this.navigateToPage(annotations[0].pageNumber); this.instance.annotManager.jumpToAnnotation(annotationsFromViewer[0]); } deselectAnnotations(annotations: AnnotationWrapper[]) { - this.instance.annotManager.deselectAnnotations(annotations.map((ann) => this.instance.annotManager.getAnnotationById(ann.id))); + this.instance.annotManager.deselectAnnotations( + annotations.map((ann) => this.instance.annotManager.getAnnotationById(ann.id)) + ); } navigateToPage(pageNumber: number) { @@ -107,7 +126,9 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { setInitialViewerState() { // viewer init this.instance.setFitMode('FitPage'); - const instanceDisplayMode = this.instance.docViewer.getDisplayModeManager().getDisplayMode(); + const instanceDisplayMode = this.instance.docViewer + .getDisplayModeManager() + .getDisplayMode(); instanceDisplayMode.mode = 'Single'; this.instance.docViewer.getDisplayModeManager().setDisplayMode(instanceDisplayMode); } @@ -127,20 +148,28 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { this._configureTextPopup(); instance.annotManager.on('annotationSelected', (annotations, action) => { - this.annotationSelected.emit(instance.annotManager.getSelectedAnnotations().map((ann) => ann.Id)); + this.annotationSelected.emit( + instance.annotManager.getSelectedAnnotations().map((ann) => ann.Id) + ); if (action === 'deselected') { this._toggleRectangleAnnotationAction(true); } else { this._configureAnnotationSpecificActions(annotations); - this._toggleRectangleAnnotationAction(annotations.length === 1 && annotations[0].ReadOnly); + this._toggleRectangleAnnotationAction( + annotations.length === 1 && annotations[0].ReadOnly + ); // this.annotationSelected.emit(annotations.map((a) => a.Id)); } }); instance.annotManager.on('annotationChanged', (annotations) => { - // when a rectangle is drawn, it returns one annotation with tool name 'AnnotationCreateRectangle; + // when a rectangle is drawn, + // it returns one annotation with tool name 'AnnotationCreateRectangle; // this will auto select rectangle after drawing - if (annotations.length === 1 && annotations[0].ToolName === 'AnnotationCreateRectangle') { + if ( + annotations.length === 1 && + annotations[0].ToolName === 'AnnotationCreateRectangle' + ) { instance.annotManager.selectAnnotations(annotations); } }); @@ -183,7 +212,9 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { instance.iframeWindow.addEventListener('visibilityChanged', (event: any) => { if (event.detail.element === 'searchPanel') { - const inputElement = instance.iframeWindow.document.getElementById('SearchPanel__input') as HTMLInputElement; + const inputElement = instance.iframeWindow.document.getElementById( + 'SearchPanel__input' + ) as HTMLInputElement; setTimeout(() => { inputElement.value = ''; }, 0); @@ -253,43 +284,58 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { private _configureAnnotationSpecificActions(viewerAnnotations: Annotations.Annotation[]) { console.log('configure actions', viewerAnnotations); - if (this.canPerformActions) { - const annotationWrappers = viewerAnnotations.map((va) => this.annotations.find((a) => a.id === va.Id)).filter((va) => !!va); - this.instance.annotationPopup.update([]); - - if (annotationWrappers.length === 0) { - this._configureRectangleAnnotationPopup(); - return; - } - - // Add hide action as last item - const allAnnotationsHaveImageAction = annotationWrappers.reduce((acc, next) => acc && next.isImage, true); - if (allAnnotationsHaveImageAction) { - const allAreVisible = viewerAnnotations.reduce((acc, next) => next.isVisible() && acc, true); - - this.instance.annotationPopup.add([ - { - type: 'actionButton', - img: allAreVisible - ? this._convertPath('/assets/icons/general/visibility-off.svg') - : this._convertPath('/assets/icons/general/visibility.svg'), - title: this._translateService.instant('annotation-actions.hide'), - onClick: () => { - this._ngZone.run(() => { - if (allAreVisible) { - this.instance.annotManager.hideAnnotations(viewerAnnotations); - } else { - this.instance.annotManager.showAnnotations(viewerAnnotations); - } - this.instance.annotManager.deselectAllAnnotations(); - }); - } - } - ]); - } - - this.instance.annotationPopup.add(this._annotationActionsService.getViewerAvailableActions(annotationWrappers, this.annotationsChanged)); + if (!this.canPerformActions) { + return; } + + const annotationWrappers = viewerAnnotations + .map((va) => this.annotations.find((a) => a.id === va.Id)) + .filter((va) => !!va); + this.instance.annotationPopup.update([]); + + if (annotationWrappers.length === 0) { + this._configureRectangleAnnotationPopup(); + return; + } + + // Add hide action as last item + const allAnnotationsHaveImageAction = annotationWrappers.reduce( + (acc, next) => acc && next.isImage, + true + ); + if (allAnnotationsHaveImageAction) { + const allAreVisible = viewerAnnotations.reduce( + (acc, next) => next.isVisible() && acc, + true + ); + + this.instance.annotationPopup.add([ + { + type: 'actionButton', + img: allAreVisible + ? this._convertPath('/assets/icons/general/visibility-off.svg') + : this._convertPath('/assets/icons/general/visibility.svg'), + title: this._translateService.instant('annotation-actions.hide'), + onClick: () => { + this._ngZone.run(() => { + if (allAreVisible) { + this.instance.annotManager.hideAnnotations(viewerAnnotations); + } else { + this.instance.annotManager.showAnnotations(viewerAnnotations); + } + this.instance.annotManager.deselectAllAnnotations(); + }); + } + } + ]); + } + + this.instance.annotationPopup.add( + this._annotationActionsService.getViewerAvailableActions( + annotationWrappers, + this.annotationsChanged + ) + ); } private _configureRectangleAnnotationPopup() { @@ -297,12 +343,17 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { type: 'actionButton', dataElement: 'add-rectangle', img: this._convertPath('/assets/icons/general/pdftron-action-add-redaction.svg'), - title: this._translateService.instant(this._manualAnnotationService.getTitle('REDACTION')), + title: this._translateService.instant( + this._manualAnnotationService.getTitle('REDACTION') + ), onClick: () => { const selectedAnnotations = this.instance.annotManager.getSelectedAnnotations(); const activeAnnotation = selectedAnnotations[0]; const activePage = selectedAnnotations[0].getPageNumber(); - const quad = this._annotationDrawService.annotationToQuads(activeAnnotation, this.instance); + const quad = this._annotationDrawService.annotationToQuads( + activeAnnotation, + this.instance + ); const quadsObject = {}; quadsObject[activePage] = [quad]; const mre = this._getManualRedactionEntry(quadsObject, 'Rectangle'); @@ -311,7 +362,15 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { this.instance.disableElements(['shapeToolGroupButton']); this.instance.enableElements(['shapeToolGroupButton']); // dispatch event - this.manualAnnotationRequested.emit(new ManualRedactionEntryWrapper([quad], mre, 'REDACTION', 'RECTANGLE', activeAnnotation.Id)); + this.manualAnnotationRequested.emit( + new ManualRedactionEntryWrapper( + [quad], + mre, + 'REDACTION', + 'RECTANGLE', + activeAnnotation.Id + ) + ); } }); } @@ -344,12 +403,20 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { type: 'actionButton', dataElement: 'add-false-positive', img: this._convertPath('/assets/icons/general/pdftron-action-false-positive.svg'), - title: this._translateService.instant(this._manualAnnotationService.getTitle('FALSE_POSITIVE')), + title: this._translateService.instant( + this._manualAnnotationService.getTitle('FALSE_POSITIVE') + ), onClick: () => { const selectedQuads = this.instance.docViewer.getSelectedTextQuads(); const text = this.instance.docViewer.getSelectedText(); const mre = this._getManualRedactionEntry(selectedQuads, text, true); - this.manualAnnotationRequested.emit(new ManualRedactionEntryWrapper(this.instance.docViewer.getSelectedTextQuads(), mre, 'FALSE_POSITIVE')); + this.manualAnnotationRequested.emit( + new ManualRedactionEntryWrapper( + this.instance.docViewer.getSelectedTextQuads(), + mre, + 'FALSE_POSITIVE' + ) + ); } }); } @@ -358,12 +425,20 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { type: 'actionButton', dataElement: 'add-dictionary', img: this._convertPath('/assets/icons/general/pdftron-action-add-dict.svg'), - title: this._translateService.instant(this._manualAnnotationService.getTitle('DICTIONARY')), + title: this._translateService.instant( + this._manualAnnotationService.getTitle('DICTIONARY') + ), onClick: () => { const selectedQuads = this.instance.docViewer.getSelectedTextQuads(); const text = this.instance.docViewer.getSelectedText(); const mre = this._getManualRedactionEntry(selectedQuads, text, true); - this.manualAnnotationRequested.emit(new ManualRedactionEntryWrapper(this.instance.docViewer.getSelectedTextQuads(), mre, 'DICTIONARY')); + this.manualAnnotationRequested.emit( + new ManualRedactionEntryWrapper( + this.instance.docViewer.getSelectedTextQuads(), + mre, + 'DICTIONARY' + ) + ); } }); @@ -371,12 +446,20 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { type: 'actionButton', dataElement: 'add-redaction', img: this._convertPath('/assets/icons/general/pdftron-action-add-redaction.svg'), - title: this._translateService.instant(this._manualAnnotationService.getTitle('REDACTION')), + title: this._translateService.instant( + this._manualAnnotationService.getTitle('REDACTION') + ), onClick: () => { const selectedQuads = this.instance.docViewer.getSelectedTextQuads(); const text = this.instance.docViewer.getSelectedText(); const mre = this._getManualRedactionEntry(selectedQuads, text, true); - this.manualAnnotationRequested.emit(new ManualRedactionEntryWrapper(this.instance.docViewer.getSelectedTextQuads(), mre, 'REDACTION')); + this.manualAnnotationRequested.emit( + new ManualRedactionEntryWrapper( + this.instance.docViewer.getSelectedTextQuads(), + mre, + 'REDACTION' + ) + ); } }); this._handleCustomActions(); @@ -386,7 +469,13 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { this.instance.setToolMode('AnnotationEdit'); if (this.canPerformActions) { this.instance.enableTools(['AnnotationCreateRectangle']); - this.instance.enableElements(['add-redaction', 'add-rectangle', 'add-false-positive', 'shapeToolGroupButton', 'annotationPopup']); + this.instance.enableElements([ + 'add-redaction', + 'add-rectangle', + 'add-false-positive', + 'shapeToolGroupButton', + 'annotationPopup' + ]); if (this._selectedText.length > 2) { this.instance.enableElements(['add-dictionary', 'add-false-positive']); } @@ -403,13 +492,19 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnChanges { } } - private _getManualRedactionEntry(quads: any, text: string, convertQuads: boolean = false): ManualRedactionEntry { + private _getManualRedactionEntry( + quads: any, + text: string, + convertQuads: boolean = false + ): ManualRedactionEntry { text = text.replace(/-\n/gi, ''); const entry: ManualRedactionEntry = { positions: [] }; for (const key of Object.keys(quads)) { for (const quad of quads[key]) { const page = parseInt(key, 10); - entry.positions.push(this._toPosition(page, convertQuads ? this._translateQuads(page, quad) : quad)); + entry.positions.push( + this._toPosition(page, convertQuads ? this._translateQuads(page, quad) : quad) + ); } } entry.value = text; diff --git a/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.html b/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.html index 93688a94f..b3039a9e1 100644 --- a/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.html +++ b/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.html @@ -53,7 +53,11 @@
-
+
@@ -61,37 +65,63 @@
- {{ 'project-overview.project-details.stats.documents' | translate: { count: appStateService.activeProject.files.length } }} + {{ + 'project-overview.project-details.stats.documents' + | translate: { count: appStateService.activeProject.files.length } + }}
- {{ 'project-overview.project-details.stats.people' | translate: { count: appStateService.activeProject.memberCount } }} + {{ + 'project-overview.project-details.stats.people' + | translate: { count: appStateService.activeProject.memberCount } + }}
{{ - 'project-overview.project-details.stats.analysed-pages' | translate: { count: appStateService.activeProject.totalNumberOfPages | number } + 'project-overview.project-details.stats.analysed-pages' + | translate + : { count: appStateService.activeProject.totalNumberOfPages | number } }}
{{ - 'project-overview.project-details.stats.created-on' | translate: { date: appStateService.activeProject.project.date | date: 'd MMM. yyyy' } + 'project-overview.project-details.stats.created-on' + | translate + : { + date: + appStateService.activeProject.project.date + | date: 'd MMM. yyyy' + } }}
{{ - 'project-overview.project-details.stats.due-date' | translate: { date: appStateService.activeProject.project.dueDate | date: 'd MMM. yyyy' } + 'project-overview.project-details.stats.due-date' + | translate + : { + date: + appStateService.activeProject.project.dueDate + | date: 'd MMM. yyyy' + } }}
- {{ appStateService.getRuleSetById(appStateService.activeProject.ruleSetId)?.name }} + {{ appStateService.getRuleSetById(appStateService.activeProject.ruleSetId)?.name }} +
-
+
{{ 'project-overview.project-details.dictionary' | translate }}
diff --git a/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.ts b/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.ts index 04761517b..0535bbc2f 100644 --- a/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/project-details/project-details.component.ts @@ -51,10 +51,17 @@ export class ProjectDetailsComponent implements OnInit { const groups = groupBy(this.appStateService.activeProject?.files, 'status'); this.documentsChartData = []; for (const key of Object.keys(groups)) { - this.documentsChartData.push({ value: groups[key].length, color: key, label: key, key: key }); + this.documentsChartData.push({ + value: groups[key].length, + color: key, + label: key, + key: key + }); } this.documentsChartData.sort((a, b) => StatusSorter[a.key] - StatusSorter[b.key]); - this.documentsChartData = this.translateChartService.translateStatus(this.documentsChartData); + this.documentsChartData = this.translateChartService.translateStatus( + this.documentsChartData + ); this._changeDetectorRef.detectChanges(); } } diff --git a/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.html b/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.html index ff2bd8147..1e5d886e0 100644 --- a/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.html +++ b/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.html @@ -27,5 +27,9 @@ > - +
diff --git a/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.ts b/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.ts index d1da15281..82c0f20e7 100644 --- a/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/project-listing-actions/project-listing-actions.component.ts @@ -48,14 +48,25 @@ export class ProjectListingActionsComponent { downloadRedactedFiles($event: MouseEvent, project: ProjectWrapper) { $event.stopPropagation(); this._fileManagementControllerService - .downloadRedactedFiles({ fileIds: project.files.map((file) => file.fileId) }, project.projectId, false, 'response') + .downloadRedactedFiles( + { fileIds: project.files.map((file) => file.fileId) }, + project.projectId, + false, + 'response' + ) .subscribe((data) => { download(data, 'redacted_files_' + computerize(project.name) + '.zip'); }); } canDownloadRedactedFiles(project: ProjectWrapper) { - return project.files.length > 0 && project.files.reduce((acc, file) => acc && this.permissionsService.canDownloadRedactedFile(file), true); + return ( + project.files.length > 0 && + project.files.reduce( + (acc, file) => acc && this.permissionsService.canDownloadRedactedFile(file), + true + ) + ); } getProjectStatusConfig(pw: ProjectWrapper) { diff --git a/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.html b/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.html index 80b432920..c1569318c 100644 --- a/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.html +++ b/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.html @@ -20,7 +20,11 @@ [unremovableMembers]="[selectedOwnerId]" > -

+    

 
     
-

+    

 
     
 
     
-
- +
+
-
- +
+
diff --git a/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.ts b/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.ts index bd3499304..a3fdcb81c 100644 --- a/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/team-members-manager/team-members-manager.component.ts @@ -51,7 +51,12 @@ export class TeamMembersManagerComponent implements OnInit { get membersSelectOptions() { const searchQuery = this.searchForm.get('query').value; return this.userService.eligibleUsers - .filter((user) => this.userService.getNameForId(user.userId).toLowerCase().includes(searchQuery.toLowerCase())) + .filter((user) => + this.userService + .getNameForId(user.userId) + .toLowerCase() + .includes(searchQuery.toLowerCase()) + ) .filter((user) => this.selectedOwnerId !== user.userId) .map((user) => user.userId); } @@ -71,7 +76,10 @@ export class TeamMembersManagerComponent implements OnInit { const initialApprovers = this.projectWrapper.approverIds.sort(); const currentApprovers = this.selectedApproversList.sort(); - return this._compareLists(initialMembers, currentMembers) || this._compareLists(initialApprovers, currentApprovers); + return ( + this._compareLists(initialMembers, currentMembers) || + this._compareLists(initialApprovers, currentApprovers) + ); } isOwner(userId: string): boolean { @@ -91,7 +99,11 @@ export class TeamMembersManagerComponent implements OnInit { result = await this._appStateService.addOrUpdateProject(pw.project); this.save.emit(result); } catch (error) { - this._notificationService.showToastNotification('Failed: ' + error.error ? error.error.message : error, null, NotificationType.ERROR); + this._notificationService.showToastNotification( + 'Failed: ' + error.error ? error.error.message : error, + null, + NotificationType.ERROR + ); } } diff --git a/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.html b/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.html index a78cf5394..625cdb6b8 100644 --- a/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.html +++ b/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.html @@ -6,12 +6,20 @@ [class.large-spacing]="largeSpacing" class="member" > - +
-
+
+{{ overflowCount }}
-
+
diff --git a/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.ts b/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.ts index 8648cc76a..0df0e7e19 100644 --- a/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/team-members/team-members.component.ts @@ -27,11 +27,15 @@ export class TeamMembersComponent { } get displayedMembers(): string[] { - return this.expandedTeam || !this.overflowCount ? this.memberIds : this.memberIds.slice(0, this.maxTeamMembersBeforeExpand - 1); + return this.expandedTeam || !this.overflowCount + ? this.memberIds + : this.memberIds.slice(0, this.maxTeamMembersBeforeExpand - 1); } get overflowCount() { - return this.memberIds.length > this.maxTeamMembersBeforeExpand ? this.memberIds.length - (this.maxTeamMembersBeforeExpand - 1) : 0; + return this.memberIds.length > this.maxTeamMembersBeforeExpand + ? this.memberIds.length - (this.maxTeamMembersBeforeExpand - 1) + : 0; } toggleExpandedTeam() { diff --git a/apps/red-ui/src/app/modules/projects/components/type-annotation-icon/type-annotation-icon.component.html b/apps/red-ui/src/app/modules/projects/components/type-annotation-icon/type-annotation-icon.component.html index 22eb999b5..7b97cafac 100644 --- a/apps/red-ui/src/app/modules/projects/components/type-annotation-icon/type-annotation-icon.component.html +++ b/apps/red-ui/src/app/modules/projects/components/type-annotation-icon/type-annotation-icon.component.html @@ -1 +1,5 @@ - + diff --git a/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.html b/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.html index c860ce914..4360a889c 100644 --- a/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.html +++ b/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.html @@ -1,15 +1,70 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.ts b/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.ts index b733c0211..cc34c5248 100644 --- a/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.ts +++ b/apps/red-ui/src/app/modules/projects/components/type-filter/type-filter.component.ts @@ -20,7 +20,13 @@ export class TypeFilterComponent implements OnInit { 'suggestion-remove-dictionary', 'suggestion-add-dictionary' ]; - private _needsAnalysisKeys = ['add-dictionary', 'remove-dictionary', 'remove-only-here', 'pending-analysis', 'analysis']; + private _needsAnalysisKeys = [ + 'add-dictionary', + 'remove-dictionary', + 'remove-only-here', + 'pending-analysis', + 'analysis' + ]; constructor(private readonly _appStateService: AppStateService) {} diff --git a/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.html index c10bf1b4b..c543779b5 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.html @@ -5,13 +5,22 @@
- +
{{ 'add-project-dialog.form.template' | translate }} - +
- + {{ 'add-project-dialog.form.due-date' | translate }}
- + @@ -83,5 +101,9 @@
- + diff --git a/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.ts index c9744c46c..f233a44d6 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/add-project-dialog/add-project-dialog.component.ts @@ -34,11 +34,15 @@ export class AddProjectDialogComponent { } get reportTypesLength() { - return this.projectForm.controls['reportTypes']?.value?.length ? this.projectForm.controls['reportTypes'].value.length : 0; + return this.projectForm.controls['reportTypes']?.value?.length + ? this.projectForm.controls['reportTypes'].value.length + : 0; } get downloadFileTypesLength() { - return this.projectForm.controls['downloadFileTypes']?.value?.length ? this.projectForm.controls['downloadFileTypes'].value.length : 0; + return this.projectForm.controls['downloadFileTypes']?.value?.length + ? this.projectForm.controls['downloadFileTypes'].value.length + : 0; } get disabled() { @@ -52,7 +56,9 @@ export class AddProjectDialogComponent { async saveProject() { const project: Project = this._formToObject(); - const foundProject = this._appStateService.allProjects.find((p) => p.project.projectId === project.projectId); + const foundProject = this._appStateService.allProjects.find( + (p) => p.project.projectId === project.projectId + ); if (foundProject) { project.memberIds = foundProject.memberIds; } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.html index 86e23df90..e06db5026 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.html @@ -1,13 +1,21 @@
-
+
- {{ 'assign-' + data.mode + '-owner.dialog.single-user' | translate }} + {{ + 'assign-' + data.mode + '-owner.dialog.single-user' | translate + }} - + {{ userService.getNameForId(userId) }} @@ -16,13 +24,26 @@
- -
+
- +
diff --git a/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 2598162e4..20bd67017 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -42,7 +42,9 @@ export class AssignReviewerApproverDialogComponent { } get singleUsersSelectOptions() { - return this.data.mode === 'approver' ? this._appStateService.activeProject.approverIds : this._appStateService.activeProject.memberIds; + return this.data.mode === 'approver' + ? this._appStateService.activeProject.approverIds + : this._appStateService.activeProject.memberIds; } get changed(): boolean { @@ -92,7 +94,11 @@ export class AssignReviewerApproverDialogComponent { file.reviewerName = this.userService.getNameForId(selectedUser); } } catch (error) { - this._notificationService.showToastNotification('Failed: ' + error.error ? error.error.message : error, null, NotificationType.ERROR); + this._notificationService.showToastNotification( + 'Failed: ' + error.error ? error.error.message : error, + null, + NotificationType.ERROR + ); } this.dialogRef.close(); @@ -105,9 +111,15 @@ export class AssignReviewerApproverDialogComponent { uniqueReviewers.add(file.currentReviewer); } } - let singleUser = uniqueReviewers.size === 1 ? uniqueReviewers.values().next().value : this.userService.userId; + let singleUser = + uniqueReviewers.size === 1 + ? uniqueReviewers.values().next().value + : this.userService.userId; - singleUser = this.singleUsersSelectOptions.indexOf(singleUser) >= 0 ? singleUser : this.singleUsersSelectOptions[0]; + singleUser = + this.singleUsersSelectOptions.indexOf(singleUser) >= 0 + ? singleUser + : this.singleUsersSelectOptions[0]; this.usersForm = this._formBuilder.group({ singleUser: [singleUser, Validators.required] diff --git a/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.html index 050300501..666e00532 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.html @@ -9,11 +9,20 @@
-
- + diff --git a/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.ts index 7f60d54f8..6a855e060 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/document-info-dialog/document-info-dialog.component.ts @@ -1,6 +1,10 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { FileAttributeConfig, FileAttributesControllerService, FileStatus } from '@redaction/red-ui-http'; +import { + FileAttributeConfig, + FileAttributesControllerService, + FileStatus +} from '@redaction/red-ui-http'; import { AppStateService } from '@state/app-state.service'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { ProjectWrapper } from '@state/model/project.wrapper'; @@ -29,9 +33,11 @@ export class DocumentInfoDialogComponent implements OnInit { } async ngOnInit() { - this.attributes = (await this._fileAttributesService.getFileAttributesConfiguration(this._project.ruleSetId).toPromise()).fileAttributeConfigs.filter( - (attr) => attr.editable - ); + this.attributes = ( + await this._fileAttributesService + .getFileAttributesConfiguration(this._project.ruleSetId) + .toPromise() + ).fileAttributeConfigs.filter((attr) => attr.editable); const formConfig = this.attributes.reduce( (acc, attr) => ({ ...acc, @@ -43,8 +49,13 @@ export class DocumentInfoDialogComponent implements OnInit { } async saveDocumentInfo() { - const attributeIdToValue = { ...this.file.fileAttributes?.attributeIdToValue, ...this.documentInfoForm.getRawValue() }; - await this._fileAttributesService.setFileAttributes({ attributeIdToValue }, this.file.projectId, this.file.fileId).toPromise(); + const attributeIdToValue = { + ...this.file.fileAttributes?.attributeIdToValue, + ...this.documentInfoForm.getRawValue() + }; + await this._fileAttributesService + .setFileAttributes({ attributeIdToValue }, this.file.projectId, this.file.fileId) + .toPromise(); this.file.fileAttributes = { attributeIdToValue }; this.dialogRef.close(true); } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.html index 76e9212cf..ed6607f78 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.html @@ -12,13 +12,26 @@
- -
+
- + diff --git a/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.ts index e781214b8..8e45be118 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component.ts @@ -13,7 +13,8 @@ import { PermissionsService } from '../../../../services/permissions.service'; }) export class DossierDictionaryDialogComponent { canEdit = false; - @ViewChild('dictionaryManager', { static: false }) private _dictionaryManager: DictionaryManagerComponent; + @ViewChild('dictionaryManager', { static: false }) + private _dictionaryManager: DictionaryManagerComponent; constructor( public permissionsService: PermissionsService, @@ -22,7 +23,9 @@ export class DossierDictionaryDialogComponent { private readonly _appStateService: AppStateService, private readonly _dictionarySaveService: DictionarySaveService ) { - this.canEdit = this.permissionsService.isProjectMember(this.project) || this.permissionsService.isAdmin(); + this.canEdit = + this.permissionsService.isProjectMember(this.project) || + this.permissionsService.isAdmin(); } saveDossierDictionary() { @@ -36,7 +39,10 @@ export class DossierDictionaryDialogComponent { ) .subscribe(async () => { await this._appStateService.updateProjectDictionaryVersion(this.project); - this._appStateService.updateProjectDictionary(this.project.ruleSetId, this.project.projectId); + this._appStateService.updateProjectDictionary( + this.project.ruleSetId, + this.project.projectId + ); this.dialogRef.close(); }); } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/dictionary/edit-project-dictionary.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/dictionary/edit-project-dictionary.component.ts index 0f5bb5946..21a205fb5 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/dictionary/edit-project-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/dictionary/edit-project-dictionary.component.ts @@ -15,14 +15,17 @@ export class EditProjectDictionaryComponent implements EditProjectSectionInterfa @Input() projectWrapper: ProjectWrapper; @Output() updateProject = new EventEmitter(); canEdit = false; - @ViewChild(DictionaryManagerComponent, { static: false }) private _dictionaryManager: DictionaryManagerComponent; + @ViewChild(DictionaryManagerComponent, { static: false }) + private _dictionaryManager: DictionaryManagerComponent; constructor( private readonly _appStateService: AppStateService, private readonly _dictionarySaveService: DictionarySaveService, private readonly _permissionsService: PermissionsService ) { - this.canEdit = this._permissionsService.isProjectMember(this.projectWrapper) || this._permissionsService.isAdmin(); + this.canEdit = + this._permissionsService.isProjectMember(this.projectWrapper) || + this._permissionsService.isAdmin(); } get changed() { @@ -45,7 +48,10 @@ export class EditProjectDictionaryComponent implements EditProjectSectionInterfa ) .subscribe(async () => { await this._appStateService.updateProjectDictionaryVersion(this.projectWrapper); - this._appStateService.updateProjectDictionary(this.projectWrapper.ruleSetId, this.projectWrapper.projectId); + this._appStateService.updateProjectDictionary( + this.projectWrapper.ruleSetId, + this.projectWrapper.projectId + ); this.updateProject.emit(); }); } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.ts index ded250e76..812b3a0bc 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/download-package/edit-project-download-package.component.ts @@ -19,19 +19,28 @@ export class EditProjectDownloadPackageComponent implements OnInit, EditProjectS @Input() projectWrapper: ProjectWrapper; @Output() updateProject = new EventEmitter(); - constructor(private readonly _appStateService: AppStateService, private readonly _formBuilder: FormBuilder) {} + constructor( + private readonly _appStateService: AppStateService, + private readonly _formBuilder: FormBuilder + ) {} get reportTypesLength() { - return this.projectForm.controls['reportTypes']?.value?.length ? this.projectForm.controls['reportTypes'].value.length : 0; + return this.projectForm.controls['reportTypes']?.value?.length + ? this.projectForm.controls['reportTypes'].value.length + : 0; } get downloadFileTypesLength() { - return this.projectForm.controls['downloadFileTypes']?.value?.length ? this.projectForm.controls['downloadFileTypes'].value.length : 0; + return this.projectForm.controls['downloadFileTypes']?.value?.length + ? this.projectForm.controls['downloadFileTypes'].value.length + : 0; } get changed() { for (const key of Object.keys(this.projectForm.getRawValue())) { - if (this.projectWrapper.project[key].length !== this.projectForm.get(key).value.length) { + if ( + this.projectWrapper.project[key].length !== this.projectForm.get(key).value.length + ) { return true; } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.html index 4ca630f53..c7f99b98e 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.html @@ -1,5 +1,7 @@
-
{{ 'edit-project-dialog.header' | translate: { projectName: projectWrapper.name } }}
+
+ {{ 'edit-project-dialog.header' | translate: { projectName: projectWrapper.name } }} +
@@ -14,12 +16,22 @@
- {{ 'edit-project-dialog.nav-items.' + (activeNavItem.title || activeNavItem.key) | translate }} + {{ + 'edit-project-dialog.nav-items.' + + (activeNavItem.title || activeNavItem.key) | translate + }} -
+
- {{ 'edit-project-dialog.dictionary.entries' | translate: { length: (projectWrapper.type?.entries || []).length } }} + {{ + 'edit-project-dialog.dictionary.entries' + | translate + : { length: (projectWrapper.type?.entries || []).length } + }}
@@ -43,19 +55,36 @@ > - +
- -
+
- +
diff --git a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.ts index 50d35ee16..771e9490f 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/edit-project-dialog.component.ts @@ -29,8 +29,10 @@ export class EditProjectDialogComponent { activeNav = 'dossier-info'; projectWrapper: ProjectWrapper; - @ViewChild(EditProjectGeneralInfoComponent) generalInfoComponent: EditProjectGeneralInfoComponent; - @ViewChild(EditProjectDownloadPackageComponent) downloadPackageComponent: EditProjectDownloadPackageComponent; + @ViewChild(EditProjectGeneralInfoComponent) + generalInfoComponent: EditProjectGeneralInfoComponent; + @ViewChild(EditProjectDownloadPackageComponent) + downloadPackageComponent: EditProjectDownloadPackageComponent; @ViewChild(EditProjectDictionaryComponent) dictionaryComponent: EditProjectDictionaryComponent; @ViewChild(EditProjectTeamMembersComponent) membersComponent: EditProjectTeamMembersComponent; @@ -41,7 +43,8 @@ export class EditProjectDialogComponent { private readonly _translateService: TranslateService, private readonly _changeRef: ChangeDetectorRef, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: { projectWrapper: ProjectWrapper; afterSave: Function } + @Inject(MAT_DIALOG_DATA) + public data: { projectWrapper: ProjectWrapper; afterSave: Function } ) { this.projectWrapper = data.projectWrapper; } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.html b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.html index 00b9447bc..1a7984ec7 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/edit-project-dialog/general-info/edit-project-general-info.component.html @@ -11,7 +11,9 @@
- {{ 'edit-project-dialog.general-info.form.template' | translate }} + {{ + 'edit-project-dialog.general-info.form.template' | translate + }} +
@@ -30,5 +53,9 @@
- + diff --git a/apps/red-ui/src/app/modules/projects/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts index 4c88ebead..68799cbe4 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts @@ -38,17 +38,19 @@ export class ForceRedactionDialogComponent implements OnInit { ) {} async ngOnInit() { - this._legalBasisMappingControllerService.getLegalBasisMapping(this._appStateService.activeProject.ruleSetId).subscribe((data) => { - data.map((lbm) => { - this.legalOptions.push({ - legalBasis: lbm.reason, - description: lbm.description, - label: lbm.name + this._legalBasisMappingControllerService + .getLegalBasisMapping(this._appStateService.activeProject.ruleSetId) + .subscribe((data) => { + data.map((lbm) => { + this.legalOptions.push({ + legalBasis: lbm.reason, + description: lbm.description, + label: lbm.name + }); }); - }); - this.legalOptions.sort((a, b) => a.label.localeCompare(b.label)); - }); + this.legalOptions.sort((a, b) => a.label.localeCompare(b.label)); + }); this.isDocumentAdmin = this._permissionsService.isApprover(); diff --git a/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.html index 90ada6d30..b62deb489 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.html @@ -18,8 +18,19 @@
- - + + {{ option.label }} @@ -27,15 +38,28 @@
- +
- +
-
+
@@ -61,5 +85,9 @@
- + diff --git a/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts index 8eb6522a7..f2bb79f92 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts @@ -2,7 +2,11 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { AppStateService } from '@state/app-state.service'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { AddRedactionRequest, LegalBasisMappingControllerService, TypeValue } from '@redaction/red-ui-http'; +import { + AddRedactionRequest, + LegalBasisMappingControllerService, + TypeValue +} from '@redaction/red-ui-http'; import { NotificationService } from '@services/notification.service'; import { TranslateService } from '@ngx-translate/core'; import { UserService } from '@services/user.service'; @@ -58,22 +62,25 @@ export class ManualAnnotationDialogComponent implements OnInit { } async ngOnInit() { - this._legalBasisMappingControllerService.getLegalBasisMapping(this._appStateService.activeProject.ruleSetId).subscribe((data) => { - data.map((lbm) => { - this.legalOptions.push({ - legalBasis: lbm.reason, - description: lbm.description, - label: lbm.name + this._legalBasisMappingControllerService + .getLegalBasisMapping(this._appStateService.activeProject.ruleSetId) + .subscribe((data) => { + data.map((lbm) => { + this.legalOptions.push({ + legalBasis: lbm.reason, + description: lbm.description, + label: lbm.name + }); }); - }); - this.legalOptions.sort((a, b) => a.label.localeCompare(b.label)); - }); + this.legalOptions.sort((a, b) => a.label.localeCompare(b.label)); + }); this.isDocumentAdmin = this._permissionsService.isApprover(); this.isFalsePositiveRequest = this.manualRedactionEntryWrapper.type === 'FALSE_POSITIVE'; - this.isDictionaryRequest = this.manualRedactionEntryWrapper.type === 'DICTIONARY' || this.isFalsePositiveRequest; + this.isDictionaryRequest = + this.manualRedactionEntryWrapper.type === 'DICTIONARY' || this.isFalsePositiveRequest; this.redactionForm = this._formBuilder.group({ reason: this.isDictionaryRequest ? [null] : [null, Validators.required], @@ -83,7 +90,9 @@ export class ManualAnnotationDialogComponent implements OnInit { comment: this.isDocumentAdmin ? [null] : [null, Validators.required] }); - for (const key of Object.keys(this._appStateService.dictionaryData[this._appStateService.activeProject.ruleSetId])) { + for (const key of Object.keys( + this._appStateService.dictionaryData[this._appStateService.activeProject.ruleSetId] + )) { const dictionaryData = this._appStateService.getDictionaryTypeValue(key); if (!dictionaryData.virtual && dictionaryData.addToDictionaryAction) { this.redactionDictionaries.push(dictionaryData); @@ -94,14 +103,18 @@ export class ManualAnnotationDialogComponent implements OnInit { handleAddRedaction() { this._enhanceManualRedaction(this.manualRedactionEntryWrapper.manualRedactionEntry); - this._manualAnnotationService.addAnnotation(this.manualRedactionEntryWrapper.manualRedactionEntry).subscribe( - (response) => { - this.dialogRef.close(new ManualAnnotationResponse(this.manualRedactionEntryWrapper, response)); - }, - () => { - this.dialogRef.close(); - } - ); + this._manualAnnotationService + .addAnnotation(this.manualRedactionEntryWrapper.manualRedactionEntry) + .subscribe( + (response) => { + this.dialogRef.close( + new ManualAnnotationResponse(this.manualRedactionEntryWrapper, response) + ); + }, + () => { + this.dialogRef.close(); + } + ); } private _enhanceManualRedaction(addRedactionRequest: AddRedactionRequest) { diff --git a/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.html index bed18e11c..9b9f80f93 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.html @@ -1,15 +1,19 @@
{{ - (data.removeFromDictionary ? 'remove-annotations-dialog.remove-from-dictionary.title' : 'remove-annotations-dialog.remove-only-here.title') - | translate + (data.removeFromDictionary + ? 'remove-annotations-dialog.remove-from-dictionary.title' + : 'remove-annotations-dialog.remove-only-here.title' + ) | translate }}
{{ - (data.removeFromDictionary ? 'remove-annotations-dialog.remove-from-dictionary.question' : 'remove-annotations-dialog.remove-only-here.question') - | translate + (data.removeFromDictionary + ? 'remove-annotations-dialog.remove-from-dictionary.question' + : 'remove-annotations-dialog.remove-only-here.question' + ) | translate }}
@@ -45,5 +49,9 @@
- +
diff --git a/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.ts index 3804d55d9..f4cdc488b 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/remove-annotations-dialog/remove-annotations-dialog.component.ts @@ -31,7 +31,9 @@ export class RemoveAnnotationsDialogComponent { printable(annotation: AnnotationWrapper) { if (annotation.isImage) { - return this._translateService.instant('remove-annotations-dialog.image-type', { typeLabel: humanize(annotation.dictionary) }); + return this._translateService.instant('remove-annotations-dialog.image-type', { + typeLabel: humanize(annotation.dictionary) + }); } else { return annotation.value; } diff --git a/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.html b/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.html index 127ade703..6bd59da48 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.html +++ b/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.html @@ -2,15 +2,31 @@
- +
- -
+
- + diff --git a/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.ts b/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.ts index e00464d40..2377e7d76 100644 --- a/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.ts +++ b/apps/red-ui/src/app/modules/projects/dialogs/team-members-dialog/team-members-dialog.component.ts @@ -15,7 +15,8 @@ class DialogData { styleUrls: ['./team-members-dialog.component.scss'] }) export class TeamMembersDialogComponent { - @ViewChild(TeamMembersManagerComponent, { static: true }) managerComponent: TeamMembersManagerComponent; + @ViewChild(TeamMembersManagerComponent, { static: true }) + managerComponent: TeamMembersManagerComponent; constructor( private readonly _notificationService: NotificationService, diff --git a/apps/red-ui/src/app/modules/projects/projects.module.ts b/apps/red-ui/src/app/modules/projects/projects.module.ts index 79d2c57f7..d82c8a7ef 100644 --- a/apps/red-ui/src/app/modules/projects/projects.module.ts +++ b/apps/red-ui/src/app/modules/projects/projects.module.ts @@ -45,7 +45,11 @@ import { EditProjectTeamMembersComponent } from './dialogs/edit-project-dialog/t import { TeamMembersManagerComponent } from './components/team-members-manager/team-members-manager.component'; import { TeamMembersDialogComponent } from './dialogs/team-members-dialog/team-members-dialog.component'; -const screens = [ProjectListingScreenComponent, ProjectOverviewScreenComponent, FilePreviewScreenComponent]; +const screens = [ + ProjectListingScreenComponent, + ProjectOverviewScreenComponent, + FilePreviewScreenComponent +]; const dialogs = [ AddProjectDialogComponent, diff --git a/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.html b/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.html index 784a7edf3..56ae30d30 100644 --- a/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.html +++ b/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.html @@ -30,7 +30,11 @@
- +
@@ -47,7 +51,11 @@
{{ appStateService.activeFile.status | translate }} - {{ 'by' | translate }}:
@@ -61,7 +69,11 @@ >
@@ -79,18 +91,32 @@ size="small" > - - + +
-
+
- +
- +
@@ -229,10 +267,16 @@
- +

{{ loadingMessage | translate }}

- +
diff --git a/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.ts index 971d244f9..2b606320f 100644 --- a/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/projects/screens/file-preview-screen/file-preview-screen.component.ts @@ -1,4 +1,12 @@ -import { ChangeDetectorRef, Component, HostListener, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + HostListener, + NgZone, + OnDestroy, + OnInit, + ViewChild +} from '@angular/core'; import { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router'; import { AppStateService } from '@state/app-state.service'; import { Annotations, WebViewerInstance } from '@pdftron/webviewer'; @@ -22,7 +30,11 @@ import { handleFilterDelta, processFilters } from '@shared/components/filter/uti import { UserPreferenceService } from '@services/user-preference.service'; import { UserService } from '@services/user.service'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { FileManagementControllerService, StatusControllerService, UserPreferenceControllerService } from '@redaction/red-ui-http'; +import { + FileManagementControllerService, + StatusControllerService, + UserPreferenceControllerService +} from '@redaction/red-ui-http'; import { PdfViewerDataService } from '../../services/pdf-viewer-data.service'; import { download } from '@utils/file-download-utils'; import { ViewMode } from '@models/file/view-mode'; @@ -102,11 +114,15 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, } get singleUsersSelectOptions() { - return this.appStateService.activeFile?.isUnderApproval ? this.appStateService.activeProject.approverIds : this.appStateService.activeProject.memberIds; + return this.appStateService.activeFile?.isUnderApproval + ? this.appStateService.activeProject.approverIds + : this.appStateService.activeProject.memberIds; } get assignTooltip() { - return this.appStateService.activeFile.isUnderApproval ? 'project-overview.assign-approver' : 'project-overview.assign-reviewer'; + return this.appStateService.activeFile.isUnderApproval + ? 'project-overview.assign-approver' + : 'project-overview.assign-reviewer'; } get annotations(): AnnotationWrapper[] { @@ -122,11 +138,19 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, } get canSwitchToRedactedView() { - return this.fileData && !this.permissionsService.fileRequiresReanalysis() && !this.fileData.fileStatus.isExcluded; + return ( + this.fileData && + !this.permissionsService.fileRequiresReanalysis() && + !this.fileData.fileStatus.isExcluded + ); } get canSwitchToDeltaView() { - return this.fileData && this.fileData.redactionChangeLog?.redactionLogEntry?.length > 0 && !this.fileData.fileStatus.isExcluded; + return ( + this.fileData && + this.fileData.redactionChangeLog?.redactionLogEntry?.length > 0 && + !this.fileData.fileStatus.isExcluded + ); } get displayData() { @@ -135,7 +159,9 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, get indeterminateMode() { return ( - this.analysisProgress > 100 || this.appStateService.activeFile.analysisDuration < 3 * 1000 // it takes longer than usual - switch to indeterminate + this.analysisProgress > 100 || + this.appStateService.activeFile.analysisDuration < 3 * 1000 + // it takes longer than usual - switch to indeterminate ); // on less than 3 seconds show indeterminate } @@ -154,22 +180,30 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, switch (this.viewMode) { case 'STANDARD': { this._setAnnotationsColor(redactions, 'annotationColor'); - const standardEntries = annotations.filter((a) => !a.getCustomData('changeLogRemoved')); - const nonStandardEntries = annotations.filter((a) => a.getCustomData('changeLogRemoved')); + const standardEntries = annotations.filter( + (a) => !a.getCustomData('changeLogRemoved') + ); + const nonStandardEntries = annotations.filter((a) => + a.getCustomData('changeLogRemoved') + ); this._show(standardEntries); this._hide(nonStandardEntries); break; } case 'DELTA': { const changeLogEntries = annotations.filter((a) => a.getCustomData('changeLog')); - const nonChangeLogEntries = annotations.filter((a) => !a.getCustomData('changeLog')); + const nonChangeLogEntries = annotations.filter( + (a) => !a.getCustomData('changeLog') + ); this._setAnnotationsColor(redactions, 'annotationColor'); this._show(changeLogEntries); this._hide(nonChangeLogEntries); break; } case 'REDACTED': { - const nonRedactionEntries = annotations.filter((a) => !a.getCustomData('redaction')); + const nonRedactionEntries = annotations.filter( + (a) => !a.getCustomData('redaction') + ); this._setAnnotationsColor(redactions, 'redactionColor'); this._show(redactions); this._hide(nonRedactionEntries); @@ -197,7 +231,10 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, this.displayPDFViewer = true; const key = 'Project-Recent-' + this.projectId; - this._userPreferenceControllerService.savePreferences([this.fileId], key).toPromise().then(); + this._userPreferenceControllerService + .savePreferences([this.fileId], key) + .toPromise() + .then(); this._subscribeToFileUpdates(); } @@ -209,12 +246,19 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, rebuildFilters(deletePreviousAnnotations: boolean = false) { const startTime = new Date().getTime(); if (deletePreviousAnnotations) { - this.activeViewer.annotManager.deleteAnnotations(this.activeViewer.annotManager.getAnnotationsList(), { - imported: true, - force: true - }); + this.activeViewer.annotManager.deleteAnnotations( + this.activeViewer.annotManager.getAnnotationsList(), + { + imported: true, + force: true + } + ); } - console.log('[REDACTION] Delete previous annotations time: ' + (new Date().getTime() - startTime) + 'ms'); + console.log( + '[REDACTION] Delete previous annotations time: ' + + (new Date().getTime() - startTime) + + 'ms' + ); const processStartTime = new Date().getTime(); this.annotationData = this.fileData.getAnnotations( this.appStateService.dictionaryData[this.appStateService.activeProject.ruleSetId], @@ -222,14 +266,21 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, this.viewMode, this.userPreferenceService.areDevFeaturesEnabled ); - const annotationFilters = this._annotationProcessingService.getAnnotationFilter(this.annotations); + const annotationFilters = this._annotationProcessingService.getAnnotationFilter( + this.annotations + ); this.primaryFilters = processFilters(this.primaryFilters, annotationFilters); - this.secondaryFilters = processFilters(this.secondaryFilters, AnnotationProcessingService.secondaryAnnotationFilters); + this.secondaryFilters = processFilters( + this.secondaryFilters, + AnnotationProcessingService.secondaryAnnotationFilters + ); this._workloadComponent?.filtersChanged({ primary: this.primaryFilters, secondary: this.secondaryFilters }); - console.log('[REDACTION] Process time: ' + (new Date().getTime() - processStartTime) + 'ms'); + console.log( + '[REDACTION] Process time: ' + (new Date().getTime() - processStartTime) + 'ms' + ); console.log( '[REDACTION] Annotation Redraw and filter rebuild time: ' + (new Date().getTime() - startTime) + @@ -241,7 +292,9 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, handleAnnotationSelected(annotationIds: string[]) { this.selectedAnnotations = annotationIds - .map((annotationId) => this.annotations.find((annotationWrapper) => annotationWrapper.id === annotationId)) + .map((annotationId) => + this.annotations.find((annotationWrapper) => annotationWrapper.id === annotationId) + ) .filter((ann) => ann !== undefined); if (this.selectedAnnotations.length > 1) { this._workloadComponent.multiSelectActive = true; @@ -250,7 +303,11 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, this._changeDetectorRef.detectChanges(); } - selectAnnotations(annotations?: AnnotationWrapper[] | { annotations: AnnotationWrapper[]; multiSelect: boolean }) { + selectAnnotations( + annotations?: + | AnnotationWrapper[] + | { annotations: AnnotationWrapper[]; multiSelect: boolean } + ) { if (annotations) { this._viewerComponent.selectAnnotations(annotations); } else { @@ -269,17 +326,24 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, openManualAnnotationDialog($event: ManualRedactionEntryWrapper) { this._ngZone.run(() => { - this.dialogRef = this._dialogService.openManualAnnotationDialog($event, async (response: ManualAnnotationResponse) => { - if (response?.annotationId) { - const annotation = this.activeViewer.annotManager.getAnnotationById(response.manualRedactionEntryWrapper.rectId); - this.activeViewer.annotManager.deleteAnnotation(annotation); - this.fileData.fileStatus = await this.appStateService.reloadActiveFile(); - const distinctPages = $event.manualRedactionEntry.positions.map((p) => p.page).filter((item, pos, self) => self.indexOf(item) === pos); - distinctPages.forEach((page) => { - this._cleanupAndRedrawManualAnnotationsForEntirePage(page); - }); + this.dialogRef = this._dialogService.openManualAnnotationDialog( + $event, + async (response: ManualAnnotationResponse) => { + if (response?.annotationId) { + const annotation = this.activeViewer.annotManager.getAnnotationById( + response.manualRedactionEntryWrapper.rectId + ); + this.activeViewer.annotManager.deleteAnnotation(annotation); + this.fileData.fileStatus = await this.appStateService.reloadActiveFile(); + const distinctPages = $event.manualRedactionEntry.positions + .map((p) => p.page) + .filter((item, pos, self) => self.indexOf(item) === pos); + distinctPages.forEach((page) => { + this._cleanupAndRedrawManualAnnotationsForEntirePage(page); + }); + } } - }); + ); }); } @@ -298,7 +362,10 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, return; } - if (!ALL_HOTKEY_ARRAY.includes($event.key) || this.dialogRef?.getState() === MatDialogState.OPEN) { + if ( + !ALL_HOTKEY_ARRAY.includes($event.key) || + this.dialogRef?.getState() === MatDialogState.OPEN + ) { return; } @@ -393,14 +460,23 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, assignReviewer() { const reviewerId = this.reviewerForm.get('reviewer').value; - this._statusControllerService.setFileReviewer(this.fileData.fileStatus.projectId, this.fileData.fileStatus.fileId, reviewerId).subscribe(async () => { - this._notificationService.showToastNotification( - 'Successfully assigned ' + this.userService.getNameForId(reviewerId) + ' to file: ' + this.fileData.fileStatus.filename - ); - await this.appStateService.reloadActiveFile(); - this._updateCanPerformActions(); - this.editingReviewer = false; - }); + this._statusControllerService + .setFileReviewer( + this.fileData.fileStatus.projectId, + this.fileData.fileStatus.fileId, + reviewerId + ) + .subscribe(async () => { + this._notificationService.showToastNotification( + 'Successfully assigned ' + + this.userService.getNameForId(reviewerId) + + ' to file: ' + + this.fileData.fileStatus.filename + ); + await this.appStateService.reloadActiveFile(); + this._updateCanPerformActions(); + this.editingReviewer = false; + }); } resetReviewerForm() { @@ -422,7 +498,13 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, downloadOriginalFile() { this._fileManagementControllerService - .downloadOriginalFile(this.projectId, this.fileId, true, this.fileData.fileStatus.lastUploaded, 'response') + .downloadOriginalFile( + this.projectId, + this.fileId, + true, + this.fileData.fileStatus.lastUploaded, + 'response' + ) .subscribe((data) => { download(data, this.fileData.fileStatus.filename); }); @@ -455,17 +537,19 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, }) ) .subscribe(); - this.fileReanalysedSubscription = this.appStateService.fileReanalysed.subscribe((fileStatus: FileStatusWrapper) => { - if (fileStatus.fileId === this.fileId) { - this._loadFileData(true).subscribe(() => { - this.viewReady = true; - this.loadingMessage = null; - this._stopAnalysisTimer(); - this._updateCanPerformActions(); - this._cleanupAndRedrawManualAnnotations(); - }); + this.fileReanalysedSubscription = this.appStateService.fileReanalysed.subscribe( + (fileStatus: FileStatusWrapper) => { + if (fileStatus.fileId === this.fileId) { + this._loadFileData(true).subscribe(() => { + this.viewReady = true; + this.loadingMessage = null; + this._stopAnalysisTimer(); + this._updateCanPerformActions(); + this._cleanupAndRedrawManualAnnotations(); + }); + } } - }); + ); } private _unsubscribeFromFileUpdates(): void { @@ -474,7 +558,8 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, } private _updateCanPerformActions() { - this.canPerformAnnotationActions = this.permissionsService.canPerformAnnotationActions() && this.viewMode === 'STANDARD'; + this.canPerformAnnotationActions = + this.permissionsService.canPerformAnnotationActions() && this.viewMode === 'STANDARD'; } private _loadFileData(performUpdate: boolean = false) { @@ -493,7 +578,9 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, } } else { if (fileDataModel.fileStatus.isError) { - this._router.navigate(['/main/projects/' + this.appStateService.activeProjectId]); + this._router.navigate([ + '/main/projects/' + this.appStateService.activeProjectId + ]); } else { this.loadingMessage = 'file-preview.reanalyse-file'; } @@ -511,11 +598,17 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, /* Get the documentElement () to display the page in fullscreen */ private _cleanupAndRedrawManualAnnotations() { - this._fileDownloadService.loadActiveFileManualAnnotations().subscribe((manualRedactions) => { - this.fileData.manualRedactions = manualRedactions; - this.rebuildFilters(); - this._annotationDrawService.drawAnnotations(this._instance, this.annotationData.allAnnotations, this.hideSkipped); - }); + this._fileDownloadService + .loadActiveFileManualAnnotations() + .subscribe((manualRedactions) => { + this.fileData.manualRedactions = manualRedactions; + this.rebuildFilters(); + this._annotationDrawService.drawAnnotations( + this._instance, + this.annotationData.allAnnotations, + this.hideSkipped + ); + }); } private async _cleanupAndRedrawManualAnnotationsForEntirePage(page: number) { @@ -523,35 +616,55 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, const currentPageAnnotationIds = currentPageAnnotations.map((a) => a.id); this.fileData.fileStatus = await this.appStateService.reloadActiveFile(); - this._fileDownloadService.loadActiveFileManualAnnotations().subscribe((manualRedactions) => { - this.fileData.manualRedactions = manualRedactions; - this.rebuildFilters(); - if (this.viewMode === 'STANDARD') { - currentPageAnnotationIds.forEach((id) => { - this._findAndDeleteAnnotation(id); - }); - const newPageAnnotations = this.annotations.filter((item) => item.pageNumber === page); - this._handleDeltaAnnotationFilters(currentPageAnnotations, newPageAnnotations); - this._annotationDrawService.drawAnnotations(this._instance, newPageAnnotations, this.hideSkipped); - } - }); + this._fileDownloadService + .loadActiveFileManualAnnotations() + .subscribe((manualRedactions) => { + this.fileData.manualRedactions = manualRedactions; + this.rebuildFilters(); + if (this.viewMode === 'STANDARD') { + currentPageAnnotationIds.forEach((id) => { + this._findAndDeleteAnnotation(id); + }); + const newPageAnnotations = this.annotations.filter( + (item) => item.pageNumber === page + ); + this._handleDeltaAnnotationFilters(currentPageAnnotations, newPageAnnotations); + this._annotationDrawService.drawAnnotations( + this._instance, + newPageAnnotations, + this.hideSkipped + ); + } + }); } - private _handleDeltaAnnotationFilters(currentPageAnnotations: AnnotationWrapper[], newPageAnnotations: AnnotationWrapper[]) { + private _handleDeltaAnnotationFilters( + currentPageAnnotations: AnnotationWrapper[], + newPageAnnotations: AnnotationWrapper[] + ) { const hasAnyFilterSet = - this.primaryFilters.find((f) => f.checked || f.indeterminate) || this.secondaryFilters.find((f) => f.checked || f.indeterminate); + this.primaryFilters.find((f) => f.checked || f.indeterminate) || + this.secondaryFilters.find((f) => f.checked || f.indeterminate); if (hasAnyFilterSet) { - const oldPageSpecificFilters = this._annotationProcessingService.getAnnotationFilter(currentPageAnnotations); - const newPageSpecificFilters = this._annotationProcessingService.getAnnotationFilter(newPageAnnotations); + const oldPageSpecificFilters = + this._annotationProcessingService.getAnnotationFilter(currentPageAnnotations); + const newPageSpecificFilters = + this._annotationProcessingService.getAnnotationFilter(newPageAnnotations); handleFilterDelta(oldPageSpecificFilters, newPageSpecificFilters, this.primaryFilters); - this._workloadComponent.filtersChanged({ primary: this.primaryFilters, secondary: this.secondaryFilters }); + this._workloadComponent.filtersChanged({ + primary: this.primaryFilters, + secondary: this.secondaryFilters + }); } } private _findAndDeleteAnnotation(id: string) { const viewerAnnotation = this.activeViewer.annotManager.getAnnotationById(id); if (viewerAnnotation) { - this.activeViewer.annotManager.deleteAnnotation(viewerAnnotation, { imported: true, force: true }); + this.activeViewer.annotManager.deleteAnnotation(viewerAnnotation, { + imported: true, + force: true + }); } } @@ -564,7 +677,9 @@ export class FilePreviewScreenComponent implements OnInit, OnDestroy, OnAttach, this.analysisInterval = setInterval(() => { this.analysisProgressInSeconds += 1; - this.analysisProgress = (this.analysisProgressInSeconds * 100) / (this.appStateService.activeFile.analysisDuration / 1000); + this.analysisProgress = + (this.analysisProgressInSeconds * 100) / + (this.appStateService.activeFile.analysisDuration / 1000); }, 1000); } else { this.analysisInterval = 0; diff --git a/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.html b/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.html index 705909549..e8e69eb5b 100644 --- a/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.html @@ -32,8 +32,16 @@ [icon]="'red:template'" [primaryFilters]="ruleSetFilters" > - -
+ +
- {{ 'project-listing.table-header.title' | translate: { length: displayedEntities.length || 0 } }} + {{ + 'project-listing.table-header.title' + | translate: { length: displayedEntities.length || 0 } + }}
@@ -63,11 +74,19 @@ label="project-listing.table-col-names.name" > - + - + - +
@@ -79,13 +98,22 @@ screen="project-listing" > - +
@@ -122,13 +150,21 @@
- +
- +
- +
diff --git a/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.ts b/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.ts index bf7dd290f..e4f7f72fb 100644 --- a/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/projects/screens/project-listing-screen/project-listing-screen.component.ts @@ -32,7 +32,10 @@ import { OnAttach, OnDetach } from '@utils/custom-route-reuse.strategy'; templateUrl: './project-listing-screen.component.html', styleUrls: ['./project-listing-screen.component.scss'] }) -export class ProjectListingScreenComponent extends BaseListingComponent implements OnInit, OnDestroy, OnAttach, OnDetach { +export class ProjectListingScreenComponent + extends BaseListingComponent + implements OnInit, OnDestroy, OnAttach, OnDetach +{ projectsChartData: DoughnutChartConfig[] = []; documentsChartData: DoughnutChartConfig[] = []; statusFilters: FilterModel[]; @@ -83,7 +86,8 @@ export class ProjectListingScreenComponent extends BaseListingComponent p.project.status === Project.StatusEnum.ACTIVE).length; + return this.allEntities.filter((p) => p.project.status === Project.StatusEnum.ACTIVE) + .length; } get inactiveProjectsCount() { @@ -91,10 +95,20 @@ export class ProjectListingScreenComponent extends BaseListingComponent events instanceof NavigationStart || events instanceof NavigationEnd)) + .pipe( + filter( + (events) => events instanceof NavigationStart || events instanceof NavigationEnd + ) + ) .subscribe((event) => { if (event instanceof NavigationStart && event.url !== '/main/projects') { this._lastScrollPosition = this._scrollBar.measureScrollOffset('top'); @@ -212,7 +230,9 @@ export class ProjectListingScreenComponent extends BaseListingComponent StatusSorter[a.key] - StatusSorter[b.key]); - this.documentsChartData = this._translateChartService.translateStatus(this.documentsChartData); + this.documentsChartData = this._translateChartService.translateStatus( + this.documentsChartData + ); } private _computeAllFilters() { @@ -230,7 +250,8 @@ export class ProjectListingScreenComponent extends BaseListingComponent { - if (this.permissionsService.fileRequiresReanalysis(file)) allDistinctNeedsWork.add('analysis'); + if (this.permissionsService.fileRequiresReanalysis(file)) + allDistinctNeedsWork.add('analysis'); if (entry.hintsOnly) allDistinctNeedsWork.add('hint'); if (entry.hasRedactions) allDistinctNeedsWork.add('redaction'); if (entry.hasRequests) allDistinctNeedsWork.add('suggestion'); @@ -268,7 +289,9 @@ export class ProjectListingScreenComponent extends BaseListingComponent RedactionFilterSorter[a.key] - RedactionFilterSorter[b.key]); + needsWorkFilters.sort( + (a, b) => RedactionFilterSorter[a.key] - RedactionFilterSorter[b.key] + ); this.needsWorkFilters = processFilters(this.needsWorkFilters, needsWorkFilters); const ruleSetFilters = []; diff --git a/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.html b/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.html index 1fdd11e57..46ce68abe 100644 --- a/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.html +++ b/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.html @@ -25,9 +25,17 @@ [primaryFilters]="needsWorkFilters" > - + -
+
@@ -47,7 +55,11 @@ - + - {{ 'project-overview.table-header.title' | translate: { length: displayedEntities.length || 0 } }} + {{ + 'project-overview.table-header.title' + | translate: { length: displayedEntities.length || 0 } + }}
-
+
@@ -119,7 +138,9 @@ label="project-overview.table-col-names.added-on" > - + - +
-
- +
+
@@ -186,13 +220,19 @@
- + {{ fileStatus.primaryAttribute }}
-
+
{{ fileStatus.ocrTime | date: 'mediumDate' }}
@@ -207,14 +247,23 @@
- +
- +
- +
@@ -225,8 +274,16 @@
-
-
+
+
- + diff --git a/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.ts b/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.ts index aaa542efa..ff8e153db 100644 --- a/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/projects/screens/project-overview-screen/project-overview-screen.component.ts @@ -11,7 +11,11 @@ import { FilterModel } from '@shared/components/filter/model/filter.model'; import * as moment from 'moment'; import { ProjectDetailsComponent } from '../../components/project-details/project-details.component'; import { FileStatusWrapper } from '@models/file/file-status.wrapper'; -import { annotationFilterChecker, keyChecker, processFilters } from '@shared/components/filter/utils/filter-utils'; +import { + annotationFilterChecker, + keyChecker, + processFilters +} from '@shared/components/filter/utils/filter-utils'; import { PermissionsService } from '@services/permissions.service'; import { UserService } from '@services/user.service'; import { FileStatus, UserPreferenceControllerService } from '@redaction/red-ui-http'; @@ -32,7 +36,10 @@ import { OnAttach, OnDetach } from '@utils/custom-route-reuse.strategy'; templateUrl: './project-overview-screen.component.html', styleUrls: ['./project-overview-screen.component.scss'] }) -export class ProjectOverviewScreenComponent extends BaseListingComponent implements OnInit, OnDestroy, OnDetach, OnAttach { +export class ProjectOverviewScreenComponent + extends BaseListingComponent + implements OnInit, OnDestroy, OnDetach, OnAttach +{ statusFilters: FilterModel[]; peopleFilters: FilterModel[]; needsWorkFilters: FilterModel[]; @@ -81,10 +88,19 @@ export class ProjectOverviewScreenComponent extends BaseListingComponent allDistinctFileStatusWrapper.add(file.status)); // Added dates - this.allEntities.forEach((file) => allDistinctAddedDates.add(moment(file.added).format('DD/MM/YYYY'))); + this.allEntities.forEach((file) => + allDistinctAddedDates.add(moment(file.added).format('DD/MM/YYYY')) + ); // Needs work this.allEntities.forEach((file) => { - if (this.permissionsService.fileRequiresReanalysis(file)) allDistinctNeedsWork.add('analysis'); + if (this.permissionsService.fileRequiresReanalysis(file)) + allDistinctNeedsWork.add('analysis'); if (file.hintsOnly) allDistinctNeedsWork.add('hint'); if (file.hasRedactions) allDistinctNeedsWork.add('redaction'); if (file.hasRequests) allDistinctNeedsWork.add('suggestion'); @@ -340,7 +370,9 @@ export class ProjectOverviewScreenComponent extends BaseListingComponent RedactionFilterSorter[a.key] - RedactionFilterSorter[b.key]); + needsWorkFilters.sort( + (a, b) => RedactionFilterSorter[a.key] - RedactionFilterSorter[b.key] + ); this.needsWorkFilters = processFilters(this.needsWorkFilters, needsWorkFilters); } } diff --git a/apps/red-ui/src/app/modules/projects/services/annotation-actions.service.ts b/apps/red-ui/src/app/modules/projects/services/annotation-actions.service.ts index 7fec78338..b1e7380b5 100644 --- a/apps/red-ui/src/app/modules/projects/services/annotation-actions.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/annotation-actions.service.ts @@ -21,26 +21,52 @@ export class AnnotationActionsService { private readonly _dialogService: ProjectsDialogService ) {} - acceptSuggestion($event: MouseEvent, annotations: AnnotationWrapper[], annotationsChanged: EventEmitter) { + acceptSuggestion( + $event: MouseEvent, + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ) { $event?.stopPropagation(); annotations.forEach((annotation) => { - this._processObsAndEmit(this._manualAnnotationService.approveRequest(annotation.id, annotation.isModifyDictionary), annotation, annotationsChanged); + this._processObsAndEmit( + this._manualAnnotationService.approveRequest( + annotation.id, + annotation.isModifyDictionary + ), + annotation, + annotationsChanged + ); }); } - rejectSuggestion($event: MouseEvent, annotations: AnnotationWrapper[], annotationsChanged: EventEmitter) { + rejectSuggestion( + $event: MouseEvent, + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ) { $event?.stopPropagation(); annotations.forEach((annotation) => { - this._processObsAndEmit(this._manualAnnotationService.declineOrRemoveRequest(annotation), annotation, annotationsChanged); + this._processObsAndEmit( + this._manualAnnotationService.declineOrRemoveRequest(annotation), + annotation, + annotationsChanged + ); }); } - forceRedaction($event: MouseEvent, annotations: AnnotationWrapper[], annotationsChanged: EventEmitter) { + forceRedaction( + $event: MouseEvent, + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ) { $event?.stopPropagation(); this._dialogService.openForceRedactionDialog($event, (request) => { annotations.forEach((annotation) => { this._processObsAndEmit( - this._manualAnnotationService.forceRedaction({ ...request, annotationId: annotation.id }), + this._manualAnnotationService.forceRedaction({ + ...request, + annotationId: annotation.id + }), annotation, annotationsChanged ); @@ -54,51 +80,95 @@ export class AnnotationActionsService { removeFromDictionary: boolean, annotationsChanged: EventEmitter ) { - this._dialogService.openRemoveFromDictionaryDialog($event, annotations, removeFromDictionary, () => { - annotations.forEach((annotation) => { - this._processObsAndEmit( - this._manualAnnotationService.removeOrSuggestRemoveAnnotation(annotation, removeFromDictionary), - annotation, - annotationsChanged - ); - }); - }); + this._dialogService.openRemoveFromDictionaryDialog( + $event, + annotations, + removeFromDictionary, + () => { + annotations.forEach((annotation) => { + this._processObsAndEmit( + this._manualAnnotationService.removeOrSuggestRemoveAnnotation( + annotation, + removeFromDictionary + ), + annotation, + annotationsChanged + ); + }); + } + ); } - markAsFalsePositive($event: MouseEvent, annotations: AnnotationWrapper[], annotationsChanged: EventEmitter) { + markAsFalsePositive( + $event: MouseEvent, + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ) { annotations.forEach((annotation) => { - const permissions = AnnotationPermissions.forUser(this._permissionsService.isApprover(), this._permissionsService.currentUser, annotation); - const value = permissions.canMarkTextOnlyAsFalsePositive ? annotation.value : this._getFalsePositiveText(annotation); + const permissions = AnnotationPermissions.forUser( + this._permissionsService.isApprover(), + this._permissionsService.currentUser, + annotation + ); + const value = permissions.canMarkTextOnlyAsFalsePositive + ? annotation.value + : this._getFalsePositiveText(annotation); this._markAsFalsePositive($event, annotation, value, annotationsChanged); }); } - undoDirectAction($event: MouseEvent, annotations: AnnotationWrapper[], annotationsChanged: EventEmitter) { + undoDirectAction( + $event: MouseEvent, + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ) { $event?.stopPropagation(); annotations.forEach((annotation) => { - this._processObsAndEmit(this._manualAnnotationService.undoRequest(annotation), annotation, annotationsChanged); + this._processObsAndEmit( + this._manualAnnotationService.undoRequest(annotation), + annotation, + annotationsChanged + ); }); } - convertRecommendationToAnnotation($event: any, annotations: AnnotationWrapper[], annotationsChanged: EventEmitter) { + convertRecommendationToAnnotation( + $event: any, + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ) { $event?.stopPropagation(); annotations.forEach((annotation) => { - this._processObsAndEmit(this._manualAnnotationService.addRecommendation(annotation), annotation, annotationsChanged); + this._processObsAndEmit( + this._manualAnnotationService.addRecommendation(annotation), + annotation, + annotationsChanged + ); }); } - getViewerAvailableActions(annotations: AnnotationWrapper[], annotationsChanged: EventEmitter): Record[] { + getViewerAvailableActions( + annotations: AnnotationWrapper[], + annotationsChanged: EventEmitter + ): Record[] { const availableActions = []; const annotationPermissions = annotations.map((a) => ({ annotation: a, - permissions: AnnotationPermissions.forUser(this._permissionsService.isApprover(), this._permissionsService.currentUser, a) + permissions: AnnotationPermissions.forUser( + this._permissionsService.isApprover(), + this._permissionsService.currentUser, + a + ) })); - const canForceRedaction = annotationPermissions.reduce((acc, next) => acc && next.permissions.canForceRedaction, true); + const canForceRedaction = annotationPermissions.reduce( + (acc, next) => acc && next.permissions.canForceRedaction, + true + ); if (canForceRedaction) { availableActions.push({ type: 'actionButton', @@ -112,21 +182,33 @@ export class AnnotationActionsService { }); } - const canAcceptRecommendation = annotationPermissions.reduce((acc, next) => acc && next.permissions.canAcceptRecommendation, true); + const canAcceptRecommendation = annotationPermissions.reduce( + (acc, next) => acc && next.permissions.canAcceptRecommendation, + true + ); if (canAcceptRecommendation) { availableActions.push({ type: 'actionButton', img: this._convertPath('/assets/icons/general/check.svg'), - title: this._translateService.instant('annotation-actions.accept-recommendation.label'), + title: this._translateService.instant( + 'annotation-actions.accept-recommendation.label' + ), onClick: () => { this._ngZone.run(() => { - this.convertRecommendationToAnnotation(null, annotations, annotationsChanged); + this.convertRecommendationToAnnotation( + null, + annotations, + annotationsChanged + ); }); } }); } - const canAcceptSuggestion = annotationPermissions.reduce((acc, next) => acc && next.permissions.canAcceptSuggestion, true); + const canAcceptSuggestion = annotationPermissions.reduce( + (acc, next) => acc && next.permissions.canAcceptSuggestion, + true + ); if (canAcceptSuggestion) { availableActions.push({ type: 'actionButton', @@ -140,7 +222,10 @@ export class AnnotationActionsService { }); } - const canUndo = annotationPermissions.reduce((acc, next) => acc && next.permissions.canUndo, true); + const canUndo = annotationPermissions.reduce( + (acc, next) => acc && next.permissions.canUndo, + true + ); if (canUndo) { availableActions.push({ type: 'actionButton', @@ -154,7 +239,10 @@ export class AnnotationActionsService { }); } - const canRejectSuggestion = annotationPermissions.reduce((acc, next) => acc && next.permissions.canRejectSuggestion, true); + const canRejectSuggestion = annotationPermissions.reduce( + (acc, next) => acc && next.permissions.canRejectSuggestion, + true + ); if (canRejectSuggestion) { availableActions.push({ type: 'actionButton', @@ -176,7 +264,9 @@ export class AnnotationActionsService { availableActions.push({ type: 'actionButton', img: this._convertPath('/assets/icons/general/close.svg'), - title: this._translateService.instant('annotation-actions.suggest-remove-annotation'), + title: this._translateService.instant( + 'annotation-actions.suggest-remove-annotation' + ), onClick: () => { this._ngZone.run(() => { this.suggestRemoveAnnotation(null, annotations, false, annotationsChanged); @@ -193,7 +283,9 @@ export class AnnotationActionsService { availableActions.push({ type: 'actionButton', img: this._convertPath('/assets/icons/general/trash.svg'), - title: this._translateService.instant('annotation-actions.remove-annotation.remove-from-dict'), + title: this._translateService.instant( + 'annotation-actions.remove-annotation.remove-from-dict' + ), onClick: () => { this._ngZone.run(() => { this.suggestRemoveAnnotation(null, annotations, true, annotationsChanged); @@ -203,14 +295,19 @@ export class AnnotationActionsService { } const canMarkAsFalsePositive = annotationPermissions.reduce( - (acc, next) => acc && (next.permissions.canMarkAsFalsePositive || next.permissions.canMarkTextOnlyAsFalsePositive), + (acc, next) => + acc && + (next.permissions.canMarkAsFalsePositive || + next.permissions.canMarkTextOnlyAsFalsePositive), true ); if (canMarkAsFalsePositive) { availableActions.push({ type: 'actionButton', img: this._convertPath('/assets/icons/general/thumb-down.svg'), - title: this._translateService.instant('annotation-actions.remove-annotation.false-positive'), + title: this._translateService.instant( + 'annotation-actions.remove-annotation.false-positive' + ), onClick: () => { this._ngZone.run(() => { this.markAsFalsePositive(null, annotations, annotationsChanged); @@ -222,7 +319,11 @@ export class AnnotationActionsService { return availableActions; } - private _processObsAndEmit(obs: Observable, annotation: AnnotationWrapper, annotationsChanged: EventEmitter) { + private _processObsAndEmit( + obs: Observable, + annotation: AnnotationWrapper, + annotationsChanged: EventEmitter + ) { obs.subscribe( () => { annotationsChanged.emit(annotation); @@ -246,7 +347,12 @@ export class AnnotationActionsService { } } - private _markAsFalsePositive($event: MouseEvent, annotation: AnnotationWrapper, text: string, annotationsChanged: EventEmitter) { + private _markAsFalsePositive( + $event: MouseEvent, + annotation: AnnotationWrapper, + text: string, + annotationsChanged: EventEmitter + ) { $event?.stopPropagation(); const falsePositiveRequest: AddRedactionRequest = {}; @@ -257,7 +363,11 @@ export class AnnotationActionsService { falsePositiveRequest.addToDictionary = true; falsePositiveRequest.comment = { text: 'False Positive' }; - this._processObsAndEmit(this._manualAnnotationService.addAnnotation(falsePositiveRequest), annotation, annotationsChanged); + this._processObsAndEmit( + this._manualAnnotationService.addAnnotation(falsePositiveRequest), + annotation, + annotationsChanged + ); } private _convertPath(path: string): string { diff --git a/apps/red-ui/src/app/modules/projects/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/projects/services/annotation-draw.service.ts index ec9b5060d..1a1ac5ded 100644 --- a/apps/red-ui/src/app/modules/projects/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/annotation-draw.service.ts @@ -1,6 +1,11 @@ import { Injectable } from '@angular/core'; import { Annotations, WebViewerInstance } from '@pdftron/webviewer'; -import { Rectangle, RedactionLogControllerService, SectionGrid, SectionRectangle } from '@redaction/red-ui-http'; +import { + Rectangle, + RedactionLogControllerService, + SectionGrid, + SectionRectangle +} from '@redaction/red-ui-http'; import { hexToRgb } from '@utils/functions'; import { AppStateService } from '@state/app-state.service'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; @@ -14,7 +19,11 @@ export class AnnotationDrawService { private readonly _userPreferenceService: UserPreferenceService ) {} - drawAnnotations(activeViewer: WebViewerInstance, annotationWrappers: AnnotationWrapper[], hideSkipped: boolean = false) { + drawAnnotations( + activeViewer: WebViewerInstance, + annotationWrappers: AnnotationWrapper[], + hideSkipped: boolean = false + ) { const annotations = []; annotationWrappers.forEach((annotation) => { annotations.push(this.computeAnnotation(activeViewer, annotation, hideSkipped)); @@ -26,7 +35,10 @@ export class AnnotationDrawService { if (this._userPreferenceService.areDevFeaturesEnabled) { this._redactionLogControllerService - .getSectionGrid(this._appStateService.activeProjectId, this._appStateService.activeFileId) + .getSectionGrid( + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ) .subscribe((sectionGrid) => { this.drawSections(activeViewer, sectionGrid); }); @@ -38,7 +50,9 @@ export class AnnotationDrawService { for (const page of Object.keys(sectionGrid.rectanglesPerPage)) { const sectionRectangles: SectionRectangle[] = sectionGrid.rectanglesPerPage[page]; sectionRectangles.forEach((sectionRectangle) => { - sections.push(this.computeSection(activeViewer, parseInt(page, 10), sectionRectangle)); + sections.push( + this.computeSection(activeViewer, parseInt(page, 10), sectionRectangle) + ); // sectionRectangle.tableCells?.forEach(cell =>{ // sections.push(this.computeSection(activeViewer, parseInt(page, 10), cell)); // }) @@ -49,7 +63,11 @@ export class AnnotationDrawService { annotationManager.drawAnnotationsFromList(sections); } - computeSection(activeViewer: WebViewerInstance, pageNumber: number, sectionRectangle: SectionRectangle) { + computeSection( + activeViewer: WebViewerInstance, + pageNumber: number, + sectionRectangle: SectionRectangle + ) { const rectangleAnnot = new activeViewer.Annotations.RectangleAnnotation(); const pageHeight = activeViewer.docViewer.getPageHeight(pageNumber); const rectangle = { @@ -70,26 +88,47 @@ export class AnnotationDrawService { return rectangleAnnot; } - computeAnnotation(activeViewer: WebViewerInstance, annotationWrapper: AnnotationWrapper, hideSkipped: boolean = false) { + computeAnnotation( + activeViewer: WebViewerInstance, + annotationWrapper: AnnotationWrapper, + hideSkipped: boolean = false + ) { const pageNumber = annotationWrapper.pageNumber; const highlight = new activeViewer.Annotations.TextHighlightAnnotation(); highlight.PageNumber = pageNumber; - highlight.StrokeColor = this.getColor(activeViewer, annotationWrapper.superType, annotationWrapper.dictionary); + highlight.StrokeColor = this.getColor( + activeViewer, + annotationWrapper.superType, + annotationWrapper.dictionary + ); highlight.setContents(annotationWrapper.content); - highlight.Quads = this._rectanglesToQuads(annotationWrapper.positions, activeViewer, pageNumber); + highlight.Quads = this._rectanglesToQuads( + annotationWrapper.positions, + activeViewer, + pageNumber + ); highlight.Id = annotationWrapper.id; highlight.ReadOnly = true; // change log entries are drawn lighter highlight.Opacity = annotationWrapper.isChangeLogRemoved ? 0.2 : 1; - highlight.Hidden = annotationWrapper.isChangeLogRemoved || (hideSkipped && annotationWrapper.isSkipped) || annotationWrapper.isOCR; + highlight.Hidden = + annotationWrapper.isChangeLogRemoved || + (hideSkipped && annotationWrapper.isSkipped) || + annotationWrapper.isOCR; highlight.setCustomData('redacto-manager', true); highlight.setCustomData('redaction', annotationWrapper.isRedacted); highlight.setCustomData('skipped', annotationWrapper.isSkipped); highlight.setCustomData('changeLog', annotationWrapper.isChangeLogEntry); highlight.setCustomData('changeLogRemoved', annotationWrapper.isChangeLogRemoved); - highlight.setCustomData('redactionColor', this.getColor(activeViewer, 'redaction', 'redaction')); - highlight.setCustomData('annotationColor', this.getColor(activeViewer, annotationWrapper.superType, annotationWrapper.dictionary)); + highlight.setCustomData( + 'redactionColor', + this.getColor(activeViewer, 'redaction', 'redaction') + ); + highlight.setCustomData( + 'annotationColor', + this.getColor(activeViewer, annotationWrapper.superType, annotationWrapper.dictionary) + ); return highlight; } @@ -129,12 +168,20 @@ export class AnnotationDrawService { return new activeViewer.CoreControls.Math.Quad(x1, y1, x2, y2, x3, y3, x4, y4); } - private _rectanglesToQuads(positions: Rectangle[], activeViewer: WebViewerInstance, pageNumber: number): any[] { + private _rectanglesToQuads( + positions: Rectangle[], + activeViewer: WebViewerInstance, + pageNumber: number + ): any[] { const pageHeight = activeViewer.docViewer.getPageHeight(pageNumber); return positions.map((p) => this._rectangleToQuad(p, activeViewer, pageHeight)); } - private _rectangleToQuad(rectangle: Rectangle, activeViewer: WebViewerInstance, pageHeight: number): any { + private _rectangleToQuad( + rectangle: Rectangle, + activeViewer: WebViewerInstance, + pageHeight: number + ): any { const x1 = rectangle.topLeft.x; const y1 = pageHeight - (rectangle.topLeft.y + rectangle.height); diff --git a/apps/red-ui/src/app/modules/projects/services/annotation-processing.service.ts b/apps/red-ui/src/app/modules/projects/services/annotation-processing.service.ts index c2bd0f64d..9e02bd836 100644 --- a/apps/red-ui/src/app/modules/projects/services/annotation-processing.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/annotation-processing.service.ts @@ -25,7 +25,10 @@ export class AnnotationProcessingService { const filters: FilterModel[] = []; annotations?.forEach((a) => { - const topLevelFilter = a.superType !== 'hint' && a.superType !== 'redaction' && a.superType !== 'recommendation'; + const topLevelFilter = + a.superType !== 'hint' && + a.superType !== 'redaction' && + a.superType !== 'recommendation'; const key = topLevelFilter ? a.superType : a.superType + a.dictionary; const filter = filterMap.get(key); if (filter) { @@ -76,11 +79,20 @@ export class AnnotationProcessingService { const secondaryFlatFilters = this._getFlatFilters(secondaryFilters, (f) => f.checked); for (const annotation of annotations) { - if (!this._matchesOne(primaryFlatFilters, (f) => this._checkByFilterKey(f, annotation))) { + if ( + !this._matchesOne(primaryFlatFilters, (f) => this._checkByFilterKey(f, annotation)) + ) { continue; } - if (!this._matchesAll(secondaryFlatFilters, (f) => (!!f.checker && f.checker(annotation)) || this._checkByFilterKey(f, annotation))) { + if ( + !this._matchesAll( + secondaryFlatFilters, + (f) => + (!!f.checker && f.checker(annotation)) || + this._checkByFilterKey(f, annotation) + ) + ) { continue; } @@ -107,7 +119,11 @@ export class AnnotationProcessingService { return obj; } - private _createParentFilter(key: string, filterMap: Map, filters: FilterModel[]) { + private _createParentFilter( + key: string, + filterMap: Map, + filters: FilterModel[] + ) { const filter: FilterModel = { key: key, topLevelFilter: true, @@ -131,7 +147,10 @@ export class AnnotationProcessingService { return filterBy ? flatFilters.filter((f) => filterBy(f)) : flatFilters; } - private _matchesOne = (filters: FilterModel[], condition: (filter: FilterModel) => boolean): boolean => { + private _matchesOne = ( + filters: FilterModel[], + condition: (filter: FilterModel) => boolean + ): boolean => { if (filters.length === 0) return true; for (const filter of filters) { @@ -141,7 +160,10 @@ export class AnnotationProcessingService { return false; }; - private _matchesAll = (filters: FilterModel[], condition: (filter: FilterModel) => boolean): boolean => { + private _matchesAll = ( + filters: FilterModel[], + condition: (filter: FilterModel) => boolean + ): boolean => { if (filters.length === 0) return true; for (const filter of filters) { @@ -153,9 +175,13 @@ export class AnnotationProcessingService { private _checkByFilterKey = (filter: FilterModel, annotation: AnnotationWrapper) => { const superType = annotation.superType; - const isNotTopLevelFilter = superType === 'hint' || superType === 'redaction' || superType === 'recommendation'; + const isNotTopLevelFilter = + superType === 'hint' || superType === 'redaction' || superType === 'recommendation'; - return filter.key === superType || (filter.key === annotation.dictionary && isNotTopLevelFilter); + return ( + filter.key === superType || + (filter.key === annotation.dictionary && isNotTopLevelFilter) + ); }; private _sortAnnotations(annotations: AnnotationWrapper[]): AnnotationWrapper[] { diff --git a/apps/red-ui/src/app/modules/projects/services/file-action.service.ts b/apps/red-ui/src/app/modules/projects/services/file-action.service.ts index 3f807d647..e04b81d34 100644 --- a/apps/red-ui/src/app/modules/projects/services/file-action.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/file-action.service.ts @@ -1,7 +1,11 @@ import { Injectable } from '@angular/core'; import { AppStateService } from '@state/app-state.service'; import { UserService } from '@services/user.service'; -import { FileStatus, ReanalysisControllerService, StatusControllerService } from '@redaction/red-ui-http'; +import { + FileStatus, + ReanalysisControllerService, + StatusControllerService +} from '@redaction/red-ui-http'; import { FileStatusWrapper } from '@models/file/file-status.wrapper'; import { PermissionsService } from '@services/permissions.service'; import { isArray } from 'rxjs/internal-compatibility'; @@ -22,14 +26,22 @@ export class FileActionService { if (!fileStatusWrapper) { fileStatusWrapper = this._appStateService.activeFile; } - return this._reanalysisControllerService.reanalyzeFile(this._appStateService.activeProject.project.projectId, fileStatusWrapper.fileId, priority); + return this._reanalysisControllerService.reanalyzeFile( + this._appStateService.activeProject.project.projectId, + fileStatusWrapper.fileId, + priority + ); } toggleAnalysis(fileStatusWrapper?: FileStatusWrapper) { if (!fileStatusWrapper) { fileStatusWrapper = this._appStateService.activeFile; } - return this._reanalysisControllerService.toggleAnalysis(fileStatusWrapper.projectId, fileStatusWrapper.fileId, fileStatusWrapper.isExcluded); + return this._reanalysisControllerService.toggleAnalysis( + fileStatusWrapper.projectId, + fileStatusWrapper.fileId, + fileStatusWrapper.isExcluded + ); } async assignProjectReviewerFromOverview(file?: FileStatusWrapper, callback?: Function) { @@ -40,7 +52,11 @@ export class FileActionService { } } - assignProjectApprover(file?: FileStatusWrapper, callback?: Function, ignoreDialogChanges = false) { + assignProjectApprover( + file?: FileStatusWrapper, + callback?: Function, + ignoreDialogChanges = false + ) { this._dialogService.openAssignFileToUserDialog( file ? [file] : [this._appStateService.activeFile], 'approver', @@ -54,7 +70,11 @@ export class FileActionService { ); } - assignProjectReviewer(file?: FileStatusWrapper, callback?: Function, ignoreDialogChanges = false) { + assignProjectReviewer( + file?: FileStatusWrapper, + callback?: Function, + ignoreDialogChanges = false + ) { this._dialogService.openAssignFileToUserDialog( file ? [file] : [this._appStateService.activeFile], 'reviewer', @@ -72,9 +92,12 @@ export class FileActionService { if (!file.currentReviewer) { await this._assignReviewerToCurrentUser(file, callback); } else { - this._dialogService.openAssignFileToMeDialog(file ? file : this._appStateService.activeFile, async () => { - await this._assignReviewerToCurrentUser(file, callback); - }); + this._dialogService.openAssignFileToMeDialog( + file ? file : this._appStateService.activeFile, + async () => { + await this._assignReviewerToCurrentUser(file, callback); + } + ); } } @@ -125,16 +148,26 @@ export class FileActionService { } private _openAssignReviewerDialog(file?: FileStatusWrapper, callback?: Function) { - this._dialogService.openAssignFileToUserDialog(file ? [file] : [this._appStateService.activeFile], 'reviewer', async () => { - await this._appStateService.reloadActiveProjectFiles(); - if (callback) { - callback(); + this._dialogService.openAssignFileToUserDialog( + file ? [file] : [this._appStateService.activeFile], + 'reviewer', + async () => { + await this._appStateService.reloadActiveProjectFiles(); + if (callback) { + callback(); + } } - }); + ); } private async _assignReviewerToCurrentUser(file?: FileStatus, callback?: Function) { - await this._statusControllerService.setFileReviewer(this._appStateService.activeProjectId, file.fileId, this._userService.userId).toPromise(); + await this._statusControllerService + .setFileReviewer( + this._appStateService.activeProjectId, + file.fileId, + this._userService.userId + ) + .toPromise(); await this._appStateService.reloadActiveProjectFiles(); if (callback) { await callback(); diff --git a/apps/red-ui/src/app/modules/projects/services/manual-annotation.service.ts b/apps/red-ui/src/app/modules/projects/services/manual-annotation.service.ts index 627fb4f52..a3ece8118 100644 --- a/apps/red-ui/src/app/modules/projects/services/manual-annotation.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/manual-annotation.service.ts @@ -1,6 +1,11 @@ import { Injectable } from '@angular/core'; import { AppStateService } from '@state/app-state.service'; -import { AddRedactionRequest, DictionaryControllerService, ForceRedactionRequest, ManualRedactionControllerService } from '@redaction/red-ui-http'; +import { + AddRedactionRequest, + DictionaryControllerService, + ForceRedactionRequest, + ManualRedactionControllerService +} from '@redaction/red-ui-http'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { NotificationService, NotificationType } from '@services/notification.service'; import { TranslateService } from '@ngx-translate/core'; @@ -44,7 +49,8 @@ export class ManualAnnotationService { addRecommendation(annotation: AnnotationWrapper) { const manualRedactionEntry: AddRedactionRequest = {}; manualRedactionEntry.addToDictionary = true; - manualRedactionEntry.reason = annotation.id; // set the ID as reason, so we can hide the suggestion + // set the ID as reason, so we can hide the suggestion + manualRedactionEntry.reason = annotation.id; manualRedactionEntry.value = annotation.value; manualRedactionEntry.positions = annotation.positions; manualRedactionEntry.type = annotation.recommendationType; @@ -88,18 +94,35 @@ export class ManualAnnotationService { .pipe( tap( () => this._notify(this._getMessage('approve', addToDictionary)), - (error) => this._notify(this._getMessage('approve', addToDictionary, true), NotificationType.ERROR, error) + (error) => + this._notify( + this._getMessage('approve', addToDictionary, true), + NotificationType.ERROR, + error + ) ) ); } undoRequest(annotationWrapper: AnnotationWrapper) { return this._manualRedactionControllerService - .undo(this._appStateService.activeProjectId, this._appStateService.activeFileId, annotationWrapper.id) + .undo( + this._appStateService.activeProjectId, + this._appStateService.activeFileId, + annotationWrapper.id + ) .pipe( tap( - () => this._notify(this._getMessage('undo', annotationWrapper.isModifyDictionary)), - (error) => this._notify(this._getMessage('undo', annotationWrapper.isModifyDictionary, true), NotificationType.ERROR, error) + () => + this._notify( + this._getMessage('undo', annotationWrapper.isModifyDictionary) + ), + (error) => + this._notify( + this._getMessage('undo', annotationWrapper.isModifyDictionary, true), + NotificationType.ERROR, + error + ) ) ); } @@ -110,20 +133,52 @@ export class ManualAnnotationService { declineOrRemoveRequest(annotationWrapper: AnnotationWrapper) { if (this._permissionsService.isApprover()) { return this._manualRedactionControllerService - .declineRequest(this._appStateService.activeProjectId, this._appStateService.activeFileId, annotationWrapper.id) + .declineRequest( + this._appStateService.activeProjectId, + this._appStateService.activeFileId, + annotationWrapper.id + ) .pipe( tap( - () => this._notify(this._getMessage('decline', annotationWrapper.isModifyDictionary)), - (error) => this._notify(this._getMessage('decline', annotationWrapper.isModifyDictionary, true), NotificationType.ERROR, error) + () => + this._notify( + this._getMessage('decline', annotationWrapper.isModifyDictionary) + ), + (error) => + this._notify( + this._getMessage( + 'decline', + annotationWrapper.isModifyDictionary, + true + ), + NotificationType.ERROR, + error + ) ) ); } else { return this._manualRedactionControllerService - .undo(this._appStateService.activeProjectId, this._appStateService.activeFileId, annotationWrapper.id) + .undo( + this._appStateService.activeProjectId, + this._appStateService.activeFileId, + annotationWrapper.id + ) .pipe( tap( - () => this._notify(this._getMessage('undo', annotationWrapper.isModifyDictionary)), - (error) => this._notify(this._getMessage('undo', annotationWrapper.isModifyDictionary, true), NotificationType.ERROR, error) + () => + this._notify( + this._getMessage('undo', annotationWrapper.isModifyDictionary) + ), + (error) => + this._notify( + this._getMessage( + 'undo', + annotationWrapper.isModifyDictionary, + true + ), + NotificationType.ERROR, + error + ) ) ); } @@ -132,16 +187,28 @@ export class ManualAnnotationService { // this wraps // /manualRedaction/redaction/remove/ // /manualRedaction/request/remove/ - removeOrSuggestRemoveAnnotation(annotationWrapper: AnnotationWrapper, removeFromDictionary: boolean = false) { + removeOrSuggestRemoveAnnotation( + annotationWrapper: AnnotationWrapper, + removeFromDictionary: boolean = false + ) { if (this._permissionsService.isApprover()) { // if it was something manual simply decline the existing request if (annotationWrapper.dictionary === 'manual') { return this._manualRedactionControllerService - .declineRequest(this._appStateService.activeProjectId, this._appStateService.activeFileId, annotationWrapper.id) + .declineRequest( + this._appStateService.activeProjectId, + this._appStateService.activeFileId, + annotationWrapper.id + ) .pipe( tap( () => this._notify(this._getMessage('decline', false)), - (error) => this._notify(this._getMessage('decline', false, true), NotificationType.ERROR, error) + (error) => + this._notify( + this._getMessage('decline', false, true), + NotificationType.ERROR, + error + ) ) ); } else { @@ -158,7 +225,12 @@ export class ManualAnnotationService { .pipe( tap( () => this._notify(this._getMessage('remove', removeFromDictionary)), - (error) => this._notify(this._getMessage('remove', removeFromDictionary, true), NotificationType.ERROR, error) + (error) => + this._notify( + this._getMessage('remove', removeFromDictionary, true), + NotificationType.ERROR, + error + ) ) ); } @@ -175,8 +247,14 @@ export class ManualAnnotationService { ) .pipe( tap( - () => this._notify(this._getMessage('request-remove', removeFromDictionary)), - (error) => this._notify(this._getMessage('request-remove', removeFromDictionary, true), NotificationType.ERROR, error) + () => + this._notify(this._getMessage('request-remove', removeFromDictionary)), + (error) => + this._notify( + this._getMessage('request-remove', removeFromDictionary, true), + NotificationType.ERROR, + error + ) ) ); } @@ -206,53 +284,98 @@ export class ManualAnnotationService { private _makeForceRedactionRequest(forceRedactionRequest: ForceRedactionRequest) { return this._manualRedactionControllerService - .requestForceRedaction(forceRedactionRequest, this._appStateService.activeProject.project.projectId, this._appStateService.activeFile.fileId) + .requestForceRedaction( + forceRedactionRequest, + this._appStateService.activeProject.project.projectId, + this._appStateService.activeFile.fileId + ) .pipe( tap( () => this._notify(this._getMessage('suggest', false)), - (error) => this._notify(this._getMessage('suggest', false, true), NotificationType.ERROR, error) + (error) => + this._notify( + this._getMessage('suggest', false, true), + NotificationType.ERROR, + error + ) ) ); } private _makeForceRedaction(forceRedactionRequest: ForceRedactionRequest) { return this._manualRedactionControllerService - .forceRedaction(forceRedactionRequest, this._appStateService.activeProject.project.projectId, this._appStateService.activeFile.fileId) + .forceRedaction( + forceRedactionRequest, + this._appStateService.activeProject.project.projectId, + this._appStateService.activeFile.fileId + ) .pipe( tap( () => this._notify(this._getMessage('add', false)), - (error) => this._notify(this._getMessage('add', false, true), NotificationType.ERROR, error) + (error) => + this._notify( + this._getMessage('add', false, true), + NotificationType.ERROR, + error + ) ) ); } private _makeRedactionRequest(manualRedactionEntry: AddRedactionRequest) { return this._manualRedactionControllerService - .requestAddRedaction(manualRedactionEntry, this._appStateService.activeProject.project.projectId, this._appStateService.activeFile.fileId) + .requestAddRedaction( + manualRedactionEntry, + this._appStateService.activeProject.project.projectId, + this._appStateService.activeFile.fileId + ) .pipe( tap( - () => this._notify(this._getMessage('suggest', manualRedactionEntry.addToDictionary)), - (error) => this._notify(this._getMessage('suggest', manualRedactionEntry.addToDictionary, true), NotificationType.ERROR, error) + () => + this._notify( + this._getMessage('suggest', manualRedactionEntry.addToDictionary) + ), + (error) => + this._notify( + this._getMessage('suggest', manualRedactionEntry.addToDictionary, true), + NotificationType.ERROR, + error + ) ) ); } private _makeRedaction(manualRedactionEntry: AddRedactionRequest) { return this._manualRedactionControllerService - .addRedaction(manualRedactionEntry, this._appStateService.activeProject.project.projectId, this._appStateService.activeFile.fileId) + .addRedaction( + manualRedactionEntry, + this._appStateService.activeProject.project.projectId, + this._appStateService.activeFile.fileId + ) .pipe( tap( - () => this._notify(this._getMessage('add', manualRedactionEntry.addToDictionary)), - (error) => this._notify(this._getMessage('add', manualRedactionEntry.addToDictionary, true), NotificationType.ERROR, error) + () => + this._notify(this._getMessage('add', manualRedactionEntry.addToDictionary)), + (error) => + this._notify( + this._getMessage('add', manualRedactionEntry.addToDictionary, true), + NotificationType.ERROR, + error + ) ) ); } private _notify(key: string, type: NotificationType = NotificationType.SUCCESS, data?: any) { - this._notificationService.showToastNotification(this._translateService.instant(key, data), null, type, { - positionClass: 'toast-file-preview', - actions: [] - }); + this._notificationService.showToastNotification( + this._translateService.instant(key, data), + null, + type, + { + positionClass: 'toast-file-preview', + actions: [] + } + ); } private _getMessage( @@ -260,6 +383,11 @@ export class ManualAnnotationService { modifyDictionary?: boolean, error: boolean = false ) { - return 'annotation-actions.message.' + (modifyDictionary ? 'dictionary.' : 'manual-redaction.') + mode + (error ? '.error' : '.success'); + return ( + 'annotation-actions.message.' + + (modifyDictionary ? 'dictionary.' : 'manual-redaction.') + + mode + + (error ? '.error' : '.success') + ); } } diff --git a/apps/red-ui/src/app/modules/projects/services/pdf-viewer-data.service.ts b/apps/red-ui/src/app/modules/projects/services/pdf-viewer-data.service.ts index fee0e93e7..a08d0e391 100644 --- a/apps/red-ui/src/app/modules/projects/services/pdf-viewer-data.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/pdf-viewer-data.service.ts @@ -24,37 +24,62 @@ export class PdfViewerDataService { ) {} loadActiveFileManualAnnotations() { - return this._manualRedactionControllerService.getManualRedaction(this._appStateService.activeProjectId, this._appStateService.activeFileId); + return this._manualRedactionControllerService.getManualRedaction( + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ); } loadActiveFileData(): Observable { const fileObs = this.downloadOriginalFile(this._appStateService.activeFile); const reactionLogObs = this._redactionLogControllerService - .getRedactionLog(this._appStateService.activeProjectId, this._appStateService.activeFileId) + .getRedactionLog( + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ) .pipe(catchError(() => of({}))); const redactionChangeLogObs = this._redactionLogControllerService - .getRedactionChangeLog(this._appStateService.activeProjectId, this._appStateService.activeFileId) + .getRedactionChangeLog( + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ) .pipe(catchError(() => of({}))); const manualRedactionsObs = this._manualRedactionControllerService - .getManualRedaction(this._appStateService.activeProjectId, this._appStateService.activeFileId) + .getManualRedaction( + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ) .pipe(catchError(() => of({}))); const viewedPagesObs = this.getViewedPagesForActiveFile(); - return forkJoin([fileObs, reactionLogObs, redactionChangeLogObs, manualRedactionsObs, viewedPagesObs]).pipe( - map((data) => new FileDataModel(this._appStateService.activeFile, ...data)) - ); + return forkJoin([ + fileObs, + reactionLogObs, + redactionChangeLogObs, + manualRedactionsObs, + viewedPagesObs + ]).pipe(map((data) => new FileDataModel(this._appStateService.activeFile, ...data))); } getViewedPagesForActiveFile() { if (this._permissionsService.canMarkPagesAsViewed()) { return this._viewedPagesControllerService - .getViewedPages(this._appStateService.activeProjectId, this._appStateService.activeFileId) + .getViewedPages( + this._appStateService.activeProjectId, + this._appStateService.activeFileId + ) .pipe(catchError(() => of({ pages: [] }))); } return of({ pages: [] }); } downloadOriginalFile(fileStatus: FileStatusWrapper): Observable { - return this._fileManagementControllerService.downloadOriginalFile(fileStatus.projectId, fileStatus.fileId, true, fileStatus.lastUploaded, 'body'); + return this._fileManagementControllerService.downloadOriginalFile( + fileStatus.projectId, + fileStatus.fileId, + true, + fileStatus.lastUploaded, + 'body' + ); } } diff --git a/apps/red-ui/src/app/modules/projects/services/projects-dialog.service.ts b/apps/red-ui/src/app/modules/projects/services/projects-dialog.service.ts index 667b93682..eebd4cbfd 100644 --- a/apps/red-ui/src/app/modules/projects/services/projects-dialog.service.ts +++ b/apps/red-ui/src/app/modules/projects/services/projects-dialog.service.ts @@ -12,7 +12,10 @@ import { RemoveAnnotationsDialogComponent } from '../dialogs/remove-annotations- import { NotificationService, NotificationType } from '@services/notification.service'; import { ForceRedactionDialogComponent } from '../dialogs/force-redaction-dialog/force-redaction-dialog.component'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; -import { ConfirmationDialogComponent, ConfirmationDialogInput } from '@shared/dialogs/confirmation-dialog/confirmation-dialog.component'; +import { + ConfirmationDialogComponent, + ConfirmationDialogInput +} from '@shared/dialogs/confirmation-dialog/confirmation-dialog.component'; import { ProjectWrapper } from '@state/model/project.wrapper'; import { DocumentInfoDialogComponent } from '../dialogs/document-info-dialog/document-info-dialog.component'; import { AppStateService } from '@state/app-state.service'; @@ -46,7 +49,12 @@ export class ProjectsDialogService { private readonly _manualRedactionControllerService: ManualRedactionControllerService ) {} - openDeleteFilesDialog($event: MouseEvent, projectId: string, fileIds: string[], cb?: Function): MatDialogRef { + openDeleteFilesDialog( + $event: MouseEvent, + projectId: string, + fileIds: string[], + cb?: Function + ): MatDialogRef { $event?.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, { @@ -60,11 +68,17 @@ export class ProjectsDialogService { ref.afterClosed().subscribe(async (result) => { if (result) { try { - await this._fileManagementControllerService.deleteFiles(fileIds, projectId).toPromise(); + await this._fileManagementControllerService + .deleteFiles(fileIds, projectId) + .toPromise(); await this._appStateService.reloadActiveProjectFiles(); if (cb) cb(); } catch (e) { - this._notificationService.showToastNotification(this._translateService.instant('delete-files-error'), null, NotificationType.ERROR); + this._notificationService.showToastNotification( + this._translateService.instant('delete-files-error'), + null, + NotificationType.ERROR + ); } } }); @@ -72,7 +86,10 @@ export class ProjectsDialogService { return ref; } - openManualAnnotationDialog($event: ManualRedactionEntryWrapper, cb?: Function): MatDialogRef { + openManualAnnotationDialog( + $event: ManualRedactionEntryWrapper, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(ManualAnnotationDialogComponent, { ...dialogConfig, autoFocus: true, @@ -88,24 +105,34 @@ export class ProjectsDialogService { return ref; } - openAcceptSuggestionModal($event: MouseEvent, annotation: AnnotationWrapper, callback?: Function): MatDialogRef { + openAcceptSuggestionModal( + $event: MouseEvent, + annotation: AnnotationWrapper, + callback?: Function + ): MatDialogRef { $event?.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, dialogConfig); ref.afterClosed().subscribe((result) => { if (result) { - this._manualAnnotationService.approveRequest(annotation.id).subscribe((acceptResult) => { - if (callback) { - callback(acceptResult); - } - }); + this._manualAnnotationService + .approveRequest(annotation.id) + .subscribe((acceptResult) => { + if (callback) { + callback(acceptResult); + } + }); } }); return ref; } - openRejectSuggestionModal($event: MouseEvent, annotation: AnnotationWrapper, rejectCallback: () => void): MatDialogRef { + openRejectSuggestionModal( + $event: MouseEvent, + annotation: AnnotationWrapper, + rejectCallback: () => void + ): MatDialogRef { $event?.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, { @@ -124,7 +151,10 @@ export class ProjectsDialogService { return ref; } - openForceRedactionDialog($event: MouseEvent, cb?: Function): MatDialogRef { + openForceRedactionDialog( + $event: MouseEvent, + cb?: Function + ): MatDialogRef { $event?.stopPropagation(); const ref = this._dialog.open(ForceRedactionDialogComponent, { ...dialogConfig @@ -156,7 +186,11 @@ export class ProjectsDialogService { return ref; } - openDeleteProjectDialog($event: MouseEvent, project: ProjectWrapper, cb?: Function): MatDialogRef { + openDeleteProjectDialog( + $event: MouseEvent, + project: ProjectWrapper, + cb?: Function + ): MatDialogRef { $event.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, { ...dialogConfig, @@ -175,7 +209,11 @@ export class ProjectsDialogService { return ref; } - openAssignTeamMembersDialog($event: MouseEvent, projectWrapper: ProjectWrapper, cb?: Function): MatDialogRef { + openAssignTeamMembersDialog( + $event: MouseEvent, + projectWrapper: ProjectWrapper, + cb?: Function + ): MatDialogRef { $event?.stopPropagation(); const ref = this._dialog.open(TeamMembersDialogComponent, { ...dialogConfig, @@ -189,7 +227,11 @@ export class ProjectsDialogService { return ref; } - openDossierDictionaryDialog($event: MouseEvent, project: ProjectWrapper, cb?: Function): MatDialogRef { + openDossierDictionaryDialog( + $event: MouseEvent, + project: ProjectWrapper, + cb?: Function + ): MatDialogRef { $event?.stopPropagation(); const ref = this._dialog.open(DossierDictionaryDialogComponent, { ...dialogConfig, @@ -251,7 +293,11 @@ export class ProjectsDialogService { return ref; } - openEditProjectDialog($event: MouseEvent, projectWrapper: ProjectWrapper, cb?: Function): MatDialogRef { + openEditProjectDialog( + $event: MouseEvent, + projectWrapper: ProjectWrapper, + cb?: Function + ): MatDialogRef { $event.stopPropagation(); return this._dialog.open(EditProjectDialogComponent, { ...dialogConfig, @@ -262,7 +308,10 @@ export class ProjectsDialogService { }); } - openDocumentInfoDialog(file: FileStatus, cb?: Function): MatDialogRef { + openDocumentInfoDialog( + file: FileStatus, + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(DocumentInfoDialogComponent, { ...dialogConfig, data: file, @@ -278,7 +327,11 @@ export class ProjectsDialogService { return ref; } - openRemoveAnnotationModal($event: MouseEvent, annotation: AnnotationWrapper, callback: () => void) { + openRemoveAnnotationModal( + $event: MouseEvent, + annotation: AnnotationWrapper, + callback: () => void + ) { $event?.stopPropagation(); const ref = this._dialog.open(ConfirmationDialogComponent, { @@ -288,11 +341,13 @@ export class ProjectsDialogService { ref.afterClosed().subscribe((result) => { if (result) { - this._manualAnnotationService.removeOrSuggestRemoveAnnotation(annotation).subscribe(() => { - if (callback) { - callback(); - } - }); + this._manualAnnotationService + .removeOrSuggestRemoveAnnotation(annotation) + .subscribe(() => { + if (callback) { + callback(); + } + }); } }); diff --git a/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts b/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts index ec0921270..773384350 100644 --- a/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts +++ b/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts @@ -37,13 +37,18 @@ export abstract class BaseListingComponent { get hasActiveFilters() { return ( - this._filterComponents.filter((f) => !!f).reduce((prev, component) => prev || component?.hasActiveFilters, false) || + this._filterComponents + .filter((f) => !!f) + .reduce((prev, component) => prev || component?.hasActiveFilters, false) || this.searchForm.get('query').value ); } get areAllEntitiesSelected() { - return this.displayedEntities.length !== 0 && this.selectedEntitiesIds.length === this.displayedEntities.length; + return ( + this.displayedEntities.length !== 0 && + this.selectedEntitiesIds.length === this.displayedEntities.length + ); } get areSomeEntitiesSelected() { @@ -54,7 +59,12 @@ export abstract class BaseListingComponent { return this._sortingService.getSortingOption(this._getSortKey); } - protected get _filters(): { values: FilterModel[]; checker: Function; matchAll?: boolean; checkerArgs?: any }[] { + protected get _filters(): { + values: FilterModel[]; + checker: Function; + matchAll?: boolean; + checkerArgs?: any; + }[] { return []; } @@ -119,7 +129,9 @@ export abstract class BaseListingComponent { if (this.areSomeEntitiesSelected) { this.selectedEntitiesIds = []; } else { - this.selectedEntitiesIds = this.displayedEntities.map((entity) => entity[this._getSelectionKey]); + this.selectedEntitiesIds = this.displayedEntities.map( + (entity) => entity[this._getSelectionKey] + ); } } @@ -147,8 +159,12 @@ export abstract class BaseListingComponent { } protected _executeSearchImmediately() { - this.displayedEntities = (this._filters.length ? this.filteredEntities : this.allEntities).filter((entity) => - this._searchField(entity).toLowerCase().includes(this.searchForm.get('query').value.toLowerCase()) + this.displayedEntities = ( + this._filters.length ? this.filteredEntities : this.allEntities + ).filter((entity) => + this._searchField(entity) + .toLowerCase() + .includes(this.searchForm.get('query').value.toLowerCase()) ); this._updateSelection(); } diff --git a/apps/red-ui/src/app/modules/shared/components/annotation-icon/annotation-icon.component.html b/apps/red-ui/src/app/modules/shared/components/annotation-icon/annotation-icon.component.html index 249118c75..c5748ee0d 100644 --- a/apps/red-ui/src/app/modules/shared/components/annotation-icon/annotation-icon.component.html +++ b/apps/red-ui/src/app/modules/shared/components/annotation-icon/annotation-icon.component.html @@ -1,3 +1,10 @@ -
+
{{ label || dictType.label.charAt(0) }}
diff --git a/apps/red-ui/src/app/modules/shared/components/buttons/circle-button/circle-button.component.html b/apps/red-ui/src/app/modules/shared/components/buttons/circle-button/circle-button.component.html index 8307ca328..d15810ec0 100644 --- a/apps/red-ui/src/app/modules/shared/components/buttons/circle-button/circle-button.component.html +++ b/apps/red-ui/src/app/modules/shared/components/buttons/circle-button/circle-button.component.html @@ -1,4 +1,8 @@ -
+
diff --git a/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.html b/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.html index 6f8249aac..39f6e5eda 100644 --- a/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.html +++ b/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.html @@ -1,4 +1,9 @@ -
+
diff --git a/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.ts b/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.ts index e39cb4c0f..212bd9ede 100644 --- a/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/checkbox/round-checkbox.component.ts @@ -1,4 +1,12 @@ -import { Component, ElementRef, HostBinding, Input, OnChanges, OnInit, ViewChild } from '@angular/core'; +import { + Component, + ElementRef, + HostBinding, + Input, + OnChanges, + OnInit, + ViewChild +} from '@angular/core'; @Component({ selector: 'redaction-round-checkbox', diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.html b/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.html index 22eb999b5..7b97cafac 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.html +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.html @@ -1 +1,5 @@ - + diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.ts b/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.ts index 95806e5bf..087cd8fe9 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-annotation-icon/dictionary-annotation-icon.component.ts @@ -19,8 +19,14 @@ export class DictionaryAnnotationIconComponent implements OnChanges { ngOnChanges(): void { if (this.dictionaryKey) { - const typeValue: TypeValue = this._appStateService.getDictionaryTypeValue(this.dictionaryKey, this.ruleSetId); - this.color = this._appStateService.getDictionaryColor(this.dictionaryKey, this.ruleSetId); + const typeValue: TypeValue = this._appStateService.getDictionaryTypeValue( + this.dictionaryKey, + this.ruleSetId + ); + this.color = this._appStateService.getDictionaryColor( + this.dictionaryKey, + this.ruleSetId + ); this.type = typeValue.hint ? 'circle' : 'square'; this.label = this.dictionaryKey[0].toUpperCase(); } diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html index 0de558717..dcdd4db08 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html @@ -18,15 +18,29 @@
{{ currentMatch + '/' + searchPositions.length }}
- - - + + +
- {{ 'dictionary-overview.compare.compare' | translate }} + + {{ 'dictionary-overview.compare.compare' | translate }} +
@@ -38,7 +52,11 @@
- {{ dictionary === selectDictionary ? (dictionary.label | translate) : dictionary.label }} + {{ + dictionary === selectDictionary + ? (dictionary.label | translate) + : dictionary.label + }}
@@ -57,13 +75,22 @@ class="ace-redaction" > -
+
-
- -
+
+ +
diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts index 743229a18..7c4ec4832 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts @@ -1,8 +1,15 @@ -import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core'; +import { + Component, + EventEmitter, + Input, + OnChanges, + OnInit, + Output, + ViewChild +} from '@angular/core'; import { DictionaryControllerService, RuleSetModel, TypeValue } from '@redaction/red-ui-http'; import { FormBuilder, FormGroup } from '@angular/forms'; import { AceEditorComponent } from 'ng2-ace-editor'; -import { PermissionsService } from '@services/permissions.service'; import { NotificationService } from '@services/notification.service'; import { TranslateService } from '@ngx-translate/core'; import { ActivatedRoute, Router } from '@angular/router'; @@ -66,7 +73,10 @@ export class DictionaryManagerComponent implements OnInit, OnChanges { this.compareForm.valueChanges.subscribe((value) => { this._setFieldStatus('ruleSet', value.active); - this._setFieldStatus('dictionary', value.active && this.compareForm.get('ruleSet').value !== this.selectRuleSet); + this._setFieldStatus( + 'dictionary', + value.active && this.compareForm.get('ruleSet').value !== this.selectRuleSet + ); this._loadDictionaries(); }); @@ -102,7 +112,10 @@ export class DictionaryManagerComponent implements OnInit, OnChanges { } revert() { - DictionaryManagerComponent._setEditorValue(this._editorComponent, this.initialDictionaryEntries); + DictionaryManagerComponent._setEditorValue( + this._editorComponent, + this.initialDictionaryEntries + ); this.searchChanged(''); } @@ -136,11 +149,21 @@ export class DictionaryManagerComponent implements OnInit, OnChanges { const entry = this.currentDictionaryEntries[i]; if (entry?.trim().length > 0) { // only mark non-empty lines - this.activeEditMarkers.push(this._editorComponent.getEditor().getSession().addMarker(new range(i, 0, i, 1), 'changed-row-marker', 'fullLine')); + this.activeEditMarkers.push( + this._editorComponent + .getEditor() + .getSession() + .addMarker(new range(i, 0, i, 1), 'changed-row-marker', 'fullLine') + ); } if (entry?.trim().length > 0 && entry.trim().length < MIN_WORD_LENGTH) { // show lines that are too short - this.activeEditMarkers.push(this._editorComponent.getEditor().getSession().addMarker(new range(i, 0, i, 1), 'too-short-marker', 'fullLine')); + this.activeEditMarkers.push( + this._editorComponent + .getEditor() + .getSession() + .addMarker(new range(i, 0, i, 1), 'too-short-marker', 'fullLine') + ); } } } @@ -149,21 +172,24 @@ export class DictionaryManagerComponent implements OnInit, OnChanges { return ( this.currentDictionaryEntries.length && (this.activeEditMarkers.length > 0 || - this.currentDictionaryEntries.filter((e) => e && e.trim().length > 0).length < this.initialDictionaryEntries.length) + this.currentDictionaryEntries.filter((e) => e && e.trim().length > 0).length < + this.initialDictionaryEntries.length) ); } nextSearchMatch() { // length = 3 if (this.searchPositions.length > 0) { - this.currentMatch = this.currentMatch < this.searchPositions.length ? this.currentMatch + 1 : 1; + this.currentMatch = + this.currentMatch < this.searchPositions.length ? this.currentMatch + 1 : 1; this._gotoLine(); } } previousSearchMatch() { if (this.searchPositions.length > 0) { - this.currentMatch = this.currentMatch > 1 ? this.currentMatch - 1 : this.searchPositions.length; + this.currentMatch = + this.currentMatch > 1 ? this.currentMatch - 1 : this.searchPositions.length; this._gotoLine(); } } @@ -200,7 +226,16 @@ export class DictionaryManagerComponent implements OnInit, OnChanges { this._editorComponent .getEditor() .getSession() - .addMarker(new range(position.row, position.column, position.row, position.column + position.length), 'search-marker', 'text') + .addMarker( + new range( + position.row, + position.column, + position.row, + position.column + position.length + ), + 'search-marker', + 'text' + ) ); } } @@ -230,14 +265,21 @@ export class DictionaryManagerComponent implements OnInit, OnChanges { private _onDictionaryChanged(dictionary: TypeValue) { if (dictionary !== this.selectDictionary) { - this._dictionaryControllerService.getDictionaryForType(dictionary.ruleSetId, dictionary.type).subscribe( - (data) => { - this.compareDictionaryEntries = data.entries.sort((str1, str2) => str1.localeCompare(str2, undefined, { sensitivity: 'accent' })); - DictionaryManagerComponent._setEditorValue(this._compareEditorComponent, this.compareDictionaryEntries); - this._syncActiveLines(); - }, - () => {} - ); + this._dictionaryControllerService + .getDictionaryForType(dictionary.ruleSetId, dictionary.type) + .subscribe( + (data) => { + this.compareDictionaryEntries = data.entries.sort((str1, str2) => + str1.localeCompare(str2, undefined, { sensitivity: 'accent' }) + ); + DictionaryManagerComponent._setEditorValue( + this._compareEditorComponent, + this.compareDictionaryEntries + ); + this._syncActiveLines(); + }, + () => {} + ); } } diff --git a/apps/red-ui/src/app/modules/shared/components/empty-state/empty-state.component.html b/apps/red-ui/src/app/modules/shared/components/empty-state/empty-state.component.html index bab3f9c9a..e3154f74e 100644 --- a/apps/red-ui/src/app/modules/shared/components/empty-state/empty-state.component.html +++ b/apps/red-ui/src/app/modules/shared/components/empty-state/empty-state.component.html @@ -1,9 +1,19 @@
- +
diff --git a/apps/red-ui/src/app/modules/shared/components/filter/filter.component.html b/apps/red-ui/src/app/modules/shared/components/filter/filter.component.html index 38b8ae009..924a1d038 100644 --- a/apps/red-ui/src/app/modules/shared/components/filter/filter.component.html +++ b/apps/red-ui/src/app/modules/shared/components/filter/filter.component.html @@ -6,20 +6,44 @@ [text]="filterLabel" > - + - +
-
-
+
+
@@ -28,7 +52,13 @@
@@ -39,29 +69,66 @@ {{ _(filter)?.label }} - +
- + +
+
+  
-
 
- + - +
-
- - +
+ + - +
diff --git a/apps/red-ui/src/app/modules/shared/components/filter/filter.component.ts b/apps/red-ui/src/app/modules/shared/components/filter/filter.component.ts index 41ef4094a..448882d57 100644 --- a/apps/red-ui/src/app/modules/shared/components/filter/filter.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/filter/filter.component.ts @@ -1,4 +1,12 @@ -import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output, TemplateRef } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + EventEmitter, + Input, + OnChanges, + Output, + TemplateRef +} from '@angular/core'; import { FilterModel } from './model/filter.model'; import { handleCheckedValue } from './utils/filter-utils'; import { MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox'; @@ -18,7 +26,10 @@ import { MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox'; ] }) export class FilterComponent implements OnChanges { - @Output() filtersChanged = new EventEmitter<{ primary: FilterModel[]; secondary?: FilterModel[] }>(); + @Output() filtersChanged = new EventEmitter<{ + primary: FilterModel[]; + secondary?: FilterModel[]; + }>(); @Input() filterTemplate: TemplateRef; @Input() actionsTemplate: TemplateRef; @Input() primaryFilters: FilterModel[] = []; @@ -52,10 +63,12 @@ export class FilterComponent implements OnChanges { this.atLeastOneFilterIsExpandable = false; this.atLeastOneSecondaryFilterIsExpandable = false; this.primaryFilters?.forEach((f) => { - this.atLeastOneFilterIsExpandable = this.atLeastOneFilterIsExpandable || this.isExpandable(f); + this.atLeastOneFilterIsExpandable = + this.atLeastOneFilterIsExpandable || this.isExpandable(f); }); this.secondaryFilters?.forEach((f) => { - this.atLeastOneSecondaryFilterIsExpandable = this.atLeastOneSecondaryFilterIsExpandable || this.isExpandable(f); + this.atLeastOneSecondaryFilterIsExpandable = + this.atLeastOneSecondaryFilterIsExpandable || this.isExpandable(f); }); } @@ -85,7 +98,10 @@ export class FilterComponent implements OnChanges { } applyFilters() { - this.filtersChanged.emit({ primary: this.primaryFilters, secondary: this.secondaryFilters }); + this.filtersChanged.emit({ + primary: this.primaryFilters, + secondary: this.secondaryFilters + }); } toggleFilterExpanded($event: MouseEvent, filter: FilterModel) { diff --git a/apps/red-ui/src/app/modules/shared/components/filter/utils/filter-utils.ts b/apps/red-ui/src/app/modules/shared/components/filter/utils/filter-utils.ts index b80a9a7ad..41f6da0dd 100644 --- a/apps/red-ui/src/app/modules/shared/components/filter/utils/filter-utils.ts +++ b/apps/red-ui/src/app/modules/shared/components/filter/utils/filter-utils.ts @@ -13,13 +13,19 @@ export function processFilters(oldFilters: FilterModel[], newFilters: FilterMode return newFilters; } -export function handleFilterDelta(oldFilters: FilterModel[], newFilters: FilterModel[], allFilters: FilterModel[]) { +export function handleFilterDelta( + oldFilters: FilterModel[], + newFilters: FilterModel[], + allFilters: FilterModel[] +) { const newFiltersDelta = {}; for (const newFilter of newFilters) { const oldFilter = oldFilters.find((f) => f.key === newFilter.key); if (!oldFilter || oldFilter.matches !== newFilter.matches) { newFiltersDelta[newFilter.key] = {}; - newFilter.filters.forEach((filter) => (newFiltersDelta[newFilter.key][filter.key] = {})); + newFilter.filters.forEach( + (filter) => (newFiltersDelta[newFilter.key][filter.key] = {}) + ); } if (!oldFilter) { @@ -82,7 +88,13 @@ export function handleCheckedValue(filter: FilterModel) { } } -export function checkFilter(entity: any, filters: FilterModel[], validate: Function, validateArgs: any = [], matchAll: boolean = false) { +export function checkFilter( + entity: any, + filters: FilterModel[], + validate: Function, + validateArgs: any = [], + matchAll: boolean = false +) { const hasChecked = filters.find((f) => f.checked); if (validateArgs) { @@ -110,9 +122,14 @@ export function checkFilter(entity: any, filters: FilterModel[], validate: Funct return filterMatched; } -export const keyChecker = (key: string) => (entity: any, filter: FilterModel) => entity[key] === filter.key; +export const keyChecker = (key: string) => (entity: any, filter: FilterModel) => + entity[key] === filter.key; -export const annotationFilterChecker = (input: FileStatusWrapper | ProjectWrapper, filter: FilterModel, permissionsService: PermissionsService) => { +export const annotationFilterChecker = ( + input: FileStatusWrapper | ProjectWrapper, + filter: FilterModel, + permissionsService: PermissionsService +) => { switch (filter.key) { case 'analysis': { if (input instanceof ProjectWrapper) { @@ -142,22 +159,38 @@ export const annotationFilterChecker = (input: FileStatusWrapper | ProjectWrappe } }; -export const projectStatusChecker = (pw: ProjectWrapper, filter: FilterModel) => pw.hasStatus(filter.key); +export const projectStatusChecker = (pw: ProjectWrapper, filter: FilterModel) => + pw.hasStatus(filter.key); -export const projectMemberChecker = (pw: ProjectWrapper, filter: FilterModel) => pw.hasMember(filter.key); +export const projectMemberChecker = (pw: ProjectWrapper, filter: FilterModel) => + pw.hasMember(filter.key); -export const ruleSetChecker = (pw: ProjectWrapper, filter: FilterModel) => pw.ruleSetId === filter.key; +export const ruleSetChecker = (pw: ProjectWrapper, filter: FilterModel) => + pw.ruleSetId === filter.key; -export const dueDateChecker = (pw: ProjectWrapper, filter: FilterModel) => pw.dueDateMatches(filter.key); +export const dueDateChecker = (pw: ProjectWrapper, filter: FilterModel) => + pw.dueDateMatches(filter.key); -export const addedDateChecker = (pw: ProjectWrapper, filter: FilterModel) => pw.addedDateMatches(filter.key); +export const addedDateChecker = (pw: ProjectWrapper, filter: FilterModel) => + pw.addedDateMatches(filter.key); -export function getFilteredEntities(entities: any[], filters: { values: FilterModel[]; checker: Function; matchAll?: boolean; checkerArgs?: any }[]) { +export function getFilteredEntities( + entities: any[], + filters: { values: FilterModel[]; checker: Function; matchAll?: boolean; checkerArgs?: any }[] +) { const filteredEntities = []; for (const entity of entities) { let add = true; for (const filter of filters) { - add = add && checkFilter(entity, filter.values, filter.checker, filter.checkerArgs, filter.matchAll); + add = + add && + checkFilter( + entity, + filter.values, + filter.checker, + filter.checkerArgs, + filter.matchAll + ); } if (add) { filteredEntities.push(entity); diff --git a/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts b/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts index dd45bb8c7..d81c0fdef 100644 --- a/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts @@ -21,7 +21,10 @@ export class InitialsAvatarComponent implements OnChanges { initials: string; colorClass: string; - constructor(private readonly _userService: UserService, private readonly _translateService: TranslateService) {} + constructor( + private readonly _userService: UserService, + private readonly _translateService: TranslateService + ) {} get hasBorder(): boolean { return !!this.user && !this._isCurrentUser && this._userService.isManager(this.user); diff --git a/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.html b/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.html index 1132b89e6..61fb9d393 100644 --- a/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.html +++ b/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.html @@ -1,7 +1,23 @@ -
+
| -
+
{{ displayValue(page) }}
| -
+
diff --git a/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.ts b/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.ts index 951c66126..b6ce6b86d 100644 --- a/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/pagination/pagination.component.ts @@ -50,7 +50,11 @@ export class PaginationComponent { if (Math.max(1, this.currentPage - 1) > 1) { this.displayedPages.push('...'); } - for (let page = Math.max(1, this.currentPage - 1); page <= Math.min(this.currentPage + 1, this.totalPages - 1); ++page) { + for ( + let page = Math.max(1, this.currentPage - 1); + page <= Math.min(this.currentPage + 1, this.totalPages - 1); + ++page + ) { this.displayedPages.push(page); } if (Math.min(this.currentPage + 1, this.totalPages - 1) !== this.totalPages - 1) { diff --git a/apps/red-ui/src/app/modules/shared/components/search-input/search-input.component.html b/apps/red-ui/src/app/modules/shared/components/search-input/search-input.component.html index f1fc3a100..3fb32e84f 100644 --- a/apps/red-ui/src/app/modules/shared/components/search-input/search-input.component.html +++ b/apps/red-ui/src/app/modules/shared/components/search-input/search-input.component.html @@ -1,7 +1,18 @@
- + - +
diff --git a/apps/red-ui/src/app/modules/shared/components/select/select.component.html b/apps/red-ui/src/app/modules/shared/components/select/select.component.html index 3422357e2..647a68aef 100644 --- a/apps/red-ui/src/app/modules/shared/components/select/select.component.html +++ b/apps/red-ui/src/app/modules/shared/components/select/select.component.html @@ -1,13 +1,26 @@
{{ label }}
-
-
+
+
- + {{ translatePrefix + option | translate }} diff --git a/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.html b/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.html index 6ebc25363..709f2f4f5 100644 --- a/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.html +++ b/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.html @@ -1,5 +1,11 @@
- + -
+
{{ displayedDataTotal }}
{{ subtitle | translate }}
-
+
-
+
- -
+ +
diff --git a/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.html b/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.html index cb48ba6d0..a39da3077 100644 --- a/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.html +++ b/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.html @@ -4,17 +4,32 @@
-

+

- + diff --git a/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.ts b/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.ts index 7f578339e..aa505a42e 100644 --- a/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/shared/dialogs/confirmation-dialog/confirmation-dialog.component.ts @@ -12,9 +12,11 @@ export class ConfirmationDialogInput { constructor(options: ConfirmationDialogInput) { this.title = options.title || ConfirmationDialogInput.default().title; this.question = options.question || ConfirmationDialogInput.default().question; - this.confirmationText = options.confirmationText || ConfirmationDialogInput.default().confirmationText; + this.confirmationText = + options.confirmationText || ConfirmationDialogInput.default().confirmationText; this.denyText = options.denyText || ConfirmationDialogInput.default().denyText; - this.translateParams = options.translateParams || ConfirmationDialogInput.default().translateParams; + this.translateParams = + options.translateParams || ConfirmationDialogInput.default().translateParams; } static default() { diff --git a/apps/red-ui/src/app/modules/shared/directives/has-scrollbar.directive.ts b/apps/red-ui/src/app/modules/shared/directives/has-scrollbar.directive.ts index d0c832652..8fb57ac82 100644 --- a/apps/red-ui/src/app/modules/shared/directives/has-scrollbar.directive.ts +++ b/apps/red-ui/src/app/modules/shared/directives/has-scrollbar.directive.ts @@ -10,7 +10,10 @@ export class HasScrollbarDirective implements AfterContentChecked { constructor(private readonly _elementRef: ElementRef) {} get hasScrollbar() { - return this._elementRef?.nativeElement.clientHeight < this._elementRef?.nativeElement.scrollHeight; + return ( + this._elementRef?.nativeElement.clientHeight < + this._elementRef?.nativeElement.scrollHeight + ); } ngAfterContentChecked() { diff --git a/apps/red-ui/src/app/modules/shared/directives/sync-width.directive.ts b/apps/red-ui/src/app/modules/shared/directives/sync-width.directive.ts index 495cbeb5e..0f1b5f46b 100644 --- a/apps/red-ui/src/app/modules/shared/directives/sync-width.directive.ts +++ b/apps/red-ui/src/app/modules/shared/directives/sync-width.directive.ts @@ -1,4 +1,11 @@ -import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core'; +import { + AfterViewInit, + Directive, + ElementRef, + HostListener, + Input, + OnDestroy +} from '@angular/core'; import { debounce } from '@utils/debounce'; @Directive({ @@ -25,7 +32,9 @@ export class SyncWidthDirective implements AfterViewInit, OnDestroy { @debounce(10) matchWidth() { const headerItems = this._elementRef.nativeElement.children; - const tableRows = this._elementRef.nativeElement.parentElement.getElementsByClassName(this.redactionSyncWidth); + const tableRows = this._elementRef.nativeElement.parentElement.getElementsByClassName( + this.redactionSyncWidth + ); if (!tableRows || !tableRows.length) { return; @@ -39,8 +48,12 @@ export class SyncWidthDirective implements AfterViewInit, OnDestroy { for (let idx = 0; idx < length - hasExtraColumns - 1; ++idx) { if (headerItems[idx]) { - headerItems[idx].style.width = `${tableRow.children[idx].getBoundingClientRect().width}px`; - headerItems[idx].style.minWidth = `${tableRow.children[idx].getBoundingClientRect().width}px`; + headerItems[idx].style.width = `${ + tableRow.children[idx].getBoundingClientRect().width + }px`; + headerItems[idx].style.minWidth = `${ + tableRow.children[idx].getBoundingClientRect().width + }px`; } } @@ -56,7 +69,10 @@ export class SyncWidthDirective implements AfterViewInit, OnDestroy { this.matchWidth(); } - private _sampleRow(tableRows: HTMLCollectionOf): { tableRow: Element; length: number } { + private _sampleRow(tableRows: HTMLCollectionOf): { + tableRow: Element; + length: number; + } { let length = 0; let tableRow: Element; diff --git a/apps/red-ui/src/app/modules/shared/services/dictionary-save.service.ts b/apps/red-ui/src/app/modules/shared/services/dictionary-save.service.ts index cda79686d..934d4d5a7 100644 --- a/apps/red-ui/src/app/modules/shared/services/dictionary-save.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/dictionary-save.service.ts @@ -17,7 +17,14 @@ export class DictionarySaveService { private readonly _dictionaryControllerService: DictionaryControllerService ) {} - saveEntries(entries: string[], initialEntries: string[], ruleSetId: string, type: string, dossierId: string, showToast = true): Observable { + saveEntries( + entries: string[], + initialEntries: string[], + ruleSetId: string, + type: string, + dossierId: string, + showToast = true + ): Observable { let entriesToAdd = []; entries.forEach((currentEntry) => { entriesToAdd.push(currentEntry); @@ -29,9 +36,20 @@ export class DictionarySaveService { // can add at least 1 - block UI let obs: Observable; if (entriesToAdd.length > 0) { - obs = this._dictionaryControllerService.addEntry(entriesToAdd, ruleSetId, type, dossierId, true); + obs = this._dictionaryControllerService.addEntry( + entriesToAdd, + ruleSetId, + type, + dossierId, + true + ); } else { - obs = this._dictionaryControllerService.deleteEntries(initialEntries, ruleSetId, type, dossierId); + obs = this._dictionaryControllerService.deleteEntries( + initialEntries, + ruleSetId, + type, + dossierId + ); } return obs.pipe( @@ -39,7 +57,9 @@ export class DictionarySaveService { () => { if (showToast) { this._notificationService.showToastNotification( - this._translateService.instant('dictionary-overview.success.generic'), + this._translateService.instant( + 'dictionary-overview.success.generic' + ), null, NotificationType.SUCCESS ); diff --git a/apps/red-ui/src/app/modules/shared/shared.module.ts b/apps/red-ui/src/app/modules/shared/shared.module.ts index 6a1746c8f..f9cee8881 100644 --- a/apps/red-ui/src/app/modules/shared/shared.module.ts +++ b/apps/red-ui/src/app/modules/shared/shared.module.ts @@ -36,7 +36,13 @@ import { DictionaryManagerComponent } from './components/dictionary-manager/dict import { AceEditorModule } from 'ng2-ace-editor'; import { SideNavComponent } from '@shared/components/side-nav/side-nav.component'; -const buttons = [ChevronButtonComponent, CircleButtonComponent, FileDownloadBtnComponent, IconButtonComponent, UserButtonComponent]; +const buttons = [ + ChevronButtonComponent, + CircleButtonComponent, + FileDownloadBtnComponent, + IconButtonComponent, + UserButtonComponent +]; const components = [ FullPageLoadingIndicatorComponent, @@ -60,9 +66,21 @@ const components = [ ...buttons ]; -const utils = [HumanizePipe, SyncWidthDirective, HasScrollbarDirective, NavigateLastProjectsScreenDirective]; +const utils = [ + HumanizePipe, + SyncWidthDirective, + HasScrollbarDirective, + NavigateLastProjectsScreenDirective +]; -const modules = [MatConfigModule, TranslateModule, ScrollingModule, IconsModule, FormsModule, ReactiveFormsModule]; +const modules = [ + MatConfigModule, + TranslateModule, + ScrollingModule, + IconsModule, + FormsModule, + ReactiveFormsModule +]; @NgModule({ declarations: [...components, ...utils, DictionaryManagerComponent], diff --git a/apps/red-ui/src/app/modules/upload-download/dialogs/overwrite-files-dialog/overwrite-files-dialog.component.html b/apps/red-ui/src/app/modules/upload-download/dialogs/overwrite-files-dialog/overwrite-files-dialog.component.html index bdfaead61..0cc5b1431 100644 --- a/apps/red-ui/src/app/modules/upload-download/dialogs/overwrite-files-dialog/overwrite-files-dialog.component.html +++ b/apps/red-ui/src/app/modules/upload-download/dialogs/overwrite-files-dialog/overwrite-files-dialog.component.html @@ -4,14 +4,32 @@

- + {{ 'overwrite-files-dialog.options.remember' | translate }}
- - -
+ + +
diff --git a/apps/red-ui/src/app/modules/upload-download/file-upload-download.module.ts b/apps/red-ui/src/app/modules/upload-download/file-upload-download.module.ts index e045fab1e..feb65ed38 100644 --- a/apps/red-ui/src/app/modules/upload-download/file-upload-download.module.ts +++ b/apps/red-ui/src/app/modules/upload-download/file-upload-download.module.ts @@ -15,7 +15,13 @@ import { FileDropOverlayService } from './services/file-drop-overlay.service'; imports: [CommonModule, SharedModule, OverlayModule], declarations: [FileDropComponent, UploadStatusOverlayComponent, OverwriteFilesDialogComponent], entryComponents: [FileDropComponent, UploadStatusOverlayComponent], - providers: [UploadDownloadDialogService, FileUploadService, FileDownloadService, StatusOverlayService, FileDropOverlayService], + providers: [ + UploadDownloadDialogService, + FileUploadService, + FileDownloadService, + StatusOverlayService, + FileDropOverlayService + ], exports: [FileDropComponent, UploadStatusOverlayComponent] }) export class FileUploadDownloadModule {} diff --git a/apps/red-ui/src/app/modules/upload-download/model/download-status.wrapper.ts b/apps/red-ui/src/app/modules/upload-download/model/download-status.wrapper.ts index 973e43f94..28cd99f95 100644 --- a/apps/red-ui/src/app/modules/upload-download/model/download-status.wrapper.ts +++ b/apps/red-ui/src/app/modules/upload-download/model/download-status.wrapper.ts @@ -6,8 +6,15 @@ export class DownloadStatusWrapper { constructor(private _downloadStatus: DownloadStatus) {} get size() { - const i = this._downloadStatus.fileSize === 0 ? 0 : Math.floor(Math.log(this._downloadStatus.fileSize) / Math.log(1024)); - return (this._downloadStatus.fileSize / Math.pow(1024, i)).toFixed(2) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; + const i = + this._downloadStatus.fileSize === 0 + ? 0 + : Math.floor(Math.log(this._downloadStatus.fileSize) / Math.log(1024)); + return ( + (this._downloadStatus.fileSize / Math.pow(1024, i)).toFixed(2) + + ' ' + + ['B', 'kB', 'MB', 'GB', 'TB'][i] + ); } get creationDate() { diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-download.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-download.service.ts index 82fdb953c..7608696b9 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-download.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-download.service.ts @@ -34,12 +34,19 @@ export class FileDownloadService { }); } - downloadFiles(fileStatusWrappers: FileStatusWrapper[], project: ProjectWrapper): Observable { + downloadFiles( + fileStatusWrappers: FileStatusWrapper[], + project: ProjectWrapper + ): Observable { return this._downloadControllerService .prepareDownload({ fileIds: fileStatusWrappers.map((f) => f.fileId), projectId: project.projectId, - reportTypes: ['WORD_SINGLE_FILE_EFSA_TEMPLATE', 'WORD_SINGLE_FILE_SYNGENTA_TEMPLATE', 'EXCEL_MULTI_FILE'], + reportTypes: [ + 'WORD_SINGLE_FILE_EFSA_TEMPLATE', + 'WORD_SINGLE_FILE_SYNGENTA_TEMPLATE', + 'EXCEL_MULTI_FILE' + ], downloadFileTypes: ['PREVIEW', 'REDACTED'] }) .pipe(mergeMap(() => this.getDownloadStatus())); @@ -48,8 +55,12 @@ export class FileDownloadService { getDownloadStatus() { return this._downloadControllerService.getDownloadStatus().pipe( tap((statusResponse) => { - this.downloads = statusResponse.downloadStatus.map((d) => new DownloadStatusWrapper(d)); - this.hasPendingDownloads = !!this.downloads.find((f) => !f.lastDownload && f.isReady); + this.downloads = statusResponse.downloadStatus.map( + (d) => new DownloadStatusWrapper(d) + ); + this.hasPendingDownloads = !!this.downloads.find( + (f) => !f.lastDownload && f.isReady + ); }) ); } diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-drop-overlay.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-drop-overlay.service.ts index 8783d5b24..849c0e596 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-drop-overlay.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-drop-overlay.service.ts @@ -42,15 +42,25 @@ export class FileDropOverlayService { }; initFileDropHandling() { - document.getElementsByTagName('body')[0].addEventListener('dragenter', this.dragListener, false); - document.getElementsByTagName('body')[0].addEventListener('mouseenter', this.mouseIn, false); + document + .getElementsByTagName('body')[0] + .addEventListener('dragenter', this.dragListener, false); + document + .getElementsByTagName('body')[0] + .addEventListener('mouseenter', this.mouseIn, false); document.getElementsByTagName('body')[0].addEventListener('mouseout', this.mouseOut, false); } cleanupFileDropHandling() { - document.getElementsByTagName('body')[0].removeEventListener('dragenter', this.dragListener, false); - document.getElementsByTagName('body')[0].removeEventListener('mouseenter', this.mouseIn, false); - document.getElementsByTagName('body')[0].removeEventListener('mouseout', this.mouseOut, false); + document + .getElementsByTagName('body')[0] + .removeEventListener('dragenter', this.dragListener, false); + document + .getElementsByTagName('body')[0] + .removeEventListener('mouseenter', this.mouseIn, false); + document + .getElementsByTagName('body')[0] + .removeEventListener('mouseout', this.mouseOut, false); } openFileDropOverlay() { diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts index 1329b6f0a..3b8e44ad6 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts @@ -38,7 +38,9 @@ export class FileUploadService { } get activeProjectKeys() { - return Object.keys(this.groupedFiles).filter((projectId) => this.groupedFiles[projectId].length > 0); + return Object.keys(this.groupedFiles).filter( + (projectId) => this.groupedFiles[projectId].length > 0 + ); } scheduleUpload(item: FileUploadModel) { @@ -76,7 +78,11 @@ export class FileUploadService { } if (file.size > maxSizeBytes) { file.completed = true; - file.error = { message: this._translateService.instant('upload-status.error.file-size', { size: maxSizeMB }) }; + file.error = { + message: this._translateService.instant('upload-status.error.file-size', { + size: maxSizeMB + }) + }; file.sizeError = true; } } @@ -124,14 +130,20 @@ export class FileUploadService { } private _handleUploads() { - if (this._activeUploads.length < FileUploadService.MAX_PARALLEL_UPLOADS && this._pendingUploads.length > 0) { + if ( + this._activeUploads.length < FileUploadService.MAX_PARALLEL_UPLOADS && + this._pendingUploads.length > 0 + ) { let cnt = FileUploadService.MAX_PARALLEL_UPLOADS - this._activeUploads.length; while (cnt > 0) { cnt--; const poppedFileUploadModel = this._pendingUploads.shift(); if (poppedFileUploadModel) { const subscription = this._createSubscription(poppedFileUploadModel); - this._activeUploads.push({ subscription: subscription, fileUploadModel: poppedFileUploadModel }); + this._activeUploads.push({ + subscription: subscription, + fileUploadModel: poppedFileUploadModel + }); } else { return; } @@ -141,11 +153,18 @@ export class FileUploadService { private _createSubscription(uploadFile: FileUploadModel) { this.activeUploads++; - const obs = this._fileManagementControllerService.uploadFileForm(uploadFile.file, uploadFile.projectId, 'events', true); + const obs = this._fileManagementControllerService.uploadFileForm( + uploadFile.file, + uploadFile.projectId, + 'events', + true + ); const subscription = obs.subscribe( async (event) => { if (event.type === HttpEventType.UploadProgress) { - uploadFile.progress = Math.round((event.loaded / (event.total || event.loaded)) * 100); + uploadFile.progress = Math.round( + (event.loaded / (event.total || event.loaded)) * 100 + ); this._applicationRef.tick(); } if (event.type === HttpEventType.Response) { @@ -154,7 +173,9 @@ export class FileUploadService { uploadFile.completed = true; } else { uploadFile.completed = true; - uploadFile.error = { message: this._translateService.instant('upload-status.error.generic') }; + uploadFile.error = { + message: this._translateService.instant('upload-status.error.generic') + }; } this._removeUpload(uploadFile); await this._appStateService.reloadActiveProjectFiles(); @@ -162,7 +183,9 @@ export class FileUploadService { }, () => { uploadFile.completed = true; - uploadFile.error = { message: this._translateService.instant('upload-status.error.generic') }; + uploadFile.error = { + message: this._translateService.instant('upload-status.error.generic') + }; this._removeUpload(uploadFile); if (uploadFile.retryCount < 5) { uploadFile.retryCount += 1; diff --git a/apps/red-ui/src/app/modules/upload-download/services/status-overlay.service.ts b/apps/red-ui/src/app/modules/upload-download/services/status-overlay.service.ts index 2bd7148bd..091c8425b 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/status-overlay.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/status-overlay.service.ts @@ -12,7 +12,11 @@ export class StatusOverlayService { } openUploadStatusOverlay() { - const component = new ComponentPortal(UploadStatusOverlayComponent, null, this._createUploadInjector()); + const component = new ComponentPortal( + UploadStatusOverlayComponent, + null, + this._createUploadInjector() + ); if (!this._uploadStatusOverlayRef.hasAttached()) { this._uploadStatusOverlayRef.attach(component); } diff --git a/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts b/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts index 686f04943..705cd75ab 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts @@ -12,7 +12,9 @@ const dialogConfig = { export class UploadDownloadDialogService { constructor(private readonly _dialog: MatDialog) {} - openOverwriteFileDialog(filename: string): Promise<{ option?: 'overwrite' | 'skip'; remember?: boolean; cancel?: boolean }> { + openOverwriteFileDialog( + filename: string + ): Promise<{ option?: 'overwrite' | 'skip'; remember?: boolean; cancel?: boolean }> { const ref = this._dialog.open(OverwriteFilesDialogComponent, { ...dialogConfig, data: filename diff --git a/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.html b/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.html index 5d95c9694..37189cd38 100644 --- a/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.html +++ b/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.html @@ -1,17 +1,30 @@
-
+
{{ 'upload-status.dialog.title' | translate: { len: uploadService.files.length } }}
- - + +
{{ uploadService.groupedFiles[projectId][0].projectName }}
-
+
- +
-
+
{ diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index 654e7f2ab..e8673ba68 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -9,7 +9,10 @@ import { ProjectWrapper } from '@state/model/project.wrapper'; providedIn: 'root' }) export class PermissionsService { - constructor(private readonly _appStateService: AppStateService, private _userService: UserService) {} + constructor( + private readonly _appStateService: AppStateService, + private _userService: UserService + ) {} get currentUser() { return this._userService.user; @@ -44,8 +47,11 @@ export class PermissionsService { return false; } return ( - ((fileStatus.status === 'UNASSIGNED' || fileStatus.status === 'UNDER_REVIEW' || fileStatus.status === 'UNDER_APPROVAL') && - (!this._appStateService.fileIsUpToDateWithLatestVersions(fileStatus) || fileStatus.hasUnappliedSuggestions)) || + ((fileStatus.status === 'UNASSIGNED' || + fileStatus.status === 'UNDER_REVIEW' || + fileStatus.status === 'UNDER_APPROVAL') && + (!this._appStateService.fileIsUpToDateWithLatestVersions(fileStatus) || + fileStatus.hasUnappliedSuggestions)) || fileStatus.isError ); } @@ -57,7 +63,10 @@ export class PermissionsService { if (!project) { return false; } - return this.isApprover(project) && project.files.filter((file) => this.fileRequiresReanalysis(file)).length > 0; + return ( + this.isApprover(project) && + project.files.filter((file) => this.fileRequiresReanalysis(file)).length > 0 + ); } canReanalyseFile(fileStatus?: FileStatusWrapper) { @@ -68,7 +77,8 @@ export class PermissionsService { return false; } return ( - (this.fileRequiresReanalysis(fileStatus) && (this.isReviewerOrApprover(fileStatus) || fileStatus.isUnassigned)) || + (this.fileRequiresReanalysis(fileStatus) && + (this.isReviewerOrApprover(fileStatus) || fileStatus.isUnassigned)) || (fileStatus.isError && fileStatus.isUnassigned) ); } @@ -105,7 +115,12 @@ export class PermissionsService { return false; } - const precondition = this.isProjectMember() && !fileStatus.isProcessing && !fileStatus.isError && !fileStatus.isExcluded && !fileStatus.isApproved; + const precondition = + this.isProjectMember() && + !fileStatus.isProcessing && + !fileStatus.isError && + !fileStatus.isExcluded && + !fileStatus.isApproved; if (precondition) { if ((fileStatus.isUnassigned || fileStatus.isUnderReview) && !this.isApprover()) { return true; @@ -123,13 +138,25 @@ export class PermissionsService { } const precondition = - this.isProjectMember() && !fileStatus.isProcessing && !fileStatus.isError && !fileStatus.isExcluded && !fileStatus.isApproved && this.isApprover(); + this.isProjectMember() && + !fileStatus.isProcessing && + !fileStatus.isError && + !fileStatus.isExcluded && + !fileStatus.isApproved && + this.isApprover(); if (precondition) { - if ((fileStatus.isUnassigned || fileStatus.isUnderReview) && this._appStateService.activeProject.hasMoreThanOneReviewer) { + if ( + (fileStatus.isUnassigned || fileStatus.isUnderReview) && + this._appStateService.activeProject.hasMoreThanOneReviewer + ) { return true; } - if (fileStatus.isUnderApproval && this.isApprover() && this._appStateService.activeProject.hasMoreThanOneApprover) { + if ( + fileStatus.isUnderApproval && + this.isApprover() && + this._appStateService.activeProject.hasMoreThanOneApprover + ) { return true; } } @@ -163,7 +190,11 @@ export class PermissionsService { if (!fileStatus) { return false; } - return !fileStatus.hasRequests && !fileStatus.hasUnappliedSuggestions && this._appStateService.fileIsUpToDateWithLatestVersions(fileStatus); + return ( + !fileStatus.hasRequests && + !fileStatus.hasUnappliedSuggestions && + this._appStateService.fileIsUpToDateWithLatestVersions(fileStatus) + ); } canSetUnderApproval(fileStatus?: FileStatusWrapper) { @@ -222,7 +253,10 @@ export class PermissionsService { if (!fileStatus) { return false; } - return (fileStatus.status === 'UNDER_APPROVAL' || fileStatus.status === 'UNDER_REVIEW') && this.isFileReviewer(fileStatus); + return ( + (fileStatus.status === 'UNDER_APPROVAL' || fileStatus.status === 'UNDER_REVIEW') && + this.isFileReviewer(fileStatus) + ); } canOpenFile(fileStatus: FileStatusWrapper) { @@ -232,7 +266,7 @@ export class PermissionsService { if (!fileStatus) { return false; } - return !fileStatus.isError && !fileStatus.isProcessing && !fileStatus.isPending; //&& this.isReviewerOrOwner(fileStatus); + return !fileStatus.isError && !fileStatus.isProcessing && !fileStatus.isPending; } canUndoApproval(fileStatus: FileStatusWrapper) { @@ -262,7 +296,10 @@ export class PermissionsService { if (!fileStatus) { return false; } - return (fileStatus.status === 'UNDER_REVIEW' || fileStatus.status === 'UNDER_APPROVAL') && this.isFileReviewer(fileStatus); + return ( + (fileStatus.status === 'UNDER_REVIEW' || fileStatus.status === 'UNDER_APPROVAL') && + this.isFileReviewer(fileStatus) + ); } canDownloadRedactedFile(fileStatus: FileStatusWrapper) { @@ -326,7 +363,12 @@ export class PermissionsService { if (!fileStatus) { return false; } - return !fileStatus.ocrTime && (fileStatus.status === 'UNASSIGNED' || fileStatus.status === 'UNDER_REVIEW' || fileStatus.status === 'UNDER_APPROVAL'); + return ( + !fileStatus.ocrTime && + (fileStatus.status === 'UNASSIGNED' || + fileStatus.status === 'UNDER_REVIEW' || + fileStatus.status === 'UNDER_APPROVAL') + ); } canManageUsers(user?: UserWrapper) { diff --git a/apps/red-ui/src/app/services/router-history.service.ts b/apps/red-ui/src/app/services/router-history.service.ts index 8eee3e7ff..4daac8afc 100644 --- a/apps/red-ui/src/app/services/router-history.service.ts +++ b/apps/red-ui/src/app/services/router-history.service.ts @@ -9,11 +9,13 @@ export class RouterHistoryService { private _lastProjectsScreen = '/main/projects'; constructor(private readonly _router: Router) { - this._router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => { - if (event.url.startsWith('/main/projects')) { - this._lastProjectsScreen = event.url; - } - }); + this._router.events + .pipe(filter((event) => event instanceof NavigationEnd)) + .subscribe((event: NavigationEnd) => { + if (event.url.startsWith('/main/projects')) { + this._lastProjectsScreen = event.url; + } + }); } navigateToLastProjectsScreen() { diff --git a/apps/red-ui/src/app/services/sorting.service.ts b/apps/red-ui/src/app/services/sorting.service.ts index cccd17686..a1848880e 100644 --- a/apps/red-ui/src/app/services/sorting.service.ts +++ b/apps/red-ui/src/app/services/sorting.service.ts @@ -5,7 +5,13 @@ export class SortingOption { column: string; } -export type ScreenName = 'project-listing' | 'project-overview' | 'dictionary-listing' | 'rule-sets-listing' | 'default-colors' | 'file-attributes-listing'; +export type ScreenName = + | 'project-listing' + | 'project-overview' + | 'dictionary-listing' + | 'rule-sets-listing' + | 'default-colors' + | 'file-attributes-listing'; @Injectable({ providedIn: 'root' diff --git a/apps/red-ui/src/app/services/user.service.ts b/apps/red-ui/src/app/services/user.service.ts index 7454b9f8c..27bc9295a 100644 --- a/apps/red-ui/src/app/services/user.service.ts +++ b/apps/red-ui/src/app/services/user.service.ts @@ -75,7 +75,9 @@ export class UserService { } get eligibleUsers(): User[] { - return this._allUsers.filter((u) => u.roles.indexOf('RED_USER') >= 0 || u.roles.indexOf('RED_MANAGER') >= 0); + return this._allUsers.filter( + (u) => u.roles.indexOf('RED_USER') >= 0 || u.roles.indexOf('RED_MANAGER') >= 0 + ); } get user() { @@ -103,7 +105,11 @@ export class UserService { const token = await this._keycloakService.getToken(); const decoded = jwt_decode(token) as any; const userId = decoded.sub; - this._currentUser = new UserWrapper(await this._keycloakService.loadUserProfile(false), this._keycloakService.getUserRoles(true), userId); + this._currentUser = new UserWrapper( + await this._keycloakService.loadUserProfile(false), + this._keycloakService.getUserRoles(true), + userId + ); } getUserById(id: string) { @@ -115,7 +121,11 @@ export class UserService { } getName(user?: User) { - return user ? (user.firstName && user.lastName ? `${user.firstName} ${user.lastName}` : user.username) : undefined; + return user + ? user.firstName && user.lastName + ? `${user.firstName} ${user.lastName}` + : user.username + : undefined; } isManager(user?: User): boolean { diff --git a/apps/red-ui/src/app/state/app-state.guard.ts b/apps/red-ui/src/app/state/app-state.guard.ts index d6853bc96..e9912a4d0 100644 --- a/apps/red-ui/src/app/state/app-state.guard.ts +++ b/apps/red-ui/src/app/state/app-state.guard.ts @@ -7,7 +7,11 @@ import { UserService } from '@services/user.service'; providedIn: 'root' }) export class AppStateGuard implements CanActivate { - constructor(private readonly _appStateService: AppStateService, private readonly _userService: UserService, private readonly _router: Router) {} + constructor( + private readonly _appStateService: AppStateService, + private readonly _userService: UserService, + private readonly _router: Router + ) {} async canActivate(route: ActivatedRouteSnapshot): Promise { if (this._userService.user.isUserAdmin) { diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts index 84b11914c..fab9e8322 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -122,7 +122,9 @@ export class AppStateService { } get activeDictionary(): TypeValue { - return this.activeRuleSetId && this.dictionaryData[this.activeRuleSetId] ? this.dictionaryData[this.activeRuleSetId][this.activeDictionaryType] : null; + return this.activeRuleSetId && this.dictionaryData[this.activeRuleSetId] + ? this.dictionaryData[this.activeRuleSetId][this.activeDictionaryType] + : null; } get activeProjectId(): string { @@ -162,15 +164,27 @@ export class AppStateService { } private static _isFileOverviewRoute(event: Event) { - return event instanceof ResolveStart && event.url.includes('/main/projects/') && event.url.includes('/file/'); + return ( + event instanceof ResolveStart && + event.url.includes('/main/projects/') && + event.url.includes('/file/') + ); } private static _isProjectOverviewRoute(event: Event) { - return event instanceof ResolveStart && event.url.includes('/main/projects/') && !event.url.includes('/file/'); + return ( + event instanceof ResolveStart && + event.url.includes('/main/projects/') && + !event.url.includes('/file/') + ); } private static _isRandomRoute(event: Event) { - return event instanceof NavigationEnd && !event.url.includes('/main/projects/') && !event.url.includes('/file/'); + return ( + event instanceof NavigationEnd && + !event.url.includes('/main/projects/') && + !event.url.includes('/file/') + ); } async reloadActiveProjectFilesIfNecessary() { @@ -192,7 +206,8 @@ export class AppStateService { return ( fileStatus.dictionaryVersion === this._dictionaryVersion(ruleSetId) && fileStatus.rulesVersion === this._rulesVersion(ruleSetId) && - (!project.dictionaryVersion || fileStatus.dossierDictionaryVersion === project.dictionaryVersion) + (!project.dictionaryVersion || + fileStatus.dossierDictionaryVersion === project.dictionaryVersion) ); } @@ -254,9 +269,13 @@ export class AppStateService { async loadAllProjects(emitEvents: boolean = true) { const projects = await this._projectControllerService.getProjects().toPromise(); if (projects) { - const mappedProjects = projects.map((p) => new ProjectWrapper(p, this._getExistingFiles(p.projectId))); + const mappedProjects = projects.map( + (p) => new ProjectWrapper(p, this._getExistingFiles(p.projectId)) + ); - const fileData = await this._statusControllerService.getFileStatusForProjects(mappedProjects.map((p) => p.projectId)).toPromise(); + const fileData = await this._statusControllerService + .getFileStatusForProjects(mappedProjects.map((p) => p.projectId)) + .toPromise(); for (const projectId of Object.keys(fileData)) { const project = mappedProjects.find((p) => p.projectId === projectId); @@ -275,7 +294,9 @@ export class AppStateService { return null; } const oldProcessedDate = this.activeFile.lastProcessed; - const activeFile = await this._statusControllerService.getFileStatus(this.activeProjectId, this.activeFileId).toPromise(); + const activeFile = await this._statusControllerService + .getFileStatus(this.activeProjectId, this.activeFileId) + .toPromise(); const activeFileWrapper = new FileStatusWrapper( activeFile, @@ -283,7 +304,9 @@ export class AppStateService { this.activeProject.ruleSetId, this._appState.fileAttributesConfig[this.activeProject.ruleSetId] ); - this.activeProject.files = this.activeProject.files.map((file) => (file.fileId === activeFileWrapper.fileId ? activeFileWrapper : file)); + this.activeProject.files = this.activeProject.files.map((file) => + file.fileId === activeFileWrapper.fileId ? activeFileWrapper : file + ); await this.updateDictionaryVersion(); this._computeStats(); @@ -298,7 +321,9 @@ export class AppStateService { if (!project) { project = this.activeProject; } - const files = await this._statusControllerService.getProjectStatus(project.projectId).toPromise(); + const files = await this._statusControllerService + .getProjectStatus(project.projectId) + .toPromise(); return this._processFiles(project, files, emitEvents); } @@ -324,18 +349,21 @@ export class AppStateService { updateProjectDictionary(ruleSetId: string, projectId: string) { // project exists, load it's dictionary - this._dictionaryControllerService.getDictionaryForType(ruleSetId, 'dossier_redaction', projectId).subscribe( - (typeData) => { - this.activeProject.type = typeData; - }, - () => { - this.activeProject.type = null; - } - ); + this._dictionaryControllerService + .getDictionaryForType(ruleSetId, 'dossier_redaction', projectId) + .subscribe( + (typeData) => { + this.activeProject.type = typeData; + }, + () => { + this.activeProject.type = null; + } + ); } activateFile(projectId: string, fileId: string) { - if (this._appState.activeProjectId === projectId && this._appState.activeFileId === fileId) return; + if (this._appState.activeProjectId === projectId && this._appState.activeFileId === fileId) + return; this.activateProject(projectId); if (this.activeProject) { this._appState.activeFileId = fileId; @@ -379,7 +407,9 @@ export class AppStateService { .toPromise() .then( () => { - const index = this._appState.projects.findIndex((p) => p.project.projectId === project.projectId); + const index = this._appState.projects.findIndex( + (p) => p.project.projectId === project.projectId + ); this._appState.projects.splice(index, 1); this._appState.projects = [...this._appState.projects]; }, @@ -395,8 +425,12 @@ export class AppStateService { async addOrUpdateProject(project: Project) { try { - const updatedProject = await this._projectControllerService.createOrUpdateProject(project).toPromise(); - let foundProject = this._appState.projects.find((p) => p.project.projectId === updatedProject.projectId); + const updatedProject = await this._projectControllerService + .createOrUpdateProject(project) + .toPromise(); + let foundProject = this._appState.projects.find( + (p) => p.project.projectId === updatedProject.projectId + ); if (foundProject) { Object.assign((foundProject.project = updatedProject)); } else { @@ -407,7 +441,11 @@ export class AppStateService { return foundProject; } catch (error) { this._notificationService.showToastNotification( - this._translateService.instant(error.status === 409 ? 'add-project-dialog.errors.project-already-exists' : 'add-project-dialog.errors.generic'), + this._translateService.instant( + error.status === 409 + ? 'add-project-dialog.errors.project-already-exists' + : 'add-project-dialog.errors.generic' + ), null, NotificationType.ERROR ); @@ -421,13 +459,16 @@ export class AppStateService { } async loadAllRuleSets() { - this._appState.ruleSets = await this._ruleSetControllerService.getAllRuleSets1().toPromise(); + this._appState.ruleSets = await this._ruleSetControllerService + .getAllRuleSets1() + .toPromise(); this._appState.fileAttributesConfig = {}; for (const ruleSet of this._appState.ruleSets) { - this._appState.fileAttributesConfig[ruleSet.ruleSetId] = await this._fileAttributesService - .getFileAttributesConfiguration(ruleSet.ruleSetId) - .pipe(catchError(() => of({}))) - .toPromise(); + this._appState.fileAttributesConfig[ruleSet.ruleSetId] = + await this._fileAttributesService + .getFileAttributesConfiguration(ruleSet.ruleSetId) + .pipe(catchError(() => of({}))) + .toPromise(); } } @@ -451,7 +492,10 @@ export class AppStateService { } } - getDictionaryDataForRuleSetObservables(ruleSetId: string, dictionaryData: { [key: string]: any }): Observable[] { + getDictionaryDataForRuleSetObservables( + ruleSetId: string, + dictionaryData: { [key: string]: any } + ): Observable[] { const typeObs = this._dictionaryControllerService.getAllTypes(ruleSetId).pipe( tap((typesResponse) => { for (const type of typesResponse.types) { @@ -594,7 +638,12 @@ export class AppStateService { for (const ruleSet of this.ruleSets) { obj[ruleSet.ruleSetId] = {}; - observables.push(...this.getDictionaryDataForRuleSetObservables(ruleSet.ruleSetId, obj[ruleSet.ruleSetId])); + observables.push( + ...this.getDictionaryDataForRuleSetObservables( + ruleSet.ruleSetId, + obj[ruleSet.ruleSetId] + ) + ); } await forkJoin(observables).toPromise(); @@ -603,7 +652,9 @@ export class AppStateService { async updateDictionaryVersion() { const ruleSetIds = this.ruleSets.map((rs) => rs.ruleSetId); - this._appState.versions = await this._versionsControllerService.getVersions(ruleSetIds).toPromise(); + this._appState.versions = await this._versionsControllerService + .getVersions(ruleSetIds) + .toPromise(); } updateProjectDictionaryVersions() { @@ -614,7 +665,9 @@ export class AppStateService { } async updateProjectDictionaryVersion(project: ProjectWrapper) { - project.dictionaryVersion = await this._versionsControllerService.getDossierDictionaryVersion(project.projectId, project.ruleSetId).toPromise(); + project.dictionaryVersion = await this._versionsControllerService + .getDossierDictionaryVersion(project.projectId, project.ruleSetId) + .toPromise(); } private _dictionaryVersion(ruleSetId?: string) { @@ -636,7 +689,11 @@ export class AppStateService { return found ? found.files : []; } - private _processFiles(project: ProjectWrapper, files: FileStatus[], emitEvents: boolean = true) { + private _processFiles( + project: ProjectWrapper, + files: FileStatus[], + emitEvents: boolean = true + ) { const oldFiles = [...project.files]; const fileStatusChangedEvent = []; diff --git a/apps/red-ui/src/app/state/model/project.wrapper.ts b/apps/red-ui/src/app/state/model/project.wrapper.ts index d78aa96a5..2f4a8a9ed 100644 --- a/apps/red-ui/src/app/state/model/project.wrapper.ts +++ b/apps/red-ui/src/app/state/model/project.wrapper.ts @@ -121,7 +121,8 @@ export class ProjectWrapper { this.hasRequests = this.hasRequests || f.hasRequests; this.allFilesApproved = this.allFilesApproved && f.isApproved; this.totalNumberOfPages += f.numberOfPages; - this.hasPendingOrProcessing = this.hasPendingOrProcessing || f.isPending || f.isProcessing; + this.hasPendingOrProcessing = + this.hasPendingOrProcessing || f.isPending || f.isProcessing; }); this.hasNone = !this.hasRequests && !this.hasRedactions && !this.hintsOnly; } diff --git a/apps/red-ui/src/app/utils/api-path-interceptor.ts b/apps/red-ui/src/app/utils/api-path-interceptor.ts index 61d262e22..78ae4a1f6 100644 --- a/apps/red-ui/src/app/utils/api-path-interceptor.ts +++ b/apps/red-ui/src/app/utils/api-path-interceptor.ts @@ -6,7 +6,10 @@ import { BASE_HREF } from '../tokens'; @Injectable() export class ApiPathInterceptor implements HttpInterceptor { - constructor(@Inject(BASE_HREF) private readonly _baseHref: string, private readonly _appConfigService: AppConfigService) {} + constructor( + @Inject(BASE_HREF) private readonly _baseHref: string, + private readonly _appConfigService: AppConfigService + ) {} intercept(req: HttpRequest, next: HttpHandler): Observable> { if (!req.url.startsWith('/assets')) { diff --git a/apps/red-ui/src/app/utils/custom-route-reuse.strategy.ts b/apps/red-ui/src/app/utils/custom-route-reuse.strategy.ts index a1075e72e..d3a1155d2 100644 --- a/apps/red-ui/src/app/utils/custom-route-reuse.strategy.ts +++ b/apps/red-ui/src/app/utils/custom-route-reuse.strategy.ts @@ -30,7 +30,10 @@ export class CustomRouteReuseStrategy implements RouteReuseStrategy { this._onDetach(element.componentRef?.instance); } - this._storedRoutes[this._getKey(route)] = { handle: element as DetachedRouteHandle, previousRoute: route }; + this._storedRoutes[this._getKey(route)] = { + handle: element as DetachedRouteHandle, + previousRoute: route + }; } shouldAttach(route: ActivatedRouteSnapshot): boolean { @@ -49,12 +52,17 @@ export class CustomRouteReuseStrategy implements RouteReuseStrategy { } shouldReuseRoute(future: ActivatedRouteSnapshot, current: ActivatedRouteSnapshot): boolean { - return future.routeConfig === current.routeConfig || this._getKey(future) === this._getKey(current); + return ( + future.routeConfig === current.routeConfig || + this._getKey(future) === this._getKey(current) + ); } private _getKey(route: ActivatedRouteSnapshot): string { return route.pathFromRoot - .map((el: ActivatedRouteSnapshot) => (el.routeConfig ? el.routeConfig.path + JSON.stringify(el.params) : '')) + .map((el: ActivatedRouteSnapshot) => + el.routeConfig ? el.routeConfig.path + JSON.stringify(el.params) : '' + ) .filter((str) => str.length > 0) .join(''); } diff --git a/apps/red-ui/src/app/utils/date-inputs-utils.ts b/apps/red-ui/src/app/utils/date-inputs-utils.ts index 5b5e30e3a..40770d10f 100644 --- a/apps/red-ui/src/app/utils/date-inputs-utils.ts +++ b/apps/red-ui/src/app/utils/date-inputs-utils.ts @@ -1,7 +1,14 @@ import { FormGroup } from '@angular/forms'; import { Moment } from 'moment'; -export function applyIntervalConstraints(value, previousFrom: Moment, previousTo: Moment, form: FormGroup, fromKey: string, toKey: string): boolean { +export function applyIntervalConstraints( + value, + previousFrom: Moment, + previousTo: Moment, + form: FormGroup, + fromKey: string, + toKey: string +): boolean { if (!!value[fromKey] && !!value[toKey]) { if (previousFrom !== value[fromKey]) { if (value[toKey].isBefore(value[fromKey])) { diff --git a/apps/red-ui/src/app/utils/dialog-helper.ts b/apps/red-ui/src/app/utils/dialog-helper.ts index 653b86897..e8f3940c4 100644 --- a/apps/red-ui/src/app/utils/dialog-helper.ts +++ b/apps/red-ui/src/app/utils/dialog-helper.ts @@ -59,14 +59,22 @@ export class DialogHelper { config.backdropClass = 'dark-backdrop'; config.panelClass = 'gin-file-upload-dialog-panel'; config.scrollStrategy = overlay.scrollStrategies.block(); - config.positionStrategy = overlay.position().global().centerHorizontally().centerVertically(); + config.positionStrategy = overlay + .position() + .global() + .centerHorizontally() + .centerVertically(); return config; } static generateUploadStatusConfig(overlay: Overlay): OverlayConfig { const config = new OverlayConfig(); config.hasBackdrop = false; - config.positionStrategy = overlay.position().global().bottom(DialogHelper._MARGIN).right(DialogHelper._MARGIN); + config.positionStrategy = overlay + .position() + .global() + .bottom(DialogHelper._MARGIN) + .right(DialogHelper._MARGIN); return config; } } diff --git a/apps/red-ui/src/app/utils/file-download-utils.ts b/apps/red-ui/src/app/utils/file-download-utils.ts index 2e48879b5..697509c6a 100644 --- a/apps/red-ui/src/app/utils/file-download-utils.ts +++ b/apps/red-ui/src/app/utils/file-download-utils.ts @@ -5,7 +5,9 @@ export function download(event: HttpResponse, altName?: string) { const contentDisposition = event.headers.get('Content-Disposition'); let fileName; try { - fileName = contentDisposition ? contentDisposition.split('filename=')[1].replace(/"/g, '') : undefined; + fileName = contentDisposition + ? contentDisposition.split('filename=')[1].replace(/"/g, '') + : undefined; } catch (e) { console.log('[REDACTION] Failed to parse content-disposition: ', contentDisposition); } diff --git a/apps/red-ui/src/app/utils/file-drop-utils.ts b/apps/red-ui/src/app/utils/file-drop-utils.ts index 687c439bd..7ae9d1d0b 100644 --- a/apps/red-ui/src/app/utils/file-drop-utils.ts +++ b/apps/red-ui/src/app/utils/file-drop-utils.ts @@ -1,7 +1,11 @@ import { FileUploadModel } from '@upload-download/model/file-upload.model'; import { ProjectWrapper } from '@state/model/project.wrapper'; -export function handleFileDrop(event: DragEvent, project: ProjectWrapper, uploadFiles: (files: FileUploadModel[]) => void) { +export function handleFileDrop( + event: DragEvent, + project: ProjectWrapper, + uploadFiles: (files: FileUploadModel[]) => void +) { event.preventDefault(); event.stopPropagation(); const { dataTransfer } = event; diff --git a/apps/red-ui/src/app/utils/sync-scroll.ts b/apps/red-ui/src/app/utils/sync-scroll.ts index 4c888cd4c..0a1c34e43 100644 --- a/apps/red-ui/src/app/utils/sync-scroll.ts +++ b/apps/red-ui/src/app/utils/sync-scroll.ts @@ -35,7 +35,13 @@ export function syncScroll(elements: HTMLElement[]) { if ( updateX && Math.round( - otherEl['scrollLeft'] - (scrollX = otherEl.eX = Math.round(xRate * (otherEl['scrollWidth'] - otherEl['clientWidth']))) + otherEl['scrollLeft'] - + (scrollX = otherEl.eX = + Math.round( + xRate * + (otherEl['scrollWidth'] - + otherEl['clientWidth']) + )) ) ) { otherEl['scrollLeft'] = scrollX; @@ -44,7 +50,13 @@ export function syncScroll(elements: HTMLElement[]) { if ( updateY && Math.round( - otherEl['scrollTop'] - (scrollY = otherEl.eY = Math.round(yRate * (otherEl['scrollHeight'] - otherEl['clientHeight']))) + otherEl['scrollTop'] - + (scrollY = otherEl.eY = + Math.round( + yRate * + (otherEl['scrollHeight'] - + otherEl['clientHeight']) + )) ) ) { otherEl['scrollTop'] = scrollY; diff --git a/apps/red-ui/src/app/utils/uuid-helper.ts b/apps/red-ui/src/app/utils/uuid-helper.ts index 3cd05d407..0f925537b 100644 --- a/apps/red-ui/src/app/utils/uuid-helper.ts +++ b/apps/red-ui/src/app/utils/uuid-helper.ts @@ -5,7 +5,9 @@ for (let i = 0; i < 256; i++) { } export function isUUID(uuid: string) { - return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(uuid); + return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test( + uuid + ); } export function UUID() { diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 7fbf643fb..d5b5e5262 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,14 +1,14 @@ { - "OAUTH_URL": "https://dev-06.iqser.cloud/auth/realms/redaction", - "API_URL": "https://dev-06.iqser.cloud/redaction-gateway-v1", - "OAUTH_CLIENT_ID": "redaction", - "BACKEND_APP_VERSION": "4.4.40", - "FRONTEND_APP_VERSION": "1.1", - "EULA_URL": "EULA_URL", - "LICENSE_CUSTOMER": "Development License", - "LICENSE_EMAIL": "todo-license@email.com", - "LICENSE_START": "01-01-2021", - "LICENSE_END": "31-12-2021", - "LICENSE_PAGE_COUNT": 1000000, - "MAX_FILE_SIZE_MB": 100 + "OAUTH_URL": "https://dev-06.iqser.cloud/auth/realms/redaction", + "API_URL": "https://dev-06.iqser.cloud/redaction-gateway-v1", + "OAUTH_CLIENT_ID": "redaction", + "BACKEND_APP_VERSION": "4.4.40", + "FRONTEND_APP_VERSION": "1.1", + "EULA_URL": "EULA_URL", + "LICENSE_CUSTOMER": "Development License", + "LICENSE_EMAIL": "todo-license@email.com", + "LICENSE_START": "01-01-2021", + "LICENSE_END": "31-12-2021", + "LICENSE_PAGE_COUNT": 1000000, + "MAX_FILE_SIZE_MB": 100 } diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index ce84b5ef1..7fc1370e6 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -1,1244 +1,1245 @@ { - "auth-error": { - "heading": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie Ihren Administrator für den Zugriff!", - "heading-with-name-and-link": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie {{adminName}} für den Zugriff!", - "heading-with-name": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie {{adminName}} für den Zugriff!", - "heading-with-link": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie Ihren Administrator für den Zugriff!", - "logout": "Ausloggen" + "auth-error": { + "heading": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie Ihren Administrator für den Zugriff!", + "heading-with-name-and-link": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie {{adminName}} für den Zugriff!", + "heading-with-name": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie {{adminName}} für den Zugriff!", + "heading-with-link": "Ihr Benutzer verfügt nicht über die erforderlichen RED- * -Rollen, um auf diese Anwendung zuzugreifen. Bitte kontaktieren Sie Ihren Administrator für den Zugriff!", + "logout": "Ausloggen" + }, + "app-name": "DDA-R", + "dev-mode": "[DEV-MODUS]", + "upload-status": { + "error": { + "file-size": "Datei zu groß. Das Limit ist {{size}} MB.", + "generic": "Datei konnte nicht hochgeladen werden ..." }, - "app-name": "DDA-R", - "dev-mode": "[DEV-MODUS]", - "upload-status": { - "error": { - "file-size": "Datei zu groß. Das Limit ist {{size}} MB.", - "generic": "Datei konnte nicht hochgeladen werden ..." - }, - "dialog": { - "title": "Datei-Uploads ({{len}})", - "actions": { - "re-upload": "Wiederholen Sie den Upload", - "cancel": "Upload abbrechen" - } - } + "dialog": { + "title": "Datei-Uploads ({{len}})", + "actions": { + "re-upload": "Wiederholen Sie den Upload", + "cancel": "Upload abbrechen" + } + } + }, + "download-status": { + "queued": "Ihr Download wurde in die Warteschlange gestellt. Alle angeforderten Downloads finden Sie hier: Meine Downloads .", + "error": { + "generic": "Herunterladen fehlgeschlagen" }, - "download-status": { - "queued": "Ihr Download wurde in die Warteschlange gestellt. Alle angeforderten Downloads finden Sie hier: Meine Downloads .", - "error": { - "generic": "Herunterladen fehlgeschlagen" - }, - "dialog": { - "title": "Downloads ({{len}})", - "tooltip": "{{len}} Dateien", - "actions": { - "download": "jetzt downloaden", - "cancel": "Download abbrechen" - } - } + "dialog": { + "title": "Downloads ({{len}})", + "tooltip": "{{len}} Dateien", + "actions": { + "download": "jetzt downloaden", + "cancel": "Download abbrechen" + } + } + }, + "pdf-viewer": { + "text-popup": { + "actions": { + "search": "Suche nach Auswahl" + } }, - "pdf-viewer": { - "text-popup": { - "actions": { - "search": "Suche nach Auswahl" - } - }, - "search-in-progress": "Suche läuft ..." - }, - "common": { - "close": "Ansicht schließen", - "dialog": { - "close": "Dialog schließen" - }, - "confirmation-dialog": { - "title": "Aktion bestätigen", - "description": "Diese Aktion muss bestätigt werden. Möchten Sie fortfahren?", - "confirm": "Ja", - "deny": "Nein" - } - }, - "top-bar": { - "navigation-items": { - "projects": "Aktives Dossier", - "back": "Zurück", - "my-account": { - "children": { - "admin": "die Einstellungen", - "downloads": "Meine Downloads", - "my-profile": "Mein Profil", - "language": { - "label": "Sprache", - "en": "Englisch", - "de": "Deutsche" - }, - "logout": "Ausloggen" - } - } - } - }, - "filters": { - "filter-by": "Filter:", - "status": "Status", - "people": "Dossiermitglied (e)", - "assigned-people": "Beauftragter", - "due-date": "Geburtstermin", - "created-on": "Erstellt am", - "project": "Dossier", - "document": "Dokument", - "needs-work": "Arbeitsbelastung", - "rulesets": "Regelsätze" - }, - "report": { - "unavailable": "Der Redaktionsbericht ist erst verfügbar, wenn alle Dateien genehmigt wurden.", - "unavailable-single": "Der Redaktionsbericht ist erst verfügbar, wenn diese Datei genehmigt wurde.", - "action": { - "label": "Redaktionsbericht herunterladen", - "efsa": "Mit EFSA-Vorlage herunterladen", - "syngenta": "Mit Syngenta-Vorlage herunterladen" - } - }, - "project-listing": { - "search": "Dossiername ...", - "reanalyse": { - "action": "Analysieren Sie das gesamte Dossier" - }, - "download-files": { - "action": "Laden Sie redigierte Dateien herunter" - }, - "table-header": { - "title": "{{length}} aktive Dossiers", - "bulk-select": "Auswahl umschalten", - "recent": "Kürzlich" - }, - "table-col-names": { - "name": "Dokument", - "needs-work": "Arbeitsbelastung", - "owner": "Inhaber", - "status": "Status", - "ruleset": "Regelsatz" - }, - "stats": { - "analyzed-pages": "Seiten", - "total-people": "Benutzer insgesamt", - "charts": { - "projects": "Dossiers", - "total-documents": "Gesamtdokument (e)" - } - }, - "no-data": { - "title": "Sie haben derzeit keine Dossiers.", - "action": "Neues Dossier" - }, - "add-new": "Neues Dossier", - "add-edit-dialog": { - "header-new": "Dossier erstellen", - "header-edit": "Dossier bearbeiten", - "form": { - "name": { - "label": "Name des Dossiers", - "placeholder": "Name eingeben" - }, - "description": { - "label": "Beschreibung", - "placeholder": "Beschreibung eingeben" - }, - "due-date": "Geburtstermin", - "template": "Dossiervorlage" - }, - "errors": { - "project-already-exists": "Dossier mit diesem Namen existiert bereits!", - "generic": "Dossier konnte nicht gespeichert werden" - }, - "actions": { - "save": "speichern", - "save-and-add-members": "Team speichern und bearbeiten" - } - }, - "header": "Dossiers", - "edit": { - "action": "Dossier bearbeiten" - }, - "delete": { - "action": "Dossier löschen", - "delete-failed": "Fehler beim Löschen des Dossiers: {{projectName}}" - }, - "no-match": { - "title": "Keine Dossiers stimmen mit Ihren aktuellen Filtern überein." - } - }, - "project-details": { - "title": "Dossier Details", - "dialog": { - "title": "Dossier Details", - "info": { - "file-count": "Anzahl der Dateien: {{fileCount}}" - }, - "actions": { - "reanalyse-project": "Analysieren Sie das Dossier" - } - }, - "owner": "Inhaber", - "members": "Mitglieder", - "see-less": "Weniger sehen", - "assign-members": "Mitglieder zuweisen", - "expand": "Zeige Details", - "collapse": "Details ausblenden" - }, - "project-overview": { - "no-ocr": "Keine OCR", - "ocr-performed": "Für diese Datei wurde eine OCR durchgeführt.", - "no-data": { - "title": "Es liegen noch keine Dokumente vor.", - "action": "Dokument hochladen" - }, - "no-match": { - "title": "Keine Dokumente stimmen mit Ihren aktuellen Filtern überein." - }, - "search": "Dokumentname...", - "header-actions": { - "edit": "Bearbeiten", - "delete": "Löschen", - "upload-document": "Dokument hochladen", - "download-redacted-files": "Laden Sie redigierte Dateien herunter" - }, - "ocr-file": "OCR-Dokument", - "download-file": "Herunterladen", - "download-file-disabled": "Das Herunterladen ist nur für genehmigte Dateien zulässig", - "under-approval": "Zur Genehmigung", - "approve": "Genehmigen", - "approve-disabled": "Die Datei kann erst genehmigt werden, wenn sie mit den neuesten Wörterbüchern analysiert und alle Vorschläge verarbeitet wurden", - "under-review": "Wird überprüft", - "upload-files": "Ziehen", - "upload-files-btn": "Daten hochladen", - "new-rule": { - "label": "Veraltet", - "toast": { - "message-project": "Erneute Analyse erforderlich:", - "actions": { - "reanalyse-all": "Analysieren Sie alle", - "reanalyse-file": "Analysieren Sie diese Datei", - "later": "Später" - } - } - }, - "report": { - "action": "Redaktionsbericht herunterladen" - }, - "assign": "Prüfer zuweisen", - "assign-me": "Zuweisen zu mir", - "table-header": { - "title": "{{length}} Dokumente", - "bulk-select": "Auswahl umschalten" - }, - "table-col-names": { - "name": "Name", - "added-on": "Hinzugefügt", - "needs-work": "Arbeitsbelastung", - "assigned-to": "Zugewiesen an", - "pages": "Seiten", - "status": "Status" - }, - "upload-error": "Datei konnte nicht hochgeladen werden: {{name}}", - "delete-file-error": "Fehler beim Löschen der Datei: {{filename}}", - "delete-files-error": "Dateien konnten nicht gelöscht werden.", - "reanalyse": { - "action": "Datei analysieren" - }, - "delete": { - "action": "Datei löschen" - }, - "file-listing": { - "file-entry": { - "status": "Status: {{status}}", - "number-of-pages": "Anzahl der Seiten: {{numberOfPages}}", - "number-of-analyses": "Anzahl der Analysen: {{numberOfAnalyses}}", - "added": "Datum hinzugefügt: {{added}}", - "last-updated": "Letzte Aktualisierung: {{lastUpdated}}", - "file-pending": "Steht aus...", - "file-processing": "wird bearbeitet", - "file-error": "Nachbearbeitung erforderlich" - } - }, - "project-details": { - "charts": { - "documents-in-project": "Dokumente im Dossier" - }, - "stats": { - "documents": "{{count}} Dokumente", - "analysed-pages": "{{count}} Seiten", - "people": "{{count}} Benutzer", - "created-on": "Erstellt am {{date}}", - "due-date": "Geburtstermin}}" - }, - "description": "Beschreibung" - }, - "header": "Dossierübersicht", - "bulk": { - "delete": "Dokumente löschen", - "assign": "Prüfer zuweisen", - "reanalyse": "Dokumente analysieren", - "reanalyse-error-outdated": "Nicht alle ausgewählten Dokumente können analysiert werden, einige sind Ihnen möglicherweise nicht zugeordnet oder bereits analysiert." - }, - "reanalyse-project": { - "success": "Dateien, die erneut analysiert werden sollen.", - "error": "Dateien für die erneute Analyse konnten nicht geplant werden. Bitte versuche es erneut." - } - }, - "file-preview": { - "delta": "Delta", - "redacted": "Vorschau", - "standard": "Standard", - "standard-tooltip": "In der Standard-Workload-Ansicht werden alle Hinweise, Redaktionen und Empfehlungen angezeigt", - "redacted-tooltip": "Die Redaktionsvorschau zeigt nur Redaktionen an. Betrachten Sie dies als Vorschau für die endgültige redigierte Version. Diese Ansicht ist nur verfügbar, wenn für die Datei keine Änderungen ausstehen", - "delta-tooltip": "Delta View zeigt nur die Änderungen seit der letzten erneuten Analyse an. Diese Ansicht ist nur verfügbar, wenn mindestens eine Änderung vorliegt", - "no-data": { - "title": "Auf dieser Seite befinden sich keine Anmerkungen." - }, - "show-redacted-view": "Redigierte Vorschau anzeigen", - "cannot-show-redacted-view": "Redaktionen nicht synchron. Die redigierte Vorschau ist nur nach einer erneuten Analyse verfügbar", - "reanalyse-notification": "Dieses Dokument wurde nicht mit dem neuesten Regel- / Wörterbuchsatz verarbeitet. Analysieren Sie jetzt, um aktualisierte Anmerkungen zu erhalten.", - "reanalyse-file": "Datei-Reanalyse läuft", - "view-toggle": "Redigierte Ansicht", - "tabs": { - "quick-navigation": "Schnelle Navigation", - "document-info": { - "label": "Dokumentinfo", - "close": "Dokumentinfo schließen", - "edit": "Dokumentinformationen bearbeiten", - "details": { - "project": "in {{projectName}}", - "pages": "{{pages}} Seiten", - "revised-pages": "{{pages}} überarbeitete Seiten", - "created-on": "Erstellt am: {{date}}", - "due": "Geburtstermin}}" - } - }, - "annotations": { - "label": "Arbeitsbelastung", - "select": "Wählen", - "jump-to-previous": "Zum vorherigen springen", - "jump-to-next": "Zum nächsten springen" - }, - "is-excluded": "Die Redaktion ist für dieses Dokument deaktiviert." - }, - "toggle-analysis": { - "enable": "Zur Redaktion aktivieren", - "disable": "Deaktivieren Sie die Redaktion", - "only-managers": "Das Aktivieren / Deaktivieren ist nur für Manager zulässig" - }, - "reviewer": "Zugewiesen an", - "unassigned": "Nicht zugewiesen", - "assign-reviewer": "Prüfer zuweisen", - "cancel-assign-reviewer": "Stornieren", - "save-assign-reviewer": "speichern", - "assign-me": "Weisen Sie mir zu", - "last-reviewer": "Zuletzt überprüft von:", - "fullscreen": "Vollbild (F)", - "document-info": "Ihre Dokumenteninfo lebt hier. Dies schließt Metadaten ein, die für jedes Dokument erforderlich sind.", - "new-tab-ssr": "Öffnen Sie das Dokument im serverseitigen Rendering-Modus", - "html-debug": "Öffnen Sie das Dokument-HTML-Debug", - "download-original-file": "Originaldatei herunterladen", - "exit-fullscreen": "Beenden Sie den Vollbildmodus (F)", - "quick-nav": { - "jump-first": "Zur ersten Anmerkung springen", - "jump-last": "Zur letzten Anmerkung springen" - } - }, - "annotation-actions": { - "message": { - "manual-redaction": { - "undo": { - "success": "Rückgängig machen erfolgreich", - "error": "Fehler beim Rückgängigmachen: {{error}}" - }, - "suggest": { - "success": "Redaktionsvorschlag gespeichert", - "error": "Fehler beim Speichern des Redaktionsvorschlags: {{error}}" - }, - "add": { - "success": "Redaktion hinzugefügt!", - "error": "Fehler beim Speichern der Redaktion: {{error}}" - }, - "decline": { - "success": "Redaktionsvorschlag abgelehnt!", - "error": "Redaktion konnte nicht abgelehnt werden: {{error}}" - }, - "approve": { - "success": "Redaktionsvorschlag genehmigt!", - "error": "Fehler beim Genehmigen der Redaktion: {{error}}" - }, - "request-remove": { - "success": "Angefordert, Redaktion zu entfernen!", - "error": "Fehler beim Anfordern der Entfernung der Redaktion: {{error}}" - }, - "remove": { - "success": "Redaktion entfernt!", - "error": "Redaktion konnte nicht entfernt werden: {{error}}" - } - }, - "dictionary": { - "undo": { - "success": "Rückgängig machen erfolgreich", - "error": "Fehler beim Rückgängigmachen: {{error}}" - }, - "suggest": { - "success": "Vorschlag zur Wörterbuchänderung gespeichert!", - "error": "Vorschlag zum Ändern des Wörterbuchs konnte nicht gespeichert werden: {{error}}" - }, - "add": { - "success": "Eintrag zum Wörterbuch hinzugefügt. Änderungen werden nach einer erneuten Analyse sichtbar.", - "error": "Fehler beim Hinzufügen des Eintrags zum Wörterbuch: {{error}}" - }, - "decline": { - "success": "Wörterbuchvorschlag abgelehnt.", - "error": "Fehler beim Ablehnen des Wörterbuchvorschlags: {{error}}" - }, - "approve": { - "success": "Wörterbucheintrag genehmigt. Änderungen werden nach einer erneuten Analyse sichtbar.", - "error": "Wörterbucheintrag konnte nicht genehmigt werden: {{error}}" - }, - "request-remove": { - "success": "Angefordert, Wörterbucheintrag zu entfernen!", - "error": "Das Entfernen des Wörterbucheintrags konnte nicht angefordert werden: {{error}}" - }, - "remove": { - "success": "Wörterbucheintrag entfernt!", - "error": "Fehler beim Entfernen des Wörterbucheintrags: {{error}}" - } - } - }, - "force-redaction": { - "label": "Redaktion erzwingen" - }, - "accept-suggestion": { - "label": "Vorschlag annehmen", - "add-to-dict": "Genehmigen und zum Wörterbuch hinzufügen", - "remove-from-dict": "Genehmigen und aus dem Wörterbuch entfernen", - "only-here": "Nur hier genehmigen" - }, - "accept-recommendation": { - "label": "Empfehlung annehmen" - }, - "suggest-remove-annotation": "Entfernen oder vorschlagen, diesen Eintrag zu entfernen", - "suggest-remove-annotations": "Entfernen oder Vorschlagen, um ausgewählte Einträge zu entfernen", - "reject-suggestion": "Vorschlag ablehnen", - "remove-annotation": { - "suggest-remove-from-dict": "Schlagen Sie vor, aus dem Wörterbuch zu entfernen", - "suggest-only-here": "Schlagen Sie vor, nur hier zu entfernen", - "remove-from-dict": "Aus dem Wörterbuch entfernen", - "only-here": "Nur hier entfernen", - "false-positive": "Falsch positiv" - }, - "remove": "Entfernen", - "undo": "Rückgängig machen", - "reject": "Ablehnen", - "hide": "Ausblenden", - "show": "Show" - }, - "initials-avatar": { - "unassigned": "Nicht zugewiesen", - "you": "Sie" - }, - "assign-file-owner": { - "dialog": { - "single-user": "Gutachter", - "title": "File Reviewer verwalten", - "save": "speichern", - "cancel": "Stornieren" - } - }, - "assign-project-owner": { - "dialog": { - "single-user": "Inhaber", - "multi-user": "Team überprüfen", - "title": "Dossier-Team verwalten", - "members": "Mitglieder", - "save": "Änderungen speichern", - "cancel": "Stornieren", - "search": "Suche...", - "no-members": "Noch keine Mitglieder. Wählen Sie aus der Liste unten." - } - }, - "project-member-guard": { - "access-denied": "Sie dürfen nicht auf diese Seite zugreifen." - }, - "comments": { - "comment": "{{count}} Kommentar", - "comments": "{{count}} Kommentare", - "add-comment": "Einen Kommentar hinzufügen", - "hide-comments": "Ausblenden", - "cancel": "Stornieren" - }, - "UNPROCESSED": "Unverarbeitet", - "REPROCESS": "wird bearbeitet", - "FULLREPROCESS": "wird bearbeitet", - "PROCESSING": "wird bearbeitet", - "OCR_PROCESSING": "OCR-Verarbeitung", - "ERROR": "Nachbearbeitung erforderlich", - "UNASSIGNED": "Nicht zugewiesen", - "UNDER_REVIEW": "Wird überprüft", - "UNDER_APPROVAL": "Unter Genehmigung", - "APPROVED": "Genehmigt", - "EXCLUDED": "Ausgeschlossen", - "by": "durch", - "efsa": "EFSA-Genehmigung", - "finished": "Fertig", - "submitted": "Eingereicht", - "active": "Aktiv", - "archived": "Archiviert", - "hint": "Hinweis", - "skipped": "Übersprungen", - "redaction": "Redaktion", - "comment": "Kommentar", - "pending-analysis": "Bis zur erneuten Analyse", - "suggestion": "Redaktionsvorschlag", - "dictionary": "Wörterbuch", - "type": "Art", - "content": "Grund", - "page": "Seite", - "annotation": "Anmerkung", - "annotations": "Anmerkungen", - "filter": { - "hint": "Nur Hinweise", - "redaction": "Redigiert", - "suggestion": "Vorgeschlagene Redaktion", - "analysis": "Analyse erforderlich", - "none": "Keine Anmerkungen", - "updated": "Aktualisiert", - "image": "Bilder" - }, - "filter-menu": { - "label": "Filter", - "filter-types": "Filtertypen", - "filter-options": "Filteroptionen", - "with-comments": "Nur Anmerkungen mit Kommentaren anzeigen" - }, - "sorting": { - "recent": "Kürzlich", - "oldest": "Älteste", - "alphabetically": "Alphabetisch", - "number-of-pages": "Seitenzahl", - "number-of-analyses": "Anzahl der Analysen", - "custom": "Benutzerdefiniert" - }, - "readonly-pill": "Schreibgeschützt", - "group": { - "redactions": "Redaktionswörterbücher", - "hints": "Tipp Wörterbücher" - }, - "annotation-type": { - "recommendation": "Empfehlung", - "remove-only-here": "Ausstehende Entfernung (nur hier)", - "add-dictionary": "Ausstehend zum Wörterbuch hinzufügen", - "remove-dictionary": "Ausstehend aus dem Wörterbuch entfernen", - "suggestion-add-dictionary": "Vorgeschlagenes Wörterbuch hinzufügen", - "suggestion-force-redaction": "Redaktion der Vorschlagskraft", - "suggestion-remove-dictionary": "Vorgeschlagene Wörterbuchentfernung", - "suggestion-add": "Vorgeschlagene Redaktion", - "suggestion-remove": "Vorgeschlagene Redaktionsentfernung", - "skipped": "Übersprungen", - "pending-analysis": "Bis zur erneuten Analyse", - "hint": "Hinweis", - "redaction": "Redaktion", - "manual-redaction": "Manuelle Redaktion", - "declined-suggestion": "Abgelehnter Vorschlag" - }, - "manual-annotation": { - "dialog": { - "header": { - "dictionary": "Zum Wörterbuch hinzufügen", - "redaction": "Redaktion", - "force": "Redaktion erzwingen", - "request-dictionary": "Anfrage zum Wörterbuch hinzufügen", - "request-redaction": "Redaktion anfordern", - "false-positive": "Falsch positiv setzen", - "request-false-positive": "Falsch positiv anfordern" - }, - "add-redaction": { - "success": "Redaktionsvorschlag hinzugefügt!", - "failed": "Fehler beim Hinzufügen der Redaktion: {{message}}" - }, - "actions": { - "save": "speichern" - }, - "content": { - "text": "Ausgewählter Text:", - "rectangle": "Benutzerdefiniertes Rechteck", - "dictionary": "Wörterbuch", - "reason": "Grund", - "reason-placeholder": "Wähle einen Grund ...", - "legalBasis": "Rechtliche Grundlage", - "comment": "Kommentar" - } - }, - "approve-request": { - "success": "Anfrage genehmigt.", - "error": "Anfrage konnte nicht genehmigt werden." - }, - "undo": { - "success": "Aktion rückgängig gemacht.", - "error": "Aktion konnte nicht rückgängig gemacht werden." - }, - "redaction-request": { - "success": "Redaktion angefordert.", - "error": "Redaktion konnte nicht angefordert werden." - }, - "remove-redaction-request": { - "success": "Redaktion entfernt.", - "error": "Redaktion konnte nicht entfernt werden." - }, - "redaction-add": { - "success": "Redaktion hinzugefügt.", - "error": "Redaktion konnte nicht hinzugefügt werden." - } - }, - "remove-annotations-dialog": { - "remove-from-dictionary": { - "title": "Aus dem Wörterbuch entfernen", - "question": "Folgende Einträge werden aus ihren jeweiligen Wörterbüchern entfernt:" - }, - "remove-only-here": { - "title": "Redaktion entfernen", - "question": "Folgende Redaktionen werden nur hier entfernt:" - }, - "dictionary": "Wörterbuch", - "value": "Wert", - "confirm": "Ja, fortfahren und entfernen!", - "deny": "Stornieren" + "search-in-progress": "Suche läuft ..." + }, + "common": { + "close": "Ansicht schließen", + "dialog": { + "close": "Dialog schließen" }, "confirmation-dialog": { - "assign-file-to-me": { - "title": "Prüfer neu zuweisen", - "question": "Dieses Dokument wird derzeit von einer anderen Person geprüft. Möchten Sie der Prüfer werden und sich diesem Dokument zuordnen?" - }, - "delete-file": { - "title": "Dokument löschen", - "question": "Möchten Sie fortfahren?" - }, - "delete-project": { - "title": "Dossier löschen", - "question": "Möchten Sie fortfahren?" + "title": "Aktion bestätigen", + "description": "Diese Aktion muss bestätigt werden. Möchten Sie fortfahren?", + "confirm": "Ja", + "deny": "Nein" + } + }, + "top-bar": { + "navigation-items": { + "projects": "Aktives Dossier", + "back": "Zurück", + "my-account": { + "children": { + "admin": "die Einstellungen", + "downloads": "Meine Downloads", + "my-profile": "Mein Profil", + "language": { + "label": "Sprache", + "en": "Englisch", + "de": "Deutsche" + }, + "logout": "Ausloggen" } + } + } + }, + "filters": { + "filter-by": "Filter:", + "status": "Status", + "people": "Dossiermitglied (e)", + "assigned-people": "Beauftragter", + "due-date": "Geburtstermin", + "created-on": "Erstellt am", + "project": "Dossier", + "document": "Dokument", + "needs-work": "Arbeitsbelastung", + "rulesets": "Regelsätze" + }, + "report": { + "unavailable": "Der Redaktionsbericht ist erst verfügbar, wenn alle Dateien genehmigt wurden.", + "unavailable-single": "Der Redaktionsbericht ist erst verfügbar, wenn diese Datei genehmigt wurde.", + "action": { + "label": "Redaktionsbericht herunterladen", + "efsa": "Mit EFSA-Vorlage herunterladen", + "syngenta": "Mit Syngenta-Vorlage herunterladen" + } + }, + "project-listing": { + "search": "Dossiername ...", + "reanalyse": { + "action": "Analysieren Sie das gesamte Dossier" }, - "add-edit-file-attribute": { - "title": { - "edit": "Bearbeiten Sie das {{name}} Dateiattribut", - "new": "Neues Dateiattribut hinzufügen" - }, - "form": { - "name": "Attributname", - "name-placeholder": "Name eingeben", - "column-header": "CSV-Spaltenüberschrift", - "column-header-placeholder": "Geben Sie den CSV-Spaltenkopf ein", - "read-only": "Schreibgeschützt machen", - "type": "Art", - "primary": "Als primär festlegen" - }, - "save": "Attribut speichern" + "download-files": { + "action": "Laden Sie redigierte Dateien herunter" }, - "file-attribute-types": { - "TEXT": "Freier Text", - "NUMBER": "Nummer", - "DATE": "Datum" + "table-header": { + "title": "{{length}} aktive Dossiers", + "bulk-select": "Auswahl umschalten", + "recent": "Kürzlich" }, - "add-edit-dictionary": { - "title": { - "edit": "Bearbeiten Sie das {{name}} Wörterbuch", - "new": "Wörterbuch erstellen" - }, - "form": { - "name": "Wörterbuchname", - "name-placeholder": "Name eingeben", - "name-hint": "Kann nach dem Speichern nicht bearbeitet werden.", - "description": "Beschreibung", - "description-placeholder": "Beschreibung eingeben", - "rank": "Rang", - "rank-placeholder": "1000", - "color": "Hex Farbe", - "color-placeholder": "#", - "redaction": "Redaktion", - "hint": "Hinweis", - "case-sensitive": "Groß- und Kleinschreibung beachten", - "add-to-dictionary-action": "Verfügbar zum Hinzufügen zum Wörterbuch" - }, - "error": { - "dictionary-already-exists": "Wörterbuch mit diesem Namen existiert bereits!", - "invalid-color-or-rank": "Ungültige Farbe oder Rang! Der Rang wird bereits von einem anderen Wörterbuch verwendet oder die Farbe ist keine gültige HexColor!", - "generic": "Wörterbuch konnte nicht gespeichert werden!" - }, - "save": "Wörterbuch speichern" + "table-col-names": { + "name": "Dokument", + "needs-work": "Arbeitsbelastung", + "owner": "Inhaber", + "status": "Status", + "ruleset": "Regelsatz" }, - "add-edit-project-template": { - "title": { - "edit": "Bearbeiten Sie die {{name}} Dossiervorlage", - "new": "Erstellen Sie eine Dossiervorlage" - }, - "form": { - "name": "Name der Dossiervorlage", - "name-placeholder": "Name eingeben", - "description": "Beschreibung", - "description-placeholder": "Beschreibung eingeben", - "valid-from": "Gültig ab", - "valid-to": "Gültig bis" - }, - "save": "Speichern Sie die Dossiervorlage" + "stats": { + "analyzed-pages": "Seiten", + "total-people": "Benutzer insgesamt", + "charts": { + "projects": "Dossiers", + "total-documents": "Gesamtdokument (e)" + } }, - "dictionary-overview": { - "action": { - "delete": "Wörterbuch löschen", - "edit": "Wörterbuch bearbeiten", - "download": "Wörterbuch herunterladen", - "upload": "Wörterbuch hochladen" - }, - "error": { - "entries-too-short": "Einige Einträge des Wörterbuchs liegen unter der Mindestlänge von 2. Diese sind rot hervorgehoben!", - "generic": "Etwas ist schief gelaufen ... Wörterbuch-Update fehlgeschlagen!" - }, - "success": { - "generic": "Wörterbuch aktualisiert!" - }, - "search": "Suche...", - "save-changes": "Änderungen speichern", - "revert-changes": "Zurückkehren", - "dictionary-details": { - "description": "Beschreibung" - }, - "compare": { - "compare": "Vergleichen Sie", - "select-ruleset": "Wählen Sie Dossiervorlage", - "select-dictionary": "Wählen Sie Wörterbuch" - }, - "select-dictionary": "Wählen Sie oben ein Wörterbuch aus, um es mit dem aktuellen zu vergleichen." + "no-data": { + "title": "Sie haben derzeit keine Dossiers.", + "action": "Neues Dossier" }, - "dictionary-listing": { - "action": { - "delete": "Wörterbuch löschen", - "edit": "Wörterbuch bearbeiten" + "add-new": "Neues Dossier", + "add-edit-dialog": { + "header-new": "Dossier erstellen", + "header-edit": "Dossier bearbeiten", + "form": { + "name": { + "label": "Name des Dossiers", + "placeholder": "Name eingeben" }, - "case-sensitive": "Groß- und Kleinschreibung beachten", - "add-new": "Neues Wörterbuch", - "stats": { - "charts": { - "types": "Typen", - "entries": "Einträge" - } + "description": { + "label": "Beschreibung", + "placeholder": "Beschreibung eingeben" }, - "table-header": { - "title": "{{length}} Wörterbücher" - }, - "table-col-names": { - "type": "Art", - "order-of-importance": "Reihenfolge der Wichtigkeit", - "hint-redaction": "Hinweis / Redaktion" - }, - "search": "Suche...", - "no-data": { - "title": "Es gibt noch keine Wörterbücher.", - "action": "Neues Wörterbuch" - }, - "no-match": { - "title": "Keine Wörterbücher stimmen mit Ihren aktuellen Filtern überein." - } - }, - "digital-signature": "Digitale Unterschrift", - "project-templates": "Dossiervorlagen", - "settings": "die Einstellungen", - "project-templates-listing": { - "table-header": { - "title": "{{length}} Dossiervorlagen" - }, - "entries": "{{length}} Einträge", - "dictionaries": "{{length}} Wörterbücher", - "action": { - "delete": "Vorlage löschen", - "edit": "Vorlage bearbeiten" - }, - "add-new": "Neue Dossiervorlage", - "search": "Suche...", - "table-col-names": { - "name": "Name", - "created-by": "Erstellt von", - "created-on": "Erstellt am", - "modified-on": "Geändert am" - }, - "no-data": { - "title": "Es gibt noch keine Dossiervorlagen." - }, - "no-match": { - "title": "Keine Dossiervorlagen stimmen mit Ihren aktuellen Filtern überein." - } - }, - "file-attributes-listing": { - "search": "Suche nach Attributnamen ...", - "add-new": "Neues Attribut", - "table-header": { - "title": "{{length}} Dateiattribute" - }, - "bulk-actions": { - "delete": "Ausgewählte Attribute löschen" - }, - "table-col-names": { - "name": "Name", - "type": "Eingabetyp", - "read-only": "Schreibgeschützt", - "csv-column": "CSV-Spalte", - "primary": "Primär", - "primary-info-tooltip": "Der Wert des als primär eingestellten Attributs wird unter dem Dateinamen in der Dokumentenliste angezeigt." - }, - "no-data": { - "title": "Es sind noch keine Dateiattribute vorhanden." - }, - "no-match": { - "title": "Keine Dateiattribute stimmen mit Ihren aktuellen Filtern überein." - }, - "read-only": "Schreibgeschützt", - "action": { - "edit": "Attribut bearbeiten", - "delete": "Attribut löschen" - }, - "upload-csv": "Konfiguration der Dateiattribute hochladen" - }, - "confirm-delete-file-attribute": { - "title": { - "single": "Löschen Sie {{name}}", - "bulk": "Dateiattribute löschen" - }, - "warning": "Achtung: Dies kann nicht rückgängig gemacht werden!", - "delete": { - "single": "Attribut löschen", - "bulk": "Attribute löschen" - }, - "cancel": { - "single": "Attribut behalten", - "bulk": "Attribute behalten" - }, - "impacted-documents": { - "single": "Alle Dokumente, für die es verwendet wird, sind betroffen", - "bulk": "Alle Dokumente, für die sie verwendet werden, sind betroffen" - }, - "lost-details": "Alle eingegebenen Details in den Dokumenten gehen verloren", - "toast-error": "Bitte bestätigen Sie, dass Sie die Auswirkungen Ihrer Handlung verstehen!" - }, - "confirm-delete-users": { - "title": { - "single": "Benutzer aus Arbeitsbereich löschen", - "bulk": "Benutzer aus dem Arbeitsbereich löschen" - }, - "warning": "Achtung: Dies kann nicht rückgängig gemacht werden!", - "impacted-projects": "{{projectsCount}} Dossiers sind betroffen", - "impacted-documents": { - "single": "Alle Dokumente, deren Überprüfung durch den Benutzer aussteht, sind betroffen", - "bulk": "Alle Dokumente, deren Überprüfung durch die Benutzer aussteht, sind betroffen" - }, - "delete": { - "single": "Benutzer löschen", - "bulk": "Benutzer löschen" - }, - "cancel": { - "single": "Benutzer behalten", - "bulk": "Benutzer behalten" - }, - "toast-error": "Bitte bestätigen Sie, dass Sie die Auswirkungen Ihrer Handlung verstehen!" - }, - "document-info": { - "title": "Dateiattribute einführen", - "save": "Dokumentinformationen speichern", - "save-approval": "Speichern und zur Genehmigung senden" - }, - "user-profile": { - "title": "Mein Profil", - "form": { - "email": "Email", - "first-name": "Vorname", - "last-name": "Nachname" - }, - "actions": { - "save": "Profil speichern" - } - }, - "user-listing": { - "table-header": { - "title": "{{length}} Benutzer" - }, - "table-col-names": { - "name": "Name", - "email": "Email", - "active": "Aktiv", - "roles": "Rollen" - }, - "action": { - "edit": "Benutzer bearbeiten", - "delete": "Benutzer löschen" - }, - "bulk": { - "delete": "Benutzer löschen", - "delete-disabled": "Sie können Ihr eigenes Konto nicht löschen." - }, - "search": "Suche...", - "add-new": "Neuer Benutzer", - "no-match": { - "title": "Keine Benutzer stimmen mit Ihren aktuellen Filtern überein." - } - }, - "add-edit-user": { - "title": { - "new": "Neuen Benutzer hinzufügen", - "edit": "Benutzer bearbeiten" - }, - "form": { - "first-name": "Vorname", - "last-name": "Nachname", - "email": "Email", - "role": "Rolle" - }, - "actions": { - "save": "Benutzer speichern", - "save-changes": "Änderungen speichern", - "delete": "Benutzer löschen", - "cancel": "Stornieren" - } - }, - "user-stats": { - "title": "Benutzer", - "chart": { - "users": "Benutzer im Arbeitsbereich" - }, - "expand": "Zeige Details", - "collapse": "Details ausblenden" - }, - "rules-screen": { - "error": { - "generic": "Etwas ist schief gelaufen ... Regelaktualisierung fehlgeschlagen!" - }, - "success": { - "generic": "Regeln aktualisiert!" - }, - "action": { - "download": "Regeln herunterladen", - "upload": "Regeln hochladen" - }, - "save-changes": "Änderungen speichern", - "revert-changes": "Zurückkehren" - }, - "watermark-screen": { - "form": { - "text-placeholder": "Text eingeben", - "opacity": "Opazität", - "color": "Farbe", - "font-size": "Schriftgröße", - "font-type": "Schriftart", - "orientation": "Orientierung" - }, - "action": { - "save": "Änderungen speichern", - "revert": "Zurückkehren", - "change-success": "Wasserzeichen aktualisiert!", - "delete-success": "Wasserzeichen gelöscht.", - "error": "Wasserzeichen konnte nicht aktualisiert werden" - }, - "title": "Wasserzeichen" - }, - "dictionaries": "Wörterbücher", - "user-management": "Benutzerverwaltung", - "license-information": "Lizenzinformationen", - "notifications": { - "today": "Heute", - "yesterday": "Gestern", - "tomorrow": "Morgen", - "mark-read": "als gelesen markieren", - "mark-unread": "als ungelesen markieren" - }, - "rule-editor": "Regeleditor", - "watermark": "Wasserzeichen", - "file-attributes": "Dateiattribute", - "pending-changes-guard": "WARNUNG: Sie haben nicht gespeicherte Änderungen. Drücken Sie Abbrechen, um zurück zu gehen und diese Änderungen zu speichern, oder OK, um diese Änderungen zu verlieren.", - "reset-filters": "Filter zurücksetzen", - "overwrite-files-dialog": { - "title": "Dokument existiert bereits!", - "question": "{{filename}} existiert bereits. Wählen Sie, wie Sie fortfahren möchten:", - "options": { - "overwrite": "Ersetzen Sie das vorhandene Dokument", - "skip": "Vorhandenes Dokument behalten", - "cancel": "Alle Uploads abbrechen", - "remember": "Erinnere dich an die Wahl und frag mich nicht noch einmal" - } - }, - "license-info-screen": { - "backend-version": "Backend-Anwendungsversion", - "frontend-version": "Frontend-Anwendungsversion", - "custom-app-title": "Titel der benutzerdefinierten Anwendung", - "copyright-claim-title": "Urheberrechtsanspruch", - "copyright-claim-text": "Copyright © 2020 - {{currentYear}} knecon AG (unterstützt von IQSER)", - "end-user-license-title": "Endbenutzer-Lizenzvereinbarung", - "end-user-license-text": "Die Verwendung dieses Produkts unterliegt den Bestimmungen der Redaction End User Agreement, sofern nicht anders angegeben.", - "3rd-party-title": "Verweis auf Lizenzen von Drittanbietern", - "licensing-details": "Lizenzdetails", - "licensed-to": "Lizenziert an", - "licensing-period": "Lizenzzeitraum", - "analyzed-pages": "Analysierte Seiten", - "usage-details": "Verwendungsdetails", - "total-analyzed": "Insgesamt analysierte Seiten seit {{date}}", - "licensed-page-count": "Anzahl der lizenzierten Seiten", - "current-analyzed": "Analysierte Seiten im aktuellen Lizenzierungszeitraum", - "unlicensed-analyzed": "Nicht lizenzierte analysierte Seiten", - "email-report": "E-Mail-Bericht", - "email": { - "title": "Lizenzbericht {{licenseCustomer}}", - "body": { - "analyzed": "Insgesamt analysierte Seiten im aktuellen Lizenzzeitraum: {{pages}}.", - "licensed": "Lizenzierte Seiten: {{pages}}." - } - }, - "chart": { - "licensed-total": "Lizenzierte Summe", - "cumulative": "Kumulative Seiten", - "pages-per-month": "Seiten pro Monat", - "total-pages": "Alle Seiten", - "legend": "Legende" - } - }, - "audit": "Prüfung", - "audit-screen": { - "table-header": { - "title": "{{length}} Protokolle" - }, - "table-col-names": { - "message": "Botschaft", - "user": "Benutzer", - "date": "Datum", - "category": "Kategorie" - }, - "all-categories": "Alle Kategorien", - "all-users": "Alle Nutzer", - "to": "zu", - "no-data": { - "title": "Keine verfügbaren Protokolle." - } - }, - "pagination": { - "previous": "Zurück", - "next": "Nächster" - }, - "configurations": "Konfigurationen", - "smtp-config-screen": { - "title": "Konfigurieren Sie das SMTP-Konto", - "subtitle": "Mit SMTP (Simple Mail Transfer Protocol) können Sie Ihre E-Mails über die angegebenen Servereinstellungen senden.", - "actions": { - "save": "Konfigurationen speichern", - "test-connection": "Testverbindung" - }, - "form": { - "host": "Gastgeber", - "host-placeholder": "SMTP-Host", - "port": "Hafen", - "from": "Von", - "from-placeholder": "Absender-E-Mail-Adresse", - "from-display-name": "Name für Absender", - "from-display-name-placeholder": "Anzeigename für die Absender-E-Mail-Adresse", - "from-display-name-hint": "Infotext zum Namen des Absenders.", - "reply-to": "Antwort an", - "reply-to-placeholder": "Antwort an E-Mail-Adresse", - "reply-to-display-name": "Name für die Antwort an", - "reply-to-display-name-placeholder": "Anzeigename für die Antwort auf die E-Mail-Adresse", - "envelope-from": "Umschlag von", - "envelope-from-placeholder": "E-Mail-Adresse des Absenderumschlags", - "envelope-from-hint": "Infotext zum Umschlag aus dem Feld.", - "ssl": "Aktivieren Sie SSL", - "starttls": "Aktivieren Sie StartTLS", - "auth": "Aktivieren Sie die Authentifizierung", - "change-credentials": "Anmeldeinformationen ändern" - }, - "test": { - "success": "Test-E-Mail wurde erfolgreich gesendet!", - "error": "Test-E-Mail konnte nicht gesendet werden! Bitte überarbeiten Sie die E-Mail-Adresse." - } - }, - "smtp-auth-config": { - "title": "Aktivieren Sie die Authentifizierung", - "form": { - "username": "Nutzername", - "username-placeholder": "Login Benutzername", - "password": "Passwort" - }, - "actions": { - "save": "Anmeldeinformationen speichern", - "cancel": "Stornieren" - } - }, - "default-colors": "Standardfarben", - "default-colors-screen": { - "table-header": { - "title": "{{length}} Standardfarben" - }, - "table-col-names": { - "key": "Art", - "color": "Farbe" - }, - "types": { - "defaultColor": "Standardfarbe", - "requestAdd": "Anfrage hinzufügen", - "requestRemove": "Anfrage entfernen", - "notRedacted": "Übersprungen", - "analysisColor": "Analyse", - "dictionaryRequestColor": "Wörterbuchanforderung", - "manualRedactionColor": "Manuelle Redaktion", - "previewColor": "Vorschau", - "updatedColor": "Aktualisiert" - }, - "action": { - "edit": "Farbe bearbeiten" - } - }, - "edit-color-dialog": { - "success": "Die Farbe für {{color}} wurde erfolgreich aktualisiert.", - "error": "Fehler beim Aktualisieren der Farben.", + "due-date": "Geburtstermin", + "template": "Dossiervorlage" + }, + "errors": { + "project-already-exists": "Dossier mit diesem Namen existiert bereits!", + "generic": "Dossier konnte nicht gespeichert werden" + }, + "actions": { "save": "speichern", - "form": { - "color": "Farbe", - "color-placeholder": "Farbe" - } + "save-and-add-members": "Team speichern und bearbeiten" + } }, - "downloads-list": { - "table-header": { - "title": "{{length}} Downloads" - }, - "no-data": { - "title": "Keine aktiven Downloads." - }, - "table-col-names": { - "name": "Name", - "size": "Größe", - "type": "Art", - "date": "Datum", - "status": "Status" - }, + "header": "Dossiers", + "edit": { + "action": "Dossier bearbeiten" + }, + "delete": { + "action": "Dossier löschen", + "delete-failed": "Fehler beim Löschen des Dossiers: {{projectName}}" + }, + "no-match": { + "title": "Keine Dossiers stimmen mit Ihren aktuellen Filtern überein." + } + }, + "project-details": { + "title": "Dossier Details", + "dialog": { + "title": "Dossier Details", + "info": { + "file-count": "Anzahl der Dateien: {{fileCount}}" + }, + "actions": { + "reanalyse-project": "Analysieren Sie das Dossier" + } + }, + "owner": "Inhaber", + "members": "Mitglieder", + "see-less": "Weniger sehen", + "assign-members": "Mitglieder zuweisen", + "expand": "Zeige Details", + "collapse": "Details ausblenden" + }, + "project-overview": { + "no-ocr": "Keine OCR", + "ocr-performed": "Für diese Datei wurde eine OCR durchgeführt.", + "no-data": { + "title": "Es liegen noch keine Dokumente vor.", + "action": "Dokument hochladen" + }, + "no-match": { + "title": "Keine Dokumente stimmen mit Ihren aktuellen Filtern überein." + }, + "search": "Dokumentname...", + "header-actions": { + "edit": "Bearbeiten", + "delete": "Löschen", + "assign": "Eigentümer zuweisen", + "upload-document": "Dokument hochladen", + "download-redacted-files": "Laden Sie redigierte Dateien herunter" + }, + "ocr-file": "OCR-Dokument", + "download-file": "Herunterladen", + "download-file-disabled": "Das Herunterladen ist nur für genehmigte Dateien zulässig", + "under-approval": "Zur Genehmigung", + "approve": "Genehmigen", + "approve-disabled": "Die Datei kann erst genehmigt werden, wenn sie mit den neuesten Wörterbüchern analysiert und alle Vorschläge verarbeitet wurden", + "under-review": "Wird überprüft", + "upload-files": "Ziehen", + "upload-files-btn": "Daten hochladen", + "new-rule": { + "label": "Veraltet", + "toast": { + "message-project": "Erneute Analyse erforderlich:", "actions": { - "delete": "Löschen", - "download": "Herunterladen" + "reanalyse-all": "Analysieren Sie alle", + "reanalyse-file": "Analysieren Sie diese Datei", + "later": "Später" } + } }, - "digital-signature-screen": { - "title": "Digitale Unterschrift", - "no-data": { - "title": "Es ist kein Zertifikat für digitale Signatur konfiguriert. Laden Sie zum Signieren redigierter Dokumente ein PCKS.12-Zertifikat hoch.", - "action": "Zertifikat hochladen" - }, - "reason": { - "label": "Grund", - "placeholder": "Grund" - }, - "certificate-name": { - "label": "Zertifikatname", - "placeholder": "Zertifikatname" - }, - "contact-info": { - "label": "Kontakt Informationen", - "placeholder": "Kontakt Informationen" - }, - "location": { - "label": "Ort", - "placeholder": "Ort" - }, - "password": { - "label": "Zertifikat Passwort / Schlüssel", - "placeholder": "Passwort" - }, - "action": { - "save": "Digitale Signatur speichern", - "delete": "Digitale Signatur löschen", - "reset": "Zurücksetzen", - "save-success": "Digitale Signatur erfolgreich gespeichert", - "save-error": "Fehler beim Speichern der digitalen Signatur", - "certificate-not-valid-error": "Das hochgeladene Zertifikat gilt nicht zum Signieren von PDFs. Das PCKS.12-Format ist erforderlich.", - "delete-success": "Digitale Signatur entfernt. Redigierte Dateien werden nicht mehr signiert!", - "delete-error": "Fehler beim Entfernen der digitalen Signatur. Versuchen Sie es erneut." + "report": { + "action": "Redaktionsbericht herunterladen" + }, + "assign": "Prüfer zuweisen", + "assign-me": "Zuweisen zu mir", + "table-header": { + "title": "{{length}} Dokumente", + "bulk-select": "Auswahl umschalten" + }, + "table-col-names": { + "name": "Name", + "added-on": "Hinzugefügt", + "needs-work": "Arbeitsbelastung", + "assigned-to": "Zugewiesen an", + "pages": "Seiten", + "status": "Status" + }, + "upload-error": "Datei konnte nicht hochgeladen werden: {{name}}", + "delete-file-error": "Fehler beim Löschen der Datei: {{filename}}", + "delete-files-error": "Dateien konnten nicht gelöscht werden.", + "reanalyse": { + "action": "Datei analysieren" + }, + "delete": { + "action": "Datei löschen" + }, + "file-listing": { + "file-entry": { + "status": "Status: {{status}}", + "number-of-pages": "Anzahl der Seiten: {{numberOfPages}}", + "number-of-analyses": "Anzahl der Analysen: {{numberOfAnalyses}}", + "added": "Datum hinzugefügt: {{added}}", + "last-updated": "Letzte Aktualisierung: {{lastUpdated}}", + "file-pending": "Steht aus...", + "file-processing": "wird bearbeitet", + "file-error": "Nachbearbeitung erforderlich" + } + }, + "project-details": { + "charts": { + "documents-in-project": "Dokumente im Dossier" + }, + "stats": { + "documents": "{{count}} Dokumente", + "analysed-pages": "{{count}} Seiten", + "people": "{{count}} Benutzer", + "created-on": "Erstellt am {{date}}", + "due-date": "Geburtstermin}}" + }, + "description": "Beschreibung" + }, + "header": "Dossierübersicht", + "bulk": { + "delete": "Dokumente löschen", + "assign": "Prüfer zuweisen", + "reanalyse": "Dokumente analysieren", + "reanalyse-error-outdated": "Nicht alle ausgewählten Dokumente können analysiert werden, einige sind Ihnen möglicherweise nicht zugeordnet oder bereits analysiert." + }, + "reanalyse-project": { + "success": "Dateien, die erneut analysiert werden sollen.", + "error": "Dateien für die erneute Analyse konnten nicht geplant werden. Bitte versuche es erneut." + } + }, + "file-preview": { + "delta": "Delta", + "redacted": "Vorschau", + "standard": "Standard", + "standard-tooltip": "In der Standard-Workload-Ansicht werden alle Hinweise, Redaktionen und Empfehlungen angezeigt", + "redacted-tooltip": "Die Redaktionsvorschau zeigt nur Redaktionen an. Betrachten Sie dies als Vorschau für die endgültige redigierte Version. Diese Ansicht ist nur verfügbar, wenn für die Datei keine Änderungen ausstehen", + "delta-tooltip": "Delta View zeigt nur die Änderungen seit der letzten erneuten Analyse an. Diese Ansicht ist nur verfügbar, wenn mindestens eine Änderung vorliegt", + "no-data": { + "title": "Auf dieser Seite befinden sich keine Anmerkungen." + }, + "show-redacted-view": "Redigierte Vorschau anzeigen", + "cannot-show-redacted-view": "Redaktionen nicht synchron. Die redigierte Vorschau ist nur nach einer erneuten Analyse verfügbar", + "reanalyse-notification": "Dieses Dokument wurde nicht mit dem neuesten Regel- / Wörterbuchsatz verarbeitet. Analysieren Sie jetzt, um aktualisierte Anmerkungen zu erhalten.", + "reanalyse-file": "Datei-Reanalyse läuft", + "view-toggle": "Redigierte Ansicht", + "tabs": { + "quick-navigation": "Schnelle Navigation", + "document-info": { + "label": "Dokumentinfo", + "close": "Dokumentinfo schließen", + "edit": "Dokumentinformationen bearbeiten", + "details": { + "project": "in {{projectName}}", + "pages": "{{pages}} Seiten", + "revised-pages": "{{pages}} überarbeitete Seiten", + "created-on": "Erstellt am: {{date}}", + "due": "Geburtstermin}}" } + }, + "annotations": { + "label": "Arbeitsbelastung", + "select": "Wählen", + "jump-to-previous": "Zum vorherigen springen", + "jump-to-next": "Zum nächsten springen" + }, + "is-excluded": "Die Redaktion ist für dieses Dokument deaktiviert." }, - "stream-download": { - "abort": "Sie haben einen aktiven Download. Wenn Sie dieses Fenster schließen, wird es gestoppt!", - "error": "Fehler beim Herunterladen von {{Dateiname}}. Bitte versuche es erneut ..." + "toggle-analysis": { + "enable": "Zur Redaktion aktivieren", + "disable": "Deaktivieren Sie die Redaktion", + "only-managers": "Das Aktivieren / Deaktivieren ist nur für Manager zulässig" }, - "roles": { - "RED_USER": "Benutzer", - "RED_MANAGER": "Manager", - "RED_USER_ADMIN": "Benutzer Admin", - "RED_ADMIN": "Anwendungsadministrator", - "NO_ROLE": "Keine Rolle definiert", - "INACTIVE": "Inaktiv", - "MANAGER_ADMIN": "Manager", - "REGULAR": "Regulär" - }, - "file-attributes-csv-import": { - "title": "Wählen Sie CSV-Spalten aus, die als Dateiattribute verwendet werden sollen", - "cancel": "Stornieren", - "save": { - "label": "Attribute speichern", - "success": "{{count}} Dateiattribute erfolgreich erstellt!", - "error": "Fehler beim Erstellen der Dateiattribute!" + "reviewer": "Zugewiesen an", + "unassigned": "Nicht zugewiesen", + "assign-reviewer": "Prüfer zuweisen", + "cancel-assign-reviewer": "Stornieren", + "save-assign-reviewer": "speichern", + "assign-me": "Weisen Sie mir zu", + "last-reviewer": "Zuletzt überprüft von:", + "fullscreen": "Vollbild (F)", + "document-info": "Ihre Dokumenteninfo lebt hier. Dies schließt Metadaten ein, die für jedes Dokument erforderlich sind.", + "new-tab-ssr": "Öffnen Sie das Dokument im serverseitigen Rendering-Modus", + "html-debug": "Öffnen Sie das Dokument-HTML-Debug", + "download-original-file": "Originaldatei herunterladen", + "exit-fullscreen": "Beenden Sie den Vollbildmodus (F)", + "quick-nav": { + "jump-first": "Zur ersten Anmerkung springen", + "jump-last": "Zur letzten Anmerkung springen" + } + }, + "annotation-actions": { + "message": { + "manual-redaction": { + "undo": { + "success": "Rückgängig machen erfolgreich", + "error": "Fehler beim Rückgängigmachen: {{error}}" }, - "delimiter": "Trennzeichen", - "delimiter-placeholder": ",", - "encoding": "Codierung", - "encoding-placeholder": "UTF-8", - "key-column": "Schlüsselspalte", - "key-column-placeholder": "Spalte auswählen ...", - "parse-csv": "Analysieren Sie CSV mit neuen Optionen", - "total-rows": "{{rows}} Zeilen insgesamt", - "available": "{{value}} verfügbar", - "selected": "{{value}} ausgewählt", - "csv-column": "CSV-Spalte", - "csv-column-preview": "CSV-Spaltenvorschau", - "no-hovered-column": "Zeigen Sie eine Vorschau der CSV-Spalte an, indem Sie den Mauszeiger über den Eintrag bewegen.", - "no-sample-data-for": "Keine Beispieldaten für {{column}}.", - "search": { - "placeholder": "Suche nach Spaltennamen ..." + "suggest": { + "success": "Redaktionsvorschlag gespeichert", + "error": "Fehler beim Speichern des Redaktionsvorschlags: {{error}}" }, - "table-header": { - "title": "{{length}} Dateiattribute", - "actions": { - "remove-selected": "Ausgewählte entfernen", - "read-only": "Nur schreibgeschützt machen", - "enable-read-only": "Aktivieren Sie Schreibgeschützt für alle Attribute", - "disable-read-only": "Deaktivieren Sie Schreibgeschützt für alle Attribute", - "type": "Art" - } + "add": { + "success": "Redaktion hinzugefügt!", + "error": "Fehler beim Speichern der Redaktion: {{error}}" }, - "file": "Datei:", - "table-col-names": { - "name": "Name", - "type": "Art", - "read-only": "Schreibgeschützt", - "primary": "primär", - "primary-info-tooltip": "Der Wert des als primär eingestellten Attributs wird unter dem Dateinamen in der Dokumentenliste angezeigt." + "decline": { + "success": "Redaktionsvorschlag abgelehnt!", + "error": "Redaktion konnte nicht abgelehnt werden: {{error}}" }, - "quick-activation": { - "all": "Alle", - "none": "Keiner" + "approve": { + "success": "Redaktionsvorschlag genehmigt!", + "error": "Fehler beim Genehmigen der Redaktion: {{error}}" }, - "action": { - "edit-name": "Namen bearbeiten", - "save-name": "speichern", - "cancel-edit-name": "Stornieren", - "remove": "Entfernen" + "request-remove": { + "success": "Angefordert, Redaktion zu entfernen!", + "error": "Fehler beim Anfordern der Entfernung der Redaktion: {{error}}" }, - "no-data": { - "title": "Keine Dateiattribute definiert. Wählen Sie im linken Bereich eine Spalte aus, um mit der Definition der Dateiattribute zu beginnen." + "remove": { + "success": "Redaktion entfernt!", + "error": "Redaktion konnte nicht entfernt werden: {{error}}" } + }, + "dictionary": { + "undo": { + "success": "Rückgängig machen erfolgreich", + "error": "Fehler beim Rückgängigmachen: {{error}}" + }, + "suggest": { + "success": "Vorschlag zur Wörterbuchänderung gespeichert!", + "error": "Vorschlag zum Ändern des Wörterbuchs konnte nicht gespeichert werden: {{error}}" + }, + "add": { + "success": "Eintrag zum Wörterbuch hinzugefügt. Änderungen werden nach einer erneuten Analyse sichtbar.", + "error": "Fehler beim Hinzufügen des Eintrags zum Wörterbuch: {{error}}" + }, + "decline": { + "success": "Wörterbuchvorschlag abgelehnt.", + "error": "Fehler beim Ablehnen des Wörterbuchvorschlags: {{error}}" + }, + "approve": { + "success": "Wörterbucheintrag genehmigt. Änderungen werden nach einer erneuten Analyse sichtbar.", + "error": "Wörterbucheintrag konnte nicht genehmigt werden: {{error}}" + }, + "request-remove": { + "success": "Angefordert, Wörterbucheintrag zu entfernen!", + "error": "Das Entfernen des Wörterbucheintrags konnte nicht angefordert werden: {{error}}" + }, + "remove": { + "success": "Wörterbucheintrag entfernt!", + "error": "Fehler beim Entfernen des Wörterbucheintrags: {{error}}" + } + } }, - "download-includes": "Wählen Sie aus, was beim Download enthalten ist:", - "download-type": { - "label": "{{length}} Dokumentversionen", - "PREVIEW": "Vorschau PDF", - "ORIGINAL": "Original PDF", - "REDACTED": "Redigiertes PDF" + "force-redaction": { + "label": "Redaktion erzwingen" }, - "report-type": { - "label": "{{length}} Berichtstypen", - "WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE": "Begründung Anhang A1", - "WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE": "Begründung Anhang A2", - "EXCEL_MULTI_FILE": "Excel (für alle)", - "EXCEL_SINGLE_FILE": "Excel (pro Datei)" + "accept-suggestion": { + "label": "Vorschlag annehmen", + "add-to-dict": "Genehmigen und zum Wörterbuch hinzufügen", + "remove-from-dict": "Genehmigen und aus dem Wörterbuch entfernen", + "only-here": "Nur hier genehmigen" + }, + "accept-recommendation": { + "label": "Empfehlung annehmen" + }, + "suggest-remove-annotation": "Entfernen oder vorschlagen, diesen Eintrag zu entfernen", + "suggest-remove-annotations": "Entfernen oder Vorschlagen, um ausgewählte Einträge zu entfernen", + "reject-suggestion": "Vorschlag ablehnen", + "remove-annotation": { + "suggest-remove-from-dict": "Schlagen Sie vor, aus dem Wörterbuch zu entfernen", + "suggest-only-here": "Schlagen Sie vor, nur hier zu entfernen", + "remove-from-dict": "Aus dem Wörterbuch entfernen", + "only-here": "Nur hier entfernen", + "false-positive": "Falsch positiv" + }, + "remove": "Entfernen", + "undo": "Rückgängig machen", + "reject": "Ablehnen", + "hide": "Ausblenden", + "show": "Show" + }, + "initials-avatar": { + "unassigned": "Nicht zugewiesen", + "you": "Sie" + }, + "assign-file-owner": { + "dialog": { + "single-user": "Gutachter", + "title": "File Reviewer verwalten", + "save": "speichern", + "cancel": "Stornieren" + } + }, + "assign-project-owner": { + "dialog": { + "single-user": "Inhaber", + "multi-user": "Team überprüfen", + "title": "Dossier-Team verwalten", + "members": "Mitglieder", + "save": "Änderungen speichern", + "cancel": "Stornieren", + "search": "Suche...", + "no-members": "Noch keine Mitglieder. Wählen Sie aus der Liste unten." + } + }, + "project-member-guard": { + "access-denied": "Sie dürfen nicht auf diese Seite zugreifen." + }, + "comments": { + "comment": "{{count}} Kommentar", + "comments": "{{count}} Kommentare", + "add-comment": "Einen Kommentar hinzufügen", + "hide-comments": "Ausblenden", + "cancel": "Stornieren" + }, + "UNPROCESSED": "Unverarbeitet", + "REPROCESS": "wird bearbeitet", + "FULLREPROCESS": "wird bearbeitet", + "PROCESSING": "wird bearbeitet", + "OCR_PROCESSING": "OCR-Verarbeitung", + "ERROR": "Nachbearbeitung erforderlich", + "UNASSIGNED": "Nicht zugewiesen", + "UNDER_REVIEW": "Wird überprüft", + "UNDER_APPROVAL": "Unter Genehmigung", + "APPROVED": "Genehmigt", + "EXCLUDED": "Ausgeschlossen", + "by": "durch", + "efsa": "EFSA-Genehmigung", + "finished": "Fertig", + "submitted": "Eingereicht", + "active": "Aktiv", + "archived": "Archiviert", + "hint": "Hinweis", + "skipped": "Übersprungen", + "redaction": "Redaktion", + "comment": "Kommentar", + "pending-analysis": "Bis zur erneuten Analyse", + "suggestion": "Redaktionsvorschlag", + "dictionary": "Wörterbuch", + "type": "Art", + "content": "Grund", + "page": "Seite", + "annotation": "Anmerkung", + "annotations": "Anmerkungen", + "filter": { + "hint": "Nur Hinweise", + "redaction": "Redigiert", + "suggestion": "Vorgeschlagene Redaktion", + "analysis": "Analyse erforderlich", + "none": "Keine Anmerkungen", + "updated": "Aktualisiert", + "image": "Bilder" + }, + "filter-menu": { + "label": "Filter", + "filter-types": "Filtertypen", + "filter-options": "Filteroptionen", + "with-comments": "Nur Anmerkungen mit Kommentaren anzeigen" + }, + "sorting": { + "recent": "Kürzlich", + "oldest": "Älteste", + "alphabetically": "Alphabetisch", + "number-of-pages": "Seitenzahl", + "number-of-analyses": "Anzahl der Analysen", + "custom": "Benutzerdefiniert" + }, + "readonly-pill": "Schreibgeschützt", + "group": { + "redactions": "Redaktionswörterbücher", + "hints": "Tipp Wörterbücher" + }, + "annotation-type": { + "recommendation": "Empfehlung", + "remove-only-here": "Ausstehende Entfernung (nur hier)", + "add-dictionary": "Ausstehend zum Wörterbuch hinzufügen", + "remove-dictionary": "Ausstehend aus dem Wörterbuch entfernen", + "suggestion-add-dictionary": "Vorgeschlagenes Wörterbuch hinzufügen", + "suggestion-force-redaction": "Redaktion der Vorschlagskraft", + "suggestion-remove-dictionary": "Vorgeschlagene Wörterbuchentfernung", + "suggestion-add": "Vorgeschlagene Redaktion", + "suggestion-remove": "Vorgeschlagene Redaktionsentfernung", + "skipped": "Übersprungen", + "pending-analysis": "Bis zur erneuten Analyse", + "hint": "Hinweis", + "redaction": "Redaktion", + "manual-redaction": "Manuelle Redaktion", + "declined-suggestion": "Abgelehnter Vorschlag" + }, + "manual-annotation": { + "dialog": { + "header": { + "dictionary": "Zum Wörterbuch hinzufügen", + "redaction": "Redaktion", + "force": "Redaktion erzwingen", + "request-dictionary": "Anfrage zum Wörterbuch hinzufügen", + "request-redaction": "Redaktion anfordern", + "false-positive": "Falsch positiv setzen", + "request-false-positive": "Falsch positiv anfordern" + }, + "add-redaction": { + "success": "Redaktionsvorschlag hinzugefügt!", + "failed": "Fehler beim Hinzufügen der Redaktion: {{message}}" + }, + "actions": { + "save": "speichern" + }, + "content": { + "text": "Ausgewählter Text:", + "rectangle": "Benutzerdefiniertes Rechteck", + "dictionary": "Wörterbuch", + "reason": "Grund", + "reason-placeholder": "Wähle einen Grund ...", + "legalBasis": "Rechtliche Grundlage", + "comment": "Kommentar" + } + }, + "approve-request": { + "success": "Anfrage genehmigt.", + "error": "Anfrage konnte nicht genehmigt werden." + }, + "undo": { + "success": "Aktion rückgängig gemacht.", + "error": "Aktion konnte nicht rückgängig gemacht werden." + }, + "redaction-request": { + "success": "Redaktion angefordert.", + "error": "Redaktion konnte nicht angefordert werden." + }, + "remove-redaction-request": { + "success": "Redaktion entfernt.", + "error": "Redaktion konnte nicht entfernt werden." + }, + "redaction-add": { + "success": "Redaktion hinzugefügt.", + "error": "Redaktion konnte nicht hinzugefügt werden." + } + }, + "remove-annotations-dialog": { + "remove-from-dictionary": { + "title": "Aus dem Wörterbuch entfernen", + "question": "Folgende Einträge werden aus ihren jeweiligen Wörterbüchern entfernt:" + }, + "remove-only-here": { + "title": "Redaktion entfernen", + "question": "Folgende Redaktionen werden nur hier entfernt:" + }, + "dictionary": "Wörterbuch", + "value": "Wert", + "confirm": "Ja, fortfahren und entfernen!", + "deny": "Stornieren" + }, + "confirmation-dialog": { + "assign-file-to-me": { + "title": "Prüfer neu zuweisen", + "question": "Dieses Dokument wird derzeit von einer anderen Person geprüft. Möchten Sie der Prüfer werden und sich diesem Dokument zuordnen?" + }, + "delete-file": { + "title": "Dokument löschen", + "question": "Möchten Sie fortfahren?" + }, + "delete-project": { + "title": "Dossier löschen", + "question": "Möchten Sie fortfahren?" + } + }, + "add-edit-file-attribute": { + "title": { + "edit": "Bearbeiten Sie das {{name}} Dateiattribut", + "new": "Neues Dateiattribut hinzufügen" + }, + "form": { + "name": "Attributname", + "name-placeholder": "Name eingeben", + "column-header": "CSV-Spaltenüberschrift", + "column-header-placeholder": "Geben Sie den CSV-Spaltenkopf ein", + "read-only": "Schreibgeschützt machen", + "type": "Art", + "primary": "Als primär festlegen" + }, + "save": "Attribut speichern" + }, + "file-attribute-types": { + "TEXT": "Freier Text", + "NUMBER": "Nummer", + "DATE": "Datum" + }, + "add-edit-dictionary": { + "title": { + "edit": "Bearbeiten Sie das {{name}} Wörterbuch", + "new": "Wörterbuch erstellen" + }, + "form": { + "name": "Wörterbuchname", + "name-placeholder": "Name eingeben", + "name-hint": "Kann nach dem Speichern nicht bearbeitet werden.", + "description": "Beschreibung", + "description-placeholder": "Beschreibung eingeben", + "rank": "Rang", + "rank-placeholder": "1000", + "color": "Hex Farbe", + "color-placeholder": "#", + "redaction": "Redaktion", + "hint": "Hinweis", + "case-sensitive": "Groß- und Kleinschreibung beachten", + "add-to-dictionary-action": "Verfügbar zum Hinzufügen zum Wörterbuch" + }, + "error": { + "dictionary-already-exists": "Wörterbuch mit diesem Namen existiert bereits!", + "invalid-color-or-rank": "Ungültige Farbe oder Rang! Der Rang wird bereits von einem anderen Wörterbuch verwendet oder die Farbe ist keine gültige HexColor!", + "generic": "Wörterbuch konnte nicht gespeichert werden!" + }, + "save": "Wörterbuch speichern" + }, + "add-edit-project-template": { + "title": { + "edit": "Bearbeiten Sie die {{name}} Dossiervorlage", + "new": "Erstellen Sie eine Dossiervorlage" + }, + "form": { + "name": "Name der Dossiervorlage", + "name-placeholder": "Name eingeben", + "description": "Beschreibung", + "description-placeholder": "Beschreibung eingeben", + "valid-from": "Gültig ab", + "valid-to": "Gültig bis" + }, + "save": "Speichern Sie die Dossiervorlage" + }, + "dictionary-overview": { + "action": { + "delete": "Wörterbuch löschen", + "edit": "Wörterbuch bearbeiten", + "download": "Wörterbuch herunterladen", + "upload": "Wörterbuch hochladen" + }, + "error": { + "entries-too-short": "Einige Einträge des Wörterbuchs liegen unter der Mindestlänge von 2. Diese sind rot hervorgehoben!", + "generic": "Etwas ist schief gelaufen ... Wörterbuch-Update fehlgeschlagen!" + }, + "success": { + "generic": "Wörterbuch aktualisiert!" + }, + "search": "Suche...", + "save-changes": "Änderungen speichern", + "revert-changes": "Zurückkehren", + "dictionary-details": { + "description": "Beschreibung" + }, + "compare": { + "compare": "Vergleichen Sie", + "select-ruleset": "Wählen Sie Dossiervorlage", + "select-dictionary": "Wählen Sie Wörterbuch" + }, + "select-dictionary": "Wählen Sie oben ein Wörterbuch aus, um es mit dem aktuellen zu vergleichen." + }, + "dictionary-listing": { + "action": { + "delete": "Wörterbuch löschen", + "edit": "Wörterbuch bearbeiten" + }, + "case-sensitive": "Groß- und Kleinschreibung beachten", + "add-new": "Neues Wörterbuch", + "stats": { + "charts": { + "types": "Typen", + "entries": "Einträge" + } + }, + "table-header": { + "title": "{{length}} Wörterbücher" + }, + "table-col-names": { + "type": "Art", + "order-of-importance": "Reihenfolge der Wichtigkeit", + "hint-redaction": "Hinweis / Redaktion" + }, + "search": "Suche...", + "no-data": { + "title": "Es gibt noch keine Wörterbücher.", + "action": "Neues Wörterbuch" + }, + "no-match": { + "title": "Keine Wörterbücher stimmen mit Ihren aktuellen Filtern überein." + } + }, + "digital-signature": "Digitale Unterschrift", + "project-templates": "Dossiervorlagen", + "settings": "die Einstellungen", + "project-templates-listing": { + "table-header": { + "title": "{{length}} Dossiervorlagen" + }, + "entries": "{{length}} Einträge", + "dictionaries": "{{length}} Wörterbücher", + "action": { + "delete": "Vorlage löschen", + "edit": "Vorlage bearbeiten" + }, + "add-new": "Neue Dossiervorlage", + "search": "Suche...", + "table-col-names": { + "name": "Name", + "created-by": "Erstellt von", + "created-on": "Erstellt am", + "modified-on": "Geändert am" + }, + "no-data": { + "title": "Es gibt noch keine Dossiervorlagen." + }, + "no-match": { + "title": "Keine Dossiervorlagen stimmen mit Ihren aktuellen Filtern überein." + } + }, + "file-attributes-listing": { + "search": "Suche nach Attributnamen ...", + "add-new": "Neues Attribut", + "table-header": { + "title": "{{length}} Dateiattribute" + }, + "bulk-actions": { + "delete": "Ausgewählte Attribute löschen" + }, + "table-col-names": { + "name": "Name", + "type": "Eingabetyp", + "read-only": "Schreibgeschützt", + "csv-column": "CSV-Spalte", + "primary": "Primär", + "primary-info-tooltip": "Der Wert des als primär eingestellten Attributs wird unter dem Dateinamen in der Dokumentenliste angezeigt." + }, + "no-data": { + "title": "Es sind noch keine Dateiattribute vorhanden." + }, + "no-match": { + "title": "Keine Dateiattribute stimmen mit Ihren aktuellen Filtern überein." + }, + "read-only": "Schreibgeschützt", + "action": { + "edit": "Attribut bearbeiten", + "delete": "Attribut löschen" + }, + "upload-csv": "Konfiguration der Dateiattribute hochladen" + }, + "confirm-delete-file-attribute": { + "title": { + "single": "Löschen Sie {{name}}", + "bulk": "Dateiattribute löschen" + }, + "warning": "Achtung: Dies kann nicht rückgängig gemacht werden!", + "delete": { + "single": "Attribut löschen", + "bulk": "Attribute löschen" + }, + "cancel": { + "single": "Attribut behalten", + "bulk": "Attribute behalten" + }, + "impacted-documents": { + "single": "Alle Dokumente, für die es verwendet wird, sind betroffen", + "bulk": "Alle Dokumente, für die sie verwendet werden, sind betroffen" + }, + "lost-details": "Alle eingegebenen Details in den Dokumenten gehen verloren", + "toast-error": "Bitte bestätigen Sie, dass Sie die Auswirkungen Ihrer Handlung verstehen!" + }, + "confirm-delete-users": { + "title": { + "single": "Benutzer aus Arbeitsbereich löschen", + "bulk": "Benutzer aus dem Arbeitsbereich löschen" + }, + "warning": "Achtung: Dies kann nicht rückgängig gemacht werden!", + "impacted-projects": "{{projectsCount}} Dossiers sind betroffen", + "impacted-documents": { + "single": "Alle Dokumente, deren Überprüfung durch den Benutzer aussteht, sind betroffen", + "bulk": "Alle Dokumente, deren Überprüfung durch die Benutzer aussteht, sind betroffen" + }, + "delete": { + "single": "Benutzer löschen", + "bulk": "Benutzer löschen" + }, + "cancel": { + "single": "Benutzer behalten", + "bulk": "Benutzer behalten" + }, + "toast-error": "Bitte bestätigen Sie, dass Sie die Auswirkungen Ihrer Handlung verstehen!" + }, + "document-info": { + "title": "Dateiattribute einführen", + "save": "Dokumentinformationen speichern", + "save-approval": "Speichern und zur Genehmigung senden" + }, + "user-profile": { + "title": "Mein Profil", + "form": { + "email": "Email", + "first-name": "Vorname", + "last-name": "Nachname" }, "actions": { - "all": "Alle", - "none": "Keiner" + "save": "Profil speichern" } + }, + "user-listing": { + "table-header": { + "title": "{{length}} Benutzer" + }, + "table-col-names": { + "name": "Name", + "email": "Email", + "active": "Aktiv", + "roles": "Rollen" + }, + "action": { + "edit": "Benutzer bearbeiten", + "delete": "Benutzer löschen" + }, + "bulk": { + "delete": "Benutzer löschen", + "delete-disabled": "Sie können Ihr eigenes Konto nicht löschen." + }, + "search": "Suche...", + "add-new": "Neuer Benutzer", + "no-match": { + "title": "Keine Benutzer stimmen mit Ihren aktuellen Filtern überein." + } + }, + "add-edit-user": { + "title": { + "new": "Neuen Benutzer hinzufügen", + "edit": "Benutzer bearbeiten" + }, + "form": { + "first-name": "Vorname", + "last-name": "Nachname", + "email": "Email", + "role": "Rolle" + }, + "actions": { + "save": "Benutzer speichern", + "save-changes": "Änderungen speichern", + "delete": "Benutzer löschen", + "cancel": "Stornieren" + } + }, + "user-stats": { + "title": "Benutzer", + "chart": { + "users": "Benutzer im Arbeitsbereich" + }, + "expand": "Zeige Details", + "collapse": "Details ausblenden" + }, + "rules-screen": { + "error": { + "generic": "Etwas ist schief gelaufen ... Regelaktualisierung fehlgeschlagen!" + }, + "success": { + "generic": "Regeln aktualisiert!" + }, + "action": { + "download": "Regeln herunterladen", + "upload": "Regeln hochladen" + }, + "save-changes": "Änderungen speichern", + "revert-changes": "Zurückkehren" + }, + "watermark-screen": { + "form": { + "text-placeholder": "Text eingeben", + "opacity": "Opazität", + "color": "Farbe", + "font-size": "Schriftgröße", + "font-type": "Schriftart", + "orientation": "Orientierung" + }, + "action": { + "save": "Änderungen speichern", + "revert": "Zurückkehren", + "change-success": "Wasserzeichen aktualisiert!", + "delete-success": "Wasserzeichen gelöscht.", + "error": "Wasserzeichen konnte nicht aktualisiert werden" + }, + "title": "Wasserzeichen" + }, + "dictionaries": "Wörterbücher", + "user-management": "Benutzerverwaltung", + "license-information": "Lizenzinformationen", + "notifications": { + "today": "Heute", + "yesterday": "Gestern", + "tomorrow": "Morgen", + "mark-read": "als gelesen markieren", + "mark-unread": "als ungelesen markieren" + }, + "rule-editor": "Regeleditor", + "watermark": "Wasserzeichen", + "file-attributes": "Dateiattribute", + "pending-changes-guard": "WARNUNG: Sie haben nicht gespeicherte Änderungen. Drücken Sie Abbrechen, um zurück zu gehen und diese Änderungen zu speichern, oder OK, um diese Änderungen zu verlieren.", + "reset-filters": "Filter zurücksetzen", + "overwrite-files-dialog": { + "title": "Dokument existiert bereits!", + "question": "{{filename}} existiert bereits. Wählen Sie, wie Sie fortfahren möchten:", + "options": { + "overwrite": "Ersetzen Sie das vorhandene Dokument", + "skip": "Vorhandenes Dokument behalten", + "cancel": "Alle Uploads abbrechen", + "remember": "Erinnere dich an die Wahl und frag mich nicht noch einmal" + } + }, + "license-info-screen": { + "backend-version": "Backend-Anwendungsversion", + "frontend-version": "Frontend-Anwendungsversion", + "custom-app-title": "Titel der benutzerdefinierten Anwendung", + "copyright-claim-title": "Urheberrechtsanspruch", + "copyright-claim-text": "Copyright © 2020 - {{currentYear}} knecon AG (unterstützt von IQSER)", + "end-user-license-title": "Endbenutzer-Lizenzvereinbarung", + "end-user-license-text": "Die Verwendung dieses Produkts unterliegt den Bestimmungen der Redaction End User Agreement, sofern nicht anders angegeben.", + "3rd-party-title": "Verweis auf Lizenzen von Drittanbietern", + "licensing-details": "Lizenzdetails", + "licensed-to": "Lizenziert an", + "licensing-period": "Lizenzzeitraum", + "analyzed-pages": "Analysierte Seiten", + "usage-details": "Verwendungsdetails", + "total-analyzed": "Insgesamt analysierte Seiten seit {{date}}", + "licensed-page-count": "Anzahl der lizenzierten Seiten", + "current-analyzed": "Analysierte Seiten im aktuellen Lizenzierungszeitraum", + "unlicensed-analyzed": "Nicht lizenzierte analysierte Seiten", + "email-report": "E-Mail-Bericht", + "email": { + "title": "Lizenzbericht {{licenseCustomer}}", + "body": { + "analyzed": "Insgesamt analysierte Seiten im aktuellen Lizenzzeitraum: {{pages}}.", + "licensed": "Lizenzierte Seiten: {{pages}}." + } + }, + "chart": { + "licensed-total": "Lizenzierte Summe", + "cumulative": "Kumulative Seiten", + "pages-per-month": "Seiten pro Monat", + "total-pages": "Alle Seiten", + "legend": "Legende" + } + }, + "audit": "Prüfung", + "audit-screen": { + "table-header": { + "title": "{{length}} Protokolle" + }, + "table-col-names": { + "message": "Botschaft", + "user": "Benutzer", + "date": "Datum", + "category": "Kategorie" + }, + "all-categories": "Alle Kategorien", + "all-users": "Alle Nutzer", + "to": "zu", + "no-data": { + "title": "Keine verfügbaren Protokolle." + } + }, + "pagination": { + "previous": "Zurück", + "next": "Nächster" + }, + "configurations": "Konfigurationen", + "smtp-config-screen": { + "title": "Konfigurieren Sie das SMTP-Konto", + "subtitle": "Mit SMTP (Simple Mail Transfer Protocol) können Sie Ihre E-Mails über die angegebenen Servereinstellungen senden.", + "actions": { + "save": "Konfigurationen speichern", + "test-connection": "Testverbindung" + }, + "form": { + "host": "Gastgeber", + "host-placeholder": "SMTP-Host", + "port": "Hafen", + "from": "Von", + "from-placeholder": "Absender-E-Mail-Adresse", + "from-display-name": "Name für Absender", + "from-display-name-placeholder": "Anzeigename für die Absender-E-Mail-Adresse", + "from-display-name-hint": "Infotext zum Namen des Absenders.", + "reply-to": "Antwort an", + "reply-to-placeholder": "Antwort an E-Mail-Adresse", + "reply-to-display-name": "Name für die Antwort an", + "reply-to-display-name-placeholder": "Anzeigename für die Antwort auf die E-Mail-Adresse", + "envelope-from": "Umschlag von", + "envelope-from-placeholder": "E-Mail-Adresse des Absenderumschlags", + "envelope-from-hint": "Infotext zum Umschlag aus dem Feld.", + "ssl": "Aktivieren Sie SSL", + "starttls": "Aktivieren Sie StartTLS", + "auth": "Aktivieren Sie die Authentifizierung", + "change-credentials": "Anmeldeinformationen ändern" + }, + "test": { + "success": "Test-E-Mail wurde erfolgreich gesendet!", + "error": "Test-E-Mail konnte nicht gesendet werden! Bitte überarbeiten Sie die E-Mail-Adresse." + } + }, + "smtp-auth-config": { + "title": "Aktivieren Sie die Authentifizierung", + "form": { + "username": "Nutzername", + "username-placeholder": "Login Benutzername", + "password": "Passwort" + }, + "actions": { + "save": "Anmeldeinformationen speichern", + "cancel": "Stornieren" + } + }, + "default-colors": "Standardfarben", + "default-colors-screen": { + "table-header": { + "title": "{{length}} Standardfarben" + }, + "table-col-names": { + "key": "Art", + "color": "Farbe" + }, + "types": { + "defaultColor": "Standardfarbe", + "requestAdd": "Anfrage hinzufügen", + "requestRemove": "Anfrage entfernen", + "notRedacted": "Übersprungen", + "analysisColor": "Analyse", + "dictionaryRequestColor": "Wörterbuchanforderung", + "manualRedactionColor": "Manuelle Redaktion", + "previewColor": "Vorschau", + "updatedColor": "Aktualisiert" + }, + "action": { + "edit": "Farbe bearbeiten" + } + }, + "edit-color-dialog": { + "success": "Die Farbe für {{color}} wurde erfolgreich aktualisiert.", + "error": "Fehler beim Aktualisieren der Farben.", + "save": "speichern", + "form": { + "color": "Farbe", + "color-placeholder": "Farbe" + } + }, + "downloads-list": { + "table-header": { + "title": "{{length}} Downloads" + }, + "no-data": { + "title": "Keine aktiven Downloads." + }, + "table-col-names": { + "name": "Name", + "size": "Größe", + "type": "Art", + "date": "Datum", + "status": "Status" + }, + "actions": { + "delete": "Löschen", + "download": "Herunterladen" + } + }, + "digital-signature-screen": { + "title": "Digitale Unterschrift", + "no-data": { + "title": "Es ist kein Zertifikat für digitale Signatur konfiguriert. Laden Sie zum Signieren redigierter Dokumente ein PCKS.12-Zertifikat hoch.", + "action": "Zertifikat hochladen" + }, + "reason": { + "label": "Grund", + "placeholder": "Grund" + }, + "certificate-name": { + "label": "Zertifikatname", + "placeholder": "Zertifikatname" + }, + "contact-info": { + "label": "Kontakt Informationen", + "placeholder": "Kontakt Informationen" + }, + "location": { + "label": "Ort", + "placeholder": "Ort" + }, + "password": { + "label": "Zertifikat Passwort / Schlüssel", + "placeholder": "Passwort" + }, + "action": { + "save": "Digitale Signatur speichern", + "delete": "Digitale Signatur löschen", + "reset": "Zurücksetzen", + "save-success": "Digitale Signatur erfolgreich gespeichert", + "save-error": "Fehler beim Speichern der digitalen Signatur", + "certificate-not-valid-error": "Das hochgeladene Zertifikat gilt nicht zum Signieren von PDFs. Das PCKS.12-Format ist erforderlich.", + "delete-success": "Digitale Signatur entfernt. Redigierte Dateien werden nicht mehr signiert!", + "delete-error": "Fehler beim Entfernen der digitalen Signatur. Versuchen Sie es erneut." + } + }, + "stream-download": { + "abort": "Sie haben einen aktiven Download. Wenn Sie dieses Fenster schließen, wird es gestoppt!", + "error": "Fehler beim Herunterladen von {{Dateiname}}. Bitte versuche es erneut ..." + }, + "roles": { + "RED_USER": "Benutzer", + "RED_MANAGER": "Manager", + "RED_USER_ADMIN": "Benutzer Admin", + "RED_ADMIN": "Anwendungsadministrator", + "NO_ROLE": "Keine Rolle definiert", + "INACTIVE": "Inaktiv", + "MANAGER_ADMIN": "Manager", + "REGULAR": "Regulär" + }, + "file-attributes-csv-import": { + "title": "Wählen Sie CSV-Spalten aus, die als Dateiattribute verwendet werden sollen", + "cancel": "Stornieren", + "save": { + "label": "Attribute speichern", + "success": "{{count}} Dateiattribute erfolgreich erstellt!", + "error": "Fehler beim Erstellen der Dateiattribute!" + }, + "delimiter": "Trennzeichen", + "delimiter-placeholder": ",", + "encoding": "Codierung", + "encoding-placeholder": "UTF-8", + "key-column": "Schlüsselspalte", + "key-column-placeholder": "Spalte auswählen ...", + "parse-csv": "Analysieren Sie CSV mit neuen Optionen", + "total-rows": "{{rows}} Zeilen insgesamt", + "available": "{{value}} verfügbar", + "selected": "{{value}} ausgewählt", + "csv-column": "CSV-Spalte", + "csv-column-preview": "CSV-Spaltenvorschau", + "no-hovered-column": "Zeigen Sie eine Vorschau der CSV-Spalte an, indem Sie den Mauszeiger über den Eintrag bewegen.", + "no-sample-data-for": "Keine Beispieldaten für {{column}}.", + "search": { + "placeholder": "Suche nach Spaltennamen ..." + }, + "table-header": { + "title": "{{length}} Dateiattribute", + "actions": { + "remove-selected": "Ausgewählte entfernen", + "read-only": "Nur schreibgeschützt machen", + "enable-read-only": "Aktivieren Sie Schreibgeschützt für alle Attribute", + "disable-read-only": "Deaktivieren Sie Schreibgeschützt für alle Attribute", + "type": "Art" + } + }, + "file": "Datei:", + "table-col-names": { + "name": "Name", + "type": "Art", + "read-only": "Schreibgeschützt", + "primary": "primär", + "primary-info-tooltip": "Der Wert des als primär eingestellten Attributs wird unter dem Dateinamen in der Dokumentenliste angezeigt." + }, + "quick-activation": { + "all": "Alle", + "none": "Keiner" + }, + "action": { + "edit-name": "Namen bearbeiten", + "save-name": "speichern", + "cancel-edit-name": "Stornieren", + "remove": "Entfernen" + }, + "no-data": { + "title": "Keine Dateiattribute definiert. Wählen Sie im linken Bereich eine Spalte aus, um mit der Definition der Dateiattribute zu beginnen." + } + }, + "download-includes": "Wählen Sie aus, was beim Download enthalten ist:", + "download-type": { + "label": "{{length}} Dokumentversionen", + "PREVIEW": "Vorschau PDF", + "ORIGINAL": "Original PDF", + "REDACTED": "Redigiertes PDF" + }, + "report-type": { + "label": "{{length}} Berichtstypen", + "WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE": "Begründung Anhang A1", + "WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE": "Begründung Anhang A2", + "EXCEL_MULTI_FILE": "Excel (für alle)", + "EXCEL_SINGLE_FILE": "Excel (pro Datei)" + }, + "actions": { + "all": "Alle", + "none": "Keiner" + } } diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index ddceee4fc..5fa9be6f9 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -1,1300 +1,1315 @@ { - "auth-error": { - "heading": "Your user doesn't have the required RED-* roles to access this application. Please contact your admin for access!", - "heading-with-name-and-link": "Your user doesn't have the required RED-* roles to access this application. Please contact {{adminName}} for access!", - "heading-with-name": "Your user doesn't have the required RED-* roles to access this application. Please contact {{adminName}} for access!", - "heading-with-link": "Your user doesn't have the required RED-* roles to access this application. Please contact your admin for access!", - "logout": "Logout" + "auth-error": { + "heading": "Your user doesn't have the required RED-* roles to access this application. Please contact your admin for access!", + "heading-with-name-and-link": "Your user doesn't have the required RED-* roles to access this application. Please contact {{adminName}} for access!", + "heading-with-name": "Your user doesn't have the required RED-* roles to access this application. Please contact {{adminName}} for access!", + "heading-with-link": "Your user doesn't have the required RED-* roles to access this application. Please contact your admin for access!", + "logout": "Logout" + }, + "app-name": "DDA-R", + "dev-mode": "[ DEV MODE ]", + "upload-status": { + "error": { + "file-size": "File to large. Limit is {{size}}MB.", + "generic": "Failed to upload file... " }, - "app-name": "DDA-R", - "dev-mode": "[ DEV MODE ]", - "upload-status": { - "error": { - "file-size": "File to large. Limit is {{size}}MB.", - "generic": "Failed to upload file... " - }, - "dialog": { - "title": "File Uploads ({{len}})", - "actions": { - "re-upload": "Retry Upload", - "cancel": "Cancel Upload" - } + "dialog": { + "title": "File Uploads ({{len}})", + "actions": { + "re-upload": "Retry Upload", + "cancel": "Cancel Upload" + } + } + }, + "download-status": { + "queued": "Your download has been queued, you can see all your requested downloads here: My Downloads .", + "error": { + "generic": "Download failed" + }, + "dialog": { + "title": "Downloads ({{len}})", + "tooltip": "{{len}} files", + "actions": { + "download": "Download now", + "cancel": "Cancel Download" + } + } + }, + "pdf-viewer": { + "text-popup": { + "actions": { + "search": "Search for selection" + } + }, + "search-in-progress": "Search in progress..." + }, + "common": { + "close": "Close View", + "dialog": { + "close": "Close Dialog" + }, + "confirmation-dialog": { + "title": "Confirm Action", + "description": "This action requires confirmation, do you wish to proceed?", + "confirm": "Yes", + "deny": "No" + } + }, + "top-bar": { + "navigation-items": { + "projects": "Active Dossier", + "back": "Back", + "my-account": { + "children": { + "admin": "Settings", + "downloads": "My Downloads", + "my-profile": "My Profile", + "language": { + "label": "Language", + "en": "English", + "de": "German" + }, + "logout": "Logout" } + } + } + }, + "filters": { + "filter-by": "Filter:", + "status": "Status", + "people": "Dossier Member(s)", + "assigned-people": "Assignee(s)", + "due-date": "Due Date", + "created-on": "Created On", + "project": "Dossier", + "document": "Document", + "needs-work": "Workload", + "rulesets": "Rule Sets" + }, + "report": { + "unavailable": "Redaction report is only available once all files have been approved.", + "unavailable-single": "Redaction report is only available once this file has been approved.", + "action": { + "label": "Download Redaction Report", + "efsa": "Download with EFSA Template", + "syngenta": "Download with Syngenta Template" + } + }, + "project-listing": { + "search": "Dossier name...", + "reanalyse": { + "action": "Analyze entire dossier" }, - "download-status": { - "queued": "Your download has been queued, you can see all your requested downloads here: My Downloads .", - "error": { - "generic": "Download failed" + "download-files": { + "action": "Download Redacted Files" + }, + "table-header": { + "title": "{{length}} active dossiers", + "bulk-select": "Toggle Selection", + "recent": "Recent" + }, + "table-col-names": { + "name": "Document", + "needs-work": "Workload", + "owner": "Owner", + "status": "Status", + "ruleset": "Rule Set" + }, + "stats": { + "analyzed-pages": "Pages", + "total-people": "Total user(s)", + "charts": { + "projects": "Dossiers", + "total-documents": "Total Document(s)" + } + }, + "no-data": { + "title": "You currently have no dossiers.", + "action": "New Dossier" + }, + "add-new": "New Dossier", + "header": "Dossiers", + "edit": { + "action": "Edit Dossier" + }, + "delete": { + "action": "Delete Dossier", + "delete-failed": "Failed to delete dossier: {{projectName}}" + }, + "no-match": { + "title": "No dossiers match your current filters." + } + }, + "add-project-dialog": { + "header-new": "Create Dossier", + "form": { + "name": { + "label": "Dossier Name", + "placeholder": "Enter Name" + }, + "description": { + "label": "Description", + "placeholder": "Enter Description" + }, + "due-date": "Due Date", + "template": "Dossier Template" + }, + "errors": { + "project-already-exists": "Dossier with this name already exists!", + "generic": "Failed to save dossier" + }, + "actions": { + "save": "Save", + "save-and-add-members": "Save and Edit Team" + } + }, + "edit-project-dialog": { + "header": "Edit {{projectName}}", + "nav-items": { + "dossier-info": "Dossier Info", + "general-info": "General Information", + "download-package": "Download Package", + "choose-download": "Choose what is included at download:", + "dictionary": "Dictionary", + "dossier-dictionary": "Dossier Dictionary", + "members": "Members", + "team-members": "Team Members", + "project-attributes": "Dossier Attributes", + "report-attributes": "Report Attributes" + }, + "actions": { + "save": "Save Changes", + "revert": "Revert" + }, + "general-info": { + "form": { + "name": { + "label": "Dossier Name", + "placeholder": "Enter Name" }, - "dialog": { - "title": "Downloads ({{len}})", - "tooltip": "{{len}} files", - "actions": { - "download": "Download now", - "cancel": "Cancel Download" - } - } - }, - "pdf-viewer": { - "text-popup": { - "actions": { - "search": "Search for selection" - } + "description": { + "label": "Description", + "placeholder": "Enter Description" }, - "search-in-progress": "Search in progress..." - }, - "common": { - "close": "Close View", - "dialog": { - "close": "Close Dialog" - }, - "confirmation-dialog": { - "title": "Confirm Action", - "description": "This action requires confirmation, do you wish to proceed?", - "confirm": "Yes", - "deny": "No" - } - }, - "top-bar": { - "navigation-items": { - "projects": "Active Dossier", - "back": "Back", - "my-account": { - "children": { - "admin": "Settings", - "downloads": "My Downloads", - "my-profile": "My Profile", - "language": { - "label": "Language", - "en": "English", - "de": "German" - }, - "logout": "Logout" - } - } - } - }, - "filters": { - "filter-by": "Filter:", - "status": "Status", - "people": "Dossier Member(s)", - "assigned-people": "Assignee(s)", "due-date": "Due Date", - "created-on": "Created On", - "project": "Dossier", - "document": "Document", - "needs-work": "Workload", - "rulesets": "Rule Sets" + "template": "Dossier Template" + } + }, + "dictionary": { + "entries": "{{length}} entries" + }, + "unsaved-changes": "You have unsaved changes. Save or revert before changing the tab.", + "change-successful": "Project was updated." + }, + "project-details": { + "title": "Dossier Details", + "dialog": { + "title": "Dossier Details", + "info": { + "file-count": "Number of files: {{fileCount}}" + }, + "actions": { + "reanalyse-project": "Analyze Dossier" + } + }, + "owner": "Owner", + "members": "Members", + "see-less": "See less", + "assign-members": "Assign Members", + "expand": "Show Details", + "collapse": "Hide Details" + }, + "dossier-dictionary-dialog": { + "title": "Dossier Dictionary", + "save-changes": "Save Changes", + "cancel": "cancel" + }, + "project-overview": { + "no-ocr": "No OCR", + "ocr-performed": "OCR was performed for this file.", + "no-data": { + "title": "There are no documents yet.", + "action": "Upload Document" + }, + "no-match": { + "title": "No documents match your current filters." + }, + "search": "Document name...", + "header-actions": { + "edit": "Edit", + "delete": "Delete", + "assign": "Assign Owner & Members", + "upload-document": "Upload Document", + "download-redacted-files": "Download Redacted Files" + }, + "ocr-file": "OCR Document", + "download-file": "Download", + "download-file-disabled": "Download is only permitted for approved files", + "under-approval": "For Approval", + "approve": "Approve", + "approve-disabled": "File can only be approved once it has been analysed with the latest dictionaries and all suggestions have been processed", + "under-review": "Under Review", + "upload-files": "Drag & Drop files anywhere", + "upload-files-btn": "Upload Files", + "new-rule": { + "label": "Outdated", + "toast": { + "message-project": "Reanalysis required: ", + "actions": { + "reanalyse-all": "Analyze all", + "reanalyse-file": "Analyze this file", + "later": "Later" + } + } }, "report": { - "unavailable": "Redaction report is only available once all files have been approved.", - "unavailable-single": "Redaction report is only available once this file has been approved.", - "action": { - "label": "Download Redaction Report", - "efsa": "Download with EFSA Template", - "syngenta": "Download with Syngenta Template" - } + "action": "Download redaction report" }, - "project-listing": { - "search": "Dossier name...", - "reanalyse": { - "action": "Analyze entire dossier" - }, - "download-files": { - "action": "Download Redacted Files" - }, - "table-header": { - "title": "{{length}} active dossiers", - "bulk-select": "Toggle Selection", - "recent": "Recent" - }, - "table-col-names": { - "name": "Document", - "needs-work": "Workload", - "owner": "Owner", - "status": "Status", - "ruleset": "Rule Set" - }, - "stats": { - "analyzed-pages": "Pages", - "total-people": "Total user(s)", - "charts": { - "projects": "Dossiers", - "total-documents": "Total Document(s)" - } - }, - "no-data": { - "title": "You currently have no dossiers.", - "action": "New Dossier" - }, - "add-new": "New Dossier", - "header": "Dossiers", - "edit": { - "action": "Edit Dossier" - }, - "delete": { - "action": "Delete Dossier", - "delete-failed": "Failed to delete dossier: {{projectName}}" - }, - "no-match": { - "title": "No dossiers match your current filters." - } + "assign-reviewer": "Assign Reviewer", + "assign-approver": "Assign Approver", + "assign-me": "Assign To Me", + "table-header": { + "title": "{{length}} documents", + "bulk-select": "Toggle Selection" }, - "add-project-dialog": { - "header-new": "Create Dossier", - "form": { - "name": { - "label": "Dossier Name", - "placeholder": "Enter Name" - }, - "description": { - "label": "Description", - "placeholder": "Enter Description" - }, - "due-date": "Due Date", - "template": "Dossier Template" - }, - "errors": { - "project-already-exists": "Dossier with this name already exists!", - "generic": "Failed to save dossier" - }, - "actions": { - "save": "Save", - "save-and-add-members": "Save and Edit Team" - } + "table-col-names": { + "name": "Name", + "added-on": "Added", + "needs-work": "Workload", + "assigned-to": "Assigned to", + "pages": "Pages", + "status": "Status" }, - "edit-project-dialog": { - "header": "Edit {{projectName}}", - "nav-items": { - "dossier-info": "Dossier Info", - "general-info": "General Information", - "download-package": "Download Package", - "choose-download": "Choose what is included at download:", - "dictionary": "Dictionary", - "dossier-dictionary": "Dossier Dictionary", - "members": "Members", - "team-members": "Team Members", - "project-attributes": "Dossier Attributes", - "report-attributes": "Report Attributes" - }, - "actions": { - "save": "Save Changes", - "revert": "Revert" - }, - "general-info": { - "form": { - "name": { - "label": "Dossier Name", - "placeholder": "Enter Name" - }, - "description": { - "label": "Description", - "placeholder": "Enter Description" - }, - "due-date": "Due Date", - "template": "Dossier Template" - } - }, - "dictionary": { - "entries": "{{length}} entries" - }, - "unsaved-changes": "You have unsaved changes. Save or revert before changing the tab.", - "change-successful": "Project was updated." + "upload-error": "Failed to upload file: {{name}}", + "delete-file-error": "Failed to delete file: {{filename}}", + "delete-files-error": "Failed to delete files.", + "reanalyse": { + "action": "Analyze File" + }, + "delete": { + "action": "Delete File" + }, + "file-listing": { + "file-entry": { + "status": "Status: {{status}}", + "number-of-pages": "Number of pages: {{numberOfPages}}", + "number-of-analyses": "Analysis count: {{numberOfAnalyses}}", + "added": "Date added: {{added}}", + "last-updated": "Last updated: {{lastUpdated}}", + "file-pending": "Pending...", + "file-processing": "Processing", + "file-error": "Re-processing required" + } }, "project-details": { - "title": "Dossier Details", - "dialog": { - "title": "Dossier Details", - "info": { - "file-count": "Number of files: {{fileCount}}" - }, - "actions": { - "reanalyse-project": "Analyze Dossier" - } - }, - "owner": "Owner", - "members": "Members", - "see-less": "See less", - "assign-members": "Assign Members", - "expand": "Show Details", - "collapse": "Hide Details" + "charts": { + "documents-in-project": "Documents in Dossier" + }, + "stats": { + "documents": "{{count}} documents", + "analysed-pages": "{{count}} pages", + "people": "{{count}} user(s)", + "created-on": "Created on {{date}}", + "due-date": "Due {{date}}" + }, + "dictionary": "Dossier Dictionary", + "description": "Description" }, - "dossier-dictionary-dialog": { - "title": "Dossier Dictionary", - "save-changes": "Save Changes", - "cancel": "cancel" + "header": "Dossier Overview", + "bulk": { + "delete": "Delete Documents", + "assign": "Assign Reviewer", + "reanalyse": "Analyze Documents", + "reanalyse-error-outdated": "Not all selected documents can be analyzed, some may not be assigned to you or are already analyzed." }, - "project-overview": { - "no-ocr": "No OCR", - "ocr-performed": "OCR was performed for this file.", - "no-data": { - "title": "There are no documents yet.", - "action": "Upload Document" + "reanalyse-project": { + "success": "Files scheduled for reanalysis.", + "error": "Failed to schedule files for reanalysis. Please try again." + } + }, + "file-preview": { + "delta": "Delta", + "redacted": "Preview", + "standard": "Standard", + "standard-tooltip": "Standard Workload view shows all hints, redactions, recommendations & suggestions. This view allows editing.", + "redacted-tooltip": "Redaction preview shows only redactions. Consider this a preview for the final redacted version. This view is only available if the file has no pending changes & doesn't require a reanalysis", + "delta-tooltip": "Delta View shows only the changes since last re-analysis. This view is only available if there is at least 1 change", + "no-data": { + "title": "There are no annotations on this page." + }, + "show-redacted-view": "Show Redacted Preview", + "cannot-show-redacted-view": "Redactions out of sync. Redacted Preview only available after reanalysis", + "reanalyse-notification": "This document was not processed with the latest rule/dictionary set. Analyze now to get updated annotations.", + "reanalyse-file": "File reanalysis in progress", + "view-toggle": "Redacted View", + "tabs": { + "quick-navigation": "Quick Navigation", + "document-info": { + "label": "Document Info", + "close": "Close Document Info", + "edit": "Edit Document Info", + "details": { + "project": "in {{projectName}}", + "pages": "{{pages}} pages", + "revised-pages": "{{pages}} revised pages", + "created-on": "Created on: {{date}}", + "due": "Due: {{date}}" + } + }, + "annotations": { + "label": "Workload", + "select": "Select", + "jump-to-previous": "Jump to Previous", + "jump-to-next": "Jump to Next" + }, + "is-excluded": "Redaction is disabled for this document." + }, + "toggle-analysis": { + "enable": "Enable for redaction", + "disable": "Disable redaction", + "only-managers": "Enabling / disabling is permitted only for managers" + }, + "reviewer": "Assigned to", + "unassigned": "Unassigned", + "assign-reviewer": "Assign Reviewer", + "cancel-assign-reviewer": "Cancel", + "save-assign-reviewer": "Save", + "assign-me": "Assign to me", + "last-reviewer": "Last Reviewed by:", + "fullscreen": "Full Screen (F)", + "document-info": "Your Document Info lives here. This includes metadata required on each document.", + "new-tab-ssr": "Open Document in Server Side Rendering Mode", + "html-debug": "Open Document HTML Debug", + "download-original-file": "Download Original File", + "exit-fullscreen": "Exit Full Screen (F)", + "quick-nav": { + "jump-first": "Jump to first page", + "jump-last": "Jump to last page" + } + }, + "annotation-actions": { + "message": { + "manual-redaction": { + "undo": { + "success": "Undo successful", + "error": "Failed to undo: {{error}}" }, - "no-match": { - "title": "No documents match your current filters." + "suggest": { + "success": "Redaction suggestion saved", + "error": "Failed to save redaction suggestion: {{error}}" + }, + "add": { + "success": "Redaction added!", + "error": "Failed to save redaction: {{error}}" }, "search": "Document name...", "header-actions": { - "edit": "Edit", - "delete": "Delete", - "upload-document": "Upload Document", - "download-redacted-files": "Download Redacted Files" - }, - "ocr-file": "OCR Document", - "download-file": "Download", - "download-file-disabled": "Download is only permitted for approved files", - "under-approval": "For Approval", - "approve": "Approve", - "approve-disabled": "File can only be approved once it has been analysed with the latest dictionaries and all suggestions have been processed", - "under-review": "Under Review", - "upload-files": "Drag & Drop files anywhere", - "upload-files-btn": "Upload Files", - "new-rule": { - "label": "Outdated", - "toast": { - "message-project": "Reanalysis required: ", - "actions": { - "reanalyse-all": "Analyze all", - "reanalyse-file": "Analyze this file", - "later": "Later" - } - } - }, - "report": { - "action": "Download redaction report" - }, - "assign-reviewer": "Assign Reviewer", - "assign-approver": "Assign Approver", - "assign-me": "Assign To Me", - "table-header": { + "edit": "Edit", + "delete": "Delete", + "upload-document": "Upload Document", + "download-redacted-files": "Download Redacted Files", + "decline": { + "success": "Redaction suggestion declined!", + "error": "Failed to decline redaction: {{error}}" + }, + "approve": { + "success": "Redaction suggestion approved!", + "error": "Failed to approved redaction: {{error}}" + }, + "request-remove": { + "success": "Requested to remove redaction!", + "error": "Failed to request removal of redaction: {{error}}" + }, + "assign-reviewer": "Assign Reviewer", + "assign-approver": "Assign Approver", + "assign-me": "Assign To Me", + "table-header": { "title": "{{length}} documents", "bulk-select": "Toggle Selection" + }, + "remove": { + "success": "Redaction removed!", + "error": "Failed to remove redaction: {{error}}" + } }, - "table-col-names": { - "name": "Name", - "added-on": "Added", - "needs-work": "Workload", - "assigned-to": "Assigned to", - "pages": "Pages", - "status": "Status" - }, - "upload-error": "Failed to upload file: {{name}}", - "delete-file-error": "Failed to delete file: {{filename}}", - "delete-files-error": "Failed to delete files.", - "reanalyse": { - "action": "Analyze File" - }, - "delete": { - "action": "Delete File" - }, - "file-listing": { - "file-entry": { - "status": "Status: {{status}}", - "number-of-pages": "Number of pages: {{numberOfPages}}", - "number-of-analyses": "Analysis count: {{numberOfAnalyses}}", - "added": "Date added: {{added}}", - "last-updated": "Last updated: {{lastUpdated}}", - "file-pending": "Pending...", - "file-processing": "Processing", - "file-error": "Re-processing required" - } - }, - "project-details": { - "charts": { - "documents-in-project": "Documents in Dossier" - }, - "stats": { - "documents": "{{count}} documents", - "analysed-pages": "{{count}} pages", - "people": "{{count}} user(s)", - "created-on": "Created on {{date}}", - "due-date": "Due {{date}}" - }, - "dictionary": "Dossier Dictionary", - "description": "Description" - }, - "header": "Dossier Overview", - "bulk": { - "delete": "Delete Documents", - "assign": "Assign Reviewer", - "reanalyse": "Analyze Documents", - "reanalyse-error-outdated": "Not all selected documents can be analyzed, some may not be assigned to you or are already analyzed." - }, - "reanalyse-project": { - "success": "Files scheduled for reanalysis.", - "error": "Failed to schedule files for reanalysis. Please try again." + "dictionary": { + "undo": { + "success": "Undo successful", + "error": "Failed to undo: {{error}}" + }, + "suggest": { + "success": "Suggestion for dictionary modification saved!", + "error": "Failed to save suggestion for dictionary modification: {{error}}" + }, + "add": { + "success": "Entry added to dictionary. Changes will be visible after reanalysis.", + "error": "Failed to add entry to dictionary: {{error}}" + }, + "decline": { + "success": "Dictionary suggestion declined.", + "error": "Failed to decline dictionary suggestion: {{error}}" + }, + "approve": { + "success": "Dictionary entry approved. Changes will be visible after reanalysis.", + "error": "Failed to approve dictionary entry: {{error}}" + }, + "request-remove": { + "success": "Requested to remove dictionary entry!", + "error": "Failed to request removal of dictionary entry: {{error}}" + }, + "remove": { + "success": "Dictionary entry removed!", + "error": "Failed to remove dictionary entry: {{error}}" + } } - }, - "file-preview": { - "delta": "Delta", - "redacted": "Preview", - "standard": "Standard", - "standard-tooltip": "Standard Workload view shows all hints, redactions, recommendations & suggestions. This view allows editing.", - "redacted-tooltip": "Redaction preview shows only redactions. Consider this a preview for the final redacted version. This view is only available if the file has no pending changes & doesn't require a reanalysis", - "delta-tooltip": "Delta View shows only the changes since last re-analysis. This view is only available if there is at least 1 change", - "no-data": { - "title": "There are no annotations on this page." - }, - "show-redacted-view": "Show Redacted Preview", - "cannot-show-redacted-view": "Redactions out of sync. Redacted Preview only available after reanalysis", - "reanalyse-notification": "This document was not processed with the latest rule/dictionary set. Analyze now to get updated annotations.", - "reanalyse-file": "File reanalysis in progress", - "view-toggle": "Redacted View", - "tabs": { - "quick-navigation": "Quick Navigation", - "document-info": { - "label": "Document Info", - "close": "Close Document Info", - "edit": "Edit Document Info", - "details": { - "project": "in {{projectName}}", - "pages": "{{pages}} pages", - "revised-pages": "{{pages}} revised pages", - "created-on": "Created on: {{date}}", - "due": "Due: {{date}}" - } - }, - "annotations": { - "label": "Workload", - "select": "Select", - "jump-to-previous": "Jump to Previous", - "jump-to-next": "Jump to Next" - }, - "is-excluded": "Redaction is disabled for this document." - }, - "toggle-analysis": { - "enable": "Enable for redaction", - "disable": "Disable redaction", - "only-managers": "Enabling / disabling is permitted only for managers" - }, - "reviewer": "Assigned to", - "unassigned": "Unassigned", - "assign-reviewer": "Assign Reviewer", - "cancel-assign-reviewer": "Cancel", - "save-assign-reviewer": "Save", - "assign-me": "Assign to me", - "last-reviewer": "Last Reviewed by:", - "fullscreen": "Full Screen (F)", - "document-info": "Your Document Info lives here. This includes metadata required on each document.", - "new-tab-ssr": "Open Document in Server Side Rendering Mode", - "html-debug": "Open Document HTML Debug", - "download-original-file": "Download Original File", - "exit-fullscreen": "Exit Full Screen (F)", - "quick-nav": { - "jump-first": "Jump to first page", - "jump-last": "Jump to last page" - } - }, - "annotation-actions": { - "message": { - "manual-redaction": { - "undo": { - "success": "Undo successful", - "error": "Failed to undo: {{error}}" - }, - "suggest": { - "success": "Redaction suggestion saved", - "error": "Failed to save redaction suggestion: {{error}}" - }, - "add": { - "success": "Redaction added!", - "error": "Failed to save redaction: {{error}}" - }, - "decline": { - "success": "Redaction suggestion declined!", - "error": "Failed to decline redaction: {{error}}" - }, - "approve": { - "success": "Redaction suggestion approved!", - "error": "Failed to approved redaction: {{error}}" - }, - "request-remove": { - "success": "Requested to remove redaction!", - "error": "Failed to request removal of redaction: {{error}}" - }, - "remove": { - "success": "Redaction removed!", - "error": "Failed to remove redaction: {{error}}" - } - }, - "dictionary": { - "undo": { - "success": "Undo successful", - "error": "Failed to undo: {{error}}" - }, - "suggest": { - "success": "Suggestion for dictionary modification saved!", - "error": "Failed to save suggestion for dictionary modification: {{error}}" - }, - "add": { - "success": "Entry added to dictionary. Changes will be visible after reanalysis.", - "error": "Failed to add entry to dictionary: {{error}}" - }, - "decline": { - "success": "Dictionary suggestion declined.", - "error": "Failed to decline dictionary suggestion: {{error}}" - }, - "approve": { - "success": "Dictionary entry approved. Changes will be visible after reanalysis.", - "error": "Failed to approve dictionary entry: {{error}}" - }, - "request-remove": { - "success": "Requested to remove dictionary entry!", - "error": "Failed to request removal of dictionary entry: {{error}}" - }, - "remove": { - "success": "Dictionary entry removed!", - "error": "Failed to remove dictionary entry: {{error}}" - } - } - }, - "force-redaction": { - "label": "Force Redaction" - }, - "accept-suggestion": { - "label": "Accept Suggestion", - "add-to-dict": "Approve and add to dictionary", - "remove-from-dict": "Approve and remove from dictionary", - "only-here": "Approve only here" - }, - "accept-recommendation": { - "label": "Accept Recommendation" - }, - "suggest-remove-annotation": "Remove or Suggest to remove this entry", - "suggest-remove-annotations": "Remove or Suggest to remove selected entries", - "reject-suggestion": "Reject Suggestion", - "remove-annotation": { - "suggest-remove-from-dict": "Suggest to remove from dictionary", - "suggest-only-here": "Suggest to remove only here", - "remove-from-dict": "Remove from dictionary", - "only-here": "Remove only here", - "false-positive": "False Positive" - }, - "remove": "Remove", - "undo": "Undo", - "reject": "Reject", - "hide": "Hide", - "show": "Show" - }, - "initials-avatar": { - "unassigned": "Unassigned", - "you": "You" - }, - "assign-reviewer-owner": { - "dialog": { - "single-user": "Reviewer", - "title": "Manage File Reviewer", - "save": "Save", - "cancel": "Cancel" - } - }, - "assign-approver-owner": { - "dialog": { - "single-user": "Approver", - "title": "Manage File Approver", - "save": "Save", - "cancel": "Cancel" - } - }, - "assign-project-owner": { - "dialog": { - "single-user": "Owner", - "multi-user": "Review Team", - "title": "Manage Dossier Team", - "approvers": "Approvers", - "reviewers": "Reviewers", - "save": "Save Changes", - "cancel": "Cancel", - "search": "Search...", - "no-approvers": "No approvers yet.\nSelect from the list below.", - "no-reviewers": "No reviewers yet.\nSelect from the list below.", - "make-approver": "Make Approver" - } - }, - "project-member-guard": { - "access-denied": "You are not allowed to access that page." - }, - "comments": { - "comment": "{{count}} comment", - "comments": "{{count}} comments", - "add-comment": "Add a comment", - "hide-comments": "Hide", - "cancel": "Cancel" - }, - "UNPROCESSED": "Unprocessed", - "REPROCESS": "Processing", - "FULLREPROCESS": "Processing", - "PROCESSING": "Processing", - "OCR_PROCESSING": "OCR Processing", - "ERROR": "Re-processing required", - "UNASSIGNED": "Unassigned", - "UNDER_REVIEW": "Under Review", - "UNDER_APPROVAL": "Under Approval", - "APPROVED": "Approved", - "EXCLUDED": "Excluded", - "by": "by", - "efsa": "EFSA Approval", - "finished": "Finished", - "submitted": "Submitted", - "active": "Active", - "archived": "Archived", - "hint": "Hint", + }, + "force-redaction": { + "label": "Force Redaction" + }, + "accept-suggestion": { + "label": "Accept Suggestion", + "add-to-dict": "Approve and add to dictionary", + "remove-from-dict": "Approve and remove from dictionary", + "only-here": "Approve only here" + }, + "accept-recommendation": { + "label": "Accept Recommendation" + }, + "suggest-remove-annotation": "Remove or Suggest to remove this entry", + "suggest-remove-annotations": "Remove or Suggest to remove selected entries", + "reject-suggestion": "Reject Suggestion", + "remove-annotation": { + "suggest-remove-from-dict": "Suggest to remove from dictionary", + "suggest-only-here": "Suggest to remove only here", + "remove-from-dict": "Remove from dictionary", + "only-here": "Remove only here", + "false-positive": "False Positive" + }, + "remove": "Remove", + "undo": "Undo", + "reject": "Reject", + "hide": "Hide", + "show": "Show" + } + }, + "initials-avatar": { + "unassigned": "Unassigned", + "you": "You" + }, + "assign-reviewer-owner": { + "dialog": { + "single-user": "Reviewer", + "title": "Manage File Reviewer", + "save": "Save", + "cancel": "Cancel" + } + }, + "assign-approver-owner": { + "dialog": { + "single-user": "Approver", + "title": "Manage File Approver", + "save": "Save", + "cancel": "Cancel" + } + }, + "assign-project-owner": { + "dialog": { + "single-user": "Owner", + "multi-user": "Review Team", + "title": "Manage Dossier Team", + "approvers": "Approvers", + "reviewers": "Reviewers", + "save": "Save Changes", + "cancel": "Cancel", + "search": "Search...", + "no-approvers": "No approvers yet.\nSelect from the list below.", + "no-reviewers": "No reviewers yet.\nSelect from the list below.", + "make-approver": "Make Approver" + } + }, + "project-member-guard": { + "access-denied": "You are not allowed to access that page." + }, + "comments": { + "comment": "{{count}} comment", + "comments": "{{count}} comments", + "add-comment": "Add a comment", + "hide-comments": "Hide", + "cancel": "Cancel" + }, + "UNPROCESSED": "Unprocessed", + "REPROCESS": "Processing", + "FULLREPROCESS": "Processing", + "PROCESSING": "Processing", + "OCR_PROCESSING": "OCR Processing", + "ERROR": "Re-processing required", + "UNASSIGNED": "Unassigned", + "UNDER_REVIEW": "Under Review", + "UNDER_APPROVAL": "Under Approval", + "APPROVED": "Approved", + "EXCLUDED": "Excluded", + "by": "by", + "efsa": "EFSA Approval", + "finished": "Finished", + "submitted": "Submitted", + "active": "Active", + "archived": "Archived", + "hint": "Hint", + "skipped": "Skipped", + "redaction": "Redaction", + "comment": "Comment", + "pending-analysis": "Pending Re-Analysis", + "suggestion": "Suggestion for redaction", + "dictionary": "Dictionary", + "type": "Type", + "content": "Reason", + "page": "Page", + "annotation": "Annotation", + "annotations": "Annotations", + "filter": { + "hint": "Hints only", + "redaction": "Redacted", + "suggestion": "Suggested Redaction", + "analysis": "Analysis required", + "none": "No Annotations", + "updated": "Updated", + "image": "Images" + }, + "filter-menu": { + "label": "Filter", + "filter-types": "Filter types", + "filter-options": "Filter options", + "with-comments": "Show only annotations with comments" + }, + "sorting": { + "recent": "Recent", + "oldest": "Oldest", + "alphabetically": "Alphabetically", + "number-of-pages": "Number of pages", + "number-of-analyses": "Number of analyses", + "custom": "Custom" + }, + "readonly-pill": "Read-only", + "group": { + "redactions": "Redaction Dictionaries", + "hints": "Hint Dictionaries" + }, + "annotation-type": { + "recommendation": "Recommendation", + "remove-only-here": "Pending removal ( only here )", + "add-dictionary": "Pending add to dictionary", + "remove-dictionary": "Pending remove from dictionary", + "suggestion-add-dictionary": "Suggested dictionary add", + "suggestion-force-redaction": "Suggestion force redaction", + "suggestion-remove-dictionary": "Suggested dictionary removal", + "suggestion-add": "Suggested redaction", + "suggestion-remove": "Suggested redaction removal", "skipped": "Skipped", - "redaction": "Redaction", - "comment": "Comment", "pending-analysis": "Pending Re-Analysis", - "suggestion": "Suggestion for redaction", - "dictionary": "Dictionary", - "type": "Type", - "content": "Reason", - "page": "Page", - "annotation": "Annotation", - "annotations": "Annotations", - "filter": { - "hint": "Hints only", - "redaction": "Redacted", - "suggestion": "Suggested Redaction", - "analysis": "Analysis required", - "none": "No Annotations", - "updated": "Updated", - "image": "Images" - }, - "filter-menu": { - "label": "Filter", - "filter-types": "Filter types", - "filter-options": "Filter options", - "with-comments": "Show only annotations with comments" - }, - "sorting": { - "recent": "Recent", - "oldest": "Oldest", - "alphabetically": "Alphabetically", - "number-of-pages": "Number of pages", - "number-of-analyses": "Number of analyses", - "custom": "Custom" - }, - "readonly-pill": "Read-only", - "group": { - "redactions": "Redaction Dictionaries", - "hints": "Hint Dictionaries" - }, - "annotation-type": { - "recommendation": "Recommendation", - "remove-only-here": "Pending removal ( only here )", - "add-dictionary": "Pending add to dictionary", - "remove-dictionary": "Pending remove from dictionary", - "suggestion-add-dictionary": "Suggested dictionary add", - "suggestion-force-redaction": "Suggestion force redaction", - "suggestion-remove-dictionary": "Suggested dictionary removal", - "suggestion-add": "Suggested redaction", - "suggestion-remove": "Suggested redaction removal", - "skipped": "Skipped", - "pending-analysis": "Pending Re-Analysis", - "hint": "Hint", + "hint": "Hint", + "redaction": "Redaction", + "manual-redaction": "Manual Redaction", + "declined-suggestion": "Declined Suggestion" + }, + "manual-annotation": { + "dialog": { + "header": { + "dictionary": "Add to dictionary", "redaction": "Redaction", - "manual-redaction": "Manual Redaction", - "declined-suggestion": "Declined Suggestion" - }, - "manual-annotation": { - "dialog": { - "header": { - "dictionary": "Add to dictionary", - "redaction": "Redaction", - "force": "Force Redaction", - "request-dictionary": "Request add to dictionary", - "request-redaction": "Request Redaction", - "false-positive": "Set false positive", - "request-false-positive": "Request false positive" - }, - "add-redaction": { - "success": "Redaction suggestion added!", - "failed": "Failed to add redaction: {{message}}" - }, - "actions": { - "save": "Save" - }, - "content": { - "text": "Selected text:", - "rectangle": "Custom Rectangle", - "dictionary": "Dictionary", - "reason": "Reason", - "reason-placeholder": "Select a reason ...", - "legalBasis": "Legal Basis", - "comment": "Comment" - } - }, - "approve-request": { - "success": "Request approved.", - "error": "Failed to approve request." - }, - "undo": { - "success": "Action undone.", - "error": "Failed to undo action." - }, - "redaction-request": { - "success": "Redaction requested.", - "error": "Failed to request redaction." - }, - "remove-redaction-request": { - "success": "Redaction removed.", - "error": "Failed to remove redaction." - }, - "redaction-add": { - "success": "Redaction added.", - "error": "Failed to add redaction." - } - }, - "remove-annotations-dialog": { - "remove-from-dictionary": { - "title": "Remove From Dictionary", - "question": "Following entries will be removed from their respective dictionaries:" - }, - "remove-only-here": { - "title": "Remove Redaction", - "question": "Following redactions will be removed only here:" - }, - "image-type": "Image: {{typeLabel}}", + "force": "Force Redaction", + "request-dictionary": "Request add to dictionary", + "request-redaction": "Request Redaction", + "false-positive": "Set false positive", + "request-false-positive": "Request false positive" + }, + "add-redaction": { + "success": "Redaction suggestion added!", + "failed": "Failed to add redaction: {{message}}" + }, + "actions": { + "save": "Save" + }, + "content": { + "text": "Selected text:", + "rectangle": "Custom Rectangle", "dictionary": "Dictionary", - "value": "Value", - "confirm": "Yes, proceed and remove!", - "deny": "Cancel" + "reason": "Reason", + "reason-placeholder": "Select a reason ...", + "legalBasis": "Legal Basis", + "comment": "Comment" + } }, - "confirmation-dialog": { - "assign-file-to-me": { - "title": "Re-assign reviewer", - "question": "This document is currently reviewed by someone else. Do you want to become the reviewer and assign yourself to this document?" - }, - "delete-file": { - "title": "Delete Document", - "question": "Do you wish to proceed?" - }, - "delete-project": { - "title": "Delete Dossier", - "question": "Do you wish to proceed?" - } + "approve-request": { + "success": "Request approved.", + "error": "Failed to approve request." }, - "add-edit-file-attribute": { - "title": { - "edit": "Edit {{name}} File Attribute", - "new": "Add New File Attribute" - }, - "form": { - "name": "Attribute Name", - "name-placeholder": "Enter Name", - "column-header": "CSV Column Header", - "column-header-placeholder": "Enter CSV Column Header", - "read-only": "Make Read-Only", - "type": "Type", - "primary": "Set as Primary" - }, - "save": "Save Attribute" + "undo": { + "success": "Action undone.", + "error": "Failed to undo action." }, - "file-attribute-types": { - "TEXT": "Free Text", - "NUMBER": "Number", - "DATE": "Date" + "redaction-request": { + "success": "Redaction requested.", + "error": "Failed to request redaction." }, - "add-edit-dictionary": { - "title": { - "edit": "Edit {{name}} Dictionary", - "new": "Create Dictionary" - }, - "form": { - "name": "Dictionary Name", - "name-placeholder": "Enter Name", - "name-hint": "Cannot be edited after saving.", - "description": "Description", - "description-placeholder": "Enter Description", - "rank": "Rank", - "rank-placeholder": "1000", - "color": "Hex Color", - "color-placeholder": "#", - "redaction": "Redaction", - "hint": "Hint", - "case-sensitive": "Case Sensitive", - "add-to-dictionary-action": "Available for add to dictionary" - }, - "error": { - "dictionary-already-exists": "Dictionary with this name already exists!", - "invalid-color-or-rank": "Invalid color or rank! Rank is already used by another dictionary or the color is not a valid hexColor!", - "generic": "Failed to save dictionary!" - }, - "save": "Save Dictionary" + "remove-redaction-request": { + "success": "Redaction removed.", + "error": "Failed to remove redaction." }, - "add-edit-project-template": { - "title": { - "edit": "Edit {{name}} Dossier Template", - "new": "Create Dossier Template" - }, - "form": { - "name": "Dossier Template Name", - "name-placeholder": "Enter Name", - "description": "Description", - "description-placeholder": "Enter Description", - "valid-from": "Valid from", - "valid-to": "Valid to" - }, - "save": "Save Dossier Template" + "redaction-add": { + "success": "Redaction added.", + "error": "Failed to add redaction." + } + }, + "remove-annotations-dialog": { + "remove-from-dictionary": { + "title": "Remove From Dictionary", + "question": "Following entries will be removed from their respective dictionaries:" }, - "dictionary-overview": { - "action": { - "delete": "Delete Dictionary", - "edit": "Edit Dictionary", - "download": "Download Dictionary", - "upload": "Upload Dictionary" - }, - "error": { - "entries-too-short": "Some entries of the dictionary are below the minimum length of 2. These are highlighted with red!", - "generic": "Something went wrong... Dictionary update failed!" - }, - "success": { - "generic": "Dictionary updated!" - }, - "search": "Search...", - "save-changes": "Save Changes", - "revert-changes": "Revert", - "dictionary-details": { - "description": "Description" - }, - "compare": { - "compare": "Compare", - "select-ruleset": "Select Dossier Template", - "select-dictionary": "Select Dictionary" - }, - "select-dictionary": "Select a dictionary above to compare with the current one." + "remove-only-here": { + "title": "Remove Redaction", + "question": "Following redactions will be removed only here:" }, - "dictionary-listing": { - "action": { - "delete": "Delete Dictionary", - "edit": "Edit Dictionary" - }, - "case-sensitive": "Case Sensitive", - "add-new": "New Dictionary", - "stats": { - "charts": { - "types": "Types", - "entries": "Entries" - } - }, - "table-header": { - "title": "{{length}} dictionaries" - }, - "table-col-names": { - "type": "Type", - "order-of-importance": "Order Of Importance", - "hint-redaction": "Hint/Redaction" - }, - "search": "Search...", - "no-data": { - "title": "There are no dictionaries yet.", - "action": "New Dictionary" - }, - "no-match": { - "title": "No dictionaries match your current filters." - } + "image-type": "Image: {{typeLabel}}", + "dictionary": "Dictionary", + "value": "Value", + "confirm": "Yes, proceed and remove!", + "deny": "Cancel" + }, + "confirmation-dialog": { + "assign-file-to-me": { + "title": "Re-assign reviewer", + "question": "This document is currently reviewed by someone else. Do you want to become the reviewer and assign yourself to this document?" }, - "digital-signature": "Digital Signature", - "project-templates": "Dossier Templates", - "settings": "Settings", - "project-templates-listing": { - "table-header": { - "title": "{{length}} dossier templates" - }, - "entries": "{{length}} entries", - "dictionaries": "{{length}} dictionaries", - "action": { - "delete": "Delete Template", - "edit": "Edit Template" - }, - "add-new": "New Dossier Template", - "search": "Search...", - "table-col-names": { - "name": "Name", - "created-by": "Created by", - "created-on": "Created on", - "modified-on": "Modified on" - }, - "no-data": { - "title": "There are no dossier templates yet." - }, - "no-match": { - "title": "No dossier templates match your current filters." - } + "delete-file": { + "title": "Delete Document", + "question": "Do you wish to proceed?" }, - "file-attributes-listing": { - "search": "Search by attribute name...", - "add-new": "New Attribute", - "table-header": { - "title": "{{length}} file attributes" - }, - "bulk-actions": { - "delete": "Delete Selected Attributes" - }, - "table-col-names": { - "name": "Name", - "type": "Input Type", - "read-only": "Read-Only", - "csv-column": "CSV Column", - "primary": "Primary", - "primary-info-tooltip": "The value of the attribute set as primary shows up under the file name in the documents list." - }, - "no-data": { - "title": "There are no file attributes yet." - }, - "no-match": { - "title": "No file attributes match your current filters." - }, - "read-only": "Read-only", - "action": { - "edit": "Edit Attribute", - "delete": "Delete Attribute" - }, - "upload-csv": "Upload File Attributes Configuration" + "delete-project": { + "title": "Delete Dossier", + "question": "Do you wish to proceed?" + } + }, + "add-edit-file-attribute": { + "title": { + "edit": "Edit {{name}} File Attribute", + "new": "Add New File Attribute" }, - "confirm-delete-file-attribute": { - "title": { - "single": "Delete {{name}}", - "bulk": "Delete File Attributes" - }, - "warning": "Warning: this cannot be undone!", - "delete": { - "single": "Delete Attribute", - "bulk": "Delete Attributes" - }, - "cancel": { - "single": "Keep Attribute", - "bulk": "Keep Attributes" - }, - "impacted-documents": { - "single": "All documents it is used on will be impacted", - "bulk": "All documents they are used on will be impacted" - }, - "lost-details": "All inputted details on the documents will be lost", - "toast-error": "Please confirm that you understand the ramifications of your action!" + "form": { + "name": "Attribute Name", + "name-placeholder": "Enter Name", + "column-header": "CSV Column Header", + "column-header-placeholder": "Enter CSV Column Header", + "read-only": "Make Read-Only", + "type": "Type", + "primary": "Set as Primary" }, - "confirm-delete-users": { - "title": { - "single": "Delete User from Workspace", - "bulk": "Delete Users from Workspace" - }, - "warning": "Warning: this cannot be undone!", - "impacted-projects": "{{projectsCount}} dossiers will be impacted", - "impacted-documents": { - "single": "All documents pending review from the user will be impacted", - "bulk": "All documents pending review from the users will be impacted" - }, - "delete": { - "single": "Delete User", - "bulk": "Delete Users" - }, - "cancel": { - "single": "Keep User", - "bulk": "Keep Users" - }, - "toast-error": "Please confirm that you understand the ramifications of your action!" + "save": "Save Attribute" + }, + "file-attribute-types": { + "TEXT": "Free Text", + "NUMBER": "Number", + "DATE": "Date" + }, + "add-edit-dictionary": { + "title": { + "edit": "Edit {{name}} Dictionary", + "new": "Create Dictionary" }, - "document-info": { - "title": "Introduce File Attributes", - "save": "Save Document Info", - "save-approval": "Save and Send for Approval" + "form": { + "name": "Dictionary Name", + "name-placeholder": "Enter Name", + "name-hint": "Cannot be edited after saving.", + "description": "Description", + "description-placeholder": "Enter Description", + "rank": "Rank", + "rank-placeholder": "1000", + "color": "Hex Color", + "color-placeholder": "#", + "redaction": "Redaction", + "hint": "Hint", + "case-sensitive": "Case Sensitive", + "add-to-dictionary-action": "Available for add to dictionary" }, - "user-profile": { - "title": "My profile", - "form": { - "email": "Email", - "first-name": "First name", - "last-name": "Last name" - }, - "actions": { - "save": "Save profile" - } + "error": { + "dictionary-already-exists": "Dictionary with this name already exists!", + "invalid-color-or-rank": "Invalid color or rank! Rank is already used by another dictionary or the color is not a valid hexColor!", + "generic": "Failed to save dictionary!" }, - "user-listing": { - "table-header": { - "title": "{{length}} users" - }, - "table-col-names": { - "name": "Name", - "email": "Email", - "active": "Active", - "roles": "Roles" - }, - "action": { - "edit": "Edit User", - "delete": "Delete User" - }, - "bulk": { - "delete": "Delete Users", - "delete-disabled": "You cannot delete your own account." - }, - "search": "Search...", - "add-new": "New User", - "no-match": { - "title": "No users match your current filters." - } + "save": "Save Dictionary" + }, + "add-edit-project-template": { + "title": { + "edit": "Edit {{name}} Dossier Template", + "new": "Create Dossier Template" }, - "add-edit-user": { - "title": { - "new": "Add New User", - "edit": "Edit User" - }, - "form": { - "first-name": "First Name", - "last-name": "Last Name", - "email": "Email", - "role": "Role" - }, - "actions": { - "save": "Save User", - "save-changes": "Save Changes", - "delete": "Delete User", - "cancel": "Cancel" - } + "form": { + "name": "Dossier Template Name", + "name-placeholder": "Enter Name", + "description": "Description", + "description-placeholder": "Enter Description", + "valid-from": "Valid from", + "valid-to": "Valid to" }, - "user-stats": { - "title": "Users", - "chart": { - "users": "Users in Workspace" - }, - "expand": "Show Details", - "collapse": "Hide Details" + "save": "Save Dossier Template" + }, + "dictionary-overview": { + "action": { + "delete": "Delete Dictionary", + "edit": "Edit Dictionary", + "download": "Download Dictionary", + "upload": "Upload Dictionary" }, - "rules-screen": { - "error": { - "generic": "Something went wrong... Rules update failed!" - }, - "success": { - "generic": "Rules updated!" - }, - "action": { - "download": "Download Rules", - "upload": "Upload Rules" - }, - "save-changes": "Save Changes", - "revert-changes": "Revert" + "error": { + "entries-too-short": "Some entries of the dictionary are below the minimum length of 2. These are highlighted with red!", + "generic": "Something went wrong... Dictionary update failed!" }, - "watermark-screen": { - "form": { - "text-placeholder": "Enter text", - "opacity": "Opacity", - "color": "Color", - "font-size": "Font Size", - "font-type": "Font Type", - "orientation": "Orientation" - }, - "action": { - "save": "Save Changes", - "revert": "Revert", - "change-success": "Watermark updated!", - "delete-success": "Watermark deleted.", - "error": "Failed to update Watermark" - }, - "title": "Watermark" + "success": { + "generic": "Dictionary updated!" }, - "dictionaries": "Dictionaries", - "user-management": "User Management", - "license-information": "License Information", - "notifications": { - "today": "Today", - "yesterday": "Yesterday", - "tomorrow": "Tomorrow", - "mark-read": "Mark as read", - "mark-unread": "Mark as unread" + "search": "Search...", + "save-changes": "Save Changes", + "revert-changes": "Revert", + "dictionary-details": { + "description": "Description" }, - "rule-editor": "Rule Editor", - "watermark": "Watermark", - "file-attributes": "File Attributes", - "pending-changes-guard": "WARNING: You have unsaved changes. Press Cancel to go back and save these changes, or OK to lose these changes.", - "reset-filters": "Reset Filters", - "overwrite-files-dialog": { - "title": "Document already exists!", - "question": "{{filename}} already exists. Choose how to proceed:", - "options": { - "overwrite": "Replace existing document", - "skip": "Keep existing document", - "cancel": "Cancel all uploads", - "remember": "Remember choice and don't ask me again" - } + "compare": { + "compare": "Compare", + "select-ruleset": "Select Dossier Template", + "select-dictionary": "Select Dictionary" }, - "license-info-screen": { - "backend-version": "Backend Application Version", - "frontend-version": "Frontend Application Version", - "custom-app-title": "Custom Application Title", - "copyright-claim-title": "Copyright Claim", - "copyright-claim-text": "Copyright © 2020 - {{currentYear}} knecon AG (powered by IQSER)", - "end-user-license-title": "End User License Agreement", - "end-user-license-text": "The use of this product is subject to the terms of the Redaction End User Agreement, unless other specified therein.", - "3rd-party-title": "Reference to 3rd Party Licenses", - "licensing-details": "Licensing Details", - "licensed-to": "Licensed to", - "licensing-period": "Licensing Period", - "analyzed-pages": "Analyzed Pages", - "usage-details": "Usage Details", - "total-analyzed": "Total Analyzed Pages Since {{date}}", - "licensed-page-count": "Number of licensed pages", - "current-analyzed": "Analyzed Pages in Current Licensing Period", - "unlicensed-analyzed": "Unlicensed Analyzed Pages", - "email-report": "Email Report", - "email": { - "title": "License Report {{licenseCustomer}}", - "body": { - "analyzed": "Total Analyzed Pages in current license period: {{pages}}.", - "licensed": "Licensed Pages: {{pages}}." - } - }, - "chart": { - "licensed-total": "Licensed Total", - "cumulative": "Cumulative Pages", - "pages-per-month": "Pages per Month", - "total-pages": "Total Pages", - "legend": "Legend" - } + "select-dictionary": "Select a dictionary above to compare with the current one." + }, + "dictionary-listing": { + "action": { + "delete": "Delete Dictionary", + "edit": "Edit Dictionary" }, - "audit": "Audit", - "audit-screen": { - "table-header": { - "title": "{{length}} Logs" - }, - "table-col-names": { - "message": "Message", - "user": "User", - "date": "Date", - "category": "Category" - }, - "all-categories": "All Categories", - "all-users": "All Users", - "to": "to", - "no-data": { - "title": "No available logs." - } + "case-sensitive": "Case Sensitive", + "add-new": "New Dictionary", + "stats": { + "charts": { + "types": "Types", + "entries": "Entries" + } }, - "pagination": { - "previous": "Prev", - "next": "Next" + "table-header": { + "title": "{{length}} dictionaries" }, - "configurations": "Configurations", - "smtp-config-screen": { - "title": "Configure SMTP Account", - "subtitle": "SMTP (Simple Mail Transfer Protocol) enables you to send your emails through the specified server settings.", - "actions": { - "save": "Save Configurations", - "test-connection": "Test Connection" - }, - "form": { - "host": "Host", - "host-placeholder": "SMTP Host", - "port": "Port", - "from": "From", - "from-placeholder": "Sender Email Address", - "from-display-name": "Name for Sender", - "from-display-name-placeholder": "Display Name for Sender Email Address", - "from-display-name-hint": "Info text regarding the name for sender.", - "reply-to": "Reply To", - "reply-to-placeholder": "Reply To Email Address", - "reply-to-display-name": "Name for Reply To", - "reply-to-display-name-placeholder": "Display Name for Reply To Email Address", - "envelope-from": "Envelope From", - "envelope-from-placeholder": "Sender Envelope Email Address", - "envelope-from-hint": "Info text regarding envelope from field.", - "ssl": "Enable SSL", - "starttls": "Enable StartTLS", - "auth": "Enable Authentication", - "change-credentials": "Change Credentials" - }, - "test": { - "success": "Test email was sent successfully!", - "error": "Test email could not be sent! Please revise the email address." - } + "table-col-names": { + "type": "Type", + "order-of-importance": "Order Of Importance", + "hint-redaction": "Hint/Redaction" }, - "smtp-auth-config": { - "title": "Enable Authentication", - "form": { - "username": "Username", - "username-placeholder": "Login Username", - "password": "Password" - }, - "actions": { - "save": "Save Credentials", - "cancel": "Cancel" - } + "search": "Search...", + "no-data": { + "title": "There are no dictionaries yet.", + "action": "New Dictionary" }, - "default-colors": "Default Colors", - "default-colors-screen": { - "table-header": { - "title": "{{length}} Default Colors" - }, - "table-col-names": { - "key": "Type", - "color": "Color" - }, - "types": { - "defaultColor": "Default Color", - "requestAdd": "Request Add", - "requestRemove": "Request Remove", - "notRedacted": "Skipped", - "analysisColor": "Analysis", - "dictionaryRequestColor": "Dictionary Request", - "manualRedactionColor": "Manual Redaction", - "previewColor": "Preview", - "updatedColor": "Updated" - }, - "action": { - "edit": "Edit Color" - } + "no-match": { + "title": "No dictionaries match your current filters." + } + }, + "digital-signature": "Digital Signature", + "project-templates": "Dossier Templates", + "settings": "Settings", + "project-templates-listing": { + "table-header": { + "title": "{{length}} dossier templates" }, - "edit-color-dialog": { - "success": "Successfully updated color for {{color}}.", - "error": "Failed to update colors.", - "save": "Save", - "form": { - "color": "Color", - "color-placeholder": "Color" - } + "entries": "{{length}} entries", + "dictionaries": "{{length}} dictionaries", + "action": { + "delete": "Delete Template", + "edit": "Edit Template" }, - "downloads-list": { - "table-header": { - "title": "{{length}} downloads" - }, - "no-data": { - "title": "No active downloads." - }, - "table-col-names": { - "name": "Name", - "size": "Size", - "type": "Type", - "date": "Date", - "status": "Status" - }, - "actions": { - "delete": "Delete", - "download": "Download" - } + "add-new": "New Dossier Template", + "search": "Search...", + "table-col-names": { + "name": "Name", + "created-by": "Created by", + "created-on": "Created on", + "modified-on": "Modified on" }, - "digital-signature-screen": { - "title": "Digital Signature", - "no-data": { - "title": "No Digital Signature certificate is configured. For signing redacted documents please upload a PCKS.12 certificate.", - "action": "Upload Certificate" - }, - "reason": { - "label": "Reason", - "placeholder": "Reason" - }, - "certificate-name": { - "label": "Certificate Name", - "placeholder": "Certificate Name" - }, - "contact-info": { - "label": "Contact Information", - "placeholder": "Contact Information" - }, - "location": { - "label": "Location", - "placeholder": "Location" - }, - "password": { - "label": "Certificate Password/Key", - "placeholder": "Password" - }, - "action": { - "save": "Save Digital Signature", - "delete": "Delete Digital Signature", - "reset": "Reset", - "save-success": "Digital signature saved successfully", - "save-error": "Failed to save digital signature", - "certificate-not-valid-error": "Uploaded Certificate is not valid for signing PDFs. PCKS.12 format is required.", - "delete-success": "Digital signature removed. Redacted files will no longer be signed!", - "delete-error": "Failed to remove digital signature, please try again." - } + "no-data": { + "title": "There are no dossier templates yet." }, - "stream-download": { - "abort": "You have an active download, closing this window will cause it to stop!", - "error": "Failed to download {{filename}}. Please try again ..." + "no-match": { + "title": "No dossier templates match your current filters." + } + }, + "file-attributes-listing": { + "search": "Search by attribute name...", + "add-new": "New Attribute", + "table-header": { + "title": "{{length}} file attributes" }, - "roles": { - "RED_USER": "User", - "RED_MANAGER": "Manager", - "RED_USER_ADMIN": "Users Admin", - "RED_ADMIN": "Application Admin", - "NO_ROLE": "No role defined", - "INACTIVE": "Inactive", - "MANAGER_ADMIN": "Manager & Admin", - "REGULAR": "Regular" + "bulk-actions": { + "delete": "Delete Selected Attributes" }, - "file-attributes-csv-import": { - "title": "Select CSV columns to use as File Attributes", - "cancel": "Cancel", - "save": { - "label": "Save Attributes", - "success": "{{count}} File Attributes created successfully!", - "error": "Failed to create File Attributes!" - }, - "delimiter": "Delimiter", - "delimiter-placeholder": ",", - "encoding": "Encoding", - "encoding-placeholder": "UTF-8", - "key-column": "Key Column", - "key-column-placeholder": "Select column...", - "parse-csv": "Parse CSV with new options", - "total-rows": "{{rows}} rows in total", - "available": "{{value}} available", - "selected": "{{value}} selected", - "csv-column": "CSV Column", - "csv-column-preview": "CSV Column Preview", - "no-hovered-column": "Preview CSV column by hovering the entry.", - "no-sample-data-for": "No sample data for {{column}}.", - "search": { - "placeholder": "Search by column name..." - }, - "table-header": { - "title": "{{length}} file attributes", - "actions": { - "remove-selected": "Remove Selected", - "read-only": "Make Read-only", - "enable-read-only": "Enable Read-only for all attributes", - "disable-read-only": "Disable Read-only for all attributes", - "type": "Type" - } - }, - "file": "File:", - "table-col-names": { - "name": "Name", - "type": "Type", - "read-only": "Read-Only", - "primary": "primary", - "primary-info-tooltip": "The value of the attribute set as primary shows up under the file name in the documents list." - }, - "quick-activation": { - "all": "All", - "none": "None" - }, - "action": { - "edit-name": "Edit Name", - "save-name": "Save", - "cancel-edit-name": "Cancel", - "remove": "Remove" - }, - "no-data": { - "title": "No file attributes defined. Select a column from the left panel to start defining file attributes." - } + "table-col-names": { + "name": "Name", + "type": "Input Type", + "read-only": "Read-Only", + "csv-column": "CSV Column", + "primary": "Primary", + "primary-info-tooltip": "The value of the attribute set as primary shows up under the file name in the documents list." }, - "download-includes": "Choose what is included at download:", - "download-type": { - "label": "{{length}} document versions", - "PREVIEW": "Preview PDF", - "ORIGINAL": "Optimized PDF", - "REDACTED": "Redacted PDF" + "no-data": { + "title": "There are no file attributes yet." }, - "report-type": { - "label": "{{length}} report types", - "WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE": "Justification Appendix A1", - "WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE": "Justification Appendix A2", - "EXCEL_MULTI_FILE": "Excel (for all)", - "EXCEL_SINGLE_FILE": "Excel (per file)" + "no-match": { + "title": "No file attributes match your current filters." + }, + "read-only": "Read-only", + "action": { + "edit": "Edit Attribute", + "delete": "Delete Attribute" + }, + "upload-csv": "Upload File Attributes Configuration" + }, + "confirm-delete-file-attribute": { + "title": { + "single": "Delete {{name}}", + "bulk": "Delete File Attributes" + }, + "warning": "Warning: this cannot be undone!", + "delete": { + "single": "Delete Attribute", + "bulk": "Delete Attributes" + }, + "cancel": { + "single": "Keep Attribute", + "bulk": "Keep Attributes" + }, + "impacted-documents": { + "single": "All documents it is used on will be impacted", + "bulk": "All documents they are used on will be impacted" + }, + "lost-details": "All inputted details on the documents will be lost", + "toast-error": "Please confirm that you understand the ramifications of your action!" + }, + "confirm-delete-users": { + "title": { + "single": "Delete User from Workspace", + "bulk": "Delete Users from Workspace" + }, + "warning": "Warning: this cannot be undone!", + "impacted-projects": "{{projectsCount}} dossiers will be impacted", + "impacted-documents": { + "single": "All documents pending review from the user will be impacted", + "bulk": "All documents pending review from the users will be impacted" + }, + "delete": { + "single": "Delete User", + "bulk": "Delete Users" + }, + "cancel": { + "single": "Keep User", + "bulk": "Keep Users" + }, + "toast-error": "Please confirm that you understand the ramifications of your action!" + }, + "document-info": { + "title": "Introduce File Attributes", + "save": "Save Document Info", + "save-approval": "Save and Send for Approval" + }, + "user-profile": { + "title": "My profile", + "form": { + "email": "Email", + "first-name": "First name", + "last-name": "Last name" }, "actions": { - "all": "All", - "none": "None" + "save": "Save profile" } + }, + "user-listing": { + "table-header": { + "title": "{{length}} users" + }, + "table-col-names": { + "name": "Name", + "email": "Email", + "active": "Active", + "roles": "Roles" + }, + "action": { + "edit": "Edit User", + "delete": "Delete User" + }, + "bulk": { + "delete": "Delete Users", + "delete-disabled": "You cannot delete your own account." + }, + "search": "Search...", + "add-new": "New User", + "no-match": { + "title": "No users match your current filters." + } + }, + "add-edit-user": { + "title": { + "new": "Add New User", + "edit": "Edit User" + }, + "form": { + "first-name": "First Name", + "last-name": "Last Name", + "email": "Email", + "role": "Role" + }, + "actions": { + "save": "Save User", + "save-changes": "Save Changes", + "delete": "Delete User", + "cancel": "Cancel" + } + }, + "user-stats": { + "title": "Users", + "chart": { + "users": "Users in Workspace" + }, + "expand": "Show Details", + "collapse": "Hide Details" + }, + "rules-screen": { + "error": { + "generic": "Something went wrong... Rules update failed!" + }, + "success": { + "generic": "Rules updated!" + }, + "action": { + "download": "Download Rules", + "upload": "Upload Rules" + }, + "save-changes": "Save Changes", + "revert-changes": "Revert" + }, + "watermark-screen": { + "form": { + "text-placeholder": "Enter text", + "opacity": "Opacity", + "color": "Color", + "font-size": "Font Size", + "font-type": "Font Type", + "orientation": "Orientation" + }, + "action": { + "save": "Save Changes", + "revert": "Revert", + "change-success": "Watermark updated!", + "delete-success": "Watermark deleted.", + "error": "Failed to update Watermark" + }, + "title": "Watermark" + }, + "dictionaries": "Dictionaries", + "user-management": "User Management", + "license-information": "License Information", + "notifications": { + "today": "Today", + "yesterday": "Yesterday", + "tomorrow": "Tomorrow", + "mark-read": "Mark as read", + "mark-unread": "Mark as unread" + }, + "rule-editor": "Rule Editor", + "watermark": "Watermark", + "file-attributes": "File Attributes", + "pending-changes-guard": "WARNING: You have unsaved changes. Press Cancel to go back and save these changes, or OK to lose these changes.", + "reset-filters": "Reset Filters", + "overwrite-files-dialog": { + "title": "Document already exists!", + "question": "{{filename}} already exists. Choose how to proceed:", + "options": { + "overwrite": "Replace existing document", + "skip": "Keep existing document", + "cancel": "Cancel all uploads", + "remember": "Remember choice and don't ask me again" + } + }, + "license-info-screen": { + "backend-version": "Backend Application Version", + "frontend-version": "Frontend Application Version", + "custom-app-title": "Custom Application Title", + "copyright-claim-title": "Copyright Claim", + "copyright-claim-text": "Copyright © 2020 - {{currentYear}} knecon AG (powered by IQSER)", + "end-user-license-title": "End User License Agreement", + "end-user-license-text": "The use of this product is subject to the terms of the Redaction End User Agreement, unless other specified therein.", + "3rd-party-title": "Reference to 3rd Party Licenses", + "licensing-details": "Licensing Details", + "licensed-to": "Licensed to", + "licensing-period": "Licensing Period", + "analyzed-pages": "Analyzed Pages", + "usage-details": "Usage Details", + "total-analyzed": "Total Analyzed Pages Since {{date}}", + "licensed-page-count": "Number of licensed pages", + "current-analyzed": "Analyzed Pages in Current Licensing Period", + "unlicensed-analyzed": "Unlicensed Analyzed Pages", + "email-report": "Email Report", + "email": { + "title": "License Report {{licenseCustomer}}", + "body": { + "analyzed": "Total Analyzed Pages in current license period: {{pages}}.", + "licensed": "Licensed Pages: {{pages}}." + } + }, + "chart": { + "licensed-total": "Licensed Total", + "cumulative": "Cumulative Pages", + "pages-per-month": "Pages per Month", + "total-pages": "Total Pages", + "legend": "Legend" + } + }, + "audit": "Audit", + "audit-screen": { + "table-header": { + "title": "{{length}} Logs" + }, + "table-col-names": { + "message": "Message", + "user": "User", + "date": "Date", + "category": "Category" + }, + "all-categories": "All Categories", + "all-users": "All Users", + "to": "to", + "no-data": { + "title": "No available logs." + } + }, + "pagination": { + "previous": "Prev", + "next": "Next" + }, + "configurations": "Configurations", + "smtp-config-screen": { + "title": "Configure SMTP Account", + "subtitle": "SMTP (Simple Mail Transfer Protocol) enables you to send your emails through the specified server settings.", + "actions": { + "save": "Save Configurations", + "test-connection": "Test Connection" + }, + "form": { + "host": "Host", + "host-placeholder": "SMTP Host", + "port": "Port", + "from": "From", + "from-placeholder": "Sender Email Address", + "from-display-name": "Name for Sender", + "from-display-name-placeholder": "Display Name for Sender Email Address", + "from-display-name-hint": "Info text regarding the name for sender.", + "reply-to": "Reply To", + "reply-to-placeholder": "Reply To Email Address", + "reply-to-display-name": "Name for Reply To", + "reply-to-display-name-placeholder": "Display Name for Reply To Email Address", + "envelope-from": "Envelope From", + "envelope-from-placeholder": "Sender Envelope Email Address", + "envelope-from-hint": "Info text regarding envelope from field.", + "ssl": "Enable SSL", + "starttls": "Enable StartTLS", + "auth": "Enable Authentication", + "change-credentials": "Change Credentials" + }, + "test": { + "success": "Test email was sent successfully!", + "error": "Test email could not be sent! Please revise the email address." + } + }, + "smtp-auth-config": { + "title": "Enable Authentication", + "form": { + "username": "Username", + "username-placeholder": "Login Username", + "password": "Password" + }, + "actions": { + "save": "Save Credentials", + "cancel": "Cancel" + } + }, + "default-colors": "Default Colors", + "default-colors-screen": { + "table-header": { + "title": "{{length}} Default Colors" + }, + "table-col-names": { + "key": "Type", + "color": "Color" + }, + "types": { + "defaultColor": "Default Color", + "requestAdd": "Request Add", + "requestRemove": "Request Remove", + "notRedacted": "Skipped", + "analysisColor": "Analysis", + "dictionaryRequestColor": "Dictionary Request", + "manualRedactionColor": "Manual Redaction", + "previewColor": "Preview", + "updatedColor": "Updated" + }, + "action": { + "edit": "Edit Color" + } + }, + "edit-color-dialog": { + "success": "Successfully updated color for {{color}}.", + "error": "Failed to update colors.", + "save": "Save", + "form": { + "color": "Color", + "color-placeholder": "Color" + } + }, + "downloads-list": { + "table-header": { + "title": "{{length}} downloads" + }, + "no-data": { + "title": "No active downloads." + }, + "table-col-names": { + "name": "Name", + "size": "Size", + "type": "Type", + "date": "Date", + "status": "Status" + }, + "actions": { + "delete": "Delete", + "download": "Download" + } + }, + "digital-signature-screen": { + "title": "Digital Signature", + "no-data": { + "title": "No Digital Signature certificate is configured. For signing redacted documents please upload a PCKS.12 certificate.", + "action": "Upload Certificate" + }, + "reason": { + "label": "Reason", + "placeholder": "Reason" + }, + "certificate-name": { + "label": "Certificate Name", + "placeholder": "Certificate Name" + }, + "contact-info": { + "label": "Contact Information", + "placeholder": "Contact Information" + }, + "location": { + "label": "Location", + "placeholder": "Location" + }, + "password": { + "label": "Certificate Password/Key", + "placeholder": "Password" + }, + "action": { + "save": "Save Digital Signature", + "delete": "Delete Digital Signature", + "reset": "Reset", + "save-success": "Digital signature saved successfully", + "save-error": "Failed to save digital signature", + "certificate-not-valid-error": "Uploaded Certificate is not valid for signing PDFs. PCKS.12 format is required.", + "delete-success": "Digital signature removed. Redacted files will no longer be signed!", + "delete-error": "Failed to remove digital signature, please try again." + } + }, + "stream-download": { + "abort": "You have an active download, closing this window will cause it to stop!", + "error": "Failed to download {{filename}}. Please try again ..." + }, + "roles": { + "RED_USER": "User", + "RED_MANAGER": "Manager", + "RED_USER_ADMIN": "Users Admin", + "RED_ADMIN": "Application Admin", + "NO_ROLE": "No role defined", + "INACTIVE": "Inactive", + "MANAGER_ADMIN": "Manager & Admin", + "REGULAR": "Regular" + }, + "file-attributes-csv-import": { + "title": "Select CSV columns to use as File Attributes", + "cancel": "Cancel", + "save": { + "label": "Save Attributes", + "success": "{{count}} File Attributes created successfully!", + "error": "Failed to create File Attributes!" + }, + "delimiter": "Delimiter", + "delimiter-placeholder": ",", + "encoding": "Encoding", + "encoding-placeholder": "UTF-8", + "key-column": "Key Column", + "key-column-placeholder": "Select column...", + "parse-csv": "Parse CSV with new options", + "total-rows": "{{rows}} rows in total", + "available": "{{value}} available", + "selected": "{{value}} selected", + "csv-column": "CSV Column", + "csv-column-preview": "CSV Column Preview", + "no-hovered-column": "Preview CSV column by hovering the entry.", + "no-sample-data-for": "No sample data for {{column}}.", + "search": { + "placeholder": "Search by column name..." + }, + "table-header": { + "title": "{{length}} file attributes", + "actions": { + "remove-selected": "Remove Selected", + "read-only": "Make Read-only", + "enable-read-only": "Enable Read-only for all attributes", + "disable-read-only": "Disable Read-only for all attributes", + "type": "Type" + } + }, + "file": "File:", + "table-col-names": { + "name": "Name", + "type": "Type", + "read-only": "Read-Only", + "primary": "primary", + "primary-info-tooltip": "The value of the attribute set as primary shows up under the file name in the documents list." + }, + "quick-activation": { + "all": "All", + "none": "None" + }, + "action": { + "edit-name": "Edit Name", + "save-name": "Save", + "cancel-edit-name": "Cancel", + "remove": "Remove" + }, + "no-data": { + "title": "No file attributes defined. Select a column from the left panel to start defining file attributes." + } + }, + "download-includes": "Choose what is included at download:", + "download-type": { + "label": "{{length}} document versions", + "PREVIEW": "Preview PDF", + "ORIGINAL": "Optimized PDF", + "REDACTED": "Redacted PDF" + }, + "report-type": { + "label": "{{length}} report types", + "WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE": "Justification Appendix A1", + "WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE": "Justification Appendix A2", + "EXCEL_MULTI_FILE": "Excel (for all)", + "EXCEL_SINGLE_FILE": "Excel (per file)" + }, + "actions": { + "all": "All", + "none": "None" + } } diff --git a/apps/red-ui/src/assets/styles/red-material-theme.scss b/apps/red-ui/src/assets/styles/red-material-theme.scss index 5242c9bbc..5a241b1fe 100644 --- a/apps/red-ui/src/assets/styles/red-material-theme.scss +++ b/apps/red-ui/src/assets/styles/red-material-theme.scss @@ -1,7 +1,7 @@ -@import '~@angular/material/theming'; +@use '~@angular/material' as mat; @import 'red-variables'; -@include mat-core(); +@include mat.core(); $primary-palette: ( default: $red-1, @@ -39,11 +39,11 @@ $red-palette: ( ) ); -$gn-next-primary: mat-palette($primary-palette, default, lighter, darker, text); -$gn-next-secondary: mat-palette($secondary-palette, default, lighter, darker, text); -$gn-next-warning: mat-palette($red-palette, default, lighter, darker, text); +$gn-next-primary: mat.define-palette($primary-palette, default, lighter, darker, text); +$gn-next-secondary: mat.define-palette($secondary-palette, default, lighter, darker, text); +$gn-next-warning: mat.define-palette($red-palette, default, lighter, darker, text); -$gn-next-mat-theme: mat-light-theme( +$gn-next-mat-theme: mat.define-light-theme( ( color: ( primary: $gn-next-primary, @@ -53,13 +53,13 @@ $gn-next-mat-theme: mat-light-theme( ) ); -@include angular-material-theme($gn-next-mat-theme); +@include mat.all-component-themes($gn-next-mat-theme); -$custom-typography: mat-typography-config( +$custom-typography: mat.define-typography-config( $font-family: 'Inter, sans-serif' ); -@include angular-material-typography($custom-typography); +@include mat.all-component-typographies($custom-typography); .mat-flat-button { min-width: unset !important; diff --git a/apps/red-ui/src/environments/environment.prod.ts b/apps/red-ui/src/environments/environment.prod.ts index 244865992..e3dce0fb3 100644 --- a/apps/red-ui/src/environments/environment.prod.ts +++ b/apps/red-ui/src/environments/environment.prod.ts @@ -1,5 +1,6 @@ export const environment = { production: true, licenseKey: - 'S25lY29uIEFHKGVuLmtuZWNvbi5zd2lzcyk6T0VNOkREQS1SOjpCKzpBTVMoMjAyMTEwMjkpOkNGQ0MwRDMzMDdEQUI0RjM0QjMxM0JDOUIyNDMzODJDNEU2RjZGQ0I4M0NEOEFDNTc0MzU4QTk1OTczMEI2MjJGQUJFRjVDNw==' + 'S25lY29uIEFHKGVuLmtuZWNvbi5zd2lzcyk6T0VNOkREQS1SOjpCKzpBTVMoMjAyMTEwMjkpOkNGQ0MwRDMzMDd' + + 'EQUI0RjM0QjMxM0JDOUIyNDMzODJDNEU2RjZGQ0I4M0NEOEFDNTc0MzU4QTk1OTczMEI2MjJGQUJFRjVDNw==' }; diff --git a/apps/red-ui/src/environments/environment.ts b/apps/red-ui/src/environments/environment.ts index df8fb0275..5291f9fe4 100644 --- a/apps/red-ui/src/environments/environment.ts +++ b/apps/red-ui/src/environments/environment.ts @@ -1,5 +1,6 @@ export const environment = { production: false, licenseKey: - 'S25lY29uIEFHKGVuLmtuZWNvbi5zd2lzcyk6T0VNOkREQS1SOjpCKzpBTVMoMjAyMTEwMjkpOkNGQ0MwRDMzMDdEQUI0RjM0QjMxM0JDOUIyNDMzODJDNEU2RjZGQ0I4M0NEOEFDNTc0MzU4QTk1OTczMEI2MjJGQUJFRjVDNw==' + 'S25lY29uIEFHKGVuLmtuZWNvbi5zd2lzcyk6T0VNOkREQS1SOjpCKzpBTVMoMjAyMTEwMjkpOkNGQ0MwRDMzMDd' + + 'EQUI0RjM0QjMxM0JDOUIyNDMzODJDNEU2RjZGQ0I4M0NEOEFDNTc0MzU4QTk1OTczMEI2MjJGQUJFRjVDNw==' }; diff --git a/apps/red-ui/src/polyfills.ts b/apps/red-ui/src/polyfills.ts index e49856ec9..2ce508ee4 100644 --- a/apps/red-ui/src/polyfills.ts +++ b/apps/red-ui/src/polyfills.ts @@ -41,9 +41,12 @@ * * The following flags will work for all browsers. * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * // disable patch requestAnimationFrame + * (window as any).__Zone_disable_requestAnimationFrame = true; + * // disable patch onProperty such as onclick + * (window as any).__Zone_disable_on_property = true; + * // disable patch specified eventNames + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; * * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js * with the following flag, it will bypass `zone.js` patch for IE/Edge @@ -55,7 +58,7 @@ /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ -import 'zone.js/dist/zone'; // Included with Angular CLI. +import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS diff --git a/apps/red-ui/tsconfig.app.json b/apps/red-ui/tsconfig.app.json index 8289972bc..e9fa6dfd9 100644 --- a/apps/red-ui/tsconfig.app.json +++ b/apps/red-ui/tsconfig.app.json @@ -1,8 +1,8 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": [] - }, - "files": ["src/main.ts", "src/polyfills.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [] + }, + "files": ["src/main.ts", "src/polyfills.ts"] } diff --git a/apps/red-ui/tsconfig.eslint.json b/apps/red-ui/tsconfig.eslint.json index 9db49faab..56fd56806 100644 --- a/apps/red-ui/tsconfig.eslint.json +++ b/apps/red-ui/tsconfig.eslint.json @@ -1,4 +1,4 @@ { - "extends": "./tsconfig.json", - "include": ["src/**/*.ts"] + "extends": "./tsconfig.json", + "include": ["src/**/*.ts"] } diff --git a/apps/red-ui/tsconfig.json b/apps/red-ui/tsconfig.json index e23d75a22..63dbe35fb 100644 --- a/apps/red-ui/tsconfig.json +++ b/apps/red-ui/tsconfig.json @@ -1,13 +1,13 @@ { - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] } diff --git a/apps/red-ui/tsconfig.spec.json b/apps/red-ui/tsconfig.spec.json index 26a878ced..cfff29a54 100644 --- a/apps/red-ui/tsconfig.spec.json +++ b/apps/red-ui/tsconfig.spec.json @@ -1,10 +1,10 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "files": ["src/test-setup.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/bamboo-specs/src/main/resources/scripts/build.sh b/bamboo-specs/src/main/resources/scripts/build.sh index 5e586b8ea..4cf565bda 100755 --- a/bamboo-specs/src/main/resources/scripts/build.sh +++ b/bamboo-specs/src/main/resources/scripts/build.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e imageName="nexus.iqser.com:5001/red/$PROJECT" dockerfileLocation="docker/$PROJECT/Dockerfile" diff --git a/cypress.env.json b/cypress.env.json index 47db238c1..4d776336f 100644 --- a/cypress.env.json +++ b/cypress.env.json @@ -1,13 +1,13 @@ { - "reporter": "junit", - "baseUrl": "http://localhost:4200", - "env": { - "api_url": "https://timo-redaction-dev.iqser.cloud", - "auth_base_url": "https://redkc-staging.iqser.cloud/auth", - "auth_realm": "redaction", - "auth_client_id": "redaction" - }, - "reporterOptions": { - "mochaFile": "cypress/test-reports/test-[hash].xml" - } + "reporter": "junit", + "baseUrl": "http://localhost:4200", + "env": { + "api_url": "https://timo-redaction-dev.iqser.cloud", + "auth_base_url": "https://redkc-staging.iqser.cloud/auth", + "auth_realm": "redaction", + "auth_client_id": "redaction" + }, + "reporterOptions": { + "mochaFile": "cypress/test-reports/test-[hash].xml" + } } diff --git a/cypress.json b/cypress.json index ab2b572e4..68104c293 100644 --- a/cypress.json +++ b/cypress.json @@ -1,13 +1,13 @@ { - "reporter": "junit", - "baseUrl": "https://app-ui-automated.iqser.cloud", - "env": { - "api_url": "https://api-ui-automated.iqser.cloud", - "auth_base_url": "https://keycloak-ui-automated.iqser.cloud/auth", - "auth_realm": "redaction", - "auth_client_id": "redaction" - }, - "reporterOptions": { - "mochaFile": "cypress/test-reports/test-[hash].xml" - } + "reporter": "junit", + "baseUrl": "https://app-ui-automated.iqser.cloud", + "env": { + "api_url": "https://api-ui-automated.iqser.cloud", + "auth_base_url": "https://keycloak-ui-automated.iqser.cloud/auth", + "auth_realm": "redaction", + "auth_client_id": "redaction" + }, + "reporterOptions": { + "mochaFile": "cypress/test-reports/test-[hash].xml" + } } diff --git a/docker/red-ui/Dockerfile b/docker/red-ui/Dockerfile index 66fd4947b..7912924b6 100644 --- a/docker/red-ui/Dockerfile +++ b/docker/red-ui/Dockerfile @@ -1,7 +1,7 @@ ### STAGE 1: Build ### # We label our stage as ‘builder’ -FROM node:12.2-alpine as builder +FROM node:14.17-alpine as builder RUN apk add --update jq && rm -rf /var/cache/apk/* COPY package.json yarn.lock ./ diff --git a/libs/red-cache/.eslintrc.json b/libs/red-cache/.eslintrc.json index 95e9d0d25..34f0525ad 100644 --- a/libs/red-cache/.eslintrc.json +++ b/libs/red-cache/.eslintrc.json @@ -1,37 +1,41 @@ { - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "parserOptions": { - "project": ["libs/red-cache/tsconfig.*?.json"] - }, - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "redaction", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "redaction", - "style": "kebab-case" - } - ] - }, - "plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"] - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "extends": [ + "plugin:@nrwl/nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "parserOptions": { + "project": ["libs/red-cache/tsconfig.*?.json"] + }, + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "redaction", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "redaction", + "style": "kebab-case" + } + ], + "max-len": "off" + }, + "plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nrwl/nx/angular-template"], + "rules": {} + } + ] } diff --git a/libs/red-cache/src/test.ts b/libs/red-cache/src/test.ts index be4725e7c..882de64a8 100644 --- a/libs/red-cache/src/test.ts +++ b/libs/red-cache/src/test.ts @@ -1,10 +1,13 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; +import 'zone.js'; +import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; -import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; declare const require: any; diff --git a/libs/red-cache/tsconfig.json b/libs/red-cache/tsconfig.json index 1e5701a22..62ebbd946 100644 --- a/libs/red-cache/tsconfig.json +++ b/libs/red-cache/tsconfig.json @@ -1,13 +1,13 @@ { - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] } diff --git a/libs/red-cache/tsconfig.lib.json b/libs/red-cache/tsconfig.lib.json index 8334eb341..d5befaafb 100644 --- a/libs/red-cache/tsconfig.lib.json +++ b/libs/red-cache/tsconfig.lib.json @@ -1,19 +1,19 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "target": "es2015", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [], - "lib": ["dom", "es2018"] - }, - "angularCompilerOptions": { - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "enableResourceInlining": true - }, - "exclude": ["src/test-setup.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "target": "es2015", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": ["src/test-setup.ts", "**/*.spec.ts"], + "include": ["**/*.ts"] } diff --git a/libs/red-cache/tsconfig.spec.json b/libs/red-cache/tsconfig.spec.json index 26a878ced..cfff29a54 100644 --- a/libs/red-cache/tsconfig.spec.json +++ b/libs/red-cache/tsconfig.spec.json @@ -1,10 +1,10 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "files": ["src/test-setup.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/libs/red-ui-http/.eslintrc.json b/libs/red-ui-http/.eslintrc.json index a0318568d..086670f3a 100644 --- a/libs/red-ui-http/.eslintrc.json +++ b/libs/red-ui-http/.eslintrc.json @@ -1,42 +1,46 @@ { - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "parserOptions": { - "project": ["libs/red-ui-http/tsconfig.*?.json"] - }, - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "redaction", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "redaction", - "style": "kebab-case" - } - ], - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/explicit-member-accessibility": "off", - "@typescript-eslint/naming-convention": "off", - "no-control-regex": "off" - }, - "plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"] - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "extends": [ + "plugin:@nrwl/nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "parserOptions": { + "project": ["libs/red-ui-http/tsconfig.*?.json"] + }, + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "redaction", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "redaction", + "style": "kebab-case" + } + ], + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/explicit-member-accessibility": "off", + "@typescript-eslint/naming-convention": "off", + "no-control-regex": "off", + "max-len": "off" + }, + "plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nrwl/nx/angular-template"], + "rules": {} + } + ] } diff --git a/libs/red-ui-http/ng-package.json b/libs/red-ui-http/ng-package.json index e5fbba5fa..f29047cf7 100644 --- a/libs/red-ui-http/ng-package.json +++ b/libs/red-ui-http/ng-package.json @@ -1,7 +1,7 @@ { - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/libs/red-ui-http", - "lib": { - "entryFile": "src/index.ts" - } + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/libs/red-ui-http", + "lib": { + "entryFile": "src/index.ts" + } } diff --git a/libs/red-ui-http/package.json b/libs/red-ui-http/package.json index 3f157248b..fe8f1348b 100644 --- a/libs/red-ui-http/package.json +++ b/libs/red-ui-http/package.json @@ -1,8 +1,8 @@ { - "name": "@redaction/red-ui-http", - "version": "1.1", - "peerDependencies": { - "@angular/common": "^7.2.0", - "@angular/core": "^7.2.0" - } + "name": "@redaction/red-ui-http", + "version": "1.1", + "peerDependencies": { + "@angular/common": "^7.2.0", + "@angular/core": "^7.2.0" + } } diff --git a/libs/red-ui-http/src/lib/api/statusController.service.ts b/libs/red-ui-http/src/lib/api/statusController.service.ts index 2f9363998..9464c4f2d 100644 --- a/libs/red-ui-http/src/lib/api/statusController.service.ts +++ b/libs/red-ui-http/src/lib/api/statusController.service.ts @@ -27,7 +27,11 @@ export class StatusControllerService { public configuration = new Configuration(); protected basePath = ''; - constructor(protected httpClient: HttpClient, @Optional() @Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) { + constructor( + protected httpClient: HttpClient, + @Optional() @Inject(BASE_PATH) basePath: string, + @Optional() configuration: Configuration + ) { if (basePath) { this.basePath = basePath; } @@ -45,32 +49,60 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public getFileStatus(projectId: string, fileId: string, observe?: 'body', reportProgress?: boolean): Observable; + public getFileStatus( + projectId: string, + fileId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; - public getFileStatus(projectId: string, fileId: string, observe?: 'response', reportProgress?: boolean): Observable>; + public getFileStatus( + projectId: string, + fileId: string, + observe?: 'response', + reportProgress?: boolean + ): Observable>; - public getFileStatus(projectId: string, fileId: string, observe?: 'events', reportProgress?: boolean): Observable>; + public getFileStatus( + projectId: string, + fileId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>; - public getFileStatus(projectId: string, fileId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public getFileStatus( + projectId: string, + fileId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling getFileStatus.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling getFileStatus.' + ); } if (fileId === null || fileId === undefined) { - throw new Error('Required parameter fileId was null or undefined when calling getFileStatus.'); + throw new Error( + 'Required parameter fileId was null or undefined when calling getFileStatus.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = ['application/json']; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } @@ -80,7 +112,9 @@ export class StatusControllerService { return this.httpClient.request( 'get', - `${this.basePath}/status/${encodeURIComponent(String(projectId))}/${encodeURIComponent(String(fileId))}`, + `${this.basePath}/status/${encodeURIComponent(String(projectId))}/${encodeURIComponent( + String(fileId) + )}`, { withCredentials: this.configuration.withCredentials, headers: headers, @@ -97,7 +131,11 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public getFileStatusForProjects(body: Array, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: Array }>; + public getFileStatusForProjects( + body: Array, + observe?: 'body', + reportProgress?: boolean + ): Observable<{ [key: string]: Array }>; public getFileStatusForProjects( body: Array, @@ -111,40 +149,55 @@ export class StatusControllerService { reportProgress?: boolean ): Observable }>>; - public getFileStatusForProjects(body: Array, observe: any = 'body', reportProgress: boolean = false): Observable { + public getFileStatusForProjects( + body: Array, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (body === null || body === undefined) { - throw new Error('Required parameter body was null or undefined when calling getFileStatusForProjects.'); + throw new Error( + 'Required parameter body was null or undefined when calling getFileStatusForProjects.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = ['application/json']; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes: string[] = ['application/json']; - const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + const httpContentTypeSelected: string | undefined = + this.configuration.selectHeaderContentType(consumes); if (httpContentTypeSelected !== undefined) { headers = headers.set('Content-Type', httpContentTypeSelected); } - return this.httpClient.request<{ [key: string]: Array }>('post', `${this.basePath}/status`, { - body: body, - withCredentials: this.configuration.withCredentials, - headers: headers, - observe: observe, - reportProgress: reportProgress - }); + return this.httpClient.request<{ [key: string]: Array }>( + 'post', + `${this.basePath}/status`, + { + body: body, + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); } /** @@ -154,28 +207,50 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public getProjectStatus(projectId: string, observe?: 'body', reportProgress?: boolean): Observable>; + public getProjectStatus( + projectId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable>; - public getProjectStatus(projectId: string, observe?: 'response', reportProgress?: boolean): Observable>>; + public getProjectStatus( + projectId: string, + observe?: 'response', + reportProgress?: boolean + ): Observable>>; - public getProjectStatus(projectId: string, observe?: 'events', reportProgress?: boolean): Observable>>; + public getProjectStatus( + projectId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>>; - public getProjectStatus(projectId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public getProjectStatus( + projectId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling getProjectStatus.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling getProjectStatus.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = ['application/json']; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } @@ -183,12 +258,16 @@ export class StatusControllerService { // to determine the Content-Type header const consumes: string[] = []; - return this.httpClient.request>('get', `${this.basePath}/status/${encodeURIComponent(String(projectId))}`, { - withCredentials: this.configuration.withCredentials, - headers: headers, - observe: observe, - reportProgress: reportProgress - }); + return this.httpClient.request>( + 'get', + `${this.basePath}/status/${encodeURIComponent(String(projectId))}`, + { + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); } /** @@ -200,7 +279,13 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setFileReviewer(projectId: string, fileId: string, reviewerId: string, observe?: 'body', reportProgress?: boolean): Observable; + public setFileReviewer( + projectId: string, + fileId: string, + reviewerId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; public setFileReviewer( projectId: string, @@ -210,32 +295,54 @@ export class StatusControllerService { reportProgress?: boolean ): Observable>; - public setFileReviewer(projectId: string, fileId: string, reviewerId: string, observe?: 'events', reportProgress?: boolean): Observable>; + public setFileReviewer( + projectId: string, + fileId: string, + reviewerId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>; - public setFileReviewer(projectId: string, fileId: string, reviewerId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public setFileReviewer( + projectId: string, + fileId: string, + reviewerId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setFileReviewer.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setFileReviewer.' + ); } if (fileId === null || fileId === undefined) { - throw new Error('Required parameter fileId was null or undefined when calling setFileReviewer.'); + throw new Error( + 'Required parameter fileId was null or undefined when calling setFileReviewer.' + ); } if (reviewerId === null || reviewerId === undefined) { - throw new Error('Required parameter reviewerId was null or undefined when calling setFileReviewer.'); + throw new Error( + 'Required parameter reviewerId was null or undefined when calling setFileReviewer.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } @@ -245,7 +352,9 @@ export class StatusControllerService { return this.httpClient.request( 'post', - `${this.basePath}/status/${encodeURIComponent(String(projectId))}/${encodeURIComponent(String(fileId))}/${encodeURIComponent(String(reviewerId))}`, + `${this.basePath}/status/${encodeURIComponent(String(projectId))}/${encodeURIComponent( + String(fileId) + )}/${encodeURIComponent(String(reviewerId))}`, { withCredentials: this.configuration.withCredentials, headers: headers, @@ -264,7 +373,13 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setFileReviewerForList(body: Array, projectId: string, reviewerId: string, observe?: 'body', reportProgress?: boolean): Observable; + public setFileReviewerForList( + body: Array, + projectId: string, + reviewerId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; public setFileReviewerForList( body: Array, @@ -290,42 +405,55 @@ export class StatusControllerService { reportProgress: boolean = false ): Observable { if (body === null || body === undefined) { - throw new Error('Required parameter body was null or undefined when calling setFileReviewerForList.'); + throw new Error( + 'Required parameter body was null or undefined when calling setFileReviewerForList.' + ); } if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setFileReviewerForList.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setFileReviewerForList.' + ); } if (reviewerId === null || reviewerId === undefined) { - throw new Error('Required parameter reviewerId was null or undefined when calling setFileReviewerForList.'); + throw new Error( + 'Required parameter reviewerId was null or undefined when calling setFileReviewerForList.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes: string[] = ['application/json']; - const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + const httpContentTypeSelected: string | undefined = + this.configuration.selectHeaderContentType(consumes); if (httpContentTypeSelected !== undefined) { headers = headers.set('Content-Type', httpContentTypeSelected); } return this.httpClient.request( 'post', - `${this.basePath}/status/${encodeURIComponent(String(projectId))}/bulk/${encodeURIComponent(String(reviewerId))}`, + `${this.basePath}/status/${encodeURIComponent( + String(projectId) + )}/bulk/${encodeURIComponent(String(reviewerId))}`, { body: body, withCredentials: this.configuration.withCredentials, @@ -344,32 +472,60 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setStatusApproved(projectId: string, fileId: string, observe?: 'body', reportProgress?: boolean): Observable; + public setStatusApproved( + projectId: string, + fileId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; - public setStatusApproved(projectId: string, fileId: string, observe?: 'response', reportProgress?: boolean): Observable>; + public setStatusApproved( + projectId: string, + fileId: string, + observe?: 'response', + reportProgress?: boolean + ): Observable>; - public setStatusApproved(projectId: string, fileId: string, observe?: 'events', reportProgress?: boolean): Observable>; + public setStatusApproved( + projectId: string, + fileId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>; - public setStatusApproved(projectId: string, fileId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public setStatusApproved( + projectId: string, + fileId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setStatusApproved.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setStatusApproved.' + ); } if (fileId === null || fileId === undefined) { - throw new Error('Required parameter fileId was null or undefined when calling setStatusApproved.'); + throw new Error( + 'Required parameter fileId was null or undefined when calling setStatusApproved.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } @@ -379,7 +535,9 @@ export class StatusControllerService { return this.httpClient.request( 'post', - `${this.basePath}/status/approved/${encodeURIComponent(String(projectId))}/${encodeURIComponent(String(fileId))}`, + `${this.basePath}/status/approved/${encodeURIComponent( + String(projectId) + )}/${encodeURIComponent(String(fileId))}`, { withCredentials: this.configuration.withCredentials, headers: headers, @@ -397,50 +555,83 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setStatusApprovedForList(body: Array, projectId: string, observe?: 'body', reportProgress?: boolean): Observable; + public setStatusApprovedForList( + body: Array, + projectId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; - public setStatusApprovedForList(body: Array, projectId: string, observe?: 'response', reportProgress?: boolean): Observable>; + public setStatusApprovedForList( + body: Array, + projectId: string, + observe?: 'response', + reportProgress?: boolean + ): Observable>; - public setStatusApprovedForList(body: Array, projectId: string, observe?: 'events', reportProgress?: boolean): Observable>; + public setStatusApprovedForList( + body: Array, + projectId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>; - public setStatusApprovedForList(body: Array, projectId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public setStatusApprovedForList( + body: Array, + projectId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (body === null || body === undefined) { - throw new Error('Required parameter body was null or undefined when calling setStatusApprovedForList.'); + throw new Error( + 'Required parameter body was null or undefined when calling setStatusApprovedForList.' + ); } if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setStatusApprovedForList.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setStatusApprovedForList.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes: string[] = ['application/json']; - const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + const httpContentTypeSelected: string | undefined = + this.configuration.selectHeaderContentType(consumes); if (httpContentTypeSelected !== undefined) { headers = headers.set('Content-Type', httpContentTypeSelected); } - return this.httpClient.request('post', `${this.basePath}/status/approved/${encodeURIComponent(String(projectId))}/bulk`, { - body: body, - withCredentials: this.configuration.withCredentials, - headers: headers, - observe: observe, - reportProgress: reportProgress - }); + return this.httpClient.request( + 'post', + `${this.basePath}/status/approved/${encodeURIComponent(String(projectId))}/bulk`, + { + body: body, + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); } /** @@ -452,7 +643,13 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setStatusUnderApproval(fileId: string, projectId: string, approverId?: string, observe?: 'body', reportProgress?: boolean): Observable; + public setStatusUnderApproval( + fileId: string, + projectId: string, + approverId?: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; public setStatusUnderApproval( fileId: string, projectId: string, @@ -475,11 +672,15 @@ export class StatusControllerService { reportProgress: boolean = false ): Observable { if (fileId === null || fileId === undefined) { - throw new Error('Required parameter fileId was null or undefined when calling setStatusUnderApproval.'); + throw new Error( + 'Required parameter fileId was null or undefined when calling setStatusUnderApproval.' + ); } if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setStatusUnderApproval.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setStatusUnderApproval.' + ); } let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() }); @@ -491,13 +692,17 @@ export class StatusControllerService { // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } @@ -507,7 +712,9 @@ export class StatusControllerService { return this.httpClient.request( 'post', - `${this.basePath}/status/underapproval/${encodeURIComponent(String(projectId))}/${encodeURIComponent(String(fileId))}`, + `${this.basePath}/status/underapproval/${encodeURIComponent( + String(projectId) + )}/${encodeURIComponent(String(fileId))}`, { params: queryParameters, withCredentials: this.configuration.withCredentials, @@ -556,15 +763,21 @@ export class StatusControllerService { reportProgress: boolean = false ): Observable { if (body === null || body === undefined) { - throw new Error('Required parameter body was null or undefined when calling setStatusUnderApprovalForList.'); + throw new Error( + 'Required parameter body was null or undefined when calling setStatusUnderApprovalForList.' + ); } if (approverId === null || approverId === undefined) { - throw new Error('Required parameter approverId was null or undefined when calling setStatusUnderApprovalForList.'); + throw new Error( + 'Required parameter approverId was null or undefined when calling setStatusUnderApprovalForList.' + ); } if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setStatusUnderApprovalForList.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setStatusUnderApprovalForList.' + ); } let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() }); @@ -574,32 +787,41 @@ export class StatusControllerService { // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes: string[] = ['application/json']; - const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + const httpContentTypeSelected: string | undefined = + this.configuration.selectHeaderContentType(consumes); if (httpContentTypeSelected !== undefined) { headers = headers.set('Content-Type', httpContentTypeSelected); } - return this.httpClient.request('post', `${this.basePath}/status/underapproval/${encodeURIComponent(String(projectId))}/bulk`, { - body: body, - params: queryParameters, - withCredentials: this.configuration.withCredentials, - headers: headers, - observe: observe, - reportProgress: reportProgress - }); + return this.httpClient.request( + 'post', + `${this.basePath}/status/underapproval/${encodeURIComponent(String(projectId))}/bulk`, + { + body: body, + params: queryParameters, + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); } /** @@ -610,32 +832,60 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setStatusUnderReview(projectId: string, fileId: string, observe?: 'body', reportProgress?: boolean): Observable; + public setStatusUnderReview( + projectId: string, + fileId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; - public setStatusUnderReview(projectId: string, fileId: string, observe?: 'response', reportProgress?: boolean): Observable>; + public setStatusUnderReview( + projectId: string, + fileId: string, + observe?: 'response', + reportProgress?: boolean + ): Observable>; - public setStatusUnderReview(projectId: string, fileId: string, observe?: 'events', reportProgress?: boolean): Observable>; + public setStatusUnderReview( + projectId: string, + fileId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>; - public setStatusUnderReview(projectId: string, fileId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public setStatusUnderReview( + projectId: string, + fileId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setStatusUnderReview.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setStatusUnderReview.' + ); } if (fileId === null || fileId === undefined) { - throw new Error('Required parameter fileId was null or undefined when calling setStatusUnderReview.'); + throw new Error( + 'Required parameter fileId was null or undefined when calling setStatusUnderReview.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } @@ -645,7 +895,9 @@ export class StatusControllerService { return this.httpClient.request( 'post', - `${this.basePath}/status/underreview/${encodeURIComponent(String(projectId))}/${encodeURIComponent(String(fileId))}`, + `${this.basePath}/status/underreview/${encodeURIComponent( + String(projectId) + )}/${encodeURIComponent(String(fileId))}`, { withCredentials: this.configuration.withCredentials, headers: headers, @@ -663,50 +915,83 @@ export class StatusControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public setStatusUnderReviewForList(body: Array, projectId: string, observe?: 'body', reportProgress?: boolean): Observable; + public setStatusUnderReviewForList( + body: Array, + projectId: string, + observe?: 'body', + reportProgress?: boolean + ): Observable; - public setStatusUnderReviewForList(body: Array, projectId: string, observe?: 'response', reportProgress?: boolean): Observable>; + public setStatusUnderReviewForList( + body: Array, + projectId: string, + observe?: 'response', + reportProgress?: boolean + ): Observable>; - public setStatusUnderReviewForList(body: Array, projectId: string, observe?: 'events', reportProgress?: boolean): Observable>; + public setStatusUnderReviewForList( + body: Array, + projectId: string, + observe?: 'events', + reportProgress?: boolean + ): Observable>; - public setStatusUnderReviewForList(body: Array, projectId: string, observe: any = 'body', reportProgress: boolean = false): Observable { + public setStatusUnderReviewForList( + body: Array, + projectId: string, + observe: any = 'body', + reportProgress: boolean = false + ): Observable { if (body === null || body === undefined) { - throw new Error('Required parameter body was null or undefined when calling setStatusUnderReviewForList.'); + throw new Error( + 'Required parameter body was null or undefined when calling setStatusUnderReviewForList.' + ); } if (projectId === null || projectId === undefined) { - throw new Error('Required parameter projectId was null or undefined when calling setStatusUnderReviewForList.'); + throw new Error( + 'Required parameter projectId was null or undefined when calling setStatusUnderReviewForList.' + ); } let headers = this.defaultHeaders; // authentication (RED-OAUTH) required if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; + const accessToken = + typeof this.configuration.accessToken === 'function' + ? this.configuration.accessToken() + : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts: string[] = []; - const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts); + const httpHeaderAcceptSelected: string | undefined = + this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes: string[] = ['application/json']; - const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + const httpContentTypeSelected: string | undefined = + this.configuration.selectHeaderContentType(consumes); if (httpContentTypeSelected !== undefined) { headers = headers.set('Content-Type', httpContentTypeSelected); } - return this.httpClient.request('post', `${this.basePath}/status/underreview/${encodeURIComponent(String(projectId))}/bulk`, { - body: body, - withCredentials: this.configuration.withCredentials, - headers: headers, - observe: observe, - reportProgress: reportProgress - }); + return this.httpClient.request( + 'post', + `${this.basePath}/status/underreview/${encodeURIComponent(String(projectId))}/bulk`, + { + body: body, + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); } /** diff --git a/libs/red-ui-http/tsconfig.json b/libs/red-ui-http/tsconfig.json index 1e5701a22..62ebbd946 100644 --- a/libs/red-ui-http/tsconfig.json +++ b/libs/red-ui-http/tsconfig.json @@ -1,13 +1,13 @@ { - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] } diff --git a/libs/red-ui-http/tsconfig.lib.json b/libs/red-ui-http/tsconfig.lib.json index 68536f23b..6d38c126a 100644 --- a/libs/red-ui-http/tsconfig.lib.json +++ b/libs/red-ui-http/tsconfig.lib.json @@ -1,18 +1,18 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "target": "es2015", - "declaration": true, - "inlineSources": true, - "types": [], - "lib": ["dom", "es2018"] - }, - "angularCompilerOptions": { - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "enableResourceInlining": true - }, - "exclude": ["src/test-setup.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": ["src/test-setup.ts", "**/*.spec.ts"], + "include": ["**/*.ts"] } diff --git a/nx.json b/nx.json index 8036349b0..8b9c0489f 100644 --- a/nx.json +++ b/nx.json @@ -1,18 +1,35 @@ { - "implicitDependencies": { - "workspace.json": "*", - "package.json": { - "dependencies": "*", - "devDependencies": "*" - }, - "tsconfig.base.json": "*", - "tslint.json": "*", - "nx.json": "*" + "implicitDependencies": { + "workspace.json": "*", + "package.json": { + "dependencies": "*", + "devDependencies": "*" }, - "affected": { "defaultBase": "master" }, - "npmScope": "redaction", - "tasksRunnerOptions": { - "default": { "runner": "@nrwl/workspace/tasks-runners/default", "options": { "cacheableOperations": ["build", "lint", "test", "e2e"] } } + "tsconfig.base.json": "*", + "tslint.json": "*", + "nx.json": "*" + }, + "affected": { + "defaultBase": "master" + }, + "npmScope": "redaction", + "tasksRunnerOptions": { + "default": { + "runner": "@nrwl/workspace/tasks-runners/default", + "options": { + "cacheableOperations": ["build", "lint", "test", "e2e"] + } + } + }, + "projects": { + "red-ui": { + "tags": [] }, - "projects": { "red-ui": { "tags": [] }, "red-ui-http": { "tags": [] }, "red-cache": { "tags": [] } } + "red-ui-http": { + "tags": [] + }, + "red-cache": { + "tags": [] + } + } } diff --git a/package.json b/package.json index df2e00ab1..e8d48d5fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "2.41.0", + "version": "2.44.0", "private": true, "license": "MIT", "scripts": { @@ -35,28 +35,29 @@ } }, "dependencies": { - "@angular/animations": "11.2.13", - "@angular/cdk": "~11.2.12", - "@angular/common": "11.2.13", - "@angular/compiler": "11.2.13", - "@angular/core": "11.2.13", - "@angular/forms": "11.2.13", - "@angular/material": "~11.2.12", - "@angular/material-moment-adapter": "^11.2.12", - "@angular/platform-browser": "11.2.13", - "@angular/platform-browser-dynamic": "11.2.13", - "@angular/router": "11.2.13", - "@angular/service-worker": "11.2.13", + "@angular/animations": "12.0.0", + "@angular/cdk": "~12.0.0", + "@angular/common": "12.0.0", + "@angular/compiler": "12.0.0", + "@angular/core": "12.0.0", + "@angular/forms": "12.0.0", + "@angular/material": "~12.0.0", + "@angular/material-moment-adapter": "^12.0.0", + "@angular/platform-browser": "12.0.0", + "@angular/platform-browser-dynamic": "12.0.0", + "@angular/router": "12.0.0", + "@angular/service-worker": "12.0.0", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "^6.0.0", - "@nrwl/angular": "12.1.1", + "@nrwl/angular": "12.3.3", "@pdftron/webviewer": "7.3.2", "@swimlane/ngx-charts": "^17.0.1", "file-saver": "^2.0.5", "jwt-decode": "^3.1.2", - "keycloak-angular": "^8.1.0", - "keycloak-js": "12.0.4", - "lint-staged": "^11.0.0", + "keycloak-angular": "^8.2.0", + "keycloak-js": "13.0.0", + "lodash": "^4.17.21", + "moment": "^2.29.1", "ng2-ace-editor": "^0.3.9", "ngx-color-picker": "^11.0.0", "ngx-toastr": "^13.2.1", @@ -65,35 +66,34 @@ "scroll-into-view-if-needed": "^2.2.28", "streamsaver": "^2.0.5", "tslib": "^2.2.0", - "zone.js": "~0.11.4" + "zone.js": "0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "0.1102.12", - "@angular-eslint/eslint-plugin": "~4.2.0", - "@angular-eslint/eslint-plugin-template": "~4.2.0", - "@angular-eslint/template-parser": "~4.2.0", - "@angular/cli": "11.2.12", - "@angular/compiler-cli": "11.2.13", - "@angular/language-service": "11.2.13", - "@nrwl/cli": "12.1.1", - "@nrwl/cypress": "12.1.1", - "@nrwl/eslint-plugin-nx": "12.1.1", - "@nrwl/jest": "12.1.1", - "@nrwl/linter": "12.1.1", - "@nrwl/tao": "12.1.1", - "@nrwl/workspace": "12.1.1", + "@angular-devkit/build-angular": "12.0.0", + "@angular-eslint/eslint-plugin": "12.0.0", + "@angular-eslint/eslint-plugin-template": "12.0.0", + "@angular-eslint/template-parser": "12.0.0", + "@angular/cli": "12.0.0", + "@angular/compiler-cli": "12.0.0", + "@angular/language-service": "12.0.0", + "@nrwl/cli": "12.3.3", + "@nrwl/cypress": "12.3.3", + "@nrwl/eslint-plugin-nx": "12.3.3", + "@nrwl/jest": "12.3.3", + "@nrwl/linter": "12.3.3", + "@nrwl/tao": "12.3.3", + "@nrwl/workspace": "12.3.3", "@types/cypress": "^1.1.3", - "@types/jasmine": "3.7.1", "@types/jest": "26.0.23", - "@types/node": "15.0.2", - "@typescript-eslint/eslint-plugin": "4.22.1", - "@typescript-eslint/parser": "4.22.1", + "@types/node": "15.3.0", + "@typescript-eslint/eslint-plugin": "4.23.0", + "@typescript-eslint/parser": "4.23.0", "cypress": "^6.9.1", "cypress-file-upload": "^5.0.7", "cypress-keycloak": "^1.6.0", "cypress-keycloak-commands": "^1.2.0", "cypress-localstorage-commands": "^1.4.4", - "dotenv": "9.0.1", + "dotenv": "9.0.2", "eslint": "7.26.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-import": "latest", @@ -101,9 +101,7 @@ "husky": "4.3.8", "jest": "26.6.3", "jest-preset-angular": "8.4.0", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "ng-packagr": "11.2.4", + "ng-packagr": "12.0.0", "prettier": "2.3.0", "pretty-quick": "^3.1.0", "superagent": "^6.1.0", @@ -111,6 +109,6 @@ "ts-jest": "26.5.6", "ts-node": "9.1.1", "webpack": "^4.18.1", - "typescript": "4.1.4" + "typescript": "4.2.4" } } diff --git a/tsconfig.base.json b/tsconfig.base.json index 31fcd116e..e033abefc 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,41 +1,41 @@ { - "compileOnSave": false, - "compilerOptions": { - "rootDir": ".", - "resolveJsonModule": true, - "sourceMap": true, - "declaration": false, - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "target": "es2015", - "module": "esnext", - "typeRoots": ["node_modules/@types"], - "lib": ["es2019", "dom"], - "skipLibCheck": true, - "skipDefaultLibCheck": true, - "baseUrl": ".", - "paths": { - "@redaction/red-ui-http": ["libs/red-ui-http/src/index.ts"], - "@redaction/red-cache": ["libs/red-cache/src/index.ts"], - "@services/*": ["apps/red-ui/src/app/services/*"], - "@components/*": ["apps/red-ui/src/app/components/*"], - "@guards/*": ["apps/red-ui/src/app/guards/*"], - "@i18n/*": ["apps/red-ui/src/app/i18n/*"], - "@state/*": ["apps/red-ui/src/app/state/*"], - "@utils/*": ["apps/red-ui/src/app/utils/*"], - "@models/*": ["apps/red-ui/src/app/models/*"], - "@environments/*": ["apps/red-ui/src/environments/*"], - "@shared/*": ["apps/red-ui/src/app/modules/shared/*"], - "@app-config/*": ["apps/red-ui/src/app/modules/app-config/*"], - "@upload-download/*": ["apps/red-ui/src/app/modules/upload-download/*"] - } - }, - "exclude": ["node_modules", "tmp"], - "angularCompilerOptions": { - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true + "compileOnSave": false, + "compilerOptions": { + "rootDir": ".", + "resolveJsonModule": true, + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", + "typeRoots": ["node_modules/@types"], + "lib": ["es2019", "dom"], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "baseUrl": ".", + "paths": { + "@redaction/red-ui-http": ["libs/red-ui-http/src/index.ts"], + "@redaction/red-cache": ["libs/red-cache/src/index.ts"], + "@services/*": ["apps/red-ui/src/app/services/*"], + "@components/*": ["apps/red-ui/src/app/components/*"], + "@guards/*": ["apps/red-ui/src/app/guards/*"], + "@i18n/*": ["apps/red-ui/src/app/i18n/*"], + "@state/*": ["apps/red-ui/src/app/state/*"], + "@utils/*": ["apps/red-ui/src/app/utils/*"], + "@models/*": ["apps/red-ui/src/app/models/*"], + "@environments/*": ["apps/red-ui/src/environments/*"], + "@shared/*": ["apps/red-ui/src/app/modules/shared/*"], + "@app-config/*": ["apps/red-ui/src/app/modules/app-config/*"], + "@upload-download/*": ["apps/red-ui/src/app/modules/upload-download/*"] } + }, + "exclude": ["node_modules", "tmp"], + "angularCompilerOptions": { + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } } diff --git a/yarn.lock b/yarn.lock index 03273e01c..86175bee8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,295 +2,284 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.1102.12": - version "0.1102.12" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1102.12.tgz#ef03c39ccce8969a36a4844cf796ecf48f579cbc" - integrity sha512-6qnI3NXpHzSlNG6jSLNdQazx7SILSpE3YD9l9n0tjHF3yeFnzPuVVWbQSjI9Us5EQi86lVGT3mTJbivRRRUYUQ== +"@angular-devkit/architect@0.1200.0": + version "0.1200.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1200.0.tgz#1a53d18901882c73ef0bc79a64cbbc8ca9b82a54" + integrity sha512-6E42oQ8e3zbeUE5O5YXc+q/vTBHyFn6YSsZEn0kb/3r48zl+9MBb4np1Q8077/GxQtD4G/TN/DhgCa9muLSgzA== dependencies: - "@angular-devkit/core" "11.2.12" - rxjs "6.6.3" + "@angular-devkit/core" "12.0.0" + rxjs "6.6.7" -"@angular-devkit/build-angular@0.1102.12": - version "0.1102.12" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1102.12.tgz#c540f9352a61cd50b725e5aa2a36db39860e00c1" - integrity sha512-mX8UqIR+Ev6p37zXLtZghdCNta3Pi5bG6o0PCXUGcDRY63kp2jiWH0RgvoBjJBlAt358tIO9GEkR8kuqZt8x4w== +"@angular-devkit/build-angular@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-12.0.0.tgz#135a943e62bee3e5d49745f6d7e10d276c80ae19" + integrity sha512-+hljBhcT0NHjbbLMiUmPxMQf1/Fuo6F/O89gcRNZ1RyNMNQO6XqysqsXL1z/eofHcMs3T+Erv4JfdQ9Gn4Thkw== dependencies: - "@angular-devkit/architect" "0.1102.12" - "@angular-devkit/build-optimizer" "0.1102.12" - "@angular-devkit/build-webpack" "0.1102.12" - "@angular-devkit/core" "11.2.12" - "@babel/core" "7.12.10" - "@babel/generator" "7.12.11" - "@babel/plugin-transform-async-to-generator" "7.12.1" - "@babel/plugin-transform-runtime" "7.12.10" - "@babel/preset-env" "7.12.11" - "@babel/runtime" "7.12.5" - "@babel/template" "7.12.7" + "@angular-devkit/architect" "0.1200.0" + "@angular-devkit/build-optimizer" "0.1200.0" + "@angular-devkit/build-webpack" "0.1200.0" + "@angular-devkit/core" "12.0.0" + "@babel/core" "7.14.0" + "@babel/generator" "7.14.1" + "@babel/plugin-transform-async-to-generator" "7.13.0" + "@babel/plugin-transform-runtime" "7.13.15" + "@babel/preset-env" "7.14.1" + "@babel/runtime" "7.14.0" + "@babel/template" "7.12.13" "@discoveryjs/json-ext" "0.5.2" "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "11.2.12" + "@ngtools/webpack" "12.0.0" ansi-colors "4.1.1" - autoprefixer "10.2.4" babel-loader "8.2.2" browserslist "^4.9.1" - cacache "15.0.5" + cacache "15.0.6" caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.2" - copy-webpack-plugin "6.3.2" - core-js "3.8.3" - critters "0.0.7" - css-loader "5.0.1" - cssnano "5.0.1" - file-loader "6.2.0" + copy-webpack-plugin "8.1.1" + core-js "3.12.0" + critters "0.0.10" + css-loader "5.2.4" + cssnano "5.0.2" find-cache-dir "3.3.1" - glob "7.1.6" + glob "7.1.7" https-proxy-agent "5.0.0" - inquirer "7.3.3" + inquirer "8.0.0" jest-worker "26.6.2" karma-source-map-support "1.4.0" less "4.1.1" - less-loader "7.3.0" - license-webpack-plugin "2.3.11" + less-loader "8.1.1" + license-webpack-plugin "2.3.17" loader-utils "2.0.0" - mini-css-extract-plugin "1.3.5" + mini-css-extract-plugin "1.5.1" minimatch "3.0.4" - open "7.4.0" - ora "5.3.0" + open "8.0.7" + ora "5.4.0" parse5-html-rewriting-stream "6.0.1" - pnp-webpack-plugin "1.6.4" - postcss "8.2.13" - postcss-import "14.0.0" - postcss-loader "4.2.0" + postcss "8.2.14" + postcss-import "14.0.1" + postcss-loader "5.2.0" + postcss-preset-env "6.7.0" raw-loader "4.0.2" regenerator-runtime "0.13.7" - resolve-url-loader "3.1.2" + resolve-url-loader "4.0.0" rimraf "3.0.2" - rollup "2.38.4" - rxjs "6.6.3" - sass "1.32.6" - sass-loader "10.1.1" - semver "7.3.4" + rxjs "6.6.7" + sass "1.32.12" + sass-loader "11.0.1" + semver "7.3.5" source-map "0.7.3" - source-map-loader "1.1.3" + source-map-loader "2.0.1" source-map-support "0.5.19" - speed-measure-webpack-plugin "1.4.2" style-loader "2.0.0" stylus "0.54.8" - stylus-loader "4.3.3" - terser "5.5.1" + stylus-loader "5.0.0" + terser "5.7.0" terser-webpack-plugin "4.2.3" text-table "0.2.0" tree-kill "1.2.2" - webpack "4.44.2" - webpack-dev-middleware "3.7.2" + webpack "5.36.2" + webpack-dev-middleware "4.1.0" webpack-dev-server "3.11.2" webpack-merge "5.7.3" - webpack-sources "2.2.0" webpack-subresource-integrity "1.5.2" - worker-plugin "5.0.0" -"@angular-devkit/build-optimizer@0.1102.12": - version "0.1102.12" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.12.tgz#4d5c164ba7152db223ddcecdbb5a270a73b5cc14" - integrity sha512-4aQ4t7iDagrsNrF5JDS3bZw+uIn4z0llyau7GQQwZm1OmpRcl33hXOIHSFUJoRPP6pI5liNVuffF3lrAoC6sZA== +"@angular-devkit/build-optimizer@0.1200.0": + version "0.1200.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1200.0.tgz#ec1ab842f8e2327ac74ed5c04d0209899370a7b8" + integrity sha512-0ZkQX6FXfV2Q56BE6HeNLieG5S5V9cTzb2Mlr26oxPSHeEMoxoCO/fej4cj0cuJRLlmtu/ZFQUrlMLqWPteRxg== dependencies: - loader-utils "2.0.0" source-map "0.7.3" - tslib "2.1.0" - typescript "4.1.5" - webpack-sources "2.2.0" + tslib "2.2.0" + typescript "4.2.4" -"@angular-devkit/build-webpack@0.1102.12": - version "0.1102.12" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1102.12.tgz#589936b611b919f276bf6ecbb4c30090fb30daa7" - integrity sha512-AoqnveSLhkQznI3SBX7/uoOEs93EOi8/u1sdOU8QBicM53n/IcUPIjilwHL+CY8J0YKcxg4ESsN3LAFQCzYT6g== +"@angular-devkit/build-webpack@0.1200.0": + version "0.1200.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1200.0.tgz#48a6b330bab2a7ea9c9589330dfcaeafb54a18da" + integrity sha512-4NXJUbDkIbwjXiUe5ANRXfr+65EHnEQgdkZxSppyXLIfJJAgAQ7oUPI5FtzpASkuGWIPoWaxqVZOLj901I4tbg== dependencies: - "@angular-devkit/architect" "0.1102.12" - "@angular-devkit/core" "11.2.12" - rxjs "6.6.3" + "@angular-devkit/architect" "0.1200.0" + rxjs "6.6.7" -"@angular-devkit/core@11.2.12": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-11.2.12.tgz#b80843d2ff9ac934ae4f31ed22dbc1d4b803bd95" - integrity sha512-VMRMmRj6ZX32cWpuA6vD4KSmji17yC4EtbXsiqrHZ8zAho4ifu8xImCC5PugTQnHa+RlIadOXwXX89aujUEwRw== +"@angular-devkit/core@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.0.0.tgz#e5f1dc4ba2e65a7aeb1fb14659e17a0f92dbae1b" + integrity sha512-4Cys++a684hCDTL/1X6j9izsjsqvYs3m6LF58zvKZHeG/Yhdofv1rV+3YGVYAorOx9w4spAgYTmr99TYnBGQWQ== dependencies: - ajv "6.12.6" + ajv "8.2.0" + ajv-formats "2.0.2" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.6.3" + rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@11.2.12", "@angular-devkit/schematics@~11.2.0": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-11.2.12.tgz#a2b7b02f6677a2fa9f4f6716f0aaa87347d41509" - integrity sha512-d1fxxkLPtP87iwAFZ0iUNWMlqULm05bbnRc5g5vrFxdtpwwybC15+NS64d3gzX0vAvnCa+cDQkjeD92bJJNjLw== +"@angular-devkit/schematics@12.0.0", "@angular-devkit/schematics@~12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-12.0.0.tgz#d46fa41d8968b64b6234f828fc16a227630fe621" + integrity sha512-xp6b8QF+MYT3kXEDo6MFRQRDGkFxAHBdBCo2wdo8qvoNHIr+8XYZwDEb8z0SbzzJmXFbDXk1vmavcNSd6+uLXg== dependencies: - "@angular-devkit/core" "11.2.12" - ora "5.3.0" - rxjs "6.6.3" + "@angular-devkit/core" "12.0.0" + ora "5.4.0" + rxjs "6.6.7" -"@angular-eslint/eslint-plugin-template@~4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-4.2.0.tgz#2716583530bf2b20069076994816630e299ab67c" - integrity sha512-LC8qqqqVmA/OJAsUt6fQCXLmWP5BL30XFvVsPtrORdxMFt0HI1gvkuz5EVak7PeAXEmerdVarNZr5zmCXIWf3g== +"@angular-eslint/eslint-plugin-template@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-12.0.0.tgz#eac9df5a04b3c0a5dc14a67aa580f5164f892f93" + integrity sha512-RF8PwN2A3U4ihd7sKYUM8wgPj46M30reziLl8CPPhN3H5Hn46nksmKmHRbPNakH2gW0Ba7NIxy+ocqUy0fQpcQ== dependencies: - "@typescript-eslint/experimental-utils" "4.16.1" + "@typescript-eslint/experimental-utils" "4.23.0" aria-query "^4.2.2" axobject-query "^2.2.0" -"@angular-eslint/eslint-plugin@~4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-4.2.0.tgz#134203c3ac340ae4ae76703434f636dc0a110d7d" - integrity sha512-G8D8Pso6GcHW8vFkUSvgoKPIOtGTqO+eb5aytGtpogMgzxBRyr0juU/9Uz5dAhO6TOERIj1gPpJQ61R/n/Aaew== +"@angular-eslint/eslint-plugin@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-12.0.0.tgz#47663c1b1101bcf07fb0f714f8287b3de3b3d7f7" + integrity sha512-osdJdMu8bYFv9WGhC04AwRcbeKq4sxCQnShV7NiF0xkgNG9KqDaStytVhPjJFn2Ja1QhfiTGlcFFk4D/9aruog== dependencies: - "@typescript-eslint/experimental-utils" "4.16.1" + "@typescript-eslint/experimental-utils" "4.23.0" -"@angular-eslint/template-parser@~4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-4.2.0.tgz#02f98c72692880b81cd6b4cc137306b346c0b193" - integrity sha512-77lJ9MDNWmW4ik9l3g149iO9SGRx3qLGZvfSTwmbPxpCgNripWerla9Ia1X+gLkitI8CLpcpiZybxH3EWxj/qQ== +"@angular-eslint/template-parser@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-12.0.0.tgz#5b2ea31d4a9338cfe4a52689de36c8b00b94f286" + integrity sha512-gl5ansA2a8LY6TEjhe0k8NiQJJdEQPjjqpysO1Rpt3NWUYQkFMt+1+AnUyokHB1TU3/11dHRUjVWXj+pMtTIAA== dependencies: eslint-scope "^5.1.0" -"@angular/animations@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-11.2.13.tgz#f2020f129a0aa2fef2e2d82a7c728e7202d049d8" - integrity sha512-+TcJbMmKZI4kbSLp7TCJzOYkm90qe54OLWcNH6bi2NC9S0QsXaPo73yRP8sERjg/DjRj+wBf3LY63FvHZmqcTA== +"@angular/animations@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-12.0.0.tgz#5f845b1a58ffb6f3ea6103edf0756ac65320b725" + integrity sha512-BG/Ksk3863I7GKUem73Kty4UeU289oN+iPo/0O0x2dJCzNcpafML0GJpz4lg/RT9l6UddFviI4q9NiopR+eJfw== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/cdk@~11.2.12": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-11.2.12.tgz#c1c9c8d4a5763745fe2d324fc253f221b9c2b1b3" - integrity sha512-LImCQQ7n5OnTGXBAx1BaHgBBbdXiEtsNcHk5RvVURya9sswRcXRoa48EG3RyuT8mtqWsUdOX9+v4nCINLG4hZA== +"@angular/cdk@~12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-12.0.0.tgz#86064923870a7f1d6094d08dc7951e41d8972aaa" + integrity sha512-Ij1wNlufbwH2R3zVwkiJgrI0Oc4+yuveEFWMnckcZ7t6E3drmeS1/YeHSbYlWau+fglWs7LtJWC4dEIpGymvzg== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" optionalDependencies: parse5 "^5.0.0" -"@angular/cli@11.2.12": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-11.2.12.tgz#f5162667f5f3b950440f202645a26d870d5a3570" - integrity sha512-4VkHfHO4QuTkGFw5Tx7khZxsNHp60VKk8JzmPF6KIjkrDUVWVNwKOFOnJtbz9cXvayiUNNSEWqo9Oq3513zz4g== +"@angular/cli@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-12.0.0.tgz#59ccb66f0ceb5230ee120dafb5fda70602bd0ff1" + integrity sha512-A8vGhLKTQI/1P2Ia3Wv3/SfUBJGcy7B/MS3Dp+ueEs2purMG23z4UDmAp2EcxCJKKx0fKM++XKpbHIanELfOeA== dependencies: - "@angular-devkit/architect" "0.1102.12" - "@angular-devkit/core" "11.2.12" - "@angular-devkit/schematics" "11.2.12" - "@schematics/angular" "11.2.12" - "@schematics/update" "0.1102.12" + "@angular-devkit/architect" "0.1200.0" + "@angular-devkit/core" "12.0.0" + "@angular-devkit/schematics" "12.0.0" + "@schematics/angular" "12.0.0" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.3.1" ini "2.0.0" - inquirer "7.3.3" + inquirer "8.0.0" jsonc-parser "3.0.0" - npm-package-arg "8.1.0" - npm-pick-manifest "6.1.0" - open "7.4.0" - ora "5.3.0" - pacote "11.2.4" - resolve "1.19.0" + npm-package-arg "8.1.2" + npm-pick-manifest "6.1.1" + open "8.0.7" + ora "5.4.0" + pacote "11.3.2" + resolve "1.20.0" rimraf "3.0.2" - semver "7.3.4" - symbol-observable "3.0.0" - universal-analytics "0.4.23" + semver "7.3.5" + symbol-observable "4.0.0" uuid "8.3.2" -"@angular/common@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-11.2.13.tgz#fedd5eda9c2c5340d8d7310bdbd4606636eb7a41" - integrity sha512-96iZ4wlZado78yG6eY/ZmY6+H2X2hJi2XsK7iXKzc5h3oeILEkt+ulfBNkCNjMm8xPYBmLrSBueG96/T4/Bi5w== +"@angular/common@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-12.0.0.tgz#a4b992f3af997e9e957500148100f3f2a90ad3e9" + integrity sha512-d6+WSnCFcxAHBsbCvBC3Rutmk+tB5CEdKhkTBY/vGe0A/MjbayzHR4IDv2i0+UZDLSgMJubqh3iCPUcSglXSEg== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/compiler-cli@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-11.2.13.tgz#7e624ff5fb78c5427c8001e920946973d77ce71e" - integrity sha512-AaIip0gdeNTcXAhxsGAudybdmaSwQ0BoxsdPIZRb9jokHAP4pCKx9aFJFbvTHB99kbKV7zEmGMCbsoRkRhxnJw== +"@angular/compiler-cli@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-12.0.0.tgz#64c37b60be3c21d9443accdc113b587214e76a0d" + integrity sha512-6cBocQd/Umi8gVI6Jo8VsyvHuRjDO4TrFFUkbVwNAG9FacXEFP0zYABT5ywe2lVkUxs5e8WyDqvDf7fxr7CI4Q== dependencies: "@babel/core" "^7.8.6" "@babel/types" "^7.8.6" canonical-path "1.0.0" chokidar "^3.0.0" convert-source-map "^1.5.1" - dependency-graph "^0.7.2" - fs-extra "4.0.2" + dependency-graph "^0.11.0" magic-string "^0.25.0" minimist "^1.2.0" reflect-metadata "^0.1.2" - semver "^6.3.0" + semver "^7.0.0" source-map "^0.6.1" sourcemap-codec "^1.4.8" - tslib "^2.0.0" + tslib "^2.1.0" yargs "^16.2.0" -"@angular/compiler@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-11.2.13.tgz#3f41c1a18b62959db3a314b1a809ace607a68c81" - integrity sha512-HI7gfVozFW/rQoab0zVyYpU8PRHNWMk+pLc+q3ukVuByCmnBZ6kTAEQX2jnXVY8QGMmdptBgrsW/OsFaws98Zw== +"@angular/compiler@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-12.0.0.tgz#bb0d4f464fee4803dbda49d862474f771c31f633" + integrity sha512-7NdZNyxm9KLlRMmmtId6RfV6VbQIUMDxN44R+ax66BoWsuhdYXUDsDO554LwYwrjnnXXGkurDJhv7umeRwaZGw== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/core@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-11.2.13.tgz#34649d2c5fee416192e90a4187233b338e3d354d" - integrity sha512-xMKskq/Sbf8dkX/vx4WCwXMpDTJJ77rGlP8fVTB8az8QeOa14i6AdpmSXaJ8sl68R3v8Y1Pa9yBQytbKuxShqQ== +"@angular/core@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-12.0.0.tgz#d16a217f0919b3b161229118c52b1f703815eb71" + integrity sha512-fwXtF6qP8pr07+El/dg67RmgsI4Ubfi+E5YLjYKQ62gM8MzYyYGmLPakFzFnbzYrOr05zdprrbcVgGtMRHapMA== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/forms@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-11.2.13.tgz#9cfe516d7186e4d6e75b8729910c23b7a3833aeb" - integrity sha512-Q5vNHycS+II2xYOE/HJB4NoYg/Ngg6hPF+0KXdCA7L4kfrwx5Fsi4oZ6gRRnSpzSGedISpSU4VE5wPiq7zJ3+A== +"@angular/forms@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-12.0.0.tgz#faf5e3e36a8c4f57f42a5b3dd11786f39c94d693" + integrity sha512-/Z2AWd2k/9cs+WwXBlZ8yUqgGsHYcp8g6PUCehZQk1gd/4n4FOKvTIGiypajGUPwO4GOHJDzibfCsGw8MenCpQ== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/language-service@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-11.2.13.tgz#0c54d3d76c1f6cd45de2033f4d0a17c3969b19d5" - integrity sha512-nOqFJEsdmA0qHmINT0aLXrP5wjnDuOYCjLtBTv7qvvJX2mO3/9RK2uKZuMXyLPjBBQ20k7vPOAfs3vk+V05RKg== +"@angular/language-service@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-12.0.0.tgz#b404961f60d944ea013833b282c144b3228f439d" + integrity sha512-LDS1+dOdXUEf0kiqcYnOfXBIs2HAD6vJ5HWb58kq6z/8AHRMvvHiwSV26UlIbnnD+CBnTu36xmbCyZtIJluhqw== -"@angular/material-moment-adapter@^11.2.12": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@angular/material-moment-adapter/-/material-moment-adapter-11.2.12.tgz#8044d1a21c916382714062e665fa19fb3375f1b7" - integrity sha512-dV3rYkB1OkLECTJZH+xyLWEnu7MEwIWn93P1xd/xA0a0loW9HvHhGaLOWodtS2MdFau6QCnwGTeoVecH7Z4zpw== +"@angular/material-moment-adapter@^12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/material-moment-adapter/-/material-moment-adapter-12.0.0.tgz#e98aa88c910d45f3b088587fa813c65dd5782546" + integrity sha512-KHj28LoEp+LAhu8ohm4RO4ox7yYSO2e3eMYHF2IlX1lZ9k/g62tMbB01QffqroZuHelNdja3aGH0mnwrXUiH4g== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/material@~11.2.12": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@angular/material/-/material-11.2.12.tgz#625778113075bddb92f13ab03a8a513178f2b5a8" - integrity sha512-n3HDKoM552jLcmxtpTYzMUzV6V9vUBKyNs7SNdUfjuK00VJlTWMu03g/QWOj2Y9KftOuDUa8+N2XodwAr+jtCw== +"@angular/material@~12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-12.0.0.tgz#07eb6ad3c661ae3ab8e65df803eae47fd149735f" + integrity sha512-ToWfr4ge2ZINLBtUQOseGm7mzscLMsrKLWYM0HzfVL9lkm6EtfTlReZV84DEzDf6/htky41t9nY5SBPWs2dtug== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/platform-browser-dynamic@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.13.tgz#95e8390da4005cda594643a55cb7a80a41784059" - integrity sha512-EHCG8fhnurhHUq+XKyKL3bYEcQThRYyzIJTJig28ulgvQd4TAKAbw8osL9rpjNUnCM1HjDXOqnCcPnsQIPIzMg== +"@angular/platform-browser-dynamic@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.0.0.tgz#295036e7b487b6dbe3b13db763a371675d391ee6" + integrity sha512-Rkxr/KVOZGuGSuIYo2XZYbOpyS2t2jpLPS65KUUcOEwktj4hSv5VZ2soZF18tG5ZNbx06C1QDW/j9HwmZjEh5g== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/platform-browser@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-11.2.13.tgz#39bea0d6f9e7803f22082d3c8f0fb7ed4b68c43d" - integrity sha512-V70Pf3jJPbeXsiy9mtVMctVBIIoqiDhsoI+6lCehf/LaJR33oUizj+RS1wlpgOECIj9oD5EqzdvxEukR0PpnoQ== +"@angular/platform-browser@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-12.0.0.tgz#097805ad9a5db044dc0a74c1294cdfa5122eca4c" + integrity sha512-h+uMMluRh4dqJIor7EpvwNKRjv4xCxpttizJlqbo3vfcoOoLDoc9SvEFiXxd+UVh3S0re8zBsyBIJl+gTVFKWQ== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/router@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-11.2.13.tgz#aab59dbc24f5be3ff6b5252e0bd8e57212d1604e" - integrity sha512-Fae/ViC4Ho2rGF5wQLrnJcucuhVGx29QqZs2K0C6sj4UUNRUzYWZknnGWqRj3Z9ft7XIi38Q2yCkSc76iS1aqQ== +"@angular/router@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-12.0.0.tgz#646a6492dfd35459c50a11c7d21a2200631f4c5c" + integrity sha512-n5YHa24NgiRttAfMOzSa/H+nbx8j8c+2f1HgyrOftxoExH1FPTRnKd/mJ32A6iies8glOj9ImQBO/91C0yaQeA== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" -"@angular/service-worker@11.2.13": - version "11.2.13" - resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-11.2.13.tgz#aeed6895be699a9146b6fca8cf77c9efb9136dca" - integrity sha512-saLjEqdS+zynBaK0AvQii+/VPAC1Rn8cNOCnqY5H2K6pJ0gpLoFfN8rurtSVVNh9EN17Iz5s28DGRRIbn+YYPg== +"@angular/service-worker@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-12.0.0.tgz#92a5df01d152433db6473d27175dbd10aeaaef53" + integrity sha512-Y+JcNNRGQiFTH3DLL2ZGjedmCpej4khSYxAUjmsuvpGEtL/5kn/OPfQtQrRdhs/Cfaxro41VrFHjSPDU+3oaFA== dependencies: - tslib "^2.0.0" + tslib "^2.1.0" "@babel/code-frame@7.12.11": version "7.12.11" @@ -322,30 +311,30 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/compat-data@^7.12.7", "@babel/compat-data@^7.13.15": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== -"@babel/core@7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== +"@babel/core@7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.0.tgz#47299ff3ec8d111b493f1a9d04bf88c04e728d88" + integrity sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.0" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" convert-source-map "^1.7.0" debug "^4.1.0" - gensync "^1.0.0-beta.1" + gensync "^1.0.0-beta.2" json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" + semver "^6.3.0" source-map "^0.5.0" "@babel/core@^7.0.1", "@babel/core@^7.1.0", "@babel/core@^7.7.5": @@ -392,12 +381,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" - integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== +"@babel/generator@7.14.1", "@babel/generator@^7.14.0": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.1.tgz#1f99331babd65700183628da186f36f63d615c93" + integrity sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ== dependencies: - "@babel/types" "^7.12.11" + "@babel/types" "^7.14.1" jsesc "^2.5.1" source-map "^0.5.0" @@ -410,15 +399,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.12.10", "@babel/generator@^7.14.0": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.1.tgz#1f99331babd65700183628da186f36f63d615c93" - integrity sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ== - dependencies: - "@babel/types" "^7.14.1" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/generator@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" @@ -428,6 +408,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.2.tgz#d5773e8b557d421fd6ce0d5efa5fd7fc22567c30" + integrity sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ== + dependencies: + "@babel/types" "^7.14.2" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -435,6 +424,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -443,6 +439,14 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/helper-compilation-targets@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" @@ -454,7 +458,7 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-compilation-targets@^7.12.5": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": version "7.13.16" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== @@ -476,16 +480,17 @@ "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" - integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.2.tgz#4e455b0329af29c2d3ad254b5dd5aed34595385d" + integrity sha512-6YctwVsmlkchxfGUogvVrrhzyD3grFJyluj5JgDlQrwfMLJSt5tdAzFZfPf4H2Xoi5YLcQ6BxfJlaOBHuctyIw== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" @@ -496,12 +501,12 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" -"@babel/helper-create-regexp-features-plugin@^7.12.1": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" - integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" + integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" "@babel/helper-define-map@^7.10.4": @@ -513,6 +518,20 @@ "@babel/types" "^7.10.5" lodash "^4.17.19" +"@babel/helper-define-polyfill-provider@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" + integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-explode-assignable-expression@^7.10.4": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" @@ -520,6 +539,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" + integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== + dependencies: + "@babel/types" "^7.13.0" + "@babel/helper-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" @@ -538,6 +564,15 @@ "@babel/template" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/helper-function-name@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" + integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.14.2" + "@babel/helper-get-function-arity@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" @@ -559,6 +594,14 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-hoist-variables@^7.13.0": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" + integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== + dependencies: + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.16" + "@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" @@ -573,6 +616,13 @@ dependencies: "@babel/types" "^7.12.7" +"@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-module-imports@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" @@ -587,7 +637,7 @@ dependencies: "@babel/types" "^7.12.5" -"@babel/helper-module-imports@^7.12.5": +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== @@ -622,6 +672,20 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" + integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.14.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -629,6 +693,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" @@ -656,14 +727,14 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-remap-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" - integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== +"@babel/helper-remap-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" + integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/types" "^7.12.1" + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.13.0" + "@babel/types" "^7.13.0" "@babel/helper-replace-supers@^7.10.4": version "7.10.4" @@ -685,6 +756,16 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" + integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.12" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -700,6 +781,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-skip-transparent-expression-wrappers@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" @@ -733,12 +821,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== -"@babel/helper-validator-identifier@^7.14.0": +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== -"@babel/helper-validator-option@^7.12.11", "@babel/helper-validator-option@^7.12.17": +"@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== @@ -753,6 +841,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-wrap-function@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" + integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helpers@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" @@ -771,6 +869,15 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helpers@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" + integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -794,7 +901,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== -"@babel/parser@^7.12.10", "@babel/parser@^7.12.13", "@babel/parser@^7.14.0": +"@babel/parser@^7.12.13", "@babel/parser@^7.14.0": version "7.14.1" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.1.tgz#1bd644b5db3f5797c4479d89ec1817fe02b84c47" integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q== @@ -804,6 +911,20 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== +"@babel/parser@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.2.tgz#0c1680aa44ad4605b16cbdcc5c341a61bde9c746" + integrity sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ== + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" + integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" @@ -813,14 +934,14 @@ "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-async-generator-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" - integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== +"@babel/plugin-proposal-async-generator-functions@^7.13.15": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" + integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.10.4": version "7.10.4" @@ -830,13 +951,21 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== +"@babel/plugin-proposal-class-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-class-static-block@^7.13.11": + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz#6fcbba4a962702c17e5371a0c7b39afde186d703" + integrity sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-class-static-block" "^7.12.13" "@babel/plugin-proposal-dynamic-import@^7.10.4": version "7.10.4" @@ -846,13 +975,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-dynamic-import@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" - integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== +"@babel/plugin-proposal-dynamic-import@^7.13.8": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" + integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-namespace-from@^7.10.4": version "7.10.4" @@ -862,12 +991,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" - integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== +"@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" + integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.10.4": @@ -878,13 +1007,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" - integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== +"@babel/plugin-proposal-json-strings@^7.13.8": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" + integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.11.0": version "7.11.0" @@ -894,12 +1023,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" - integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== +"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" + integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": @@ -910,13 +1039,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" + integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.10.4": version "7.10.4" @@ -926,12 +1055,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-numeric-separator@^7.12.7": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== +"@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" + integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.11.0": @@ -943,14 +1072,16 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" - integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== +"@babel/plugin-proposal-object-rest-spread@^7.13.8": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" + integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.14.2" "@babel/plugin-proposal-optional-catch-binding@^7.10.4": version "7.10.4" @@ -960,13 +1091,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" - integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== +"@babel/plugin-proposal-optional-catch-binding@^7.13.8": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" + integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining@^7.11.0": version "7.11.0" @@ -977,10 +1108,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.12.7": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" - integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== +"@babel/plugin-proposal-optional-chaining@^7.13.12": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" + integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" @@ -994,13 +1125,23 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-private-methods@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" - integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== +"@babel/plugin-proposal-private-methods@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" + integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" + integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-create-class-features-plugin" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" "@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.10.4" @@ -1010,13 +1151,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" - integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== +"@babel/plugin-proposal-unicode-property-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -1039,14 +1180,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-class-static-block@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" + integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -1116,6 +1264,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" + integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-top-level-await@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" @@ -1123,14 +1278,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-top-level-await@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== @@ -1144,21 +1292,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" - integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== +"@babel/plugin-transform-arrow-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" + integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-async-to-generator@7.12.1", "@babel/plugin-transform-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" - integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== +"@babel/plugin-transform-async-to-generator@7.13.0", "@babel/plugin-transform-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" + integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" "@babel/plugin-transform-async-to-generator@^7.10.4": version "7.10.4" @@ -1176,12 +1324,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoped-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" - integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== +"@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-block-scoping@^7.10.4": version "7.11.1" @@ -1190,10 +1338,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.12.11": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz#ac1b3a8e3d8cbb31efc6b9be2f74eb9823b74ab2" - integrity sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA== +"@babel/plugin-transform-block-scoping@^7.14.1": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" + integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -1211,18 +1359,17 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-classes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" - integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== +"@babel/plugin-transform-classes@^7.13.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" + integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.10.4": @@ -1232,12 +1379,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-computed-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" - integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== +"@babel/plugin-transform-computed-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" + integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-destructuring@^7.10.4": version "7.10.4" @@ -1246,12 +1393,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" - integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== +"@babel/plugin-transform-destructuring@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" + integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" @@ -1261,13 +1408,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" - integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== +"@babel/plugin-transform-dotall-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-duplicate-keys@^7.10.4": version "7.10.4" @@ -1276,12 +1423,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" - integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== +"@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-exponentiation-operator@^7.10.4": version "7.10.4" @@ -1291,13 +1438,13 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" - integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== +"@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-for-of@^7.10.4": version "7.10.4" @@ -1306,12 +1453,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-for-of@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" - integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== +"@babel/plugin-transform-for-of@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" + integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-function-name@^7.10.4": version "7.10.4" @@ -1321,13 +1468,13 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" - integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== +"@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-literals@^7.10.4": version "7.10.4" @@ -1336,12 +1483,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" - integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== +"@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-member-expression-literals@^7.10.4": version "7.10.4" @@ -1350,12 +1497,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" - integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== +"@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-modules-amd@^7.10.4": version "7.10.5" @@ -1366,13 +1513,13 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-amd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" - integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== +"@babel/plugin-transform-modules-amd@^7.14.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" + integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.10.4": @@ -1385,14 +1532,14 @@ "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" - integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== +"@babel/plugin-transform-modules-commonjs@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" + integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-module-transforms" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.10.4": @@ -1405,15 +1552,15 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" - integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== +"@babel/plugin-transform-modules-systemjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" + integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-hoist-variables" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-umd@^7.10.4": @@ -1424,13 +1571,13 @@ "@babel/helper-module-transforms" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-umd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" - integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== +"@babel/plugin-transform-modules-umd@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" + integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": version "7.10.4" @@ -1439,12 +1586,12 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" - integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/plugin-transform-new-target@^7.10.4": version "7.10.4" @@ -1453,12 +1600,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-new-target@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" - integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== +"@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-object-super@^7.10.4": version "7.10.4" @@ -1468,13 +1615,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" -"@babel/plugin-transform-object-super@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" - integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== +"@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" "@babel/plugin-transform-parameters@^7.10.4": version "7.10.5" @@ -1484,12 +1631,12 @@ "@babel/helper-get-function-arity" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-parameters@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" - integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== +"@babel/plugin-transform-parameters@^7.13.0", "@babel/plugin-transform-parameters@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" + integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-property-literals@^7.10.4": version "7.10.4" @@ -1498,12 +1645,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" - integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== +"@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-regenerator@^7.10.4": version "7.10.4" @@ -1512,10 +1659,10 @@ dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-regenerator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" - integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== +"@babel/plugin-transform-regenerator@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" + integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== dependencies: regenerator-transform "^0.14.2" @@ -1526,21 +1673,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-reserved-words@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" - integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== +"@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-runtime@7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562" - integrity sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA== +"@babel/plugin-transform-runtime@7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.15.tgz#2eddf585dd066b84102517e10a577f24f76a9cd7" + integrity sha512-d+ezl76gx6Jal08XngJUkXM4lFXK/5Ikl9Mh4HKDxSfGJXmZ9xG64XT2oivBzfxb/eQ62VfvoMkaCZUKJMVrBA== dependencies: - "@babel/helper-module-imports" "^7.12.5" - "@babel/helper-plugin-utils" "^7.10.4" - semver "^5.5.1" + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" + semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.10.4": version "7.10.4" @@ -1549,12 +1699,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-shorthand-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" - integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== +"@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-spread@^7.11.0": version "7.11.0" @@ -1564,12 +1714,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" -"@babel/plugin-transform-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" - integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== +"@babel/plugin-transform-spread@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" + integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-transform-sticky-regex@^7.10.4": @@ -1580,7 +1730,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" -"@babel/plugin-transform-sticky-regex@^7.12.7": +"@babel/plugin-transform-sticky-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== @@ -1595,12 +1745,12 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" - integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== +"@babel/plugin-transform-template-literals@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" + integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-typeof-symbol@^7.10.4": version "7.10.4" @@ -1609,7 +1759,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.12.10": +"@babel/plugin-transform-typeof-symbol@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== @@ -1623,12 +1773,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-escapes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" - integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== +"@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-unicode-regex@^7.10.4": version "7.10.4" @@ -1638,85 +1788,92 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" - integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== +"@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/preset-env@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" - integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== +"@babel/preset-env@7.14.1": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.1.tgz#b55914e2e68885ea03f69600b2d3537e54574a93" + integrity sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ== dependencies: - "@babel/compat-data" "^7.12.7" - "@babel/helper-compilation-targets" "^7.12.5" - "@babel/helper-module-imports" "^7.12.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.11" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.7" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.7" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-async-generator-functions" "^7.13.15" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-class-static-block" "^7.13.11" + "@babel/plugin-proposal-dynamic-import" "^7.13.8" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.13.8" + "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.13.8" + "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-private-property-in-object" "^7.14.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.11" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.7" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.10" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.11" - core-js-compat "^3.8.0" - semver "^5.5.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.13.0" + "@babel/plugin-transform-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.14.1" + "@babel/plugin-transform-classes" "^7.13.0" + "@babel/plugin-transform-computed-properties" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.17" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.13.0" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.14.0" + "@babel/plugin-transform-modules-commonjs" "^7.14.0" + "@babel/plugin-transform-modules-systemjs" "^7.13.8" + "@babel/plugin-transform-modules-umd" "^7.14.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.13.15" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.13.0" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.13.0" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" + "@babel/preset-modules" "^0.1.4" + "@babel/types" "^7.14.1" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" + core-js-compat "^3.9.0" + semver "^6.3.0" "@babel/preset-env@^7.0.0": version "7.11.5" @@ -1792,7 +1949,7 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-modules@^0.1.3": +"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== @@ -1811,14 +1968,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2": +"@babel/runtime@7.14.0", "@babel/runtime@^7.10.2": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== @@ -1832,14 +1982,14 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@7.12.7", "@babel/template@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" - integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== +"@babel/template@7.12.13", "@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" "@babel/template@^7.10.4", "@babel/template@^7.3.3": version "7.10.4" @@ -1850,14 +2000,14 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== +"@babel/template@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": version "7.11.5" @@ -1889,17 +2039,17 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/traverse@^7.12.10": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.0.tgz#cea0dc8ae7e2b1dec65f512f39f3483e8cc95aef" - integrity sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" + integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.0" - "@babel/helper-function-name" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.14.0" - "@babel/types" "^7.14.0" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" debug "^4.1.0" globals "^11.1.0" @@ -1921,7 +2071,7 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.1": +"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.1": version "7.14.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.1.tgz#095bd12f1c08ab63eff6e8f7745fa7c9cc15a9db" integrity sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA== @@ -1929,6 +2079,14 @@ "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" +"@babel/types@^7.13.0", "@babel/types@^7.13.16", "@babel/types@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" + integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1942,6 +2100,11 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + "@cypress/listr-verbose-renderer@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" @@ -2216,14 +2379,12 @@ merge-source-map "^1.1.0" schema-utils "^2.7.0" -"@ngtools/webpack@11.2.12": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-11.2.12.tgz#c01f4bf2ebf71f239aaca1e2b473fa6071c63f5e" - integrity sha512-YgzgJ72oGLvYVQH1c+pqJQRO5OE8axPt8HwPdueL/1g3rEwJgbeUrnIqw/eri7iTgFZflQRcePAA7dIz2uHwcw== +"@ngtools/webpack@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-12.0.0.tgz#b2f6cc8f727cc9fdf54faac27ce1b4865c471b1c" + integrity sha512-uo3w6/FQesqn8YZrO9QvcXR33f/eJqA5AEZrZqMBXRrCrxyVug1gNvFlx9ZFfKKsmokUfxyWPruei7mQ32DEKQ== dependencies: - "@angular-devkit/core" "11.2.12" enhanced-resolve "5.7.0" - webpack-sources "2.2.0" "@ngx-translate/core@^13.0.0": version "13.0.0" @@ -2260,11 +2421,6 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== - "@npmcli/git@^2.0.1": version "2.0.9" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.9.tgz#915bbfe66300e67b4da5ef765a4475ffb2ca5b6b" @@ -2279,7 +2435,7 @@ semver "^7.3.5" which "^2.0.2" -"@npmcli/installed-package-contents@^1.0.5": +"@npmcli/installed-package-contents@^1.0.6": version "1.0.7" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== @@ -2306,7 +2462,7 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^1.3.0": +"@npmcli/run-script@^1.8.2": version "1.8.5" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.5.tgz#f250a0c5e1a08a792d775a315d0ff42fc3a51e1d" integrity sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A== @@ -2317,40 +2473,40 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" -"@nrwl/angular@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-12.1.1.tgz#20ca09aa6e5809c0e5808f10ec902900fdf158c2" - integrity sha512-RUez+vgti8MZxbGI8wm0POaoKkzLrio/+n1FVAliFVGXJtOtBemfPn1JIPDrlhWrXwPAd1w58jBOKc7LUe4xAg== +"@nrwl/angular@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-12.3.3.tgz#13ffd5d67d1a0873c0dc68820f4ce42294574351" + integrity sha512-3zJoYAUcthjgQBeunJ5yaaFo+azubXdhaXSSOgpx6CT4Lwfm8ydctxJ78T38ibkA/oYPfnsJ0MfRO62pv45XSA== dependencies: - "@angular-devkit/schematics" "~11.2.0" - "@nrwl/cypress" "12.1.1" - "@nrwl/devkit" "12.1.1" - "@nrwl/jest" "12.1.1" - "@nrwl/linter" "12.1.1" - "@schematics/angular" "~11.2.0" + "@angular-devkit/schematics" "~12.0.0" + "@nrwl/cypress" "12.3.3" + "@nrwl/devkit" "12.3.3" + "@nrwl/jest" "12.3.3" + "@nrwl/linter" "12.3.3" + "@schematics/angular" "~12.0.0" jasmine-marbles "~0.6.0" - tslib "^2.0.0" + tslib "^2.1.0" -"@nrwl/cli@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-12.1.1.tgz#853f04314b584173e54ad427770731da2e74a029" - integrity sha512-Svsq0qFu6RnP8piVS69mxgQCYKLvhhCLVVa9/mGLY6guXApk2pc6fHQMmB2HgYZuAUtwDADw/qe8LBh4Hr4PRQ== +"@nrwl/cli@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-12.3.3.tgz#ec5e2a96e9a76da0c83df9245462752e7783cbe2" + integrity sha512-3B62KQwQpr57/kXH7eLoPOwsrZhIrqfhso85lUbmOPKpL1yzY9sQlmbBUxVze9VRWkytmSemDwJbvjudzLsjBQ== dependencies: - "@nrwl/tao" "12.1.1" + "@nrwl/tao" "12.3.3" chalk "4.1.0" v8-compile-cache "2.3.0" yargs "15.4.1" yargs-parser "20.0.0" -"@nrwl/cypress@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-12.1.1.tgz#3d4937f86b82d6e21699611ec7c6509a3d04131f" - integrity sha512-zCfin0Z505pX0cFa9aiox3xHTFOO7QHfKaI0QcWPShazJJSjJWQ7f8AV2R/U9x/drysrL6UpF6GroJZJiGy2nQ== +"@nrwl/cypress@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-12.3.3.tgz#56e2fd86926d9bea64157c261ce4c2f9bcbdc76b" + integrity sha512-kN98wzYlBV4irNuPerXRhYvwtSnZ6H0ymE5v98GELvPIiCuYcgqrn3RDVExbPYMZRJZVtQRNzsyG+T4mO3foNA== dependencies: "@cypress/webpack-preprocessor" "~4.1.2" - "@nrwl/devkit" "12.1.1" - "@nrwl/linter" "12.1.1" - "@nrwl/workspace" "12.1.1" + "@nrwl/devkit" "12.3.3" + "@nrwl/linter" "12.3.3" + "@nrwl/workspace" "12.3.3" fork-ts-checker-webpack-plugin "^3.1.1" rxjs "^6.5.4" ts-loader "5.4.5" @@ -2359,54 +2515,54 @@ webpack-node-externals "1.7.2" yargs-parser "20.0.0" -"@nrwl/devkit@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-12.1.1.tgz#e92a02d638d3aacd1c795338c9a17794281cef38" - integrity sha512-gDSIB4Mv8oz7+emEsZiC40YKyCBQHT+RbycoB7LeFWGbiuaK9YRkaqnTuuhpuOnfIOwq1klRMtvyZB7Zwo5TVQ== +"@nrwl/devkit@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-12.3.3.tgz#e68fc78bd2f9c4ac6435e5b3ca3523021de0d1a3" + integrity sha512-rMIWPhgsgvKsyKc79JKoGXDMfABDHCE57qy8BG9LABYukFY5qO07nhc5/HwYDVu4GFfT9vhlavGs4ynC2WX4BQ== dependencies: - "@nrwl/tao" "12.1.1" + "@nrwl/tao" "12.3.3" ejs "^3.1.5" ignore "^5.0.4" semver "7.3.4" strip-json-comments "^3.1.1" tslib "^2.0.0" -"@nrwl/eslint-plugin-nx@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-12.1.1.tgz#fc264e347eb8e487f2cf1206b9681f49df4072c4" - integrity sha512-AZgcEHqhK7IunpiGNOv0Uast4Qic/i55MTEt1PSF/MqzfKHiTyYIrADbi6sbH7hp37XZ9Wq3S15KXnO8ywvO5w== +"@nrwl/eslint-plugin-nx@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-12.3.3.tgz#ae10dc135afc63f1b45ba0a5fe35911f87e6ab32" + integrity sha512-9f8LNQYg1czV+g7t2CaQP5P2yeld+cUFPmQ4c+URO/dJk9ymC9MCYGidzZzTyGxxOr6O0jg1RGrMKcklp52kdA== dependencies: - "@nrwl/devkit" "12.1.1" - "@nrwl/workspace" "12.1.1" + "@nrwl/devkit" "12.3.3" + "@nrwl/workspace" "12.3.3" "@typescript-eslint/experimental-utils" "^4.3.0" confusing-browser-globals "^1.0.9" -"@nrwl/jest@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-12.1.1.tgz#2130457f2133ea831f774b3ce781cc21f73e7c01" - integrity sha512-JZac9SSbqA/+KcDVQxXvfJF7bjJQ1Y6TXF42+IzKutyN8piGmG14BTeWuBtGmV6uZEjJeTHIGMI0H53peiPR/g== +"@nrwl/jest@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-12.3.3.tgz#139b22f815b29f16b35e9ee89b6eac231deac41f" + integrity sha512-XZBT+/cj/6352YsmmSa0Lx6HYqVn8eiCX/n8taH9NtDW5AugL70EaPG/tNw3iTBReTsGty+ElrdbRkmj9cMx7A== dependencies: - "@nrwl/devkit" "12.1.1" + "@nrwl/devkit" "12.3.3" jest-resolve "^26.6.2" rxjs "^6.5.4" strip-json-comments "^3.1.1" tslib "^2.0.0" -"@nrwl/linter@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-12.1.1.tgz#937bca41621c03f4f895dd174857b3ebf29ad2e5" - integrity sha512-PlwPOR00klt4Hl6EvTSKHFhHEhD1mSGewWbTQzq3S1MaQW2+1ZbWV2fkytMGm0xSE+nMjDlOe2F4bDrIU933/Q== +"@nrwl/linter@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-12.3.3.tgz#5c738e64393813e77fee2f7b7452fe6f8478425c" + integrity sha512-LketzE/Hp10j01rlK5de/3mX+eGrRThRvMndxaO9D1T9X/5UGooOT8ywJ/H0AkdM8d8Sp8wfwhOvxY1+rKXmUQ== dependencies: - "@nrwl/devkit" "12.1.1" + "@nrwl/devkit" "12.3.3" glob "7.1.4" minimatch "3.0.4" tmp "~0.2.1" tslib "^2.0.0" -"@nrwl/tao@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-12.1.1.tgz#b00273390a1f7dc136954328bb76a94cd95a4e6d" - integrity sha512-qzJpQ6YAmAEy1toYM1JPZtNMo+GFNnly53FV4j1c/1gnQpmpT3PU3gFwEx/tzseafX6DKlxF/KSAbPdhsNnkdw== +"@nrwl/tao@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-12.3.3.tgz#5c78c0e86512fc83cca8a85012e85229f6dcc95e" + integrity sha512-jVza/w34NtFZNQ1YbhdsHcWnoiA5gbTAY8Uvox75jvo2qz1T/D2U3FlbaXc6/J675n6htmNITXHpTuaJIYCtig== dependencies: chalk "4.1.0" enquirer "~2.3.6" @@ -2419,15 +2575,15 @@ tslib "^2.0.0" yargs-parser "20.0.0" -"@nrwl/workspace@12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-12.1.1.tgz#e08a9a32e70371cac24bfeb1f7e3b077e459b3e0" - integrity sha512-Zk33TLCClbiJvEvCn53J9WJqNBT59zxaIRrx5L+Jzlt8kjW50mc6/t+PB2B22e86H7r+pIbL7lfrdYtELoHJ/A== +"@nrwl/workspace@12.3.3": + version "12.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-12.3.3.tgz#45b4644c4882b341a76adf008c39141b9d6b09c8" + integrity sha512-Ccn6yuYZF+C0HPOq2ipQIJVEObzQx7rTZOQvU3TeHhatHSJ5/PqlOMSijnoF9Hz6sO+0OBR4ACChrHkNMsfxYg== dependencies: - "@nrwl/cli" "12.1.1" - "@nrwl/devkit" "12.1.1" - "@nrwl/jest" "12.1.1" - "@nrwl/linter" "12.1.1" + "@nrwl/cli" "12.3.3" + "@nrwl/devkit" "12.3.3" + "@nrwl/jest" "12.3.3" + "@nrwl/linter" "12.3.3" axios "0.21.1" chalk "4.1.0" cosmiconfig "^4.0.0" @@ -2454,10 +2610,10 @@ resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-7.3.2.tgz#58c24fa6318268b7962fb51bbf6486bac24c7d64" integrity sha512-GJJ3ErKn2gZKXcjFBg46d4u0X+60daiVu04i+AoYbA7xyocCpGIhW/cg0dZmTq0c1ITfHXvn5uG42UN3BBFWiA== -"@rollup/plugin-commonjs@^17.0.0": - version "17.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" - integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== +"@rollup/plugin-commonjs@^19.0.0": + version "19.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz#8c3e71f9a66908e60d70cc1be205834ef3e45f71" + integrity sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -2474,10 +2630,10 @@ dependencies: "@rollup/pluginutils" "^3.0.8" -"@rollup/plugin-node-resolve@^11.1.0": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== +"@rollup/plugin-node-resolve@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" + integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -2502,29 +2658,15 @@ dependencies: any-observable "^0.3.0" -"@schematics/angular@11.2.12", "@schematics/angular@~11.2.0": - version "11.2.12" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-11.2.12.tgz#1a9db7fc3ac6b520dd6607ec5096842d1e9e8d09" - integrity sha512-QCFdJhJtHrytl2L9VAdKYzSS1+R5LpjQ+pw3f/10YeEEoUHk7QyuYXmMnreCYBWSKrloO+3Q+vhdnVWUQZSRng== +"@schematics/angular@12.0.0", "@schematics/angular@~12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-12.0.0.tgz#519c8d2bfb548c2678d7b3589548a7ff37e0dcf0" + integrity sha512-6fS1MuzLvuiuS8ruSl919+mXTBDgpMY+mC+n1iM70rHvDms6+wEIwuyEty6Mw7JsPFXwcFAsIBt3EZCplzHhmg== dependencies: - "@angular-devkit/core" "11.2.12" - "@angular-devkit/schematics" "11.2.12" + "@angular-devkit/core" "12.0.0" + "@angular-devkit/schematics" "12.0.0" jsonc-parser "3.0.0" -"@schematics/update@0.1102.12": - version "0.1102.12" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1102.12.tgz#e9221c3bd8077baf2a4f688bdeca3ded329c356b" - integrity sha512-3Gm/0izWhfHqXCKENkVVqFJVkJN4+mebevSlXqlQjwLMwJNY5Yt3FMyDSxYx6s2d9MC2stODOjwjsLhd6SdafQ== - dependencies: - "@angular-devkit/core" "11.2.12" - "@angular-devkit/schematics" "11.2.12" - "@yarnpkg/lockfile" "1.1.0" - ini "2.0.0" - npm-package-arg "^8.0.0" - pacote "11.2.4" - semver "7.3.4" - semver-intersect "1.4.0" - "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -2619,6 +2761,22 @@ dependencies: cypress "*" +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.2.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" + integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" @@ -2629,6 +2787,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^0.0.47": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -2663,11 +2826,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jasmine@3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.7.1.tgz#35b86511a389673ac1a706c6010b35788a0d998d" - integrity sha512-MP1bcwS0MXQSKPBd20wv0rqF+GOfHTchz4mKFkS4ajAmz2oYwhOpSE9FPe611TOOarA061itZwUQUYRI5mPJsA== - "@types/jest@26.0.23": version "26.0.23" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" @@ -2676,7 +2834,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@^7.0.3": +"@types/json-schema@*", "@types/json-schema@^7.0.3": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -2706,10 +2864,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.50.tgz#e9b2e85fafc15f2a8aa8fdd41091b983da5fd6ee" integrity sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w== -"@types/node@15.0.2": - version "15.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" - integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== +"@types/node@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.0.tgz#d6fed7d6bc6854306da3dea1af9f874b00783e26" + integrity sha512-8/bnjSZD86ZfpBsDlCIkNXIvm+h6wi9g7IqL+kmFkQ+Wvu3JrasgLElfiPgoo8V8vVfnEi0QVS12gbl94h9YsQ== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2726,11 +2884,6 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.1.tgz#be148756d5480a84cde100324c03a86ae5739fb5" integrity sha512-2zs+O+UkDsJ1Vcp667pd3f8xearMdopz/z54i99wtRDI5KLmngk7vlrYZD0ZjKHaROR03EznlBbVY9PfAEyJIQ== -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2779,13 +2932,13 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.1.tgz#6bcdbaa4548553ab861b4e5f34936ead1349a543" - integrity sha512-kVTAghWDDhsvQ602tHBc6WmQkdaYbkcTwZu+7l24jtJiYvm9l+/y/b2BZANEezxPDiX5MK2ZecE+9BFi/YJryw== +"@typescript-eslint/eslint-plugin@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" + integrity sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw== dependencies: - "@typescript-eslint/experimental-utils" "4.22.1" - "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/experimental-utils" "4.23.0" + "@typescript-eslint/scope-manager" "4.23.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -2793,19 +2946,19 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.16.1": - version "4.16.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz#da7a396dc7d0e01922acf102b76efff17320b328" - integrity sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ== +"@typescript-eslint/experimental-utils@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz#f2059434cd6e5672bfeab2fb03b7c0a20622266f" + integrity sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.16.1" - "@typescript-eslint/types" "4.16.1" - "@typescript-eslint/typescript-estree" "4.16.1" + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@4.22.1", "@typescript-eslint/experimental-utils@^4.3.0": +"@typescript-eslint/experimental-utils@^4.3.0": version "4.22.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.1.tgz#3938a5c89b27dc9a39b5de63a62ab1623ab27497" integrity sha512-svYlHecSMCQGDO2qN1v477ax/IDQwWhc7PRBiwAdAMJE7GXk5stF4Z9R/8wbRkuX/5e9dHqbIWxjeOjckK3wLQ== @@ -2817,24 +2970,16 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.1.tgz#a95bda0fd01d994a15fc3e99dc984294f25c19cc" - integrity sha512-l+sUJFInWhuMxA6rtirzjooh8cM/AATAe3amvIkqKFeMzkn85V+eLzb1RyuXkHak4dLfYzOmF6DXPyflJvjQnw== +"@typescript-eslint/parser@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.23.0.tgz#239315d38e42e852bef43a4b0b01bef78f78911c" + integrity sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug== dependencies: - "@typescript-eslint/scope-manager" "4.22.1" - "@typescript-eslint/types" "4.22.1" - "@typescript-eslint/typescript-estree" "4.22.1" + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.16.1": - version "4.16.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz#244e2006bc60cfe46987e9987f4ff49c9e3f00d5" - integrity sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw== - dependencies: - "@typescript-eslint/types" "4.16.1" - "@typescript-eslint/visitor-keys" "4.16.1" - "@typescript-eslint/scope-manager@4.22.1": version "4.22.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.1.tgz#5bb357f94f9cd8b94e6be43dd637eb73b8f355b4" @@ -2843,28 +2988,23 @@ "@typescript-eslint/types" "4.22.1" "@typescript-eslint/visitor-keys" "4.22.1" -"@typescript-eslint/types@4.16.1": - version "4.16.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.16.1.tgz#5ba2d3e38b1a67420d2487519e193163054d9c15" - integrity sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA== +"@typescript-eslint/scope-manager@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz#8792ef7eacac122e2ec8fa2d30a59b8d9a1f1ce4" + integrity sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w== + dependencies: + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" "@typescript-eslint/types@4.22.1": version "4.22.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.1.tgz#bf99c6cec0b4a23d53a61894816927f2adad856a" integrity sha512-2HTkbkdAeI3OOcWbqA8hWf/7z9c6gkmnWNGz0dKSLYLWywUlkOAQ2XcjhlKLj5xBFDf8FgAOF5aQbnLRvgNbCw== -"@typescript-eslint/typescript-estree@4.16.1": - version "4.16.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz#c2fc46b05a48fbf8bbe8b66a63f0a9ba04b356f1" - integrity sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg== - dependencies: - "@typescript-eslint/types" "4.16.1" - "@typescript-eslint/visitor-keys" "4.16.1" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" +"@typescript-eslint/types@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b" + integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw== "@typescript-eslint/typescript-estree@4.22.1": version "4.22.1" @@ -2879,13 +3019,18 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.16.1": - version "4.16.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz#d7571fb580749fae621520deeb134370bbfc7293" - integrity sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w== +"@typescript-eslint/typescript-estree@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz#0753b292097523852428a6f5a1aa8ccc1aae6cd9" + integrity sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw== dependencies: - "@typescript-eslint/types" "4.16.1" - eslint-visitor-keys "^2.0.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" "@typescript-eslint/visitor-keys@4.22.1": version "4.22.1" @@ -2895,6 +3040,22 @@ "@typescript-eslint/types" "4.22.1" eslint-visitor-keys "^2.0.0" +"@typescript-eslint/visitor-keys@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz#7215cc977bd3b4ef22467b9023594e32f9e4e455" + integrity sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg== + dependencies: + "@typescript-eslint/types" "4.23.0" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" + integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -2904,16 +3065,31 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" +"@webassemblyjs/floating-point-hex-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" + integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== + "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@webassemblyjs/helper-api-error@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" + integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== + "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@webassemblyjs/helper-buffer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" + integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== + "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" @@ -2938,11 +3114,35 @@ dependencies: "@webassemblyjs/ast" "1.9.0" +"@webassemblyjs/helper-numbers@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" + integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" + integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== + "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== +"@webassemblyjs/helper-wasm-section@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" + integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" @@ -2953,6 +3153,13 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wasm-gen" "1.9.0" +"@webassemblyjs/ieee754@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" + integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" @@ -2960,6 +3167,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/leb128@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" + integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" @@ -2967,11 +3181,30 @@ dependencies: "@xtuc/long" "4.2.2" +"@webassemblyjs/utf8@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" + integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== + "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/wasm-edit@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" + integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/helper-wasm-section" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-opt" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wast-printer" "1.11.0" + "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" @@ -2986,6 +3219,17 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wast-printer" "1.9.0" +"@webassemblyjs/wasm-gen@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" + integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" + "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" @@ -2997,6 +3241,16 @@ "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" +"@webassemblyjs/wasm-opt@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" + integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" @@ -3007,6 +3261,18 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" +"@webassemblyjs/wasm-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" + integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" + "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" @@ -3031,6 +3297,14 @@ "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-printer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" + integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" @@ -3097,9 +3371,9 @@ acorn-walk@^7.1.1: integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^7.1.1: version "7.4.0" @@ -3111,15 +3385,15 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.1.0: +acorn@^8.1.0, acorn@^8.2.1: version "8.2.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== dependencies: loader-utils "^2.0.0" regex-parser "^2.2.11" @@ -3153,42 +3427,19 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== +ajv-formats@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.0.2.tgz#69875cb99d76c74be46e9c7a4444bc232354eba0" + integrity sha512-Brah4Uo5/U8v76c6euTwtjVFFaVishwnJrQBYpev1JRh4vjA1F4HY3UzQez41YUCszUCXKagG8v6eVRBHV1gkw== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@6.12.6, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== - 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" - -ajv@^7.0.3: - version "7.2.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.2.4.tgz#8e239d4d56cf884bccca8cca362f508446dc160f" - integrity sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.0.1: +ajv@8.2.0, ajv@^8.0.1: version "8.2.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== @@ -3198,7 +3449,37 @@ ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.2.2" -alphanum-sort@^1.0.0, alphanum-sort@^1.0.2: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" + integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== + 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" + +ajv@^6.10.2, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ajv@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.3.0.tgz#25ee7348e32cdc4a1dbb38256bf6bdc451dd577c" + integrity sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= @@ -3218,7 +3499,7 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== @@ -3329,11 +3610,6 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3493,28 +3769,17 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.4.tgz#c0e7cf24fcc6a1ae5d6250c623f0cb8beef2f7e1" - integrity sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw== +autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== dependencies: - browserslist "^4.16.1" - caniuse-lite "^1.0.30001181" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" colorette "^1.2.1" - fraction.js "^4.0.13" - normalize-range "^0.1.2" - postcss-value-parser "^4.1.0" - -autoprefixer@^10.2.4: - version "10.2.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" - integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== - dependencies: - browserslist "^4.16.3" - caniuse-lite "^1.0.30001196" - colorette "^1.2.2" - fraction.js "^4.0.13" normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: @@ -3619,6 +3884,30 @@ babel-plugin-jest-hoist@^26.6.2: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" +babel-plugin-polyfill-corejs2@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" + integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.0" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" + integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.0" + core-js-compat "^3.9.1" + +babel-plugin-polyfill-regenerator@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8" + integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.0" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -3650,12 +3939,12 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@1.3.1, base64-js@^1.0.2: +base64-js@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3707,7 +3996,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^4.0.3, bl@^4.1.0: +bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -3731,15 +4020,15 @@ bluebird@^3.5.5, bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" - integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== body-parser@1.19.0: version "1.19.0" @@ -3769,7 +4058,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -3810,7 +4099,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1: +brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= @@ -3852,11 +4141,11 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: @@ -3902,7 +4191,7 @@ browserslist@^4.14.5: escalade "^3.1.1" node-releases "^1.1.66" -browserslist@^4.16.0, browserslist@^4.16.1, browserslist@^4.16.3, browserslist@^4.16.6: +browserslist@^4.16.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.6.4: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -3989,10 +4278,10 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@15.0.5, cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== +cacache@15.0.6, cacache@^15.0.6: + version "15.0.6" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" + integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== dependencies: "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" @@ -4008,7 +4297,7 @@ cacache@15.0.5, cacache@^15.0.5: p-map "^4.0.0" promise-inflight "^1.0.1" rimraf "^3.0.2" - ssri "^8.0.0" + ssri "^8.0.1" tar "^6.0.2" unique-filename "^1.1.1" @@ -4033,6 +4322,29 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -4061,31 +4373,12 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -4110,11 +4403,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196, caniuse-lite@^1.0.30001219: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001219: version "1.0.30001223" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz" integrity sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA== +caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109: + version "1.0.30001228" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" + integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" @@ -4168,14 +4466,6 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -4191,22 +4481,7 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -"chokidar@>=2.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.3.0, chokidar@^3.4.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.1: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -4240,6 +4515,21 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.0.0, chokidar@^3.3.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4339,14 +4629,6 @@ cli-truncate@^0.2.1: slice-ansi "0.0.4" string-width "^1.0.1" -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -4398,15 +4680,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4449,14 +4722,6 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - color-string@^1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" @@ -4465,14 +4730,6 @@ color-string@^1.5.4: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - color@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" @@ -4513,7 +4770,7 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.0.0, commander@^7.1.0, commander@^7.2.0: +commander@^7.0.0, commander@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -4538,13 +4795,6 @@ component-emitter@^1.2.1, component-emitter@^1.3.0: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -4627,18 +4877,13 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4678,22 +4923,18 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz#0e920a6c181a5052aa6e2861b164bda03f83afeb" - integrity sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA== +copy-webpack-plugin@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz#3f697e162764925c2f0d235f380676125508fd26" + integrity sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ== dependencies: - cacache "^15.0.5" - fast-glob "^3.2.4" - find-cache-dir "^3.3.1" + fast-glob "^3.2.5" glob-parent "^5.1.1" - globby "^11.0.1" - loader-utils "^2.0.0" + globby "^11.0.3" normalize-path "^3.0.0" - p-limit "^3.0.2" + p-limit "^3.1.0" schema-utils "^3.0.0" serialize-javascript "^5.0.1" - webpack-sources "^1.4.3" core-js-compat@^3.6.2: version "3.6.5" @@ -4703,10 +4944,10 @@ core-js-compat@^3.6.2: browserslist "^4.8.5" semver "7.0.0" -core-js-compat@^3.8.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.0.tgz#a031e51fe411085e33cb629bfee2acaa53bc309a" - integrity sha512-vvaN8EOvYBEjrr+MN3vCKrMNc/xdYZI+Rt/uPMROi4T5Hj8Fz6TiPQm2mrB9aZoQVW1lCFHYmMrv99aUct9mkg== +core-js-compat@^3.9.0, core-js-compat@^3.9.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" + integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== dependencies: browserslist "^4.16.6" semver "7.0.0" @@ -4716,10 +4957,10 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.12.0.tgz#c59d45954a6569232f0704d085916a5e8c3b272f" integrity sha512-j2y084taJU4VMUpwuC93l19tsPbTAtOpg6/do3UOwX4eUJbsFdhEaGRQfTYthn5rDubsB88YITtei0Kw46vEQQ== -core-js@3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0" - integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q== +core-js@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.0.tgz#62bac86f7d7f087d40dba3e90a211c2c3c8559ea" + integrity sha512-SaMnchL//WwU2Ot1hhkPflE8gzo7uq1FGvUJ8GKmi3TOU7rGTHIU+eir1WGf6qOtTyxdfdcp10yPdGZ59sQ3hw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4736,16 +4977,6 @@ cosmiconfig@^4.0.0: parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -4793,10 +5024,10 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -critters@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.7.tgz#548b470360f4f3c51e622de3b7aa733c8f0b17bf" - integrity sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ== +critters@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.10.tgz#edd0e962fc5af6c4adb6dbf1a71bae2d3f917000" + integrity sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw== dependencies: chalk "^4.1.0" css "^3.0.0" @@ -4815,7 +5046,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4841,7 +5072,14 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-color-names@0.0.4, css-color-names@^0.0.4: +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= @@ -4858,31 +5096,30 @@ css-declaration-sorter@6.0.0: dependencies: timsort "^0.3.0" -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: - postcss "^7.0.1" - timsort "^0.3.0" + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" -css-loader@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.1.tgz#9e4de0d6636a6266a585bd0900b422c85539d25f" - integrity sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw== +css-loader@5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" + integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== dependencies: camelcase "^6.2.0" - cssesc "^3.0.0" - icss-utils "^5.0.0" + icss-utils "^5.1.0" loader-utils "^2.0.0" - postcss "^8.1.4" + postcss "^8.2.10" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" schema-utils "^3.0.0" - semver "^7.3.2" + semver "^7.3.5" css-parse@~2.0.0: version "2.0.0" @@ -4891,20 +5128,12 @@ css-parse@~2.0.0: dependencies: css "^2.0.0" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + postcss "^7.0.5" css-select@^3.1.2: version "3.1.2" @@ -4917,22 +5146,6 @@ css-select@^3.1.2: domutils "^2.4.3" nth-check "^2.0.0" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - css-tree@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -4941,11 +5154,6 @@ css-tree@^1.1.2: mdn-data "2.0.14" source-map "^0.6.1" -css-what@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" - integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg== - css-what@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" @@ -4970,48 +5178,22 @@ css@^3.0.0: source-map "^0.6.1" source-map-resolve "^0.6.0" +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-preset-default@^5.0.0: +cssnano-preset-default@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.0.1.tgz#76adc00f7aae36ae80552b8356e21bec4b233ca2" integrity sha512-cfmfThYODGqhpQKDq9H0MTAqkMvZ3dGbOUTBKw0xWZiIycMqHid22LsJXJl4r1qX4qzDeKxcSyQ/Xb5Mu3Z//Q== @@ -5046,59 +5228,20 @@ cssnano-preset-default@^5.0.0: postcss-svgo "^5.0.0" postcss-unique-selectors "^5.0.0" -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - cssnano-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.0.tgz#b04baaa312aa3dd5a854b7f61d76b9d94be07f74" integrity sha512-xvxmTszdrvSyTACdPe8VU5J6p4sm3egpgw54dILvNqt5eBUv6TFjACLhSxtRuEsxYrgy8uDy269YjScO5aKbGA== -cssnano@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.1.tgz#ed4822c4a9212f22f6820717859c52a6b7f9cf5c" - integrity sha512-5WubEmKcK2cqw43DUAayRBiIlTdX7iX3ZowrWDVxSVcW3hyohVnbJ4K4mbnWtJp5rfJnUwHg5H4mDAGzmuCM3g== +cssnano@5.0.2, cssnano@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.2.tgz#3f6de4fd5ecb7b5fb636c1a606de5f38cd241493" + integrity sha512-8JK3EnPsjQsULme9/e5M2hF564f/480hwsdcHvQ7ZtAIMfQ1O3SCfs+b8Mjf5KJxhYApyRshR2QSovEJi2K72Q== dependencies: cosmiconfig "^7.0.0" - cssnano-preset-default "^5.0.0" + cssnano-preset-default "^5.0.1" is-resolvable "^1.1.0" -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" - csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" @@ -5357,14 +5500,6 @@ d3-transition@2, d3-transition@^2.0.0: d3-interpolate "1 - 2" d3-timer "1 - 2" -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -5398,7 +5533,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.1, debug@^4.3.1: +debug@4, debug@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -5455,11 +5590,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - deep-equal@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -5497,6 +5627,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -5554,10 +5689,10 @@ depd@^1.1.2, depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -dependency-graph@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.7.2.tgz#91db9de6eb72699209d88aea4c1fd5221cac1c49" - integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ== +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== des.js@^1.0.0: version "1.0.1" @@ -5643,14 +5778,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.3.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.1.tgz#d845a1565d7c041a95e5dab62184ab41e3a519be" @@ -5665,11 +5792,6 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domelementtype@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" @@ -5694,14 +5816,6 @@ domhandler@^4.0.0, domhandler@^4.2.0: dependencies: domelementtype "^2.2.0" -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - domutils@^2.4.3: version "2.6.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.6.0.tgz#2e15c04185d43fb16ae7057cb76433c6edb938b7" @@ -5723,10 +5837,10 @@ dotenv@8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -dotenv@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.1.tgz#a889a28a3a515812dde1e7f8183ef5cdf3186b97" - integrity sha512-W8FNeNnnvJoYfgkFRKzp8kTgz0T2YY4TJ9xy1Ma0hSebPTK8iquRtpG12TUrSTX5zIN9D/wSLEEuI+Ad35tlyw== +dotenv@9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" @@ -5779,17 +5893,17 @@ elegant-spinner@^1.0.1: integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= elliptic@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" + bn.js "^4.11.9" + brorand "^1.1.0" hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" emittery@^0.7.1: version "0.7.1" @@ -5806,11 +5920,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -5843,7 +5952,7 @@ enhanced-resolve@5.7.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: +enhanced-resolve@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== @@ -5861,7 +5970,15 @@ enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.5, enquirer@^2.3.6, enquirer@~2.3.6: +enhanced-resolve@^5.8.0: + version "5.8.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" + integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.5, enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -5878,23 +5995,25 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: +errno@^0.1.1, errno@^0.1.3: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" +errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -5902,7 +6021,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -5959,6 +6078,11 @@ es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.0" +es-module-lexer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" + integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -5968,32 +6092,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - escalade@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" @@ -6215,10 +6313,10 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== +events@^3.0.0, events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== eventsource@^1.0.7: version "1.0.7" @@ -6283,21 +6381,6 @@ execa@^4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -6376,13 +6459,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -6451,7 +6527,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.4: +fast-glob@^3.1.1: version "3.2.4" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== @@ -6463,6 +6539,18 @@ fast-glob@^3.1.1, fast-glob@^3.2.4: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6526,7 +6614,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0, figures@^3.2.0: +figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -6540,14 +6628,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - file-saver@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" @@ -6673,6 +6753,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -6750,11 +6835,6 @@ forwarded@~0.1.2: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= -fraction.js@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" - integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -6775,15 +6855,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" - integrity sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" @@ -6811,6 +6882,11 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -6873,6 +6949,11 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -6887,21 +6968,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6916,11 +6987,6 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6955,6 +7021,11 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -6967,7 +7038,19 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.6, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + 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" + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -7017,6 +7100,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -7036,12 +7131,12 @@ google-translate-api-browser@^1.1.71: axios "^0.18.0" querystring "^0.2.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -graceful-fs@^4.2.3: +graceful-fs@^4.1.15, graceful-fs@^4.2.3: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -7137,7 +7232,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -7166,7 +7261,7 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -hmac-drbg@^1.0.0: +hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= @@ -7187,13 +7282,6 @@ hosted-git-info@^3.0.2: dependencies: lru-cache "^6.0.0" -hosted-git-info@^3.0.6: - version "3.0.7" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" - integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== - dependencies: - lru-cache "^6.0.0" - hosted-git-info@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" @@ -7340,11 +7428,6 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -7382,21 +7465,16 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-utils@^5.0.0: +icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -7424,14 +7502,6 @@ image-size@~0.5.0: resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -7521,10 +7591,10 @@ injection-js@^2.4.0: dependencies: tslib "^2.0.0" -inquirer@7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== +inquirer@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac" + integrity sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.0" @@ -7532,10 +7602,10 @@ inquirer@7.3.3: cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.19" + lodash "^4.17.21" mute-stream "0.0.8" run-async "^2.4.0" - rxjs "^6.6.0" + rxjs "^6.6.6" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" @@ -7575,11 +7645,6 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -7667,7 +7732,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-color-stop@^1.0.0, is-color-stop@^1.1.0: +is-color-stop@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= @@ -7679,7 +7744,7 @@ is-color-stop@^1.0.0, is-color-stop@^1.1.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0: +is-core-module@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== @@ -7733,6 +7798,11 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== +is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -7836,11 +7906,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" @@ -7916,12 +7981,7 @@ is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.1" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-resolvable@^1.0.0, is-resolvable@^1.1.0: +is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== @@ -8570,18 +8630,11 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -jsonc-parser@3.0.0: +jsonc-parser@3.0.0, jsonc-parser@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" @@ -8618,17 +8671,17 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -keycloak-angular@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/keycloak-angular/-/keycloak-angular-8.1.0.tgz#4be096793799b06e141bf88daaf19c3c0a49b790" - integrity sha512-FNIZBVKI3QNw0ucHnSjDDe8859WT6NtVlsKtCvJzAS9mFiYCDFDT9cRWt9On2aFu39rGyBEBNbpsTE1Mso48NQ== +keycloak-angular@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/keycloak-angular/-/keycloak-angular-8.2.0.tgz#8c9f3902942fee3abfdae7aa88f155265e7fdba6" + integrity sha512-ZOMCiFR+CavRJkjM2TuSK6nTJ1/mCuUXAQDrWKmKkbLNoM77ZSZNhVyk/GYhbyFNdquo+ASraiHyYXbYKFbSvQ== dependencies: tslib "^2.0.0" -keycloak-js@12.0.4: - version "12.0.4" - resolved "https://registry.yarnpkg.com/keycloak-js/-/keycloak-js-12.0.4.tgz#fc60ccd8c32788e48302a543e6133e852a48abaf" - integrity sha512-O/BHtyiDrZrUnKBrVF8POojqd3gmhuiDw4FiI+FbnB14nu7G5jKFrKYZa9Q0JYKIZXHJOBzSaKQcMp2WUI+zmA== +keycloak-js@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/keycloak-js/-/keycloak-js-13.0.0.tgz#57ec39704d66bf4534546065ec0c3fae00a6d385" + integrity sha512-XMbppXjkkFmt88vR8jrxH32dz/dmFETDObD6NzLAT3HgpC9Thi6LSEUm7XsROq4z+2i/qLwlWTHbgLXj6LxBrg== dependencies: base64-js "1.3.1" js-sha256 "0.9.0" @@ -8677,14 +8730,12 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -less-loader@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-7.3.0.tgz#f9d6d36d18739d642067a05fb5bd70c8c61317e5" - integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg== +less-loader@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-8.1.1.tgz#ababe912580457ad00a4318146aac5b53e023f42" + integrity sha512-K93jJU7fi3n6rxVvzp8Cb88Uy9tcQKfHlkoezHwKILXhlNYiRQl4yowLIkQqmBXOH/5I8yoKiYeIf781HGkW9g== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" - schema-utils "^3.0.0" less@4.1.1, less@^4.1.0: version "4.1.1" @@ -8731,10 +8782,10 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -license-webpack-plugin@2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz#0d93188a31fce350a44c86212badbaf33dcd29d8" - integrity sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw== +license-webpack-plugin@2.3.17: + version "2.3.17" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.17.tgz#75d05d8b2c3f223be8988d144e9739df8f502319" + integrity sha512-4jJ5/oIkhylMw2EjXh9sxPP8KC3FYBjTcxOCoTIaC2J/zVbJhfw992UEpSsov8VTt97XtU+xJyE4cJn4gHB2PA== dependencies: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" @@ -8744,27 +8795,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.0.0.tgz#24d0a95aa316ba28e257f5c4613369a75a10c712" - integrity sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw== - dependencies: - chalk "^4.1.1" - cli-truncate "^2.1.0" - commander "^7.2.0" - cosmiconfig "^7.0.0" - debug "^4.3.1" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^5.0.0" - listr2 "^3.8.2" - log-symbols "^4.1.0" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - listr-silent-renderer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" @@ -8794,21 +8824,6 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr2@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.8.2.tgz#99b138ad1cfb08f1b0aacd422972e49b2d814b99" - integrity sha512-E28Fw7Zd3HQlCJKzb9a8C8M0HtFWQeucE+S8YrSrqZObuCLPRHMRrR8gNmYt65cU9orXYHwvN5agXC36lYt7VQ== - dependencies: - chalk "^4.1.1" - cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" - log-update "^4.0.0" - p-map "^4.0.0" - rxjs "^6.6.7" - through "^2.3.8" - wrap-ansi "^7.0.0" - listr@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" @@ -8849,14 +8864,10 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@2.0.0, loader-utils@^2.0.0: version "2.0.0" @@ -8867,7 +8878,7 @@ loader-utils@2.0.0, loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.2, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -8911,6 +8922,11 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -8977,16 +8993,6 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - loglevel@^1.6.8: version "1.7.0" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" @@ -9068,6 +9074,13 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -9094,21 +9107,26 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +mem@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + +memfs@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.2.tgz#5de461389d596e3f23d48bb7c2afb6161f4df40e" + integrity sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q== + dependencies: + fs-monkey "1.0.3" + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -9189,14 +9207,6 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -9210,6 +9220,11 @@ mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" @@ -9217,6 +9232,13 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.44.0" +mime-types@^2.1.27, mime-types@^2.1.28: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + dependencies: + mime-db "1.47.0" + mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -9242,10 +9264,15 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz#252166e78879c106e0130f229d44e0cbdfcebed3" - integrity sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ== +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mini-css-extract-plugin@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.5.1.tgz#c0ac557c48a7de47de3df0768fe037c9cf961f69" + integrity sha512-wEpr0XooH6rw/Mlf+9KTJoMBLT3HujzdTrmohPjAzF47N4Q6yAeczQLpRD/WxvAtXvskcXbily7TAdCfi2M4Dg== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" @@ -9256,7 +9283,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: +minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= @@ -9364,7 +9391,7 @@ mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9452,6 +9479,11 @@ nanoid@^3.1.22: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -9493,41 +9525,36 @@ neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -ng-packagr@11.2.4: - version "11.2.4" - resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-11.2.4.tgz#9deda83beb831bda7b753686d0f90e12a02dbb47" - integrity sha512-pAZYRWe4duLx6bXgfNKgT2XBHiepWz2sA+CaJ9UYEbLHE+QxYGtw/PJAC6o0zRDv1bBCkv5oquKTyTZtYjkAQQ== +ng-packagr@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-12.0.0.tgz#f7fbe5d2d7cb891252e2d5ea9da7e6db4be4e448" + integrity sha512-jPso78LEL7Z6qrowy+j+cAaw7RdRtIssgVOSG9l7x7t6YTgkn0/6CGqwaUe9XkDzCY0brSxQtkGgehI7CocXPw== dependencies: - "@rollup/plugin-commonjs" "^17.0.0" + "@rollup/plugin-commonjs" "^19.0.0" "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^11.1.0" - ajv "^7.0.3" + "@rollup/plugin-node-resolve" "^13.0.0" + ajv "^8.0.0" ansi-colors "^4.1.1" - autoprefixer "^10.2.4" browserslist "^4.16.1" + cacache "^15.0.6" chokidar "^3.5.1" commander "^7.0.0" - cssnano "^4.1.10" + cssnano "^5.0.0" + find-cache-dir "^3.3.1" glob "^7.1.6" injection-js "^2.4.0" + jsonc-parser "^3.0.0" less "^4.1.0" node-sass-tilde-importer "^1.0.2" ora "^5.1.0" postcss "^8.2.4" + postcss-preset-env "^6.7.0" postcss-url "^10.1.1" - rimraf "^3.0.0" - rollup "^2.37.0" + rollup "^2.45.1" rollup-plugin-sourcemaps "^0.6.3" rxjs "^6.5.0" - sass "^1.32.5" + sass "^1.32.8" stylus "^0.54.8" - sync-rpc "^1.3.6" - terser "^5.5.1" ng2-ace-editor@^0.3.9: version "0.3.9" @@ -9684,11 +9711,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - normalize-url@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" @@ -9713,13 +9735,13 @@ npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" - integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== +npm-package-arg@8.1.2, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" + integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" + hosted-git-info "^4.0.1" + semver "^7.3.4" validate-npm-package-name "^3.0.0" npm-package-arg@^8.0.0: @@ -9731,15 +9753,6 @@ npm-package-arg@^8.0.0: semver "^7.0.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" - integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - npm-packlist@^2.1.4: version "2.2.2" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" @@ -9750,16 +9763,7 @@ npm-packlist@^2.1.4: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" - integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== - dependencies: - npm-install-checks "^4.0.0" - npm-package-arg "^8.0.0" - semver "^7.0.0" - -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -9769,12 +9773,11 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== +npm-registry-fetch@^10.0.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-10.1.1.tgz#97bc7a0fca5e8f76cc5162185b8de8caa8bea639" + integrity sha512-F6a3l+ffCQ7hvvN16YG5bpm1rPZntCg66PLHDQ1apWJPOCUVHoKnL2w5fqEaTVhp42dmossTyXeR7hTGirfXrg== dependencies: - "@npmcli/ci-detect" "^1.0.0" lru-cache "^6.0.0" make-fetch-happen "^8.0.9" minipass "^3.1.3" @@ -9805,7 +9808,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -9822,13 +9825,6 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - nth-check@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" @@ -9836,6 +9832,11 @@ nth-check@^2.0.0: dependencies: boolbase "^1.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -9915,14 +9916,6 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -9930,16 +9923,6 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - object.values@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" @@ -9986,20 +9969,21 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.0.tgz#ad95b98f871d9acb0ec8fecc557082cc9986626b" - integrity sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA== +open@8.0.7: + version "8.0.7" + resolved "https://registry.yarnpkg.com/open/-/open-8.0.7.tgz#5597eeff14b440f6ff78fb7ced9ede9f69b2122d" + integrity sha512-qoyG0kpdaWVoL5MiwTRQWujSdivwBOgfLadVEdpsZNHOK1+kBvmVtLYdgWr8G4cgBpG9zaxezn6jz6PPdQW5xg== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" open@^7.4.2: version "7.4.2" @@ -10045,21 +10029,7 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ora@^5.1.0: +ora@5.4.0, ora@^5.1.0: version "5.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== @@ -10096,6 +10066,11 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -10120,7 +10095,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -10184,15 +10159,15 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pacote@11.2.4: - version "11.2.4" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.2.4.tgz#dc7ca740a573ed86a3bf863511d22c1d413ec82f" - integrity sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ== +pacote@11.3.2: + version "11.3.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.2.tgz#2bef04f6ec6bafceb5eb2f5b3965f0d00aee4d7e" + integrity sha512-lMO7V9aMhyE5gfaSFxKfW3OTdXuFBNQJfuNuet3NPzWWhOYIW90t85vHcHLDjdhgmfAdAHyh9q1HAap96ea0XA== dependencies: "@npmcli/git" "^2.0.1" - "@npmcli/installed-package-contents" "^1.0.5" + "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.3.0" + "@npmcli/run-script" "^1.8.2" cacache "^15.0.5" chownr "^2.0.0" fs-minipass "^2.1.0" @@ -10202,11 +10177,11 @@ pacote@11.2.4: npm-package-arg "^8.0.1" npm-packlist "^2.1.4" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^9.0.0" - promise-retry "^1.1.1" - read-package-json-fast "^1.1.3" + npm-registry-fetch "^10.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" rimraf "^3.0.2" - ssri "^8.0.0" + ssri "^8.0.1" tar "^6.1.0" pako@~1.0.5: @@ -10388,9 +10363,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -10413,11 +10388,6 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -picomatch@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -10492,13 +10462,6 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" @@ -10513,14 +10476,13 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^7.0.1: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.4.tgz#5e177ddb417341e6d4a193c5d9fd8ada79094f8b" - integrity sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw== +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: - postcss "^7.0.27" + postcss "^7.0.2" postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" postcss-calc@^8.0.0: version "8.0.0" @@ -10530,16 +10492,47 @@ postcss-calc@^8.0.0: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" postcss-colormin@^5.0.0: version "5.0.0" @@ -10550,14 +10543,6 @@ postcss-colormin@^5.0.0: color "^3.1.1" postcss-value-parser "^4.1.0" -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-convert-values@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.0.tgz#cd77e1d23ebe8fcf508640551eed08e232784cba" @@ -10565,83 +10550,156 @@ postcss-convert-values@^5.0.0: dependencies: postcss-value-parser "^4.1.0" -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: - postcss "^7.0.0" + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" postcss-discard-comments@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.0.tgz#6c27310e0657c0b9e38a6175ad001b5aa28964bc" integrity sha512-Umig6Gxs8m20RihiXY6QkePd6mp4FxkA1Dg+f/Kd6uw0gEMfKRjDeQOyFkLibexbJJGHpE3lrN/Q0R9SMrUMbQ== -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - postcss-discard-duplicates@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.0.tgz#6a2c4f779e8d20da6781e90730f234f9e650c51c" integrity sha512-vEJJ+Y3pFUnO1FyCBA6PSisGjHtnphL3V6GsNvkASq/VkP3OX5/No5RYXXLxHa2QegStNzg6HYrYdo71uR4caQ== -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - postcss-discard-empty@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.0.tgz#0f0a9baee415f5f7be4ae046ba235e98626ba821" integrity sha512-+wigy099Y1xZxG36WG5L1f2zeH1oicntkJEW4TDIqKKDO2g9XVB3OhoiHTu08rDEjLnbcab4rw0BAccwi2VjiQ== -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - postcss-discard-overridden@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.0.tgz#ac00f695a60001eda52135a11fac87376b8da9ee" integrity sha512-hybnScTaZM2iEA6kzVQ6Spozy7kVdLw+lGw8hftLlBEzt93uzXoltkYp9u0tI8xbfhxDLTOOzHsHQCkYdmzRUg== -postcss-import@14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.0.tgz#3ed1dadac5a16650bde3f4cdea6633b9c3c78296" - integrity sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg== +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-import@14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.1.tgz#6a3f8f2ce74a95fc7c72ecfe3eddfa0e9124e677" + integrity sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA== dependencies: postcss-value-parser "^4.0.0" read-cache "^1.0.0" resolve "^1.1.7" -postcss-loader@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.2.0.tgz#f6993ea3e0f46600fb3ee49bbd010448123a7db4" - integrity sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA== +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-loader@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-5.2.0.tgz#ccd6668a778902d653602289c765a8bc481986dc" + integrity sha512-uSuCkENFeUaOYsKrXm0eNNgVIxc71z8RcckLMbVw473rGojFnrUeqEz6zBgXsH2q1EIzXnO/4pEz9RhALjlITA== dependencies: cosmiconfig "^7.0.0" klona "^2.0.4" - loader-utils "^2.0.0" - schema-utils "^3.0.0" semver "^7.3.4" -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" postcss-merge-longhand@^5.0.1: version "5.0.1" @@ -10652,18 +10710,6 @@ postcss-merge-longhand@^5.0.1: postcss-value-parser "^4.1.0" stylehacks "^5.0.0" -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - postcss-merge-rules@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.0.tgz#e0d0c0d45c98376f4adb49eb1f1dfe2aebfd7048" @@ -10675,14 +10721,6 @@ postcss-merge-rules@^5.0.0: postcss-selector-parser "^6.0.4" vendors "^1.0.3" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-minify-font-values@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.0.tgz#fee5d0fa192fae8757cb744870a0ad02be5f402e" @@ -10690,16 +10728,6 @@ postcss-minify-font-values@^5.0.0: dependencies: postcss-value-parser "^4.1.0" -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-minify-gradients@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.0.tgz#95dbe61567a45c0cd7ab897d78fb65d5096844ed" @@ -10709,18 +10737,6 @@ postcss-minify-gradients@^5.0.0: is-color-stop "^1.1.0" postcss-value-parser "^4.1.0" -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - postcss-minify-params@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.0.tgz#12c7f75d69b0b4827fafbd6649970a53784a9c24" @@ -10732,16 +10748,6 @@ postcss-minify-params@^5.0.0: postcss-value-parser "^4.1.0" uniqs "^2.0.0" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - postcss-minify-selectors@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.0.0.tgz#d3e43d97fd0ba83ba0010950fc5acfa420f7caa9" @@ -10778,27 +10784,18 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: - postcss "^7.0.0" + postcss "^7.0.2" postcss-normalize-charset@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.0.tgz#59e1fe2094fb2e3371cc5b054cbc39828a41a710" integrity sha512-pqsCkgo9KmQP0ew6DqSA+uP9YN6EfsW20pQ3JU5JoQge09Z6Too4qU0TNDsTNWuEaP8SWsMp+19l15210MsDZQ== -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-display-values@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.0.tgz#4ff2d3b3b5146a366de28ec9e24131a1868f1933" @@ -10807,16 +10804,6 @@ postcss-normalize-display-values@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-positions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.0.tgz#fe1d9a8122dd385b9c6908bd2008140dea17750d" @@ -10824,16 +10811,6 @@ postcss-normalize-positions@^5.0.0: dependencies: postcss-value-parser "^4.1.0" -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-repeat-style@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.0.tgz#e11d88fbf63f89179c6a7391853b2fe7f46e589d" @@ -10842,15 +10819,6 @@ postcss-normalize-repeat-style@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-string@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.0.tgz#2ea08ff4cb8817ce160755e9fdc7e6ef6d495002" @@ -10858,15 +10826,6 @@ postcss-normalize-string@^5.0.0: dependencies: postcss-value-parser "^4.1.0" -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-timing-functions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.0.tgz#380eb1c9b179f96efc307c659a8049116f16f381" @@ -10875,15 +10834,6 @@ postcss-normalize-timing-functions@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-unicode@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.0.tgz#aa46a89c86ae51a01cbca13e73c1ed7b0b38807e" @@ -10892,16 +10842,6 @@ postcss-normalize-unicode@^5.0.0: browserslist "^4.16.0" postcss-value-parser "^4.1.0" -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.0.tgz#626a4c7d30007f94466cdf245e7ed9f253f1dbd9" @@ -10911,14 +10851,6 @@ postcss-normalize-url@^5.0.0: normalize-url "^4.5.0" postcss-value-parser "^4.1.0" -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-normalize-whitespace@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.0.tgz#1faf147a4f8d3d93a3c75109d120b4eefa00589b" @@ -10926,15 +10858,6 @@ postcss-normalize-whitespace@^5.0.0: dependencies: postcss-value-parser "^4.1.0" -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-ordered-values@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.0.tgz#a50f224c5f40c566b338b0663655478737dcebee" @@ -10943,15 +10866,78 @@ postcss-ordered-values@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0, postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" postcss-reduce-initial@^5.0.0: version "5.0.0" @@ -10961,16 +10947,6 @@ postcss-reduce-initial@^5.0.0: browserslist "^4.16.0" caniuse-api "^3.0.0" -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-reduce-transforms@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.0.tgz#5c820f71fbd4eec82b323523642b7b2d1c7d29ef" @@ -10979,7 +10955,30 @@ postcss-reduce-transforms@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" -postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.2: +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== @@ -10988,6 +10987,15 @@ postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.2: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -11005,15 +11013,6 @@ postcss-selector-parser@^6.0.4: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - postcss-svgo@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.0.tgz#c8d806e573394ab24f1e233cac5be4c199e9f1b2" @@ -11022,15 +11021,6 @@ postcss-svgo@^5.0.0: postcss-value-parser "^4.1.0" svgo "^2.3.0" -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - postcss-unique-selectors@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.0.tgz#17856278f6c38d024defc9694d568bb09dd7f771" @@ -11050,44 +11040,21 @@ postcss-url@^10.1.1: minimatch "~3.0.4" xxhashjs "~0.2.2" -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" -postcss@8.2.13: - version "8.2.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" - integrity sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.22" - source-map "^0.6.1" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27: - version "7.0.34" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.34.tgz#f2baf57c36010df7de4009940f21532c16d65c20" - integrity sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^8.1.4, postcss@^8.2.4: +postcss@8.2.14, postcss@^8.2.4: version "8.2.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.14.tgz#dcf313eb8247b3ce8078d048c0e8262ca565ad2b" integrity sha512-+jD0ZijcvyCqPQo/m/CW0UcARpdFylq04of+Q7RKX6f/Tu+dvpUI/9Sp81+i6/vJThnOBX09Quw0ZLOVwpzX3w== @@ -11096,6 +11063,24 @@ postcss@^8.1.4, postcss@^8.2.4: nanoid "^3.1.22" source-map "^0.6.1" +postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.2.10: + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -11163,14 +11148,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - promise-retry@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" @@ -11257,11 +11234,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -11352,14 +11324,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-package-json-fast@^1.1.3: - version "1.2.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz#fba77b0b0d66b1ab344e214cb0876577e749c423" - integrity sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - read-package-json-fast@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz#2dcb24d9e8dd50fb322042c8c35a954e6cc7ac9e" @@ -11662,20 +11626,15 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" - integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== +resolve-url-loader@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" source-map "0.6.1" resolve-url@^0.2.1: @@ -11690,15 +11649,7 @@ resolve@1.17.0, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2 dependencies: path-parse "^1.0.6" -resolve@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -resolve@^1.13.1, resolve@^1.18.1, resolve@^1.19.0: +resolve@1.20.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -11735,11 +11686,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= - retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -11750,19 +11696,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -11803,14 +11736,7 @@ rollup-plugin-sourcemaps@^0.6.3: "@rollup/pluginutils" "^3.0.9" source-map-resolve "^0.6.0" -rollup@2.38.4: - version "2.38.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.38.4.tgz#1b84ea8728c73b1a00a6a6e9c630ec8c3fe48cea" - integrity sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg== - optionalDependencies: - fsevents "~2.3.1" - -rollup@^2.37.0: +rollup@^2.45.1: version "2.47.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.47.0.tgz#9d958aeb2c0f6a383cacc0401dff02b6e252664d" integrity sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg== @@ -11844,20 +11770,20 @@ rxjs-for-await@0.0.2: resolved "https://registry.yarnpkg.com/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz#26598a1d6167147cc192172970e7eed4e620384b" integrity sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw== -rxjs@6.6.3, rxjs@^6.3.3, rxjs@^6.5.0, rxjs@^6.5.4, rxjs@^6.6.0: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== - dependencies: - tslib "^1.9.0" - -rxjs@^6.6.7, rxjs@~6.6.7: +rxjs@6.6.7, rxjs@^6.6.6, rxjs@~6.6.7: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" +rxjs@^6.3.3, rxjs@^6.5.0, rxjs@^6.5.4: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -11895,31 +11821,28 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-loader@10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" - integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== +sass-loader@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.0.1.tgz#8672f896593466573b904f47693e0695368e38c9" + integrity sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" -sass@1.32.6: - version "1.32.6" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.6.tgz#e3646c8325cd97ff75a8a15226007f3ccd221393" - integrity sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ== - dependencies: - chokidar ">=2.0.0 <4.0.0" - -sass@^1.32.5: +sass@1.32.12: version "1.32.12" resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== dependencies: chokidar ">=3.0.0 <4.0.0" +sass@^1.32.8: + version "1.32.13" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.13.tgz#8d29c849e625a415bce71609c7cf95e15f74ed00" + integrity sha512-dEgI9nShraqP7cXQH+lEXVf73WOPCse0QlFzSD8k+1TcOxCMwVXfQlr0jtoluZysQOyJGnfr21dLvYKDJq8HkA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -11983,19 +11906,12 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver-intersect@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" - integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== - dependencies: - semver "^5.0.0" - semver-regex@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== -"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -12012,23 +11928,23 @@ semver@7.3.4: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -12164,7 +12080,7 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -12191,15 +12107,6 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -12287,17 +12194,19 @@ source-list-map@^2.0.0, source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-loader@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.3.tgz#7dbc2fe7ea09d3e43c51fd9fc478b7f016c1f820" - integrity sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-loader@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-2.0.1.tgz#b4fd0ae7fa7e7d3954300f383f2d6fcc230a4261" + integrity sha512-UzOTTQhoNPeTNzOxwFw220RSRzdGSyH4lpNyWjR7Qm34P4/N0W669YSUFdH07+YNeN75h765XLHmNsF/bm97RQ== dependencies: abab "^2.0.5" iconv-lite "^0.6.2" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - source-map "^0.6.1" - whatwg-mimetype "^2.3.0" + source-map-js "^0.6.2" source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" @@ -12400,13 +12309,6 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -speed-measure-webpack-plugin@1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz#1608e62d3bdb45f01810010e1b5bfedefedfa58f" - integrity sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw== - dependencies: - chalk "^4.1.0" - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -12435,9 +12337,9 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" @@ -12448,6 +12350,13 @@ ssri@^8.0.0: dependencies: minipass "^3.1.1" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -12515,11 +12424,6 @@ streamsaver@^2.0.5: resolved "https://registry.yarnpkg.com/streamsaver/-/streamsaver-2.0.5.tgz#3212f0e908fcece5b3a65591094475cf87850d00" integrity sha512-KIWtBvi8A6FiFZGNSyuIZRZM6C8AvnWTiCx/TYa7so420vC5sQwcBKkdqInuGWoWMfeWy/P+/cRqMtWVf4RW9w== -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" @@ -12617,15 +12521,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -12687,15 +12582,6 @@ style-loader@2.0.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - stylehacks@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.0.tgz#c49b0b2cf9917fe37dc030b96a4c34698b932933" @@ -12704,16 +12590,14 @@ stylehacks@^5.0.0: browserslist "^4.16.0" postcss-selector-parser "^6.0.4" -stylus-loader@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-4.3.3.tgz#381bb6341272ac50bcdfd0b877707eac99b6b757" - integrity sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ== +stylus-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-5.0.0.tgz#d3f548887ab67808cc40d320079c44f8ffa3d9b8" + integrity sha512-1OaGgixTgC8IAaMCodZXg7XYsfP1qU0UzTHDyPaWACUh34j9geJL4iA583tFJDOtfNUOfDLaBpUywc5MicQ1aA== dependencies: - fast-glob "^3.2.4" + fast-glob "^3.2.5" klona "^2.0.4" - loader-utils "^2.0.0" normalize-path "^3.0.0" - schema-utils "^3.0.0" stylus@0.54.8, stylus@^0.54.8: version "0.54.8" @@ -12785,25 +12669,6 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - svgo@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.3.0.tgz#6b3af81d0cbd1e19c83f5f63cec2cb98c70b5373" @@ -12817,10 +12682,10 @@ svgo@^2.3.0: csso "^4.2.0" stable "^0.1.8" -symbol-observable@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-3.0.0.tgz#eea8f6478c651018e059044268375c408c15c533" - integrity sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q== +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== symbol-observable@^1.1.0: version "1.2.0" @@ -12832,13 +12697,6 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -sync-rpc@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" - integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== - dependencies: - get-port "^3.1.0" - table@^6.0.4: version "6.7.0" resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" @@ -12856,7 +12714,7 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.2.0: +tapable@^2.1.1, tapable@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== @@ -12923,10 +12781,22 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@5.5.1, terser@^5.3.4: - version "5.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== +terser-webpack-plugin@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.2.tgz#51d295eb7cc56785a67a372575fdc46e42d5c20c" + integrity sha512-6QhDaAiVHIQr5Ab3XUWZyDmrIPCHMiqJVljMF91YKyqwKkL5QHnYMkrMBy96v9Z7ev1hGhSEw1HQZc2p/s5Z8Q== + dependencies: + jest-worker "^26.6.2" + p-limit "^3.1.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.7.0" + +terser@5.7.0, terser@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -12941,10 +12811,10 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.5.1: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== +terser@^5.3.4: + version "5.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" + integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -12982,7 +12852,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@^2.3.8: +through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -12993,9 +12863,9 @@ thunky@^1.0.2: integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" @@ -13138,11 +13008,6 @@ ts-node@9.1.1: source-map-support "^0.5.17" yn "3.1.1" -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - tsconfig-paths-webpack-plugin@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz#6e70bd42915ad0efb64d3385163f0c1270f3e04d" @@ -13162,10 +13027,10 @@ tsconfig-paths@^3.4.0, tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@2.2.0, tslib@^2.1.0, tslib@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" @@ -13177,11 +13042,6 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== -tslib@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== - tsutils@^3.17.1: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -13253,16 +13113,6 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" - integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -13275,15 +13125,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.4.tgz#f058636e2f4f83f94ddaae07b20fd5e14598432f" - integrity sha512-+Uru0t8qIRgjuCpiSPpfGuhHecMllk5Zsazj5LZvVsEStEjmIRRBZe+jHjGQvsgS7M1wONy2PQXd67EMyV6acg== - -typescript@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72" - integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== +typescript@4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== unbox-primitive@^1.0.0: version "1.0.1" @@ -13352,16 +13197,7 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -universal-analytics@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.23.tgz#d915e676850c25c4156762471bdd7cf2eaaca8ac" - integrity sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A== - dependencies: - debug "^4.1.1" - request "^2.88.2" - uuid "^3.0.0" - -universalify@^0.1.0, universalify@^0.1.2: +universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -13381,11 +13217,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -13450,16 +13281,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -13484,7 +13305,7 @@ uuid@8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -13533,7 +13354,7 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vendors@^1.0.0, vendors@^1.0.3: +vendors@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== @@ -13591,6 +13412,14 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" +watchpack@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" + integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" @@ -13615,7 +13444,19 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: +webpack-dev-middleware@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.1.0.tgz#f0c1f12ff4cd855b3b5eec89ee0f69bcc5336364" + integrity sha512-mpa/FY+DiBu5+r5JUIyTCYWRfkWgyA3/OOE9lwfzV9S70A4vJYLsVRKj5rMFEsezBroy2FmPyQ8oBRVW8QmK1A== + dependencies: + colorette "^1.2.1" + mem "^8.0.0" + memfs "^3.2.0" + mime-types "^2.1.28" + range-parser "^1.2.1" + schema-utils "^3.0.0" + +webpack-dev-middleware@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== @@ -13686,14 +13527,6 @@ webpack-node-externals@1.7.2: resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" integrity sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg== -webpack-sources@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" - integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -13702,6 +13535,14 @@ webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack- source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" + integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + webpack-subresource-integrity@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz#e40b6578d3072e2d24104975249c52c66e9a743e" @@ -13709,34 +13550,34 @@ webpack-subresource-integrity@1.5.2: dependencies: webpack-sources "^1.3.0" -webpack@4.44.2: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== +webpack@5.36.2: + version "5.36.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.36.2.tgz#6ef1fb2453ad52faa61e78d486d353d07cca8a0f" + integrity sha512-XJumVnnGoH2dV+Pk1VwgY4YT6AiMKpVoudUFCNOXMIVrEKPUgEwdIfWPjIuGLESAiS8EdIHX5+TiJz/5JccmRg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.47" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + acorn "^8.2.1" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.8.0" + es-module-lexer "^0.4.0" + eslint-scope "^5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.1" + watchpack "^2.0.0" + webpack-sources "^2.1.1" webpack@^4.18.1: version "4.46.0" @@ -13870,13 +13711,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -worker-plugin@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-5.0.0.tgz#113b5fe1f4a5d6a957cecd29915bedafd70bb537" - integrity sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ== - dependencies: - loader-utils "^1.1.0" - worker-rpc@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" @@ -14088,7 +13922,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zone.js@~0.11.4: +zone.js@0.11.4: version "0.11.4" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.11.4.tgz#0f70dcf6aba80f698af5735cbb257969396e8025" integrity sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw== From aa31aef765c8678e7f3f0ca470433a1352b58731 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 18 May 2021 18:45:43 +0300 Subject: [PATCH 6/6] fix en.json --- apps/red-ui/src/assets/i18n/en.json | 145 +++++++++++----------------- 1 file changed, 58 insertions(+), 87 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 5fa9be6f9..ceb03f77d 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -402,95 +402,66 @@ "success": "Redaction added!", "error": "Failed to save redaction: {{error}}" }, - "search": "Document name...", - "header-actions": { - "edit": "Edit", - "delete": "Delete", - "upload-document": "Upload Document", - "download-redacted-files": "Download Redacted Files", - "decline": { - "success": "Redaction suggestion declined!", - "error": "Failed to decline redaction: {{error}}" - }, - "approve": { - "success": "Redaction suggestion approved!", - "error": "Failed to approved redaction: {{error}}" - }, - "request-remove": { - "success": "Requested to remove redaction!", - "error": "Failed to request removal of redaction: {{error}}" - }, - "assign-reviewer": "Assign Reviewer", - "assign-approver": "Assign Approver", - "assign-me": "Assign To Me", - "table-header": { - "title": "{{length}} documents", - "bulk-select": "Toggle Selection" - }, - "remove": { - "success": "Redaction removed!", - "error": "Failed to remove redaction: {{error}}" - } + "search": "Document name..." + }, + "dictionary": { + "undo": { + "success": "Undo successful", + "error": "Failed to undo: {{error}}" }, - "dictionary": { - "undo": { - "success": "Undo successful", - "error": "Failed to undo: {{error}}" - }, - "suggest": { - "success": "Suggestion for dictionary modification saved!", - "error": "Failed to save suggestion for dictionary modification: {{error}}" - }, - "add": { - "success": "Entry added to dictionary. Changes will be visible after reanalysis.", - "error": "Failed to add entry to dictionary: {{error}}" - }, - "decline": { - "success": "Dictionary suggestion declined.", - "error": "Failed to decline dictionary suggestion: {{error}}" - }, - "approve": { - "success": "Dictionary entry approved. Changes will be visible after reanalysis.", - "error": "Failed to approve dictionary entry: {{error}}" - }, - "request-remove": { - "success": "Requested to remove dictionary entry!", - "error": "Failed to request removal of dictionary entry: {{error}}" - }, - "remove": { - "success": "Dictionary entry removed!", - "error": "Failed to remove dictionary entry: {{error}}" - } + "suggest": { + "success": "Suggestion for dictionary modification saved!", + "error": "Failed to save suggestion for dictionary modification: {{error}}" + }, + "add": { + "success": "Entry added to dictionary. Changes will be visible after reanalysis.", + "error": "Failed to add entry to dictionary: {{error}}" + }, + "decline": { + "success": "Dictionary suggestion declined.", + "error": "Failed to decline dictionary suggestion: {{error}}" + }, + "approve": { + "success": "Dictionary entry approved. Changes will be visible after reanalysis.", + "error": "Failed to approve dictionary entry: {{error}}" + }, + "request-remove": { + "success": "Requested to remove dictionary entry!", + "error": "Failed to request removal of dictionary entry: {{error}}" + }, + "remove": { + "success": "Dictionary entry removed!", + "error": "Failed to remove dictionary entry: {{error}}" } - }, - "force-redaction": { - "label": "Force Redaction" - }, - "accept-suggestion": { - "label": "Accept Suggestion", - "add-to-dict": "Approve and add to dictionary", - "remove-from-dict": "Approve and remove from dictionary", - "only-here": "Approve only here" - }, - "accept-recommendation": { - "label": "Accept Recommendation" - }, - "suggest-remove-annotation": "Remove or Suggest to remove this entry", - "suggest-remove-annotations": "Remove or Suggest to remove selected entries", - "reject-suggestion": "Reject Suggestion", - "remove-annotation": { - "suggest-remove-from-dict": "Suggest to remove from dictionary", - "suggest-only-here": "Suggest to remove only here", - "remove-from-dict": "Remove from dictionary", - "only-here": "Remove only here", - "false-positive": "False Positive" - }, - "remove": "Remove", - "undo": "Undo", - "reject": "Reject", - "hide": "Hide", - "show": "Show" - } + } + }, + "force-redaction": { + "label": "Force Redaction" + }, + "accept-suggestion": { + "label": "Accept Suggestion", + "add-to-dict": "Approve and add to dictionary", + "remove-from-dict": "Approve and remove from dictionary", + "only-here": "Approve only here" + }, + "accept-recommendation": { + "label": "Accept Recommendation" + }, + "suggest-remove-annotation": "Remove or Suggest to remove this entry", + "suggest-remove-annotations": "Remove or Suggest to remove selected entries", + "reject-suggestion": "Reject Suggestion", + "remove-annotation": { + "suggest-remove-from-dict": "Suggest to remove from dictionary", + "suggest-only-here": "Suggest to remove only here", + "remove-from-dict": "Remove from dictionary", + "only-here": "Remove only here", + "false-positive": "False Positive" + }, + "remove": "Remove", + "undo": "Undo", + "reject": "Reject", + "hide": "Hide", + "show": "Show" }, "initials-avatar": { "unassigned": "Unassigned",