From 7a3c05f0910f349fb2176a37a2afbad0ec5e8e33 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Fri, 22 Jul 2022 21:21:31 -0400 Subject: [PATCH 01/13] 166 report-level memo initial dev/local testing --- front-end/package.json | 2 +- .../report-level-memo.component.html | 61 +++++++++ .../report-level-memo.component.spec.ts | 53 ++++++++ .../report-level-memo.component.ts | 119 ++++++++++++++++++ .../report-list/report-list.component.html | 7 ++ .../src/app/reports/reports-routing.module.ts | 6 + front-end/src/app/reports/reports.module.ts | 2 + .../app/shared/models/memo-text.model.spec.ts | 22 ++++ .../src/app/shared/models/memo-text.model.ts | 19 +++ .../shared/services/memo-text.service.spec.ts | 94 ++++++++++++++ .../app/shared/services/memo-text.service.ts | 45 +++++++ 11 files changed, 429 insertions(+), 1 deletion(-) create mode 100644 front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html create mode 100644 front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts create mode 100644 front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts create mode 100644 front-end/src/app/shared/models/memo-text.model.spec.ts create mode 100644 front-end/src/app/shared/models/memo-text.model.ts create mode 100644 front-end/src/app/shared/services/memo-text.service.spec.ts create mode 100644 front-end/src/app/shared/services/memo-text.service.ts diff --git a/front-end/package.json b/front-end/package.json index 95b2d9fbba..ba30a5276a 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -37,7 +37,7 @@ "@popperjs/core": "^2.10.2", "bootstrap": "^5.1.3", "class-transformer": "^0.5.1", - "fecfile-validate": "https://github.com/fecgov/fecfile-validate#38542f53467786340e85d70a8b6f90876eb51e1e", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#e0b23638af64dbd4ffb08c93fa45a76e797b92c7", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "luxon": "^2.3.2", diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html new file mode 100644 index 0000000000..d2e0013b3b --- /dev/null +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html @@ -0,0 +1,61 @@ +
+
+

Report level memo

