diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..c194ecc1a --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +.angular +.dev +.husky +dist +coverage +node_modules +bamboo-specs diff --git a/.prettierignore b/.prettierignore index 81d117d52..b8ec6a7f0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,7 @@ # Add files here to ignore them from prettier formatting - +/.angular +/.dev +/.husky /dist /coverage /node_modules diff --git a/apps/red-ui/jest.config.ts b/apps/red-ui/jest.config.ts new file mode 100644 index 000000000..fa9e1b508 --- /dev/null +++ b/apps/red-ui/jest.config.ts @@ -0,0 +1,25 @@ +import type { Config } from 'jest'; + +const config: Config = { + displayName: 'red-ui', + preset: '../../jest.preset.js', + setupFilesAfterEnv: ['jest-preset-angular/setup-jest.js', 'jest-extended/all'], + coverageDirectory: '../../coverage/apps/angular-jest', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '../../tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; + +export default config; diff --git a/apps/red-ui/src/app/app.module.ts b/apps/red-ui/src/app/app.module.ts index 783877a51..08368aca3 100644 --- a/apps/red-ui/src/app/app.module.ts +++ b/apps/red-ui/src/app/app.module.ts @@ -14,9 +14,10 @@ import { EmptyStateComponent, HiddenActionDirective, InputWithActionComponent, + IqserAllowDirective, + IqserDenyDirective, IqserHelpModeModule, IqserLoadingModule, - IqserPermissionsModule, IqserPermissionsService, IqserTranslateModule, IqserUsersModule, @@ -120,7 +121,6 @@ export const appModuleFactory = (config: AppConfig) => { }), IqserTranslateModule.forRoot({ pathPrefix: config.BASE_TRANSLATIONS_DIRECTORY || '/assets/i18n/redact/' }), IqserLoadingModule.forRoot(), - IqserPermissionsModule.forRoot(), ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }), LoggerModule.forRoot(undefined, { ruleProvider: { @@ -167,6 +167,8 @@ export const appModuleFactory = (config: AppConfig) => { StopPropagationDirective, InputWithActionComponent, RoundCheckboxComponent, + IqserAllowDirective, + IqserDenyDirective, ], providers: [ { 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 08845970a..215a8529b 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -51,9 +51,10 @@ import { HumanizePipe, IconButtonComponent, InputWithActionComponent, + IqserAllowDirective, + IqserDenyDirective, IqserHelpModeModule, IqserListingModule, - IqserPermissionsModule, IqserUploadFileModule, IqserUsersModule, RoundCheckboxComponent, @@ -120,7 +121,6 @@ const components = [ IqserListingModule, IqserUploadFileModule, IqserHelpModeModule, - IqserPermissionsModule, AdminSideNavComponent, DossierTemplateActionsComponent, DossierTemplateBreadcrumbsComponent, @@ -133,6 +133,8 @@ const components = [ InputWithActionComponent, EditableInputComponent, DetailsRadioComponent, + IqserAllowDirective, + IqserDenyDirective, ], }) export class AdminModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts index acec7996e..5334b90e3 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts @@ -8,15 +8,16 @@ import { CircleButtonComponent, IconButtonComponent, InputWithActionComponent, + IqserAllowDirective, IqserHelpModeModule, IqserListingModule, - IqserPermissionsModule, + IqserRoutes, IqserUsersModule, } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { DossierTemplateActionsComponent } from '../../shared/components/dossier-template-actions/dossier-template-actions.component'; -const routes = [{ path: '', component: DossierTemplatesListingScreenComponent }]; +const routes: IqserRoutes = [{ path: '', component: DossierTemplatesListingScreenComponent }]; @NgModule({ declarations: [TableItemComponent, DossierTemplatesListingScreenComponent], @@ -28,11 +29,11 @@ const routes = [{ path: '', component: DossierTemplatesListingScreenComponent }] TranslateModule, IqserListingModule, IqserHelpModeModule, - IqserPermissionsModule, DossierTemplateActionsComponent, CircleButtonComponent, IconButtonComponent, InputWithActionComponent, + IqserAllowDirective, ], }) export class DossierTemplatesListingModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/entities/entities.module.ts b/apps/red-ui/src/app/modules/admin/screens/entities/entities.module.ts index 28f7cba75..5eeddef83 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities/entities.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/entities/entities.module.ts @@ -7,7 +7,7 @@ import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { EntityInfoComponent } from './screens/entity-info/entity-info.component'; import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; import { TranslateModule } from '@ngx-translate/core'; -import { HasScrollbarDirective, IconButtonComponent, IqserHelpModeModule, IqserPermissionsModule } from '@iqser/common-ui'; +import { HasScrollbarDirective, IconButtonComponent, IqserDenyDirective, IqserHelpModeModule } from '@iqser/common-ui'; const routes: Routes = [ { path: '', redirectTo: 'info', pathMatch: 'full' }, @@ -42,9 +42,9 @@ const routes: Routes = [ MonacoEditorModule, TranslateModule, IqserHelpModeModule, - IqserPermissionsModule, IconButtonComponent, HasScrollbarDirective, + IqserDenyDirective, ], }) export class EntitiesModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts index 7d0cf0bb4..9175eae4b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts @@ -3,9 +3,9 @@ import { CommonModule } from '@angular/common'; import { RouterModule } from '@angular/router'; import { ReportsScreenComponent } from './reports-screen/reports-screen.component'; import { TranslateModule } from '@ngx-translate/core'; -import { CircleButtonComponent, HasScrollbarDirective, IqserHelpModeModule, IqserPermissionsModule } from '@iqser/common-ui'; +import { CircleButtonComponent, HasScrollbarDirective, IqserAllowDirective, IqserHelpModeModule, IqserRoutes } from '@iqser/common-ui'; -const routes = [{ path: '', component: ReportsScreenComponent }]; +const routes: IqserRoutes = [{ path: '', component: ReportsScreenComponent }]; @NgModule({ declarations: [ReportsScreenComponent], @@ -14,9 +14,9 @@ const routes = [{ path: '', component: ReportsScreenComponent }]; CommonModule, TranslateModule, IqserHelpModeModule, - IqserPermissionsModule, CircleButtonComponent, HasScrollbarDirective, + IqserAllowDirective, ], }) export class ReportsModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts index 378bd04dc..9bd69ecab 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts @@ -8,10 +8,11 @@ import { CompositeRouteGuard, HasScrollbarDirective, IconButtonComponent, + IqserAllowDirective, IqserAuthGuard, IqserHelpModeModule, IqserListingModule, - IqserPermissionsModule, + IqserRoutes, IqserUsersModule, } from '@iqser/common-ui'; import { RedRoleGuard } from '@users/red-role.guard'; @@ -25,7 +26,7 @@ import { MatLegacySliderModule } from '@angular/material/legacy-slider'; import { ColorPickerModule } from 'ngx-color-picker'; import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle'; -const routes = [ +const routes: IqserRoutes = [ { path: '', component: WatermarksListingScreenComponent, @@ -61,7 +62,6 @@ const routes = [ TranslateModule, IqserListingModule, IqserHelpModeModule, - IqserPermissionsModule, MatIconModule, IconButtonComponent, ReactiveFormsModule, @@ -70,6 +70,7 @@ const routes = [ MatLegacySlideToggleModule, CircleButtonComponent, HasScrollbarDirective, + IqserAllowDirective, ], }) export class WatermarkModule {} diff --git a/apps/red-ui/src/app/modules/archive/archive.module.ts b/apps/red-ui/src/app/modules/archive/archive.module.ts index 7fe6e071a..32f4c7725 100644 --- a/apps/red-ui/src/app/modules/archive/archive.module.ts +++ b/apps/red-ui/src/app/modules/archive/archive.module.ts @@ -4,16 +4,13 @@ import { ArchivedDossiersScreenComponent } from './screens/archived-dossiers-scr import { ArchiveRoutingModule } from './archive-routing.module'; import { TableItemComponent } from './components/table-item/table-item.component'; import { ConfigService } from './services/config.service'; -import { IqserHelpModeModule, IqserListingModule, IqserPermissionsModule, IqserUsersModule } from '@iqser/common-ui'; +import { IqserHelpModeModule, IqserListingModule, IqserUsersModule } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { SharedModule } from '@shared/shared.module'; import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; -const components = [TableItemComponent]; -const screens = [ArchivedDossiersScreenComponent]; - @NgModule({ - declarations: [...components, ...screens], + declarations: [TableItemComponent, ArchivedDossiersScreenComponent], imports: [ CommonModule, ArchiveRoutingModule, @@ -21,7 +18,6 @@ const screens = [ArchivedDossiersScreenComponent]; IqserUsersModule, TranslateModule, IqserListingModule, - IqserPermissionsModule, SharedModule, SharedDossiersModule, ], diff --git a/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts b/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts index 8bc4f730f..c89c1929b 100644 --- a/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts +++ b/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts @@ -6,9 +6,9 @@ import { SharedModule } from '@shared/shared.module'; import { TemplateStatsComponent } from './components/template-stats/template-stats.component'; import { BreadcrumbTypes } from '@red/domain'; import { TranslateModule } from '@ngx-translate/core'; -import { IconButtonComponent, IqserHelpModeModule, IqserPermissionsModule } from '@iqser/common-ui'; +import { IconButtonComponent, IqserHelpModeModule, IqserRoutes } from '@iqser/common-ui'; -const routes = [ +const routes: IqserRoutes = [ { path: '', component: DashboardScreenComponent, @@ -20,14 +20,6 @@ const routes = [ @NgModule({ declarations: [DashboardScreenComponent, TemplateStatsComponent], - imports: [ - RouterModule.forChild(routes), - CommonModule, - SharedModule, - TranslateModule, - IqserHelpModeModule, - IqserPermissionsModule, - IconButtonComponent, - ], + imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IqserHelpModeModule, IconButtonComponent], }) export class DashboardModule {} diff --git a/apps/red-ui/src/app/modules/dossier-overview/dossier-overview.module.ts b/apps/red-ui/src/app/modules/dossier-overview/dossier-overview.module.ts index e5118465f..8f23b68c9 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/dossier-overview.module.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/dossier-overview.module.ts @@ -1,14 +1,15 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { RouterModule, Routes } from '@angular/router'; +import { RouterModule } from '@angular/router'; import { CircleButtonComponent, DynamicInputComponent, HasScrollbarDirective, + IqserAllowDirective, IqserHelpModeModule, IqserListingModule, IqserLoadingModule, - IqserPermissionsModule, + IqserRoutes, IqserUsersModule, StatusBarComponent, StopPropagationDirective, @@ -27,7 +28,7 @@ import { ViewModeSelectionComponent } from './components/view-mode-selection/vie import { FileAttributeComponent } from './components/table-item/file-attribute/file-attribute.component'; import { SharedModule } from '@shared/shared.module'; -const routes: Routes = [ +const routes: IqserRoutes = [ { path: '', component: DossierOverviewScreenComponent, @@ -60,13 +61,13 @@ const routes: Routes = [ IqserUsersModule, IqserListingModule, IqserLoadingModule, - IqserPermissionsModule, SharedModule, CircleButtonComponent, StatusBarComponent, StopPropagationDirective, HasScrollbarDirective, DynamicInputComponent, + IqserAllowDirective, ], }) export class DossierOverviewModule {} diff --git a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts index d04138d48..5033d8fe1 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts @@ -5,13 +5,13 @@ import { HasScrollbarDirective, IqserHelpModeModule, IqserListingModule, - IqserPermissionsModule, + IqserRoutes, IqserUsersModule, StatusBarComponent, } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component'; -import { RouterModule, Routes } from '@angular/router'; +import { RouterModule } from '@angular/router'; import { SharedModule } from '@shared/shared.module'; import { DossiersListingDetailsComponent } from './components/dossiers-listing-details/dossiers-listing-details.component'; import { ConfigService } from './config.service'; @@ -22,7 +22,7 @@ import { DossierDocumentsStatusComponent } from './components/dossier-documents- import { DossierFilesGuard } from '@guards/dossier-files-guard'; import { ACTIVE_DOSSIERS_SERVICE } from '../../tokens'; -const routes: Routes = [ +const routes: IqserRoutes = [ { path: '', component: DossiersListingScreenComponent, @@ -50,7 +50,6 @@ const routes: Routes = [ IqserHelpModeModule, IqserUsersModule, IqserListingModule, - IqserPermissionsModule, StatusBarComponent, HasScrollbarDirective, ], diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview.module.ts b/apps/red-ui/src/app/modules/file-preview/file-preview.module.ts index 6fa629b1c..ab604c7af 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview.module.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview.module.ts @@ -10,9 +10,11 @@ import { HasScrollbarDirective, IconButtonComponent, InputWithActionComponent, + IqserAllowDirective, + IqserDenyDirective, IqserFiltersModule, IqserHelpModeModule, - IqserPermissionsModule, + IqserRoutes, IqserUploadFileModule, IqserUsersModule, PreventDefaultDirective, @@ -21,7 +23,7 @@ import { StopPropagationDirective, } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; -import { RouterModule, Routes } from '@angular/router'; +import { RouterModule } from '@angular/router'; import { FilePreviewScreenComponent } from './file-preview-screen.component'; import { FileWorkloadComponent } from './components/file-workload/file-workload.component'; import { AnnotationDetailsComponent } from './components/annotation-details/annotation-details.component'; @@ -62,7 +64,7 @@ import { PagesComponent } from './components/pages/pages.component'; import { SharedModule } from '@shared/shared.module'; import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; -const routes: Routes = [ +const routes: IqserRoutes = [ { path: '', component: FilePreviewScreenComponent, @@ -121,7 +123,6 @@ const components = [ CapitalizePipe, IqserUploadFileModule, IqserFiltersModule, - IqserPermissionsModule, SharedModule, CircleButtonComponent, SharedDossiersModule, @@ -136,6 +137,8 @@ const components = [ DynamicInputComponent, InputWithActionComponent, RoundCheckboxComponent, + IqserAllowDirective, + IqserDenyDirective, ], providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard, SuggestionsService], }) diff --git a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts index cb9ab3626..6e1627e3b 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts @@ -19,8 +19,9 @@ import { HasScrollbarDirective, IconButtonComponent, InputWithActionComponent, + IqserAllowDirective, + IqserDenyDirective, IqserHelpModeModule, - IqserPermissionsModule, IqserUsersModule, RoundCheckboxComponent, SideNavComponent, @@ -43,19 +44,17 @@ const components = [ DossiersListingActionsComponent, ]; const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogComponent, DictionaryDetailsDialogComponent]; -const services = [FileAssignService]; @NgModule({ declarations: [...components, ...dialogs], exports: [...components, ...dialogs], - providers: [...services], + providers: [FileAssignService], imports: [ CommonModule, SharedModule, IqserHelpModeModule, IqserUsersModule, TranslateModule, - IqserPermissionsModule, IconButtonComponent, CircleButtonComponent, EmptyStateComponent, @@ -67,6 +66,8 @@ const services = [FileAssignService]; RoundCheckboxComponent, InputWithActionComponent, DynamicInputComponent, + IqserAllowDirective, + IqserDenyDirective, ], }) export class SharedDossiersModule {} 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 b85d04404..4009a8470 100644 --- a/apps/red-ui/src/app/modules/shared/shared.module.ts +++ b/apps/red-ui/src/app/modules/shared/shared.module.ts @@ -12,8 +12,9 @@ import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, + IqserAllowDirective, + IqserDenyDirective, IqserHelpModeModule, - IqserPermissionsModule, IqserUsersModule, SmallChipComponent, StopPropagationDirective, @@ -90,13 +91,14 @@ const deleteThisWhenAllComponentsAreStandalone = [DonutChartComponent]; RouterModule, IqserHelpModeModule, IqserUsersModule, - IqserPermissionsModule, ...deleteThisWhenAllComponentsAreStandalone, CircleButtonComponent, IconButtonComponent, SmallChipComponent, StopPropagationDirective, HasScrollbarDirective, + IqserAllowDirective, + IqserDenyDirective, ], exports: [...modules, ...components, ...utils, ...deleteThisWhenAllComponentsAreStandalone], providers: [ diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 000000000..9ec4b7265 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,5 @@ +import { getJestProjects } from '@nrwl/jest'; + +export default { + projects: getJestProjects(), +}; diff --git a/jest.preset.js b/jest.preset.js new file mode 100644 index 000000000..e6c8ebea0 --- /dev/null +++ b/jest.preset.js @@ -0,0 +1,3 @@ +const nxPreset = require('@nrwl/jest/preset').default; + +module.exports = { ...nxPreset }; diff --git a/libs/common-ui b/libs/common-ui index c9c2f3e0f..39e862b12 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit c9c2f3e0f978eb819e0890d49da503d4d878484b +Subproject commit 39e862b1298ba1930bde9e71f39778bc51c5185f diff --git a/package.json b/package.json index 0502ac906..a45949dd1 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "@bartholomej/ngx-translate-extract": "^8.0.2", "@nrwl/cli": "15.6.3", "@nrwl/eslint-plugin-nx": "15.6.3", + "@nrwl/jest": "^15.8.7", "@nrwl/linter": "15.6.3", "@nrwl/workspace": "15.6.3", "@types/jest": "^29.4.0", @@ -105,21 +106,5 @@ "webpack": "^5.76.1", "webpack-bundle-analyzer": "^4.8.0", "xliff": "^6.1.0" - }, - "jest": { - "preset": "jest-preset-angular", - "setupFilesAfterEnv": [ - "jest-preset-angular/setup-jest.js", - "jest-extended/all" - ], - "testPathIgnorePatterns": [ - "/node_modules/", - "/dist/" - ], - "globals": { - "ts-jest": { - "tsconfig": "/tsconfig.spec.json" - } - } } } diff --git a/tsconfig.spec.json b/tsconfig.spec.json index d9599d486..79f2a84c5 100644 --- a/tsconfig.spec.json +++ b/tsconfig.spec.json @@ -2,8 +2,10 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./dist/out-tsc/spec", + "module": "commonjs", "types": ["jest", "node"], "esModuleInterop": true }, - "include": ["./libs/**/*.spec.ts", "./libs/**/*.d.ts"] + "files": ["src/test-setup.ts"], + "include": ["jest.config.ts", "./libs/**/*.spec.ts", "./libs/**/*.d.ts"] } diff --git a/yarn.lock b/yarn.lock index 253eb4bfb..ec676e067 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3348,6 +3348,13 @@ dependencies: nx "15.6.3" +"@nrwl/cli@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.8.7.tgz#1de7ba802de24edac64e8cb4cac1459a3f403505" + integrity sha512-G1NEy4jGuZJ/7KjhLQNOe11XmoTgwJS82FW8Tbo4iceq2ItSEbe7bkA8xTSK/AzUixZIMimztb9Oyxw/n1ajGQ== + dependencies: + nx "15.8.7" + "@nrwl/cypress@15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-15.6.3.tgz#a9213555eb1581ad36f3df512ef5f32f77af9089" @@ -3371,6 +3378,18 @@ semver "7.3.4" tslib "^2.3.0" +"@nrwl/devkit@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.8.7.tgz#98e881e993c1314a20c050926df1466154782e58" + integrity sha512-A99nZrA5KN9wRn2uYX2vKByA+t2XEGoZBR5TU/bpXbPYrh92qAHkIJ8ke3ImGQOlzk4iIaZ5Me0k7k1p9Zx4wA== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tmp "~0.2.1" + tslib "^2.3.0" + "@nrwl/eslint-plugin-nx@15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-15.6.3.tgz#a365de151783e90eccd8af8d49b13fd011f64943" @@ -3400,6 +3419,25 @@ resolve.exports "1.1.0" tslib "^2.3.0" +"@nrwl/jest@^15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.8.7.tgz#010adedc3e8852c53c1a87afca76eef8aec37792" + integrity sha512-olTRYD/m1qu/sAaw/z7XOp0amsTKDa6hJvQDK26/1BkJiuKaYLSW/Ec7f39Ilw/zrde+fNg3YUOGiXxuQ10k4g== + dependencies: + "@jest/reporters" "28.1.1" + "@jest/test-result" "28.1.1" + "@nrwl/devkit" "15.8.7" + "@nrwl/js" "15.8.7" + "@phenomnomnominal/tsquery" "4.1.1" + chalk "^4.1.0" + dotenv "~10.0.0" + identity-obj-proxy "3.0.0" + jest-config "28.1.1" + jest-resolve "28.1.1" + jest-util "28.1.1" + resolve.exports "1.1.0" + tslib "^2.3.0" + "@nrwl/js@15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-15.6.3.tgz#82c831ab2bf620c3cd376515ff861c9041341d5c" @@ -3428,6 +3466,34 @@ tree-kill "1.2.2" tslib "^2.3.0" +"@nrwl/js@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-15.8.7.tgz#17e413b0cb15e90a2fc7250e42d03338dba1d3de" + integrity sha512-FPOtTSIVHXnQG2uPzgvgtjBlMaHnxPKwG+3Qv1gQN9uHxd9e59TryARS+Q7/Y/qSP6woQjSVEcxkp1zJ2DhFFA== + dependencies: + "@babel/core" "^7.15.0" + "@babel/plugin-proposal-class-properties" "^7.14.5" + "@babel/plugin-proposal-decorators" "^7.14.5" + "@babel/plugin-transform-runtime" "^7.15.0" + "@babel/preset-env" "^7.15.0" + "@babel/preset-typescript" "^7.15.0" + "@babel/runtime" "^7.14.8" + "@nrwl/devkit" "15.8.7" + "@nrwl/workspace" "15.8.7" + "@phenomnomnominal/tsquery" "4.1.1" + babel-plugin-const-enum "^1.0.1" + babel-plugin-macros "^2.8.0" + babel-plugin-transform-typescript-metadata "^0.3.1" + chalk "^4.1.0" + fast-glob "3.2.7" + fs-extra "^11.1.0" + ignore "^5.0.4" + js-tokens "^4.0.0" + minimatch "3.0.5" + source-map-support "0.5.19" + tree-kill "1.2.2" + tslib "^2.3.0" + "@nrwl/linter@15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.6.3.tgz#9cffa150109c604827c06ce0ccd5c925d4cd7c01" @@ -3438,6 +3504,62 @@ tmp "~0.2.1" tslib "^2.3.0" +"@nrwl/linter@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.8.7.tgz#b4418c9bc7f1dcace14fe3ef951d1198a04e7083" + integrity sha512-s0RDjpGCkBZ83GuJfNGf3yTLb+KXzOz68BUEBPW2iw4ziMcMfQ5ep6zj7/5nzblaUMGslPBldqQ2N23JoiAo4w== + dependencies: + "@nrwl/devkit" "15.8.7" + "@nrwl/js" "15.8.7" + "@phenomnomnominal/tsquery" "4.1.1" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nrwl/nx-darwin-arm64@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.8.7.tgz#1fed566b5206afd710309079644782997ccb7895" + integrity sha512-+cu8J337gRxUHjz2TGwS/2Oh3yw8d3/T6SoBfvee1DY72VQaeYd8UTz0doOhDtmc/zowvRu7ZVsW0ytNB0jIXQ== + +"@nrwl/nx-darwin-x64@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.8.7.tgz#7aaee9f56fa526e7049fa5a9829fa72044b35055" + integrity sha512-VqHJEP0wgFu1MU0Bo1vKZ5/s7ThRfYkX8SyGUxjVTzR02CrsjC4rNxFoKD8Cc4YkUn44U/F78toGf+i2gRcjSQ== + +"@nrwl/nx-linux-arm-gnueabihf@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.8.7.tgz#379a77ea46e0f741c487eeedd3389eafab26dcae" + integrity sha512-4F/8awwqPTt7zKQolvjBNrcR1wYicPjGchLOdaqnfMxn/iRRUdh0hD11mEP5zHNv9gZs/nOIvhdBUErNjFkplQ== + +"@nrwl/nx-linux-arm64-gnu@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.8.7.tgz#201a41c0c8531de94169faa48bd9a49bed04ec4b" + integrity sha512-3ZTSZx02Vv5emQOpaDROIcLtQucoXAe73zGKYDTXB95mxbOPSjjQJ8Rtx+BeqWq9JQoZZyRcD0qnBkTTy1aLRg== + +"@nrwl/nx-linux-arm64-musl@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.8.7.tgz#f6bbf2e7a1941952c25387a36be6cfa88079975d" + integrity sha512-SZxTomiHxAh8El+swbmGSGcaA0vGbHb/rmhFAixo19INu1wBJfD6hjkVJt17h6PyEO7BIYPOpRia6Poxnyv8hA== + +"@nrwl/nx-linux-x64-gnu@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.8.7.tgz#76a88784858224a720c5a28e40ad513704f45722" + integrity sha512-BlNC6Zz1/x6CFbBFTVrgRGMOPqb7zWh5cOjBVNpoBXYTEth1UXb2r1U+gpuQ4xdUqG+uXoWhy6BHJjqBIjzLJA== + +"@nrwl/nx-linux-x64-musl@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.8.7.tgz#dd906423fa129d0c55633ebe80572bdd6be4d57f" + integrity sha512-FNYX/IKy8SUbw6bJpvwZrup2YQBYmSJwP6Rw76Vf7c32XHk7uA6AjiPWMIrZCSndXcry8fnwXvR+J2Dnyo82nQ== + +"@nrwl/nx-win32-arm64-msvc@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.8.7.tgz#145e415950d8ff507dcfbd7879f9c37477e7a620" + integrity sha512-sZALEzazjPAeLlw6IbFWsMidCZ4ZM3GKWZZ6rsAqG2y7I9t4nlUPH/y/Isl9MuLBvrBCBXbVnD20wh6EhtuwTw== + +"@nrwl/nx-win32-x64-msvc@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.8.7.tgz#66aa3cda4b9ae7b676d2282fbac129ce7a3c15d0" + integrity sha512-VMdDptI2rqkLQRCvertF29QeA/V/MnFtHbsmVzMCEv5EUfrkHbA5LLxV66LLfngmkDT1FHktffztlsMpbxvhRw== + "@nrwl/tao@15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.6.3.tgz#b24e11345375dea96bc386c60b9b1102a7584932" @@ -3445,6 +3567,13 @@ dependencies: nx "15.6.3" +"@nrwl/tao@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.8.7.tgz#ea0bd4bc1784a2578dfb7cfb93f42d98504344cb" + integrity sha512-wA7QIEh0VwWcyo32Y/xSCTwnQTGcZupe933nResXv8mAb36W8MoR5SXRx+Wdd8fJ1eWlm2tuotIrslhN+lYx/Q== + dependencies: + nx "15.8.7" + "@nrwl/webpack@15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-15.6.3.tgz#65b6d68a7a7c8580b8b97e8e4676dba5c5153090" @@ -3525,6 +3654,34 @@ yargs "^17.6.2" yargs-parser "21.1.1" +"@nrwl/workspace@15.8.7": + version "15.8.7" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-15.8.7.tgz#c98b811214719a1fa2fe60bffdbc125b082bdb3f" + integrity sha512-ltJn5tLj8eCTNwJbKE9tWgiT/MKZ8f8jFld4YlG7H6i1mPc6d8rk+iNwoN8LZbHHss3x2g9lVnx2Sg5ZoDLNGA== + dependencies: + "@nrwl/devkit" "15.8.7" + "@nrwl/linter" "15.8.7" + "@parcel/watcher" "2.0.4" + chalk "^4.1.0" + chokidar "^3.5.1" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + dotenv "~10.0.0" + figures "3.2.0" + flat "^5.0.2" + glob "7.1.4" + ignore "^5.0.4" + minimatch "3.0.5" + npm-run-path "^4.0.1" + nx "15.8.7" + open "^8.4.0" + rxjs "^6.5.4" + semver "7.3.4" + tmp "~0.2.1" + tslib "^2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + "@parcel/watcher@2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" @@ -9578,6 +9735,57 @@ nx@15.6.3: yargs "^17.6.2" yargs-parser "21.1.1" +nx@15.8.7: + version "15.8.7" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.8.7.tgz#a89156244f6f94407d7603375ae2f52733c7aff4" + integrity sha512-u6p/1gU20WU61orxK7hcXBsVspPHy3X66XVAAakkYcaOBlsJhJrR7Og191qIyjEkqEWmcekiDQVw3D6XfagL4Q== + dependencies: + "@nrwl/cli" "15.8.7" + "@nrwl/tao" "15.8.7" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nrwl/nx-darwin-arm64" "15.8.7" + "@nrwl/nx-darwin-x64" "15.8.7" + "@nrwl/nx-linux-arm-gnueabihf" "15.8.7" + "@nrwl/nx-linux-arm64-gnu" "15.8.7" + "@nrwl/nx-linux-arm64-musl" "15.8.7" + "@nrwl/nx-linux-x64-gnu" "15.8.7" + "@nrwl/nx-linux-x64-musl" "15.8.7" + "@nrwl/nx-win32-arm64-msvc" "15.8.7" + "@nrwl/nx-win32-x64-msvc" "15.8.7" + object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"