+
+ FORM 3X: + {{ (this.reportCodeLabelList$ | async | findOnReportCodePipe: report.report_code)?.label }} +
+
+ +
+
+
+ +
+ + +
+
+
+ +
+
+
+ +
+
PREVIOUS: PRINT PREVIEW
+
+
+
+
+ +
+
NEXT: SUBMIT YOUR REPORT
+
+
+
+
+ diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts new file mode 100644 index 0000000000..84a30ae2f2 --- /dev/null +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -0,0 +1,53 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; +import { ActivatedRoute } from '@angular/router'; +import { provideMockStore } from '@ngrx/store/testing'; +import { F3xSummary } from 'app/shared/models/f3x-summary.model'; +import { SharedModule } from 'app/shared/shared.module'; +import { CardModule } from 'primeng/card'; + +import { ReportLevelMemoComponent } from './report-level-memo.component'; + +describe('ReportLevelMemoComponent', () => { + let component: ReportLevelMemoComponent; + let fixture: ComponentFixture; + const f3x: F3xSummary = F3xSummary.fromJSON({ + id: 999, + coverage_from_date: '2022-05-25', + form_type: 'F3XN', + report_code: 'Q1', + }); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SharedModule, CardModule, RouterTestingModule.withRoutes([])], + declarations: [ReportLevelMemoComponent], + providers: [ + provideMockStore({ + selectors: [{ selector: selectReportCodeLabelList, value: {} }], + }), + { + provide: ActivatedRoute, + useValue: { + snapshot: { + data: { + report: f3x, + }, + }, + }, + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportLevelMemoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts new file mode 100644 index 0000000000..213a25ec7b --- /dev/null +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts @@ -0,0 +1,119 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Store } from '@ngrx/store'; +import { F3xSummary } from 'app/shared/models/f3x-summary.model'; +import { MemoText } from 'app/shared/models/memo-text.model'; +import { MemoTextService } from 'app/shared/services/memo-text.service'; +import { ValidateService } from 'app/shared/services/validate.service'; +import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; +import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; +import { schema as textSchema } from 'fecfile-validate/fecfile_validate_js/dist/Text'; +import { MessageService } from 'primeng/api'; +import { Observable } from 'rxjs'; +import { ReportCodeLabelList } from '../../../shared/utils/reportCodeLabels.utils'; + +@Component({ + selector: 'app-report-level-memo', + templateUrl: './report-level-memo.component.html', + styleUrls: ['../../style.scss'], +}) +export class ReportLevelMemoComponent implements OnInit { + readonly recTypeFormProperty = 'rec_type'; + readonly committeeIdFormProperty = 'filer_committee_id_number'; + readonly brSchedFormProperty = 'back_reference_sched_form_name'; + readonly text4kFormProperty = 'text4000'; + + formProperties: string[] = [ + this.recTypeFormProperty, + this.committeeIdFormProperty, + this.brSchedFormProperty, + this.text4kFormProperty, + ]; + + report: F3xSummary = new F3xSummary(); + reportCodeLabelList$: Observable = new Observable(); + committeeAccountId: string | null = null; + + assignedMemoText: MemoText = new MemoText(); + + formSubmitted = false; + form: FormGroup = this.fb.group({}); + + + constructor( + private store: Store, + private activatedRoute: ActivatedRoute, + protected validateService: ValidateService, + protected fb: FormBuilder, + public router: Router, + public memoTextService: MemoTextService, + private messageService: MessageService + ) { + this.form.addControl(this.recTypeFormProperty, new FormControl()); + this.form.addControl(this.committeeIdFormProperty, new FormControl()); + this.form.addControl(this.brSchedFormProperty, new FormControl()); + } + + ngOnInit(): void { + // Intialize FormGroup, this must be done here. Not working when initialized only above the constructor(). + this.form = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); + + // Initialize validation tracking of current JSON schema and form data + this.validateService.formValidatorSchema = textSchema; + this.validateService.formValidatorForm = this.form; + + this.reportCodeLabelList$ = this.store.select(selectReportCodeLabelList); + this.store.select(selectCommitteeAccount).subscribe(committeeAccount => + this.committeeAccountId = committeeAccount.committee_id); + this.report = this.activatedRoute.snapshot.data['report']; + if (this.report && this.report.id) { + this.memoTextService.getForReportId(this.report.id).subscribe(memoTextList => { + if (memoTextList && memoTextList.length > 0) { + this.assignedMemoText = memoTextList[0]; + this.form.get(this.text4kFormProperty)?.setValue( + this.assignedMemoText.text4000); + } + }); + } + } + + save() { + this.formSubmitted = true; + + this.form.get(this.recTypeFormProperty)?.setValue('TEXT'); + this.form.get(this.committeeIdFormProperty)?.setValue( + this.committeeAccountId); + this.form.get(this.brSchedFormProperty)?.setValue( + this.report.form_type); + + const payload: MemoText = MemoText.fromJSON({ + ...this.assignedMemoText, + ...this.validateService.getFormValues(this.form, this.formProperties), + }); + payload.report_id = this.report.id; + + if (this.assignedMemoText.id) { + this.memoTextService.update(payload, this.formProperties).subscribe(() => { + this.router.navigateByUrl('/reports'); + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Report Memo Updated', + life: 3000, + }); + }); + } else { + this.memoTextService.create(payload, this.formProperties).subscribe(() => { + this.router.navigateByUrl('/reports'); + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Report Memo Created', + life: 3000, + }); + }); + } + } + +} diff --git a/front-end/src/app/reports/report-list/report-list.component.html b/front-end/src/app/reports/report-list/report-list.component.html index 794c1869b8..8185cb11bd 100644 --- a/front-end/src/app/reports/report-list/report-list.component.html +++ b/front-end/src/app/reports/report-list/report-list.component.html @@ -92,6 +92,13 @@
Recent reports
[ariaLabel]="'report detailed summary ' + displayName(item)" >Detail + Memo diff --git a/front-end/src/app/reports/reports-routing.module.ts b/front-end/src/app/reports/reports-routing.module.ts index 770f001def..dadb32077c 100644 --- a/front-end/src/app/reports/reports-routing.module.ts +++ b/front-end/src/app/reports/reports-routing.module.ts @@ -7,6 +7,7 @@ import { CreateF3xStep3Component } from './f3x/create-workflow/create-f3x-step3. import { ReportSummaryComponent } from './f3x/report-summary/report-summary.component'; import { ReportDetailedSummaryComponent } from './f3x/report-detailed-summary/report-detailed-summary.component'; import { ReportResolver } from 'app/shared/resolvers/report.resolver'; +import { ReportLevelMemoComponent } from './f3x/report-level-memo/report-level-memo.component'; const routes: Routes = [ { @@ -43,6 +44,11 @@ const routes: Routes = [ component: ReportDetailedSummaryComponent, resolve: { report: ReportResolver }, }, + { + path: 'f3x/memo/:reportId', + component: ReportLevelMemoComponent, + resolve: { report: ReportResolver }, + }, { path: '**', redirectTo: '' }, ]; diff --git a/front-end/src/app/reports/reports.module.ts b/front-end/src/app/reports/reports.module.ts index 8d9bced91b..382e331bbf 100644 --- a/front-end/src/app/reports/reports.module.ts +++ b/front-end/src/app/reports/reports.module.ts @@ -25,6 +25,7 @@ import { CreateF3xStep2Component } from './f3x/create-workflow/create-f3x-step2. import { CreateF3xStep3Component, MemoCodePipe } from './f3x/create-workflow/create-f3x-step3.component'; import { ReportSummaryComponent } from './f3x/report-summary/report-summary.component'; import { ReportDetailedSummaryComponent } from './f3x/report-detailed-summary/report-detailed-summary.component'; +import { ReportLevelMemoComponent } from './f3x/report-level-memo/report-level-memo.component'; @NgModule({ declarations: [ @@ -35,6 +36,7 @@ import { ReportDetailedSummaryComponent } from './f3x/report-detailed-summary/re MemoCodePipe, ReportSummaryComponent, ReportDetailedSummaryComponent, + ReportLevelMemoComponent, ], imports: [ CommonModule, diff --git a/front-end/src/app/shared/models/memo-text.model.spec.ts b/front-end/src/app/shared/models/memo-text.model.spec.ts new file mode 100644 index 0000000000..a38639734b --- /dev/null +++ b/front-end/src/app/shared/models/memo-text.model.spec.ts @@ -0,0 +1,22 @@ +import { MemoText } from './memo-text.model'; + +describe('MemoText', () => { + it('should create an instance', () => { + expect(new MemoText()).toBeTruthy(); + }); + + it('#fromJSON() should return a populated MemoText class', () => { + const data = { + id: 999, + report_id: 123, + rec_type: 'test_rec_type', + text: 'test_text' + }; + const memoText: MemoText = MemoText.fromJSON(data); + expect(memoText).toBeInstanceOf(MemoText); + expect(memoText.id).toBe(999); + expect(memoText.report_id).toBe(123); + expect(memoText.rec_type).toBe('test_rec_type'); + expect(memoText.text).toBe('test_text'); + }); +}); diff --git a/front-end/src/app/shared/models/memo-text.model.ts b/front-end/src/app/shared/models/memo-text.model.ts new file mode 100644 index 0000000000..00bcd60f8c --- /dev/null +++ b/front-end/src/app/shared/models/memo-text.model.ts @@ -0,0 +1,19 @@ +import { plainToClass } from 'class-transformer'; +import { BaseModel } from './base.model'; + +export class MemoText extends BaseModel { + id: number | null = null; + rec_type: string | null = null; + filer_committee_id_number: string | null = null; + transaction_id_number: string | null = null; + back_reference_tran_id_number: string | null = null; + back_reference_sched_form_name: string | null = null; + text4000: string | null = null; + + report_id: number | null = null; // Foreign key to the F3XSummary model + + // prettier-ignore + static fromJSON(json: any): MemoText { // eslint-disable-line @typescript-eslint/no-explicit-any + return plainToClass(MemoText, json); + } +} diff --git a/front-end/src/app/shared/services/memo-text.service.spec.ts b/front-end/src/app/shared/services/memo-text.service.spec.ts new file mode 100644 index 0000000000..358a889398 --- /dev/null +++ b/front-end/src/app/shared/services/memo-text.service.spec.ts @@ -0,0 +1,94 @@ +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { TestBed } from '@angular/core/testing'; +import { provideMockStore } from '@ngrx/store/testing'; +import { UserLoginData } from 'app/shared/models/user.model'; +import { selectUserLoginData } from 'app/store/login.selectors'; +import { environment } from '../../../environments/environment'; +import { MemoText } from '../models/memo-text.model'; +import { MemoTextService } from './memo-text.service'; + +describe('MemoTextService', () => { + let service: MemoTextService; + let httpTestingController: HttpTestingController; + const userLoginData: UserLoginData = { + committee_id: 'C00000000', + email: 'email@fec.com', + is_allowed: true, + token: 'jwttokenstring', + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ + MemoTextService, + provideMockStore({ + initialState: { fecfile_online_userLoginData: userLoginData }, + selectors: [{ selector: selectUserLoginData, value: userLoginData }], + }), + ], + }); + + httpTestingController = TestBed.inject(HttpTestingController); + service = TestBed.inject(MemoTextService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('#get should return a specific memo text record', () => { + const memoText: MemoText = MemoText.fromJSON({ id: 999 }); + + service.get(999).subscribe((response: MemoText) => { + expect(response).toEqual(memoText); + }); + + const req = httpTestingController.expectOne(`${environment.apiUrl}/memo-text/${memoText.id}`); + expect(req.request.method).toEqual('GET'); + req.flush(memoText); + httpTestingController.verify(); + }); + + it('#create() should POST a payload', () => { + const memoText: MemoText = new MemoText(); + + service.create(memoText).subscribe((response: MemoText) => { + expect(response).toEqual(memoText); + }); + + const req = httpTestingController.expectOne(`${environment.apiUrl}/memo-text/?fields_to_validate=`); + expect(req.request.method).toEqual('POST'); + req.flush(memoText); + httpTestingController.verify(); + }); + + it('#update() should PUT a payload', () => { + const memoText: MemoText = MemoText.fromJSON({ id: 999 }); + + service.update(memoText).subscribe((response: MemoText) => { + expect(response).toEqual(memoText); + }); + + const req = httpTestingController.expectOne( + `${environment.apiUrl}/memo-text/${memoText.id}/?fields_to_validate=` + ); + expect(req.request.method).toEqual('PUT'); + req.flush(memoText); + httpTestingController.verify(); + }); + + it('#delete() should DELETE a record', () => { + const memoText: MemoText = MemoText.fromJSON({ id: 999 }); + + service.delete(memoText).subscribe((response: null) => { + expect(response).toBeNull(); + }); + + const req = httpTestingController.expectOne(`${environment.apiUrl}/memo-text/999`); + expect(req.request.method).toEqual('DELETE'); + req.flush(null); + httpTestingController.verify(); + }); + +}); diff --git a/front-end/src/app/shared/services/memo-text.service.ts b/front-end/src/app/shared/services/memo-text.service.ts new file mode 100644 index 0000000000..07849ebceb --- /dev/null +++ b/front-end/src/app/shared/services/memo-text.service.ts @@ -0,0 +1,45 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { MemoText } from '../models/memo-text.model'; +import { ApiService } from './api.service'; + +@Injectable({ + providedIn: 'root', +}) +export class MemoTextService { + constructor(private apiService: ApiService) {} + + public get(id: number): Observable { + return this.apiService + .get(`/memo-text/${id}`) + .pipe(map((response) => MemoText.fromJSON(response))); + } + + public getForReportId(reportId: number): Observable { + return this.apiService + .get(`/memo-text/?report_id=${reportId}`) + .pipe(map((response) => response.map(memoText => + MemoText.fromJSON(memoText))) + ); + } + + public create(memoText: MemoText, fieldsToValidate: string[] = []): Observable { + const payload = memoText.toJson(); + return this.apiService + .post(`/memo-text/`, payload, { fields_to_validate: fieldsToValidate.join(',') }) + .pipe(map((response) => MemoText.fromJSON(response))); + } + + public update(memoText: MemoText, fieldsToValidate: string[] = []): Observable { + const payload = memoText.toJson(); + return this.apiService + .put(`/memo-text/${memoText.id}/`, payload, { fields_to_validate: fieldsToValidate.join(',') }) + .pipe(map((response) => MemoText.fromJSON(response))); + } + + public delete(memoText: MemoText): Observable { + return this.apiService.delete(`/memo-text/${memoText.id}`); + } + +} From 4b8e224634d1fa734606d12eaa5f0dd11d6d5957 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 11:07:20 -0400 Subject: [PATCH 02/13] update fecfile-validate --- front-end/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/package.json b/front-end/package.json index ba30a5276a..3f66c1e6ba 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -37,7 +37,7 @@ "@popperjs/core": "^2.10.2", "bootstrap": "^5.1.3", "class-transformer": "^0.5.1", - "fecfile-validate": "https://github.com/fecgov/fecfile-validate#e0b23638af64dbd4ffb08c93fa45a76e797b92c7", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "luxon": "^2.3.2", From be4726c68bbc3248573dbfdfab5657d0fc351d40 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 11:46:18 -0400 Subject: [PATCH 03/13] fix test --- front-end/src/app/shared/models/memo-text.model.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front-end/src/app/shared/models/memo-text.model.spec.ts b/front-end/src/app/shared/models/memo-text.model.spec.ts index a38639734b..0ec4dcae81 100644 --- a/front-end/src/app/shared/models/memo-text.model.spec.ts +++ b/front-end/src/app/shared/models/memo-text.model.spec.ts @@ -10,13 +10,13 @@ describe('MemoText', () => { id: 999, report_id: 123, rec_type: 'test_rec_type', - text: 'test_text' + text4000: 'test_text' }; const memoText: MemoText = MemoText.fromJSON(data); expect(memoText).toBeInstanceOf(MemoText); expect(memoText.id).toBe(999); expect(memoText.report_id).toBe(123); expect(memoText.rec_type).toBe('test_rec_type'); - expect(memoText.text).toBe('test_text'); + expect(memoText.text4000).toBe('test_text'); }); }); From eda0885b6cf285c74a8aacc311b5b5deb9603307 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 11:55:07 -0400 Subject: [PATCH 04/13] fix test --- .../report-level-memo.component.spec.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts index 84a30ae2f2..72f4064740 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -1,14 +1,15 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; -import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; +import { ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; +import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { SharedModule } from 'app/shared/shared.module'; +import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; import { CardModule } from 'primeng/card'; - import { ReportLevelMemoComponent } from './report-level-memo.component'; + describe('ReportLevelMemoComponent', () => { let component: ReportLevelMemoComponent; let fixture: ComponentFixture; @@ -21,7 +22,12 @@ describe('ReportLevelMemoComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [SharedModule, CardModule, RouterTestingModule.withRoutes([])], + imports: [ + SharedModule, + CardModule, + ReactiveFormsModule, + RouterTestingModule.withRoutes([]) + ], declarations: [ReportLevelMemoComponent], providers: [ provideMockStore({ From 31d29df0abd563bc2cee93201b9e4a9c91ddebb0 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 12:03:08 -0400 Subject: [PATCH 05/13] fix tests --- .../report-level-memo.component.spec.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts index 72f4064740..0121249f80 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -1,3 +1,4 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; @@ -6,7 +7,10 @@ import { provideMockStore } from '@ngrx/store/testing'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { SharedModule } from 'app/shared/shared.module'; import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; +import { ButtonModule } from 'primeng/button'; import { CardModule } from 'primeng/card'; +import { InputTextareaModule } from 'primeng/inputtextarea'; +import { ToastModule } from 'primeng/toast'; import { ReportLevelMemoComponent } from './report-level-memo.component'; @@ -23,9 +27,13 @@ describe('ReportLevelMemoComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ - SharedModule, + HttpClientTestingModule, + SharedModule, CardModule, - ReactiveFormsModule, + ToastModule, + ReactiveFormsModule, + ButtonModule, + InputTextareaModule, RouterTestingModule.withRoutes([]) ], declarations: [ReportLevelMemoComponent], From 7337b6555df036390f6bcee75146865cbf5a47d3 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 12:12:38 -0400 Subject: [PATCH 06/13] fix tests --- .../report-level-memo/report-level-memo.component.spec.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts index 0121249f80..c1ec82de7f 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -1,12 +1,13 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; +import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { SharedModule } from 'app/shared/shared.module'; import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; +import { MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CardModule } from 'primeng/card'; import { InputTextareaModule } from 'primeng/inputtextarea'; @@ -38,6 +39,8 @@ describe('ReportLevelMemoComponent', () => { ], declarations: [ReportLevelMemoComponent], providers: [ + MessageService, + FormBuilder, provideMockStore({ selectors: [{ selector: selectReportCodeLabelList, value: {} }], }), From 1099b8b4a842bb87065169d08710c1e71bc25693 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 15:13:49 -0400 Subject: [PATCH 07/13] added unit tests --- .../app/shared/services/memo-text.service.spec.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/front-end/src/app/shared/services/memo-text.service.spec.ts b/front-end/src/app/shared/services/memo-text.service.spec.ts index 358a889398..0ea674dc58 100644 --- a/front-end/src/app/shared/services/memo-text.service.spec.ts +++ b/front-end/src/app/shared/services/memo-text.service.spec.ts @@ -50,6 +50,20 @@ describe('MemoTextService', () => { httpTestingController.verify(); }); + it('#getForReportId should return memo texts for report id', () => { + const memoTexts: MemoText[] = [MemoText.fromJSON({ id: 999 })]; + + service.getForReportId(1).subscribe((response: MemoText[]) => { + expect(response).toEqual(memoTexts); + }); + + const req = httpTestingController.expectOne( + `${environment.apiUrl}/memo-text/${memoTexts[0].id}`); + expect(req.request.method).toEqual('GET'); + req.flush(memoTexts); + httpTestingController.verify(); + }); + it('#create() should POST a payload', () => { const memoText: MemoText = new MemoText(); From 39d34150f9aeb4bbc884dce34b03a00de6ba8c1b Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 17:06:23 -0400 Subject: [PATCH 08/13] add unit tests --- .../report-level-memo.component.spec.ts | 73 ++++++++++++++++++- .../shared/services/memo-text.service.spec.ts | 2 +- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts index c1ec82de7f..ddf08b2592 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -1,23 +1,29 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; -import { ActivatedRoute } from '@angular/router'; +import { FormBuilder, FormControl, ReactiveFormsModule } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; +import { MemoText } from 'app/shared/models/memo-text.model'; +import { MemoTextService } from 'app/shared/services/memo-text.service'; import { SharedModule } from 'app/shared/shared.module'; import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; -import { MessageService } from 'primeng/api'; +import { Message, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CardModule } from 'primeng/card'; import { InputTextareaModule } from 'primeng/inputtextarea'; import { ToastModule } from 'primeng/toast'; +import { of } from 'rxjs'; import { ReportLevelMemoComponent } from './report-level-memo.component'; describe('ReportLevelMemoComponent', () => { let component: ReportLevelMemoComponent; let fixture: ComponentFixture; + let testMemoTextService: MemoTextService; + let testMessageService: MessageService; + let testRouter: Router; const f3x: F3xSummary = F3xSummary.fromJSON({ id: 999, coverage_from_date: '2022-05-25', @@ -40,6 +46,7 @@ describe('ReportLevelMemoComponent', () => { declarations: [ReportLevelMemoComponent], providers: [ MessageService, + MemoTextService, FormBuilder, provideMockStore({ selectors: [{ selector: selectReportCodeLabelList, value: {} }], @@ -59,12 +66,70 @@ describe('ReportLevelMemoComponent', () => { }); beforeEach(() => { + testRouter = TestBed.inject(Router); + testMemoTextService = TestBed.inject(MemoTextService); + testMessageService = TestBed.inject(MessageService); fixture = TestBed.createComponent(ReportLevelMemoComponent); component = fixture.componentInstance; fixture.detectChanges(); }); - it('should create', () => { + it('should create', () => { + const testText4kValue = 'testText4k'; + const testMemoText: MemoText = new MemoText(); + testMemoText.id = 4; + testMemoText.report_id = 123; + testMemoText.rec_type = 'test_rec_type'; + testMemoText.filer_committee_id_number = 'test_fcin'; + testMemoText.transaction_id_number = 'test_tin'; + testMemoText.back_reference_tran_id_number = 'test_brtin'; + testMemoText.back_reference_sched_form_name = 'test_brsfn'; + testMemoText.text4000 = 'test_text4k'; + component.form.addControl('text4000', new FormControl()); + component.form.get('text4000')?.setValue(testText4kValue); + spyOn(testMemoTextService, + 'getForReportId').and.returnValue(of([testMemoText])); expect(component).toBeTruthy(); }); + + it('save for existing memo text happy path', () => { + const expectedMessage: Message = { + severity: 'success', + summary: 'Successful', + detail: 'Report Memo Updated', + life: 3000, + } + const testMemoTextServiceSpy = spyOn(testMemoTextService, + 'update').and.returnValue(of(new MemoText())); + const navigateSpy = spyOn(testRouter, 'navigateByUrl'); + const testMessageServiceSpy = spyOn(testMessageService, + 'add'); + component.assignedMemoText.id = 1; + component.save(); + expect(testMemoTextServiceSpy).toHaveBeenCalledTimes(1); + expect(navigateSpy).toHaveBeenCalledWith('/reports'); + expect(testMessageServiceSpy).toHaveBeenCalledOnceWith( + expectedMessage); + }); + + it('save for new memo text happy path', () => { + const expectedMessage: Message = { + severity: 'success', + summary: 'Successful', + detail: 'Report Memo Created', + life: 3000, + } + const testMemoTextServiceSpy = spyOn(testMemoTextService, + 'create').and.returnValue(of(new MemoText())); + const navigateSpy = spyOn(testRouter, 'navigateByUrl'); + const testMessageServiceSpy = spyOn(testMessageService, + 'add'); + component.assignedMemoText.id = null; + component.save(); + expect(testMemoTextServiceSpy).toHaveBeenCalledTimes(1); + expect(navigateSpy).toHaveBeenCalledWith('/reports'); + expect(testMessageServiceSpy).toHaveBeenCalledOnceWith( + expectedMessage); + }); + }); diff --git a/front-end/src/app/shared/services/memo-text.service.spec.ts b/front-end/src/app/shared/services/memo-text.service.spec.ts index 0ea674dc58..02108d8f6c 100644 --- a/front-end/src/app/shared/services/memo-text.service.spec.ts +++ b/front-end/src/app/shared/services/memo-text.service.spec.ts @@ -58,7 +58,7 @@ describe('MemoTextService', () => { }); const req = httpTestingController.expectOne( - `${environment.apiUrl}/memo-text/${memoTexts[0].id}`); + `${environment.apiUrl}/memo-text/?report_id=1`); expect(req.request.method).toEqual('GET'); req.flush(memoTexts); httpTestingController.verify(); From f5673099cffc1ef2433308be2e7d690876e5cd86 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 17:12:33 -0400 Subject: [PATCH 09/13] added test --- .../f3x/report-level-memo/report-level-memo.component.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts index ddf08b2592..f890ef1785 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -89,6 +89,7 @@ describe('ReportLevelMemoComponent', () => { component.form.get('text4000')?.setValue(testText4kValue); spyOn(testMemoTextService, 'getForReportId').and.returnValue(of([testMemoText])); + component.ngOnInit(); expect(component).toBeTruthy(); }); From 636b62e89f5fd3de76982b25806d689df4be4d46 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 26 Jul 2022 17:36:30 -0400 Subject: [PATCH 10/13] added merge fix --- .../f3x/report-level-memo/report-level-memo.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts index 213a25ec7b..ff4041b4e8 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts @@ -16,7 +16,7 @@ import { ReportCodeLabelList } from '../../../shared/utils/reportCodeLabels.util @Component({ selector: 'app-report-level-memo', templateUrl: './report-level-memo.component.html', - styleUrls: ['../../style.scss'], + styleUrls: ['../../styles.scss'], }) export class ReportLevelMemoComponent implements OnInit { readonly recTypeFormProperty = 'rec_type'; From 7a098c6d5e5be385826d3a729320849e6f243b49 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 27 Jul 2022 18:17:39 -0400 Subject: [PATCH 11/13] Added memo screen to left report nav --- front-end/package-lock.json | 1361 +++++++++-------- .../menu-report/menu-report.component.ts | 99 +- .../report-level-memo.component.html | 19 +- .../report-level-memo.component.ts | 38 +- .../submit-f3x-step1.component.ts | 3 - .../submit-f3x-step2.component.ts | 3 - .../report-list/report-list.component.html | 6 - 7 files changed, 795 insertions(+), 734 deletions(-) diff --git a/front-end/package-lock.json b/front-end/package-lock.json index 1a154a32e8..e0d2f7323e 100644 --- a/front-end/package-lock.json +++ b/front-end/package-lock.json @@ -22,7 +22,7 @@ "@popperjs/core": "^2.10.2", "bootstrap": "^5.1.3", "class-transformer": "^0.5.1", - "fecfile-validate": "https://github.com/fecgov/fecfile-validate#38542f53467786340e85d70a8b6f90876eb51e1e", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "luxon": "^2.3.2", @@ -593,21 +593,21 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -632,12 +632,12 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -883,25 +883,25 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", - "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "dependencies": { "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -923,17 +923,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", - "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -984,15 +984,13 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "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", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -1012,9 +1010,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1033,13 +1031,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "dependencies": { "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1072,12 +1070,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", - "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1096,19 +1094,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", - "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.8", - "@babel/types": "^7.18.8" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1141,24 +1139,24 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", - "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-wrap-function": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1180,16 +1178,16 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", - "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1208,12 +1206,12 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", - "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1250,15 +1248,15 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", - "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", + "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-function-name": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1279,14 +1277,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "dependencies": { "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1321,9 +1319,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz", - "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1348,14 +1346,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", - "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1431,12 +1429,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", - "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1463,12 +1461,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", - "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1511,16 +1509,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", - "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.6" + "@babel/plugin-transform-parameters": "^7.18.8" }, "engines": { "node": ">=6.9.0" @@ -1546,13 +1544,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", - "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1849,12 +1847,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", - "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1864,17 +1862,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.8.tgz", - "integrity": "sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1898,12 +1896,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", - "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1913,12 +1911,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", - "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1944,12 +1942,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", - "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1990,14 +1988,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", - "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2007,12 +2005,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", - "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2072,14 +2070,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", - "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -2259,13 +2257,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", - "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2290,12 +2288,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", - "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2305,12 +2303,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", - "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2476,9 +2474,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.6.tgz", - "integrity": "sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", "dev": true, "dependencies": { "core-js-pure": "^3.20.2", @@ -2503,19 +2501,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz", - "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.7", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.8", - "@babel/types": "^7.18.8", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2524,12 +2522,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2552,9 +2550,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz", - "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", @@ -2653,12 +2651,12 @@ } }, "node_modules/@cypress/schematic/node_modules/@angular-devkit/architect": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.17.tgz", - "integrity": "sha512-uUQcHcLbPvr9adALQSLU1MTDduVUR2kZAHi2e7SmL9ioel84pPVXBoD0WpSBeUMKwPiDs3TQDaxDB49hl0nBSQ==", + "version": "0.1202.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.18.tgz", + "integrity": "sha512-C4ASKe+xBjl91MJyHDLt3z7ICPF9FU6B0CeJ1phwrlSHK9lmFG99WGxEj/Tc82+vHyPhajqS5XJ38KyVAPBGzA==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.2.17", + "@angular-devkit/core": "12.2.18", "rxjs": "6.6.7" }, "engines": { @@ -2668,9 +2666,9 @@ } }, "node_modules/@cypress/schematic/node_modules/@angular-devkit/core": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.17.tgz", - "integrity": "sha512-PyOY7LGUPPd6rakxUYbfQN6zAdOCMCouVp5tERY1WTdMdEiuULOtHsPee8kNbh75pD59KbJNU+fwozPRMuIm5g==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.18.tgz", + "integrity": "sha512-GDLHGe9HEY5SRS+NrKr14C8aHsRCiBFkBFSSbeohgLgcgSXzZHFoU84nDWrl3KZNP8oqcUSv5lHu6dLcf2fnww==", "dev": true, "dependencies": { "ajv": "8.6.2", @@ -2687,12 +2685,12 @@ } }, "node_modules/@cypress/schematic/node_modules/@angular-devkit/schematics": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.17.tgz", - "integrity": "sha512-c0eNu/nx1Mnu7KcZgYTYHP736H4Y9pSyLBSmLAHYZv3t3m0dIPbhifRcLQX7hHQ8fGT2ZFxmOpaQG5/DcIghSw==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.18.tgz", + "integrity": "sha512-bZ9NS5PgoVfetRC6WeQBHCY5FqPZ9y2TKHUo12sOB2YSL3tgWgh1oXyP8PtX34gasqsLjNULxEQsAQYEsiX/qQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.2.17", + "@angular-devkit/core": "12.2.18", "ora": "5.4.1", "rxjs": "6.6.7" }, @@ -2703,13 +2701,13 @@ } }, "node_modules/@cypress/schematic/node_modules/@schematics/angular": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.17.tgz", - "integrity": "sha512-HM/4KkQu944KL5ebhIyy1Ot5OV6prHNW7kmGeMVeQefLSbbfMQCHLa1psB9UU9BoahwGhUBvleLylNSitOBCgg==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.18.tgz", + "integrity": "sha512-niRS9Ly9y8uI0YmTSbo8KpdqCCiZ/ATMZWeS2id5M8JZvfXbngwiqJvojdSol0SWU+n1W4iA+lJBdt4gSKlD5w==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.2.17", - "@angular-devkit/schematics": "12.2.17", + "@angular-devkit/core": "12.2.18", + "@angular-devkit/schematics": "12.2.18", "jsonc-parser": "3.0.0" }, "engines": { @@ -2840,9 +2838,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3153,21 +3151,21 @@ } }, "node_modules/@nrwl/cli": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.2.tgz", - "integrity": "sha512-JNV4kP9goZD4BlTQGKdKhCRc1bhiWYp1TaDJHdk4ZfhiLt1NzXNxxgc/eX2obFZ3Hw+KdM/gM5F7KfWBbtSGSw==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.3.tgz", + "integrity": "sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw==", "dev": true, "dependencies": { - "nx": "14.4.2" + "nx": "14.4.3" } }, "node_modules/@nrwl/cli/node_modules/@nrwl/tao": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.2.tgz", - "integrity": "sha512-Ygw3skKZfFhi4MBHZKQ8A67pDQxeyDdY78tFWViMN0SEn9ExL41Q8V9aSMfir8VZYGca6ZOXX5MRhbeHdcgMLQ==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.3.tgz", + "integrity": "sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ==", "dev": true, "dependencies": { - "nx": "14.4.2" + "nx": "14.4.3" }, "bin": { "tao": "index.js" @@ -3210,6 +3208,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@nrwl/cli/node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@nrwl/cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3309,14 +3319,14 @@ } }, "node_modules/@nrwl/cli/node_modules/nx": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.2.tgz", - "integrity": "sha512-bYO//HuwQL4X8y+2BjUPtkPLDiYI1zMejQo6+uJl3+VdYPcsjwW/ca581tBPHiPH95XnHiBartnMrMJtn11grw==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.3.tgz", + "integrity": "sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@nrwl/cli": "14.4.2", - "@nrwl/tao": "14.4.2", + "@nrwl/cli": "14.4.3", + "@nrwl/tao": "14.4.3", "@parcel/watcher": "2.0.4", "chalk": "4.1.0", "chokidar": "^3.5.1", @@ -3726,9 +3736,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -3770,9 +3780,9 @@ "dev": true }, "node_modules/@types/luxon": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.2.tgz", - "integrity": "sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz", + "integrity": "sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==", "dev": true }, "node_modules/@types/mime": { @@ -4263,9 +4273,9 @@ } }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4509,16 +4519,16 @@ ] }, "node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/argparse": { @@ -4758,13 +4768,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "peerDependencies": { @@ -4781,12 +4791,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" }, "peerDependencies": { @@ -4971,15 +4981,21 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - }, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz", + "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], "peerDependencies": { - "@popperjs/core": "^2.10.2" + "@popperjs/core": "^2.11.5" } }, "node_modules/brace-expansion": { @@ -5005,9 +5021,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "funding": [ { @@ -5020,10 +5036,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -5162,9 +5178,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001365", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001365.tgz", - "integrity": "sha512-VDQZ8OtpuIPMBA4YYvZXECtXbddMCUFJk1qu8Mqxfm/SZJNSr1cy4IuLCOL7RJ/YASrvJcYg1Zh+UEUQ5m6z8Q==", + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", "dev": true, "funding": [ { @@ -5302,9 +5318,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true, "engines": { "node": ">=6" @@ -5762,12 +5778,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.4.tgz", - "integrity": "sha512-RkSRPe+JYEoflcsuxJWaiMPhnZoFS51FcIxm53k4KzhISCBTmaGlto9dTIrYuk0hnJc3G6pKufAKepHnBq6B6Q==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", + "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", "dev": true, "dependencies": { - "browserslist": "^4.21.1", + "browserslist": "^4.21.2", "semver": "7.0.0" }, "funding": { @@ -5785,9 +5801,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.4.tgz", - "integrity": "sha512-lizxkcgj3XDmi7TUBFe+bQ1vNpD5E4t76BrBWI3HdUxdw/Mq1VF4CkiHzIKyieECKtcODK2asJttoofEeUKICQ==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.0.tgz", + "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==", "dev": true, "hasInstallScript": true, "funding": { @@ -6141,9 +6157,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", - "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "version": "14.18.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz", + "integrity": "sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -6244,18 +6260,18 @@ } }, "node_modules/date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", + "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", "dev": true, "engines": { "node": ">=4.0" } }, "node_modules/dayjs": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz", - "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz", + "integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==", "dev": true }, "node_modules/debug": { @@ -6529,6 +6545,12 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/dns-packet/node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, "node_modules/dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", @@ -6658,9 +6680,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.186", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.186.tgz", - "integrity": "sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==", + "version": "1.4.203", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.203.tgz", + "integrity": "sha512-EG+Llo8SZGZCgErY+PzE9N+Ld/O80243hTufTeg4GbZ1U+Xn92n6ewxKhZjt/bxdF7aS5OXEU7QlRs5uRoTVKw==", "dev": true }, "node_modules/emoji-regex": { @@ -7208,9 +7230,9 @@ } }, "node_modules/eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", - "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.0", @@ -7426,9 +7448,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7921,8 +7943,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#38542f53467786340e85d70a8b6f90876eb51e1e", - "integrity": "sha512-IRP5lE1Ego1TdFjsPKCUOd/drrJ7lUHnxPpaTMA38GTHhph3Aosc5cBmzpml7LhVfI0ZcUh4y+rSpBY/WDo1zQ==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", + "integrity": "sha512-L4g1ZhP2fdvqzuxiWu9WGxFlBA9QnKVk552IdbPDb+3W2tnZpqgeRWcCEpdDkSq3naD5a3Tcd3+HNlZzwpDZLQ==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -8994,9 +9016,9 @@ } }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "node_modules/ipaddr.js": { @@ -9404,9 +9426,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -10346,16 +10368,16 @@ } }, "node_modules/log4js": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.0.tgz", - "integrity": "sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", + "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", "dev": true, "dependencies": { - "date-format": "^4.0.11", + "date-format": "^4.0.13", "debug": "^4.3.4", - "flatted": "^3.2.5", + "flatted": "^3.2.6", "rfdc": "^1.3.0", - "streamroller": "^3.1.1" + "streamroller": "^3.1.2" }, "engines": { "node": ">=8.0" @@ -11101,9 +11123,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.1.tgz", + "integrity": "sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg==", "dev": true, "dependencies": { "@gar/promisify": "^1.1.3", @@ -11207,18 +11229,18 @@ } }, "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", + "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz", + "integrity": "sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", @@ -13699,12 +13721,12 @@ } }, "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "dev": true, "dependencies": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" }, "engines": { @@ -13956,14 +13978,14 @@ } }, "node_modules/streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", + "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", "dev": true, "dependencies": { - "date-format": "^4.0.10", + "date-format": "^4.0.13", "debug": "^4.3.4", - "fs-extra": "^10.1.0" + "fs-extra": "^8.1.0" }, "engines": { "node": ">=8.0" @@ -13987,17 +14009,35 @@ } }, "node_modules/streamroller/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=6 <7 || >=8" + } + }, + "node_modules/streamroller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/streamroller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/string_decoder": { @@ -14649,9 +14689,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "dev": true, "funding": [ { @@ -15293,9 +15333,9 @@ } }, "node_modules/zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.7.tgz", + "integrity": "sha512-e39K2EdK5JfA3FDuUTVRvPlYV4aBfnOOcGuILhQAT7nzeV12uSrLBzImUM9CDVoncDSX4brR/gwqu0heQ3BQ0g==", "dependencies": { "tslib": "^2.3.0" } @@ -15684,21 +15724,21 @@ } }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -15715,12 +15755,12 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -15887,22 +15927,22 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", - "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -15917,17 +15957,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", - "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6" }, "dependencies": { @@ -15964,15 +16004,13 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "requires": { - "@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", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -15988,9 +16026,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true }, "@babel/helper-explode-assignable-expression": { @@ -16003,13 +16041,13 @@ } }, "@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "requires": { "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "dependencies": { "@babel/template": { @@ -16035,12 +16073,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", - "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { @@ -16053,19 +16091,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", - "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.8", - "@babel/types": "^7.18.8" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "dependencies": { "@babel/template": { @@ -16091,21 +16129,21 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", - "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-wrap-function": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" }, "dependencies": { "@babel/helper-annotate-as-pure": { @@ -16120,16 +16158,16 @@ } }, "@babel/helper-replace-supers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", - "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-simple-access": { @@ -16142,12 +16180,12 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", - "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { @@ -16172,15 +16210,15 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", - "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", + "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-function-name": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "dependencies": { "@babel/template": { @@ -16197,14 +16235,14 @@ } }, "@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "requires": { "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "dependencies": { "@babel/template": { @@ -16232,9 +16270,9 @@ } }, "@babel/parser": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz", - "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -16247,14 +16285,14 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", - "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -16300,12 +16338,12 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", - "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, @@ -16320,12 +16358,12 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", - "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -16350,16 +16388,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", - "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.6" + "@babel/plugin-transform-parameters": "^7.18.8" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -16373,13 +16411,13 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", - "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -16582,26 +16620,26 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", - "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-classes": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.8.tgz", - "integrity": "sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -16618,21 +16656,21 @@ } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", - "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", - "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-dotall-regex": { @@ -16646,12 +16684,12 @@ } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", - "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { @@ -16674,23 +16712,23 @@ } }, "@babel/plugin-transform-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", - "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", - "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { @@ -16726,14 +16764,14 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", - "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } @@ -16846,13 +16884,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", - "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { @@ -16865,21 +16903,21 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", - "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", - "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-escapes": { @@ -17014,9 +17052,9 @@ } }, "@babel/runtime-corejs3": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.6.tgz", - "integrity": "sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", "dev": true, "requires": { "core-js-pure": "^3.20.2", @@ -17035,30 +17073,30 @@ } }, "@babel/traverse": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz", - "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.7", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.8", - "@babel/types": "^7.18.8", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -17077,9 +17115,9 @@ } }, "@babel/types": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz", - "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", @@ -17149,19 +17187,19 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.1202.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.17.tgz", - "integrity": "sha512-uUQcHcLbPvr9adALQSLU1MTDduVUR2kZAHi2e7SmL9ioel84pPVXBoD0WpSBeUMKwPiDs3TQDaxDB49hl0nBSQ==", + "version": "0.1202.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.18.tgz", + "integrity": "sha512-C4ASKe+xBjl91MJyHDLt3z7ICPF9FU6B0CeJ1phwrlSHK9lmFG99WGxEj/Tc82+vHyPhajqS5XJ38KyVAPBGzA==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.17", + "@angular-devkit/core": "12.2.18", "rxjs": "6.6.7" } }, "@angular-devkit/core": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.17.tgz", - "integrity": "sha512-PyOY7LGUPPd6rakxUYbfQN6zAdOCMCouVp5tERY1WTdMdEiuULOtHsPee8kNbh75pD59KbJNU+fwozPRMuIm5g==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.18.tgz", + "integrity": "sha512-GDLHGe9HEY5SRS+NrKr14C8aHsRCiBFkBFSSbeohgLgcgSXzZHFoU84nDWrl3KZNP8oqcUSv5lHu6dLcf2fnww==", "dev": true, "requires": { "ajv": "8.6.2", @@ -17173,24 +17211,24 @@ } }, "@angular-devkit/schematics": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.17.tgz", - "integrity": "sha512-c0eNu/nx1Mnu7KcZgYTYHP736H4Y9pSyLBSmLAHYZv3t3m0dIPbhifRcLQX7hHQ8fGT2ZFxmOpaQG5/DcIghSw==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.18.tgz", + "integrity": "sha512-bZ9NS5PgoVfetRC6WeQBHCY5FqPZ9y2TKHUo12sOB2YSL3tgWgh1oXyP8PtX34gasqsLjNULxEQsAQYEsiX/qQ==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.17", + "@angular-devkit/core": "12.2.18", "ora": "5.4.1", "rxjs": "6.6.7" } }, "@schematics/angular": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.17.tgz", - "integrity": "sha512-HM/4KkQu944KL5ebhIyy1Ot5OV6prHNW7kmGeMVeQefLSbbfMQCHLa1psB9UU9BoahwGhUBvleLylNSitOBCgg==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.18.tgz", + "integrity": "sha512-niRS9Ly9y8uI0YmTSbo8KpdqCCiZ/ATMZWeS2id5M8JZvfXbngwiqJvojdSol0SWU+n1W4iA+lJBdt4gSKlD5w==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.17", - "@angular-devkit/schematics": "12.2.17", + "@angular-devkit/core": "12.2.18", + "@angular-devkit/schematics": "12.2.18", "jsonc-parser": "3.0.0" } }, @@ -17295,9 +17333,9 @@ "dev": true }, "globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -17538,21 +17576,21 @@ } }, "@nrwl/cli": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.2.tgz", - "integrity": "sha512-JNV4kP9goZD4BlTQGKdKhCRc1bhiWYp1TaDJHdk4ZfhiLt1NzXNxxgc/eX2obFZ3Hw+KdM/gM5F7KfWBbtSGSw==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.3.tgz", + "integrity": "sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw==", "dev": true, "requires": { - "nx": "14.4.2" + "nx": "14.4.3" }, "dependencies": { "@nrwl/tao": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.2.tgz", - "integrity": "sha512-Ygw3skKZfFhi4MBHZKQ8A67pDQxeyDdY78tFWViMN0SEn9ExL41Q8V9aSMfir8VZYGca6ZOXX5MRhbeHdcgMLQ==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.3.tgz", + "integrity": "sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ==", "dev": true, "requires": { - "nx": "14.4.2" + "nx": "14.4.3" } }, "ansi-styles": { @@ -17580,6 +17618,12 @@ "supports-color": "^7.1.0" } }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -17658,13 +17702,13 @@ } }, "nx": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.2.tgz", - "integrity": "sha512-bYO//HuwQL4X8y+2BjUPtkPLDiYI1zMejQo6+uJl3+VdYPcsjwW/ca581tBPHiPH95XnHiBartnMrMJtn11grw==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.3.tgz", + "integrity": "sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw==", "dev": true, "requires": { - "@nrwl/cli": "14.4.2", - "@nrwl/tao": "14.4.2", + "@nrwl/cli": "14.4.3", + "@nrwl/tao": "14.4.3", "@parcel/watcher": "2.0.4", "chalk": "4.1.0", "chokidar": "^3.5.1", @@ -17993,9 +18037,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dev": true, "requires": { "@types/node": "*", @@ -18037,9 +18081,9 @@ "dev": true }, "@types/luxon": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.2.tgz", - "integrity": "sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz", + "integrity": "sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==", "dev": true }, "@types/mime": { @@ -18428,9 +18472,9 @@ } }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-import-assertions": { @@ -18597,9 +18641,9 @@ "dev": true }, "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -18783,13 +18827,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "dependencies": { @@ -18802,12 +18846,12 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" } }, @@ -18955,9 +18999,9 @@ "dev": true }, "bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz", + "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==", "requires": {} }, "brace-expansion": { @@ -18980,15 +19024,15 @@ } }, "browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "buffer": { @@ -19086,9 +19130,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001365", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001365.tgz", - "integrity": "sha512-VDQZ8OtpuIPMBA4YYvZXECtXbddMCUFJk1qu8Mqxfm/SZJNSr1cy4IuLCOL7RJ/YASrvJcYg1Zh+UEUQ5m6z8Q==", + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", "dev": true }, "caseless": { @@ -19182,9 +19226,9 @@ } }, "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, "cli-table3": { @@ -19524,12 +19568,12 @@ "dev": true }, "core-js-compat": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.4.tgz", - "integrity": "sha512-RkSRPe+JYEoflcsuxJWaiMPhnZoFS51FcIxm53k4KzhISCBTmaGlto9dTIrYuk0hnJc3G6pKufAKepHnBq6B6Q==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", + "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", "dev": true, "requires": { - "browserslist": "^4.21.1", + "browserslist": "^4.21.2", "semver": "7.0.0" }, "dependencies": { @@ -19542,9 +19586,9 @@ } }, "core-js-pure": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.4.tgz", - "integrity": "sha512-lizxkcgj3XDmi7TUBFe+bQ1vNpD5E4t76BrBWI3HdUxdw/Mq1VF4CkiHzIKyieECKtcODK2asJttoofEeUKICQ==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.0.tgz", + "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==", "dev": true }, "core-util-is": { @@ -19806,9 +19850,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", - "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "version": "14.18.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz", + "integrity": "sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==", "dev": true }, "ansi-styles": { @@ -19883,15 +19927,15 @@ } }, "date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", + "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", "dev": true }, "dayjs": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz", - "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz", + "integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==", "dev": true }, "debug": { @@ -20096,6 +20140,14 @@ "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" + }, + "dependencies": { + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + } } }, "dns-txt": { @@ -20197,9 +20249,9 @@ } }, "electron-to-chromium": { - "version": "1.4.186", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.186.tgz", - "integrity": "sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==", + "version": "1.4.203", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.203.tgz", + "integrity": "sha512-EG+Llo8SZGZCgErY+PzE9N+Ld/O80243hTufTeg4GbZ1U+Xn92n6ewxKhZjt/bxdF7aS5OXEU7QlRs5uRoTVKw==", "dev": true }, "emoji-regex": { @@ -20529,9 +20581,9 @@ "dev": true }, "eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", - "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", @@ -20655,9 +20707,9 @@ } }, "globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -21070,9 +21122,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#38542f53467786340e85d70a8b6f90876eb51e1e", - "integrity": "sha512-IRP5lE1Ego1TdFjsPKCUOd/drrJ7lUHnxPpaTMA38GTHhph3Aosc5cBmzpml7LhVfI0ZcUh4y+rSpBY/WDo1zQ==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#38542f53467786340e85d70a8b6f90876eb51e1e", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", + "integrity": "sha512-L4g1ZhP2fdvqzuxiWu9WGxFlBA9QnKVk552IdbPDb+3W2tnZpqgeRWcCEpdDkSq3naD5a3Tcd3+HNlZzwpDZLQ==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", "requires": { "ajv": "^8.11.0" }, @@ -21890,9 +21942,9 @@ } }, "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "ipaddr.js": { @@ -22183,9 +22235,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -22900,16 +22952,16 @@ } }, "log4js": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.0.tgz", - "integrity": "sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", + "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", "dev": true, "requires": { - "date-format": "^4.0.11", + "date-format": "^4.0.13", "debug": "^4.3.4", - "flatted": "^3.2.5", + "flatted": "^3.2.6", "rfdc": "^1.3.0", - "streamroller": "^3.1.1" + "streamroller": "^3.1.2" }, "dependencies": { "debug": { @@ -23478,9 +23530,9 @@ }, "dependencies": { "@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.1.tgz", + "integrity": "sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -23563,15 +23615,15 @@ } }, "lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", + "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", "dev": true }, "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz", + "integrity": "sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -25385,12 +25437,12 @@ } }, "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "dev": true, "requires": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" } }, @@ -25599,14 +25651,14 @@ "dev": true }, "streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", + "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", "dev": true, "requires": { - "date-format": "^4.0.10", + "date-format": "^4.0.13", "debug": "^4.3.4", - "fs-extra": "^10.1.0" + "fs-extra": "^8.1.0" }, "dependencies": { "debug": { @@ -25619,15 +25671,30 @@ } }, "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true } } }, @@ -26091,9 +26158,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -26556,9 +26623,9 @@ } }, "zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.7.tgz", + "integrity": "sha512-e39K2EdK5JfA3FDuUTVRvPlYV4aBfnOOcGuILhQAT7nzeV12uSrLBzImUM9CDVoncDSX4brR/gwqu0heQ3BQ0g==", "requires": { "tslib": "^2.3.0" } diff --git a/front-end/src/app/layout/sidebar/menu-report/menu-report.component.ts b/front-end/src/app/layout/sidebar/menu-report/menu-report.component.ts index 3481b306a5..8b229ae5fa 100644 --- a/front-end/src/app/layout/sidebar/menu-report/menu-report.component.ts +++ b/front-end/src/app/layout/sidebar/menu-report/menu-report.component.ts @@ -34,6 +34,7 @@ export class MenuReportComponent implements OnInit, OnDestroy { /^\/transactions\/report\/\d+\/create/, // Enter a transaction group /^\/reports\/f3x\/summary\/\d+/, // Review a report group /^\/reports\/f3x\/detailed-summary\/\d+/, // Review a report group + /^\/reports\/f3x\/memo\/\d+/, // Review a report group /^\/reports\/f3x\/submit\/step1\/\d+/, // Submit your report group /^\/reports\/f3x\/submit\/step2\/\d+/, // Submit your report group /^\/reports\/f3x\/submit\/status\/\d+/, // Submit your report group @@ -65,53 +66,59 @@ export class MenuReportComponent implements OnInit, OnDestroy { // regular expressions in the matchUrl array. this.showMenu = this.isActive(this.urlMatch, event.url); - if (this.showMenu && this.activeReport && this.activeReport.id !== this.currentReportId) { - this.currentReportId = this.activeReport.id; + if (this.showMenu && this.activeReport) { + if (this.activeReport.id !== this.currentReportId) { + this.currentReportId = this.activeReport.id; - this.items = [ - { - label: 'ENTER A TRANSACTION', - expanded: this.isActive(this.urlMatch.slice(0, 1), event.url), - items: [ - { - label: 'Manage your transactions', - routerLink: [`/reports/f3x/create/step3/${this.currentReportId}`], - }, - { - label: 'Add a receipt', - routerLink: [`/transactions/report/${this.currentReportId}/create`], - }, - { label: 'Add a disbursements', styleClass: 'menu-item-disabled' }, - { label: 'Add loans and debts', styleClass: 'menu-item-disabled' }, - { label: 'Add other transactions', styleClass: 'menu-item-disabled' }, - ], - }, - { - label: 'REVIEW A REPORT', - expanded: this.isActive(this.urlMatch.slice(2, 3), event.url), - items: [ - { - label: 'View summary page', - routerLink: [`/reports/f3x/summary/${this.currentReportId}`], - }, - { - label: 'View detailed summary page', - routerLink: [`/reports/f3x/detailed-summary/${this.currentReportId}`], - }, - { label: 'View print preview', styleClass: 'menu-item-disabled' }, - { label: 'Add a report level memo', styleClass: 'menu-item-disabled' }, - ], - }, - { - label: 'SUBMIT YOUR REPORT', - expanded: this.isActive(this.urlMatch.slice(4, 6), event.url), - items: [ - { label: 'Confirm information', routerLink: [`/reports/f3x/submit/step1/${this.currentReportId}`] }, - { label: 'Submit report', routerLink: [`/reports/f3x/submit/step2/${this.currentReportId}`] }, - { label: 'Report status', routerLink: [`/reports/f3x/submit/status/${this.currentReportId}`] }, - ], - }, - ]; + this.items = [ + { + label: 'ENTER A TRANSACTION', + expanded: false, + items: [ + { + label: 'Manage your transactions', + routerLink: [`/reports/f3x/create/step3/${this.currentReportId}`], + }, + { + label: 'Add a receipt', + routerLink: [`/transactions/report/${this.currentReportId}/create`], + }, + { label: 'Add a disbursements', styleClass: 'menu-item-disabled' }, + { label: 'Add loans and debts', styleClass: 'menu-item-disabled' }, + { label: 'Add other transactions', styleClass: 'menu-item-disabled' }, + ], + }, + { + label: 'REVIEW A REPORT', + expanded: false, + items: [ + { + label: 'View summary page', + routerLink: [`/reports/f3x/summary/${this.currentReportId}`], + }, + { + label: 'View detailed summary page', + routerLink: [`/reports/f3x/detailed-summary/${this.currentReportId}`], + }, + { label: 'View print preview', styleClass: 'menu-item-disabled' }, + { label: 'Add a report level memo', routerLink: [`/reports/f3x/memo/${this.currentReportId}`] }, + ], + }, + { + label: 'SUBMIT YOUR REPORT', + expanded: false, + items: [ + { label: 'Confirm information', routerLink: [`/reports/f3x/submit/step1/${this.currentReportId}`] }, + { label: 'Submit report', routerLink: [`/reports/f3x/submit/step2/${this.currentReportId}`] }, + { label: 'Report status', routerLink: [`/reports/f3x/submit/status/${this.currentReportId}`] }, + ], + }, + ]; + } + + this.items[0].expanded = this.isActive(this.urlMatch.slice(0, 2), event.url); + this.items[1].expanded = this.isActive(this.urlMatch.slice(2, 5), event.url); + this.items[2].expanded = this.isActive(this.urlMatch.slice(5, 8), event.url); } } diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html index d2e0013b3b..20ee155d1b 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.html @@ -10,19 +10,19 @@

Report level memo

- +
@@ -37,7 +37,7 @@

Report level memo

pRipple label="Back" class="p-button-secondary" - (click)="router.navigateByUrl('/reports')" + (click)="router.navigateByUrl('/reports/f3x/memo/' + report.id)" >
PREVIOUS: PRINT PREVIEW
@@ -45,17 +45,10 @@

Report level memo

- +
NEXT: SUBMIT YOUR REPORT
- diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts index ff4041b4e8..e5f910517c 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts @@ -1,6 +1,7 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, OnDestroy } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; +import { Subject, takeUntil } from 'rxjs'; import { Store } from '@ngrx/store'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { MemoText } from 'app/shared/models/memo-text.model'; @@ -18,7 +19,7 @@ import { ReportCodeLabelList } from '../../../shared/utils/reportCodeLabels.util templateUrl: './report-level-memo.component.html', styleUrls: ['../../styles.scss'], }) -export class ReportLevelMemoComponent implements OnInit { +export class ReportLevelMemoComponent implements OnInit, OnDestroy { readonly recTypeFormProperty = 'rec_type'; readonly committeeIdFormProperty = 'filer_committee_id_number'; readonly brSchedFormProperty = 'back_reference_sched_form_name'; @@ -34,15 +35,15 @@ export class ReportLevelMemoComponent implements OnInit { report: F3xSummary = new F3xSummary(); reportCodeLabelList$: Observable = new Observable(); committeeAccountId: string | null = null; + destroy$: Subject = new Subject(); assignedMemoText: MemoText = new MemoText(); formSubmitted = false; form: FormGroup = this.fb.group({}); - constructor( - private store: Store, + private store: Store, private activatedRoute: ActivatedRoute, protected validateService: ValidateService, protected fb: FormBuilder, @@ -64,28 +65,32 @@ export class ReportLevelMemoComponent implements OnInit { this.validateService.formValidatorForm = this.form; this.reportCodeLabelList$ = this.store.select(selectReportCodeLabelList); - this.store.select(selectCommitteeAccount).subscribe(committeeAccount => - this.committeeAccountId = committeeAccount.committee_id); + this.store + .select(selectCommitteeAccount) + .pipe(takeUntil(this.destroy$)) + .subscribe((committeeAccount) => (this.committeeAccountId = committeeAccount.committee_id)); this.report = this.activatedRoute.snapshot.data['report']; if (this.report && this.report.id) { - this.memoTextService.getForReportId(this.report.id).subscribe(memoTextList => { + this.memoTextService.getForReportId(this.report.id).subscribe((memoTextList) => { if (memoTextList && memoTextList.length > 0) { this.assignedMemoText = memoTextList[0]; - this.form.get(this.text4kFormProperty)?.setValue( - this.assignedMemoText.text4000); + this.form.get(this.text4kFormProperty)?.setValue(this.assignedMemoText.text4000); } }); } } + ngOnDestroy(): void { + this.destroy$.next(true); + this.destroy$.complete(); + } + save() { this.formSubmitted = true; this.form.get(this.recTypeFormProperty)?.setValue('TEXT'); - this.form.get(this.committeeIdFormProperty)?.setValue( - this.committeeAccountId); - this.form.get(this.brSchedFormProperty)?.setValue( - this.report.form_type); + this.form.get(this.committeeIdFormProperty)?.setValue(this.committeeAccountId); + this.form.get(this.brSchedFormProperty)?.setValue(this.report.form_type); const payload: MemoText = MemoText.fromJSON({ ...this.assignedMemoText, @@ -93,9 +98,11 @@ export class ReportLevelMemoComponent implements OnInit { }); payload.report_id = this.report.id; + const nextUrl = `/reports/f3x/submit/step1/${this.report.id}`; + if (this.assignedMemoText.id) { this.memoTextService.update(payload, this.formProperties).subscribe(() => { - this.router.navigateByUrl('/reports'); + this.router.navigateByUrl(nextUrl); this.messageService.add({ severity: 'success', summary: 'Successful', @@ -105,7 +112,7 @@ export class ReportLevelMemoComponent implements OnInit { }); } else { this.memoTextService.create(payload, this.formProperties).subscribe(() => { - this.router.navigateByUrl('/reports'); + this.router.navigateByUrl(nextUrl); this.messageService.add({ severity: 'success', summary: 'Successful', @@ -115,5 +122,4 @@ export class ReportLevelMemoComponent implements OnInit { }); } } - } diff --git a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.ts b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.ts index 6b2162e7c4..4866528c75 100644 --- a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.ts +++ b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.ts @@ -4,7 +4,6 @@ import { FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } fro import { Observable, Subject, takeUntil } from 'rxjs'; import { Store } from '@ngrx/store'; import { MessageService } from 'primeng/api'; -import { refreshCommitteeAccountDetailsAction } from '../../../store/committee-account.actions'; import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; import { LabelUtils, PrimeOptions, StatesCodeLabels, CountryCodeLabels } from 'app/shared/utils/label.utils'; import { ValidateService } from 'app/shared/services/validate.service'; @@ -54,8 +53,6 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { ) {} ngOnInit(): void { - // Refresh committee account details whenever page loads - this.store.dispatch(refreshCommitteeAccountDetailsAction()); this.stateOptions = LabelUtils.getPrimeOptions(StatesCodeLabels); this.countryOptions = LabelUtils.getPrimeOptions(CountryCodeLabels); this.report = this.activatedRoute.snapshot.data['report']; diff --git a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.ts b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.ts index 0521347434..da154746fa 100644 --- a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.ts +++ b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.ts @@ -4,7 +4,6 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Observable, Subject, takeUntil } from 'rxjs'; import { Store } from '@ngrx/store'; import { ConfirmationService, MessageService } from 'primeng/api'; -import { refreshCommitteeAccountDetailsAction } from '../../../store/committee-account.actions'; import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; import { LabelUtils, PrimeOptions, StatesCodeLabels, CountryCodeLabels } from 'app/shared/utils/label.utils'; import { ValidateService } from 'app/shared/services/validate.service'; @@ -55,8 +54,6 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { ) {} ngOnInit(): void { - // Refresh committee account details whenever page loads - this.store.dispatch(refreshCommitteeAccountDetailsAction()); this.stateOptions = LabelUtils.getPrimeOptions(StatesCodeLabels); this.countryOptions = LabelUtils.getPrimeOptions(CountryCodeLabels); diff --git a/front-end/src/app/reports/report-list/report-list.component.html b/front-end/src/app/reports/report-list/report-list.component.html index 7aa7e73109..630f1eebcb 100644 --- a/front-end/src/app/reports/report-list/report-list.component.html +++ b/front-end/src/app/reports/report-list/report-list.component.html @@ -76,12 +76,6 @@
Recent reports
(click)="editItem(item)" [ariaLabel]="'edit ' + displayName(item)" > - Memo Date: Thu, 28 Jul 2022 13:35:54 -0400 Subject: [PATCH 12/13] Set bootstrap package to 5.1.3 and fixed unit test --- front-end/package-lock.json | 54 +++++++++---------- front-end/package.json | 2 +- .../report-level-memo.component.spec.ts | 39 ++++++-------- 3 files changed, 40 insertions(+), 55 deletions(-) diff --git a/front-end/package-lock.json b/front-end/package-lock.json index e0d2f7323e..35bbed84a5 100644 --- a/front-end/package-lock.json +++ b/front-end/package-lock.json @@ -20,7 +20,7 @@ "@ngrx/effects": "^13.0.2", "@ngrx/store": "^13.0.2", "@popperjs/core": "^2.10.2", - "bootstrap": "^5.1.3", + "bootstrap": "5.1.3", "class-transformer": "^0.5.1", "fecfile-validate": "https://github.com/fecgov/fecfile-validate#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", "jwt-decode": "^3.1.2", @@ -4981,21 +4981,15 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz", - "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, "peerDependencies": { - "@popperjs/core": "^2.11.5" + "@popperjs/core": "^2.10.2" } }, "node_modules/brace-expansion": { @@ -5178,9 +5172,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "version": "1.0.30001373", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz", + "integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==", "dev": true, "funding": [ { @@ -6680,9 +6674,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.203", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.203.tgz", - "integrity": "sha512-EG+Llo8SZGZCgErY+PzE9N+Ld/O80243hTufTeg4GbZ1U+Xn92n6ewxKhZjt/bxdF7aS5OXEU7QlRs5uRoTVKw==", + "version": "1.4.204", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.204.tgz", + "integrity": "sha512-5Ojjtw9/c9HCXtMVE6SXVSHSNjmbFOXpKprl6mY/5moLSxLeWatuYA7KTD+RzJMxLRH6yNNQrqGz9p6IoNBMgw==", "dev": true }, "node_modules/emoji-regex": { @@ -18999,9 +18993,9 @@ "dev": true }, "bootstrap": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz", - "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", "requires": {} }, "brace-expansion": { @@ -19130,9 +19124,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "version": "1.0.30001373", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz", + "integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==", "dev": true }, "caseless": { @@ -20249,9 +20243,9 @@ } }, "electron-to-chromium": { - "version": "1.4.203", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.203.tgz", - "integrity": "sha512-EG+Llo8SZGZCgErY+PzE9N+Ld/O80243hTufTeg4GbZ1U+Xn92n6ewxKhZjt/bxdF7aS5OXEU7QlRs5uRoTVKw==", + "version": "1.4.204", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.204.tgz", + "integrity": "sha512-5Ojjtw9/c9HCXtMVE6SXVSHSNjmbFOXpKprl6mY/5moLSxLeWatuYA7KTD+RzJMxLRH6yNNQrqGz9p6IoNBMgw==", "dev": true }, "emoji-regex": { diff --git a/front-end/package.json b/front-end/package.json index 3f66c1e6ba..d825413266 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -35,7 +35,7 @@ "@ngrx/effects": "^13.0.2", "@ngrx/store": "^13.0.2", "@popperjs/core": "^2.10.2", - "bootstrap": "^5.1.3", + "bootstrap": "5.1.3", "class-transformer": "^0.5.1", "fecfile-validate": "https://github.com/fecgov/fecfile-validate#a7d7568e5942c6177b1c5ccf6edbe2e74e6aa245", "jwt-decode": "^3.1.2", diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts index f890ef1785..5a569fff5d 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.spec.ts @@ -17,7 +17,6 @@ import { ToastModule } from 'primeng/toast'; import { of } from 'rxjs'; import { ReportLevelMemoComponent } from './report-level-memo.component'; - describe('ReportLevelMemoComponent', () => { let component: ReportLevelMemoComponent; let fixture: ComponentFixture; @@ -41,7 +40,7 @@ describe('ReportLevelMemoComponent', () => { ReactiveFormsModule, ButtonModule, InputTextareaModule, - RouterTestingModule.withRoutes([]) + RouterTestingModule.withRoutes([]), ], declarations: [ReportLevelMemoComponent], providers: [ @@ -74,7 +73,7 @@ describe('ReportLevelMemoComponent', () => { fixture.detectChanges(); }); - it('should create', () => { + it('should create', () => { const testText4kValue = 'testText4k'; const testMemoText: MemoText = new MemoText(); testMemoText.id = 4; @@ -87,50 +86,42 @@ describe('ReportLevelMemoComponent', () => { testMemoText.text4000 = 'test_text4k'; component.form.addControl('text4000', new FormControl()); component.form.get('text4000')?.setValue(testText4kValue); - spyOn(testMemoTextService, - 'getForReportId').and.returnValue(of([testMemoText])); + spyOn(testMemoTextService, 'getForReportId').and.returnValue(of([testMemoText])); component.ngOnInit(); expect(component).toBeTruthy(); }); - it('save for existing memo text happy path', () => { + it('save for existing memo text happy path', () => { const expectedMessage: Message = { severity: 'success', summary: 'Successful', detail: 'Report Memo Updated', life: 3000, - } - const testMemoTextServiceSpy = spyOn(testMemoTextService, - 'update').and.returnValue(of(new MemoText())); + }; + const testMemoTextServiceSpy = spyOn(testMemoTextService, 'update').and.returnValue(of(new MemoText())); const navigateSpy = spyOn(testRouter, 'navigateByUrl'); - const testMessageServiceSpy = spyOn(testMessageService, - 'add'); + const testMessageServiceSpy = spyOn(testMessageService, 'add'); component.assignedMemoText.id = 1; component.save(); expect(testMemoTextServiceSpy).toHaveBeenCalledTimes(1); - expect(navigateSpy).toHaveBeenCalledWith('/reports'); - expect(testMessageServiceSpy).toHaveBeenCalledOnceWith( - expectedMessage); + expect(navigateSpy).toHaveBeenCalledWith('/reports/f3x/submit/step1/999'); + expect(testMessageServiceSpy).toHaveBeenCalledOnceWith(expectedMessage); }); - it('save for new memo text happy path', () => { + it('save for new memo text happy path', () => { const expectedMessage: Message = { severity: 'success', summary: 'Successful', detail: 'Report Memo Created', life: 3000, - } - const testMemoTextServiceSpy = spyOn(testMemoTextService, - 'create').and.returnValue(of(new MemoText())); + }; + const testMemoTextServiceSpy = spyOn(testMemoTextService, 'create').and.returnValue(of(new MemoText())); const navigateSpy = spyOn(testRouter, 'navigateByUrl'); - const testMessageServiceSpy = spyOn(testMessageService, - 'add'); + const testMessageServiceSpy = spyOn(testMessageService, 'add'); component.assignedMemoText.id = null; component.save(); expect(testMemoTextServiceSpy).toHaveBeenCalledTimes(1); - expect(navigateSpy).toHaveBeenCalledWith('/reports'); - expect(testMessageServiceSpy).toHaveBeenCalledOnceWith( - expectedMessage); + expect(navigateSpy).toHaveBeenCalledWith('/reports/f3x/submit/step1/999'); + expect(testMessageServiceSpy).toHaveBeenCalledOnceWith(expectedMessage); }); - }); From 0bd580bd656f65f1011010ca240ef8d743090cc4 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 28 Jul 2022 13:40:38 -0400 Subject: [PATCH 13/13] Fixed code smell reported by SonarCloud --- .../f3x/report-level-memo/report-level-memo.component.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts index e5f910517c..3cc8d111a7 100644 --- a/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts +++ b/front-end/src/app/reports/f3x/report-level-memo/report-level-memo.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; -import { Subject, takeUntil } from 'rxjs'; +import { Subject, takeUntil, Observable } from 'rxjs'; import { Store } from '@ngrx/store'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { MemoText } from 'app/shared/models/memo-text.model'; @@ -11,7 +11,6 @@ import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; import { selectReportCodeLabelList } from 'app/store/label-lookup.selectors'; import { schema as textSchema } from 'fecfile-validate/fecfile_validate_js/dist/Text'; import { MessageService } from 'primeng/api'; -import { Observable } from 'rxjs'; import { ReportCodeLabelList } from '../../../shared/utils/reportCodeLabels.utils'; @Component({