From 9253778e4d585148bab7fcd54bd194b634168540 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 1 Feb 2023 20:18:53 -0500 Subject: [PATCH 001/115] Move AGGREGATION_GROUPS enum to Transaction model --- front-end/package-lock.json | 12 +- front-end/package.json | 2 +- .../shared/models/scha-transaction.model.ts | 14 +- ...SS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts | 8 +- .../transaction-types/EARMARK_MEMO.model.ts | 3 +- .../EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts | 3 +- ...EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts | 3 +- .../EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts | 3 +- .../EARMARK_RECEIPT.model.ts | 8 +- ...ARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts | 8 +- ...MARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts | 8 +- .../EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts | 8 +- .../INDIVIDUAL_JF_TRANSFER_MEMO.model.ts | 8 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 8 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 8 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 8 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 8 +- ...AL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 8 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 8 +- .../INDIVIDUAL_RECEIPT.model.ts | 8 +- ..._RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts | 8 +- .../INDIVIDUAL_RECOUNT_RECEIPT.model.ts | 8 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 8 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 8 +- ...ER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 8 +- .../JOINT_FUNDRAISING_TRANSFER.model.ts | 8 +- .../OFFSET_TO_OPERATING_EXPENDITURES.model.ts | 8 +- .../OPERATING_EXPENDITURE.model.spec.ts | 27 ++ .../OPERATING_EXPENDITURE.model.ts | 23 ++ ...OMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts | 8 +- .../transaction-types/OTHER_RECEIPT.model.ts | 8 +- .../PAC_EARMARK_MEMO.model.ts | 3 +- .../PAC_EARMARK_RECEIPT.model.ts | 8 +- .../PAC_JF_TRANSFER_MEMO.model.ts | 8 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 8 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 8 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 8 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 8 +- ...AC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 8 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 8 +- .../transaction-types/PAC_RECEIPT.model.ts | 8 +- .../PAC_RECOUNT_RECEIPT.model.ts | 8 +- .../transaction-types/PAC_RETURN.model.ts | 8 +- .../PARTNERSHIP_MEMO.model.ts | 8 +- ...IP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 8 +- ...TIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts | 8 +- .../PARTNERSHIP_RECEIPT.model.ts | 8 +- .../PARTY_JF_TRANSFER_MEMO.model.ts | 8 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 8 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 8 +- ...TY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 8 +- .../transaction-types/PARTY_RECEIPT.model.ts | 8 +- .../PARTY_RECOUNT_RECEIPT.model.ts | 8 +- .../transaction-types/PARTY_RETURN.model.ts | 8 +- .../transaction-types/RETURN_RECEIPT.model.ts | 8 +- .../SchbTransactionType.model.ts | 16 + .../transaction-types/TRANSFER.model.ts | 8 +- .../TRIBAL_JF_TRANSFER_MEMO.model.ts | 8 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 8 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 8 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 8 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 8 +- ...AL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 8 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 8 +- .../transaction-types/TRIBAL_RECEIPT.model.ts | 8 +- .../TRIBAL_RECOUNT_RECEIPT.model.ts | 8 +- .../UNREGISTERED_RECEIPT_FROM_PERSON.model.ts | 8 +- ...STERED_RECEIPT_FROM_PERSON_RETURN.model.ts | 8 +- .../app/shared/models/transaction.model.ts | 13 + .../services/transaction.service.spec.ts | 3 +- .../shared/services/transaction.service.ts | 4 +- .../transaction-container.component.html | 3 + .../transaction-group-b.component.spec.ts | 3 +- .../transaction-group-h.component.html | 62 ++++ .../transaction-group-h.component.spec.ts | 304 ++++++++++++++++++ .../transaction-group-h.component.ts | 34 ++ .../app/transactions/transactions.module.ts | 2 + 77 files changed, 622 insertions(+), 371 deletions(-) create mode 100644 front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts create mode 100644 front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts create mode 100644 front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html create mode 100644 front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts create mode 100644 front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts diff --git a/front-end/package-lock.json b/front-end/package-lock.json index 5f735bbebd..cec74a8c6e 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#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#726e14eec74fec6d04fc00c06cd8235a0f1041d6", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -8219,8 +8219,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", - "integrity": "sha512-CgPU46XI9ieniP2jEnzIL89NQMbsB2/O0pdzPPodyhiqwATw0QF2Zyx+6mTCdfx71LijmVpXfnUSoHpQ7dtjKg==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#726e14eec74fec6d04fc00c06cd8235a0f1041d6", + "integrity": "sha512-mPBKCTbvrDqkvYleaEPn9baubewlLd3Juk8KFGFORGUyMiTtooOV+YeBcfO53cFPNCpjbhwIiSYQvUR8flgB0g==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -23125,9 +23125,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", - "integrity": "sha512-CgPU46XI9ieniP2jEnzIL89NQMbsB2/O0pdzPPodyhiqwATw0QF2Zyx+6mTCdfx71LijmVpXfnUSoHpQ7dtjKg==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#726e14eec74fec6d04fc00c06cd8235a0f1041d6", + "integrity": "sha512-mPBKCTbvrDqkvYleaEPn9baubewlLd3Juk8KFGFORGUyMiTtooOV+YeBcfO53cFPNCpjbhwIiSYQvUR8flgB0g==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#726e14eec74fec6d04fc00c06cd8235a0f1041d6", "requires": { "ajv": "^8.11.0" } diff --git a/front-end/package.json b/front-end/package.json index 8f0309d0f9..0fad517e89 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#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#726e14eec74fec6d04fc00c06cd8235a0f1041d6", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 70f4021d41..b9b1d6b37c 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -1,5 +1,5 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction } from './transaction.model'; +import { Transaction, AggregationGroups } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; @@ -461,15 +461,3 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ], [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], ]; - -export enum AggregationGroups { - GENERAL = 'GENERAL', - LINE_15 = 'LINE_15', - LINE_16 = 'LINE_16', - NATIONAL_PARTY_CONVENTION_ACCOUNT = 'NATIONAL_PARTY_CONVENTION_ACCOUNT', - NATIONAL_PARTY_HEADQUARTERS_ACCOUNT = 'NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', - NATIONAL_PARTY_RECOUNT_ACCOUNT = 'NATIONAL_PARTY_RECOUNT_ACCOUNT', - NON_CONTRIBUTION_ACCOUNT = 'NON_CONTRIBUTION_ACCOUNT', - OTHER_RECEIPTS = 'OTHER_RECEIPTS', - RECOUNT_ACCOUNT = 'RECOUNT_ACCOUNT', -} diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts index a2b5645ba0..c7a65ebd5e 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts index 06aa2becf1..4860a1595a 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts @@ -1,5 +1,6 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/EARMARK_MEMO'; -import { AggregationGroups, SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts index 3b83cf4424..80338c649f 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts @@ -1,5 +1,6 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; -import { AggregationGroups, SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO_CONVENTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts index b65a543b78..a7cc5e1c7f 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts @@ -1,5 +1,6 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; -import { AggregationGroups, SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts index c774e37003..ba0ea5a659 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts @@ -1,5 +1,6 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; -import { AggregationGroups, SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO_RECOUNT_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts index 127c24168f..e7b445b21f 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts @@ -2,12 +2,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/EARMARK_RECEIPT'; import { ContactTypes } from '../contact.model'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS_MINIMAL, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts index 5b45e778b9..3e46da763b 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts @@ -2,12 +2,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_RECEIPTS'; import { ContactTypes } from '../contact.model'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { CANCEL_CONTROL, SAVE_LIST_CONTROL, diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts index bf56e07a30..0fe44ab743 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_RECEIPTS'; import { ContactTypes } from '../contact.model'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { CANCEL_CONTROL, SAVE_LIST_CONTROL, diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts index ceb310ef49..3bea9e7014 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_RECEIPTS'; import { ContactTypes } from '../contact.model'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { CANCEL_CONTROL, SAVE_LIST_CONTROL, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts index 5ef1ce58f0..290c0fe08a 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 942eb67db8..812bbba93e 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index bb393ec11b..5c9b2826e8 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 6fb4ac3a62..76856cb574 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index eec1e2c45c..a9d19cb1d3 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 7dd292f7c3..2c20cc85b1 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index fbc97bd097..2219032433 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts index fae6f5f9e2..a5403d2a4a 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts index 8a72af720a..d6185278e8 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts index 8cabf385bb..a9932446bf 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECOUNT_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 486d352791..406c869293 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 5c7389cc68..49708c0135 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index d08850a970..f6ef0ba9ea 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts index 7028392bd1..3f19ee5654 100644 --- a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JOINT_FUNDRAISING_TRANSFER'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts index 1bf229cb01..3b155ccd0f 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { ContactTypes } from '../contact.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts new file mode 100644 index 0000000000..0d1a3cd0c0 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts @@ -0,0 +1,27 @@ +import { OPERATING_EXPENDITURE } from './OPERATING_EXPENDITURE.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; + +describe('OPERATING_EXPENDITURE', () => { + let transactionType: OPERATING_EXPENDITURE; + + beforeEach(() => { + transactionType = new OPERATING_EXPENDITURE(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('B'); + }); + + it('#factory() should return a SchATransaction', () => { + const txn: SchBTransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA15'); + expect(txn.transaction_type_identifier).toBe(ScheduleBTransactionTypes.OPERATING_EXPENDITURE); + }); + + it('#generatePurposeDescription() should not be defined', () => { + expect((transactionType as TransactionType).generatePurposeDescription).toBe(undefined); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts new file mode 100644 index 0000000000..f0657afd0c --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -0,0 +1,23 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COMMON_DISBURSEMENTS'; +import { AggregationGroups } from '../transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { SchbTransactionType } from './SchbTransactionType.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { ContactTypes } from '../contact.model'; + +export class OPERATING_EXPENDITURE extends SchbTransactionType { + componentGroupId = 'B'; + title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE); + schema = schema; + override contactTypeOptions = [ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL]; + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + + getNewTransaction() { + return SchBTransaction.fromJSON({ + form_type: 'SB21b', + transaction_type_identifier: ScheduleBTransactionTypes.OPERATING_EXPENDITURE, + aggregation_group: AggregationGroups.GENERAL_DISBURSEMENT, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts index 1c3bb2ffa3..05a81039c2 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts index 382e393ad1..c94122ddbc 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts index 42a7742abb..8d9bfcf864 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts @@ -1,5 +1,6 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_EARMARK_MEMO'; -import { AggregationGroups, SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class PAC_EARMARK_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts index 90584c716f..a4a2ce6295 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts @@ -2,12 +2,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_EARMARK_RECEIPT'; import { ContactTypes } from '../contact.model'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS_MINIMAL, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts index ac2dd28a49..16bcfb11db 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index c0bc66e08e..2f894da4c7 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index bc781cbd2e..b98b4cd99b 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 02e6af8f85..9809c57852 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 8b31f1c773..cf30a8421c 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 03fb74db38..6c67b40050 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 6e4d9fb046..ff0b64e15c 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts index 0a9072b7a8..a66ce64a4c 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts index f3362e8b84..bab51dd5cc 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RECOUNT_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts index dc91113305..d3aa9724a7 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts @@ -1,10 +1,6 @@ import { SchaTransactionType } from './SchaTransactionType.model'; -import { - SchATransaction, - ScheduleATransactionTypes, - ScheduleATransactionTypeLabels, - AggregationGroups, -} from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RETURN'; import { TransactionNavigationControls, STANDARD_CONTROLS } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts index 2791cb4fb6..3a08251f72 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 87c6cf2dd5..4705375e7b 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,12 +1,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts index 9226bbcbd2..a0fbf03360 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts index 99941c3211..34ed8a10a3 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 71410ddca4..1f442df2d3 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 80445c38e7..3b501564d4 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index f3c53960b0..b835443639 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 51271c2d3b..30caef000d 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts index b71d8e347e..400ffef9f1 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts index 64d1a717e7..190bbff602 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECOUNT_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts index 640a794eb4..f8be417b5a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RETURN'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts index dbd6d9c2aa..bae8cc076b 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts @@ -1,12 +1,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/RETURN_RECEIPT'; import { ContactTypes } from '../contact.model'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts b/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts new file mode 100644 index 0000000000..7d1008cd90 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts @@ -0,0 +1,16 @@ +import { TransactionType } from './transaction-type.model'; +import { SchBTransaction } from '../schb-transaction.model'; + +export abstract class SchbTransactionType extends TransactionType { + scheduleId = 'B'; + override transaction?: SchBTransaction; + + override generatePurposeDescriptionLabel(): string { + if (this.generatePurposeDescription !== undefined) { + return '(SYSTEM-GENERATED)'; + } else if (this.schema.required.includes('expenditure_purpose_descrip')) { + return '(REQUIRED)'; + } + return '(OPTIONAL)'; + } +} diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts index 478d5287e3..2f6d97d1af 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRANSFER'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts index b171ce64b0..9130956393 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 4a6835801c..ae4a43ad6d 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 45f52a0c0c..09b63e1dd0 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index b1089870cd..88a97a3ab4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 1cf58b3fb8..7105d01ffd 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index d274967615..dcc1a3df77 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 34dec3a603..38b60baff4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts index 03e5fdc007..8af000cbaf 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts index 8675e16f47..41c464051b 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECOUNT_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts index 4a7cfa3c5e..6d03586304 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts @@ -1,11 +1,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_RECEIPT_FROM_PERSON'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts index 7793129e57..21a0604e42 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts @@ -1,9 +1,5 @@ -import { - SchATransaction, - ScheduleATransactionTypes, - ScheduleATransactionTypeLabels, - AggregationGroups, -} from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 9955fa5ac0..86d13c40b9 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -82,3 +82,16 @@ export function hasNoContact(transaction?: Transaction): boolean { export type ScheduleTransaction = SchATransaction | SchBTransaction; export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; + +export enum AggregationGroups { + GENERAL = 'GENERAL', + LINE_15 = 'LINE_15', + LINE_16 = 'LINE_16', + NATIONAL_PARTY_CONVENTION_ACCOUNT = 'NATIONAL_PARTY_CONVENTION_ACCOUNT', + NATIONAL_PARTY_HEADQUARTERS_ACCOUNT = 'NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', + NATIONAL_PARTY_RECOUNT_ACCOUNT = 'NATIONAL_PARTY_RECOUNT_ACCOUNT', + NON_CONTRIBUTION_ACCOUNT = 'NON_CONTRIBUTION_ACCOUNT', + OTHER_RECEIPTS = 'OTHER_RECEIPTS', + RECOUNT_ACCOUNT = 'RECOUNT_ACCOUNT', + GENERAL_DISBURSEMENT = 'GENERAL_DISBURSEMENT', +} diff --git a/front-end/src/app/shared/services/transaction.service.spec.ts b/front-end/src/app/shared/services/transaction.service.spec.ts index 4dfb6e3dfa..cb43a5fbdd 100644 --- a/front-end/src/app/shared/services/transaction.service.spec.ts +++ b/front-end/src/app/shared/services/transaction.service.spec.ts @@ -5,7 +5,8 @@ import { provideMockStore } from '@ngrx/store/testing'; import { environment } from '../../../environments/environment'; import { TransactionType } from '../models/transaction-types/transaction-type.model'; import { ListRestResponse } from '../models/rest-api.model'; -import { SchATransaction, ScheduleATransactionTypes, AggregationGroups } from '../models/scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; +import { AggregationGroups } from '../models/transaction.model'; import { testMockStore } from '../utils/unit-test.utils'; import { TransactionService } from './transaction.service'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 4f87060617..15ced81e8f 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -3,10 +3,10 @@ import { Injectable } from '@angular/core'; import { Observable, of } from 'rxjs'; import { map, tap } from 'rxjs/operators'; import { TableListService } from '../interfaces/table-list-service.interface'; -import { Transaction } from '../models/transaction.model'; +import { Transaction, AggregationGroups } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; -import { SchATransaction, AggregationGroups } from '../models/scha-transaction.model'; +import { SchATransaction } from '../models/scha-transaction.model'; import { SchBTransaction } from '../models/schb-transaction.model'; import { TransactionType } from '../models/transaction-types/transaction-type.model'; diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/transactions/transaction-container/transaction-container.component.html index 235f3b13ef..68f638a259 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.html @@ -28,3 +28,6 @@ + + + diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts index 3b68b4a736..1e6ae90b3d 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts @@ -6,7 +6,8 @@ import { provideMockStore } from '@ngrx/store/testing'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; import { Transaction } from 'app/shared/models/transaction.model'; import { Contact, ContactTypes } from 'app/shared/models/contact.model'; -import { AggregationGroups, SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { AggregationGroups } from 'app/shared/models/transaction.model'; import { NavigationDestination } from 'app/shared/models/transaction-navigation-controls.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html new file mode 100644 index 0000000000..66c6fb9896 --- /dev/null +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html @@ -0,0 +1,62 @@ + + +
+

{{ transactionType?.title }}

+

Contact

+
+
+
+
+ + + +
+
+
+ + + + + + + + +

Address

+ + +

Receipt Information

+ + +

Additional Information

+ +
+ + +
+
+ + diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts new file mode 100644 index 0000000000..84210a4b94 --- /dev/null +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts @@ -0,0 +1,304 @@ +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterTestingModule } from '@angular/router/testing'; +import { provideMockStore } from '@ngrx/store/testing'; +import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { Transaction } from 'app/shared/models/transaction.model'; +import { Contact, ContactTypes } from 'app/shared/models/contact.model'; +import { AggregationGroups } from 'app/shared/models/transaction.model'; +import { SchBTransaction } from 'app/shared/models/schb-transaction.model'; +import { NavigationDestination } from 'app/shared/models/transaction-navigation-controls.model'; +import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; +import { ContactService } from 'app/shared/services/contact.service'; +import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { schema as OFFSET_TO_OPERATING_EXPENDITURES } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; +import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; +import { ButtonModule } from 'primeng/button'; +import { CalendarModule } from 'primeng/calendar'; +import { CheckboxModule } from 'primeng/checkbox'; +import { ConfirmDialogModule } from 'primeng/confirmdialog'; +import { DividerModule } from 'primeng/divider'; +import { DropdownModule } from 'primeng/dropdown'; +import { InputNumberModule } from 'primeng/inputnumber'; +import { InputTextModule } from 'primeng/inputtext'; +import { InputTextareaModule } from 'primeng/inputtextarea'; +import { ToastModule } from 'primeng/toast'; +import { of } from 'rxjs'; +import { environment } from '../../../environments/environment'; +import { SharedModule } from '../../shared/shared.module'; +import { TransactionGroupHComponent } from './transaction-group-h.component'; + +describe('TransactionGroupHComponent', () => { + let httpTestingController: HttpTestingController; + let component: TransactionGroupHComponent; + let fixture: ComponentFixture; + let testContactService: ContactService; + let testConfirmationService: ConfirmationService; + + const transaction = SchBTransaction.fromJSON({ + form_type: 'SA15', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + entity_type: ContactTypes.ORGANIZATION, + contributor_organization_name: 'org name', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + contribution_date: '2022-08-11', + contribution_amount: 1, + contribution_aggregate: 2, + aggregation_group: AggregationGroups.LINE_15, + }); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule, + RouterTestingModule, + FormsModule, + ReactiveFormsModule, + ToastModule, + SharedModule, + DividerModule, + DropdownModule, + CalendarModule, + ButtonModule, + CheckboxModule, + InputNumberModule, + InputTextModule, + InputTextareaModule, + ConfirmDialogModule, + ], + declarations: [TransactionGroupHComponent], + providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], + }).compileComponents(); + testContactService = TestBed.inject(ContactService); + testConfirmationService = TestBed.inject(ConfirmationService); + }); + + beforeEach(() => { + httpTestingController = TestBed.inject(HttpTestingController); + fixture = TestBed.createComponent(TransactionGroupHComponent); + component = fixture.componentInstance; + component.transactionType = { + scheduleId: '', + componentGroupId: '', + contact: undefined, + generatePurposeDescription: () => 'test description', + getNewTransaction: () => { + return {} as Transaction; + }, + title: '', + schema: OFFSET_TO_OPERATING_EXPENDITURES, + transaction: transaction, + isDependentChild: false, + updateParentOnSave: false, + getSchemaName: () => 'foo', + } as TransactionType; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should reset form values when the entity_type changes', () => { + component.form.patchValue({ + contributor_organization_name: 'org name', + contributor_last_name: 'last name', + contributor_first_name: 'first name', + }); + component.form.patchValue({ + entity_type: ContactTypes.INDIVIDUAL, + }); + expect(component.form.get('contributor_organization_name')?.value).toBe(null); + expect(component.form.get('contributor_last_name')?.value).toBe('last name'); + expect(component.form.get('contributor_first_name')?.value).toBe('first name'); + + component.form.patchValue({ + contributor_organization_name: 'org name', + contributor_last_name: 'last name', + contributor_first_name: 'first name', + }); + component.form.patchValue({ + entity_type: ContactTypes.ORGANIZATION, + }); + expect(component.form.get('contributor_organization_name')?.value).toBe('org name'); + expect(component.form.get('contributor_last_name')?.value).toBe(null); + expect(component.form.get('contributor_first_name')?.value).toBe(null); + }); + + it('#save() should save a new org record', () => { + const testContact: Contact = new Contact(); + testContact.id = 'testId'; + spyOn(testContactService, 'create').and.returnValue(of(testContact)); + spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { + if (confirmation.accept) { + return confirmation.accept(); + } + }); + + if (component.transactionType?.transaction) { + component.transactionType.transaction.id = undefined; + } + const testTran = SchBTransaction.fromJSON({ + form_type: 'SA15', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + entity_type: ContactTypes.ORGANIZATION, + contributor_organization_name: 'org name', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + contribution_date: '2022-08-11', + contribution_amount: 1, + contribution_aggregate: 2, + aggregation_group: AggregationGroups.LINE_15, + }); + component.form.patchValue({ ...testTran }); + component.save(NavigationDestination.LIST); + const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); + expect(req.request.method).toEqual('POST'); + httpTestingController.verify(); + }); + + it('#save() should update an existing org record', () => { + const testContact: Contact = new Contact(); + testContact.id = 'testId'; + spyOn(testContactService, 'create').and.returnValue(of(testContact)); + spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { + if (confirmation.accept) { + return confirmation.accept(); + } + }); + + if (component.transactionType?.transaction) { + component.transactionType.transaction.id = '10'; + } + component.form.patchValue({ ...transaction }); + component.save(NavigationDestination.ANOTHER); + const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/10/`); + expect(req.request.method).toEqual('PUT'); + httpTestingController.verify(); + }); + + it('#save() should save a new ind record', () => { + const testContact: Contact = new Contact(); + testContact.id = 'testId'; + spyOn(testContactService, 'create').and.returnValue(of(testContact)); + spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { + if (confirmation.accept) { + return confirmation.accept(); + } + }); + + if (component.transactionType?.transaction) { + component.transactionType.transaction.id = undefined; + } + const testTran = SchBTransaction.fromJSON({ + form_type: 'SA15', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + entity_type: ContactTypes.INDIVIDUAL, + contributor_first_name: 'fn', + contributor_last_name: 'ln', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + contribution_date: '2022-08-11', + contribution_amount: 1, + contribution_aggregate: 2, + aggregation_group: AggregationGroups.LINE_15, + }); + component.form.patchValue({ ...testTran }); + + component.save(NavigationDestination.LIST); + const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); + expect(req.request.method).toEqual('POST'); + httpTestingController.verify(); + }); + + it('#save() should save a new com record', () => { + const testContact: Contact = new Contact(); + testContact.id = 'testId'; + spyOn(testContactService, 'create').and.returnValue(of(testContact)); + spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { + if (confirmation.accept) { + return confirmation.accept(); + } + }); + + if (component.transactionType?.transaction) { + component.transactionType.transaction.id = undefined; + } + const testTran = SchBTransaction.fromJSON({ + form_type: 'SA15', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + entity_type: ContactTypes.COMMITTEE, + contributor_organization_name: 'org name', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + contribution_date: '2022-08-11', + contribution_amount: 1, + contribution_aggregate: 2, + aggregation_group: AggregationGroups.LINE_15, + }); + component.form.patchValue({ ...testTran }); + component.save(NavigationDestination.LIST); + const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); + expect(req.request.method).toEqual('POST'); + httpTestingController.verify(); + }); + + it('#save() should not save an invalid record', () => { + component.form.patchValue({ ...transaction, ...{ contributor_state: 'not-valid' } }); + component.save(NavigationDestination.LIST); + expect(component.form.invalid).toBe(true); + httpTestingController.expectNone(`${environment.apiUrl}/transactions/schedule-a/1/`); + httpTestingController.verify(); + }); + + it('#save() should not save an invalid org record', () => { + const testContact: Contact = new Contact(); + testContact.id = 'testId'; + if (component.transactionType?.transaction) { + component.transactionType.transaction.contact = testContact; + } + spyOn(testContactService, 'create').and.returnValue(of(testContact)); + spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { + if (confirmation.accept) { + return confirmation.accept(); + } + }); + + if (component.transactionType?.transaction) { + component.transactionType.transaction.id = undefined; + } + const testTran = SchBTransaction.fromJSON({ + form_type: 'SA15', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + entity_type: ContactTypes.INDIVIDUAL, + contribution_amount: 1, + contribution_aggregate: undefined, // This field is required so the txn is invalid + aggregation_group: AggregationGroups.LINE_15, + }); + component.form.patchValue({ ...testTran }); + component.save(NavigationDestination.LIST); + expect(component.form.invalid).toBe(true); + httpTestingController.expectNone(`${environment.apiUrl}/transactions/schedule-a/1/`); + httpTestingController.verify(); + }); +}); diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts new file mode 100644 index 0000000000..ff5cd6dac2 --- /dev/null +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts @@ -0,0 +1,34 @@ +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { TransactionTypeBaseComponent } from 'app/shared/components/transaction-type-base/transaction-type-base.component'; +import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; +import { ContactTypeLabels, ContactTypes } from '../../shared/models/contact.model'; + +@Component({ + selector: 'app-transaction-group-h', + templateUrl: './transaction-group-h.component.html', +}) +export class TransactionGroupHComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { + formProperties: string[] = [ + 'entity_type', + 'contributor_organization_name', + 'contributor_last_name', + 'contributor_first_name', + 'contributor_middle_name', + 'contributor_prefix', + 'contributor_suffix', + 'contributor_street_1', + 'contributor_street_2', + 'contributor_city', + 'contributor_state', + 'contributor_zip', + 'contribution_date', + 'contribution_amount', + 'contribution_aggregate', + 'contribution_purpose_descrip', + 'memo_code', + 'memo_text_input', + ]; + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => + [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) + ); +} diff --git a/front-end/src/app/transactions/transactions.module.ts b/front-end/src/app/transactions/transactions.module.ts index 18fed82eb6..4f0bafcc7e 100644 --- a/front-end/src/app/transactions/transactions.module.ts +++ b/front-end/src/app/transactions/transactions.module.ts @@ -26,6 +26,7 @@ import { TransactionGroupDComponent } from './transaction-group-d/transaction-gr import { TransactionGroupEComponent } from './transaction-group-e/transaction-group-e.component'; import { TransactionGroupFComponent } from './transaction-group-f/transaction-group-f.component'; import { TransactionGroupGComponent } from './transaction-group-g/transaction-group-g.component'; +import { TransactionGroupHComponent } from './transaction-group-h/transaction-group-h.component'; import { TransactionGroupAgComponent } from './transaction-group-ag/transaction-group-ag.component'; import { TransactionGroupGgComponent } from './transaction-group-gg/transaction-group-gg.component'; import { TransactionGroupFgComponent } from './transaction-group-fg/transaction-group-fg.component'; @@ -46,6 +47,7 @@ import { TransactionsRoutingModule } from './transactions-routing.module'; TransactionGroupEComponent, TransactionGroupFComponent, TransactionGroupGComponent, + TransactionGroupHComponent, TransactionGroupAgComponent, TransactionGroupGgComponent, TransactionGroupFgComponent, From 7c789936ad626bb3f87a842c2a1445c80a02378c Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 2 Feb 2023 10:17:00 -0500 Subject: [PATCH 002/115] Updated default entity_type setting --- .../transaction-form.utils.ts | 9 +++++- .../shared/models/schb-transaction.model.ts | 3 ++ .../OFFSET_TO_OPERATING_EXPENDITURES.model.ts | 2 +- .../OPERATING_EXPENDITURE.model.ts | 2 +- .../transaction-type.model.ts | 3 +- .../shared/utils/transaction-type.utils.ts | 7 +++++ .../transaction-group-h.component.ts | 31 ++++++++++--------- 7 files changed, 38 insertions(+), 19 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 5298e053fb..cc3bae6d5d 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -125,8 +125,15 @@ export class TransactionFormUtils { form.markAsPristine(); form.markAsUntouched(); + // Override the default entity_type value if called for by the defaultContactTypeOption + // in the TransactionType + let defaultContactTypeOption: string = contactTypeOptions[0]?.code; + if (transactionType?.defaultContactTypeOption) { + defaultContactTypeOption = transactionType.defaultContactTypeOption; + } + form.patchValue({ - entity_type: contactTypeOptions[0]?.code, + entity_type: defaultContactTypeOption, contribution_aggregate: '0', memo_code: this.getMemoCodeConstant(transactionType), contribution_purpose_descrip: transactionType?.generatePurposeDescription?.() || '', diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 09e9c05eec..9783cf8ea1 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -3,6 +3,7 @@ import { Transaction } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; +import { AggregationGroups } from './transaction.model'; export class SchBTransaction extends Transaction { back_reference_tran_id_number: string | undefined; @@ -23,6 +24,8 @@ export class SchBTransaction extends Transaction { election_other_description: string | undefined; @Transform(BaseModel.dateTransform) expenditure_date: Date | undefined; expenditure_amount: number | undefined; + aggregate_amount: number | undefined; + aggregation_group: AggregationGroups | undefined; semi_annual_refunded_bundled_amt: number | undefined; expenditure_purpose_descrip: string | undefined; category_code: string | undefined; diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts index 3b155ccd0f..fb69ca0800 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts @@ -10,7 +10,7 @@ export class OFFSET_TO_OPERATING_EXPENDITURES extends SchaTransactionType { componentGroupId = 'B'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES); schema = schema; - override contactTypeOptions = [ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL]; + override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index f0657afd0c..abed27485e 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -10,7 +10,7 @@ export class OPERATING_EXPENDITURE extends SchbTransactionType { componentGroupId = 'B'; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE); schema = schema; - override contactTypeOptions = [ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL]; + override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts index 1a73d678ba..2bbe430ab9 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts @@ -14,7 +14,8 @@ export abstract class TransactionType { abstract schema: JsonSchema; // FEC validation JSON schema isDependentChild = false; // When set to true, the parent transaction of the transaction is used to generate UI form entry page updateParentOnSave = false; // Set to true when the parent transaction may be affected by a change in the transaction - contactTypeOptions?: ContactType[]; + contactTypeOptions?: ContactType[]; // Override the default list of contact types in the transaction component + defaultContactTypeOption?: ContactType; // Set this to the default contact type (entity type) of the form select box if it is other than the first contact type in the contactTypeOptions list transaction?: Transaction; childTransactionType?: TransactionType; subTransactionTypes?: ScheduleTransactionTypes[]; // TransactionTypes displayed in dropdown to choose from when creating a child transaction diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 6c50584efc..8481491933 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -1,3 +1,4 @@ +// Schedule A ///////////////////////////////////////////////////// import { BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT } from '../models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model'; import { EARMARK_MEMO } from '../models/transaction-types/EARMARK_MEMO.model'; import { EARMARK_RECEIPT } from '../models/transaction-types/EARMARK_RECEIPT.model'; @@ -62,8 +63,12 @@ import { EARMARK_MEMO_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/E import { EARMARK_MEMO_CONVENTION_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model'; import { EARMARK_MEMO_RECOUNT_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model'; +// Schedule B ///////////////////////////////////////////////////// +import { OPERATING_EXPENDITURE } from '../models/transaction-types/OPERATING_EXPENDITURE.model'; + // prettier-ignore const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/no-explicit-any + // Schedule A ///////////////////////////////////////////////////// EARMARK_RECEIPT, EARMARK_MEMO, INDIVIDUAL_JF_TRANSFER_MEMO, @@ -126,6 +131,8 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ EARMARK_MEMO_HEADQUARTERS_ACCOUNT, EARMARK_MEMO_CONVENTION_ACCOUNT, EARMARK_MEMO_RECOUNT_ACCOUNT, + // Schedule B ///////////////////////////////////////////////////// + OPERATING_EXPENDITURE, } export class TransactionTypeUtils { diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts index ff5cd6dac2..4ffde89f40 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts @@ -10,23 +10,24 @@ import { ContactTypeLabels, ContactTypes } from '../../shared/models/contact.mod export class TransactionGroupHComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { formProperties: string[] = [ 'entity_type', - 'contributor_organization_name', - 'contributor_last_name', - 'contributor_first_name', - 'contributor_middle_name', - 'contributor_prefix', - 'contributor_suffix', - 'contributor_street_1', - 'contributor_street_2', - 'contributor_city', - 'contributor_state', - 'contributor_zip', - 'contribution_date', - 'contribution_amount', - 'contribution_aggregate', - 'contribution_purpose_descrip', + 'payee_organization_name', + 'payee_last_name', + 'payee_first_name', + 'payee_middle_name', + 'payee_prefix', + 'payee_suffix', + 'payee_street_1', + 'payee_street_2', + 'payee_city', + 'payee_state', + 'payee_zip', + 'expenditure_date', + 'expenditure_amount', + 'aggregate_amount', + 'expenditure_purpose_descrip', 'memo_code', 'memo_text_input', + 'category_code', ]; override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) From 6dc75abaf4c7ecfff45dfb1d5aa6cd56a15a994a Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 2 Feb 2023 14:17:31 -0500 Subject: [PATCH 003/115] Add dynamic assignment of template variables --- .../additional-info-input.component.html | 14 +++---- .../additional-info-input.component.ts | 2 +- .../address-input.component.html | 32 +++++++-------- .../amount-input/amount-input.component.html | 28 ++++++------- .../components/inputs/base-input.component.ts | 3 ++ .../committee-input.component.html | 17 +++----- .../employer-input.component.html | 12 +++--- .../name-input/name-input.component.html | 30 +++++++------- .../double-transaction-type-base.component.ts | 11 ++++- .../transaction-type-base.component.ts | 15 +++++-- .../shared/models/scha-transaction.model.ts | 27 ++++++++++++- .../shared/models/schb-transaction.model.ts | 28 ++++++++++++- .../OPERATING_EXPENDITURE.model.ts | 2 +- .../app/shared/models/transaction.model.ts | 35 +++++++++++++++- .../transaction-container.component.html | 6 +-- .../transaction-group-a.component.html | 22 ++++++++-- .../transaction-group-ag.component.html | 40 +++++++++++++++---- .../transaction-group-b.component.html | 17 ++++++-- .../transaction-group-c.component.html | 23 +++++++++-- .../transaction-group-d.component.html | 11 ++++- .../transaction-group-e.component.html | 11 ++++- .../transaction-group-f.component.html | 11 ++++- .../transaction-group-fg.component.html | 29 +++++++++++--- .../transaction-group-g.component.html | 23 +++++++++-- .../transaction-group-gg.component.html | 36 ++++++++++++++--- .../transaction-group-h.component.html | 17 ++++++-- 26 files changed, 372 insertions(+), 130 deletions(-) diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index 036ccac4f9..3fe6fb8979 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -1,25 +1,23 @@
- + {{ purposeDescriptionLabelNotice }}
@@ -35,11 +33,11 @@ [cols]="30" pInputTextarea [autoResize]="true" - formControlName="memo_text_input" + [formControlName]="formTemplateMap['memo_text_input']" >
diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts index 5ae158560b..f95a480b7e 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts @@ -8,6 +8,6 @@ import { BaseInputComponent } from '../base-input.component'; }) export class AdditionalInfoInputComponent extends BaseInputComponent { @Input() descriptionIsSystemGenerated = false; - @Input() contributionPurposeDescriptionLabel = ''; + @Input() purposeDescriptionLabel = ''; @Input() purposeDescriptionLabelNotice?: string; } diff --git a/front-end/src/app/shared/components/inputs/address-input/address-input.component.html b/front-end/src/app/shared/components/inputs/address-input/address-input.component.html index 1b955af894..166d26cd83 100644 --- a/front-end/src/app/shared/components/inputs/address-input/address-input.component.html +++ b/front-end/src/app/shared/components/inputs/address-input/address-input.component.html @@ -2,22 +2,22 @@
- - + +
- - + +
@@ -26,21 +26,21 @@
- - + +
- +
- - + +
diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html index ea379378f2..a166270ae3 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html @@ -2,15 +2,11 @@
- - + +
@@ -22,7 +18,7 @@
- +
- +
- - + +
- - + +
diff --git a/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html b/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html index 375b10dee0..04a385f91e 100644 --- a/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html +++ b/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html @@ -2,22 +2,22 @@
- - + +
- - + +
diff --git a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html index b33577875f..0717e2b5f5 100644 --- a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html +++ b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html @@ -2,33 +2,33 @@
- - + +
- - + +
- - + +
@@ -37,22 +37,22 @@
- - + +
- - + +
diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 4e6c2185aa..c4f7123ac8 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -1,9 +1,13 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; -import { ScheduleATransactionTypes, SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { + ScheduleATransactionTypes, + SchATransaction, + ScheduleAFormTemplateMap, +} from 'app/shared/models/scha-transaction.model'; import { NavigationDestination } from 'app/shared/models/transaction-navigation-controls.model'; -import { Transaction } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleTemplateMapType } from 'app/shared/models/transaction.model'; import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; import { SelectItem } from 'primeng/api'; @@ -37,6 +41,7 @@ export abstract class DoubleTransactionTypeBaseComponent childContactId$: Subject = new BehaviorSubject(''); childContributionPurposeDescriptionLabel = ''; childNegativeAmountValueOnly = false; + childFormTemplateMap: ScheduleTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates override ngOnInit(): void { // Initialize primary form. @@ -56,6 +61,8 @@ export abstract class DoubleTransactionTypeBaseComponent } childOnInit() { + this.childFormTemplateMap = Transaction.getFormTemplateMap(this.transactionType?.childTransactionType); + // Override contact type options if present in transactionType if (this.transactionType?.childTransactionType && this.transactionType.childTransactionType.contactTypeOptions) { this.childContactTypeOptions = LabelUtils.getPrimeOptions( diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index d213b14a49..919ae6cf70 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -1,7 +1,11 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; -import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; +import { + SchATransaction, + ScheduleATransactionTypes, + ScheduleAFormTemplateMap, +} from 'app/shared/models/scha-transaction.model'; import { NavigationAction, NavigationControl, @@ -9,7 +13,7 @@ import { TransactionNavigationControls, } from 'app/shared/models/transaction-navigation-controls.model'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleTemplateMapType } from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; @@ -36,9 +40,10 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy contactId$: Subject = new BehaviorSubject(''); formSubmitted = false; memoItemHelpText = 'The dollar amount in a memo item is not incorporated into the total figure for the schedule.'; - contributionPurposeDescriptionLabel = ''; + purposeDescriptionLabel = ''; childTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; negativeAmountValueOnly = false; + formTemplateMap: ScheduleTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates form: FormGroup = this.fb.group({}); @@ -60,6 +65,8 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } parentOnInit() { + this.formTemplateMap = Transaction.getFormTemplateMap(this.transactionType); + // Override contact type options if present in transactionType if (this.transactionType && this.transactionType.contactTypeOptions) { this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, this.transactionType.contactTypeOptions); @@ -79,7 +86,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } if (this.transactionType?.generatePurposeDescriptionLabel) { - this.contributionPurposeDescriptionLabel = this.transactionType.generatePurposeDescriptionLabel(); + this.purposeDescriptionLabel = this.transactionType.generatePurposeDescriptionLabel(); } } diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index b9b1d6b37c..38278cc4ef 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -1,5 +1,5 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction, AggregationGroups } from './transaction.model'; +import { Transaction, AggregationGroups, ScheduleTemplateMapType } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; @@ -461,3 +461,28 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ], [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], ]; + +// Mapping of schedule fields to the group input component form templates +export const ScheduleAFormTemplateMap: ScheduleTemplateMapType = { + last_name: 'contributor_last_name', + first_name: 'contributor_first_name', + middle_name: 'contributor_middle_name', + prefix: 'contributor_prefix', + suffix: 'contributor_suffix', + street_1: 'contributor_street_1', + street_2: 'contributor_street_2', + city: 'contributor_city', + state: 'contributor_state', + zip: 'contributor_zip', + employer: 'contributor_employer', + occupation: 'contributor_occupation', + organization_name: 'contributor_organization_name', + committee_fec_id: 'donor_committee_fec_id', + date: 'contribution_date', + memo_code: 'memo_code', + amount: 'contribution_amount', + aggregate: 'contribution_aggregate', + purpose_descrip: 'contribution_purpose_descrip', + purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', + memo_text_input: 'memo_text_input', +}; diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 9783cf8ea1..5ec6b9e23a 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -1,9 +1,8 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction } from './transaction.model'; +import { Transaction, AggregationGroups, ScheduleTemplateMapType } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; -import { AggregationGroups } from './transaction.model'; export class SchBTransaction extends Transaction { back_reference_tran_id_number: string | undefined; @@ -276,3 +275,28 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO, 'Payroll Memo'], [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_VOID, 'Void of 100% Federal Election Activity'], ]; + +// Mapping of schedule fields to the group input component form templates +export const ScheduleBFormTemplateMap: ScheduleTemplateMapType = { + last_name: 'payee_last_name', + first_name: 'payee_first_name', + middle_name: 'payee_middle_name', + prefix: 'payee_prefix', + suffix: 'payee_suffix', + street_1: 'payee_street_1', + street_2: 'payee_street_2', + city: 'payee_city', + state: 'payee_state', + zip: 'payee_zip', + employer: '', + occupation: '', + organization_name: 'payee_organization_name', + committee_fec_id: 'beneficiary_committee_fec_id', + date: 'expenditure_date', + memo_code: 'memo_code', + amount: 'expenditure_amount', + aggregate: 'aggregate_amount', + purpose_descrip: 'expenditure_purpose_descrip', + purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', + memo_text_input: 'memo_text_input', +}; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index abed27485e..ceec28c8ba 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -7,7 +7,7 @@ import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction import { ContactTypes } from '../contact.model'; export class OPERATING_EXPENDITURE extends SchbTransactionType { - componentGroupId = 'B'; + componentGroupId = 'H'; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE); schema = schema; override defaultContactTypeOption = ContactTypes.ORGANIZATION; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 86d13c40b9..99dd8e6fd8 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -1,8 +1,8 @@ import { BaseModel } from './base.model'; import { Contact } from './contact.model'; import { MemoText } from './memo-text.model'; -import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; -import { SchBTransaction, ScheduleBTransactionTypes } from './schb-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes, ScheduleAFormTemplateMap } from './scha-transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBFormTemplateMap } from './schb-transaction.model'; import { ValidateUtils } from '../utils/validate.utils'; import { TransactionType } from './transaction-types/transaction-type.model'; import { Type } from 'class-transformer'; @@ -71,6 +71,13 @@ export abstract class Transaction extends BaseModel { throw new Error('No TRANSACTION_TYPE_IDENTIFIER found when setting Meta Properties'); } } + + static getFormTemplateMap(transactionType: TransactionType | undefined): ScheduleTemplateMapType { + if (!transactionType) throw new Error('getFormTemplateMap() missing transaction type'); + if (transactionType.scheduleId === 'A') return ScheduleAFormTemplateMap; + if (transactionType.scheduleId === 'B') return ScheduleBFormTemplateMap; + throw new Error(`Missing form template map for ${transactionType.transaction?.transaction_type_identifier}`); + } } export function isNewTransaction(transaction?: Transaction): boolean { @@ -83,6 +90,30 @@ export function hasNoContact(transaction?: Transaction): boolean { export type ScheduleTransaction = SchATransaction | SchBTransaction; export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; +export type ScheduleTemplateMapType = { + last_name: string; + first_name: string; + middle_name: string; + prefix: string; + suffix: string; + street_1: string; + street_2: string; + city: string; + state: string; + zip: string; + employer: string; + occupation: string; + organization_name: string; + committee_fec_id: string; + date: string; + memo_code: string; + amount: string; + aggregate: string; + purpose_descrip: string; + purposeDescripLabel: string; + memo_text_input: string; +}; + export enum AggregationGroups { GENERAL = 'GENERAL', LINE_15 = 'LINE_15', diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/transactions/transaction-container/transaction-container.component.html index 68f638a259..c0b99fd8ca 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.html @@ -22,12 +22,12 @@ - - - + + + diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html index 9395e9601c..8934b9fe19 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html @@ -18,18 +18,31 @@

Contact

- +

Address

- +

Employer

- +

Receipt Information

@@ -38,8 +51,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html index 68d1ce5d22..aaf871d0e7 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html @@ -28,18 +28,31 @@

Contact

- +

Address

- +

Employer

- +

Receipt Information

@@ -48,8 +61,9 @@

Additional Information

This type of receipt requires a memo transaction

@@ -88,30 +102,41 @@

Conduit

- +

Address

Employer

- +

Receipt Information

Additional Information diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html index 66c6fb9896..238ab47457 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html @@ -24,20 +24,30 @@

Contact

- +

Address

- +

Receipt Information

@@ -46,8 +56,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html index 718a80286a..28b23c3ebc 100644 --- a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html +++ b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html @@ -24,24 +24,38 @@

Contact

- +

Address

- + - +

Receipt Information

@@ -50,8 +64,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html index 86aa2cb931..44c8d271f8 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html @@ -23,16 +23,22 @@

Contact

Address

- +

Receipt Information

@@ -41,8 +47,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html index 553ae007fb..297ffcac10 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html @@ -23,17 +23,23 @@

Contact

Address

- +

Receipt Information

@@ -42,8 +48,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html index 11a3c4c885..f1ba98d987 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html @@ -23,17 +23,23 @@

Contact

Address

- +

Receipt Information

@@ -42,8 +48,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html index aba3a13c19..574f166ad9 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html @@ -31,18 +31,24 @@

Contact

Address

- +

Receipt Information

@@ -51,8 +57,9 @@

Additional Information

This type of receipt requires a memo transaction

@@ -91,30 +98,41 @@

Conduit

- +

Address

Employer

- +

Receipt Information

Additional Information diff --git a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html index 718a80286a..28b23c3ebc 100644 --- a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html +++ b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html @@ -24,24 +24,38 @@

Contact

- +

Address

- + - +

Receipt Information

@@ -50,8 +64,9 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html index 866f012c3c..1044bbffd3 100644 --- a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html +++ b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html @@ -30,30 +30,41 @@

Contact

- +

Address

Employer

- +

Receipt Information

@@ -62,8 +73,9 @@

Additional Information

@@ -99,30 +111,41 @@

Conduit

- +

Address

Employer

- +

Receipt Information

Additional Information diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html index 66c6fb9896..238ab47457 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html @@ -24,20 +24,30 @@

Contact

- +

Address

- +

Receipt Information

@@ -46,8 +56,9 @@

Additional Information

From 44c24558c78272c102db30edc426e464c109892f Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Thu, 2 Feb 2023 14:44:58 -0500 Subject: [PATCH 004/115] Updates validator commit hash --- front-end/package-lock.json | 12 ++++++------ front-end/package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/front-end/package-lock.json b/front-end/package-lock.json index 5f735bbebd..8f839cc6a2 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#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#4d1791cc60495726d8d362c708ebac6080d1435b", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -8219,8 +8219,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", - "integrity": "sha512-CgPU46XI9ieniP2jEnzIL89NQMbsB2/O0pdzPPodyhiqwATw0QF2Zyx+6mTCdfx71LijmVpXfnUSoHpQ7dtjKg==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#4d1791cc60495726d8d362c708ebac6080d1435b", + "integrity": "sha512-okNqNYaQnVvWl8fnfbPLCnJwbVQgTWUCtJVO7F/3PUYUhzLy8H2jt9eapWSJ9G1z3inBlCJnfH9PHFpw21NgEg==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -23125,9 +23125,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", - "integrity": "sha512-CgPU46XI9ieniP2jEnzIL89NQMbsB2/O0pdzPPodyhiqwATw0QF2Zyx+6mTCdfx71LijmVpXfnUSoHpQ7dtjKg==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#4d1791cc60495726d8d362c708ebac6080d1435b", + "integrity": "sha512-okNqNYaQnVvWl8fnfbPLCnJwbVQgTWUCtJVO7F/3PUYUhzLy8H2jt9eapWSJ9G1z3inBlCJnfH9PHFpw21NgEg==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#4d1791cc60495726d8d362c708ebac6080d1435b", "requires": { "ajv": "^8.11.0" } diff --git a/front-end/package.json b/front-end/package.json index 8f0309d0f9..4530e6ad52 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#5e102d5ca2dbe965f09fdf66e7d83c88c6cc7976", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#4d1791cc60495726d8d362c708ebac6080d1435b", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", From 0c9c793f1d65814734d31c7da79f3ca204426100 Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Thu, 2 Feb 2023 15:26:06 -0500 Subject: [PATCH 005/115] Adds the Partnership Recount Account Receipt and its Memo --- .../shared/models/scha-transaction.model.ts | 4 +++ ...SHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts | 32 +++++++++++++++++ ...RTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts | 34 ++++++++++++++++++ ...RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts | 28 +++++++++++++++ ...SHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts | 36 +++++++++++++++++++ .../shared/utils/transaction-type.utils.ts | 4 +++ .../transaction-type-picker.component.ts | 1 + 7 files changed, 139 insertions(+) create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 10ea5efafa..9beab56314 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -233,6 +233,7 @@ export enum ScheduleATransactionTypes { EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_CONVENTION_ACCOUNT', EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', + PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT = 'PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', // Child transactiion types PAC_EARMARK_MEMO = 'PAC_EARMARK_MEMO', EARMARK_MEMO = 'EARMARK_MEMO', @@ -253,6 +254,7 @@ export enum ScheduleATransactionTypes { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', PARTNERSHIP_MEMO = 'PARTNERSHIP_MEMO', + PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO = 'PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO', EARMARK_MEMO_HEADQUARTERS_ACCOUNT = 'EARMARK_MEMO_HEADQUARTERS_ACCOUNT', EARMARK_MEMO_CONVENTION_ACCOUNT = 'EARMARK_MEMO_CONVENTION_ACCOUNT', EARMARK_MEMO_RECOUNT_ACCOUNT = 'EARMARK_MEMO_RECOUNT_ACCOUNT', @@ -427,6 +429,7 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, 'Partnership National Party Recount/Legal Proceedings Account', ], + [ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, 'Partnership Recount Account Receipt'], [ ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, 'Individual National Party Recount/Legal Proceedings Account JF Transfer Memo', @@ -460,6 +463,7 @@ export const ScheduleATransactionTypeLabels: LabelList = [ 'Partnership National Party Recount/Legal Proceedings Account Memo', ], [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], + [ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, 'Partnership Recount Account Receipt Memo'], ]; export enum AggregationGroups { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts new file mode 100644 index 0000000000..a89c771815 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts @@ -0,0 +1,32 @@ +import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT } from './PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; + +describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', () => { + let transactionType: PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT; + + beforeEach(() => { + transactionType = new PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('D'); + }); + + it('#factory() should return a SchATransaction', () => { + const txn: SchATransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT); + }); + + it('#generatePurposeDescription() should generate a string', () => { + transactionType.transaction = transactionType.getNewTransaction(); + let descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Recount Account (Partnership attributions do not require itemization)'); + + transactionType.transaction.children = [transactionType.getNewTransaction()]; + descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Recount Account (See Partnership Attribution(s) below)'); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts new file mode 100644 index 0000000000..fb621642d7 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts @@ -0,0 +1,34 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT'; +import { + AggregationGroups, + SchATransaction, + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes, +} from '../scha-transaction.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { SchaTransactionType } from './SchaTransactionType.model'; + +export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchaTransactionType { + componentGroupId = 'D'; + title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT); + schema = schema; + override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO]; + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + override purposeDescriptionLabelNotice = + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Recount Account (Partnership attributions do not require itemization)". If a Partnership Memo is added, it will read "Recount Account (See Partnership Attribution(s) below)".'; + override generatePurposeDescription(): string { + if (this.transaction?.children && this.transaction?.children.length > 0) { + return 'Recount Account (See Partnership Attribution(s) below)'; + } + return 'Recount Account (Partnership attributions do not require itemization)'; + } + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA17', + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, + aggregation_group: AggregationGroups.RECOUNT_ACCOUNT, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts new file mode 100644 index 0000000000..d33e2c5310 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts @@ -0,0 +1,28 @@ +import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO } from './PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; + +describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO', () => { + let transactionType: PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO; + + beforeEach(() => { + transactionType = new PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('A'); + }); + + it('#factory() should return a SchATransaction', () => { + const txn: SchATransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO); + }); + + it('#generatePurposeDescription() should generate a string', () => { + transactionType.transaction = transactionType.getNewTransaction(); + const descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Recount Account Partnership Attribution'); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts new file mode 100644 index 0000000000..be609c4e11 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts @@ -0,0 +1,36 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO'; +import { + AggregationGroups, + SchATransaction, + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes, +} from '../scha-transaction.model'; +import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { SchaTransactionType } from './SchaTransactionType.model'; + +export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchaTransactionType { + componentGroupId = 'A'; + title = LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO + ); + schema = schema; + override updateParentOnSave = true; + override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO]; + override navigationControls: TransactionNavigationControls = getChildNavigationControls( + LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO) + ); + + override generatePurposeDescription(): string { + return 'Recount Account Partnership Attribution'; + } + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA17', + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, + aggregation_group: AggregationGroups.RECOUNT_ACCOUNT, + }); + } +} diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 6c50584efc..24c311ecba 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -61,6 +61,8 @@ import { EARMARK_RECEIPT_CONVENTION_ACCOUNT } from '../models/transaction-types/ import { EARMARK_MEMO_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model'; import { EARMARK_MEMO_CONVENTION_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model'; import { EARMARK_MEMO_RECOUNT_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model'; +import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT } from '../models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model'; +import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO } from '../models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model'; // prettier-ignore const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/no-explicit-any @@ -126,6 +128,8 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ EARMARK_MEMO_HEADQUARTERS_ACCOUNT, EARMARK_MEMO_CONVENTION_ACCOUNT, EARMARK_MEMO_RECOUNT_ACCOUNT, + PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, + PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, } export class TransactionTypeUtils { diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index 64a791b094..dd11185fb2 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -143,6 +143,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, + ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, ]; case ScheduleBTransactionGroups.OPERATING_EXPENDITURES: return [ From a2e1f69082cc802fd9c59d2cce5917e517f7a464 Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Thu, 2 Feb 2023 15:32:05 -0500 Subject: [PATCH 006/115] Adds the new receipts to cypress --- .../support/transaction_nav_trees.spec.ts | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/front-end/cypress/support/transaction_nav_trees.spec.ts b/front-end/cypress/support/transaction_nav_trees.spec.ts index 5dc45b9360..35bcfe2f2f 100644 --- a/front-end/cypress/support/transaction_nav_trees.spec.ts +++ b/front-end/cypress/support/transaction_nav_trees.spec.ts @@ -51,7 +51,8 @@ export type SchATransactionName = | 'Party Returned/Bounced Receipt' | 'Earmark Receipt for Recount/Legal Proceedings Account (Contribution)' | 'Earmark Receipt for Pres. Nominating Convention Account (Contribution)' - | 'Earmark Receipt for Headquarters Buildings Account (Contribution)'; + | 'Earmark Receipt for Headquarters Buildings Account (Contribution)' + | 'Partnership Recount Account Receipt'; export type ChildTransactionName = | 'PAC Joint Fundraising Transfer Memo' @@ -76,7 +77,8 @@ export type ChildTransactionName = | 'Partnership National Party Recount/Legal Proceedings Account Memo' | 'Earmark Memo for Recount Account (Contribution)' | 'Earmark Memo for Convention Account (Contribution)' - | 'Earmark Memo for Headquarters Account (Contribution)'; + | 'Earmark Memo for Headquarters Account (Contribution)' + | 'Partnership Recount Account Receipt Memo'; export type TransactionGroup = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'AG' | 'FG'; @@ -992,6 +994,30 @@ const partnershipMemo: ChildTransactionForm = { }, }; +const partnershipRecountAccountReceipt: TransactionForm = { + transaction_name: 'Partnership Recount Account Receipt', + transaction_category: 'OTHER', + transaction_group: 'D', + aggregation_group: 'RECOUNT_ACCOUNT', + ...entityOrganization, + fields: { + ...memoFields, + ...purposeDescriptionFieldsRequired, + }, +}; + +const partnershipRecountAccountReceiptMemo: ChildTransactionForm = { + transaction_name: 'Partnership Recount Account Receipt Memo', + transaction_group: 'A', + aggregation_group: 'RECOUNT_ACCOUNT', + ...entityIndividual, + childOf: 'Partnership Recount Account Receipt', + fields: { + ...memoFields, + ...contributionFields, + }, +}; + const partyReturn: TransactionForm = { transaction_name: 'Party Returned/Bounced Receipt', transaction_category: 'REGISTERED FILERS', @@ -1167,6 +1193,7 @@ export const schedANavTree: TransactionNavTree = { 'Earmark Receipt for Recount/Legal Proceedings Account (Contribution)': earmarkRecountReceipt, 'Earmark Receipt for Pres. Nominating Convention Account (Contribution)': earmarkConventionReceipt, 'Earmark Receipt for Headquarters Buildings Account (Contribution)': earmarkHeadquartersReceipt, + 'Partnership Recount Account Receipt': partnershipRecountAccountReceipt, }, }; @@ -1191,4 +1218,7 @@ export const childTransactionTree = { 'Partnership National Party Recount/Legal Proceedings Account': { 'Partnership National Party Recount/Legal Proceedings Account Memo': partnershipNationalPartyRecountAccountMemo, }, + 'Partnership Recount Account Receipt': { + 'Partnership Recount Account Receipt Memo': partnershipRecountAccountReceiptMemo, + }, }; From b9f7785a719ed98d3bf00d3883e4cae586bf3c26 Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Thu, 2 Feb 2023 15:43:52 -0500 Subject: [PATCH 007/115] Fixes the placement of the new receipt in the transaction accordion --- .../transaction-type-picker.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index dd11185fb2..a87079b084 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -127,6 +127,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ScheduleATransactionTypes.PARTY_RECOUNT_RECEIPT, ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT, ScheduleATransactionTypes.TRIBAL_RECOUNT_RECEIPT, + ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT, @@ -143,7 +144,6 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, - ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, ]; case ScheduleBTransactionGroups.OPERATING_EXPENDITURES: return [ From 9790bde5d44762d1e49c3f6069e5550683653ba6 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 3 Feb 2023 12:26:05 -0500 Subject: [PATCH 008/115] Workaround fix for the Transaction initialization bug --- .../address-input.component.html | 2 +- .../components/inputs/base-input.component.ts | 4 +- .../double-transaction-type-base.component.ts | 4 +- .../transaction-type-base.component.ts | 4 +- .../shared/models/scha-transaction.model.ts | 4 +- .../shared/models/schb-transaction.model.ts | 4 +- .../app/shared/models/transaction.model.ts | 39 +++++++++++++++++-- 7 files changed, 46 insertions(+), 15 deletions(-) diff --git a/front-end/src/app/shared/components/inputs/address-input/address-input.component.html b/front-end/src/app/shared/components/inputs/address-input/address-input.component.html index 166d26cd83..761ced4671 100644 --- a/front-end/src/app/shared/components/inputs/address-input/address-input.component.html +++ b/front-end/src/app/shared/components/inputs/address-input/address-input.component.html @@ -57,7 +57,7 @@
- + = new BehaviorSubject(''); childContributionPurposeDescriptionLabel = ''; childNegativeAmountValueOnly = false; - childFormTemplateMap: ScheduleTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates + childFormTemplateMap: ScheduleFormTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates override ngOnInit(): void { // Initialize primary form. diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 919ae6cf70..d8f2e7046d 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -13,7 +13,7 @@ import { TransactionNavigationControls, } from 'app/shared/models/transaction-navigation-controls.model'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction, ScheduleTemplateMapType } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; @@ -43,7 +43,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy purposeDescriptionLabel = ''; childTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; negativeAmountValueOnly = false; - formTemplateMap: ScheduleTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates + formTemplateMap: ScheduleFormTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates form: FormGroup = this.fb.group({}); diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 7f7c9270ab..1e00edd157 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -1,5 +1,5 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction, AggregationGroups, ScheduleTemplateMapType } from './transaction.model'; +import { Transaction, AggregationGroups, ScheduleFormTemplateMapType } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; @@ -463,7 +463,7 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ]; // Mapping of schedule fields to the group input component form templates -export const ScheduleAFormTemplateMap: ScheduleTemplateMapType = { +export const ScheduleAFormTemplateMap: ScheduleFormTemplateMapType = { last_name: 'contributor_last_name', first_name: 'contributor_first_name', middle_name: 'contributor_middle_name', diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 5ec6b9e23a..181c96ef79 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -1,5 +1,5 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction, AggregationGroups, ScheduleTemplateMapType } from './transaction.model'; +import { Transaction, AggregationGroups, ScheduleFormTemplateMapType } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; @@ -277,7 +277,7 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ ]; // Mapping of schedule fields to the group input component form templates -export const ScheduleBFormTemplateMap: ScheduleTemplateMapType = { +export const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { last_name: 'payee_last_name', first_name: 'payee_first_name', middle_name: 'payee_middle_name', diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 99dd8e6fd8..909ca6f42e 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -2,11 +2,42 @@ import { BaseModel } from './base.model'; import { Contact } from './contact.model'; import { MemoText } from './memo-text.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleAFormTemplateMap } from './scha-transaction.model'; -import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBFormTemplateMap } from './schb-transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from './schb-transaction.model'; import { ValidateUtils } from '../utils/validate.utils'; import { TransactionType } from './transaction-types/transaction-type.model'; import { Type } from 'class-transformer'; +/** + * This is a copy of the same map from the schb-transaction.model.ts file. + * There is currently a initialization bug when importing this map + * from the other file. Looking to see if it clears up when the transaction + * tree is refactored to place TransactionType on the transaction rather + * than the current viceversa + */ +const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { + last_name: 'payee_last_name', + first_name: 'payee_first_name', + middle_name: 'payee_middle_name', + prefix: 'payee_prefix', + suffix: 'payee_suffix', + street_1: 'payee_street_1', + street_2: 'payee_street_2', + city: 'payee_city', + state: 'payee_state', + zip: 'payee_zip', + employer: '', + occupation: '', + organization_name: 'payee_organization_name', + committee_fec_id: 'beneficiary_committee_fec_id', + date: 'expenditure_date', + memo_code: 'memo_code', + amount: 'expenditure_amount', + aggregate: 'aggregate_amount', + purpose_descrip: 'expenditure_purpose_descrip', + purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', + memo_text_input: 'memo_text_input', +}; + export abstract class Transaction extends BaseModel { id: string | undefined; transactionType: TransactionType | undefined; @@ -72,11 +103,11 @@ export abstract class Transaction extends BaseModel { } } - static getFormTemplateMap(transactionType: TransactionType | undefined): ScheduleTemplateMapType { + static getFormTemplateMap(transactionType: TransactionType | undefined): ScheduleFormTemplateMapType { if (!transactionType) throw new Error('getFormTemplateMap() missing transaction type'); if (transactionType.scheduleId === 'A') return ScheduleAFormTemplateMap; if (transactionType.scheduleId === 'B') return ScheduleBFormTemplateMap; - throw new Error(`Missing form template map for ${transactionType.transaction?.transaction_type_identifier}`); + throw new Error(`Missing form template map for ${transactionType?.transaction?.transaction_type_identifier}`); } } @@ -90,7 +121,7 @@ export function hasNoContact(transaction?: Transaction): boolean { export type ScheduleTransaction = SchATransaction | SchBTransaction; export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; -export type ScheduleTemplateMapType = { +export type ScheduleFormTemplateMapType = { last_name: string; first_name: string; middle_name: string; From 0453ea0e8547867eed9edbb0a9c63a721beb465b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 7 Feb 2023 07:36:52 -0500 Subject: [PATCH 009/115] Refactor transaction form management to be schedule agnostic --- .../double-transaction-type-base.component.ts | 83 ++++++++++--------- .../transaction-contact.utils.ts | 74 ++++++++++------- .../transaction-form.utils.ts | 62 ++++++++------ .../transaction-type-base.component.ts | 57 ++++++++----- .../shared/models/scha-transaction.model.ts | 2 +- .../shared/models/schb-transaction.model.ts | 2 +- .../app/shared/models/transaction.model.ts | 15 ++++ 7 files changed, 182 insertions(+), 113 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 21ada31fb9..af2c7cdd5f 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -1,13 +1,14 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; -import { - ScheduleATransactionTypes, - SchATransaction, - ScheduleAFormTemplateMap, -} from 'app/shared/models/scha-transaction.model'; +import { ScheduleAFormTemplateMap } from 'app/shared/models/scha-transaction.model'; import { NavigationDestination } from 'app/shared/models/transaction-navigation-controls.model'; -import { Transaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; +import { + Transaction, + ScheduleTransaction, + ScheduleFormTemplateMapType, + ScheduleTransactionTypes, +} from 'app/shared/models/transaction.model'; import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; import { SelectItem } from 'primeng/api'; @@ -49,20 +50,20 @@ export abstract class DoubleTransactionTypeBaseComponent // Initialize child form. this.childForm = this.fb.group(this.childValidateService.getFormGroupFields(this.childFormProperties)); + this.childFormTemplateMap = Transaction.getFormTemplateMap(this.transactionType?.childTransactionType); TransactionFormUtils.onInit( this, this.childForm, this.childValidateService, this.transactionType?.childTransactionType, - this.childContactId$ + this.childContactId$, + this.childFormTemplateMap ); this.childOnInit(); } childOnInit() { - this.childFormTemplateMap = Transaction.getFormTemplateMap(this.transactionType?.childTransactionType); - // Override contact type options if present in transactionType if (this.transactionType?.childTransactionType && this.transactionType.childTransactionType.contactTypeOptions) { this.childContactTypeOptions = LabelUtils.getPrimeOptions( @@ -71,16 +72,16 @@ export abstract class DoubleTransactionTypeBaseComponent ); } - const contribution_amount_schema = - this.transactionType?.childTransactionType?.schema.properties['contribution_amount']; - if (contribution_amount_schema?.exclusiveMaximum === 0) { + const amountProperty = this.childFormTemplateMap.amount; + const amount_schema = this.transactionType?.childTransactionType?.schema.properties[amountProperty]; + if (amount_schema?.exclusiveMaximum === 0) { this.childNegativeAmountValueOnly = true; this.childForm - .get('contribution_amount') + .get(amountProperty) ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((contribution_amount) => { - if (typeof contribution_amount === 'number' && contribution_amount > 0) { - this.childForm.patchValue({ contribution_amount: -1 * contribution_amount }); + .subscribe((amount) => { + if (typeof amount === 'number' && amount > 0) { + this.childForm.patchValue({ amount: -1 * amount }); } }); } @@ -97,41 +98,42 @@ export abstract class DoubleTransactionTypeBaseComponent // Parent contribution purpose description updates with child contributor name updates. this.childForm - .get('contributor_organization_name') + .get(this.childFormTemplateMap.organization_name) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value) => { - const childTransaction: SchATransaction = this.transactionType?.childTransactionType - ?.transaction as SchATransaction; - childTransaction.contributor_organization_name = value; - this.updateContributionPurposeDescription(); + if (this.transactionType?.childTransactionType?.transaction) { + const key = this.childFormTemplateMap.organization_name as keyof ScheduleTransaction; + ((this.transactionType.childTransactionType.transaction as ScheduleTransaction)[key] as string) = value; + } + this.updatePurposeDescription(); }); this.childForm - .get('contributor_first_name') + .get(this.childFormTemplateMap.first_name) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value) => { - const memo: SchATransaction = this.transactionType?.childTransactionType?.transaction as SchATransaction; - if (memo) { - memo.contributor_first_name = value; + if (this.transactionType?.childTransactionType?.transaction) { + const key = this.childFormTemplateMap.first_name as keyof ScheduleTransaction; + ((this.transactionType.childTransactionType.transaction as ScheduleTransaction)[key] as string) = value; } - this.updateContributionPurposeDescription(); + this.updatePurposeDescription(); }); this.childForm - .get('contributor_last_name') + .get(this.childFormTemplateMap.last_name) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value) => { - const memo: SchATransaction = this.transactionType?.childTransactionType?.transaction as SchATransaction; - if (memo) { - memo.contributor_last_name = value; + if (this.transactionType?.childTransactionType?.transaction) { + const key = this.childFormTemplateMap.last_name as keyof ScheduleTransaction; + ((this.transactionType.childTransactionType.transaction as ScheduleTransaction)[key] as string) = value; } - this.updateContributionPurposeDescription(); + this.updatePurposeDescription(); }); // Child amount must match parent contribution amount this.form - .get('contribution_amount') + .get(this.childFormTemplateMap.amount) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value) => { - this.childForm.get('contribution_amount')?.setValue(value); + this.childForm.get(this.childFormTemplateMap.amount)?.setValue(value); }); } @@ -140,19 +142,19 @@ export abstract class DoubleTransactionTypeBaseComponent this.childContactId$.complete(); } - private updateContributionPurposeDescription() { - const childTransaction: SchATransaction = this.transactionType?.childTransactionType - ?.transaction as SchATransaction; + private updatePurposeDescription() { + const childTransaction: ScheduleTransaction = this.transactionType?.childTransactionType + ?.transaction as ScheduleTransaction; childTransaction.entity_type = this.childForm.get('entity_type')?.value; if (this.transactionType?.generatePurposeDescription) { this.form.patchValue({ - contribution_purpose_descrip: this.transactionType.generatePurposeDescriptionWrapper(), + [this.childFormTemplateMap.purpose_descrip]: this.transactionType.generatePurposeDescriptionWrapper(), }); } } - override save(navigateTo: NavigationDestination, transactionTypeToAdd?: ScheduleATransactionTypes) { + override save(navigateTo: NavigationDestination, transactionTypeToAdd?: ScheduleTransactionTypes) { this.formSubmitted = true; if (this.form.invalid || this.childForm.invalid) { @@ -182,7 +184,7 @@ export abstract class DoubleTransactionTypeBaseComponent private childConfirmSave( navigateTo: NavigationDestination, payload: Transaction, - transactionTypeToAdd?: ScheduleATransactionTypes + transactionTypeToAdd?: ScheduleTransactionTypes ) { if (payload.children?.length === 1) { this.confirmSave( @@ -214,7 +216,8 @@ export abstract class DoubleTransactionTypeBaseComponent selectItem, this.childForm, this.transactionType?.childTransactionType, - this.childContactId$ + this.childContactId$, + this.childFormTemplateMap ); } } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts index cc561622af..0e5c30ad3e 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts @@ -1,4 +1,5 @@ import { AbstractControl, FormGroup } from '@angular/forms'; +import { ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { SelectItem } from 'primeng/api'; @@ -10,7 +11,8 @@ export class TransactionContactUtils { contactChanges: string[], contact: Contact | undefined, form: FormGroup, - fecDatePipe: FecDatePipe + fecDatePipe: FecDatePipe, + formTemplateMap: ScheduleFormTemplateMapType ): string | undefined { if (contact) { const changesMessage = 'Change(s):
    '.concat( @@ -21,7 +23,7 @@ export class TransactionContactUtils { contactName = `${contact.last_name}, ${contact.first_name}`; contactName += contact.middle_name ? ' ' + contact.middle_name : ''; } - const dateReceived = fecDatePipe.transform(form.get('contribution_date')?.value); + const dateReceived = fecDatePipe.transform(form.get(formTemplateMap.date)?.value); return ( `By saving this transaction, you are also updating the contact for ` + `${contactName}. This change will only affect transactions with ` + @@ -31,22 +33,26 @@ export class TransactionContactUtils { return undefined; } - static getCreateTransactionContactConfirmationMessage(contactType: ContactTypes, form: FormGroup): string { + static getCreateTransactionContactConfirmationMessage( + contactType: ContactTypes, + form: FormGroup, + formTemplateMap: ScheduleFormTemplateMapType + ): string { let confirmationContactTitle = ''; switch (contactType) { case ContactTypes.INDIVIDUAL: confirmationContactTitle = `individual contact for ` + - `${form.get('contributor_last_name')?.value}, ` + - `${form.get('contributor_first_name')?.value}`; + `${form.get(formTemplateMap.last_name)?.value}, ` + + `${form.get(formTemplateMap.first_name)?.value}`; break; case ContactTypes.COMMITTEE: confirmationContactTitle = - `committee contact for ` + `${form.get('contributor_organization_name')?.value}`; + `committee contact for ` + `${form.get(formTemplateMap.organization_name)?.value}`; break; case ContactTypes.ORGANIZATION: confirmationContactTitle = - `organization contact for ` + `${form.get('contributor_organization_name')?.value}`; + `organization contact for ` + `${form.get(formTemplateMap.organization_name)?.value}`; break; } return `By saving this transaction, you're also creating a new ${confirmationContactTitle}.`; @@ -59,19 +65,30 @@ export class TransactionContactUtils { * first setting these values on the Contact object. * @returns string[] containing the changes in prose for the UI. */ - static setTransactionContactFormChanges(form: FormGroup, contact: Contact | undefined): string[] { - function getFormField(form: FormGroup, field: string): AbstractControl | null { + static setTransactionContactFormChanges( + form: FormGroup, + contact: Contact | undefined, + formTemplateMap: ScheduleFormTemplateMapType + ): string[] { + function getFormField( + form: FormGroup, + field: string, + formTemplateMap: ScheduleFormTemplateMapType + ): AbstractControl | null { if (field == 'committee_id') { - return form.get('donor_committee_fec_id'); + return form.get(formTemplateMap.committee_fec_id); + } + if (field == 'name') { + return form.get(formTemplateMap.organization_name); } - return form.get(`contributor_${field}`) || form.get(`contributor_organization_${field}`); + return form.get(formTemplateMap[field as keyof ScheduleFormTemplateMapType]); } if (contact) { return Object.entries(ContactFields) .map(([field, label]: string[]) => { const contactValue = contact[field as keyof typeof contact]; - const formField = getFormField(form, field); + const formField = getFormField(form, field, formTemplateMap); if (formField && formField?.value !== contactValue) { contact[field as keyof typeof contact] = (formField.value || '') as never; @@ -88,34 +105,35 @@ export class TransactionContactUtils { selectItem: SelectItem, form: FormGroup, transactionType: TransactionType | undefined, - contactId$: Subject + contactId$: Subject, + formTemplateMap: ScheduleFormTemplateMapType ) { if (selectItem) { const contact: Contact = selectItem.value; if (contact) { switch (contact.type) { case ContactTypes.INDIVIDUAL: - form.get('contributor_last_name')?.setValue(contact.last_name); - form.get('contributor_first_name')?.setValue(contact.first_name); - form.get('contributor_middle_name')?.setValue(contact.middle_name); - form.get('contributor_prefix')?.setValue(contact.prefix); - form.get('contributor_suffix')?.setValue(contact.suffix); - form.get('contributor_employer')?.setValue(contact.employer); - form.get('contributor_occupation')?.setValue(contact.occupation); + form.get(formTemplateMap.last_name)?.setValue(contact.last_name); + form.get(formTemplateMap.first_name)?.setValue(contact.first_name); + form.get(formTemplateMap.middle_name)?.setValue(contact.middle_name); + form.get(formTemplateMap.prefix)?.setValue(contact.prefix); + form.get(formTemplateMap.suffix)?.setValue(contact.suffix); + form.get(formTemplateMap.employer)?.setValue(contact.employer); + form.get(formTemplateMap.occupation)?.setValue(contact.occupation); break; case ContactTypes.COMMITTEE: - form.get('donor_committee_fec_id')?.setValue(contact.committee_id); - form.get('contributor_organization_name')?.setValue(contact.name); + form.get(formTemplateMap.committee_fec_id)?.setValue(contact.committee_id); + form.get(formTemplateMap.organization_name)?.setValue(contact.name); break; case ContactTypes.ORGANIZATION: - form.get('contributor_organization_name')?.setValue(contact.name); + form.get(formTemplateMap.organization_name)?.setValue(contact.name); break; } - form.get('contributor_street_1')?.setValue(contact.street_1); - form.get('contributor_street_2')?.setValue(contact.street_2); - form.get('contributor_city')?.setValue(contact.city); - form.get('contributor_state')?.setValue(contact.state); - form.get('contributor_zip')?.setValue(contact.zip); + form.get(formTemplateMap.street_1)?.setValue(contact.street_1); + form.get(formTemplateMap.street_2)?.setValue(contact.street_2); + form.get(formTemplateMap.city)?.setValue(contact.city); + form.get(formTemplateMap.state)?.setValue(contact.state); + form.get(formTemplateMap.zip)?.setValue(contact.zip); if (transactionType?.transaction) { transactionType.transaction.contact = contact; } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 1e6dbca5dd..cc485e89e9 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -1,7 +1,6 @@ import { FormGroup } from '@angular/forms'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { SchATransaction } from 'app/shared/models/scha-transaction.model'; -import { Transaction } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleTransaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; import { ValidateService } from 'app/shared/services/validate.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; import { combineLatestWith, Observable, of, startWith, Subject, switchMap, takeUntil } from 'rxjs'; @@ -9,6 +8,8 @@ import { ContactTypes } from '../../models/contact.model'; import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; +import { SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { SchBTransaction } from 'app/shared/models/schb-transaction.model'; export class TransactionFormUtils { /** @@ -28,7 +29,8 @@ export class TransactionFormUtils { form: FormGroup, validateService: ValidateService, transactionType: TransactionType | undefined, - contactId$: Subject + contactId$: Subject, + formTemplateMap: ScheduleFormTemplateMapType ): void { // Initialize validation tracking of current JSON schema and form data validateService.formValidatorSchema = transactionType?.schema; @@ -40,7 +42,7 @@ export class TransactionFormUtils { } if (isExisting(transactionType?.transaction)) { - const txn = { ...transactionType?.transaction } as SchATransaction; + const txn = { ...transactionType?.transaction } as Transaction; form.patchValue({ ...txn }); TransactionMemoUtils.patchMemoText(transactionType, form); @@ -58,45 +60,46 @@ export class TransactionFormUtils { ?.valueChanges.pipe(takeUntil(component.destroy$)) .subscribe((value: string) => { if (value === ContactTypes.INDIVIDUAL || value === ContactTypes.CANDIDATE) { - form.get('contributor_organization_name')?.reset(); + form.get(formTemplateMap.organization_name)?.reset(); } if (value === ContactTypes.ORGANIZATION || value === ContactTypes.COMMITTEE) { - form.get('contributor_last_name')?.reset(); - form.get('contributor_first_name')?.reset(); - form.get('contributor_middle_name')?.reset(); - form.get('contributor_prefix')?.reset(); - form.get('contributor_suffix')?.reset(); - form.get('contributor_employer')?.reset(); - form.get('contributor_occupation')?.reset(); + form.get(formTemplateMap.last_name)?.reset(); + form.get(formTemplateMap.first_name)?.reset(); + form.get(formTemplateMap.middle_name)?.reset(); + form.get(formTemplateMap.prefix)?.reset(); + form.get(formTemplateMap.suffix)?.reset(); + form.get(formTemplateMap.employer)?.reset(); + form.get(formTemplateMap.occupation)?.reset(); } }); form - ?.get('contribution_aggregate') + ?.get(formTemplateMap.aggregate) ?.valueChanges.pipe(takeUntil(component.destroy$)) .subscribe(() => { - form.get('contributor_employer')?.updateValueAndValidity(); - form.get('contributor_occupation')?.updateValueAndValidity(); + form.get(formTemplateMap.employer)?.updateValueAndValidity(); + form.get(formTemplateMap.occupation)?.updateValueAndValidity(); }); const previous_transaction$: Observable = - form.get('contribution_date')?.valueChanges.pipe( - startWith(form.get('contribution_date')?.value), + form.get(formTemplateMap.date)?.valueChanges.pipe( + startWith(form.get(formTemplateMap.date)?.value), combineLatestWith(contactId$), switchMap(([contribution_date, contactId]) => { return component.transactionService.getPreviousTransaction(transactionType, contactId, contribution_date); }) ) || of(undefined); form - .get('contribution_amount') + .get(formTemplateMap.amount) ?.valueChanges.pipe( - startWith(form.get('contribution_amount')?.value), + startWith(form.get(formTemplateMap.amount)?.value), combineLatestWith(previous_transaction$), takeUntil(component.destroy$) ) - .subscribe(([contribution_amount, previous_transaction]) => { - const previousAggregate = +((previous_transaction as SchATransaction)?.contribution_aggregate || 0); - form.get('contribution_aggregate')?.setValue(+contribution_amount + previousAggregate); + .subscribe(([amount, previous_transaction]) => { + const key = formTemplateMap.aggregate as keyof ScheduleTransaction; + const previousAggregate = previous_transaction ? +((previous_transaction as ScheduleTransaction)[key] || 0) : 0; + form.get(formTemplateMap.aggregate)?.setValue(+amount + previousAggregate); }); } @@ -105,11 +108,22 @@ export class TransactionFormUtils { validateService: ValidateService, form: FormGroup, formProperties: string[] - ): SchATransaction { + ): Transaction { let formValues = validateService.getFormValues(form, formProperties); if (transactionType) formValues = TransactionMemoUtils.retrieveMemoText(transactionType, form, formValues); - const payload: SchATransaction = SchATransaction.fromJSON({ + if (!transactionType?.transaction) { + throw new Error('Payload transaction not found'); + } + + // prettier-ignore + function fromJSON(transactionType: TransactionType, json: any, depth = 2): ScheduleTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + if (transactionType.scheduleId === 'A') return SchATransaction.fromJSON(json, depth); + if (transactionType.scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); + throw new Error('Missing transaction type schedule declaration when generating schedule JSON payload'); + } + + const payload: ScheduleTransaction = fromJSON(transactionType, { ...transactionType?.transaction, ...formValues, }); diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index d8f2e7046d..5d55ecc46c 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -13,7 +13,11 @@ import { TransactionNavigationControls, } from 'app/shared/models/transaction-navigation-controls.model'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; +import { + Transaction, + ScheduleFormTemplateMapType, + ScheduleTransactionTypes, +} from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; @@ -60,27 +64,33 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ngOnInit(): void { this.form = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); - TransactionFormUtils.onInit(this, this.form, this.validateService, this.transactionType, this.contactId$); + this.formTemplateMap = Transaction.getFormTemplateMap(this.transactionType); + TransactionFormUtils.onInit( + this, + this.form, + this.validateService, + this.transactionType, + this.contactId$, + this.formTemplateMap + ); this.parentOnInit(); } parentOnInit() { - this.formTemplateMap = Transaction.getFormTemplateMap(this.transactionType); - // Override contact type options if present in transactionType if (this.transactionType && this.transactionType.contactTypeOptions) { this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, this.transactionType.contactTypeOptions); } - const contribution_amount_schema = this.transactionType?.schema.properties['contribution_amount']; - if (contribution_amount_schema?.exclusiveMaximum === 0) { + const amount_schema = this.transactionType?.schema.properties[this.formTemplateMap.amount]; + if (amount_schema?.exclusiveMaximum === 0) { this.negativeAmountValueOnly = true; this.form - .get('contribution_amount') + .get(this.formTemplateMap.amount) ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((contribution_amount) => { - if (typeof contribution_amount === 'number' && contribution_amount > 0) { - this.form.patchValue({ contribution_amount: -1 * contribution_amount }); + .subscribe((amount) => { + if (typeof amount === 'number' && amount > 0) { + this.form.patchValue({ amount: -1 * amount }); } }); } @@ -96,7 +106,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy this.contactId$.complete(); } - save(navigateTo: NavigationDestination, transactionTypeToAdd?: ScheduleATransactionTypes) { + save(navigateTo: NavigationDestination, transactionTypeToAdd?: ScheduleTransactionTypes) { this.formSubmitted = true; if (this.form.invalid) { @@ -119,24 +129,26 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy acceptCallback: ( navigateTo: NavigationDestination, payload: Transaction, - transactionTypeToAdd?: ScheduleATransactionTypes + transactionTypeToAdd?: ScheduleTransactionTypes ) => void, navigateTo: NavigationDestination, payload: Transaction, - transactionTypeToAdd?: ScheduleATransactionTypes, + transactionTypeToAdd?: ScheduleTransactionTypes, targetDialog: 'dialog' | 'childDialog' = 'dialog' ) { if (confirmTransaction.contact_id && confirmTransaction.contact) { const transactionContactChanges = TransactionContactUtils.setTransactionContactFormChanges( form, - confirmTransaction.contact + confirmTransaction.contact, + this.formTemplateMap ); if (transactionContactChanges?.length) { const confirmationMessage = TransactionContactUtils.getEditTransactionContactConfirmationMessage( transactionContactChanges, confirmTransaction.contact, form, - this.fecDatePipe + this.fecDatePipe, + this.formTemplateMap ); this.confirmationService.confirm({ key: targetDialog, @@ -158,7 +170,8 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } else { const confirmationMessage = TransactionContactUtils.getCreateTransactionContactConfirmationMessage( (confirmTransaction as SchATransaction).entity_type as ContactTypes, - form + form, + this.formTemplateMap ); this.confirmationService.confirm({ key: targetDialog, @@ -180,7 +193,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy protected doSave( navigateTo: NavigationDestination, payload: Transaction, - transactionTypeToAdd?: ScheduleATransactionTypes + transactionTypeToAdd?: ScheduleTransactionTypes ) { if (payload.transaction_type_identifier) { // Reorganize the payload if this transaction type can update its parent transaction @@ -216,7 +229,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy navigateTo( navigateTo: NavigationDestination, transactionId?: string, - transactionTypeToAdd?: ScheduleATransactionTypes + transactionTypeToAdd?: ScheduleTransactionTypes ) { if (navigateTo === NavigationDestination.ANOTHER) { this.messageService.add({ @@ -261,7 +274,13 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } onContactLookupSelect(selectItem: SelectItem) { - TransactionContactUtils.onContactLookupSelect(selectItem, this.form, this.transactionType, this.contactId$); + TransactionContactUtils.onContactLookupSelect( + selectItem, + this.form, + this.transactionType, + this.contactId$, + this.formTemplateMap + ); } getEntityType(): string { diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 1e00edd157..ad4bae77d7 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -86,7 +86,7 @@ export class SchATransaction extends Transaction { * have been re-generated to account for changes to their parent * */ - updateChildren(): Transaction[] { + override updateChildren(): Transaction[] { const outChildren: Transaction[] = []; if (this.children) { diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 181c96ef79..e9960ce3bd 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -49,7 +49,7 @@ export class SchBTransaction extends Transaction { memo_text_description: string | undefined; reference_to_si_or_sl_system_code_that_identifies_the_account: string | undefined; - override apiEndpoint = '/sch-b-transactions'; + override apiEndpoint = '/transactions/schedule-a'; // prettier-ignore static fromJSON(json: any, depth = 2): SchBTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 909ca6f42e..6573f2f822 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -103,6 +103,20 @@ export abstract class Transaction extends BaseModel { } } + /** + * updateChildren() + * @returns + * An array of Transaction objects whose contribution_purpose_descriptions + * have been re-generated to account for changes to their parent + * + */ + updateChildren(): Transaction[] { + if (this.children) { + return this.children; + } + return []; + } + static getFormTemplateMap(transactionType: TransactionType | undefined): ScheduleFormTemplateMapType { if (!transactionType) throw new Error('getFormTemplateMap() missing transaction type'); if (transactionType.scheduleId === 'A') return ScheduleAFormTemplateMap; @@ -118,6 +132,7 @@ export function hasNoContact(transaction?: Transaction): boolean { return !transaction?.contact; } +// export type ScheduleTransactionKeys = SchATransaction & SchBTransaction; export type ScheduleTransaction = SchATransaction | SchBTransaction; export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; From c4d0da587b15ce86093f0500d86a11eae453bcb6 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 7 Feb 2023 11:53:38 -0500 Subject: [PATCH 010/115] Added category code dropdown list to transaction form --- front-end/package-lock.json | 248 ++++++++++-------- front-end/package.json | 2 +- .../additional-info-input.component.html | 21 ++ .../additional-info-input.component.ts | 2 + .../shared/models/scha-transaction.model.ts | 1 + .../shared/models/schb-transaction.model.ts | 49 ++-- .../app/shared/models/transaction.model.ts | 2 + front-end/src/app/shared/utils/label.utils.ts | 14 + 8 files changed, 208 insertions(+), 131 deletions(-) diff --git a/front-end/package-lock.json b/front-end/package-lock.json index cec74a8c6e..90a32c873e 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#726e14eec74fec6d04fc00c06cd8235a0f1041d6", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#ca9c0cbc0536c316ee77772d756d4daa4f319132", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -1209,9 +1209,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1741,9 +1741,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.14.tgz", - "integrity": "sha512-sMPepQtsOs5fM1bwNvuJJHvaCfOEQfmc01FGw0ELlTpTJj5Ql/zuNRRldYhAPys4ghXdBIQJbRVYi44/7QflQQ==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -3665,9 +3665,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3691,13 +3691,13 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.16", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz", - "integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } @@ -4336,9 +4336,9 @@ "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.37", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.37.tgz", - "integrity": "sha512-MPKHrD11PgNExFMCXcgA/MnfYbITbiHYQjB8TNZmE4t9Z+zRCB1RTJKOppp8K8QOf+OEo8CybufVNcZZMLt2tw==", + "version": "3.0.0-rc.38", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.38.tgz", + "integrity": "sha512-YqkUSOZSBjbhzvU/ZbK6yoE70L/KVXAQTyUMaKAFoHEpy7csAljivTBu0C3SZKbDxMRjFWAvnLS8US7W3hFLow==", "dev": true, "dependencies": { "js-yaml": "^3.10.0", @@ -4815,9 +4815,9 @@ } }, "node_modules/axios": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.0.tgz", - "integrity": "sha512-oCye5nHhTypzkdLIvF9SaHfr8UAquqCn1KY3j8vsrjeol8yohAdGxIpRPbF1bOLsx33HOAatdfMX1yzsj2cHwg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -6860,9 +6860,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.288", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.288.tgz", + "integrity": "sha512-8s9aJf3YiokIrR+HOQzNOGmEHFXVUQzXM/JaViVvKdCkNUjS+lEa/uT7xw3nDVG/IgfxiIwUGkwJ6AR1pTpYsQ==", "dev": true }, "node_modules/emoji-regex": { @@ -6922,9 +6922,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", + "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -6936,7 +6936,7 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "ws": "~8.11.0" }, "engines": { "node": ">=10.0.0" @@ -6952,9 +6952,9 @@ } }, "node_modules/engine.io/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -8219,8 +8219,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#726e14eec74fec6d04fc00c06cd8235a0f1041d6", - "integrity": "sha512-mPBKCTbvrDqkvYleaEPn9baubewlLd3Juk8KFGFORGUyMiTtooOV+YeBcfO53cFPNCpjbhwIiSYQvUR8flgB0g==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#ca9c0cbc0536c316ee77772d756d4daa4f319132", + "integrity": "sha512-51NWod/ZcIOz6JUHJXcZbvmaZzGBQ4nHkM7P2ewaG89tyE1WbwUlU6H0isyWESvXFFxFW9QkUHZ9ZHGdscXLTw==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -9102,9 +9102,9 @@ "dev": true }, "node_modules/immutable": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", - "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", "dev": true }, "node_modules/import-fresh": { @@ -12214,9 +12214,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", - "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, "node_modules/nopt": { @@ -15259,16 +15259,16 @@ } }, "node_modules/socket.io": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", + "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.2.1", - "socket.io-adapter": "~2.4.0", + "engine.io": "~6.4.0", + "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" }, "engines": { @@ -15276,10 +15276,34 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "dependencies": { + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, "node_modules/socket.io-parser": { "version": "4.2.2", @@ -15882,9 +15906,9 @@ } }, "node_modules/tar/node_modules/minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.1.tgz", - "integrity": "sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.2.tgz", + "integrity": "sha512-4Hbzei7ZyBp+1aw0874YWpKOubZd/jc53/XU+gkYry1QV+VvrbO8icLM5CUtm4F0hyXn85DXYKEMIS26gitD3A==", "dev": true, "engines": { "node": ">=8" @@ -16535,9 +16559,9 @@ } }, "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", "dev": true, "engines": { "node": ">= 0.10" @@ -18026,9 +18050,9 @@ } }, "@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -18375,9 +18399,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.14.tgz", - "integrity": "sha512-sMPepQtsOs5fM1bwNvuJJHvaCfOEQfmc01FGw0ELlTpTJj5Ql/zuNRRldYhAPys4ghXdBIQJbRVYi44/7QflQQ==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -19776,9 +19800,9 @@ } }, "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==", "dev": true, "requires": { "@types/estree": "*", @@ -19802,13 +19826,13 @@ "dev": true }, "@types/express": { - "version": "4.17.16", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz", - "integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } @@ -20311,9 +20335,9 @@ "dev": true }, "@yarnpkg/parsers": { - "version": "3.0.0-rc.37", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.37.tgz", - "integrity": "sha512-MPKHrD11PgNExFMCXcgA/MnfYbITbiHYQjB8TNZmE4t9Z+zRCB1RTJKOppp8K8QOf+OEo8CybufVNcZZMLt2tw==", + "version": "3.0.0-rc.38", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.38.tgz", + "integrity": "sha512-YqkUSOZSBjbhzvU/ZbK6yoE70L/KVXAQTyUMaKAFoHEpy7csAljivTBu0C3SZKbDxMRjFWAvnLS8US7W3hFLow==", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -20654,9 +20678,9 @@ "dev": true }, "axios": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.0.tgz", - "integrity": "sha512-oCye5nHhTypzkdLIvF9SaHfr8UAquqCn1KY3j8vsrjeol8yohAdGxIpRPbF1bOLsx33HOAatdfMX1yzsj2cHwg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -22190,9 +22214,9 @@ } }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.288", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.288.tgz", + "integrity": "sha512-8s9aJf3YiokIrR+HOQzNOGmEHFXVUQzXM/JaViVvKdCkNUjS+lEa/uT7xw3nDVG/IgfxiIwUGkwJ6AR1pTpYsQ==", "dev": true }, "emoji-regex": { @@ -22245,9 +22269,9 @@ } }, "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", + "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -22259,13 +22283,13 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "ws": "~8.11.0" }, "dependencies": { "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} } @@ -23125,9 +23149,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#726e14eec74fec6d04fc00c06cd8235a0f1041d6", - "integrity": "sha512-mPBKCTbvrDqkvYleaEPn9baubewlLd3Juk8KFGFORGUyMiTtooOV+YeBcfO53cFPNCpjbhwIiSYQvUR8flgB0g==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#726e14eec74fec6d04fc00c06cd8235a0f1041d6", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#ca9c0cbc0536c316ee77772d756d4daa4f319132", + "integrity": "sha512-51NWod/ZcIOz6JUHJXcZbvmaZzGBQ4nHkM7P2ewaG89tyE1WbwUlU6H0isyWESvXFFxFW9QkUHZ9ZHGdscXLTw==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#ca9c0cbc0536c316ee77772d756d4daa4f319132", "requires": { "ajv": "^8.11.0" } @@ -23803,9 +23827,9 @@ "dev": true }, "immutable": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", - "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", "dev": true }, "import-fresh": { @@ -26194,9 +26218,9 @@ "dev": true }, "node-releases": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", - "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, "nopt": { @@ -28405,24 +28429,36 @@ "dev": true }, "socket.io": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", + "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.2.1", - "socket.io-adapter": "~2.4.0", + "engine.io": "~6.4.0", + "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" } }, "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "requires": { + "ws": "~8.11.0" + }, + "dependencies": { + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } }, "socket.io-parser": { "version": "4.2.2", @@ -28868,9 +28904,9 @@ }, "dependencies": { "minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.1.tgz", - "integrity": "sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.2.tgz", + "integrity": "sha512-4Hbzei7ZyBp+1aw0874YWpKOubZd/jc53/XU+gkYry1QV+VvrbO8icLM5CUtm4F0hyXn85DXYKEMIS26gitD3A==", "dev": true }, "yallist": { @@ -29397,9 +29433,9 @@ } }, "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", "dev": true }, "vary": { diff --git a/front-end/package.json b/front-end/package.json index 0fad517e89..ec10266037 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#726e14eec74fec6d04fc00c06cd8235a0f1041d6", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#ca9c0cbc0536c316ee77772d756d4daa4f319132", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index 3fe6fb8979..8d651f1347 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -43,4 +43,25 @@
+
+
+
+ + + +
+
+
diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts index f95a480b7e..59b37ab729 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts @@ -1,5 +1,6 @@ import { Component, Input } from '@angular/core'; import { BaseInputComponent } from '../base-input.component'; +import { LabelUtils, PrimeOptions, CategoryCodeLabels } from 'app/shared/utils/label.utils'; @Component({ selector: 'app-additional-info-input', @@ -10,4 +11,5 @@ export class AdditionalInfoInputComponent extends BaseInputComponent { @Input() descriptionIsSystemGenerated = false; @Input() purposeDescriptionLabel = ''; @Input() purposeDescriptionLabelNotice?: string; + categoryCodeOptions: PrimeOptions = LabelUtils.getPrimeOptions(CategoryCodeLabels); } diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index ad4bae77d7..2bf189536c 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -485,4 +485,5 @@ export const ScheduleAFormTemplateMap: ScheduleFormTemplateMapType = { purpose_descrip: 'contribution_purpose_descrip', purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', memo_text_input: 'memo_text_input', + category_code: '', }; diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index e9960ce3bd..298099a52e 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -49,7 +49,7 @@ export class SchBTransaction extends Transaction { memo_text_description: string | undefined; reference_to_si_or_sl_system_code_that_identifies_the_account: string | undefined; - override apiEndpoint = '/transactions/schedule-a'; + override apiEndpoint = '/transactions/schedule-b'; // prettier-ignore static fromJSON(json: any, depth = 2): SchBTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any @@ -277,26 +277,27 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ ]; // Mapping of schedule fields to the group input component form templates -export const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { - last_name: 'payee_last_name', - first_name: 'payee_first_name', - middle_name: 'payee_middle_name', - prefix: 'payee_prefix', - suffix: 'payee_suffix', - street_1: 'payee_street_1', - street_2: 'payee_street_2', - city: 'payee_city', - state: 'payee_state', - zip: 'payee_zip', - employer: '', - occupation: '', - organization_name: 'payee_organization_name', - committee_fec_id: 'beneficiary_committee_fec_id', - date: 'expenditure_date', - memo_code: 'memo_code', - amount: 'expenditure_amount', - aggregate: 'aggregate_amount', - purpose_descrip: 'expenditure_purpose_descrip', - purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', - memo_text_input: 'memo_text_input', -}; +// export const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { +// last_name: 'payee_last_name', +// first_name: 'payee_first_name', +// middle_name: 'payee_middle_name', +// prefix: 'payee_prefix', +// suffix: 'payee_suffix', +// street_1: 'payee_street_1', +// street_2: 'payee_street_2', +// city: 'payee_city', +// state: 'payee_state', +// zip: 'payee_zip', +// employer: '', +// occupation: '', +// organization_name: 'payee_organization_name', +// committee_fec_id: 'beneficiary_committee_fec_id', +// date: 'expenditure_date', +// memo_code: 'memo_code', +// amount: 'expenditure_amount', +// aggregate: 'aggregate_amount', +// purpose_descrip: 'expenditure_purpose_descrip', +// purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', +// memo_text_input: 'memo_text_input', +// category_code: 'category_code', +// }; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 6573f2f822..ea3635949b 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -36,6 +36,7 @@ const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { purpose_descrip: 'expenditure_purpose_descrip', purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', memo_text_input: 'memo_text_input', + category_code: 'category_code', }; export abstract class Transaction extends BaseModel { @@ -158,6 +159,7 @@ export type ScheduleFormTemplateMapType = { purpose_descrip: string; purposeDescripLabel: string; memo_text_input: string; + category_code: string; }; export enum AggregationGroups { diff --git a/front-end/src/app/shared/utils/label.utils.ts b/front-end/src/app/shared/utils/label.utils.ts index f29174fca6..8b3c46b2f5 100644 --- a/front-end/src/app/shared/utils/label.utils.ts +++ b/front-end/src/app/shared/utils/label.utils.ts @@ -208,3 +208,17 @@ const CongressionalDistricts: Record = { WI: 8, WY: 1, }; + +export const CategoryCodeLabels: LabelList = [ + ['001', 'Administrative/Salary/Overhead Expenses'], + ['002', 'Travel Expenses - including travel reimbursement expenses'], + ['003', 'Solicitation and Fundraising Expenses'], + ['004', 'Advertising Expenses -including general public political advertising'], + ['005', 'Polling Expenses'], + ['006', 'Campaign Materials'], + ['007', 'Campaign Event Expenses'], + ['008', 'Transfers'], + ['009', 'Loan Repayments'], + ['011', 'Political Contributions'], + ['012', 'Donations'], +]; From 07ae407496bb90e6e9879f534d9d38cd09dfbaf6 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 7 Feb 2023 13:21:47 -0500 Subject: [PATCH 011/115] Convert validate utils back to a service --- .../contact-detail.component.ts | 15 +- .../contact-form/contact-form.component.ts | 21 +- .../contact-lookup.component.ts | 53 ++--- .../app/shared/models/transaction.model.ts | 4 +- .../app/shared/services/validate.service.ts | 4 +- .../app/shared/utils/validate.utils.spec.ts | 7 - .../src/app/shared/utils/validate.utils.ts | 183 ------------------ 7 files changed, 40 insertions(+), 247 deletions(-) delete mode 100644 front-end/src/app/shared/utils/validate.utils.spec.ts delete mode 100644 front-end/src/app/shared/utils/validate.utils.ts diff --git a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts index 02089ed83d..762441f672 100644 --- a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts +++ b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts @@ -7,9 +7,7 @@ import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_valid import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; import { schema as contactOrganizationSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Organization'; import { LazyLoadEvent, MessageService } from 'primeng/api'; -import { - Contact -} from '../../shared/models/contact.model'; +import { Contact } from '../../shared/models/contact.model'; @Component({ selector: 'app-contact-detail', @@ -40,10 +38,10 @@ export class ContactDetailComponent { form: FormGroup = this.fb.group( this.validateService.getFormGroupFields([ ...new Set([ - ...this.validateService.getSchemaProperties(contactIndividualSchema), - ...this.validateService.getSchemaProperties(contactCandidateSchema), - ...this.validateService.getSchemaProperties(contactCommitteeSchema), - ...this.validateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateService.getSchemaProperties(contactIndividualSchema), + ...ValidateService.getSchemaProperties(contactCandidateSchema), + ...ValidateService.getSchemaProperties(contactCommitteeSchema), + ...ValidateService.getSchemaProperties(contactOrganizationSchema), ]), ]) ); @@ -53,7 +51,7 @@ export class ContactDetailComponent { private contactService: ContactService, private validateService: ValidateService, private fb: FormBuilder - ) { } + ) {} public onOpenDetail() { this.resetForm(); @@ -105,5 +103,4 @@ export class ContactDetailComponent { this.form.reset(); this.formSubmitted = false; } - } diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 52970bd60c..d502f49d1b 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -10,8 +10,9 @@ import { schema as contactOrganizationSchema } from 'fecfile-validate/fecfile_va import { Subject, takeUntil } from 'rxjs'; import { CandidateOfficeTypeLabels, - CandidateOfficeTypes, ContactTypeLabels, - ContactTypes + CandidateOfficeTypes, + ContactTypeLabels, + ContactTypes, } from '../../models/contact.model'; @Component({ @@ -22,10 +23,10 @@ export class ContactFormComponent implements OnInit, OnDestroy { @Input() form: FormGroup = this.fb.group( this.validateService.getFormGroupFields([ ...new Set([ - ...this.validateService.getSchemaProperties(contactIndividualSchema), - ...this.validateService.getSchemaProperties(contactCandidateSchema), - ...this.validateService.getSchemaProperties(contactCommitteeSchema), - ...this.validateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateService.getSchemaProperties(contactIndividualSchema), + ...ValidateService.getSchemaProperties(contactCandidateSchema), + ...ValidateService.getSchemaProperties(contactCommitteeSchema), + ...ValidateService.getSchemaProperties(contactOrganizationSchema), ]), ]) ); @@ -41,10 +42,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { candidateStateOptions: PrimeOptions = []; candidateDistrictOptions: PrimeOptions = []; - constructor( - private validateService: ValidateService, - private fb: FormBuilder - ) { } + constructor(private validateService: ValidateService, private fb: FormBuilder) {} ngOnInit(): void { this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); @@ -66,7 +64,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { // Clear out non-schema form values const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - const schemaProperties: string[] = this.validateService.getSchemaProperties( + const schemaProperties: string[] = ValidateService.getSchemaProperties( this.validateService.formValidatorSchema ); Object.keys(this.form.controls).forEach((property: string) => { @@ -165,5 +163,4 @@ export class ContactFormComponent implements OnInit, OnDestroy { } return schema; } - } diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index a71ab9c449..5428b65cd0 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -47,10 +47,10 @@ export class ContactLookupComponent { createContactForm: FormGroup = this.formBuilder.group( this.validateService.getFormGroupFields([ ...new Set([ - ...this.validateService.getSchemaProperties(contactIndividualSchema), - ...this.validateService.getSchemaProperties(contactCandidateSchema), - ...this.validateService.getSchemaProperties(contactCommitteeSchema), - ...this.validateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateService.getSchemaProperties(contactIndividualSchema), + ...ValidateService.getSchemaProperties(contactCandidateSchema), + ...ValidateService.getSchemaProperties(contactCommitteeSchema), + ...ValidateService.getSchemaProperties(contactOrganizationSchema), ]), ]) ); @@ -64,8 +64,8 @@ export class ContactLookupComponent { private formBuilder: FormBuilder, private validateService: ValidateService, private contactService: ContactService, - private fecApiService: FecApiService, - ) { } + private fecApiService: FecApiService + ) {} // eslint-disable-next-line @typescript-eslint/no-explicit-any onDropdownSearch(event: any) { @@ -104,12 +104,11 @@ export class ContactLookupComponent { if (event.value instanceof Contact) { this.contactSelect.emit(event); } else if (event.value instanceof FecApiCommitteeLookupData) { - const value: FecApiCommitteeLookupData = event.value + const value: FecApiCommitteeLookupData = event.value; if (value.id) { - this.fecApiService.getDetails(value.id) - .subscribe((committeeAccount) => { - this.openCreateContactDialog(committeeAccount); - }); + this.fecApiService.getDetails(value.id).subscribe((committeeAccount) => { + this.openCreateContactDialog(committeeAccount); + }); } } this.contactLookupForm.patchValue({ selectedContact: '' }); @@ -135,10 +134,8 @@ export class ContactLookupComponent { closeCreateContactDialog() { // Need these since contact-form sets these for validation - this.validateService.formValidatorSchema = - this.workingValidatorSchema; - this.validateService.formValidatorForm = - this.workingValidatorForm; + this.validateService.formValidatorSchema = this.workingValidatorSchema; + this.validateService.formValidatorForm = this.workingValidatorForm; this.createContactDialogVisible = false; } @@ -150,10 +147,10 @@ export class ContactLookupComponent { } const createdContact = Contact.fromJSON({ - ...this.validateService.getFormValues(this.createContactForm) + ...this.validateService.getFormValues(this.createContactForm), }); this.contactSelect.emit({ - value: createdContact + value: createdContact, }); this.closeCreateContactDialog(); } @@ -169,20 +166,13 @@ export class ContactLookupComponent { phone = '+1 ' + this.selectedFecCommitteeAccount.treasurer_phone; } if (this.selectedFecCommitteeAccount) { - this.createContactForm.get('committee_id')?.setValue( - this.selectedFecCommitteeAccount.committee_id); - this.createContactForm.get('name')?.setValue( - this.selectedFecCommitteeAccount.name); - this.createContactForm.get('street_1')?.setValue( - this.selectedFecCommitteeAccount.street_1); - this.createContactForm.get('street_2')?.setValue( - this.selectedFecCommitteeAccount.street_2); - this.createContactForm.get('city')?.setValue( - this.selectedFecCommitteeAccount.city); - this.createContactForm.get('state')?.setValue( - this.selectedFecCommitteeAccount.state); - this.createContactForm.get('zip')?.setValue( - this.selectedFecCommitteeAccount.zip); + this.createContactForm.get('committee_id')?.setValue(this.selectedFecCommitteeAccount.committee_id); + this.createContactForm.get('name')?.setValue(this.selectedFecCommitteeAccount.name); + this.createContactForm.get('street_1')?.setValue(this.selectedFecCommitteeAccount.street_1); + this.createContactForm.get('street_2')?.setValue(this.selectedFecCommitteeAccount.street_2); + this.createContactForm.get('city')?.setValue(this.selectedFecCommitteeAccount.city); + this.createContactForm.get('state')?.setValue(this.selectedFecCommitteeAccount.state); + this.createContactForm.get('zip')?.setValue(this.selectedFecCommitteeAccount.zip); this.createContactForm.get('telephone')?.setValue(phone); } } @@ -193,5 +183,4 @@ export class ContactLookupComponent { this.createContactFormSubmitted = false; this.createContactDialogVisible = false; } - } diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index ea3635949b..495494ccb7 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -3,7 +3,7 @@ import { Contact } from './contact.model'; import { MemoText } from './memo-text.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleAFormTemplateMap } from './scha-transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes } from './schb-transaction.model'; -import { ValidateUtils } from '../utils/validate.utils'; +import { ValidateService } from '../services/validate.service'; import { TransactionType } from './transaction-types/transaction-type.model'; import { Type } from 'class-transformer'; @@ -96,7 +96,7 @@ export abstract class Transaction extends BaseModel { if (this?.transaction_type_identifier) { this.transactionType = transactionType; this.schema_name = transactionType.getSchemaName(); - const fieldsToValidate: string[] = ValidateUtils.getSchemaProperties(transactionType.schema); + const fieldsToValidate: string[] = ValidateService.getSchemaProperties(transactionType.schema); const fieldsNotToValidate: string[] = this.getFieldsNotToValidate(); this.fields_to_validate = fieldsToValidate.filter((p) => ![...fieldsNotToValidate].includes(p)); } else { diff --git a/front-end/src/app/shared/services/validate.service.ts b/front-end/src/app/shared/services/validate.service.ts index d58c2eb747..cbf3f0e355 100644 --- a/front-end/src/app/shared/services/validate.service.ts +++ b/front-end/src/app/shared/services/validate.service.ts @@ -37,7 +37,7 @@ export class ValidateService { * @param {JsonSchema} schema * @returns {string[]} list of property names */ - getSchemaProperties(schema: JsonSchema | undefined): string[] { + static getSchemaProperties(schema: JsonSchema | undefined): string[] { if (schema) { return Object.keys(schema.properties); } @@ -69,7 +69,7 @@ export class ValidateService { const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any if (this.formValidatorSchema) { - this.getSchemaProperties(this.formValidatorSchema).forEach((property: string) => { + ValidateService.getSchemaProperties(this.formValidatorSchema).forEach((property: string) => { if (propertiesSubset.length > 0 && !propertiesSubset.includes(property)) { return; } diff --git a/front-end/src/app/shared/utils/validate.utils.spec.ts b/front-end/src/app/shared/utils/validate.utils.spec.ts deleted file mode 100644 index 792de2322e..0000000000 --- a/front-end/src/app/shared/utils/validate.utils.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ValidateUtils } from './validate.utils'; - -describe('DateUtils', () => { - it('should create an instance', () => { - expect(new ValidateUtils()).toBeTruthy(); - }); -}); diff --git a/front-end/src/app/shared/utils/validate.utils.ts b/front-end/src/app/shared/utils/validate.utils.ts deleted file mode 100644 index 82294c1cda..0000000000 --- a/front-end/src/app/shared/utils/validate.utils.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; -import { validate, ValidationError } from 'fecfile-validate'; -import { JsonSchema } from '../interfaces/json-schema.interface'; -import { DateUtils } from './date.utils'; - -export class ValidateUtils { - /** - * Validate a data object against a JSON Schema document - * @param {JsonSchema} schema - * @param data - * @param {string[]} fieldsToValidate - * @returns {ValidationError[]} array of validation errors if any - */ - // prettier-ignore - static validate(schema: JsonSchema, data: any, fieldsToValidate: string[] = []): ValidationError[] { // eslint-disable-line @typescript-eslint/no-explicit-any - return validate(schema, data, fieldsToValidate); - } - - /** - * Returns an array of the property fields for a given JSON schema. - * @param {JsonSchema} schema - * @returns {string[]} list of property names - */ - static getSchemaProperties(schema: JsonSchema | undefined): string[] { - if (schema) { - return Object.keys(schema.properties); - } - return []; - } - - /** - * Returns an object to pass ot the FormBuilder group() method when creating - * a reactive Angular form whose validation will be managed by this service. - * @param {string[]} properties - * @returns data structure to pass to the FormBuilder group() method - */ - static getFormGroupFields(properties: string[], form: FormGroup, schema: JsonSchema) { - const group: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - properties.forEach((property) => (group[property] = ['', [this.formValidator(property, form, schema)]])); - return group; - } - - /** - * - * @param {FormGroup} form - * @param {JsonSchema} schema - * @param {string[]} propertiesSubset - Only get values for the listed subset of schema parameters. - * @returns object containing the form property values limited to the current validation schema - * This method will 'null' any schema values that do not have a form value and, more importantly, - * set those form fields with an empty '' value to null for the backend. It will also convert - * strings to number types when necessary. - */ - static getFormValues(form: FormGroup, schema: JsonSchema, propertiesSubset: string[] = []) { - const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - - this.getSchemaProperties(schema).forEach((property: string) => { - if (propertiesSubset.length > 0 && !propertiesSubset.includes(property)) { - return; - } - formValues[property] = this.getPropertyValue(property, form, schema); - }); - - return formValues; - } - - /** - * Convert the form input value to the appropriate type. - * @param {string} property - * @param {FromGroup} form - * @param {JsonSchema} schema - * @returns - */ - static getPropertyValue(property: string, form: FormGroup, schema: JsonSchema) { - // Undefined and empty strings are set to null. - if ( - form?.get(property)?.value === undefined || - form?.get(property)?.value === '' || - form?.get(property)?.value === null - ) { - return null; - } - - // Convert a string to number if expected in the schema. - if ( - (Array.isArray(schema?.properties[property].type) && schema?.properties[property].type.includes('number')) || - schema?.properties[property].type === 'number' - ) { - return Number(form?.get(property)?.value); - } - - // Convert date to string - if (Object.prototype.toString.call(form?.get(property)?.value) === '[object Date]') { - return DateUtils.convertDateToFecFormat(form?.get(property)?.value); - } - - // All else are strings so copy straight into value - return form?.get(property)?.value; - } - - /** - * ng validator function for reactive forms. Provides validation based on the - * JSON schema and form in the formValidationSchema and formValidationForm properties - * @param {string} property - name of form property to validate - * @param {FormGroup} form - * @param {JsonSchema} schema - * @returns {ValidationErrors | undefined} - */ - static formValidator(property: string, form: FormGroup, schema: JsonSchema): ValidatorFn { - return (): ValidationErrors | null => { - if (!schema || !form) { - return null; - } - - const errors: ValidationError[] = this.validate(schema, this.getFormValues(form, schema), [property]); - - if (errors.length) { - const result: ValidationErrors = {}; - errors.forEach((error) => { - // The keyword === 'type' indicates a conditional check fail as part of an 'anyOf' JSON schema rule - // Basically, we tried to pass a null to a JSON schema type: ["string"] rule rather than a type: ["string", "null"] rule. - if (error.keyword === 'required' || (error.keyword === 'type' && error['params']['type'] === 'string')) { - result['required'] = true; - } - if (error.keyword === 'minLength') { - result['minlength'] = { requiredLength: error.params['limit'] }; - } - if (error.keyword === 'maxLength' || error.keyword === 'maximum') { - result['maxlength'] = { requiredLength: error.params['limit'] }; - } - if (error.keyword === 'minimum') { - result['min'] = { min: error.params['limit'] }; - } - if (error.keyword === 'exclusiveMinimum') { - result['exclusiveMin'] = { exclusiveMin: error.params['limit'] }; - } - if (error.keyword === 'maximum') { - result['max'] = { max: error.params['limit'] }; - } - if (error.keyword === 'exclusiveMaximum') { - result['exclusiveMax'] = { exclusiveMax: error.params['limit'] }; - } - if (error.keyword === 'pattern') { - result['pattern'] = { requiredPattern: error.params['pattern'] }; - } - if (error.keyword === 'enum') { - result['pattern'] = { requiredPattern: `Allowed values: ${error.params['allowedValues'].join(', ')}` }; - } - if (error.keyword === 'type' && error.params['type'] === 'number') { - if ( - form?.get(error.path)?.value === '' || - form?.get(error.path)?.value === null || - form?.get(error.path)?.value === undefined - ) { - result['required'] = true; - } else { - result['pattern'] = { requiredPattern: 'Value must be a number' }; - } - } - if (error.keyword === 'type' && error.params['type'].includes('boolean')) { - result['pattern'] = { requiredPattern: error.message }; - } - }); - return result; - } - - return null; - }; - } - - static passwordValidator(): ValidatorFn | ValidatorFn[] { - const v = Validators.compose([ - Validators.required, - Validators.minLength(8), - Validators.maxLength(16), - Validators.pattern('.*[A-Z].*'), - Validators.pattern('.*[a-z].*'), - Validators.pattern('.*[0-9].*'), - Validators.pattern('.*[!@#$%&*()].*'), - ]); - - return v ? v : []; - } -} From 95e0b75d3c1f4575fe164af6015d6c3bf1fa9d1d Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 8 Feb 2023 08:59:37 -0500 Subject: [PATCH 012/115] Partnership National Party Pres Nominating Convention Account --- .../shared/models/scha-transaction.model.ts | 10 +++++ ...OMINATING_CONVENTION_ACCOUNT.model.spec.ts | 41 +++++++++++++++++ ...RES_NOMINATING_CONVENTION_ACCOUNT.model.ts | 45 +++++++++++++++++++ ...TING_CONVENTION_ACCOUNT_MEMO.model.spec.ts | 34 ++++++++++++++ ...OMINATING_CONVENTION_ACCOUNT_MEMO.model.ts | 40 +++++++++++++++++ .../shared/utils/transaction-type.utils.ts | 4 ++ .../transaction-type-picker.component.ts | 1 + 7 files changed, 175 insertions(+) create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 10ea5efafa..4b6f3fd349 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -233,6 +233,7 @@ export enum ScheduleATransactionTypes { EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_CONVENTION_ACCOUNT', EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', + PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT', // Child transactiion types PAC_EARMARK_MEMO = 'PAC_EARMARK_MEMO', EARMARK_MEMO = 'EARMARK_MEMO', @@ -252,6 +253,7 @@ export enum ScheduleATransactionTypes { TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', + PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', PARTNERSHIP_MEMO = 'PARTNERSHIP_MEMO', EARMARK_MEMO_HEADQUARTERS_ACCOUNT = 'EARMARK_MEMO_HEADQUARTERS_ACCOUNT', EARMARK_MEMO_CONVENTION_ACCOUNT = 'EARMARK_MEMO_CONVENTION_ACCOUNT', @@ -427,6 +429,10 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, 'Partnership National Party Recount/Legal Proceedings Account', ], + [ + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, + 'Partnership National Party Pres. Nominating Convention Account', + ], [ ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, 'Individual National Party Recount/Legal Proceedings Account JF Transfer Memo', @@ -459,6 +465,10 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, 'Partnership National Party Recount/Legal Proceedings Account Memo', ], + [ + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, + 'Partnership National Party Pres. Nominating Convention Account Memo', + ], [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], ]; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts new file mode 100644 index 0000000000..29ca73d337 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts @@ -0,0 +1,41 @@ +import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model'; + +describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { + let transactionType: PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT; + + beforeEach(() => { + transactionType = new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + if (transactionType) { + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('D'); + } + }); + + it('#factory() should return a SchATransaction', () => { + const txn = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT + ); + }); + + it('#generatePurposeDescription() should generate expected retval', () => { + const descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Pres. Nominating Convention Account (Partnership attributions do not require itemization)'); + }); + + it('#generatePurposeDescription() should generate a string', () => { + transactionType.transaction = transactionType.getNewTransaction(); + let descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Pres. Nominating Convention Account (Partnership attributions do not require itemization)'); + + transactionType.transaction.children = [transactionType.getNewTransaction()]; + descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Pres. Nominating Convention Account (See Partnership Attribution(s) below)'); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts new file mode 100644 index 0000000000..16f7657b35 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts @@ -0,0 +1,45 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; +import { + AggregationGroups, + SchATransaction, + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes, +} from '../scha-transaction.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { SchaTransactionType } from './SchaTransactionType.model'; + +export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT extends SchaTransactionType { + componentGroupId = 'D'; + title = LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT + ); + schema = schema; + override subTransactionTypes = [ + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, + ]; + override childTransactionType = TransactionTypeUtils.factory( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO + ); + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + override purposeDescriptionLabelNotice = + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; + + override generatePurposeDescription(): string { + if (this.transaction?.children && this.transaction?.children.length > 0) { + return 'Pres. Nominating Convention Account (See Partnership Attribution(s) below)'; + } + return 'Pres. Nominating Convention Account (Partnership attributions do not require itemization)'; + } + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA17', + transaction_type_identifier: + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, + aggregation_group: AggregationGroups.NATIONAL_PARTY_CONVENTION_ACCOUNT, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts new file mode 100644 index 0000000000..755fbdf386 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts @@ -0,0 +1,34 @@ +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model'; + +describe('PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', () => { + let transactionType: PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO; + + beforeEach(() => { + transactionType = new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO(); + transactionType.transaction = transactionType.getNewTransaction(); + transactionType.transaction.parent_transaction = + new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT().getNewTransaction(); + (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('A'); + }); + + it('#factory() should return a SchATransaction', () => { + const txn: SchATransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO + ); + }); + + it('#generatePurposeDescription() should generate a string', () => { + const descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Pres. Nominating Convention Account Partnership Attribution'); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts new file mode 100644 index 0000000000..bbe3ad8468 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts @@ -0,0 +1,40 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; +import { + AggregationGroups, + SchATransaction, + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes, +} from '../scha-transaction.model'; +import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { SchaTransactionType } from './SchaTransactionType.model'; + +export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO extends SchaTransactionType { + componentGroupId = 'A'; + title = LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO + ); + schema = schema; + override updateParentOnSave = true; + override navigationControls: TransactionNavigationControls = getChildNavigationControls( + LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT + ) + ); + + override generatePurposeDescription(): string { + return 'Pres. Nominating Convention Account Partnership Attribution'; + } + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA17', + transaction_type_identifier: + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, + back_reference_sched_name: 'SA17', + aggregation_group: AggregationGroups.NATIONAL_PARTY_RECOUNT_ACCOUNT, + }); + } +} diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 127f1aadfe..41b4f76e03 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -33,6 +33,8 @@ import { PARTNERSHIP_MEMO } from '../models/transaction-types/PARTNERSHIP_MEMO.m import { PARTNERSHIP_RECEIPT } from '../models/transaction-types/PARTNERSHIP_RECEIPT.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model'; import { PARTY_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTY_JF_TRANSFER_MEMO.model'; import { PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; import { PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; @@ -111,6 +113,8 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, + PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT, INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT, INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT, diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index 78fd9c3e1d..d03622d4fb 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -144,6 +144,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, ]; case ScheduleBTransactionGroups.OPERATING_EXPENDITURES: return [ From d1598323aefff9aec817839d302174957567d5a1 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 10:30:22 -0500 Subject: [PATCH 013/115] Refactored payload structure with transacations and types --- .../additional-info-input.component.html | 16 +- .../address-input.component.html | 20 +- .../amount-input/amount-input.component.html | 14 +- .../components/inputs/base-input.component.ts | 5 +- .../committee-input.component.html | 8 +- .../employer-input.component.html | 8 +- .../name-input/name-input.component.html | 20 +- .../double-transaction-type-base.component.ts | 186 +++++++++--------- .../transaction-contact.utils.ts | 72 +++---- .../transaction-form.utils.ts | 98 +++++---- .../transaction-memo.utils.ts | 18 +- .../transaction-type-base.component.ts | 146 +++++++------- .../shared/models/scha-transaction.model.ts | 65 ++---- .../shared/models/schb-transaction.model.ts | 30 +-- .../EARMARK_RECEIPT.model.ts | 7 +- ...ARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts | 7 +- ...MARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts | 7 +- .../EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts | 9 +- .../INDIVIDUAL_JF_TRANSFER_MEMO.model.ts | 4 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 4 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 4 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 4 +- .../PAC_EARMARK_RECEIPT.model.ts | 7 +- .../PAC_JF_TRANSFER_MEMO.model.ts | 4 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 4 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 4 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 4 +- ...IP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 6 +- .../PARTNERSHIP_RECEIPT.model.ts | 4 +- .../PARTY_JF_TRANSFER_MEMO.model.ts | 4 +- .../SchaTransactionType.model.ts | 30 ++- .../SchbTransactionType.model.ts | 30 ++- .../TRIBAL_JF_TRANSFER_MEMO.model.ts | 4 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 4 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 4 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 4 +- .../transaction-type.model.ts | 35 +++- .../app/shared/models/transaction.model.ts | 70 +------ .../resolvers/transaction-type.resolver.ts | 114 ----------- ...r.spec.ts => transaction.resolver.spec.ts} | 6 +- .../shared/resolvers/transaction.resolver.ts | 65 ++++++ .../shared/services/transaction.service.ts | 72 +++---- .../transaction-container.component.html | 44 ++--- .../transaction-container.component.ts | 19 +- .../transaction-group-a.component.html | 30 ++- .../transaction-group-ag.component.html | 42 ++-- .../transaction-group-b.component.html | 22 +-- .../transaction-group-b.component.spec.ts | 12 +- .../transaction-group-c.component.html | 30 ++- .../transaction-group-d.component.html | 26 ++- .../transaction-group-d.component.ts | 2 +- .../transaction-group-e.component.html | 22 +-- .../transaction-group-e.component.ts | 2 +- .../transaction-group-f.component.html | 24 +-- .../transaction-group-f.component.spec.ts | 2 +- .../transaction-group-fg.component.html | 36 ++-- .../transaction-group-g.component.html | 30 ++- .../transaction-group-gg.component.html | 44 ++--- .../transaction-group-h.component.html | 28 +-- .../transaction-group-h.component.spec.ts | 12 +- .../transactions-routing.module.ts | 8 +- 61 files changed, 757 insertions(+), 905 deletions(-) delete mode 100644 front-end/src/app/shared/resolvers/transaction-type.resolver.ts rename front-end/src/app/shared/resolvers/{transaction-type.resolver.spec.ts => transaction.resolver.spec.ts} (95%) create mode 100644 front-end/src/app/shared/resolvers/transaction.resolver.ts diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index 8d651f1347..b94418e478 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -1,7 +1,7 @@
- + {{ purposeDescriptionLabelNotice }}
@@ -33,23 +33,23 @@ [cols]="30" pInputTextarea [autoResize]="true" - [formControlName]="formTemplateMap['memo_text_input']" + [formControlName]="templateMap['memo_text_input']" >
-
+
diff --git a/front-end/src/app/shared/components/inputs/address-input/address-input.component.html b/front-end/src/app/shared/components/inputs/address-input/address-input.component.html index 761ced4671..3fc32eac39 100644 --- a/front-end/src/app/shared/components/inputs/address-input/address-input.component.html +++ b/front-end/src/app/shared/components/inputs/address-input/address-input.component.html @@ -3,10 +3,10 @@
- +
@@ -14,10 +14,10 @@
- +
@@ -27,10 +27,10 @@
- +
@@ -40,7 +40,7 @@
@@ -57,10 +57,10 @@
- +
diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html index a166270ae3..bbe2ed6fd0 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html @@ -3,10 +3,10 @@
- +
@@ -18,7 +18,7 @@ AGGREGATE
- +
@@ -14,10 +14,10 @@
- +
diff --git a/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html b/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html index 04a385f91e..4fa55c055a 100644 --- a/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html +++ b/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.html @@ -3,10 +3,10 @@
- +
@@ -14,10 +14,10 @@
- +
diff --git a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html index 0717e2b5f5..9fc65401aa 100644 --- a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html +++ b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html @@ -3,10 +3,10 @@
- +
@@ -14,10 +14,10 @@
- +
@@ -25,10 +25,10 @@
- +
@@ -38,10 +38,10 @@
- +
@@ -49,10 +49,10 @@
- +
diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 9b492affa1..9e96f53034 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -2,7 +2,7 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; import { NavigationEvent } from 'app/shared/models/transaction-navigation-controls.model'; -import { Transaction, ScheduleTransaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleTransaction } from 'app/shared/models/transaction.model'; import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; import { SelectItem } from 'primeng/api'; @@ -10,7 +10,7 @@ import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.m import { TransactionTypeBaseComponent } from './transaction-type-base.component'; import { TransactionFormUtils } from './transaction-form.utils'; import { TransactionContactUtils } from './transaction-contact.utils'; -import { ScheduleAFormTemplateMap } from 'app/shared/models/scha-transaction.model'; +import { TransactionTemplateMapType } from 'app/shared/models/transaction-types/transaction-type.model'; /** * This component is to help manage a form that contains 2 transactions that the @@ -31,13 +31,14 @@ export abstract class DoubleTransactionTypeBaseComponent implements OnInit, OnDestroy { abstract childFormProperties: string[]; + childTransaction?: Transaction; childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); childForm: FormGroup = this.fb.group({}); childValidateService: ValidateService = new ValidateService(); childContactId$: Subject = new BehaviorSubject(''); childContributionPurposeDescriptionLabel = ''; childNegativeAmountValueOnly = false; - childFormTemplateMap: ScheduleFormTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates + childTemplateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; override ngOnInit(): void { // Initialize primary form. @@ -45,91 +46,100 @@ export abstract class DoubleTransactionTypeBaseComponent // Initialize child form. this.childForm = this.fb.group(this.childValidateService.getFormGroupFields(this.childFormProperties)); - this.childFormTemplateMap = Transaction.getFormTemplateMap(this.transactionType?.childTransactionType); - TransactionFormUtils.onInit( - this, - this.childForm, - this.childValidateService, - this.transactionType?.childTransactionType, - this.childContactId$, - this.childFormTemplateMap - ); - - this.childOnInit(); + if (this.transaction?.children) { + this.childTransaction = this.transaction?.children[0]; + if (this.childTransaction.transactionType?.templateMap) { + this.childTemplateMap = this.childTransaction.transactionType.templateMap; + } + TransactionFormUtils.onInit( + this, + this.childForm, + this.childValidateService, + this.childTransaction, + this.childContactId$ + ); + this.childOnInit(); + } } childOnInit() { // Override contact type options if present in transactionType - if (this.transactionType?.childTransactionType && this.transactionType.childTransactionType.contactTypeOptions) { - this.childContactTypeOptions = LabelUtils.getPrimeOptions( - ContactTypeLabels, - this.transactionType.childTransactionType.contactTypeOptions - ); - } + this.childContactTypeOptions = LabelUtils.getPrimeOptions( + ContactTypeLabels, + this.childTransaction?.transactionType?.contactTypeOptions + ); - const amountProperty = this.childFormTemplateMap.amount; - const amount_schema = this.transactionType?.childTransactionType?.schema.properties[amountProperty]; - if (amount_schema?.exclusiveMaximum === 0) { - this.childNegativeAmountValueOnly = true; - this.childForm - .get(amountProperty) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((amount) => { - if (typeof amount === 'number' && amount > 0) { - this.childForm.patchValue({ amount: -1 * amount }); - } - }); + if (this.childTemplateMap) { + const amountProperty = this.childTemplateMap.amount; + const amount_schema = this.childTransaction?.transactionType?.schema.properties[amountProperty]; + if (amount_schema?.exclusiveMaximum === 0) { + this.childNegativeAmountValueOnly = true; + this.childForm + .get(amountProperty) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((amount) => { + if (typeof amount === 'number' && amount > 0) { + this.childForm.patchValue({ amount: -1 * amount }); + } + }); + } } - if (this.transactionType?.childTransactionType?.generatePurposeDescriptionLabel) { + if (this.childTransaction?.transactionType?.generatePurposeDescriptionLabel) { this.childContributionPurposeDescriptionLabel = - this.transactionType.childTransactionType.generatePurposeDescriptionLabel(); + this.childTransaction.transactionType.generatePurposeDescriptionLabel(); } // Default the child entity type to Committee - if (!this.transactionType?.childTransactionType?.transaction?.id) { + if (!this.childTransaction?.id) { this.childForm.get('entity_type')?.setValue(ContactTypes.COMMITTEE); } // Parent contribution purpose description updates with child contributor name updates. - this.childForm - .get(this.childFormTemplateMap.organization_name) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.transactionType?.childTransactionType?.transaction) { - const key = this.childFormTemplateMap.organization_name as keyof ScheduleTransaction; - ((this.transactionType.childTransactionType.transaction as ScheduleTransaction)[key] as string) = value; - } - this.updatePurposeDescription(); - }); - this.childForm - .get(this.childFormTemplateMap.first_name) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.transactionType?.childTransactionType?.transaction) { - const key = this.childFormTemplateMap.first_name as keyof ScheduleTransaction; - ((this.transactionType.childTransactionType.transaction as ScheduleTransaction)[key] as string) = value; - } - this.updatePurposeDescription(); - }); - this.childForm - .get(this.childFormTemplateMap.last_name) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.transactionType?.childTransactionType?.transaction) { - const key = this.childFormTemplateMap.last_name as keyof ScheduleTransaction; - ((this.transactionType.childTransactionType.transaction as ScheduleTransaction)[key] as string) = value; - } - this.updatePurposeDescription(); - }); + if (this.childTemplateMap) { + this.childForm + .get(this.childTemplateMap.organization_name) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + if (this.childTransaction && this.childTemplateMap) { + const key = this.childTemplateMap.organization_name as keyof ScheduleTransaction; + ((this.childTransaction as ScheduleTransaction)[key] as string) = value; + } + this.updatePurposeDescription(); + }); + this.childForm + .get(this.childTemplateMap.first_name) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + if (this.childTransaction && this.childTemplateMap) { + const key = this.childTemplateMap.first_name as keyof ScheduleTransaction; + ((this.childTransaction as ScheduleTransaction)[key] as string) = value; + } + this.updatePurposeDescription(); + }); + this.childForm + .get(this.childTemplateMap.last_name) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + if (this.childTransaction && this.childTemplateMap) { + const key = this.childTemplateMap.last_name as keyof ScheduleTransaction; + ((this.childTransaction as ScheduleTransaction)[key] as string) = value; + } + this.updatePurposeDescription(); + }); + } // Child amount must match parent contribution amount - this.form - .get(this.childFormTemplateMap.amount) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - this.childForm.get(this.childFormTemplateMap.amount)?.setValue(value); - }); + if (this.templateMap) { + this.form + .get(this.templateMap.amount) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + if (this.childTemplateMap) { + this.childForm.get(this.childTemplateMap.amount)?.setValue(value); + } + }); + } } override ngOnDestroy(): void { @@ -138,14 +148,15 @@ export abstract class DoubleTransactionTypeBaseComponent } private updatePurposeDescription() { - const childTransaction: ScheduleTransaction = this.transactionType?.childTransactionType - ?.transaction as ScheduleTransaction; - childTransaction.entity_type = this.childForm.get('entity_type')?.value; - - if (this.transactionType?.generatePurposeDescription) { - this.form.patchValue({ - [this.childFormTemplateMap.purpose_descrip]: this.transactionType.generatePurposeDescriptionWrapper(), - }); + if (this.childTransaction && this.childTemplateMap) { + (this.childTransaction as ScheduleTransaction).entity_type = this.childForm.get('entity_type')?.value; + + if (this.childTransaction.transactionType?.generatePurposeDescription) { + this.form.patchValue({ + [this.childTemplateMap.purpose_descrip]: + this.childTransaction.transactionType.generatePurposeDescriptionWrapper(this.childTransaction), + }); + } } } @@ -157,14 +168,14 @@ export abstract class DoubleTransactionTypeBaseComponent } const payload: Transaction = TransactionFormUtils.getPayloadTransaction( - this.transactionType, + this.transaction, this.validateService, this.form, this.formProperties ); payload.children = [ TransactionFormUtils.getPayloadTransaction( - this.transactionType?.childTransactionType, + this.childTransaction, this.childValidateService, this.childForm, this.childFormProperties @@ -186,21 +197,16 @@ export abstract class DoubleTransactionTypeBaseComponent override resetForm() { this.formSubmitted = false; - TransactionFormUtils.resetForm(this.form, this.transactionType, this.contactTypeOptions); - TransactionFormUtils.resetForm( - this.childForm, - this.transactionType?.childTransactionType, - this.childContactTypeOptions - ); + TransactionFormUtils.resetForm(this.form, this.transaction, this.contactTypeOptions); + TransactionFormUtils.resetForm(this.childForm, this.childTransaction, this.childContactTypeOptions); } childOnContactLookupSelect(selectItem: SelectItem) { TransactionContactUtils.onContactLookupSelect( selectItem, this.childForm, - this.transactionType?.childTransactionType, - this.childContactId$, - this.childFormTemplateMap + this.childTransaction, + this.childContactId$ ); } } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts index 0e5c30ad3e..7928e84a61 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts @@ -1,10 +1,10 @@ import { AbstractControl, FormGroup } from '@angular/forms'; -import { ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionTemplateMapType } from 'app/shared/models/transaction-types/transaction-type.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { SelectItem } from 'primeng/api'; import { Subject } from 'rxjs'; import { Contact, ContactFields, ContactTypes } from '../../models/contact.model'; +import { Transaction } from 'app/shared/models/transaction.model'; export class TransactionContactUtils { static getEditTransactionContactConfirmationMessage( @@ -12,7 +12,7 @@ export class TransactionContactUtils { contact: Contact | undefined, form: FormGroup, fecDatePipe: FecDatePipe, - formTemplateMap: ScheduleFormTemplateMapType + templateMap: TransactionTemplateMapType ): string | undefined { if (contact) { const changesMessage = 'Change(s):
    '.concat( @@ -23,7 +23,7 @@ export class TransactionContactUtils { contactName = `${contact.last_name}, ${contact.first_name}`; contactName += contact.middle_name ? ' ' + contact.middle_name : ''; } - const dateReceived = fecDatePipe.transform(form.get(formTemplateMap.date)?.value); + const dateReceived = fecDatePipe.transform(form.get(templateMap.date)?.value); return ( `By saving this transaction, you are also updating the contact for ` + `${contactName}. This change will only affect transactions with ` + @@ -36,23 +36,23 @@ export class TransactionContactUtils { static getCreateTransactionContactConfirmationMessage( contactType: ContactTypes, form: FormGroup, - formTemplateMap: ScheduleFormTemplateMapType + templateMap: TransactionTemplateMapType ): string { let confirmationContactTitle = ''; switch (contactType) { case ContactTypes.INDIVIDUAL: confirmationContactTitle = `individual contact for ` + - `${form.get(formTemplateMap.last_name)?.value}, ` + - `${form.get(formTemplateMap.first_name)?.value}`; + `${form.get(templateMap.last_name)?.value}, ` + + `${form.get(templateMap.first_name)?.value}`; break; case ContactTypes.COMMITTEE: confirmationContactTitle = - `committee contact for ` + `${form.get(formTemplateMap.organization_name)?.value}`; + `committee contact for ` + `${form.get(templateMap.organization_name)?.value}`; break; case ContactTypes.ORGANIZATION: confirmationContactTitle = - `organization contact for ` + `${form.get(formTemplateMap.organization_name)?.value}`; + `organization contact for ` + `${form.get(templateMap.organization_name)?.value}`; break; } return `By saving this transaction, you're also creating a new ${confirmationContactTitle}.`; @@ -68,27 +68,27 @@ export class TransactionContactUtils { static setTransactionContactFormChanges( form: FormGroup, contact: Contact | undefined, - formTemplateMap: ScheduleFormTemplateMapType + templateMap: TransactionTemplateMapType ): string[] { function getFormField( form: FormGroup, field: string, - formTemplateMap: ScheduleFormTemplateMapType + templateMap: TransactionTemplateMapType ): AbstractControl | null { if (field == 'committee_id') { - return form.get(formTemplateMap.committee_fec_id); + return form.get(templateMap.committee_fec_id); } if (field == 'name') { - return form.get(formTemplateMap.organization_name); + return form.get(templateMap.organization_name); } - return form.get(formTemplateMap[field as keyof ScheduleFormTemplateMapType]); + return form.get(templateMap[field as keyof TransactionTemplateMapType]); } if (contact) { return Object.entries(ContactFields) .map(([field, label]: string[]) => { const contactValue = contact[field as keyof typeof contact]; - const formField = getFormField(form, field, formTemplateMap); + const formField = getFormField(form, field, templateMap); if (formField && formField?.value !== contactValue) { contact[field as keyof typeof contact] = (formField.value || '') as never; @@ -104,38 +104,38 @@ export class TransactionContactUtils { static onContactLookupSelect( selectItem: SelectItem, form: FormGroup, - transactionType: TransactionType | undefined, - contactId$: Subject, - formTemplateMap: ScheduleFormTemplateMapType + transaction: Transaction | undefined, + contactId$: Subject ) { if (selectItem) { const contact: Contact = selectItem.value; - if (contact) { + const templateMap = transaction?.transactionType?.templateMap; + if (contact && templateMap) { switch (contact.type) { case ContactTypes.INDIVIDUAL: - form.get(formTemplateMap.last_name)?.setValue(contact.last_name); - form.get(formTemplateMap.first_name)?.setValue(contact.first_name); - form.get(formTemplateMap.middle_name)?.setValue(contact.middle_name); - form.get(formTemplateMap.prefix)?.setValue(contact.prefix); - form.get(formTemplateMap.suffix)?.setValue(contact.suffix); - form.get(formTemplateMap.employer)?.setValue(contact.employer); - form.get(formTemplateMap.occupation)?.setValue(contact.occupation); + form.get(templateMap.last_name)?.setValue(contact.last_name); + form.get(templateMap.first_name)?.setValue(contact.first_name); + form.get(templateMap.middle_name)?.setValue(contact.middle_name); + form.get(templateMap.prefix)?.setValue(contact.prefix); + form.get(templateMap.suffix)?.setValue(contact.suffix); + form.get(templateMap.employer)?.setValue(contact.employer); + form.get(templateMap.occupation)?.setValue(contact.occupation); break; case ContactTypes.COMMITTEE: - form.get(formTemplateMap.committee_fec_id)?.setValue(contact.committee_id); - form.get(formTemplateMap.organization_name)?.setValue(contact.name); + form.get(templateMap.committee_fec_id)?.setValue(contact.committee_id); + form.get(templateMap.organization_name)?.setValue(contact.name); break; case ContactTypes.ORGANIZATION: - form.get(formTemplateMap.organization_name)?.setValue(contact.name); + form.get(templateMap.organization_name)?.setValue(contact.name); break; } - form.get(formTemplateMap.street_1)?.setValue(contact.street_1); - form.get(formTemplateMap.street_2)?.setValue(contact.street_2); - form.get(formTemplateMap.city)?.setValue(contact.city); - form.get(formTemplateMap.state)?.setValue(contact.state); - form.get(formTemplateMap.zip)?.setValue(contact.zip); - if (transactionType?.transaction) { - transactionType.transaction.contact = contact; + form.get(templateMap.street_1)?.setValue(contact.street_1); + form.get(templateMap.street_2)?.setValue(contact.street_2); + form.get(templateMap.city)?.setValue(contact.city); + form.get(templateMap.state)?.setValue(contact.state); + form.get(templateMap.zip)?.setValue(contact.zip); + if (transaction) { + transaction.contact = contact; } contactId$.next(contact.id || ''); } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index cc485e89e9..0727982a24 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -1,6 +1,6 @@ import { FormGroup } from '@angular/forms'; import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction, ScheduleTransaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleTransaction } from 'app/shared/models/transaction.model'; import { ValidateService } from 'app/shared/services/validate.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; import { combineLatestWith, Observable, of, startWith, Subject, switchMap, takeUntil } from 'rxjs'; @@ -8,8 +8,6 @@ import { ContactTypes } from '../../models/contact.model'; import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; -import { SchATransaction } from 'app/shared/models/scha-transaction.model'; -import { SchBTransaction } from 'app/shared/models/schb-transaction.model'; export class TransactionFormUtils { /** @@ -28,12 +26,11 @@ export class TransactionFormUtils { component: TransactionTypeBaseComponent | DoubleTransactionTypeBaseComponent, form: FormGroup, validateService: ValidateService, - transactionType: TransactionType | undefined, - contactId$: Subject, - formTemplateMap: ScheduleFormTemplateMapType + transaction: Transaction | undefined, + contactId$: Subject ): void { // Initialize validation tracking of current JSON schema and form data - validateService.formValidatorSchema = transactionType?.schema; + validateService.formValidatorSchema = transaction?.transactionType?.schema; validateService.formValidatorForm = form; // Intialize form values @@ -41,11 +38,11 @@ export class TransactionFormUtils { return !!transaction?.id; } - if (isExisting(transactionType?.transaction)) { - const txn = { ...transactionType?.transaction } as Transaction; + if (isExisting(transaction)) { + const txn = { ...transaction } as Transaction; form.patchValue({ ...txn }); - TransactionMemoUtils.patchMemoText(transactionType, form); + TransactionMemoUtils.patchMemoText(transaction, form); form.get('entity_type')?.disable(); contactId$.next(txn.contact_id || ''); @@ -55,76 +52,74 @@ export class TransactionFormUtils { contactId$.next(''); } + const templateMap = transaction?.transactionType?.templateMap; + if (!templateMap) { + throw new Error('Cannot find template map when initializing transaction form'); + } + form .get('entity_type') ?.valueChanges.pipe(takeUntil(component.destroy$)) .subscribe((value: string) => { if (value === ContactTypes.INDIVIDUAL || value === ContactTypes.CANDIDATE) { - form.get(formTemplateMap.organization_name)?.reset(); + form.get(templateMap.organization_name)?.reset(); } if (value === ContactTypes.ORGANIZATION || value === ContactTypes.COMMITTEE) { - form.get(formTemplateMap.last_name)?.reset(); - form.get(formTemplateMap.first_name)?.reset(); - form.get(formTemplateMap.middle_name)?.reset(); - form.get(formTemplateMap.prefix)?.reset(); - form.get(formTemplateMap.suffix)?.reset(); - form.get(formTemplateMap.employer)?.reset(); - form.get(formTemplateMap.occupation)?.reset(); + form.get(templateMap.last_name)?.reset(); + form.get(templateMap.first_name)?.reset(); + form.get(templateMap.middle_name)?.reset(); + form.get(templateMap.prefix)?.reset(); + form.get(templateMap.suffix)?.reset(); + form.get(templateMap.employer)?.reset(); + form.get(templateMap.occupation)?.reset(); } }); form - ?.get(formTemplateMap.aggregate) + ?.get(templateMap.aggregate) ?.valueChanges.pipe(takeUntil(component.destroy$)) .subscribe(() => { - form.get(formTemplateMap.employer)?.updateValueAndValidity(); - form.get(formTemplateMap.occupation)?.updateValueAndValidity(); + form.get(templateMap.employer)?.updateValueAndValidity(); + form.get(templateMap.occupation)?.updateValueAndValidity(); }); const previous_transaction$: Observable = - form.get(formTemplateMap.date)?.valueChanges.pipe( - startWith(form.get(formTemplateMap.date)?.value), + form.get(templateMap.date)?.valueChanges.pipe( + startWith(form.get(templateMap.date)?.value), combineLatestWith(contactId$), switchMap(([contribution_date, contactId]) => { - return component.transactionService.getPreviousTransaction(transactionType, contactId, contribution_date); + return component.transactionService.getPreviousTransaction(transaction, contactId, contribution_date); }) ) || of(undefined); form - .get(formTemplateMap.amount) + .get(templateMap.amount) ?.valueChanges.pipe( - startWith(form.get(formTemplateMap.amount)?.value), + startWith(form.get(templateMap.amount)?.value), combineLatestWith(previous_transaction$), takeUntil(component.destroy$) ) .subscribe(([amount, previous_transaction]) => { - const key = formTemplateMap.aggregate as keyof ScheduleTransaction; + const key = templateMap.aggregate as keyof ScheduleTransaction; const previousAggregate = previous_transaction ? +((previous_transaction as ScheduleTransaction)[key] || 0) : 0; - form.get(formTemplateMap.aggregate)?.setValue(+amount + previousAggregate); + form.get(templateMap.aggregate)?.setValue(+amount + previousAggregate); }); } static getPayloadTransaction( - transactionType: TransactionType | undefined, + transaction: Transaction | undefined, validateService: ValidateService, form: FormGroup, formProperties: string[] ): Transaction { - let formValues = validateService.getFormValues(form, formProperties); - if (transactionType) formValues = TransactionMemoUtils.retrieveMemoText(transactionType, form, formValues); - - if (!transactionType?.transaction) { + if (!transaction) { throw new Error('Payload transaction not found'); } - // prettier-ignore - function fromJSON(transactionType: TransactionType, json: any, depth = 2): ScheduleTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any - if (transactionType.scheduleId === 'A') return SchATransaction.fromJSON(json, depth); - if (transactionType.scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); - throw new Error('Missing transaction type schedule declaration when generating schedule JSON payload'); - } + let formValues = validateService.getFormValues(form, formProperties); + formValues = TransactionMemoUtils.retrieveMemoText(transaction, form, formValues); - const payload: ScheduleTransaction = fromJSON(transactionType, { - ...transactionType?.transaction, + const payload: ScheduleTransaction = Transaction.fromJSON({ + ...transaction, ...formValues, }); if (payload.children) { @@ -134,7 +129,7 @@ export class TransactionFormUtils { return payload; } - static resetForm(form: FormGroup, transactionType: TransactionType | undefined, contactTypeOptions: PrimeOptions) { + static resetForm(form: FormGroup, transaction: Transaction | undefined, contactTypeOptions: PrimeOptions) { form.reset(); form.markAsPristine(); form.markAsUntouched(); @@ -142,16 +137,19 @@ export class TransactionFormUtils { // Override the default entity_type value if called for by the defaultContactTypeOption // in the TransactionType let defaultContactTypeOption: string = contactTypeOptions[0]?.code; - if (transactionType?.defaultContactTypeOption) { - defaultContactTypeOption = transactionType.defaultContactTypeOption; + if (transaction?.transactionType?.defaultContactTypeOption) { + defaultContactTypeOption = transaction.transactionType.defaultContactTypeOption; } - form.patchValue({ - entity_type: defaultContactTypeOption, - contribution_aggregate: '0', - memo_code: this.getMemoCodeConstant(transactionType), - contribution_purpose_descrip: transactionType?.generatePurposeDescriptionWrapper(), - }); + if (transaction?.transactionType) { + form.patchValue({ + entity_type: defaultContactTypeOption, + [transaction.transactionType.templateMap.aggregate]: '0', + memo_code: this.getMemoCodeConstant(transaction?.transactionType), + [transaction.transactionType.templateMap.purpose_descrip]: + transaction?.transactionType?.generatePurposeDescriptionWrapper(transaction), + }); + } } static getMemoCodeConstant(transactionType?: TransactionType): boolean | undefined { diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-memo.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-memo.utils.ts index a5554a4914..9a91536cc3 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-memo.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-memo.utils.ts @@ -1,23 +1,23 @@ import { FormGroup } from '@angular/forms'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { Transaction } from 'app/shared/models/transaction.model'; import { MemoText } from 'app/shared/models/memo-text.model'; export class TransactionMemoUtils { // prettier-ignore - static retrieveMemoText(transactionType: TransactionType, form: FormGroup, formValues: any) { // eslint-disable-line @typescript-eslint/no-explicit-any + static retrieveMemoText(transaction: Transaction, form: FormGroup, formValues: any) { // eslint-disable-line @typescript-eslint/no-explicit-any const text = form.get('memo_text_input')?.value; if (text && text.length > 0) { const memo_text = MemoText.fromJSON({ text4000: text, - report_id: transactionType?.transaction?.report_id, + report_id: transaction?.report_id, rec_type: 'TEXT', - filer_committee_id_number: transactionType?.transaction?.filer_committee_id_number, + filer_committee_id_number: transaction?.filer_committee_id_number, transaction_id_number: '', - back_reference_sched_form_name: transactionType?.transaction?.form_type, + back_reference_sched_form_name: transaction?.form_type, }); - if (transactionType.transaction?.id) { - memo_text.transaction_uuid = transactionType.transaction.id; + if (transaction?.id) { + memo_text.transaction_uuid = transaction.id; } formValues['memo_text'] = memo_text; @@ -28,8 +28,8 @@ export class TransactionMemoUtils { return formValues; } - static patchMemoText(transactionType: TransactionType | undefined, form: FormGroup) { - const memo_text = transactionType?.transaction?.memo_text; + static patchMemoText(transaction: Transaction | undefined, form: FormGroup) { + const memo_text = transaction?.memo_text; if (memo_text?.text4000) { form.patchValue({ memo_text_input: memo_text.text4000 }); } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index f3f8752d36..4fdf468cb6 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -1,11 +1,7 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; -import { - SchATransaction, - ScheduleATransactionTypes, - ScheduleAFormTemplateMap, -} from 'app/shared/models/scha-transaction.model'; +// import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { NavigationAction, NavigationControl, @@ -13,8 +9,11 @@ import { NavigationEvent, TransactionNavigationControls, } from 'app/shared/models/transaction-navigation-controls.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction, ScheduleFormTemplateMapType } from 'app/shared/models/transaction.model'; +import { + TransactionTemplateMapType, + TransactionType, +} from 'app/shared/models/transaction-types/transaction-type.model'; +import { Transaction, ScheduleTransaction, ScheduleTransactionTypes } from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; @@ -31,7 +30,7 @@ import { TransactionFormUtils } from './transaction-form.utils'; template: '', }) export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy { - @Input() transactionType: TransactionType | undefined; + @Input() transaction: Transaction | undefined; abstract formProperties: string[]; ContactTypes = ContactTypes; @@ -42,9 +41,9 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy formSubmitted = false; memoItemHelpText = 'The dollar amount in a memo item is not incorporated into the total figure for the schedule.'; purposeDescriptionLabel = ''; - childTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; + // childTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; negativeAmountValueOnly = false; - formTemplateMap: ScheduleFormTemplateMapType = ScheduleAFormTemplateMap; // Text strings and fields specific to a particular schedule to map into the transaction input form templates + templateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; form: FormGroup = this.fb.group({}); @@ -61,39 +60,39 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ngOnInit(): void { this.form = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); - this.formTemplateMap = Transaction.getFormTemplateMap(this.transactionType); - TransactionFormUtils.onInit( - this, - this.form, - this.validateService, - this.transactionType, - this.contactId$, - this.formTemplateMap - ); + if (this.transaction?.transactionType?.templateMap) { + this.templateMap = this.transaction.transactionType.templateMap; + } + TransactionFormUtils.onInit(this, this.form, this.validateService, this.transaction, this.contactId$); this.parentOnInit(); } parentOnInit() { // Override contact type options if present in transactionType - if (this.transactionType && this.transactionType.contactTypeOptions) { - this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, this.transactionType.contactTypeOptions); + if (this.transaction?.transactionType && this.transaction?.transactionType.contactTypeOptions) { + this.contactTypeOptions = LabelUtils.getPrimeOptions( + ContactTypeLabels, + this.transaction.transactionType.contactTypeOptions + ); } - const amount_schema = this.transactionType?.schema.properties[this.formTemplateMap.amount]; - if (amount_schema?.exclusiveMaximum === 0) { - this.negativeAmountValueOnly = true; - this.form - .get(this.formTemplateMap.amount) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((amount) => { - if (typeof amount === 'number' && amount > 0) { - this.form.patchValue({ amount: -1 * amount }); - } - }); + if (this.templateMap?.amount) { + const amount_schema = this.transaction?.transactionType?.schema.properties[this.templateMap.amount]; + if (amount_schema?.exclusiveMaximum === 0) { + this.negativeAmountValueOnly = true; + this.form + .get(this.templateMap.amount) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((amount) => { + if (typeof amount === 'number' && amount > 0) { + this.form.patchValue({ amount: -1 * amount }); + } + }); + } } - if (this.transactionType?.generatePurposeDescriptionLabel) { - this.purposeDescriptionLabel = this.transactionType.generatePurposeDescriptionLabel(); + if (this.transaction?.transactionType?.generatePurposeDescriptionLabel) { + this.purposeDescriptionLabel = this.transaction?.transactionType.generatePurposeDescriptionLabel(); } } @@ -111,7 +110,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } const payload: Transaction = TransactionFormUtils.getPayloadTransaction( - this.transactionType, + this.transaction, this.validateService, this.form, this.formProperties @@ -128,11 +127,15 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy payload: Transaction, targetDialog: 'dialog' | 'childDialog' = 'dialog' ) { - if (confirmTransaction.contact_id && confirmTransaction.contact) { + if ( + confirmTransaction.contact_id && + confirmTransaction.contact && + confirmTransaction?.transactionType?.templateMap + ) { const transactionContactChanges = TransactionContactUtils.setTransactionContactFormChanges( form, confirmTransaction.contact, - this.formTemplateMap + confirmTransaction.transactionType.templateMap ); if (transactionContactChanges?.length) { const confirmationMessage = TransactionContactUtils.getEditTransactionContactConfirmationMessage( @@ -140,7 +143,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy confirmTransaction.contact, form, this.fecDatePipe, - this.formTemplateMap + confirmTransaction.transactionType.templateMap ); this.confirmationService.confirm({ key: targetDialog, @@ -160,25 +163,29 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy acceptCallback.call(this, navigationEvent, payload); } } else { - const confirmationMessage = TransactionContactUtils.getCreateTransactionContactConfirmationMessage( - (confirmTransaction as SchATransaction).entity_type as ContactTypes, - form, - this.formTemplateMap - ); - this.confirmationService.confirm({ - key: targetDialog, - header: 'Confirm', - icon: 'pi pi-info-circle', - message: confirmationMessage, - acceptLabel: 'Continue', - rejectLabel: 'Cancel', - accept: () => { - acceptCallback.call(this, navigationEvent, payload); - }, - reject: () => { - return; - }, - }); + if (confirmTransaction?.transactionType?.templateMap) { + const confirmationMessage = TransactionContactUtils.getCreateTransactionContactConfirmationMessage( + (confirmTransaction as ScheduleTransaction).entity_type as ContactTypes, + form, + confirmTransaction.transactionType.templateMap + ); + this.confirmationService.confirm({ + key: targetDialog, + header: 'Confirm', + icon: 'pi pi-info-circle', + message: confirmationMessage, + acceptLabel: 'Continue', + rejectLabel: 'Cancel', + accept: () => { + acceptCallback.call(this, navigationEvent, payload); + }, + reject: () => { + return; + }, + }); + } else { + throw new Error('Cannot find template map when confirming transaction'); + } } } @@ -210,11 +217,11 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } getNavigationControls(): TransactionNavigationControls { - return this.transactionType?.navigationControls || new TransactionNavigationControls([], [], []); + return this.transaction?.transactionType?.navigationControls || new TransactionNavigationControls([], [], []); } getInlineControls(): NavigationControl[] { - return this.getNavigationControls().getNavigationControls('inline', this.transactionType?.transaction); + return this.getNavigationControls().getNavigationControls('inline', this.transaction); } handleNavigate(navigationEvent: NavigationEvent): void { @@ -254,7 +261,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy resetForm() { this.formSubmitted = false; - TransactionFormUtils.resetForm(this.form, this.transactionType, this.contactTypeOptions); + TransactionFormUtils.resetForm(this.form, this.transaction, this.contactTypeOptions); } isMemoCodeReadOnly(transactionType?: TransactionType): boolean { @@ -268,28 +275,15 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } onContactLookupSelect(selectItem: SelectItem) { - TransactionContactUtils.onContactLookupSelect( - selectItem, - this.form, - this.transactionType, - this.contactId$, - this.formTemplateMap - ); + TransactionContactUtils.onContactLookupSelect(selectItem, this.form, this.transaction, this.contactId$); } getEntityType(): string { return this.form.get('entity_type')?.value || ''; } - createSubTransaction(event: { value: ScheduleATransactionTypes }) { - this.save( - new NavigationEvent( - NavigationAction.SAVE, - NavigationDestination.CHILD, - this.transactionType?.transaction, - event.value - ) - ); + createSubTransaction(event: { value: ScheduleTransactionTypes }) { + this.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.CHILD, this.transaction, event.value)); this.form.get('subTransaction')?.reset(); // If the save fails, this clears the dropdown } } diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 2bf189536c..de987afec7 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -1,5 +1,5 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction, AggregationGroups, ScheduleFormTemplateMapType } from './transaction.model'; +import { Transaction, AggregationGroups } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; @@ -61,7 +61,7 @@ export class SchATransaction extends Transaction { } // prettier-ignore - static fromJSON(json: any, depth = 2): SchATransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + static overridefromJSON(json: any, depth = 2): SchATransaction { // eslint-disable-line @typescript-eslint/no-explicit-any const transaction = plainToClass(SchATransaction, json); if (transaction.transaction_type_identifier) { const transactionType = TransactionTypeUtils.factory(transaction.transaction_type_identifier); @@ -93,27 +93,27 @@ export class SchATransaction extends Transaction { /* We treat the parent's children as SchATransaction objects in order to access fields exclusive to the SchATransaction model */ for (const child of this.children as SchATransaction[]) { - if (child.transaction_type_identifier) { - // Instantiate a TransactionType object in order to access the purpose description generator - const transactionType = TransactionTypeUtils.factory(child.transaction_type_identifier); + // if (child.transaction_type_identifier) { + // Instantiate a TransactionType object in order to access the purpose description generator + // const transactionType = TransactionTypeUtils.factory(child.transaction_type_identifier); - // Prep the TransactionType by setting fields it will need when generating a purpose description - transactionType.transaction = child; + // Prep the TransactionType by setting fields it will need when generating a purpose description + // transactionType.transaction = child; - /* Make a new object to represent the parent within the TransactionType + /* Make a new object to represent the parent within the TransactionType because setting the parent equal to the this causes an infinite loop */ - if (transactionType.transaction.parent_transaction) - transactionType.transaction.parent_transaction = { - id: this.id, - contributor_organization_name: this.contributor_organization_name, - } as SchATransaction; + // if (child.parent_transaction) + // transactionType.transaction.parent_transaction = { + // id: this.id, + // contributor_organization_name: this.contributor_organization_name, + // } as SchATransaction; - // Modify the purpose description this to reflect the changes to child transactions - if (transactionType.generatePurposeDescription) { - const newDescrip = transactionType.generatePurposeDescriptionWrapper(); - child.contribution_purpose_descrip = newDescrip; - } + // Modify the purpose description this to reflect the changes to child transactions + if (child?.transactionType?.generatePurposeDescription) { + const newDescrip = child.transactionType.generatePurposeDescriptionWrapper(child); + child.contribution_purpose_descrip = newDescrip; } + // } // Always add the child into the array or else it will be lost outChildren.push(child); @@ -150,8 +150,7 @@ export class SchATransaction extends Transaction { // Update the CPD if (payload?.transactionType?.generatePurposeDescription) { - payload.transactionType.transaction = payload; - payload.contribution_purpose_descrip = payload.transactionType.generatePurposeDescriptionWrapper(); + payload.contribution_purpose_descrip = payload.transactionType.generatePurposeDescriptionWrapper(payload); } return payload; @@ -461,29 +460,3 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ], [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], ]; - -// Mapping of schedule fields to the group input component form templates -export const ScheduleAFormTemplateMap: ScheduleFormTemplateMapType = { - last_name: 'contributor_last_name', - first_name: 'contributor_first_name', - middle_name: 'contributor_middle_name', - prefix: 'contributor_prefix', - suffix: 'contributor_suffix', - street_1: 'contributor_street_1', - street_2: 'contributor_street_2', - city: 'contributor_city', - state: 'contributor_state', - zip: 'contributor_zip', - employer: 'contributor_employer', - occupation: 'contributor_occupation', - organization_name: 'contributor_organization_name', - committee_fec_id: 'donor_committee_fec_id', - date: 'contribution_date', - memo_code: 'memo_code', - amount: 'contribution_amount', - aggregate: 'contribution_aggregate', - purpose_descrip: 'contribution_purpose_descrip', - purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', - memo_text_input: 'memo_text_input', - category_code: '', -}; diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 298099a52e..31e68db964 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -1,5 +1,5 @@ import { plainToClass, Transform } from 'class-transformer'; -import { Transaction, AggregationGroups, ScheduleFormTemplateMapType } from './transaction.model'; +import { Transaction, AggregationGroups } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; @@ -52,7 +52,7 @@ export class SchBTransaction extends Transaction { override apiEndpoint = '/transactions/schedule-b'; // prettier-ignore - static fromJSON(json: any, depth = 2): SchBTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + static override fromJSON(json: any, depth = 2): SchBTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any const transaction = plainToClass(SchBTransaction, json); if (transaction.transaction_type_identifier) { const transactionType = TransactionTypeUtils.factory(transaction.transaction_type_identifier); @@ -275,29 +275,3 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO, 'Payroll Memo'], [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_VOID, 'Void of 100% Federal Election Activity'], ]; - -// Mapping of schedule fields to the group input component form templates -// export const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { -// last_name: 'payee_last_name', -// first_name: 'payee_first_name', -// middle_name: 'payee_middle_name', -// prefix: 'payee_prefix', -// suffix: 'payee_suffix', -// street_1: 'payee_street_1', -// street_2: 'payee_street_2', -// city: 'payee_city', -// state: 'payee_state', -// zip: 'payee_zip', -// employer: '', -// occupation: '', -// organization_name: 'payee_organization_name', -// committee_fec_id: 'beneficiary_committee_fec_id', -// date: 'expenditure_date', -// memo_code: 'memo_code', -// amount: 'expenditure_amount', -// aggregate: 'aggregate_amount', -// purpose_descrip: 'expenditure_purpose_descrip', -// purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', -// memo_text_input: 'memo_text_input', -// category_code: 'category_code', -// }; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts index e7b445b21f..568b5b4ade 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts @@ -11,11 +11,12 @@ export class EARMARK_RECEIPT extends SchaTransactionType { componentGroupId = 'AG'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_RECEIPT); schema = schema; - override childTransactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.EARMARK_MEMO); + override dependentChildTransactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.EARMARK_MEMO); override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS_MINIMAL; - override generatePurposeDescription(): string { - const earmarkMemo: SchATransaction = this.childTransactionType?.transaction as SchATransaction; + override generatePurposeDescription(transaction: SchATransaction): string { + if (!transaction.children) return ''; + const earmarkMemo: SchATransaction = transaction.children[0] as SchATransaction; let conduit = earmarkMemo?.contributor_organization_name || ''; if ( earmarkMemo?.entity_type === ContactTypes.INDIVIDUAL && diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts index 3e46da763b..f3db67b521 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts @@ -18,7 +18,7 @@ export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchaTransactionType { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION ); schema = schema; - override childTransactionType = TransactionTypeUtils.factory( + override dependentChildTransactionType = TransactionTypeUtils.factory( ScheduleATransactionTypes.EARMARK_MEMO_CONVENTION_ACCOUNT ); override navigationControls: TransactionNavigationControls = new TransactionNavigationControls( @@ -27,8 +27,9 @@ export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchaTransactionType { [SAVE_LIST_CONTROL] ); - override generatePurposeDescription(): string { - const subTransaction: SchATransaction = this.childTransactionType?.transaction as SchATransaction; + override generatePurposeDescription(transaction: SchATransaction): string { + if (!transaction.children) return ''; + const subTransaction: SchATransaction = transaction.children[0] as SchATransaction; let conduit = subTransaction?.contributor_organization_name || ''; if ( subTransaction?.entity_type === ContactTypes.INDIVIDUAL && diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts index 0fe44ab743..bb89504c09 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts @@ -18,7 +18,7 @@ export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchaTransactionType { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION ); schema = schema; - override childTransactionType = TransactionTypeUtils.factory( + override dependentChildTransactionType = TransactionTypeUtils.factory( ScheduleATransactionTypes.EARMARK_MEMO_HEADQUARTERS_ACCOUNT ); override navigationControls: TransactionNavigationControls = new TransactionNavigationControls( @@ -27,8 +27,9 @@ export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchaTransactionType { [SAVE_LIST_CONTROL] ); - override generatePurposeDescription(): string { - const subTransaction: SchATransaction = this.childTransactionType?.transaction as SchATransaction; + override generatePurposeDescription(transaction: SchATransaction): string { + if (!transaction.children) return ''; + const subTransaction: SchATransaction = transaction.children[0] as SchATransaction; let conduit = subTransaction?.contributor_organization_name || ''; if ( subTransaction?.entity_type === ContactTypes.INDIVIDUAL && diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts index 3bea9e7014..8a5d97e2ac 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts @@ -18,15 +18,18 @@ export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends SchaTransactionType { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_RECOUNT_ACCOUNT_CONTRIBUTION ); schema = schema; - override childTransactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.EARMARK_MEMO_RECOUNT_ACCOUNT); + override dependentChildTransactionType = TransactionTypeUtils.factory( + ScheduleATransactionTypes.EARMARK_MEMO_RECOUNT_ACCOUNT + ); override navigationControls: TransactionNavigationControls = new TransactionNavigationControls( [], [CANCEL_CONTROL], [SAVE_LIST_CONTROL] ); - override generatePurposeDescription(): string { - const subTransaction: SchATransaction = this.childTransactionType?.transaction as SchATransaction; + override generatePurposeDescription(transaction: SchATransaction): string { + if (!transaction.children) return ''; + const subTransaction: SchATransaction = transaction.children[0] as SchATransaction; let conduit = subTransaction?.contributor_organization_name || ''; if ( subTransaction?.entity_type === ContactTypes.INDIVIDUAL && diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts index 290c0fe08a..0963f08ccb 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts @@ -13,8 +13,8 @@ export class INDIVIDUAL_JF_TRANSFER_MEMO extends SchaTransactionType { LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { - return `JF Memo: ${(this.transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; + override generatePurposeDescription(transaction: SchATransaction): string { + return `JF Memo: ${(transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 5c9b2826e8..dd2b787574 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaT LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Pres. Nominating Convention Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index a9d19cb1d3..00484e9f37 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends Sch LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Headquarters Buildings Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction).contributor_organization_name + (transaction?.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 2219032433..4c980d005d 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTran LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Recount/Legal Proceedings Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts index a4a2ce6295..a0a700d2bb 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts @@ -11,11 +11,12 @@ export class PAC_EARMARK_RECEIPT extends SchaTransactionType { componentGroupId = 'FG'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_EARMARK_RECEIPT); schema = schema; - override childTransactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.PAC_EARMARK_MEMO); + override dependentChildTransactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.PAC_EARMARK_MEMO); override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS_MINIMAL; - override generatePurposeDescription(): string { - const earmarkMemo: SchATransaction = this.childTransactionType?.transaction as SchATransaction; + override generatePurposeDescription(transaction: SchATransaction): string { + if (!transaction.children) return ''; + const earmarkMemo: SchATransaction = transaction.children[0] as SchATransaction; let conduit = earmarkMemo?.contributor_organization_name || ''; if ( earmarkMemo?.entity_type === ContactTypes.INDIVIDUAL && diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts index 16bcfb11db..43bd159bc3 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts @@ -13,9 +13,9 @@ export class PAC_JF_TRANSFER_MEMO extends SchaTransactionType { LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Joint Fundraising Memo: ${ - (this.transaction?.parent_transaction as SchATransaction).contributor_organization_name + (transaction?.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index b98b4cd99b..a029e2f59d 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransact LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Pres. Nominating Convention Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index cf30a8421c..1b357bc2e9 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransa LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Headquarters Buildings Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction).contributor_organization_name + (transaction?.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index ff0b64e15c..097851e03a 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransaction LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Recount/Legal Proceedings Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 4705375e7b..da2aed0a6b 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -14,15 +14,15 @@ export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionT ); schema = schema; override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO]; - override childTransactionType = TransactionTypeUtils.factory( + override dependentChildTransactionType = TransactionTypeUtils.factory( ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO ); override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionLabelNotice = 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; - override generatePurposeDescription(): string { - if (this.transaction?.children && this.transaction?.children.length > 0) { + override generatePurposeDescription(transaction: SchATransaction): string { + if (transaction?.children && transaction?.children.length > 0) { return 'Recount/Legal Proceedings Account (See Partnership Attribution(s) below)'; } return 'Recount/Legal Proceedings Account (Partnership attributions do not require itemization)'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts index 34ed8a10a3..8a3defb174 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts @@ -13,8 +13,8 @@ export class PARTNERSHIP_RECEIPT extends SchaTransactionType { override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionLabelNotice = 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; - override generatePurposeDescription(): string { - if (this.transaction?.children && this.transaction?.children.length > 0) { + override generatePurposeDescription(transaction: SchATransaction): string { + if (transaction?.children && transaction?.children.length > 0) { return 'See Partnership Attribution(s) below'; } return 'Partnership attributions do not require itemization'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 1f442df2d3..7a907fc2ac 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -13,8 +13,8 @@ export class PARTY_JF_TRANSFER_MEMO extends SchaTransactionType { LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { - return `JF Memo: ${(this.transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; + override generatePurposeDescription(transaction: SchATransaction): string { + return `JF Memo: ${(transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/SchaTransactionType.model.ts b/front-end/src/app/shared/models/transaction-types/SchaTransactionType.model.ts index c4dc70d0aa..bfe7cd6be5 100644 --- a/front-end/src/app/shared/models/transaction-types/SchaTransactionType.model.ts +++ b/front-end/src/app/shared/models/transaction-types/SchaTransactionType.model.ts @@ -1,9 +1,33 @@ -import { TransactionType } from './transaction-type.model'; -import { SchATransaction } from '../scha-transaction.model'; +import { TransactionType, TransactionTemplateMapType } from './transaction-type.model'; export abstract class SchaTransactionType extends TransactionType { scheduleId = 'A'; - override transaction?: SchATransaction; + + // Mapping of schedule fields to the group input component form templates + templateMap: TransactionTemplateMapType = { + last_name: 'contributor_last_name', + first_name: 'contributor_first_name', + middle_name: 'contributor_middle_name', + prefix: 'contributor_prefix', + suffix: 'contributor_suffix', + street_1: 'contributor_street_1', + street_2: 'contributor_street_2', + city: 'contributor_city', + state: 'contributor_state', + zip: 'contributor_zip', + employer: 'contributor_employer', + occupation: 'contributor_occupation', + organization_name: 'contributor_organization_name', + committee_fec_id: 'donor_committee_fec_id', + date: 'contribution_date', + memo_code: 'memo_code', + amount: 'contribution_amount', + aggregate: 'contribution_aggregate', + purpose_descrip: 'contribution_purpose_descrip', + purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', + memo_text_input: 'memo_text_input', + category_code: '', + }; override generatePurposeDescriptionLabel(): string { if (this.generatePurposeDescription !== undefined) { diff --git a/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts b/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts index 7d1008cd90..d70066f2f0 100644 --- a/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts +++ b/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts @@ -1,9 +1,33 @@ -import { TransactionType } from './transaction-type.model'; -import { SchBTransaction } from '../schb-transaction.model'; +import { TransactionType, TransactionTemplateMapType } from './transaction-type.model'; export abstract class SchbTransactionType extends TransactionType { scheduleId = 'B'; - override transaction?: SchBTransaction; + + // Mapping of schedule fields to the group input component form templates + templateMap: TransactionTemplateMapType = { + last_name: 'payee_last_name', + first_name: 'payee_first_name', + middle_name: 'payee_middle_name', + prefix: 'payee_prefix', + suffix: 'payee_suffix', + street_1: 'payee_street_1', + street_2: 'payee_street_2', + city: 'payee_city', + state: 'payee_state', + zip: 'payee_zip', + employer: '', + occupation: '', + organization_name: 'payee_organization_name', + committee_fec_id: 'beneficiary_committee_fec_id', + date: 'expenditure_date', + memo_code: 'memo_code', + amount: 'expenditure_amount', + aggregate: 'aggregate_amount', + purpose_descrip: 'expenditure_purpose_descrip', + purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', + memo_text_input: 'memo_text_input', + category_code: 'category_code', + }; override generatePurposeDescriptionLabel(): string { if (this.generatePurposeDescription !== undefined) { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts index 9130956393..669cc035e2 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts @@ -13,8 +13,8 @@ export class TRIBAL_JF_TRANSFER_MEMO extends SchaTransactionType { LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { - return `JF Memo: ${(this.transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; + override generatePurposeDescription(transaction: SchATransaction): string { + return `JF Memo: ${(transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 09b63e1dd0..fcd7c80cb3 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTrans LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Pres. Nominating Convention Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 7105d01ffd..4ca50622e2 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTra LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Headquarters Buildings Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 38b60baff4..ba71a92647 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -16,9 +16,9 @@ export class TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransact LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER) ); - override generatePurposeDescription(): string { + override generatePurposeDescription(transaction: SchATransaction): string { return `Recount/Legal Proceedings Account JF Memo: ${ - (this.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts index c76e28209a..316735edab 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts @@ -13,16 +13,16 @@ export abstract class TransactionType { abstract title: string; abstract schema: JsonSchema; // FEC validation JSON schema isDependentChild = false; // When set to true, the parent transaction of the transaction is used to generate UI form entry page + dependentChildTransactionType?: TransactionType; // For double-entry transaction forms, this property defines the transaction type of the dependent child transaction updateParentOnSave = false; // Set to true when the parent transaction may be affected by a change in the transaction contactTypeOptions?: ContactType[]; // Override the default list of contact types in the transaction component defaultContactTypeOption?: ContactType; // Set this to the default contact type (entity type) of the form select box if it is other than the first contact type in the contactTypeOptions list - transaction?: Transaction; - childTransactionType?: TransactionType; subTransactionTypes?: ScheduleTransactionTypes[]; // TransactionTypes displayed in dropdown to choose from when creating a child transaction navigationControls?: TransactionNavigationControls; - generatePurposeDescription?(): string; // Dynamically generates the text in the CPD or EPD field + generatePurposeDescription?(transaction: Transaction): string; // Dynamically generates the text in the CPD or EPD field generatePurposeDescriptionLabel?(): string; // Get the CPD or EPD field label purposeDescriptionLabelNotice?: string; // Additional italicized text that appears beneath the form input label + abstract templateMap: TransactionTemplateMapType; // Mapping of values between the schedule (A,B,C...) and the common identifiers in the HTML templates abstract getNewTransaction(): Transaction; // Factory method to create a new Transaction object with default property values for this transaction type getSchemaName(): string { @@ -33,8 +33,8 @@ export abstract class TransactionType { return schema_name; } - public generatePurposeDescriptionWrapper(): string { - const purpose = this.generatePurposeDescription?.(); + public generatePurposeDescriptionWrapper(transaction: Transaction): string { + const purpose = this.generatePurposeDescription?.(transaction); if (purpose) { if (purpose.length > 100) { return purpose.slice(0, 97) + '...'; @@ -44,3 +44,28 @@ export abstract class TransactionType { return ''; } } + +export type TransactionTemplateMapType = { + last_name: string; + first_name: string; + middle_name: string; + prefix: string; + suffix: string; + street_1: string; + street_2: string; + city: string; + state: string; + zip: string; + employer: string; + occupation: string; + organization_name: string; + committee_fec_id: string; + date: string; + memo_code: string; + amount: string; + aggregate: string; + purpose_descrip: string; + purposeDescripLabel: string; + memo_text_input: string; + category_code: string; +}; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 495494ccb7..0a28e05ee8 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -1,44 +1,12 @@ import { BaseModel } from './base.model'; import { Contact } from './contact.model'; import { MemoText } from './memo-text.model'; -import { SchATransaction, ScheduleATransactionTypes, ScheduleAFormTemplateMap } from './scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes } from './schb-transaction.model'; import { ValidateService } from '../services/validate.service'; import { TransactionType } from './transaction-types/transaction-type.model'; import { Type } from 'class-transformer'; -/** - * This is a copy of the same map from the schb-transaction.model.ts file. - * There is currently a initialization bug when importing this map - * from the other file. Looking to see if it clears up when the transaction - * tree is refactored to place TransactionType on the transaction rather - * than the current viceversa - */ -const ScheduleBFormTemplateMap: ScheduleFormTemplateMapType = { - last_name: 'payee_last_name', - first_name: 'payee_first_name', - middle_name: 'payee_middle_name', - prefix: 'payee_prefix', - suffix: 'payee_suffix', - street_1: 'payee_street_1', - street_2: 'payee_street_2', - city: 'payee_city', - state: 'payee_state', - zip: 'payee_zip', - employer: '', - occupation: '', - organization_name: 'payee_organization_name', - committee_fec_id: 'beneficiary_committee_fec_id', - date: 'expenditure_date', - memo_code: 'memo_code', - amount: 'expenditure_amount', - aggregate: 'aggregate_amount', - purpose_descrip: 'expenditure_purpose_descrip', - purposeDescripLabel: 'EXPENDITURE PURPOSE DESCRIPTION', - memo_text_input: 'memo_text_input', - category_code: 'category_code', -}; - export abstract class Transaction extends BaseModel { id: string | undefined; transactionType: TransactionType | undefined; @@ -118,11 +86,12 @@ export abstract class Transaction extends BaseModel { return []; } - static getFormTemplateMap(transactionType: TransactionType | undefined): ScheduleFormTemplateMapType { - if (!transactionType) throw new Error('getFormTemplateMap() missing transaction type'); - if (transactionType.scheduleId === 'A') return ScheduleAFormTemplateMap; - if (transactionType.scheduleId === 'B') return ScheduleBFormTemplateMap; - throw new Error(`Missing form template map for ${transactionType?.transaction?.transaction_type_identifier}`); + // prettier-ignore + static fromJSON(json: any, depth = 2): ScheduleTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + const scheduleId: string = json?.transactionType?.scheduleId; + if (scheduleId === 'A') return SchATransaction.fromJSON(json, depth); + if (scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); + throw new Error('Missing transaction type schedule declaration when generating schedule JSON payload'); } } @@ -137,31 +106,6 @@ export function hasNoContact(transaction?: Transaction): boolean { export type ScheduleTransaction = SchATransaction | SchBTransaction; export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; -export type ScheduleFormTemplateMapType = { - last_name: string; - first_name: string; - middle_name: string; - prefix: string; - suffix: string; - street_1: string; - street_2: string; - city: string; - state: string; - zip: string; - employer: string; - occupation: string; - organization_name: string; - committee_fec_id: string; - date: string; - memo_code: string; - amount: string; - aggregate: string; - purpose_descrip: string; - purposeDescripLabel: string; - memo_text_input: string; - category_code: string; -}; - export enum AggregationGroups { GENERAL = 'GENERAL', LINE_15 = 'LINE_15', diff --git a/front-end/src/app/shared/resolvers/transaction-type.resolver.ts b/front-end/src/app/shared/resolvers/transaction-type.resolver.ts deleted file mode 100644 index 68d18394a8..0000000000 --- a/front-end/src/app/shared/resolvers/transaction-type.resolver.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Injectable } from '@angular/core'; -import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; -import { map, mergeMap, Observable, of } from 'rxjs'; -import { TransactionType } from '../models/transaction-types/transaction-type.model'; -import { Transaction } from '../models/transaction.model'; -import { Contact } from '../models/contact.model'; -import { ContactService } from '../services/contact.service'; -import { TransactionService } from '../services/transaction.service'; -import { TransactionTypeUtils } from '../utils/transaction-type.utils'; - -@Injectable({ - providedIn: 'root', -}) -export class TransactionTypeResolver implements Resolve { - constructor(private transactionService: TransactionService, private contactService: ContactService) {} - - resolve(route: ActivatedRouteSnapshot): Observable { - const reportId = route.paramMap.get('reportId'); - const transactionTypeName = route.paramMap.get('transactionType'); - const transactionId = route.paramMap.get('transactionId'); - const parentTransactionId = route.paramMap.get('parentTransactionId'); - - if (transactionId) { - return this.resolve_existing_transaction(transactionId); - } - if (parentTransactionId && transactionTypeName) { - return this.resolve_new_child_transaction(parentTransactionId, transactionTypeName); - } - if (reportId && transactionTypeName) { - return this.resolve_new_transaction(reportId, transactionTypeName); - } - return of(undefined); - } - - resolve_new_transaction(reportId: string, transactionTypeName: string): Observable { - const transactionType = TransactionTypeUtils.factory(transactionTypeName) as TransactionType; - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.report_id = String(reportId); - - if (transactionType.childTransactionType) { - transactionType.childTransactionType.transaction = transactionType.childTransactionType.getNewTransaction(); - } - - return of(transactionType); - } - - resolve_new_child_transaction( - parentTransactionId: string, - transactionTypeName: string - ): Observable { - const transactionType = TransactionTypeUtils.factory(transactionTypeName) as TransactionType; - return this.transactionService.get(String(parentTransactionId)).pipe( - map((transaction: Transaction) => { - transactionType.transaction = transactionType.getNewTransaction(); - - transactionType.transaction.parent_transaction = transaction; - transactionType.transaction.parent_transaction_id = String(parentTransactionId); - transactionType.transaction.report_id = String(transaction.report_id); - - return transactionType; - }) - ); - } - - resolve_existing_transaction(transactionId: string): Observable { - function buildTransactionType(transaction: Transaction): TransactionType | undefined { - if (transaction.transaction_type_identifier && transaction.contact) { - const transactionType: TransactionType = TransactionTypeUtils.factory( - transaction.transaction_type_identifier - ) as TransactionType; - transactionType.transaction = transaction; - transactionType.transaction.contact = Contact.fromJSON(transaction.contact); - if (transaction.children?.length) { - transactionType.childTransactionType = buildTransactionType(transaction.children[0]); - } - return transactionType; - } - return undefined; - } - - return this.transactionService.get(String(transactionId)).pipe( - mergeMap((transaction: Transaction) => { - if (transaction.transaction_type_identifier && transaction.contact) { - const transactionType = TransactionTypeUtils.factory( - transaction.transaction_type_identifier - ) as TransactionType; - - // Determine if we need to get the parent transaction as the - // transaction type requested is a dependent transaction and cannot - // be modified directly in a UI form. (e.g. EARMARK_MEMO) - if (transactionType.isDependentChild) { - // Get parent transaction to ensure we have a full list of children - if (transaction?.parent_transaction?.id) { - return this.transactionService.get(transaction.parent_transaction.id).pipe( - map((transaction: Transaction) => { - return buildTransactionType(transaction); - }) - ); - } else { - throw new Error( - `Transaction ${transaction.id} (${transaction.transaction_type_identifier}) is a dependent transaction type but does not have a parent transaction.` - ); - } - } else { - return of(buildTransactionType(transaction)); - } - } - throw new Error( - `Transaction type resolver can't find transaction and/or contact for transaction ID ${transactionId}` - ); - }) - ); - } -} diff --git a/front-end/src/app/shared/resolvers/transaction-type.resolver.spec.ts b/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts similarity index 95% rename from front-end/src/app/shared/resolvers/transaction-type.resolver.spec.ts rename to front-end/src/app/shared/resolvers/transaction.resolver.spec.ts index 8e59348dd5..7cb000bcae 100644 --- a/front-end/src/app/shared/resolvers/transaction-type.resolver.spec.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts @@ -9,10 +9,10 @@ import { SchATransaction } from '../models/scha-transaction.model'; import { ContactService } from '../services/contact.service'; import { TransactionService } from '../services/transaction.service'; import { testMockStore } from '../utils/unit-test.utils'; -import { TransactionTypeResolver } from './transaction-type.resolver'; +import { TransactionResolver } from './transaction.resolver'; describe('TransactionResolver', () => { - let resolver: TransactionTypeResolver; + let resolver: TransactionResolver; let testContactService: ContactService; beforeEach(() => { @@ -36,7 +36,7 @@ describe('TransactionResolver', () => { }, ], }); - resolver = TestBed.inject(TransactionTypeResolver); + resolver = TestBed.inject(TransactionResolver); testContactService = TestBed.inject(ContactService); }); diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.ts b/front-end/src/app/shared/resolvers/transaction.resolver.ts new file mode 100644 index 0000000000..488f95b8fa --- /dev/null +++ b/front-end/src/app/shared/resolvers/transaction.resolver.ts @@ -0,0 +1,65 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; +import { map, Observable, of } from 'rxjs'; +import { TransactionType } from '../models/transaction-types/transaction-type.model'; +import { Transaction } from '../models/transaction.model'; +import { ContactService } from '../services/contact.service'; +import { TransactionService } from '../services/transaction.service'; +import { TransactionTypeUtils } from '../utils/transaction-type.utils'; + +@Injectable({ + providedIn: 'root', +}) +export class TransactionResolver implements Resolve { + constructor(private transactionService: TransactionService, private contactService: ContactService) {} + + resolve(route: ActivatedRouteSnapshot): Observable { + const reportId = route.paramMap.get('reportId'); + const transactionTypeName = route.paramMap.get('transactionType'); + const transactionId = route.paramMap.get('transactionId'); + const parentTransactionId = route.paramMap.get('parentTransactionId'); + + if (transactionId) { + return this.resolve_existing_transaction(transactionId); + } + if (parentTransactionId && transactionTypeName) { + return this.resolve_new_child_transaction(parentTransactionId, transactionTypeName); + } + if (reportId && transactionTypeName) { + return this.resolve_new_transaction(reportId, transactionTypeName); + } + return of(undefined); + } + + resolve_new_transaction(reportId: string, transactionTypeName: string): Observable { + const transactionType = TransactionTypeUtils.factory(transactionTypeName) as TransactionType; + const transaction: Transaction = transactionType.getNewTransaction(); + transaction.report_id = String(reportId); + + if (transactionType.dependentChildTransactionType) { + transaction.children = [transactionType.dependentChildTransactionType.getNewTransaction()]; + } + + return of(transaction); + } + + resolve_new_child_transaction( + parentTransactionId: string, + childTransactionTypeName: string + ): Observable { + return this.transactionService.get(String(parentTransactionId)).pipe( + map((parentTransaction: Transaction) => { + const childTransactionType = TransactionTypeUtils.factory(childTransactionTypeName) as TransactionType; + const childTransaction = childTransactionType.getNewTransaction(); + childTransaction.parent_transaction = parentTransaction; + childTransaction.parent_transaction_id = String(parentTransactionId); + childTransaction.report_id = String(parentTransaction.report_id); + return childTransaction; + }) + ); + } + + resolve_existing_transaction(transactionId: string): Observable { + return this.transactionService.get(String(transactionId)); + } +} diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 15ced81e8f..2f61948a34 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -7,23 +7,23 @@ import { Transaction, AggregationGroups } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; import { SchATransaction } from '../models/scha-transaction.model'; -import { SchBTransaction } from '../models/schb-transaction.model'; -import { TransactionType } from '../models/transaction-types/transaction-type.model'; +// import { SchBTransaction } from '../models/schb-transaction.model'; +import { ScheduleTransaction } from '../models/transaction.model'; /** * Given the API endpoint, return the class of the relevent schedule. * @param key URL of root API endpoint * @returns Transaction subclass */ -function getScheduleClass(apiEndpoint: string) { - switch (apiEndpoint) { - case '/transactions/schedule-a': - return SchATransaction; - case '/transactions/schedule-b': - return SchBTransaction; - } - throw new Error(`Class transaction for API endpoint '${apiEndpoint}' not found`); -} +// function getScheduleClass(apiEndpoint: string) { +// switch (apiEndpoint) { +// case '/transactions/schedule-a': +// return SchATransaction; +// case '/transactions/schedule-b': +// return SchBTransaction; +// } +// throw new Error(`Class transaction for API endpoint '${apiEndpoint}' not found`); +// } @Injectable({ providedIn: 'root', @@ -39,45 +39,35 @@ export class TransactionService implements TableListService { if (!ordering) { ordering = 'form_type'; } - // Pull list from Sch A Transactions until we have an endpoint that pulls transactions from the different schedule types - return this.apiService - .get(`/transactions/schedule-a/?page=${pageNumber}&ordering=${ordering}`, params) - .pipe( - map((response: ListRestResponse) => { - response.results = response.results.map((item) => SchATransaction.fromJSON(item)); - return response; - }) - ); + return this.apiService.get(`/transactions/?page=${pageNumber}&ordering=${ordering}`, params).pipe( + map((response: ListRestResponse) => { + response.results = response.results.map((item) => Transaction.fromJSON(item)); + return response; + }) + ); } - public get(id: string): Observable { - return this.apiService.get(`/transactions/schedule-a/${id}/`).pipe( + public get(id: string): Observable { + return this.apiService.get(`/transactions/${id}/`).pipe( map((response) => { - const txn = SchATransaction.fromJSON(response); - - // Convert child transactions into SchATransaction objects - if (txn.children) { - txn.children = txn.children.map((child) => SchATransaction.fromJSON(child)); - } - - return txn; + return Transaction.fromJSON(response); }) ); } public getPreviousTransaction( - transactionType: TransactionType | undefined, + transaction: Transaction | undefined, contact_id: string, action_date: Date ): Observable { const actionDateString: string = this.datePipe.transform(action_date, 'yyyy-MM-dd') || ''; - const transaction_id: string = transactionType?.transaction?.id || ''; + const transaction_id: string = transaction?.id || ''; const aggregation_group: AggregationGroups | undefined = - (transactionType?.transaction as SchATransaction)?.aggregation_group || AggregationGroups.GENERAL; - const apiEndpoint: string = transactionType?.transaction?.apiEndpoint || ''; - const scheduleClass = getScheduleClass(apiEndpoint); + (transaction as SchATransaction)?.aggregation_group || AggregationGroups.GENERAL; + const apiEndpoint: string = transaction?.apiEndpoint || ''; + // const scheduleClass = getScheduleClass(apiEndpoint); - if (transactionType && action_date && contact_id && aggregation_group) { + if (transaction && action_date && contact_id && aggregation_group) { return this.apiService .get(`${apiEndpoint}/previous/`, { transaction_id, @@ -85,25 +75,25 @@ export class TransactionService implements TableListService { action_date: actionDateString, aggregation_group, }) - .pipe(map((response) => scheduleClass.fromJSON(response))); + .pipe(map((response) => Transaction.fromJSON(response))); } return of(undefined); } public create(transaction: Transaction): Observable { const payload = transaction.toJson(); - const scheduleClass = getScheduleClass(transaction.apiEndpoint); + // const scheduleClass = getScheduleClass(transaction.apiEndpoint); return this.apiService .post(`${transaction.apiEndpoint}/`, payload) - .pipe(map((response) => scheduleClass.fromJSON(response))); + .pipe(map((response) => Transaction.fromJSON(response))); } public update(transaction: Transaction): Observable { const payload = transaction.toJson(); - const scheduleClass = getScheduleClass(transaction.apiEndpoint); + // const scheduleClass = getScheduleClass(transaction.apiEndpoint); return this.apiService .put(`${transaction.apiEndpoint}/${transaction.id}/`, payload) - .pipe(map((response) => scheduleClass.fromJSON(response))); + .pipe(map((response) => Transaction.fromJSON(response))); } public delete(transaction: Transaction): Observable { diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/transactions/transaction-container/transaction-container.component.html index c0b99fd8ca..928d2b22aa 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.html @@ -1,33 +1,33 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.ts b/front-end/src/app/transactions/transaction-container/transaction-container.component.ts index 1c9d0d0e21..5e6e630845 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.ts +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.ts @@ -1,25 +1,25 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Subject, takeUntil } from 'rxjs'; -import { TransactionType } from '../../shared/models/transaction-types/transaction-type.model'; import { Store } from '@ngrx/store'; import { selectCommitteeAccount } from '../../store/committee-account.selectors'; import { CommitteeAccount } from '../../shared/models/committee-account.model'; import { Title } from '@angular/platform-browser'; +import { Transaction } from 'app/shared/models/transaction.model'; @Component({ selector: 'app-transaction-container', templateUrl: './transaction-container.component.html', }) export class TransactionContainerComponent implements OnInit, OnDestroy { - transactionType: TransactionType | undefined; + transaction: Transaction | undefined; destroy$: Subject = new Subject(); constructor(private activatedRoute: ActivatedRoute, private store: Store, private titleService: Title) { activatedRoute.data.pipe(takeUntil(this.destroy$)).subscribe((data) => { - this.transactionType = data['transactionType']; - if (this.transactionType) { - const title = this.transactionType['title']; + this.transaction = data['transaction']; + if (this.transaction) { + const title: string = this.transaction.transactionType?.title || ''; this.titleService.setTitle(title); } }); @@ -30,12 +30,11 @@ export class TransactionContainerComponent implements OnInit, OnDestroy { .select(selectCommitteeAccount) .pipe(takeUntil(this.destroy$)) .subscribe((committeeAccount: CommitteeAccount) => { - if (this.transactionType?.transaction) { - this.transactionType.transaction.filer_committee_id_number = committeeAccount.committee_id; + if (this.transaction) { + this.transaction.filer_committee_id_number = committeeAccount.committee_id; } - if (this.transactionType?.childTransactionType?.transaction) { - this.transactionType.childTransactionType.transaction.filer_committee_id_number = - committeeAccount.committee_id; + if (this.transaction?.transactionType?.dependentChildTransactionType && this.transaction.children) { + this.transaction.children[0].filer_committee_id_number = committeeAccount.committee_id; } }); } diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html index 05861a77e2..9731df9150 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html @@ -1,7 +1,7 @@
    -

    {{ transactionType?.title }}

    +

    {{ transaction?.transactionType?.title }}

    Contact

    @@ -17,33 +17,25 @@

    Contact

    - - + +

    Address

    - +

    Employer

    Receipt Information

    @@ -51,8 +43,8 @@

    Additional Information

    @@ -60,7 +52,7 @@

    Additional Information

    @@ -70,7 +62,7 @@

    Additional Information

    diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html index aaf871d0e7..1fb198c998 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html @@ -1,5 +1,5 @@ -

    {{ transactionType?.title }}

    +

    {{ transaction?.transactionType?.title }}

    This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo: @@ -27,33 +27,29 @@

    Contact

- - + +

Address

Employer

Receipt Information

@@ -61,8 +57,8 @@

Additional Information

@@ -97,12 +93,12 @@

Conduit

- + @@ -111,7 +107,7 @@

Conduit

@@ -119,7 +115,7 @@

Address

@@ -128,7 +124,7 @@

Employer

@@ -136,8 +132,8 @@

Receipt Information

@@ -146,8 +142,8 @@

Additional Information

@@ -158,7 +154,7 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html index f4bbde7701..5ef0b5f32d 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -17,14 +17,14 @@

Contact

- + @@ -33,18 +33,14 @@

Contact

Address

- +

Receipt Information

@@ -52,15 +48,15 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts index 8d4ae7043d..1b58eca32f 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts @@ -144,7 +144,7 @@ describe('TransactionGroupBComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ @@ -180,7 +180,7 @@ describe('TransactionGroupBComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = '10'; } component.form.patchValue({ ...transaction }); @@ -200,7 +200,7 @@ describe('TransactionGroupBComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ @@ -238,7 +238,7 @@ describe('TransactionGroupBComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ @@ -275,7 +275,7 @@ describe('TransactionGroupBComponent', () => { it('#save() should not save an invalid org record', () => { const testContact: Contact = new Contact(); testContact.id = 'testId'; - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.contact = testContact; } spyOn(testContactService, 'create').and.returnValue(of(testContact)); @@ -285,7 +285,7 @@ describe('TransactionGroupBComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ diff --git a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html index 28b23c3ebc..cb69560063 100644 --- a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html +++ b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -17,37 +17,29 @@

Contact

- + - +

Address

- + @@ -55,8 +47,8 @@

Receipt Information

@@ -64,15 +56,15 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html index b6331fc975..d74b0cf740 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -19,27 +19,23 @@

Contact

- +

Address

- +

Receipt Information

@@ -47,17 +43,17 @@

Additional Information

@@ -82,7 +78,7 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts index 3fc9abb0e6..dfcd3a135e 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts @@ -34,7 +34,7 @@ export class TransactionGroupDComponent extends TransactionTypeBaseComponent imp override ngOnInit(): void { super.ngOnInit(); - this.subTransactionOptions = (this.transactionType?.subTransactionTypes || []).map((type) => { + this.subTransactionOptions = (this.transaction?.transactionType?.subTransactionTypes || []).map((type) => { return { label: LabelUtils.get(ScheduleATransactionTypeLabels, type), value: type, diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html index 297ffcac10..7da1145bdd 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -19,28 +19,24 @@

Contact

- +

Address

- +

Receipt Information

@@ -48,8 +44,8 @@

Additional Information

@@ -71,7 +67,7 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts index d50d52101d..723898dab0 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts @@ -35,7 +35,7 @@ export class TransactionGroupEComponent extends TransactionTypeBaseComponent imp override ngOnInit(): void { super.ngOnInit(); - this.subTransactionOptions = (this.transactionType?.subTransactionTypes || []).map((type) => { + this.subTransactionOptions = (this.transaction?.transactionType?.subTransactionTypes || []).map((type) => { return { label: LabelUtils.get(ScheduleATransactionTypeLabels, type), value: type, diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html index 279eb42986..7b4e75c212 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -19,28 +19,24 @@

Contact

- +

Address

- +

Receipt Information

@@ -48,8 +44,8 @@

Additional Information

@@ -57,7 +53,7 @@

Additional Information

@@ -67,7 +63,7 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts index eeb14180fd..1257b75755 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts @@ -126,7 +126,7 @@ describe('TransactionGroupFComponent', () => { ...transaction, }); component.form.patchValue({ ...testTran }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction = testTran; component.transactionType.transaction.id = undefined; component.transactionType.transaction.contact = testContact; diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html index 574f166ad9..821358e17a 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html @@ -1,5 +1,5 @@ -

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

This receipt type requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo: @@ -27,11 +27,11 @@

Contact

- + @@ -41,15 +41,15 @@

Address

Receipt Information

@@ -57,8 +57,8 @@

Additional Information

@@ -93,12 +93,12 @@

Conduit

- + @@ -107,7 +107,7 @@

Conduit

@@ -115,7 +115,7 @@

Address

@@ -124,7 +124,7 @@

Employer

@@ -132,8 +132,8 @@

Receipt Information

@@ -142,8 +142,8 @@

Additional Information

@@ -154,7 +154,7 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html index 28b23c3ebc..cb69560063 100644 --- a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html +++ b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -17,37 +17,29 @@

Contact

- + - +

Address

- + @@ -55,8 +47,8 @@

Receipt Information

@@ -64,15 +56,15 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html index 1044bbffd3..be15815be5 100644 --- a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html +++ b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html @@ -1,5 +1,5 @@ -

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo: @@ -25,29 +25,25 @@

Contact

- + - +

Address

@@ -56,7 +52,7 @@

Employer

@@ -64,8 +60,8 @@

Receipt Information

@@ -73,8 +69,8 @@

Additional Information

@@ -106,12 +102,12 @@

Conduit

- + @@ -120,7 +116,7 @@

Conduit

@@ -128,7 +124,7 @@

Address

@@ -137,7 +133,7 @@

Employer

@@ -145,8 +141,8 @@

Receipt Information

@@ -155,8 +151,8 @@

Additional Information

@@ -167,7 +163,7 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html index 238ab47457..e78901f14f 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html @@ -1,7 +1,7 @@
-

{{ transactionType?.title }}

+

{{ transaction?.transactionType?.title }}

Contact

@@ -17,38 +17,30 @@

Contact

- + - +

Address

- +

Receipt Information

@@ -56,15 +48,15 @@

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts index 84210a4b94..7f81623025 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts @@ -141,7 +141,7 @@ describe('TransactionGroupHComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ @@ -177,7 +177,7 @@ describe('TransactionGroupHComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = '10'; } component.form.patchValue({ ...transaction }); @@ -197,7 +197,7 @@ describe('TransactionGroupHComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ @@ -235,7 +235,7 @@ describe('TransactionGroupHComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ @@ -272,7 +272,7 @@ describe('TransactionGroupHComponent', () => { it('#save() should not save an invalid org record', () => { const testContact: Contact = new Contact(); testContact.id = 'testId'; - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.contact = testContact; } spyOn(testContactService, 'create').and.returnValue(of(testContact)); @@ -282,7 +282,7 @@ describe('TransactionGroupHComponent', () => { } }); - if (component.transactionType?.transaction) { + if (component.transaction) { component.transactionType.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ diff --git a/front-end/src/app/transactions/transactions-routing.module.ts b/front-end/src/app/transactions/transactions-routing.module.ts index 1642dff29f..04378621e1 100644 --- a/front-end/src/app/transactions/transactions-routing.module.ts +++ b/front-end/src/app/transactions/transactions-routing.module.ts @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { ReportResolver } from 'app/shared/resolvers/report.resolver'; -import { TransactionTypeResolver } from 'app/shared/resolvers/transaction-type.resolver'; +import { TransactionResolver } from 'app/shared/resolvers/transaction.resolver'; import { ReportIsEditableGuard } from '../shared/guards/report-is-editable.guard'; import { TransactionContainerComponent } from './transaction-container/transaction-container.component'; import { TransactionTypePickerComponent } from './transaction-type-picker/transaction-type-picker.component'; @@ -30,7 +30,7 @@ const routes: Routes = [ path: 'report/:reportId/create/:transactionType', component: TransactionContainerComponent, resolve: { - transactionType: TransactionTypeResolver, + transaction: TransactionResolver, }, canActivate: [ReportIsEditableGuard], }, @@ -38,14 +38,14 @@ const routes: Routes = [ path: 'report/:reportId/list/edit/:transactionId', component: TransactionContainerComponent, resolve: { - transactionType: TransactionTypeResolver, + transaction: TransactionResolver, }, }, { path: 'report/:reportId/list/edit/:parentTransactionId/create-sub-transaction/:transactionType', component: TransactionContainerComponent, resolve: { - transactionType: TransactionTypeResolver, + transaction: TransactionResolver, }, canActivate: [ReportIsEditableGuard], }, From 97ca6ad0a11ea4c64507b74e09774833acdf5c41 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 10:49:08 -0500 Subject: [PATCH 014/115] Remove schedule a reference from transaction service --- front-end/src/app/shared/services/transaction.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 2f61948a34..bdb207a83b 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -6,7 +6,7 @@ import { TableListService } from '../interfaces/table-list-service.interface'; import { Transaction, AggregationGroups } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; -import { SchATransaction } from '../models/scha-transaction.model'; +// import { SchATransaction } from '../models/scha-transaction.model'; // import { SchBTransaction } from '../models/schb-transaction.model'; import { ScheduleTransaction } from '../models/transaction.model'; @@ -63,7 +63,7 @@ export class TransactionService implements TableListService { const actionDateString: string = this.datePipe.transform(action_date, 'yyyy-MM-dd') || ''; const transaction_id: string = transaction?.id || ''; const aggregation_group: AggregationGroups | undefined = - (transaction as SchATransaction)?.aggregation_group || AggregationGroups.GENERAL; + (transaction as ScheduleTransaction)?.aggregation_group || AggregationGroups.GENERAL; const apiEndpoint: string = transaction?.apiEndpoint || ''; // const scheduleClass = getScheduleClass(apiEndpoint); From c4460510515ac2b5df11bdaa89cb347b62bf6880 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 8 Feb 2023 13:04:28 -0500 Subject: [PATCH 015/115] 202 added mock_openfec calls --- .../app/shared/services/fec-api.service.ts | 68 ++++--------------- 1 file changed, 14 insertions(+), 54 deletions(-) diff --git a/front-end/src/app/shared/services/fec-api.service.ts b/front-end/src/app/shared/services/fec-api.service.ts index d87137c2a4..3fd5c9e002 100644 --- a/front-end/src/app/shared/services/fec-api.service.ts +++ b/front-end/src/app/shared/services/fec-api.service.ts @@ -1,10 +1,11 @@ import { HttpClient, HttpParams } from '@angular/common/http'; -import { environment } from '../../../environments/environment'; import { Injectable } from '@angular/core'; -import { map, Observable, of, switchMap } from 'rxjs'; +import { map, Observable } from 'rxjs'; +import { environment } from '../../../environments/environment'; import { CommitteeAccount } from '../models/committee-account.model'; -import { FecApiPaginatedResponse } from 'app/shared/models/fec-api.model'; +import { FecApiPaginatedResponse } from '../models/fec-api.model'; import { FecFiling } from '../models/fec-filing.model'; +import { ApiService } from './api.service'; export type QueryParamsType = { [param: string]: string | number | boolean | readonly (string | number | boolean)[] }; @@ -14,7 +15,9 @@ export type QueryParamsType = { [param: string]: string | number | boolean | rea export class FecApiService { private apiKey: string | null = environment.fecApiKey; - constructor(private http: HttpClient) {} + constructor( + private http: HttpClient, + private apiService: ApiService) { } getHeaders() { return { @@ -36,14 +39,10 @@ export class FecApiService { if (!committeeId) { throw new Error('No Committee Id provided.'); } - const headers = this.getHeaders(); - const params = this.getQueryParams(); - return this.http - .get(`${environment.fecApiUrl}committee/${committeeId}/`, { - headers: headers, - params: params, - }) - .pipe(map((response: FecApiPaginatedResponse) => (response.results[0] as CommitteeAccount) || undefined)); + + return this.apiService.get( + `/mock_openfec/committee/${committeeId}/`).pipe(map( + (response) => response.results[0] as CommitteeAccount)); } /** @@ -60,48 +59,9 @@ export class FecApiService { if (!committeeId) { throw new Error('No Committee Id provided.'); } - const headers = this.getHeaders(); - const nightlyEndpointParams = this.getQueryParams({ - sort: '-receipt_date', - per_page: 1, - page: 1, - committee_id: committeeId, - form_type: 'F1', - }); - - const nightlyEndpoint = this.http - .get(`${environment.fecApiUrl}filings/`, { - headers: headers, - params: nightlyEndpointParams, - }) - .pipe( - map((response: FecApiPaginatedResponse) => { - return (response.results as FecFiling[]).find((filing: FecFiling) => filing.form_type?.startsWith('F1')); - }) - ); - - const realTimeEndpoint = this.http - .get(`${environment.fecApiUrl}efile/filings/`, { - headers: headers, - params: this.getQueryParams({ - committee_id: committeeId, - sort: '-receipt_date', - }), - }) - .pipe( - map((response: FecApiPaginatedResponse) => { - return (response.results as FecFiling[]).find((filing: FecFiling) => filing.form_type?.startsWith('F1')); - }) - ); - // Check real time endpoint for result. If it doesn't have one, check the nightly endpoint - return realTimeEndpoint.pipe( - switchMap((realTimeResult) => { - if (realTimeResult) { - return of(realTimeResult); - } - return nightlyEndpoint; - }) - ); + return this.apiService.get( + `/mock_openfec/filings/${committeeId}/`).pipe(map( + (response) => FecFiling.fromJSON(response))); } } From 683a3dc177bbaaf53e1061c733fcbd7589f2361b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 13:37:27 -0500 Subject: [PATCH 016/115] Fixed referenece error to Transaction call at startup --- .../transaction-form.utils.ts | 6 ++--- .../shared/models/scha-transaction.model.ts | 2 +- .../shared/models/schb-transaction.model.ts | 2 +- .../app/shared/models/transaction.model.ts | 9 +------- .../shared/services/transaction.service.ts | 11 +++++----- .../shared/utils/transaction-type.utils.ts | 22 +++++++++++++++++++ 6 files changed, 34 insertions(+), 18 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 0727982a24..e4a3a92722 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -8,6 +8,7 @@ import { ContactTypes } from '../../models/contact.model'; import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; +import { getFromJSON } from 'app/shared/utils/transaction-type.utils'; export class TransactionFormUtils { /** @@ -17,9 +18,8 @@ export class TransactionFormUtils { * child transaction type defined in the DoubleTransactionTypeBase class. * @param component * @param form - parent or child (i.e. form or childForm) - * @param contactTypeOptions - parent or child (i.e. contactTypeOptions or childContactTypeOptions) * @param validateService - parent or child (i.e. validateService or childValidateService) - * @param transactionType - parent or child (i.e. transactionType or transactionType?.childTransactionType) + * @param transaction - parent or child * @param contactId$ - parent or child (i.e. contactId$ or childContactId$) */ static onInit( @@ -118,7 +118,7 @@ export class TransactionFormUtils { let formValues = validateService.getFormValues(form, formProperties); formValues = TransactionMemoUtils.retrieveMemoText(transaction, form, formValues); - const payload: ScheduleTransaction = Transaction.fromJSON({ + const payload: ScheduleTransaction = getFromJSON({ ...transaction, ...formValues, }); diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index de987afec7..58d7f91173 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -61,7 +61,7 @@ export class SchATransaction extends Transaction { } // prettier-ignore - static overridefromJSON(json: any, depth = 2): SchATransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + static fromJSON(json: any, depth = 2): SchATransaction { // eslint-disable-line @typescript-eslint/no-explicit-any const transaction = plainToClass(SchATransaction, json); if (transaction.transaction_type_identifier) { const transactionType = TransactionTypeUtils.factory(transaction.transaction_type_identifier); diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 31e68db964..d2e584b33f 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -52,7 +52,7 @@ export class SchBTransaction extends Transaction { override apiEndpoint = '/transactions/schedule-b'; // prettier-ignore - static override fromJSON(json: any, depth = 2): SchBTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + static fromJSON(json: any, depth = 2): SchBTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any const transaction = plainToClass(SchBTransaction, json); if (transaction.transaction_type_identifier) { const transactionType = TransactionTypeUtils.factory(transaction.transaction_type_identifier); diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 0a28e05ee8..77349d24f5 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -9,6 +9,7 @@ import { Type } from 'class-transformer'; export abstract class Transaction extends BaseModel { id: string | undefined; + @Type(() => TransactionType) transactionType: TransactionType | undefined; // FECFile spec properties @@ -85,14 +86,6 @@ export abstract class Transaction extends BaseModel { } return []; } - - // prettier-ignore - static fromJSON(json: any, depth = 2): ScheduleTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any - const scheduleId: string = json?.transactionType?.scheduleId; - if (scheduleId === 'A') return SchATransaction.fromJSON(json, depth); - if (scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); - throw new Error('Missing transaction type schedule declaration when generating schedule JSON payload'); - } } export function isNewTransaction(transaction?: Transaction): boolean { diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index bdb207a83b..8747af641e 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -9,6 +9,7 @@ import { ApiService } from './api.service'; // import { SchATransaction } from '../models/scha-transaction.model'; // import { SchBTransaction } from '../models/schb-transaction.model'; import { ScheduleTransaction } from '../models/transaction.model'; +import { getFromJSON } from '../utils/transaction-type.utils'; /** * Given the API endpoint, return the class of the relevent schedule. @@ -41,7 +42,7 @@ export class TransactionService implements TableListService { } return this.apiService.get(`/transactions/?page=${pageNumber}&ordering=${ordering}`, params).pipe( map((response: ListRestResponse) => { - response.results = response.results.map((item) => Transaction.fromJSON(item)); + response.results = response.results.map((item) => getFromJSON(item)); return response; }) ); @@ -50,7 +51,7 @@ export class TransactionService implements TableListService { public get(id: string): Observable { return this.apiService.get(`/transactions/${id}/`).pipe( map((response) => { - return Transaction.fromJSON(response); + return getFromJSON(response); }) ); } @@ -75,7 +76,7 @@ export class TransactionService implements TableListService { action_date: actionDateString, aggregation_group, }) - .pipe(map((response) => Transaction.fromJSON(response))); + .pipe(map((response) => getFromJSON(response))); } return of(undefined); } @@ -85,7 +86,7 @@ export class TransactionService implements TableListService { // const scheduleClass = getScheduleClass(transaction.apiEndpoint); return this.apiService .post(`${transaction.apiEndpoint}/`, payload) - .pipe(map((response) => Transaction.fromJSON(response))); + .pipe(map((response) => getFromJSON(response))); } public update(transaction: Transaction): Observable { @@ -93,7 +94,7 @@ export class TransactionService implements TableListService { // const scheduleClass = getScheduleClass(transaction.apiEndpoint); return this.apiService .put(`${transaction.apiEndpoint}/${transaction.id}/`, payload) - .pipe(map((response) => Transaction.fromJSON(response))); + .pipe(map((response) => getFromJSON(response))); } public delete(transaction: Transaction): Observable { diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index b2ae216013..6d24dc166a 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -1,3 +1,7 @@ +import { ScheduleTransaction } from '../models/transaction.model'; +import { SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { SchBTransaction } from '../models/schb-transaction.model'; + // Schedule A ///////////////////////////////////////////////////// import { BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT } from '../models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model'; import { EARMARK_MEMO } from '../models/transaction-types/EARMARK_MEMO.model'; @@ -149,3 +153,21 @@ export class TransactionTypeUtils { export function getTransactionTypeClass(transactionTypeIdentifier: string): any { // eslint-disable-line @typescript-eslint/no-explicit-any return transactionTypeClasses[transactionTypeIdentifier]; } + +// prettier-ignore +/** + * Returns a schedule object of the correct class as discovered by examining + * the scheduleId of the transaction type. + * + * This function is in this file because there is a REFERENCEERROR when it + * is included in the transaction.model.ts file + * @param json + * @param depth + * @returns + */ +export function getFromJSON(json: any, depth = 2): ScheduleTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any + const scheduleId: string = json?.transactionType?.scheduleId; + if (scheduleId === 'A') return SchATransaction.fromJSON(json, depth); + if (scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); + throw new Error('Missing transaction type schedule declaration when generating schedule JSON payload'); +} From 3f4b55a9131f66cf9fac15ee874080051d826b33 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 13:56:00 -0500 Subject: [PATCH 017/115] Fixed transaction lookup of from JSON object --- .../app/shared/services/transaction.service.ts | 17 ----------------- .../app/shared/utils/transaction-type.utils.ts | 10 ++++++---- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 8747af641e..c96fc0491b 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -6,26 +6,9 @@ import { TableListService } from '../interfaces/table-list-service.interface'; import { Transaction, AggregationGroups } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; -// import { SchATransaction } from '../models/scha-transaction.model'; -// import { SchBTransaction } from '../models/schb-transaction.model'; import { ScheduleTransaction } from '../models/transaction.model'; import { getFromJSON } from '../utils/transaction-type.utils'; -/** - * Given the API endpoint, return the class of the relevent schedule. - * @param key URL of root API endpoint - * @returns Transaction subclass - */ -// function getScheduleClass(apiEndpoint: string) { -// switch (apiEndpoint) { -// case '/transactions/schedule-a': -// return SchATransaction; -// case '/transactions/schedule-b': -// return SchBTransaction; -// } -// throw new Error(`Class transaction for API endpoint '${apiEndpoint}' not found`); -// } - @Injectable({ providedIn: 'root', }) diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 6d24dc166a..2cc7a8f04d 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -166,8 +166,10 @@ export function getTransactionTypeClass(transactionTypeIdentifier: string): any * @returns */ export function getFromJSON(json: any, depth = 2): ScheduleTransaction { // eslint-disable-line @typescript-eslint/no-explicit-any - const scheduleId: string = json?.transactionType?.scheduleId; - if (scheduleId === 'A') return SchATransaction.fromJSON(json, depth); - if (scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); - throw new Error('Missing transaction type schedule declaration when generating schedule JSON payload'); + if (json.transaction_type_identifier) { + const transactionType = TransactionTypeUtils.factory(json.transaction_type_identifier); + if (transactionType.scheduleId === 'A') return SchATransaction.fromJSON(json, depth); + if (transactionType.scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); + } + throw new Error('Missing transaction type identifier when creating a transaction object from a JSON record'); } From d6d2c0d7c2a57c15608defe4b8a8e7fabc6657df Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Wed, 8 Feb 2023 14:57:32 -0500 Subject: [PATCH 018/115] Adds the Partnership National Party Headquarters Account receipt and memo --- .../shared/models/scha-transaction.model.ts | 10 +++++ ...L_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts | 41 ++++++++++++++++++ ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 42 +++++++++++++++++++ ...TY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts | 34 +++++++++++++++ ...L_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts | 39 +++++++++++++++++ .../shared/utils/transaction-type.utils.ts | 4 ++ .../transaction-type-picker.component.ts | 1 + 7 files changed, 171 insertions(+) create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 10ea5efafa..543a086d61 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -233,6 +233,7 @@ export enum ScheduleATransactionTypes { EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_CONVENTION_ACCOUNT', EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', + PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', // Child transactiion types PAC_EARMARK_MEMO = 'PAC_EARMARK_MEMO', EARMARK_MEMO = 'EARMARK_MEMO', @@ -252,6 +253,7 @@ export enum ScheduleATransactionTypes { TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', + PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', PARTNERSHIP_MEMO = 'PARTNERSHIP_MEMO', EARMARK_MEMO_HEADQUARTERS_ACCOUNT = 'EARMARK_MEMO_HEADQUARTERS_ACCOUNT', EARMARK_MEMO_CONVENTION_ACCOUNT = 'EARMARK_MEMO_CONVENTION_ACCOUNT', @@ -427,6 +429,10 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, 'Partnership National Party Recount/Legal Proceedings Account', ], + [ + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, + 'Partnership National Party Headquarters Buildings Account', + ], [ ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, 'Individual National Party Recount/Legal Proceedings Account JF Transfer Memo', @@ -459,6 +465,10 @@ export const ScheduleATransactionTypeLabels: LabelList = [ ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, 'Partnership National Party Recount/Legal Proceedings Account Memo', ], + [ + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, + 'Partnership National Party Headquarters Buildings Account Memo', + ], [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], ]; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts new file mode 100644 index 0000000000..280a05c2c8 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -0,0 +1,41 @@ +import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; + +describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', () => { + let transactionType: PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT; + + beforeEach(() => { + transactionType = new PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + if (transactionType) { + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('D'); + } + }); + + it('#factory() should return a SchATransaction', () => { + const txn = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT + ); + }); + + it('#generatePurposeDescription() should generate expected retval', () => { + const descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Headquarters Buildings Account (Partnership attributions do not require itemization)'); + }); + + it('#generatePurposeDescription() should generate a string', () => { + transactionType.transaction = transactionType.getNewTransaction(); + let descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Headquarters Buildings Account (Partnership attributions do not require itemization)'); + + transactionType.transaction.children = [transactionType.getNewTransaction()]; + descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe('Headquarters Buildings Account (See Partnership Attribution(s) below)'); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts new file mode 100644 index 0000000000..bb8ea13649 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -0,0 +1,42 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; +import { + AggregationGroups, + SchATransaction, + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes, +} from '../scha-transaction.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { SchaTransactionType } from './SchaTransactionType.model'; + +export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { + componentGroupId = 'D'; + title = LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT + ); + schema = schema; + override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO]; + override childTransactionType = TransactionTypeUtils.factory( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO + ); + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + override purposeDescriptionLabelNotice = + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; + + override generatePurposeDescription(): string { + if (this.transaction?.children && this.transaction?.children.length > 0) { + return 'Headquarters Buildings Account (See Partnership Attribution(s) below)'; + } + return 'Headquarters Buildings Account (Partnership attributions do not require itemization)'; + } + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA17', + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, + aggregation_group: AggregationGroups.NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts new file mode 100644 index 0000000000..c73ca292dd --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts @@ -0,0 +1,34 @@ +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; + +describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', () => { + let transactionType: PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO; + + beforeEach(() => { + transactionType = new PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO(); + transactionType.transaction = transactionType.getNewTransaction(); + transactionType.transaction.parent_transaction = + new PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT().getNewTransaction(); + (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('A'); + expect(transactionType.componentGroupId).toBe('A'); + }); + + it('#factory() should return a SchATransaction', () => { + const txn: SchATransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO + ); + }); + + it('#generatePurposeDescription() should generate a string', () => { + const descrip = transactionType.generatePurposeDescription(); + expect(descrip).toBe(`Headquarters Buildings Account Partnership Attribution`); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts new file mode 100644 index 0000000000..a153197433 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts @@ -0,0 +1,39 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; +import { + AggregationGroups, + SchATransaction, + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes, +} from '../scha-transaction.model'; +import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { SchaTransactionType } from './SchaTransactionType.model'; + +export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchaTransactionType { + componentGroupId = 'A'; + title = LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO + ); + schema = schema; + override updateParentOnSave = true; + override navigationControls: TransactionNavigationControls = getChildNavigationControls( + LabelUtils.get( + ScheduleATransactionTypeLabels, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT + ) + ); + + override generatePurposeDescription(): string { + return 'Headquarters Buildings Account Partnership Attribution'; + } + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA17', + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, + back_reference_sched_name: 'SA17', + aggregation_group: AggregationGroups.NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, + }); + } +} diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 127f1aadfe..9fa3adf200 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -61,6 +61,8 @@ import { EARMARK_RECEIPT_CONVENTION_ACCOUNT } from '../models/transaction-types/ import { EARMARK_MEMO_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model'; import { EARMARK_MEMO_CONVENTION_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model'; import { EARMARK_MEMO_RECOUNT_ACCOUNT } from '../models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; // prettier-ignore const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/no-explicit-any @@ -111,6 +113,8 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, + PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT, INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT, INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT, diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index 78fd9c3e1d..a9b299eebd 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -144,6 +144,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, ]; case ScheduleBTransactionGroups.OPERATING_EXPENDITURES: return [ From c5d742e2396c8e7ef5d6f57a2a58031a5c908ff9 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 15:29:18 -0500 Subject: [PATCH 019/115] Add schedule B transactions to the transactions list page --- .../transaction-list.component.html | 15 ++++++++++----- .../transaction-list.component.ts | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/front-end/src/app/transactions/transaction-list/transaction-list.component.html b/front-end/src/app/transactions/transaction-list/transaction-list.component.html index 9fb0473c83..cadf6fdbf3 100644 --- a/front-end/src/app/transactions/transaction-list/transaction-list.component.html +++ b/front-end/src/app/transactions/transaction-list/transaction-list.component.html @@ -62,24 +62,29 @@
Transactions during coverage dates
{{ - item.transaction_type_identifier | label : scheduleATransactionTypeLabels + item.transaction_type_identifier | label : scheduleTransactionTypeLabels }}
Unitemized
- {{ item.contributor_organization_name || item.contributor_last_name + ', ' + item.contributor_first_name }} + {{ + item[item.transactionType.templateMap.organization_name] || + item[item.transactionType.templateMap.last_name] + + ', ' + + item[item.transactionType.templateMap.first_name] + }} - {{ item.contribution_date | fecDate }} + {{ item[item.transactionType.templateMap.date] | fecDate }} {{ item.memo_code | memoCode }} - {{ item.contribution_amount | currency }} + {{ item[item.transactionType.templateMap.amount] | currency }} - {{ item.contribution_aggregate | currency }} + {{ item[item.transactionType.templateMap.aggregate] | currency }} {{ item.transaction_id }} diff --git a/front-end/src/app/transactions/transaction-list/transaction-list.component.ts b/front-end/src/app/transactions/transaction-list/transaction-list.component.ts index dbed158552..3d7eabf20f 100644 --- a/front-end/src/app/transactions/transaction-list/transaction-list.component.ts +++ b/front-end/src/app/transactions/transaction-list/transaction-list.component.ts @@ -9,6 +9,7 @@ import { Transaction } from 'app/shared/models/transaction.model'; import { ConfirmationService, MessageService } from 'primeng/api'; import { TransactionService } from 'app/shared/services/transaction.service'; import { ScheduleATransactionTypeLabels } from 'app/shared/models/scha-transaction.model'; +import { ScheduleBTransactionTypeLabels } from 'app/shared/models/schb-transaction.model'; import { LabelList } from 'app/shared/utils/label.utils'; @Component({ @@ -18,7 +19,7 @@ import { LabelList } from 'app/shared/utils/label.utils'; export class TransactionListComponent extends TableListBaseComponent implements OnInit, OnDestroy { private destroy$ = new Subject(); report: F3xSummary | undefined; - scheduleATransactionTypeLabels: LabelList = ScheduleATransactionTypeLabels; + scheduleTransactionTypeLabels: LabelList = [...ScheduleATransactionTypeLabels, ...ScheduleBTransactionTypeLabels]; constructor( protected override messageService: MessageService, From 83bdd62cbd2e30112099218edeb72e6e39876bcb Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Wed, 8 Feb 2023 15:38:07 -0500 Subject: [PATCH 020/115] Adds cypress support --- .../support/transaction_nav_trees.spec.ts | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/front-end/cypress/support/transaction_nav_trees.spec.ts b/front-end/cypress/support/transaction_nav_trees.spec.ts index 5dc45b9360..ade5631514 100644 --- a/front-end/cypress/support/transaction_nav_trees.spec.ts +++ b/front-end/cypress/support/transaction_nav_trees.spec.ts @@ -45,6 +45,7 @@ export type SchATransactionName = | 'Party National Party Pres. Nominating Convention Account' | 'Tribal National Party Recount/Legal Proceedings Account' | 'Partnership National Party Recount/Legal Proceedings Account' + | 'Partnership National Party Headquarters Buildings Account' | 'Unregistered Receipt from Person - Returned/Bounced Receipt' | 'Partnership Receipt' | 'PAC Returned/Bounced Receipt' @@ -74,6 +75,7 @@ export type ChildTransactionName = | 'PAC National Party Headquarters Buildings Account JF Transfer Memo' | 'Partnership Memo' | 'Partnership National Party Recount/Legal Proceedings Account Memo' + | 'Partnership National Party Headquarters Buildings Account Memo' | 'Earmark Memo for Recount Account (Contribution)' | 'Earmark Memo for Convention Account (Contribution)' | 'Earmark Memo for Headquarters Account (Contribution)'; @@ -442,7 +444,7 @@ const tribalNationalPartyRecountAccount: TransactionForm = { }; const partnershipNationalPartyRecountAccount: TransactionForm = { - transaction_name: 'Partnership National Party Recount/Legal Proceedings Account', + transaction_name: 'Partnership National Party Recount/Legal Proceedings Account Memo', transaction_category: 'OTHER', transaction_group: 'D', aggregation_group: 'NATIONAL_PARTY_RECOUNT_ACCOUNT', @@ -465,6 +467,30 @@ const partnershipNationalPartyRecountAccountMemo: ChildTransactionForm = { }, }; +const partnershipNationalPartyHeadquartersAccount: TransactionForm = { + transaction_name: 'Partnership National Party Headquarters Buildings Account', + transaction_category: 'OTHER', + transaction_group: 'D', + aggregation_group: 'NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', + ...entityOrganization, + fields: { + ...memoFields, + ...purposeDescriptionFieldsRequired, + }, +}; + +const partnershipNationalPartyHeadquartersAccountMemo: ChildTransactionForm = { + transaction_name: 'Partnership National Party Headquarters Buildings Account Memo', + transaction_group: 'A', + aggregation_group: 'NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', + ...entityIndividual, + childOf: 'Partnership National Party Headquarters Buildings Account', + fields: { + ...memoFields, + ...contributionFields, + }, +}; + const tribalNPRJFTransMemo: ChildTransactionForm = { transaction_name: 'Tribal National Party Recount/Legal Proceedings Account JF Transfer Memo', transaction_group: 'D', @@ -1164,6 +1190,7 @@ export const schedANavTree: TransactionNavTree = { 'Party National Party Pres. Nominating Convention Account': partyNationalPartyConventionAccount, 'Tribal National Party Recount/Legal Proceedings Account': tribalNationalPartyRecountAccount, 'Partnership National Party Recount/Legal Proceedings Account': partnershipNationalPartyRecountAccount, + 'Partnership National Party Headquarters Buildings Account': partnershipNationalPartyHeadquartersAccount, 'Earmark Receipt for Recount/Legal Proceedings Account (Contribution)': earmarkRecountReceipt, 'Earmark Receipt for Pres. Nominating Convention Account (Contribution)': earmarkConventionReceipt, 'Earmark Receipt for Headquarters Buildings Account (Contribution)': earmarkHeadquartersReceipt, @@ -1191,4 +1218,7 @@ export const childTransactionTree = { 'Partnership National Party Recount/Legal Proceedings Account': { 'Partnership National Party Recount/Legal Proceedings Account Memo': partnershipNationalPartyRecountAccountMemo, }, + 'Partnership National Party Headquarters Buildings Account': { + 'Partnership National Party Headquarters Buildings Account Memo': partnershipNationalPartyHeadquartersAccountMemo, + }, }; From 7d17abd8b783b18bde97e3394f9444bdb29224fb Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 16:03:33 -0500 Subject: [PATCH 021/115] Cleaned up transaction meta function --- .../app/shared/models/scha-transaction.model.ts | 3 --- .../app/shared/models/schb-transaction.model.ts | 3 --- .../EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts | 2 +- .../EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts | 2 +- .../EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts | 2 +- .../src/app/shared/models/transaction.model.ts | 15 ++++++--------- 6 files changed, 9 insertions(+), 18 deletions(-) diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index 58d7f91173..b88377e62a 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -67,9 +67,6 @@ export class SchATransaction extends Transaction { const transactionType = TransactionTypeUtils.factory(transaction.transaction_type_identifier); transaction.setMetaProperties(transactionType); } - // else { - // throw new Error("Can't find transaction_type_identifier when creating class from JSON"); - // } if (depth > 0 && transaction.parent_transaction) { transaction.parent_transaction = SchATransaction.fromJSON(transaction.parent_transaction, depth-1); } diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index d2e584b33f..2e4c96c2a1 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -58,9 +58,6 @@ export class SchBTransaction extends Transaction { const transactionType = TransactionTypeUtils.factory(transaction.transaction_type_identifier); transaction.setMetaProperties(transactionType); } - else { - throw new Error("Can't find transaction_type_identifier when creating class from JSON"); - } if (depth > 0 && transaction.parent_transaction) { transaction.parent_transaction = SchBTransaction.fromJSON(transaction.parent_transaction, depth-1); } diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts index 80338c649f..ea00c71607 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts @@ -4,7 +4,7 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction. import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO_CONVENTION_ACCOUNT extends SchaTransactionType { - componentGroupId = 'GG'; + componentGroupId = 'AG'; override isDependentChild = true; title = ''; schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts index a7cc5e1c7f..a8f1441faa 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts @@ -4,7 +4,7 @@ import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends SchaTransactionType { - componentGroupId = 'GG'; + componentGroupId = 'AG'; override isDependentChild = true; title = ''; schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts index ba0ea5a659..e540e6efc1 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts @@ -4,7 +4,7 @@ import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class EARMARK_MEMO_RECOUNT_ACCOUNT extends SchaTransactionType { - componentGroupId = 'GG'; + componentGroupId = 'AG'; override isDependentChild = true; title = ''; schema = schema; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 77349d24f5..2b47fa8598 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -9,6 +9,7 @@ import { Type } from 'class-transformer'; export abstract class Transaction extends BaseModel { id: string | undefined; + @Type(() => TransactionType) transactionType: TransactionType | undefined; @@ -62,15 +63,11 @@ export abstract class Transaction extends BaseModel { */ setMetaProperties(transactionType: TransactionType): void { this.contact_id = this.contact?.id; - if (this?.transaction_type_identifier) { - this.transactionType = transactionType; - this.schema_name = transactionType.getSchemaName(); - const fieldsToValidate: string[] = ValidateService.getSchemaProperties(transactionType.schema); - const fieldsNotToValidate: string[] = this.getFieldsNotToValidate(); - this.fields_to_validate = fieldsToValidate.filter((p) => ![...fieldsNotToValidate].includes(p)); - } else { - throw new Error('No TRANSACTION_TYPE_IDENTIFIER found when setting Meta Properties'); - } + this.transactionType = transactionType; + this.schema_name = transactionType.getSchemaName(); + const fieldsToValidate: string[] = ValidateService.getSchemaProperties(transactionType.schema); + const fieldsNotToValidate: string[] = this.getFieldsNotToValidate(); + this.fields_to_validate = fieldsToValidate.filter((p) => ![...fieldsNotToValidate].includes(p)); } /** From 2170338f6ff0181b18561b246a140fa0a25b72c0 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 16:07:11 -0500 Subject: [PATCH 022/115] Removed group G and GG transaction groups --- .../transaction-container.component.html | 6 - .../transaction-group-g.component.html | 73 -------- .../transaction-group-g.component.spec.ts | 59 ------ .../transaction-group-g.component.ts | 36 ---- .../transaction-group-gg.component.html | 171 ------------------ .../transaction-group-gg.component.spec.ts | 73 -------- .../transaction-group-gg.component.ts | 64 ------- .../app/transactions/transactions.module.ts | 4 - 8 files changed, 486 deletions(-) delete mode 100644 front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html delete mode 100644 front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.spec.ts delete mode 100644 front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.ts delete mode 100644 front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html delete mode 100644 front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.spec.ts delete mode 100644 front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.ts diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/transactions/transaction-container/transaction-container.component.html index 928d2b22aa..1758de1391 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.html @@ -16,18 +16,12 @@ - - - - - - diff --git a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html deleted file mode 100644 index cb69560063..0000000000 --- a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.html +++ /dev/null @@ -1,73 +0,0 @@ - - -
-

{{ transaction?.transactionType?.title }}

-

Contact

-
-
-
-
- - - -
-
-
- - - - - - - - -

Address

- - - - - - -

Receipt Information

- - -

Additional Information

- -
- - -
-
- - diff --git a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.spec.ts b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.spec.ts deleted file mode 100644 index c0e9b9d87e..0000000000 --- a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; -import { provideMockStore } from '@ngrx/store/testing'; -import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { ConfirmationService, MessageService } from 'primeng/api'; -import { ButtonModule } from 'primeng/button'; -import { CalendarModule } from 'primeng/calendar'; -import { CheckboxModule } from 'primeng/checkbox'; -import { ConfirmDialogModule } from 'primeng/confirmdialog'; -import { DividerModule } from 'primeng/divider'; -import { DropdownModule } from 'primeng/dropdown'; -import { InputNumberModule } from 'primeng/inputnumber'; -import { InputTextModule } from 'primeng/inputtext'; -import { InputTextareaModule } from 'primeng/inputtextarea'; -import { ToastModule } from 'primeng/toast'; -import { SharedModule } from '../../shared/shared.module'; -import { TransactionGroupGComponent } from './transaction-group-g.component'; - -describe('TransactionGroupGComponent', () => { - let component: TransactionGroupGComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - HttpClientTestingModule, - RouterTestingModule, - FormsModule, - ReactiveFormsModule, - ToastModule, - SharedModule, - DividerModule, - DropdownModule, - CalendarModule, - ButtonModule, - CheckboxModule, - InputTextModule, - InputTextareaModule, - InputNumberModule, - ConfirmDialogModule, - ], - declarations: [TransactionGroupGComponent], - providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(TransactionGroupGComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.ts b/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.ts deleted file mode 100644 index 0ece522909..0000000000 --- a/front-end/src/app/transactions/transaction-group-g/transaction-group-g.component.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; -import { TransactionTypeBaseComponent } from 'app/shared/components/transaction-type-base/transaction-type-base.component'; -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../../shared/models/contact.model'; - -@Component({ - selector: 'app-transaction-group-g', - templateUrl: './transaction-group-g.component.html', -}) -export class TransactionGroupGComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { - formProperties: string[] = [ - 'entity_type', - 'contributor_organization_name', - 'contributor_last_name', - 'contributor_first_name', - 'contributor_middle_name', - 'contributor_prefix', - 'contributor_suffix', - 'contributor_street_1', - 'contributor_street_2', - 'contributor_city', - 'contributor_state', - 'contributor_zip', - 'contribution_date', - 'contribution_amount', - 'contribution_aggregate', - 'contribution_purpose_descrip', - 'contributor_employer', - 'contributor_occupation', - 'memo_code', - 'memo_text_input', - ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); -} diff --git a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html deleted file mode 100644 index be15815be5..0000000000 --- a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.html +++ /dev/null @@ -1,171 +0,0 @@ - -

{{ transaction?.transactionType?.title }}

-

- This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and - an earmark memo: -

- - - - STEP ONE: -

Add receipt and contributor information

-
-

Receipt

-

Contact

-
-
-
- - - -
-
- - - - - - - - -

Address

- - - -

Employer

- - -
-

Receipt Information

- - -

Additional Information

- -
-
-
-
- - - - STEP TWO: -

- Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS) -

-
-

Earmark memo

-

Conduit

-
-
-
-
- - - -
-
-
- - - - - - - - -

Address

- - - -

Employer

- - -
-

Receipt Information

- - -

Additional Information

- -
-
-
-
-
- - - - - diff --git a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.spec.ts b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.spec.ts deleted file mode 100644 index ec91b178d4..0000000000 --- a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { RouterTestingModule } from '@angular/router/testing'; -import { provideMockStore } from '@ngrx/store/testing'; -import { EARMARK_MEMO } from 'app/shared/models/transaction-types/EARMARK_MEMO.model'; -import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { AccordionModule } from 'primeng/accordion'; -import { ConfirmationService, MessageService } from 'primeng/api'; -import { ButtonModule } from 'primeng/button'; -import { CalendarModule } from 'primeng/calendar'; -import { CheckboxModule } from 'primeng/checkbox'; -import { DividerModule } from 'primeng/divider'; -import { DropdownModule } from 'primeng/dropdown'; -import { InputNumberModule } from 'primeng/inputnumber'; -import { InputTextModule } from 'primeng/inputtext'; -import { InputTextareaModule } from 'primeng/inputtextarea'; -import { ToastModule } from 'primeng/toast'; -import { EARMARK_RECEIPT } from '../../shared/models/transaction-types/EARMARK_RECEIPT.model'; -import { SharedModule } from '../../shared/shared.module'; -import { TransactionGroupGgComponent } from './transaction-group-gg.component'; -import { ConfirmDialogModule } from 'primeng/confirmdialog'; - -describe('TransactionGroupGgComponent', () => { - let component: TransactionGroupGgComponent; - let fixture: ComponentFixture; - - const earmarkReceipt = new EARMARK_RECEIPT(); - earmarkReceipt.transaction = earmarkReceipt.getNewTransaction(); - const earmarkMemo = new EARMARK_MEMO(); - earmarkMemo.transaction = earmarkMemo.getNewTransaction(); - earmarkReceipt.childTransactionType = earmarkMemo; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - HttpClientTestingModule, - RouterTestingModule, - FormsModule, - ReactiveFormsModule, - ToastModule, - SharedModule, - DividerModule, - DropdownModule, - CalendarModule, - ButtonModule, - AccordionModule, - CheckboxModule, - InputTextModule, - InputTextareaModule, - InputNumberModule, - BrowserAnimationsModule, - ConfirmDialogModule, - ], - declarations: [TransactionGroupGgComponent], - providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(TransactionGroupGgComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - component.transactionType = earmarkReceipt; - component.ngOnInit(); - expect(component).toBeTruthy(); - }); -}); diff --git a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.ts b/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.ts deleted file mode 100644 index 374e83a781..0000000000 --- a/front-end/src/app/transactions/transaction-group-gg/transaction-group-gg.component.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; -import { ContactTypeLabels, ContactTypes } from 'app/shared/models/contact.model'; -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { DoubleTransactionTypeBaseComponent } from 'app/shared/components/transaction-type-base/double-transaction-type-base.component'; - -@Component({ - selector: 'app-transaction-group-gg', - templateUrl: './transaction-group-gg.component.html', -}) -export class TransactionGroupGgComponent extends DoubleTransactionTypeBaseComponent implements OnInit, OnDestroy { - formProperties: string[] = [ - 'entity_type', - 'contributor_organization_name', - 'contributor_last_name', - 'contributor_first_name', - 'contributor_middle_name', - 'contributor_prefix', - 'contributor_suffix', - 'contributor_street_1', - 'contributor_street_2', - 'contributor_city', - 'contributor_state', - 'contributor_zip', - 'contribution_date', - 'contribution_amount', - 'contribution_aggregate', - 'contribution_purpose_descrip', - 'contributor_employer', - 'contributor_occupation', - 'donor_committee_fec_id', - 'memo_code', - 'memo_text_input', - ]; - - childFormProperties: string[] = [ - 'entity_type', - 'contributor_organization_name', - 'contributor_last_name', - 'contributor_first_name', - 'contributor_middle_name', - 'contributor_prefix', - 'contributor_suffix', - 'contributor_street_1', - 'contributor_street_2', - 'contributor_city', - 'contributor_state', - 'contributor_zip', - 'contribution_date', - 'contribution_amount', - 'contribution_aggregate', - 'contribution_purpose_descrip', - 'contributor_employer', - 'contributor_occupation', - 'donor_committee_fec_id', - 'memo_code', - 'memo_text_input', - ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); - override childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); -} diff --git a/front-end/src/app/transactions/transactions.module.ts b/front-end/src/app/transactions/transactions.module.ts index 4f0bafcc7e..27cbcdd3d6 100644 --- a/front-end/src/app/transactions/transactions.module.ts +++ b/front-end/src/app/transactions/transactions.module.ts @@ -25,10 +25,8 @@ import { TransactionGroupCComponent } from './transaction-group-c/transaction-gr import { TransactionGroupDComponent } from './transaction-group-d/transaction-group-d.component'; import { TransactionGroupEComponent } from './transaction-group-e/transaction-group-e.component'; import { TransactionGroupFComponent } from './transaction-group-f/transaction-group-f.component'; -import { TransactionGroupGComponent } from './transaction-group-g/transaction-group-g.component'; import { TransactionGroupHComponent } from './transaction-group-h/transaction-group-h.component'; import { TransactionGroupAgComponent } from './transaction-group-ag/transaction-group-ag.component'; -import { TransactionGroupGgComponent } from './transaction-group-gg/transaction-group-gg.component'; import { TransactionGroupFgComponent } from './transaction-group-fg/transaction-group-fg.component'; import { MemoCodePipe, TransactionListComponent } from './transaction-list/transaction-list.component'; import { TransactionTypePickerComponent } from './transaction-type-picker/transaction-type-picker.component'; @@ -46,10 +44,8 @@ import { TransactionsRoutingModule } from './transactions-routing.module'; TransactionGroupDComponent, TransactionGroupEComponent, TransactionGroupFComponent, - TransactionGroupGComponent, TransactionGroupHComponent, TransactionGroupAgComponent, - TransactionGroupGgComponent, TransactionGroupFgComponent, ], imports: [ From cc9dacd0d808a16570eb7355e41ea16c798efb41 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 8 Feb 2023 16:44:51 -0500 Subject: [PATCH 023/115] Update sort column identifiers for transaction list table --- .../transaction-list.component.html | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/front-end/src/app/transactions/transaction-list/transaction-list.component.html b/front-end/src/app/transactions/transaction-list/transaction-list.component.html index cadf6fdbf3..68c0871f1d 100644 --- a/front-end/src/app/transactions/transaction-list/transaction-list.component.html +++ b/front-end/src/app/transactions/transaction-list/transaction-list.component.html @@ -38,20 +38,18 @@
Transactions during coverage dates
Transaction type - - Name - - - Contribution date + Name + + Contribution date Memo code - - Amount + + Amount - - Aggregate + + Aggregate Transaction ID Associated With From 59ede898084f09c7ae918820acef0dabf4984cbd Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 8 Feb 2023 18:03:25 -0500 Subject: [PATCH 024/115] use 'date' rather than 'action_date' --- .../src/app/shared/services/transaction.service.spec.ts | 2 +- front-end/src/app/shared/services/transaction.service.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/services/transaction.service.spec.ts b/front-end/src/app/shared/services/transaction.service.spec.ts index cb43a5fbdd..b4fe9faae0 100644 --- a/front-end/src/app/shared/services/transaction.service.spec.ts +++ b/front-end/src/app/shared/services/transaction.service.spec.ts @@ -94,7 +94,7 @@ describe('TransactionService', () => { } const formattedDate = formatDate(new Date(), 'yyyy-MM-dd', 'en-US'); const req = httpTestingController.expectOne( - `${environment.apiUrl}/transactions/schedule-a/previous/?transaction_id=abc&contact_id=1&action_date=${formattedDate}&aggregation_group=${AggregationGroups.GENERAL}` + `${environment.apiUrl}/transactions/schedule-a/previous/?transaction_id=abc&contact_id=1&date=${formattedDate}&aggregation_group=${AggregationGroups.GENERAL}` ); expect(req.request.method).toEqual('GET'); req.flush(mockResponse); diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 15ced81e8f..d739294f7c 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -68,21 +68,21 @@ export class TransactionService implements TableListService { public getPreviousTransaction( transactionType: TransactionType | undefined, contact_id: string, - action_date: Date + date: Date ): Observable { - const actionDateString: string = this.datePipe.transform(action_date, 'yyyy-MM-dd') || ''; + const actionDateString: string = this.datePipe.transform(date, 'yyyy-MM-dd') || ''; const transaction_id: string = transactionType?.transaction?.id || ''; const aggregation_group: AggregationGroups | undefined = (transactionType?.transaction as SchATransaction)?.aggregation_group || AggregationGroups.GENERAL; const apiEndpoint: string = transactionType?.transaction?.apiEndpoint || ''; const scheduleClass = getScheduleClass(apiEndpoint); - if (transactionType && action_date && contact_id && aggregation_group) { + if (transactionType && date && contact_id && aggregation_group) { return this.apiService .get(`${apiEndpoint}/previous/`, { transaction_id, contact_id, - action_date: actionDateString, + date: actionDateString, aggregation_group, }) .pipe(map((response) => scheduleClass.fromJSON(response))); From 1b8c2849b486d3c4f8035f2f4a36e8b9167ae8f7 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 8 Feb 2023 23:10:36 -0500 Subject: [PATCH 025/115] 202 fixed unit tests --- .../shared/services/fec-api.service.spec.ts | 59 ++++--------------- 1 file changed, 12 insertions(+), 47 deletions(-) diff --git a/front-end/src/app/shared/services/fec-api.service.spec.ts b/front-end/src/app/shared/services/fec-api.service.spec.ts index e095796aef..cf0b1ae660 100644 --- a/front-end/src/app/shared/services/fec-api.service.spec.ts +++ b/front-end/src/app/shared/services/fec-api.service.spec.ts @@ -1,10 +1,11 @@ -import { TestBed } from '@angular/core/testing'; import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { FecApiService } from './fec-api.service'; -import { FecApiPaginatedResponse } from 'app/shared/models/fec-api.model'; +import { TestBed } from '@angular/core/testing'; +import { provideMockStore } from '@ngrx/store/testing'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; -import { environment } from 'environments/environment'; +import { FecApiPaginatedResponse } from 'app/shared/models/fec-api.model'; import { FecFiling } from '../models/fec-filing.model'; +import { testMockStore } from '../utils/unit-test.utils'; +import { FecApiService } from './fec-api.service'; describe('FecApiService', () => { let httpTestingController: HttpTestingController; @@ -13,6 +14,7 @@ describe('FecApiService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [HttpClientTestingModule], + providers: [FecApiService, provideMockStore(testMockStore)], }); httpTestingController = TestBed.inject(HttpTestingController); service = TestBed.inject(FecApiService); @@ -41,7 +43,7 @@ describe('FecApiService', () => { }); const req = httpTestingController.expectOne( - 'https://api.open.fec.gov/v1/committee/C00601211/?api_key=' + environment.fecApiKey + `https://localhost/api/v1/mock_openfec/committee/C00601211/` ); expect(req.request.method).toEqual('GET'); @@ -52,69 +54,32 @@ describe('FecApiService', () => { describe('#getCommitteeRecentFiling()', () => { it('should return most recent filing from realtime endpoint', () => { const f1Filing: FecFiling = FecFiling.fromJSON({ form_type: 'F1N', pdf_url: 'go here' }); - const f2Filing: FecFiling = FecFiling.fromJSON({ form_type: 'F2', pdf_url: 'dont go here' }); - const response: FecApiPaginatedResponse = { - api_version: '1.0', - pagination: { - page: 1, - per_page: 20, - count: 1, - pages: 1, - }, - results: [f2Filing, f1Filing], - }; service.getCommitteeRecentFiling('C00601211').subscribe((mostRecentFiling) => { expect(mostRecentFiling).toEqual(f1Filing); }); const req = httpTestingController.expectOne( - `https://api.open.fec.gov/v1/efile/filings/?api_key=${environment.fecApiKey}&committee_id=C00601211&sort=-receipt_date` + `https://localhost/api/v1/mock_openfec/filings/C00601211/` ); expect(req.request.method).toEqual('GET'); - req.flush(response); + req.flush(f1Filing); }); }); it('should return most recent filing from nightly endpoint', () => { const f1Filing: FecFiling = FecFiling.fromJSON({ form_type: 'F1N', pdf_url: 'go here' }); const f2Filing: FecFiling = FecFiling.fromJSON({ form_type: 'F2', pdf_url: 'dont go here' }); - const realtimeResponse: FecApiPaginatedResponse = { - api_version: '1.0', - pagination: { - page: 1, - per_page: 20, - count: 1, - pages: 1, - }, - results: [f2Filing], - }; - - const nightlyResponse: FecApiPaginatedResponse = { - api_version: '1.0', - pagination: { - page: 1, - per_page: 20, - count: 1, - pages: 1, - }, - results: [f1Filing], - }; service.getCommitteeRecentFiling('C00601211').subscribe((mostRecentFiling) => { - expect(mostRecentFiling).toEqual(f1Filing); + expect(mostRecentFiling).toEqual(f2Filing); }); const realtimeReq = httpTestingController.expectOne( - `https://api.open.fec.gov/v1/efile/filings/?api_key=${environment.fecApiKey}&committee_id=C00601211&sort=-receipt_date` + `https://localhost/api/v1/mock_openfec/filings/C00601211/` ); expect(realtimeReq.request.method).toEqual('GET'); - realtimeReq.flush(realtimeResponse); - const nightlyReq = httpTestingController.expectOne( - `https://api.open.fec.gov/v1/filings/?api_key=${environment.fecApiKey}&sort=-receipt_date&per_page=1&page=1&committee_id=C00601211&form_type=F1` - ); - expect(nightlyReq.request.method).toEqual('GET'); - nightlyReq.flush(nightlyResponse); + realtimeReq.flush(f2Filing); }); }); From 034893c07c150b5df4021e1503432b7e76adb9ed Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 8 Feb 2023 23:16:47 -0500 Subject: [PATCH 026/115] 202 code smell --- front-end/src/app/shared/services/fec-api.service.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/front-end/src/app/shared/services/fec-api.service.spec.ts b/front-end/src/app/shared/services/fec-api.service.spec.ts index cf0b1ae660..377182d706 100644 --- a/front-end/src/app/shared/services/fec-api.service.spec.ts +++ b/front-end/src/app/shared/services/fec-api.service.spec.ts @@ -69,7 +69,6 @@ describe('FecApiService', () => { }); it('should return most recent filing from nightly endpoint', () => { - const f1Filing: FecFiling = FecFiling.fromJSON({ form_type: 'F1N', pdf_url: 'go here' }); const f2Filing: FecFiling = FecFiling.fromJSON({ form_type: 'F2', pdf_url: 'dont go here' }); service.getCommitteeRecentFiling('C00601211').subscribe((mostRecentFiling) => { From 9d3150ef7249ac54a1eef4f0005ea2a9467f4c55 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 9 Feb 2023 08:07:27 -0500 Subject: [PATCH 027/115] Move parent and child transaction update method to Transaction class --- .../shared/models/scha-transaction.model.ts | 77 ------------------- .../shared/models/schb-transaction.model.ts | 4 - .../app/shared/models/transaction.model.ts | 51 +++++++++++- .../shared/services/transaction.service.ts | 4 +- .../shared/utils/transaction-type.utils.ts | 3 +- 5 files changed, 50 insertions(+), 89 deletions(-) diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index b88377e62a..8550a8dcea 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -75,83 +75,6 @@ export class SchATransaction extends Transaction { } return transaction; } - - /** - * updateChildren() - * @returns - * An array of Transaction objects whose contribution_purpose_descriptions - * have been re-generated to account for changes to their parent - * - */ - override updateChildren(): Transaction[] { - const outChildren: Transaction[] = []; - - if (this.children) { - /* We treat the parent's children as SchATransaction objects in order - to access fields exclusive to the SchATransaction model */ - for (const child of this.children as SchATransaction[]) { - // if (child.transaction_type_identifier) { - // Instantiate a TransactionType object in order to access the purpose description generator - // const transactionType = TransactionTypeUtils.factory(child.transaction_type_identifier); - - // Prep the TransactionType by setting fields it will need when generating a purpose description - // transactionType.transaction = child; - - /* Make a new object to represent the parent within the TransactionType - because setting the parent equal to the this causes an infinite loop */ - // if (child.parent_transaction) - // transactionType.transaction.parent_transaction = { - // id: this.id, - // contributor_organization_name: this.contributor_organization_name, - // } as SchATransaction; - - // Modify the purpose description this to reflect the changes to child transactions - if (child?.transactionType?.generatePurposeDescription) { - const newDescrip = child.transactionType.generatePurposeDescriptionWrapper(child); - child.contribution_purpose_descrip = newDescrip; - } - // } - - // Always add the child into the array or else it will be lost - outChildren.push(child); - } - } - - return outChildren; - } - - /** - * Returns a transaction payload with the parent of the original payload - * swapped in as the main payload and the original main payload is a child - * @returns - */ - getUpdatedParent(childDeleted = false): SchATransaction { - if (!this.parent_transaction?.transaction_type_identifier) { - throw new Error( - `Child transaction '${this.transaction_type_identifier}' is missing its parent when saving to API` - ); - } - - // The parent is the new payload - const payload = this.parent_transaction as SchATransaction; - - // Attach the original payload to the parent as a child, replacing an - // existing version if needed - if (this.id && this.parent_transaction) { - payload.children = this.parent_transaction.children?.filter((c) => c.id !== this.id); - } - if (!childDeleted) { - payload.children?.push(this); - } - payload.children = payload.updateChildren(); - - // Update the CPD - if (payload?.transactionType?.generatePurposeDescription) { - payload.contribution_purpose_descrip = payload.transactionType.generatePurposeDescriptionWrapper(payload); - } - - return payload; - } } export enum ScheduleATransactionGroups { diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 2e4c96c2a1..17a1d9aac8 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -66,10 +66,6 @@ export class SchBTransaction extends Transaction { } return transaction; } - - getUpdatedParent(): Transaction { - throw new Error('Tried to call updateParent on SchBTransaction and there is no update code'); - } } export enum ScheduleBTransactionGroups { diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 2b47fa8598..537ea7cbcf 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -52,8 +52,6 @@ export abstract class Transaction extends BaseModel { abstract apiEndpoint: string; // Root URL for API endpoint - abstract getUpdatedParent(childDeleted?: boolean): Transaction; // Method to handle save when child must update parent properties - /** * Perform bookkeeping updates to the transaction when it is created via fromJSON() * We have to pass the transactionType instead of getting from TransactonTypeUtils @@ -78,10 +76,55 @@ export abstract class Transaction extends BaseModel { * */ updateChildren(): Transaction[] { + const outChildren: Transaction[] = []; if (this.children) { - return this.children; + for (const child of this.children as SchATransaction[]) { + // Modify the purpose description this to reflect the changes to child transactions + if (child?.transactionType?.generatePurposeDescription) { + child.parent_transaction = this; + const newDescrip = child.transactionType.generatePurposeDescriptionWrapper(child); + const key = child.transactionType.templateMap.purpose_descrip as keyof ScheduleTransaction; + ((child as ScheduleTransaction)[key] as string) = newDescrip; + } + outChildren.push(child); + } + } + return outChildren; + } + + /** + * Returns a transaction payload with the parent of the original payload + * swapped in as the main payload and the original main payload is a child + * @returns + */ + getUpdatedParent(childDeleted = false): Transaction { + if (!this.parent_transaction?.transaction_type_identifier) { + throw new Error( + `Child transaction '${this.transaction_type_identifier}' is missing its parent when saving to API` + ); } - return []; + + // The parent is the new payload + const payload = this.parent_transaction as Transaction; + + // Attach the original payload to the parent as a child, replacing an + // existing version if needed + if (this.id && this.parent_transaction) { + payload.children = this.parent_transaction.children?.filter((c) => c.id !== this.id); + } + if (!childDeleted) { + payload.children?.push(this); + } + payload.children = payload.updateChildren(); + + // Update the CPD + if (payload?.transactionType?.generatePurposeDescription) { + const key = payload.transactionType.templateMap.purpose_descrip as keyof ScheduleTransaction; + ((payload as ScheduleTransaction)[key] as string) = + payload.transactionType.generatePurposeDescriptionWrapper(payload); + } + + return payload; } } diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index c96fc0491b..100e41527e 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -49,9 +49,9 @@ export class TransactionService implements TableListService { const aggregation_group: AggregationGroups | undefined = (transaction as ScheduleTransaction)?.aggregation_group || AggregationGroups.GENERAL; const apiEndpoint: string = transaction?.apiEndpoint || ''; - // const scheduleClass = getScheduleClass(apiEndpoint); if (transaction && action_date && contact_id && aggregation_group) { + // Need 404 handler return this.apiService .get(`${apiEndpoint}/previous/`, { transaction_id, @@ -66,7 +66,6 @@ export class TransactionService implements TableListService { public create(transaction: Transaction): Observable { const payload = transaction.toJson(); - // const scheduleClass = getScheduleClass(transaction.apiEndpoint); return this.apiService .post(`${transaction.apiEndpoint}/`, payload) .pipe(map((response) => getFromJSON(response))); @@ -74,7 +73,6 @@ export class TransactionService implements TableListService { public update(transaction: Transaction): Observable { const payload = transaction.toJson(); - // const scheduleClass = getScheduleClass(transaction.apiEndpoint); return this.apiService .put(`${transaction.apiEndpoint}/${transaction.id}/`, payload) .pipe(map((response) => getFromJSON(response))); diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 2cc7a8f04d..eb76782a92 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -171,5 +171,6 @@ export function getFromJSON(json: any, depth = 2): ScheduleTransaction { // esli if (transactionType.scheduleId === 'A') return SchATransaction.fromJSON(json, depth); if (transactionType.scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); } - throw new Error('Missing transaction type identifier when creating a transaction object from a JSON record'); + return SchATransaction.fromJSON(json, depth); // Until 404 resolved + // throw new Error('Missing transaction type identifier when creating a transaction object from a JSON record'); } From 9a4472c2f21fbaa8f623951b6b898f053029f0bd Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 9 Feb 2023 09:33:42 -0500 Subject: [PATCH 028/115] Fixed parent-child CPD update bug --- .../double-transaction-type-base.component.ts | 15 ++++++++------- .../transaction-type-base.component.ts | 1 - .../OPERATING_EXPENDITURE.model.spec.ts | 8 ++++---- .../src/app/shared/models/transaction.model.ts | 1 - .../app/shared/services/transaction.service.ts | 5 ++--- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 9e96f53034..38ae1d7b5c 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -105,7 +105,7 @@ export abstract class DoubleTransactionTypeBaseComponent const key = this.childTemplateMap.organization_name as keyof ScheduleTransaction; ((this.childTransaction as ScheduleTransaction)[key] as string) = value; } - this.updatePurposeDescription(); + this.updateParentPurposeDescription(); }); this.childForm .get(this.childTemplateMap.first_name) @@ -115,7 +115,7 @@ export abstract class DoubleTransactionTypeBaseComponent const key = this.childTemplateMap.first_name as keyof ScheduleTransaction; ((this.childTransaction as ScheduleTransaction)[key] as string) = value; } - this.updatePurposeDescription(); + this.updateParentPurposeDescription(); }); this.childForm .get(this.childTemplateMap.last_name) @@ -125,7 +125,7 @@ export abstract class DoubleTransactionTypeBaseComponent const key = this.childTemplateMap.last_name as keyof ScheduleTransaction; ((this.childTransaction as ScheduleTransaction)[key] as string) = value; } - this.updatePurposeDescription(); + this.updateParentPurposeDescription(); }); } @@ -147,14 +147,15 @@ export abstract class DoubleTransactionTypeBaseComponent this.childContactId$.complete(); } - private updatePurposeDescription() { + private updateParentPurposeDescription() { if (this.childTransaction && this.childTemplateMap) { (this.childTransaction as ScheduleTransaction).entity_type = this.childForm.get('entity_type')?.value; - if (this.childTransaction.transactionType?.generatePurposeDescription) { + if (this.transaction?.transactionType?.generatePurposeDescription) { this.form.patchValue({ - [this.childTemplateMap.purpose_descrip]: - this.childTransaction.transactionType.generatePurposeDescriptionWrapper(this.childTransaction), + [this.templateMap.purpose_descrip]: this.transaction.transactionType.generatePurposeDescriptionWrapper( + this.transaction + ), }); } } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 4fdf468cb6..3d387c81cb 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -1,7 +1,6 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; -// import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { NavigationAction, NavigationControl, diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts index 0d1a3cd0c0..6cfb3c4c86 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts @@ -11,13 +11,13 @@ describe('OPERATING_EXPENDITURE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('B'); + expect(transactionType.scheduleId).toBe('B'); + expect(transactionType.componentGroupId).toBe('H'); }); - it('#factory() should return a SchATransaction', () => { + it('#factory() should return a SchBTransaction', () => { const txn: SchBTransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA15'); + expect(txn.form_type).toBe('SB21b'); expect(txn.transaction_type_identifier).toBe(ScheduleBTransactionTypes.OPERATING_EXPENDITURE); }); diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 537ea7cbcf..b8f12a8246 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -135,7 +135,6 @@ export function hasNoContact(transaction?: Transaction): boolean { return !transaction?.contact; } -// export type ScheduleTransactionKeys = SchATransaction & SchBTransaction; export type ScheduleTransaction = SchATransaction | SchBTransaction; export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 100e41527e..4ace1e0b74 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -48,15 +48,14 @@ export class TransactionService implements TableListService { const transaction_id: string = transaction?.id || ''; const aggregation_group: AggregationGroups | undefined = (transaction as ScheduleTransaction)?.aggregation_group || AggregationGroups.GENERAL; - const apiEndpoint: string = transaction?.apiEndpoint || ''; if (transaction && action_date && contact_id && aggregation_group) { // Need 404 handler return this.apiService - .get(`${apiEndpoint}/previous/`, { + .get('/transactions/previous/', { transaction_id, contact_id, - action_date: actionDateString, + date: actionDateString, aggregation_group, }) .pipe(map((response) => getFromJSON(response))); From 26c3b1a36a28b21a1038711aa5af2fbeb2417453 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 9 Feb 2023 11:35:15 -0500 Subject: [PATCH 029/115] Fixed transaction resolve of a dependent child payload --- .../shared/resolvers/transaction.resolver.ts | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.ts b/front-end/src/app/shared/resolvers/transaction.resolver.ts index 488f95b8fa..11a5e7f2ce 100644 --- a/front-end/src/app/shared/resolvers/transaction.resolver.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; -import { map, Observable, of } from 'rxjs'; +import { map, Observable, of, mergeMap } from 'rxjs'; import { TransactionType } from '../models/transaction-types/transaction-type.model'; import { Transaction } from '../models/transaction.model'; import { ContactService } from '../services/contact.service'; @@ -60,6 +60,29 @@ export class TransactionResolver implements Resolve { } resolve_existing_transaction(transactionId: string): Observable { - return this.transactionService.get(String(transactionId)); + return this.transactionService.get(String(transactionId)).pipe( + mergeMap((transaction: Transaction) => { + if (transaction.transaction_type_identifier && transaction.contact) { + // Determine if we need to get the parent transaction as the + // transaction type requested is a dependent transaction and cannot + // be modified directly in a UI form. (e.g. EARMARK_MEMO) + if (transaction.transactionType && transaction.transactionType.isDependentChild) { + // Get parent transaction to ensure we have a full list of children + if (transaction?.parent_transaction?.id) { + return this.transactionService.get(transaction.parent_transaction.id); + } else { + throw new Error( + `Transaction ${transaction.id} (${transaction.transaction_type_identifier}) is a dependent transaction type but does not have a parent transaction.` + ); + } + } else { + return of(transaction); + } + } + throw new Error( + `Transaction type resolver can't find transaction and/or contact for transaction ID ${transactionId}` + ); + }) + ); } } From baf762fd884ebbcc122840f0764121c149d7cf24 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 9 Feb 2023 12:36:13 -0500 Subject: [PATCH 030/115] Fix bug when reversing child-parent transaction save --- .../transaction-type-base.component.ts | 11 +++++++---- .../INDIVIDUAL_RECOUNT_RECEIPT.model.ts | 2 +- ...RANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- front-end/src/app/shared/models/transaction.model.ts | 11 ++++++----- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 3d387c81cb..1764369b39 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -196,19 +196,22 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy // to create a grandchild transaction because we won't know which child transaction of the grandparent // was the original transaction it's id was generated on the api. the middle child's // id is necessary to generate the url for creating the grandchild. - const transactionType = TransactionTypeUtils.factory(payload.transaction_type_identifier); - if (transactionType.updateParentOnSave) { + if (payload.transactionType?.updateParentOnSave) { payload = payload.getUpdatedParent(); } if (payload.id) { this.transactionService.update(payload).subscribe((transaction) => { - navigationEvent.transaction = !transactionType.updateParentOnSave ? transaction : originalTransaction; + navigationEvent.transaction = originalTransaction.transactionType?.updateParentOnSave + ? transaction + : originalTransaction; this.navigateTo(navigationEvent); }); } else { this.transactionService.create(payload).subscribe((transaction) => { - navigationEvent.transaction = !transactionType.updateParentOnSave ? transaction : originalTransaction; + navigationEvent.transaction = originalTransaction.transactionType?.updateParentOnSave + ? transaction + : originalTransaction; this.navigateTo(navigationEvent); }); } diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts index a9932446bf..9a95efec64 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts @@ -12,7 +12,7 @@ export class INDIVIDUAL_RECOUNT_RECEIPT extends SchaTransactionType { override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override generatePurposeDescription(): string { - return `Recount Account`; + return 'Recount Account'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 406c869293..9fb56797c7 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -21,7 +21,7 @@ export class JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransacti override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override generatePurposeDescription(): string { - return `Pres. Nominating Convention Account Transfer of JF Proceeds`; + return 'Pres. Nominating Convention Account Transfer of JF Proceeds'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index b8f12a8246..1fd49357cb 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -106,19 +106,20 @@ export abstract class Transaction extends BaseModel { // The parent is the new payload const payload = this.parent_transaction as Transaction; + if (!payload.children) payload.children = []; // Attach the original payload to the parent as a child, replacing an // existing version if needed - if (this.id && this.parent_transaction) { - payload.children = this.parent_transaction.children?.filter((c) => c.id !== this.id); + if (this.id) { + payload.children = payload.children.filter((c) => c.id !== this.id); } if (!childDeleted) { - payload.children?.push(this); + payload.children.push(this); } payload.children = payload.updateChildren(); - // Update the CPD - if (payload?.transactionType?.generatePurposeDescription) { + // Update the purpose description + if (payload.transactionType?.generatePurposeDescription) { const key = payload.transactionType.templateMap.purpose_descrip as keyof ScheduleTransaction; ((payload as ScheduleTransaction)[key] as string) = payload.transactionType.generatePurposeDescriptionWrapper(payload); From 5b1731d867ee8586f519419a95f421d71f19ea2a Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 9 Feb 2023 15:28:35 -0500 Subject: [PATCH 031/115] Fixed navigation issue in save of transaction --- .../transaction-type-base.component.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 1764369b39..76b09bfe9e 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -18,7 +18,6 @@ import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { ConfirmationService, MessageService, SelectItem } from 'primeng/api'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.model'; @@ -203,15 +202,15 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy if (payload.id) { this.transactionService.update(payload).subscribe((transaction) => { navigationEvent.transaction = originalTransaction.transactionType?.updateParentOnSave - ? transaction - : originalTransaction; + ? originalTransaction + : transaction; this.navigateTo(navigationEvent); }); } else { this.transactionService.create(payload).subscribe((transaction) => { navigationEvent.transaction = originalTransaction.transactionType?.updateParentOnSave - ? transaction - : originalTransaction; + ? originalTransaction + : transaction; this.navigateTo(navigationEvent); }); } From 1ee850e80c0e740e8c9efd63c6777385e0d5ed6a Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 9 Feb 2023 18:38:31 -0500 Subject: [PATCH 032/115] 206 cr changes --- front-end/src/app/shared/services/fec-api.service.spec.ts | 6 +++--- front-end/src/app/shared/services/fec-api.service.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/services/fec-api.service.spec.ts b/front-end/src/app/shared/services/fec-api.service.spec.ts index 377182d706..4c541cca68 100644 --- a/front-end/src/app/shared/services/fec-api.service.spec.ts +++ b/front-end/src/app/shared/services/fec-api.service.spec.ts @@ -43,7 +43,7 @@ describe('FecApiService', () => { }); const req = httpTestingController.expectOne( - `https://localhost/api/v1/mock_openfec/committee/C00601211/` + `https://localhost/api/v1/openfec/C00601211/committee/` ); expect(req.request.method).toEqual('GET'); @@ -60,7 +60,7 @@ describe('FecApiService', () => { }); const req = httpTestingController.expectOne( - `https://localhost/api/v1/mock_openfec/filings/C00601211/` + `https://localhost/api/v1/openfec/C00601211/filings/` ); expect(req.request.method).toEqual('GET'); @@ -76,7 +76,7 @@ describe('FecApiService', () => { }); const realtimeReq = httpTestingController.expectOne( - `https://localhost/api/v1/mock_openfec/filings/C00601211/` + `https://localhost/api/v1/openfec/C00601211/filings/` ); expect(realtimeReq.request.method).toEqual('GET'); realtimeReq.flush(f2Filing); diff --git a/front-end/src/app/shared/services/fec-api.service.ts b/front-end/src/app/shared/services/fec-api.service.ts index 3fd5c9e002..8e210aaae7 100644 --- a/front-end/src/app/shared/services/fec-api.service.ts +++ b/front-end/src/app/shared/services/fec-api.service.ts @@ -41,7 +41,7 @@ export class FecApiService { } return this.apiService.get( - `/mock_openfec/committee/${committeeId}/`).pipe(map( + `/openfec/${committeeId}/committee/`).pipe(map( (response) => response.results[0] as CommitteeAccount)); } @@ -61,7 +61,7 @@ export class FecApiService { } return this.apiService.get( - `/mock_openfec/filings/${committeeId}/`).pipe(map( + `/openfec/${committeeId}/filings/`).pipe(map( (response) => FecFiling.fromJSON(response))); } } From 650ae4f5c1f46b6df2640507c7b7233bdbd5d400 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 10 Feb 2023 09:55:01 -0500 Subject: [PATCH 033/115] Temporary code change to deploy to DEV --- tasks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasks.py b/tasks.py index c0445fffe6..53b3641dbe 100644 --- a/tasks.py +++ b/tasks.py @@ -57,7 +57,8 @@ def _detect_branch(repo): DEPLOY_RULES = ( ("prod", lambda _, branch: branch == "main"), ("stage", lambda _, branch: branch.startswith("release")), - ("dev", lambda _, branch: branch == "develop"), + # ("dev", lambda _, branch: branch == "develop"), + ("dev", lambda _, branch: branch == "feature/678-operating-expenditure"), ) From c8464c8b4efa9d2d4aaefe12268fb129ce45ffb0 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 10 Feb 2023 10:10:57 -0500 Subject: [PATCH 034/115] Updates to unit tests --- .../transaction-type-base.component.spec.ts | 34 +++++----- ...TIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts | 11 ++-- ...L_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts | 14 +++-- .../PARTNERSHIP_RECEIPT.model.spec.ts | 26 ++++---- .../PARTY_JF_TRANSFER_MEMO.model.spec.ts | 29 ++++----- .../TRIBAL_JF_TRANSFER_MEMO.model.spec.ts | 29 ++++----- ..._CONVENTION_JF_TRANSFER_MEMO.model.spec.ts | 24 +++---- ...EADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts | 24 +++---- ...RTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts | 35 +++++++---- .../transaction-type.model.spec.ts | 19 ++++-- .../shared/models/transaction.model.spec.ts | 4 -- .../resolvers/transaction.resolver.spec.ts | 16 ++--- .../services/transaction.service.spec.ts | 20 +++--- .../shared/services/validate.service.spec.ts | 8 +-- .../src/app/shared/utils/unit-test.utils.ts | 54 ++++++++++++++++ .../transaction-group-a.component.spec.ts | 21 +------ .../transaction-group-ag.component.spec.ts | 11 ++-- .../transaction-group-b.component.spec.ts | 37 ++++------- .../transaction-group-d.component.spec.ts | 19 ++---- .../transaction-group-e.component.spec.ts | 6 +- .../transaction-group-f.component.spec.ts | 55 ++++------------ .../transaction-group-fg.component.spec.ts | 9 --- .../transaction-group-h.component.spec.ts | 63 ++++++------------- 23 files changed, 265 insertions(+), 303 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts index 5ae4e743a9..cf263e4164 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts @@ -143,7 +143,7 @@ describe('TransactionTypeBaseComponent', () => { }); it('#retrieveMemoText should work', () => { - if (component.transactionType) component.transactionType.transaction = testTransaction; + if (component.transactionType) component.transaction = testTransaction; else component.transactionType = { transaction: testTransaction, @@ -175,7 +175,7 @@ describe('TransactionTypeBaseComponent', () => { function addContact(component: TestTransactionTypeBaseComponent, contact: Contact) { if (component.transactionType?.transaction) { - component.transactionType.transaction.contact = contact; + component.transaction.contact = contact; } } @@ -224,12 +224,12 @@ describe('TransactionTypeBaseComponent', () => { const testContact2 = new Contact(); testContact2.type = ContactTypes.INDIVIDUAL; testContact2.id = 'testId'; - if (component.transactionType.transaction) { - component.transactionType.transaction.contact = testContact2; + if (component.transaction) { + component.transaction.contact = testContact2; } component.save(listSaveEvent); - if (component.transactionType.transaction) { - component.transactionType.transaction.contact = undefined; + if (component.transaction) { + component.transaction.contact = undefined; } TransactionContactUtils.getEditTransactionContactConfirmationMessage([], testContact, component.form, fecDatePipe); expect(componentNavigateToSpy).toHaveBeenCalledTimes(3); @@ -267,8 +267,8 @@ describe('TransactionTypeBaseComponent', () => { const testContact2 = new Contact(); testContact2.type = ContactTypes.COMMITTEE; testContact2.id = 'testId'; - if (component.transactionType.transaction) { - component.transactionType.transaction.contact = testContact2; + if (component.transaction) { + component.transaction.contact = testContact2; } component.save(listSaveEvent); expect(componentNavigateToSpy).toHaveBeenCalledTimes(3); @@ -294,8 +294,8 @@ describe('TransactionTypeBaseComponent', () => { const orgContact2 = new Contact(); orgContact2.type = ContactTypes.ORGANIZATION; orgContact2.id = 'testId'; - if (component.transactionType.transaction) { - component.transactionType.transaction.contact = orgContact2; + if (component.transaction) { + component.transaction.contact = orgContact2; } component.save(listSaveEvent); expect(componentNavigateToSpy).toHaveBeenCalledTimes(3); @@ -332,7 +332,7 @@ describe('TransactionTypeBaseComponent', () => { const componentNavigateToSpy = spyOn(component, 'navigateTo'); component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT) || ({} as TransactionType); - component.transactionType.transaction = testTransaction; + component.transaction = testTransaction; component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction2)); tick(1000); @@ -358,8 +358,8 @@ describe('TransactionTypeBaseComponent', () => { component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); if (component.transactionType) { - component.transactionType.transaction = testTransaction; - component.transactionType.transaction.report_id = '999'; + component.transaction = testTransaction; + component.transaction.report_id = '999'; } const expectedMessage: Message = { @@ -406,7 +406,7 @@ describe('TransactionTypeBaseComponent', () => { it('#navigateTo NavigationDestination.CHILD should navigate', () => { component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); if (component.transactionType) { - component.transactionType.transaction = testTransaction; + component.transaction = testTransaction; } const expectedRoute = '/transactions/report/999/list/edit/123/create-sub-transaction/INDIVIDUAL_RECEIPT'; const routerNavigateByUrlSpy = spyOn(testRouter, 'navigateByUrl'); @@ -445,7 +445,7 @@ describe('TransactionTypeBaseComponent', () => { it('#navigateTo default should navigate', () => { component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); if (component.transactionType) { - component.transactionType.transaction = testTransaction; + component.transaction = testTransaction; } const expectedRoute = '/transactions/report/999/list'; const routerNavigateByUrlSpy = spyOn(testRouter, 'navigateByUrl'); @@ -575,7 +575,7 @@ describe('TransactionTypeBaseComponent', () => { it('#onContactLookupSelect INDIVIDUAL should calculate aggregate', () => { component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); - component.transactionType.transaction = component.transactionType.getNewTransaction(); + component.transaction = component.transactionType.getNewTransaction(); TransactionFormUtils.onInit( component, component.form, @@ -583,7 +583,7 @@ describe('TransactionTypeBaseComponent', () => { component.transactionType, component.contactId$ ); - component.transactionType.transaction = component.transactionType.getNewTransaction(); + component.transaction = component.transactionType.getNewTransaction(); const testEntityType = ContactTypes.INDIVIDUAL; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index b3c4c7f0b8..92fae36530 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -23,17 +23,18 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { }); it('#generatePurposeDescription() should generate expected retval', () => { - const descrip = transactionType.generatePurposeDescription(); + const txn = transactionType.getNewTransaction(); + const descrip = transactionType.generatePurposeDescription(txn); expect(descrip).toBe('Recount/Legal Proceedings Account (Partnership attributions do not require itemization)'); }); it('#generatePurposeDescription() should generate a string', () => { - transactionType.transaction = transactionType.getNewTransaction(); - let descrip = transactionType.generatePurposeDescription(); + const txn = transactionType.getNewTransaction(); + let descrip = transactionType.generatePurposeDescription(txn); expect(descrip).toBe('Recount/Legal Proceedings Account (Partnership attributions do not require itemization)'); - transactionType.transaction.children = [transactionType.getNewTransaction()]; - descrip = transactionType.generatePurposeDescription(); + txn.children = [transactionType.getNewTransaction()]; + descrip = transactionType.generatePurposeDescription(txn); expect(descrip).toBe('Recount/Legal Proceedings Account (See Partnership Attribution(s) below)'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts index df4facf74c..382e8ad291 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts @@ -1,16 +1,18 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { - let transactionType: PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = - new PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = getTestTransactionByType( + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT + ); + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts index 62759bba21..d857171986 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts @@ -1,32 +1,32 @@ -import { PARTNERSHIP_RECEIPT } from './PARTNERSHIP_RECEIPT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; describe('PARTNERSHIP_RECEIPT', () => { - let transactionType: PARTNERSHIP_RECEIPT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PARTNERSHIP_RECEIPT(); + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.PARTNERSHIP_RECEIPT + ).getNewTransaction() as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('D'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('D'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA11AI'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECEIPT); + expect(transaction.form_type).toBe('SA11AI'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECEIPT); }); it('#generatePurposeDescription() should generate a string', () => { - transactionType.transaction = transactionType.getNewTransaction(); - let descrip = transactionType.generatePurposeDescription(); + let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Partnership attributions do not require itemization'); - transactionType.transaction.children = [transactionType.getNewTransaction()]; - descrip = transactionType.generatePurposeDescription(); + transaction.children = [{ ...transaction } as SchATransaction]; + descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('See Partnership Attribution(s) below'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts index 269199856e..6ed660937c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts @@ -1,31 +1,32 @@ +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; -import { PARTY_JF_TRANSFER_MEMO } from './PARTY_JF_TRANSFER_MEMO.model'; describe('PARTY_JF_TRANSFER_MEMO', () => { - let transactionType: PARTY_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PARTY_JF_TRANSFER_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = new JOINT_FUNDRAISING_TRANSFER().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.PARTY_JF_TRANSFER_MEMO + ).getNewTransaction() as SchATransaction; + transaction.parent_transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ).getNewTransaction() as SchATransaction; + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('F'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA12'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTY_JF_TRANSFER_MEMO); + expect(transaction.form_type).toBe('SA12'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTY_JF_TRANSFER_MEMO); }); it('#generatePurposeDescription() should return appropriate retval', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(`JF Memo: Test Org`); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts index 310dbc6d86..e207695978 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts @@ -1,31 +1,32 @@ +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; -import { TRIBAL_JF_TRANSFER_MEMO } from './TRIBAL_JF_TRANSFER_MEMO.model'; describe('TRIBAL_JF_TRANSFER_MEMO', () => { - let transactionType: TRIBAL_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new TRIBAL_JF_TRANSFER_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = new JOINT_FUNDRAISING_TRANSFER().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO + ).getNewTransaction() as SchATransaction; + transaction.parent_transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ).getNewTransaction() as SchATransaction; + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('D'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('D'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA12'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO); + expect(transaction.form_type).toBe('SA12'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO); }); it('#generatePurposeDescription() should return appropriate retval', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(`JF Memo: Test Org`); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 5c14dfe8aa..250a52dd4e 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,32 +1,34 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO } from './TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model'; +import { Transaction } from '../transaction.model'; +import { TransactionTypeUtils } from '../../utils/transaction-type.utils'; describe('TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { - let transactionType: TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO; + let transaction: Transaction; beforeEach(() => { - transactionType = new TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO(); + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO + ).getNewTransaction(); }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('D'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('D'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( `Pres. Nominating Convention Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction)?.contributor_organization_name }` ); }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index 37b43ff8c4..d03019933d 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,32 +1,34 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO } from './TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model'; +import { Transaction } from '../transaction.model'; +import { TransactionTypeUtils } from '../../utils/transaction-type.utils'; describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { - let transactionType: TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO; + let transaction: Transaction; beforeEach(() => { - transactionType = new TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO(); + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO + ).getNewTransaction(); }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('D'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('D'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( `Headquarters Buildings Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction)?.contributor_organization_name }` ); }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 0cf5805476..407d30afc4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,32 +1,41 @@ +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from './TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model'; +import { Transaction } from '../transaction.model'; describe('TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { - let transactionType: TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO; + let transaction: Transaction; beforeEach(() => { - transactionType = new TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO(); + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO + ).getNewTransaction(); }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('D'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('D'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( - ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO - ); + const txn: Transaction | undefined = transaction.transactionType?.getNewTransaction(); + expect(txn).toBeTruthy(); + if (txn) { + expect(txn.form_type).toBe('SA17'); + expect(txn.transaction_type_identifier).toBe( + ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO + ); + } }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); + transaction.parent_transaction = { + contributor_organization_name: 'ABC', + } as SchATransaction; + const descrip: string = transaction.transactionType?.generatePurposeDescription?.(transaction) || ''; expect(descrip).toBe( `Recount/Legal Proceedings Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction)?.contributor_organization_name }` ); }); diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts index 9020a16370..c8f1b6554b 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts @@ -1,13 +1,24 @@ +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { ScheduleATransactionTypes } from '../scha-transaction.model'; import { EARMARK_RECEIPT_RECOUNT_ACCOUNT } from './EARMARK_RECEIPT_RECOUNT_ACCOUNT.model'; +import { Transaction } from '../transaction.model'; describe('Transaction Type Model', () => { + let transaction: Transaction; + + beforeEach(() => { + transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_RECOUNT_ACCOUNT_CONTRIBUTION + ).getNewTransaction(); + }); + it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { const transactionType = new EARMARK_RECEIPT_RECOUNT_ACCOUNT(); const spy = spyOn(transactionType, 'generatePurposeDescription'); spy.and.returnValue('A short response'); - const originalDescrip = transactionType.generatePurposeDescription?.(); - const modifiedDescrip = transactionType.generatePurposeDescriptionWrapper(); + const originalDescrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + const modifiedDescrip = transaction.transactionType?.generatePurposeDescriptionWrapper(transaction); expect(originalDescrip).toEqual(modifiedDescrip); }); @@ -21,8 +32,8 @@ describe('Transaction Type Model', () => { 'This should probably get it done.' ); - const originalDescrip = transactionType.generatePurposeDescription?.(); - const modifiedDescrip = transactionType.generatePurposeDescriptionWrapper(); + const originalDescrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + const modifiedDescrip = transaction.transactionType?.generatePurposeDescriptionWrapper(transaction) || ''; expect(originalDescrip).not.toEqual(modifiedDescrip); expect(modifiedDescrip.length).toEqual(100); }); diff --git a/front-end/src/app/shared/models/transaction.model.spec.ts b/front-end/src/app/shared/models/transaction.model.spec.ts index 5d98d04559..7a0e0509d7 100644 --- a/front-end/src/app/shared/models/transaction.model.spec.ts +++ b/front-end/src/app/shared/models/transaction.model.spec.ts @@ -1,4 +1,3 @@ -import { SchATransaction } from './scha-transaction.model'; import { Transaction } from './transaction.model'; describe('Transaction', () => { @@ -6,9 +5,6 @@ describe('Transaction', () => { // Must extend the abstract class to instantiate it class ChildTransaction extends Transaction { apiEndpoint = '/sch-x-transactions'; - getUpdatedParent() { - return new SchATransaction(); - } } expect(new ChildTransaction()).toBeTruthy(); }); diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts b/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts index 7cb000bcae..6e9c7d6b62 100644 --- a/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import { ActivatedRouteSnapshot, convertToParamMap } from '@angular/router'; import { provideMockStore } from '@ngrx/store/testing'; import { of } from 'rxjs'; -import { TransactionType } from '../models/transaction-types/transaction-type.model'; +import { Transaction } from '../models/transaction.model'; import { Contact } from '../models/contact.model'; import { SchATransaction } from '../models/scha-transaction.model'; import { ContactService } from '../services/contact.service'; @@ -53,10 +53,10 @@ describe('TransactionResolver', () => { testContact.id = 'testId'; spyOn(testContactService, 'get').and.returnValue(of(testContact)); - resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: TransactionType | undefined) => { + resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: Transaction | undefined) => { expect(of(response)).toBeTruthy(); if (response) { - expect('Offsets to Operating Expenditures').toEqual(response.title); + expect('Offsets to Operating Expenditures').toEqual(response.transactionType?.title || ''); } }); }); @@ -66,7 +66,7 @@ describe('TransactionResolver', () => { paramMap: convertToParamMap({ transactionId: undefined }), }; - resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: TransactionType | undefined) => { + resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: Transaction | undefined) => { expect(response).toEqual(undefined); }); }); @@ -76,10 +76,10 @@ describe('TransactionResolver', () => { paramMap: convertToParamMap({ reportId: 1, transactionType: 'OFFSET_TO_OPERATING_EXPENDITURES' }), }; - resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: TransactionType | undefined) => { + resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: Transaction | undefined) => { expect(response).toBeTruthy(); if (response) { - expect(response.title).toEqual('Offsets to Operating Expenditures'); + expect(response.transactionType?.title).toEqual('Offsets to Operating Expenditures'); } }); }); @@ -89,10 +89,10 @@ describe('TransactionResolver', () => { paramMap: convertToParamMap({ parentTransactionId: 1, transactionType: 'PAC_JF_TRANSFER_MEMO' }), }; - resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: TransactionType | undefined) => { + resolver.resolve(route as ActivatedRouteSnapshot).subscribe((response: Transaction | undefined) => { expect(response).toBeTruthy(); if (response) { - expect(response.title).toEqual('PAC Joint Fundraising Transfer Memo'); + expect(response.transactionType?.title).toEqual('PAC Joint Fundraising Transfer Memo'); } }); }); diff --git a/front-end/src/app/shared/services/transaction.service.spec.ts b/front-end/src/app/shared/services/transaction.service.spec.ts index b4fe9faae0..fa58043b23 100644 --- a/front-end/src/app/shared/services/transaction.service.spec.ts +++ b/front-end/src/app/shared/services/transaction.service.spec.ts @@ -3,7 +3,7 @@ import { HttpClientTestingModule, HttpTestingController } from '@angular/common/ import { TestBed } from '@angular/core/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { environment } from '../../../environments/environment'; -import { TransactionType } from '../models/transaction-types/transaction-type.model'; +import { Transaction } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; import { AggregationGroups } from '../models/transaction.model'; @@ -79,19 +79,13 @@ describe('TransactionService', () => { transaction_type_identifier: ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES, aggregation_group: AggregationGroups.GENERAL, }); - const mockTransactionType: TransactionType | undefined = TransactionTypeUtils.factory( + const mockTransaction: Transaction = TransactionTypeUtils.factory( ScheduleATransactionTypes.INDIVIDUAL_RECEIPT - ); - if (mockTransactionType) { - mockTransactionType.transaction = mockResponse; - mockTransactionType.transaction = SchATransaction.fromJSON({ - id: 'abc', - transaction_type_identifier: ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES, - }); - service.getPreviousTransaction(mockTransactionType, '1', new Date()).subscribe((response) => { - expect(response).toEqual(mockResponse); - }); - } + ).getNewTransaction(); + mockTransaction.id = 'abc'; + service.getPreviousTransaction(mockTransaction, '1', new Date()).subscribe((response) => { + expect(response).toEqual(mockResponse); + }); const formattedDate = formatDate(new Date(), 'yyyy-MM-dd', 'en-US'); const req = httpTestingController.expectOne( `${environment.apiUrl}/transactions/schedule-a/previous/?transaction_id=abc&contact_id=1&date=${formattedDate}&aggregation_group=${AggregationGroups.GENERAL}` diff --git a/front-end/src/app/shared/services/validate.service.spec.ts b/front-end/src/app/shared/services/validate.service.spec.ts index a91f38e11e..0976bb043f 100644 --- a/front-end/src/app/shared/services/validate.service.spec.ts +++ b/front-end/src/app/shared/services/validate.service.spec.ts @@ -20,7 +20,7 @@ describe('ValidateService', () => { const fb: FormBuilder = new FormBuilder(); service.formValidatorSchema = contactCandidateSchema; service.formValidatorForm = fb.group( - service.getFormGroupFields(service.getSchemaProperties(contactCandidateSchema)) + service.getFormGroupFields(ValidateService.getSchemaProperties(contactCandidateSchema)) ); service.formValidatorForm.patchValue({ telephone: '12345678910', @@ -50,7 +50,7 @@ describe('ValidateService', () => { it('#formValidator should validate boolean properties correctly', () => { const fb: FormBuilder = new FormBuilder(); service.formValidatorSchema = f3xSchema; - service.formValidatorForm = fb.group(service.getFormGroupFields(service.getSchemaProperties(f3xSchema))); + service.formValidatorForm = fb.group(service.getFormGroupFields(ValidateService.getSchemaProperties(f3xSchema))); service.formValidatorForm.patchValue({ change_of_address: 'A', }); @@ -73,7 +73,7 @@ describe('ValidateService', () => { it('#formValidator should validate min/max numeric properties correctly', () => { const fb: FormBuilder = new FormBuilder(); service.formValidatorSchema = f3xSchema; - service.formValidatorForm = fb.group(service.getFormGroupFields(service.getSchemaProperties(f3xSchema))); + service.formValidatorForm = fb.group(service.getFormGroupFields(ValidateService.getSchemaProperties(f3xSchema))); service.formValidatorForm.patchValue({ L6a_cash_on_hand_jan_1_ytd: 1000000000.0, }); @@ -98,7 +98,7 @@ describe('ValidateService', () => { }); it('#getSchemaProperties() should return empty array when no schema', () => { - const properties: string[] = service.getSchemaProperties(undefined); + const properties: string[] = ValidateService.getSchemaProperties(undefined); expect(properties.length).toBe(0); }); }); diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index f4e5ef8b82..99dc38eb8b 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -11,6 +11,11 @@ import { CommitteeAccount } from '../models/committee-account.model'; import { F3xSummary } from '../models/f3x-summary.model'; import { UploadSubmission } from '../models/upload-submission.model'; import { CashOnHand } from '../interfaces/report.interface'; +import { AggregationGroups, ScheduleTransactionTypes } from '../models/transaction.model'; +import { SchBTransaction } from '../models/schb-transaction.model'; +import { ContactTypes } from '../models/contact.model'; +import { SchATransaction } from '../models/scha-transaction.model'; +import { TransactionTypeUtils } from './transaction-type.utils'; export const testCommitteeAccount: CommitteeAccount = CommitteeAccount.fromJSON({ affiliated_committee_name: 'NONE', @@ -118,3 +123,52 @@ export const testMockStore = { { selector: selectCashOnHand, value: testCashOnHand }, ], }; + +export const testScheduleATransaction = SchATransaction.fromJSON({ + form_type: 'SA15', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'PAC_JF_TRANSFER_MEMO', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + back_reference_tran_id_number: 'AAAAAAAAAAAAAAAAAAA', + back_reference_sched_name: 'SA12', + entity_type: ContactTypes.COMMITTEE, + contributor_organization_name: 'org name', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + contribution_date: '2022-08-11', + contribution_amount: 1, + contribution_aggregate: 2, + contribution_purpose_descrip: 'Joint Fundraising Memo: test', + aggregation_group: AggregationGroups.GENERAL, + memo_code: true, + donor_committee_fec_id: 'C00000000', +}); + +export const testScheduleBTransaction = SchBTransaction.fromJSON({ + form_type: 'SB21b', + filer_committee_id_number: 'C00000000', + transaction_type_identifier: 'OPERATING_EXPENDITURE', + transaction_id: 'AAAAAAAAAAAAAAAAAAA', + entity_type: ContactTypes.ORGANIZATION, + contributor_organization_name: 'org name', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + contribution_date: '2022-08-11', + contribution_amount: 1, + contribution_aggregate: 2, + aggregation_group: AggregationGroups.GENERAL_DISBURSEMENT, +}); + +export function getTestTransactionByType( + transactionType: ScheduleTransactionTypes, + parentTransactionType?: ScheduleTransactionTypes +): Transaction { + const transaction = TransactionTypeUtils.factory(transactionType).getNewTransaction(); + if (parentTransactionType) { + transaction.parent_transaction = TransactionTypeUtils.factory(parentTransactionType).getNewTransaction(); + } +} diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts index 6e6b4b32de..f35e0cdb39 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts @@ -3,8 +3,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction } from 'app/shared/models/transaction.model'; import { ContactTypes } from 'app/shared/models/contact.model'; import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { @@ -13,9 +11,8 @@ import { NavigationEvent, } from 'app/shared/models/transaction-navigation-controls.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { testMockStore, testScheduleATransaction } from 'app/shared/utils/unit-test.utils'; import { environment } from 'environments/environment'; -import { schema as INDIVIDUAL_JF_TRANSFER_MEMO } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_JF_TRANSFER_MEMO'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; @@ -79,21 +76,7 @@ describe('TransactionGroupAComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupAComponent); component = fixture.componentInstance; - component.transactionType = { - scheduleId: '', - componentGroupId: '', - contact: undefined, - generatePurposeDescriptionWrapper: () => 'test description', - getNewTransaction: () => { - return {} as Transaction; - }, - title: '', - schema: INDIVIDUAL_JF_TRANSFER_MEMO, - transaction: transaction, - isDependentChild: false, - updateParentOnSave: false, - getSchemaName: () => 'foo', - } as TransactionType; + component.transaction = testScheduleATransaction; fixture.detectChanges(); }); diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts index ae2671f7d6..ff07a3eb6b 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts @@ -18,20 +18,17 @@ import { InputNumberModule } from 'primeng/inputnumber'; import { InputTextModule } from 'primeng/inputtext'; import { InputTextareaModule } from 'primeng/inputtextarea'; import { ToastModule } from 'primeng/toast'; -import { EARMARK_RECEIPT } from '../../shared/models/transaction-types/EARMARK_RECEIPT.model'; import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupAgComponent } from './transaction-group-ag.component'; import { ConfirmDialogModule } from 'primeng/confirmdialog'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; describe('TransactionGroupAgComponent', () => { let component: TransactionGroupAgComponent; let fixture: ComponentFixture; - const earmarkReceipt = new EARMARK_RECEIPT(); - earmarkReceipt.transaction = earmarkReceipt.getNewTransaction(); - const earmarkMemo = new EARMARK_MEMO(); - earmarkMemo.transaction = earmarkMemo.getNewTransaction(); - earmarkReceipt.childTransactionType = earmarkMemo; + const earmarkReceipt = TransactionTypeUtils.factory(ScheduleATransactionTypes.EARMARK_RECEIPT).getNewTransaction(); beforeEach(async () => { await TestBed.configureTestingModule({ @@ -66,7 +63,7 @@ describe('TransactionGroupAgComponent', () => { }); it('should create', () => { - component.transactionType = earmarkReceipt; + component.transaction = earmarkReceipt; component.ngOnInit(); expect(component).toBeTruthy(); }); diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts index 1b58eca32f..96e62bb6c5 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.spec.ts @@ -3,10 +3,9 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction, AggregationGroups } from 'app/shared/models/transaction.model'; +import { AggregationGroups } from 'app/shared/models/transaction.model'; import { Contact, ContactTypes } from 'app/shared/models/contact.model'; -import { SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { NavigationAction, NavigationDestination, @@ -15,7 +14,6 @@ import { import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { schema as OFFSET_TO_OPERATING_EXPENDITURES } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; @@ -31,6 +29,7 @@ import { of } from 'rxjs'; import { environment } from '../../../environments/environment'; import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupBComponent } from './transaction-group-b.component'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; describe('TransactionGroupBComponent', () => { let httpTestingController: HttpTestingController; @@ -86,21 +85,9 @@ describe('TransactionGroupBComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupBComponent); component = fixture.componentInstance; - component.transactionType = { - scheduleId: '', - componentGroupId: '', - contact: undefined, - generatePurposeDescriptionWrapper: () => 'test description', - getNewTransaction: () => { - return {} as Transaction; - }, - title: '', - schema: OFFSET_TO_OPERATING_EXPENDITURES, - transaction: transaction, - isDependentChild: false, - updateParentOnSave: false, - getSchemaName: () => 'foo', - } as TransactionType; + component.transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES + ).getNewTransaction(); fixture.detectChanges(); }); @@ -145,7 +132,7 @@ describe('TransactionGroupBComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ form_type: 'SA15', @@ -181,7 +168,7 @@ describe('TransactionGroupBComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = '10'; + component.transaction.id = '10'; } component.form.patchValue({ ...transaction }); component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.ANOTHER, transaction)); @@ -201,7 +188,7 @@ describe('TransactionGroupBComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ form_type: 'SA15', @@ -239,7 +226,7 @@ describe('TransactionGroupBComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ form_type: 'SA15', @@ -276,7 +263,7 @@ describe('TransactionGroupBComponent', () => { const testContact: Contact = new Contact(); testContact.id = 'testId'; if (component.transaction) { - component.transactionType.transaction.contact = testContact; + component.transaction.contact = testContact; } spyOn(testContactService, 'create').and.returnValue(of(testContact)); spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { @@ -286,7 +273,7 @@ describe('TransactionGroupBComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchATransaction.fromJSON({ form_type: 'SA15', diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts index 12195523d0..830afcff58 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts @@ -29,6 +29,7 @@ import { InputTextareaModule } from 'primeng/inputtextarea'; import { ToastModule } from 'primeng/toast'; import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupDComponent } from './transaction-group-d.component'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; describe('TransactionGroupDComponent', () => { let httpTestingController: HttpTestingController; @@ -78,21 +79,9 @@ describe('TransactionGroupDComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupDComponent); component = fixture.componentInstance; - component.transactionType = { - scheduleId: '', - componentGroupId: '', - contact: undefined, - generatePurposeDescriptionWrapper: () => 'test description', - getNewTransaction: () => { - return {} as Transaction; - }, - title: '', - schema: TRIBAL_JF_TRANSFER_MEMO, - transaction: transaction, - isDependentChild: false, - updateParentOnSave: false, - getSchemaName: () => 'foo', - } as TransactionType; + component.transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO + ).getNewTransaction(); fixture.detectChanges(); }); diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.spec.ts b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.spec.ts index 229ca7b65f..6f766eaf57 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.spec.ts @@ -53,9 +53,9 @@ describe('TransactionGroupEComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(TransactionGroupEComponent); component = fixture.componentInstance; - component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER); - if (component.transactionType) - component.transactionType.transaction = component.transactionType?.getNewTransaction(); + component.transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ).getNewTransaction(); fixture.detectChanges(); }); diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts index 1257b75755..063c3e35bf 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts @@ -3,18 +3,15 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction } from 'app/shared/models/transaction.model'; import { NavigationAction, NavigationDestination, NavigationEvent, } from 'app/shared/models/transaction-navigation-controls.model'; -import { Contact, ContactTypes } from 'app/shared/models/contact.model'; -import { AggregationGroups, SchATransaction } from 'app/shared/models/scha-transaction.model'; +import { Contact } from 'app/shared/models/contact.model'; +import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { schema as PAC_JF_TRANSFER_MEMO } from 'fecfile-validate/fecfile_validate_js/dist/PAC_JF_TRANSFER_MEMO'; import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; @@ -31,6 +28,8 @@ import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupFComponent } from './transaction-group-f.component'; import { ContactService } from 'app/shared/services/contact.service'; import { of } from 'rxjs'; +import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { testScheduleATransaction } from 'app/shared/utils/unit-test.utils'; describe('TransactionGroupFComponent', () => { let httpTestingController: HttpTestingController; @@ -39,27 +38,7 @@ describe('TransactionGroupFComponent', () => { let testConfirmationService: ConfirmationService; let testContactService: ContactService; - const transaction = SchATransaction.fromJSON({ - form_type: 'SA15', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'PAC_JF_TRANSFER_MEMO', - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - back_reference_tran_id_number: 'AAAAAAAAAAAAAAAAAAA', - back_reference_sched_name: 'SA12', - entity_type: ContactTypes.COMMITTEE, - contributor_organization_name: 'org name', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - contribution_purpose_descrip: 'Joint Fundraising Memo: test', - aggregation_group: AggregationGroups.GENERAL, - memo_code: true, - donor_committee_fec_id: 'C00000000', - }); + const transaction = testScheduleATransaction; beforeEach(async () => { await TestBed.configureTestingModule({ @@ -91,21 +70,9 @@ describe('TransactionGroupFComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupFComponent); component = fixture.componentInstance; - component.transactionType = { - scheduleId: '', - componentGroupId: '', - contact: undefined, - generatePurposeDescriptionWrapper: () => 'test description', - getNewTransaction: () => { - return {} as Transaction; - }, - title: '', - schema: PAC_JF_TRANSFER_MEMO, - transaction: transaction, - isDependentChild: false, - updateParentOnSave: false, - getSchemaName: () => 'foo', - } as TransactionType; + component.transaction = TransactionTypeUtils.factory( + ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO + ).getNewTransaction(); fixture.detectChanges(); }); @@ -127,9 +94,9 @@ describe('TransactionGroupFComponent', () => { }); component.form.patchValue({ ...testTran }); if (component.transaction) { - component.transactionType.transaction = testTran; - component.transactionType.transaction.id = undefined; - component.transactionType.transaction.contact = testContact; + component.transaction = testTran; + component.transaction.id = undefined; + component.transaction.contact = testContact; } fixture.detectChanges(); component.handleNavigate(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts index 2e336675c8..4af4de1190 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts @@ -4,8 +4,6 @@ import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { PAC_EARMARK_MEMO } from 'app/shared/models/transaction-types/PAC_EARMARK_MEMO.model'; -import { PAC_EARMARK_RECEIPT } from 'app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { AccordionModule } from 'primeng/accordion'; @@ -27,12 +25,6 @@ describe('TransactionGroupFgComponent', () => { let component: TransactionGroupFgComponent; let fixture: ComponentFixture; - const pacEarmarkReceipt = new PAC_EARMARK_RECEIPT(); - pacEarmarkReceipt.transaction = pacEarmarkReceipt.getNewTransaction(); - const pacEarmarkMemo = new PAC_EARMARK_MEMO(); - pacEarmarkMemo.transaction = pacEarmarkMemo.getNewTransaction(); - pacEarmarkReceipt.childTransactionType = pacEarmarkMemo; - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ @@ -66,7 +58,6 @@ describe('TransactionGroupFgComponent', () => { }); it('should create', () => { - component.transactionType = pacEarmarkReceipt; component.ngOnInit(); expect(component).toBeTruthy(); }); diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts index 7f81623025..1f2c8f7a29 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts @@ -8,7 +8,11 @@ import { Transaction } from 'app/shared/models/transaction.model'; import { Contact, ContactTypes } from 'app/shared/models/contact.model'; import { AggregationGroups } from 'app/shared/models/transaction.model'; import { SchBTransaction } from 'app/shared/models/schb-transaction.model'; -import { NavigationDestination } from 'app/shared/models/transaction-navigation-controls.model'; +import { + NavigationAction, + NavigationDestination, + NavigationEvent, +} from 'app/shared/models/transaction-navigation-controls.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; @@ -28,6 +32,7 @@ import { of } from 'rxjs'; import { environment } from '../../../environments/environment'; import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupHComponent } from './transaction-group-h.component'; +import { testScheduleBTransaction } from '../../shared/utils/unit-test.utils'; describe('TransactionGroupHComponent', () => { let httpTestingController: HttpTestingController; @@ -83,21 +88,6 @@ describe('TransactionGroupHComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupHComponent); component = fixture.componentInstance; - component.transactionType = { - scheduleId: '', - componentGroupId: '', - contact: undefined, - generatePurposeDescription: () => 'test description', - getNewTransaction: () => { - return {} as Transaction; - }, - title: '', - schema: OFFSET_TO_OPERATING_EXPENDITURES, - transaction: transaction, - isDependentChild: false, - updateParentOnSave: false, - getSchemaName: () => 'foo', - } as TransactionType; fixture.detectChanges(); }); @@ -142,26 +132,11 @@ describe('TransactionGroupHComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } - const testTran = SchBTransaction.fromJSON({ - form_type: 'SA15', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.ORGANIZATION, - contributor_organization_name: 'org name', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - aggregation_group: AggregationGroups.LINE_15, - }); + const testTran = testScheduleBTransaction; component.form.patchValue({ ...testTran }); - component.save(NavigationDestination.LIST); + component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); expect(req.request.method).toEqual('POST'); httpTestingController.verify(); @@ -178,10 +153,10 @@ describe('TransactionGroupHComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = '10'; + component.transaction.id = '10'; } component.form.patchValue({ ...transaction }); - component.save(NavigationDestination.ANOTHER); + component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.ANOTHER, transaction)); const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/10/`); expect(req.request.method).toEqual('PUT'); httpTestingController.verify(); @@ -198,7 +173,7 @@ describe('TransactionGroupHComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ form_type: 'SA15', @@ -219,7 +194,7 @@ describe('TransactionGroupHComponent', () => { }); component.form.patchValue({ ...testTran }); - component.save(NavigationDestination.LIST); + component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); expect(req.request.method).toEqual('POST'); httpTestingController.verify(); @@ -236,7 +211,7 @@ describe('TransactionGroupHComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ form_type: 'SA15', @@ -255,7 +230,7 @@ describe('TransactionGroupHComponent', () => { aggregation_group: AggregationGroups.LINE_15, }); component.form.patchValue({ ...testTran }); - component.save(NavigationDestination.LIST); + component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); expect(req.request.method).toEqual('POST'); httpTestingController.verify(); @@ -263,7 +238,7 @@ describe('TransactionGroupHComponent', () => { it('#save() should not save an invalid record', () => { component.form.patchValue({ ...transaction, ...{ contributor_state: 'not-valid' } }); - component.save(NavigationDestination.LIST); + component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, transaction)); expect(component.form.invalid).toBe(true); httpTestingController.expectNone(`${environment.apiUrl}/transactions/schedule-a/1/`); httpTestingController.verify(); @@ -273,7 +248,7 @@ describe('TransactionGroupHComponent', () => { const testContact: Contact = new Contact(); testContact.id = 'testId'; if (component.transaction) { - component.transactionType.transaction.contact = testContact; + component.transaction.contact = testContact; } spyOn(testContactService, 'create').and.returnValue(of(testContact)); spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { @@ -283,7 +258,7 @@ describe('TransactionGroupHComponent', () => { }); if (component.transaction) { - component.transactionType.transaction.id = undefined; + component.transaction.id = undefined; } const testTran = SchBTransaction.fromJSON({ form_type: 'SA15', @@ -296,7 +271,7 @@ describe('TransactionGroupHComponent', () => { aggregation_group: AggregationGroups.LINE_15, }); component.form.patchValue({ ...testTran }); - component.save(NavigationDestination.LIST); + component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); expect(component.form.invalid).toBe(true); httpTestingController.expectNone(`${environment.apiUrl}/transactions/schedule-a/1/`); httpTestingController.verify(); From ef5c864bf3d19a42a0909990057dbb24ed86347b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 10 Feb 2023 10:17:28 -0500 Subject: [PATCH 035/115] Temporarily suspend unit tests in CircleCI --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c9562e4359..6c37f3c62e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -292,11 +292,11 @@ workflows: not: << pipeline.parameters.is-nightly-run >> jobs: - lint - - test + # - test - dependency-check - deploy: requires: - - test + # - test - dependency-check nightly-run: From 0ef78ae46db86a5b2b77fd88fcf906eb2ec21597 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 10 Feb 2023 11:57:04 -0500 Subject: [PATCH 036/115] Fix side menu routing bug --- .../app/layout/sidebar/menu-report/menu-report.component.ts | 4 ++-- .../transaction-type-picker.component.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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 9efda9348f..ab0f3e3f4f 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 @@ -162,8 +162,8 @@ export class MenuReportComponent implements OnInit, OnDestroy { } // Slice indexes are determined by the number of entries in each urlMatch group - this.items[0].expanded = this.isActive(this.urlMatch.slice(0, 3), event.url); - this.items[1].expanded = this.isActive(this.urlMatch.slice(3, 7), event.url); + this.items[0].expanded = this.isActive(this.urlMatch.slice(0, 4), event.url); + this.items[1].expanded = this.isActive(this.urlMatch.slice(4, 7), event.url); this.items[2].expanded = this.isActive(this.urlMatch.slice(7, 10), event.url); } } diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index 78fd9c3e1d..2ff0ecc2e5 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -217,7 +217,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { getRouterLink(transactionType: string): string | undefined { if (this.report && !this.isTransactionDisabled(transactionType)) { - return `/transactions/report/${this.report?.id}}/create/${transactionType}`; + return `/transactions/report/${this.report?.id}/create/${transactionType}`; } return undefined; } From 05d1505dc5a6aab56ef26407ae80e3e3ccdb7e9f Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 10 Feb 2023 12:06:29 -0500 Subject: [PATCH 037/115] Add clear value to category code dropdown select --- .../additional-info-input/additional-info-input.component.html | 1 + 1 file changed, 1 insertion(+) diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index b94418e478..495c805ae4 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -55,6 +55,7 @@ optionValue="code" [autoDisplayFirst]="false" appendTo="body" + [showClear]="true" > Date: Fri, 10 Feb 2023 12:11:48 -0500 Subject: [PATCH 038/115] Clean up lint issues reported by SonarCloud --- ...ONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts | 16 ++++++---------- .../src/app/shared/utils/unit-test.utils.ts | 2 ++ .../transaction-group-ag.component.spec.ts | 1 - .../transaction-group-d.component.spec.ts | 2 -- .../transaction-group-h.component.spec.ts | 3 --- 5 files changed, 8 insertions(+), 16 deletions(-) diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts index 382e8ad291..4e37d7e16a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts @@ -1,7 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; -import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model'; -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { @@ -16,21 +13,20 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('A'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('A'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(`Recount/Legal Proceedings Account Partnership Attribution`); }); }); diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index 99dc38eb8b..fdb2f262a4 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -16,6 +16,7 @@ import { SchBTransaction } from '../models/schb-transaction.model'; import { ContactTypes } from '../models/contact.model'; import { SchATransaction } from '../models/scha-transaction.model'; import { TransactionTypeUtils } from './transaction-type.utils'; +import { Transaction } from '../models/transaction.model'; export const testCommitteeAccount: CommitteeAccount = CommitteeAccount.fromJSON({ affiliated_committee_name: 'NONE', @@ -171,4 +172,5 @@ export function getTestTransactionByType( if (parentTransactionType) { transaction.parent_transaction = TransactionTypeUtils.factory(parentTransactionType).getNewTransaction(); } + return transaction; } diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts index ff07a3eb6b..468b2ab011 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts @@ -4,7 +4,6 @@ import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { EARMARK_MEMO } from 'app/shared/models/transaction-types/EARMARK_MEMO.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { AccordionModule } from 'primeng/accordion'; diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts index 830afcff58..91a69efd31 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts @@ -3,8 +3,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction } from 'app/shared/models/transaction.model'; import { ContactTypes } from 'app/shared/models/contact.model'; import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts index 1f2c8f7a29..43f62e9cfb 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts @@ -3,8 +3,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; -import { Transaction } from 'app/shared/models/transaction.model'; import { Contact, ContactTypes } from 'app/shared/models/contact.model'; import { AggregationGroups } from 'app/shared/models/transaction.model'; import { SchBTransaction } from 'app/shared/models/schb-transaction.model'; @@ -16,7 +14,6 @@ import { import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { schema as OFFSET_TO_OPERATING_EXPENDITURES } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; From 26f55f6e0bdb51bee60982f5d1680951f412a671 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 10 Feb 2023 13:20:28 -0500 Subject: [PATCH 039/115] Update labels on schedule B transaction forms --- .../amount-input/amount-input.component.html | 2 +- .../SchaTransactionType.model.ts | 1 + .../SchbTransactionType.model.ts | 3 ++- .../transaction-type.model.ts | 1 + front-end/src/app/shared/utils/label.utils.ts | 23 ++++++++++--------- .../transaction-group-d.component.spec.ts | 1 - .../transaction-group-h.component.html | 2 +- 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html index bbe2ed6fd0..42afc298f2 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html @@ -2,7 +2,7 @@
- + = { }; export const CategoryCodeLabels: LabelList = [ - ['001', 'Administrative/Salary/Overhead Expenses'], - ['002', 'Travel Expenses - including travel reimbursement expenses'], - ['003', 'Solicitation and Fundraising Expenses'], - ['004', 'Advertising Expenses -including general public political advertising'], - ['005', 'Polling Expenses'], - ['006', 'Campaign Materials'], - ['007', 'Campaign Event Expenses'], - ['008', 'Transfers'], - ['009', 'Loan Repayments'], - ['011', 'Political Contributions'], - ['012', 'Donations'], + ['001', '001 Administrative/Salary/Overhead Expenses'], + ['002', '002 Travel Expenses - including travel reimbursement expenses'], + ['003', '003 Solicitation and Fundraising Expenses'], + ['004', '004 Advertising Expenses -including general public political advertising'], + ['005', '005 Polling Expenses'], + ['006', '006 Campaign Materials'], + ['007', '007 Campaign Event Expenses'], + ['008', '008 Transfers'], + ['009', '009 Loan Repayments'], + ['010', '010 Refunds of Contributions'], + ['011', '011 Political Contributions'], + ['012', '012 Donations'], ]; diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts index 91a69efd31..3fd0fe3bc9 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts @@ -13,7 +13,6 @@ import { import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { environment } from 'environments/environment'; -import { schema as TRIBAL_JF_TRANSFER_MEMO } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_JF_TRANSFER_MEMO'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html index e78901f14f..75a9973622 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html @@ -35,7 +35,7 @@

Contact

Address

-

Receipt Information

+

Expenditure Information

Date: Fri, 10 Feb 2023 14:51:25 -0500 Subject: [PATCH 040/115] form-type --- .../app/shared/utils/form-type.utils.spec.ts | 20 +++++++++++++++++ .../src/app/shared/utils/form-type.utils.ts | 22 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 front-end/src/app/shared/utils/form-type.utils.spec.ts create mode 100644 front-end/src/app/shared/utils/form-type.utils.ts diff --git a/front-end/src/app/shared/utils/form-type.utils.spec.ts b/front-end/src/app/shared/utils/form-type.utils.spec.ts new file mode 100644 index 0000000000..8167a066a0 --- /dev/null +++ b/front-end/src/app/shared/utils/form-type.utils.spec.ts @@ -0,0 +1,20 @@ +import { FormType, FormTypes, FORM_TYPES } from './form-type.utils'; + +describe('FormTypeUtils', () => { + describe('FormType', () => { + it('should carry properties', () => { + const f1FormType = new FormType('F1', 'Form 1', 'Statement of organization', '/'); + expect(f1FormType.label).toBe('Form 1'); + expect(f1FormType.createRoute).toEqual('/'); + }); + }); + + describe('FORM_TYPES', () => { + it('should have F3X', () => { + const F3X = FORM_TYPES.get(FormTypes.F3X); + expect(F3X).toBeTruthy(); + expect(F3X?.description).toEqual('Report of Receipts and Disbursements'); + expect(F3X?.code).toEqual('F3X'); + }); + }); +}); diff --git a/front-end/src/app/shared/utils/form-type.utils.ts b/front-end/src/app/shared/utils/form-type.utils.ts new file mode 100644 index 0000000000..9bf1fe5c1c --- /dev/null +++ b/front-end/src/app/shared/utils/form-type.utils.ts @@ -0,0 +1,22 @@ +export enum FormTypes { + F3X, + F24, +} + +export class FormType { + code: string; + label: string; + description: string; + createRoute: string; + + constructor(code: string, label: string, description: string, createRoute: string) { + this.code = code; + this.label = label; + this.description = description; + this.createRoute = createRoute; + } +} + +export const FORM_TYPES = new Map([ + [FormTypes.F3X, new FormType('F3X', 'Form 3X', 'Report of Receipts and Disbursements', '/reports/f3x/create/step1')], +]); From cd7e9999175c07f516295bd925433e19d79a8844 Mon Sep 17 00:00:00 2001 From: toddlees Date: Fri, 10 Feb 2023 16:34:40 -0500 Subject: [PATCH 041/115] form type dialog --- .../form-type-dialog.component.html | 41 +++++++++++++++++++ .../form-type-dialog.component.scss | 0 .../form-type-dialog.component.spec.ts | 22 ++++++++++ .../form-type-dialog.component.ts | 25 +++++++++++ .../report-list/report-list.component.html | 6 ++- .../report-list/report-list.component.ts | 4 -- front-end/src/app/reports/reports.module.ts | 4 ++ .../src/app/shared/utils/form-type.utils.ts | 8 +++- 8 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 front-end/src/app/reports/form-type-dialog/form-type-dialog.component.html create mode 100644 front-end/src/app/reports/form-type-dialog/form-type-dialog.component.scss create mode 100644 front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts create mode 100644 front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.html b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.html new file mode 100644 index 0000000000..600488fe30 --- /dev/null +++ b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.html @@ -0,0 +1,41 @@ + + +
+
+
+ + + + {{ getFormType(selectedType)?.label }}: {{ getFormType(selectedType)?.description }} + + + {{ getFormType(type)?.label }}: {{ getFormType(type)?.description }} + + +
+
+
+
+ + + +
diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.scss b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts new file mode 100644 index 0000000000..72989ebcc9 --- /dev/null +++ b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FormTypeDialogComponent } from './form-type-dialog.component'; + +describe('FormTypeDialogComponent', () => { + let component: FormTypeDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [FormTypeDialogComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(FormTypeDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts new file mode 100644 index 0000000000..724ddf3da1 --- /dev/null +++ b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts @@ -0,0 +1,25 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { FormType, FORM_TYPES, FormTypes } from 'app/shared/utils/form-type.utils'; + +@Component({ + selector: 'app-form-type-dialog', + templateUrl: './form-type-dialog.component.html', + styleUrls: ['./form-type-dialog.component.scss'], +}) +export class FormTypeDialogComponent implements OnInit { + @Input() visible = false; + formTypeOptions: FormTypes[] = Array.from(FORM_TYPES, (mapping) => mapping[0]); + selectedType?: FormTypes; + constructor(public router: Router) {} + + goToReportForm(): void { + this.router.navigateByUrl(this.getFormType(this.selectedType)?.createRoute || ''); + } + + getFormType(type?: FormTypes): FormType | undefined { + return type ? FORM_TYPES.get(type) : undefined; + } + + ngOnInit(): void {} +} 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 f081ad1ca3..1bde7c82f9 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 @@ -59,7 +59,7 @@
Recent reports
- {{ item.form_type | label: f3xFormTypeLabels }} + {{ item.form_type | label : f3xFormTypeLabels }} {{ item.report_code_label }} Recent reports > {{ item.report_status }} - {{ item.form_type | label: f3xFormVerionLabels }} + {{ item.form_type | label : f3xFormVerionLabels }} {{ item.upload_submission?.created | fecDate }} Recent reports
+ + diff --git a/front-end/src/app/reports/report-list/report-list.component.ts b/front-end/src/app/reports/report-list/report-list.component.ts index d49ba353b9..350b98a65b 100644 --- a/front-end/src/app/reports/report-list/report-list.component.ts +++ b/front-end/src/app/reports/report-list/report-list.component.ts @@ -55,10 +55,6 @@ export class ReportListComponent extends TableListBaseComponent implemen return new F3xSummary(); } - public override addItem(): void { - this.router.navigateByUrl('/reports/f3x/create/step1'); - } - public override editItem(item: Report): void { if (!this.itemService.isEditable(item)) { this.router.navigateByUrl(`/reports/f3x/submit/status/${item.id}`); diff --git a/front-end/src/app/reports/reports.module.ts b/front-end/src/app/reports/reports.module.ts index 2ce3a1c0d1..513a480572 100644 --- a/front-end/src/app/reports/reports.module.ts +++ b/front-end/src/app/reports/reports.module.ts @@ -34,6 +34,8 @@ import { ReportsRoutingModule } from './reports-routing.module'; import { CashOnHandComponent } from './f3x/create-workflow/cash-on-hand.component'; import { AppSelectButtonComponent } from '../shared/components/app-selectbutton'; import { InputNumberModule } from 'primeng/inputnumber'; +import { FormTypeDialogComponent } from './form-type-dialog/form-type-dialog.component'; +import { DialogModule } from 'primeng/dialog'; @NgModule({ declarations: [ @@ -49,6 +51,7 @@ import { InputNumberModule } from 'primeng/inputnumber'; TestDotFecComponent, CashOnHandComponent, AppSelectButtonComponent, + FormTypeDialogComponent, ], imports: [ CommonModule, @@ -59,6 +62,7 @@ import { InputNumberModule } from 'primeng/inputnumber'; ToolbarModule, ButtonModule, DividerModule, + DialogModule, DropdownModule, RadioButtonModule, CheckboxModule, diff --git a/front-end/src/app/shared/utils/form-type.utils.ts b/front-end/src/app/shared/utils/form-type.utils.ts index 9bf1fe5c1c..92dfa44651 100644 --- a/front-end/src/app/shared/utils/form-type.utils.ts +++ b/front-end/src/app/shared/utils/form-type.utils.ts @@ -1,6 +1,6 @@ export enum FormTypes { - F3X, - F24, + F3X = 'F3X', + F24 = 'F24', } export class FormType { @@ -19,4 +19,8 @@ export class FormType { export const FORM_TYPES = new Map([ [FormTypes.F3X, new FormType('F3X', 'Form 3X', 'Report of Receipts and Disbursements', '/reports/f3x/create/step1')], + // [ + // FormTypes.F24, + // new FormType('F24', 'Form 24', '24/48 Hour Notice of Independent Expentiture', '/reports/f24/create/step1'), + // ], ]); From 01e2f4bdd52c73700ddc7abaa959417302cb1cc3 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Mon, 13 Feb 2023 15:57:22 -0500 Subject: [PATCH 042/115] Fixes to unit tests --- .circleci/config.yml | 4 +- .../additional-info-input.component.spec.ts | 7 +- .../address-input.component.spec.ts | 3 +- .../amount-input.component.spec.ts | 3 +- .../committee-input.component.spec.ts | 3 +- .../employer-input.component.spec.ts | 3 +- .../transaction-type-base.component.spec.ts | 171 +++----------- .../transaction-type-base.component.ts | 4 +- .../models/scha-transaction.model.spec.ts | 23 +- ...MARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts | 2 +- ...RK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts | 2 +- ...EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts | 2 +- .../EARMARK_RECEIPT.model.spec.ts | 37 ++- ...K_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts | 41 ++-- ...RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts | 41 ++-- ...MARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts | 41 ++-- .../INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts | 27 +-- ..._CONVENTION_JF_TRANSFER_MEMO.model.spec.ts | 28 +-- ...EADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts | 29 ++- ...RTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts | 28 +-- .../PAC_EARMARK_RECEIPT.model.spec.ts | 37 ++- .../PAC_JF_TRANSFER_MEMO.model.spec.ts | 31 ++- ..._CONVENTION_JF_TRANSFER_MEMO.model.spec.ts | 28 +-- ...EADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts | 27 +-- ...RTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts | 18 +- .../PARTNERSHIP_MEMO.model.spec.ts | 1 - ...L_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts | 4 +- .../TRIBAL_JF_TRANSFER_MEMO.model.spec.ts | 10 +- ...EADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts | 21 +- ...RTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts | 14 +- .../transaction-type.model.spec.ts | 27 +-- .../services/transaction.service.spec.ts | 8 +- .../src/app/shared/utils/unit-test.utils.ts | 67 +++++- .../transaction-group-a.component.spec.ts | 27 +-- .../transaction-group-ag.component.spec.ts | 1 + .../transaction-group-c.component.spec.ts | 7 +- .../transaction-group-d.component.spec.ts | 25 +- .../transaction-group-f.component.spec.ts | 4 +- .../transaction-group-fg.component.spec.ts | 8 +- .../transaction-group-h.component.spec.ts | 222 +----------------- tasks.py | 3 +- 41 files changed, 378 insertions(+), 711 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6c37f3c62e..c9562e4359 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -292,11 +292,11 @@ workflows: not: << pipeline.parameters.is-nightly-run >> jobs: - lint - # - test + - test - dependency-check - deploy: requires: - # - test + - test - dependency-check nightly-run: diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts index 8f1d974826..de474c9210 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts @@ -3,7 +3,7 @@ import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { InputTextareaModule } from 'primeng/inputtextarea'; import { ErrorMessagesComponent } from '../../error-messages/error-messages.component'; - +import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { AdditionalInfoInputComponent } from './additional-info-input.component'; describe('AdditionalInfoInputComponent', () => { @@ -22,6 +22,7 @@ describe('AdditionalInfoInputComponent', () => { contribution_purpose_descrip: new FormControl(''), memo_text_input: new FormControl(''), }); + component.templateMap = testTemplateMap; component.descriptionIsSystemGenerated = true; fixture.detectChanges(); }); @@ -31,13 +32,13 @@ describe('AdditionalInfoInputComponent', () => { }); it('should have a read-only cpd if system generated', () => { - const cpd = fixture.debugElement.query(By.css('#contribution_purpose_descrip')); + const cpd = fixture.debugElement.query(By.css('#purpose_descrip')); expect(cpd.classes['readonly']).toBeTruthy(); }); it('should have a mutable cpd if not system generated', () => { component.descriptionIsSystemGenerated = false; - const cpd = fixture.debugElement.query(By.css('#contribution_purpose_descrip')); + const cpd = fixture.debugElement.query(By.css('#purpose_descrip')); fixture.detectChanges(); expect(cpd.classes['readonly']).toBeFalsy(); }); diff --git a/front-end/src/app/shared/components/inputs/address-input/address-input.component.spec.ts b/front-end/src/app/shared/components/inputs/address-input/address-input.component.spec.ts index df9596c642..5c5b643a44 100644 --- a/front-end/src/app/shared/components/inputs/address-input/address-input.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/address-input/address-input.component.spec.ts @@ -3,7 +3,7 @@ import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms'; import { DropdownModule } from 'primeng/dropdown'; import { InputTextModule } from 'primeng/inputtext'; import { ErrorMessagesComponent } from '../../error-messages/error-messages.component'; - +import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { AddressInputComponent } from './address-input.component'; describe('AddressInputComponent', () => { @@ -25,6 +25,7 @@ describe('AddressInputComponent', () => { contributor_state: new FormControl(''), contributor_zip: new FormControl(''), }); + component.templateMap = testTemplateMap; fixture.detectChanges(); }); diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.spec.ts b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.spec.ts index d1ec7cde62..3cbe93a1e7 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.spec.ts @@ -4,7 +4,7 @@ import { CheckboxModule } from 'primeng/checkbox'; import { InputNumberModule } from 'primeng/inputnumber'; import { CalendarModule } from 'primeng/calendar'; import { ErrorMessagesComponent } from '../../error-messages/error-messages.component'; - +import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { AmountInputComponent } from './amount-input.component'; describe('AmountInputComponent', () => { @@ -25,6 +25,7 @@ describe('AmountInputComponent', () => { contribution_amount: new FormControl(''), contribution_aggregate: new FormControl(''), }); + component.templateMap = testTemplateMap; fixture.detectChanges(); }); diff --git a/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.spec.ts b/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.spec.ts index d6fade3b3e..0e527b64b1 100644 --- a/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms'; import { InputTextModule } from 'primeng/inputtext'; import { ErrorMessagesComponent } from '../../error-messages/error-messages.component'; - +import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { CommitteeInputComponent } from './committee-input.component'; describe('CommitteeInputComponent', () => { @@ -21,6 +21,7 @@ describe('CommitteeInputComponent', () => { contributor_organization_name: new FormControl(''), donor_committee_fec_id: new FormControl(''), }); + component.templateMap = testTemplateMap; fixture.detectChanges(); }); diff --git a/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.spec.ts b/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.spec.ts index da68df60c7..4139782369 100644 --- a/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/employer-input/employer-input.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms'; import { InputTextModule } from 'primeng/inputtext'; import { ErrorMessagesComponent } from '../../error-messages/error-messages.component'; - +import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { EmployerInputComponent } from './employer-input.component'; describe('EmployerInputComponent', () => { @@ -21,6 +21,7 @@ describe('EmployerInputComponent', () => { contributor_employer: new FormControl(''), contributor_occupation: new FormControl(''), }); + component.templateMap = testTemplateMap; fixture.detectChanges(); }); diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts index cf263e4164..2584f0f69c 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts @@ -5,7 +5,6 @@ import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; import { NavigationAction, NavigationDestination, @@ -16,17 +15,14 @@ import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ApiService } from 'app/shared/services/api.service'; import { TransactionService } from 'app/shared/services/transaction.service'; import { ValidateService } from 'app/shared/services/validate.service'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { getTestTransactionByType, testMockStore, testIndividualReceipt } from 'app/shared/utils/unit-test.utils'; import { Confirmation, ConfirmationService, Message, MessageService, SelectItem } from 'primeng/api'; import { of } from 'rxjs'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; -import { TransactionTypeUtils } from '../../utils/transaction-type.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../../models/scha-transaction.model'; import { MemoText } from 'app/shared/models/memo-text.model'; -import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionContactUtils } from './transaction-contact.utils'; -import { TransactionFormUtils } from './transaction-form.utils'; class TestTransactionTypeBaseComponent extends TransactionTypeBaseComponent { formProperties: string[] = [ @@ -61,7 +57,7 @@ const initTransactionData = { form_type: undefined, filer_committee_id_number: undefined, transaction_id: null, - transaction_type_identifier: 'INDIVIDUAL_RECEIPT', + transaction_type_identifier: ScheduleATransactionTypes.INDIVIDUAL_RECEIPT, contribution_purpose_descrip: undefined, parent_transaction_id: undefined, children: undefined, @@ -72,31 +68,7 @@ const initTransactionData = { memo_text_id: 'ID Goes Here', }; -const testTransaction = SchATransaction.fromJSON({ - id: '123', - report_id: '999', - contact: undefined, - contact_id: '333', - form_type: undefined, - filer_committee_id_number: undefined, - transaction_id: null, - transaction_type_identifier: 'INDIVIDUAL_RECEIPT', - aggregation_group: 'GENERAL', - contribution_amount: '202.2', - contribution_date: '2022-02-02', - contribution_purpose_descrip: undefined, - parent_transaction_id: undefined, - children: undefined, - parent_transaction: undefined, - fields_to_validate: undefined, - itemized: false, - memo_text: undefined, - memo_text_id: undefined, -}); - -const testTransactionType = - TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT) || ({} as TransactionType); -testTransactionType.transaction = testTransactionType?.getNewTransaction(); +let testTransaction: SchATransaction; describe('TransactionTypeBaseComponent', () => { let component: TestTransactionTypeBaseComponent; @@ -133,8 +105,10 @@ describe('TransactionTypeBaseComponent', () => { }); beforeEach(() => { + testTransaction = testIndividualReceipt; fixture = TestBed.createComponent(TestTransactionTypeBaseComponent); component = fixture.componentInstance; + component.transaction = testTransaction; fixture.detectChanges(); }); @@ -143,38 +117,16 @@ describe('TransactionTypeBaseComponent', () => { }); it('#retrieveMemoText should work', () => { - if (component.transactionType) component.transaction = testTransaction; - else - component.transactionType = { - transaction: testTransaction, - scheduleId: 'TEST', - componentGroupId: 'TEST', - isDependentChild: false, - title: 'Title goes here', - getNewTransaction: () => { - return testTransaction; - }, - schema: { - $id: '10101', - $schema: 'string', - type: 'string', - required: ['string'], - properties: {}, - }, - updateParentOnSave: false, - getSchemaName: () => 'foo', - generatePurposeDescriptionWrapper: () => 'bar', - }; - + if (!component.transaction) throw new Error('transaction does not exist'); component.form = new FormGroup({ memo_text_input: new FormControl('memo'), }); - const formValues = TransactionMemoUtils.retrieveMemoText(component.transactionType, component.form, {}); + const formValues = TransactionMemoUtils.retrieveMemoText(component.transaction, component.form, {}); expect(formValues['memo_text']['text4000']).toBe('memo'); }); function addContact(component: TestTransactionTypeBaseComponent, contact: Contact) { - if (component.transactionType?.transaction) { + if (component.transaction) { component.transaction.contact = contact; } } @@ -198,7 +150,7 @@ describe('TransactionTypeBaseComponent', () => { testContact.zip = '12345'; spyOn(testApiService, 'post').and.returnValue(of(testContact)); - spyOn(testTransactionService, 'create').and.returnValue(of(testTransaction1)); + spyOn(testTransactionService, 'update').and.returnValue(of(testTransaction1)); const confirmSpy = spyOn(testConfirmationService, 'confirm'); // test reject confirmSpy.and.callFake((confirmation: Confirmation) => { @@ -208,7 +160,7 @@ describe('TransactionTypeBaseComponent', () => { }); const componentNavigateToSpy = spyOn(component, 'navigateTo'); - component.transactionType = testTransactionType; + component.transaction = testTransaction; addContact(component, testContact); const listSaveEvent = new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction1); @@ -231,13 +183,21 @@ describe('TransactionTypeBaseComponent', () => { if (component.transaction) { component.transaction.contact = undefined; } - TransactionContactUtils.getEditTransactionContactConfirmationMessage([], testContact, component.form, fecDatePipe); + if (testTransaction.transactionType) { + TransactionContactUtils.getEditTransactionContactConfirmationMessage( + [], + testContact, + component.form, + fecDatePipe, + testTransaction.transactionType?.templateMap + ); + } expect(componentNavigateToSpy).toHaveBeenCalledTimes(3); }); function spyOnServices(contact: Contact, transaction: SchATransaction) { spyOn(testApiService, 'post').and.returnValue(of(contact)); - spyOn(testTransactionService, 'create').and.returnValue(of(transaction)); + spyOn(testTransactionService, 'update').and.returnValue(of(transaction)); spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { if (confirmation.accept) { return confirmation.accept(); @@ -256,7 +216,7 @@ describe('TransactionTypeBaseComponent', () => { spyOnServices(testContact, testTransaction1); const componentNavigateToSpy = spyOn(component, 'navigateTo'); - component.transactionType = testTransactionType; + component.transaction = testTransaction; addContact(component, testContact); const listSaveEvent = new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction1); @@ -284,7 +244,7 @@ describe('TransactionTypeBaseComponent', () => { spyOnServices(orgContact, testTransaction1); const componentNavigateToSpy = spyOn(component, 'navigateTo'); - component.transactionType = testTransactionType; + component.transaction = testTransaction; addContact(component, orgContact); const listSaveEvent = new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction1); @@ -309,7 +269,7 @@ describe('TransactionTypeBaseComponent', () => { spyOnServices(testContact, testTransaction1); const componentNavigateToSpy = spyOn(component, 'navigateTo'); - component.transactionType = testTransactionType; + component.transaction = testTransaction; component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction1)); expect(componentNavigateToSpy).toHaveBeenCalledTimes(1); @@ -330,8 +290,6 @@ describe('TransactionTypeBaseComponent', () => { }); const componentNavigateToSpy = spyOn(component, 'navigateTo'); - component.transactionType = - TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT) || ({} as TransactionType); component.transaction = testTransaction; component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction2)); @@ -355,12 +313,8 @@ describe('TransactionTypeBaseComponent', () => { it('#navigateTo NavigationDestination.CHILD should show popup + navigate', () => { const testTransactionId = '123'; const testTransactionTypeToAdd = ScheduleATransactionTypes.INDIVIDUAL_RECEIPT; - - component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); - if (component.transactionType) { - component.transaction = testTransaction; - component.transaction.report_id = '999'; - } + component.transaction = testTransaction; + component.transaction.report_id = '999'; const expectedMessage: Message = { severity: 'success', @@ -385,18 +339,6 @@ describe('TransactionTypeBaseComponent', () => { testTransaction3.id = '123'; testTransaction3.report_id = '99'; testTransaction3.contact_id = '33'; - component.transactionType = { - scheduleId: 'A', - componentGroupId: 'A', - isDependentChild: false, - title: '', - schema: { properties: {} } as JsonSchema, - getNewTransaction: () => SchATransaction.fromJSON({}), - transaction: testTransaction3, - updateParentOnSave: false, - getSchemaName: () => 'foo', - generatePurposeDescriptionWrapper: () => 'bar', - } as TransactionType; const expectedRoute = `/transactions/report/${testTransaction3.report_id}/list`; const routerNavigateByUrlSpy = spyOn(testRouter, 'navigateByUrl'); component.navigateTo(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction3)); @@ -404,10 +346,7 @@ describe('TransactionTypeBaseComponent', () => { }); it('#navigateTo NavigationDestination.CHILD should navigate', () => { - component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); - if (component.transactionType) { - component.transaction = testTransaction; - } + component.transaction = testTransaction; const expectedRoute = '/transactions/report/999/list/edit/123/create-sub-transaction/INDIVIDUAL_RECEIPT'; const routerNavigateByUrlSpy = spyOn(testRouter, 'navigateByUrl'); component.navigateTo( @@ -424,18 +363,6 @@ describe('TransactionTypeBaseComponent', () => { it('#navigateTo NavigationDestination.PARENT should navigate', () => { const transaction = { ...testTransaction } as SchATransaction; transaction.parent_transaction_id = '333'; - component.transactionType = { - scheduleId: 'A', - componentGroupId: 'A', - isDependentChild: false, - title: '', - schema: { properties: {} } as JsonSchema, - getNewTransaction: () => SchATransaction.fromJSON({}), - transaction: transaction, - updateParentOnSave: false, - getSchemaName: () => 'foo', - generatePurposeDescriptionWrapper: () => 'bar', - } as TransactionType; const expectedRoute = '/transactions/report/999/list/edit/333'; const routerNavigateByUrlSpy = spyOn(testRouter, 'navigateByUrl'); component.navigateTo(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.PARENT, transaction)); @@ -443,10 +370,7 @@ describe('TransactionTypeBaseComponent', () => { }); it('#navigateTo default should navigate', () => { - component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); - if (component.transactionType) { - component.transaction = testTransaction; - } + component.transaction = testTransaction; const expectedRoute = '/transactions/report/999/list'; const routerNavigateByUrlSpy = spyOn(testRouter, 'navigateByUrl'); component.navigateTo(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTransaction)); @@ -574,17 +498,7 @@ describe('TransactionTypeBaseComponent', () => { }); it('#onContactLookupSelect INDIVIDUAL should calculate aggregate', () => { - component.transactionType = TransactionTypeUtils.factory(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); - component.transaction = component.transactionType.getNewTransaction(); - TransactionFormUtils.onInit( - component, - component.form, - new ValidateService(), - component.transactionType, - component.contactId$ - ); - component.transaction = component.transactionType.getNewTransaction(); - + component.transaction = testTransaction; const testEntityType = ContactTypes.INDIVIDUAL; const testContact = new Contact(); @@ -671,33 +585,8 @@ describe('TransactionTypeBaseComponent', () => { }); it('positive contribution_amount values should be overriden when the schema requires a negative value', () => { - component.transactionType = { - transaction: testTransaction, - scheduleId: 'TEST', - componentGroupId: 'TEST', - isDependentChild: false, - title: 'Title goes here', - getNewTransaction: () => { - return testTransaction; - }, - schema: { - $id: '10101', - $schema: 'string', - type: 'string', - required: [], - properties: { - contribution_amount: { - type: 'number', - exclusiveMaximum: 0, - }, - }, - }, - updateParentOnSave: false, - getSchemaName: () => 'foo', - generatePurposeDescriptionWrapper: () => 'bar', - }; - - component.parentOnInit(); + component.transaction = getTestTransactionByType(ScheduleATransactionTypes.RETURNED_BOUNCED_RECEIPT_INDIVIDUAL); + component.ngOnInit(); component.form.patchValue({ contribution_amount: 2 }); expect(component.form.value.contribution_amount).toBe(-2); }); diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 76b09bfe9e..65e506c47f 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -39,7 +39,6 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy formSubmitted = false; memoItemHelpText = 'The dollar amount in a memo item is not incorporated into the total figure for the schedule.'; purposeDescriptionLabel = ''; - // childTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; negativeAmountValueOnly = false; templateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; @@ -74,6 +73,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ); } + // Determine if amount should always be negative and then force it to be so if needed if (this.templateMap?.amount) { const amount_schema = this.transaction?.transactionType?.schema.properties[this.templateMap.amount]; if (amount_schema?.exclusiveMaximum === 0) { @@ -83,7 +83,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((amount) => { if (typeof amount === 'number' && amount > 0) { - this.form.patchValue({ amount: -1 * amount }); + this.form.patchValue({ [this.templateMap.amount]: -1 * amount }); } }); } diff --git a/front-end/src/app/shared/models/scha-transaction.model.spec.ts b/front-end/src/app/shared/models/scha-transaction.model.spec.ts index 927261b064..44715e4034 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.spec.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.spec.ts @@ -1,3 +1,4 @@ +import { getTestTransactionByType } from '../utils/unit-test.utils'; import { MemoText } from './memo-text.model'; import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; @@ -42,17 +43,15 @@ describe('SchATransaction', () => { }); it('Updates the purpose description of a child transaction', () => { - const testTransaction1 = SchATransaction.fromJSON(initTransactionData); - const testTransaction2 = SchATransaction.fromJSON(initTransactionData); - - testTransaction2.transaction_type_identifier = - ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO; - testTransaction2.parent_transaction = testTransaction1; - testTransaction1.contributor_organization_name = 'Test Committee'; - testTransaction1.children = [testTransaction2]; - - const updatedChildren = testTransaction1.updateChildren(); - const child = updatedChildren[0] as SchATransaction; - expect(child.contribution_purpose_descrip).toContain(testTransaction1.contributor_organization_name); + const parentTransaction = getTestTransactionByType( + ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT + ) as SchATransaction; + const childTransaction = getTestTransactionByType( + ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO + ) as SchATransaction; + parentTransaction.children = [childTransaction]; + parentTransaction.contributor_organization_name = 'Test Committee'; + parentTransaction.updateChildren(); + expect(childTransaction.contribution_purpose_descrip).toContain('Test Committee'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts index d37934cce0..ce4b3052bb 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('EARMARK_MEMO_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('GG'); + expect(transactionType.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts index 32d6eec5a1..20c6dc4aeb 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('EARMARK_MEMO_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('GG'); + expect(transactionType.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts index 195bd8c5f6..338174e5a7 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('EARMARK_MEMO_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('GG'); + expect(transactionType.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts index b4dc54d778..1160be4cdd 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts @@ -1,43 +1,38 @@ -import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; -import { EARMARK_MEMO } from './EARMARK_MEMO.model'; -import { EARMARK_RECEIPT } from './EARMARK_RECEIPT.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('EARMARK_RECEIPT', () => { - let transactionType: EARMARK_RECEIPT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new EARMARK_RECEIPT(); + transaction = getTestTransactionByType(ScheduleATransactionTypes.EARMARK_RECEIPT) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - if (transactionType) { - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('AG'); - } + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { - const txn = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA11AI'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.EARMARK_RECEIPT); + expect(transaction.form_type).toBe('SA11AI'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.EARMARK_RECEIPT); }); it('#generatePurposeDescription() should generate empty string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(''); }); it('#generatePurposeDescription() should reflect child', () => { - const childTransactionType: EARMARK_MEMO = new EARMARK_MEMO(); - childTransactionType.transaction = childTransactionType.getNewTransaction(); - childTransactionType.transaction.entity_type = ContactTypes.INDIVIDUAL; - childTransactionType.transaction.contributor_first_name = 'Joe'; - childTransactionType.transaction.contributor_last_name = 'Smith'; + const childTransaction = getTestTransactionByType(ScheduleATransactionTypes.EARMARK_MEMO) as SchATransaction; + childTransaction.entity_type = ContactTypes.INDIVIDUAL; + childTransaction.contributor_first_name = 'Joe'; + childTransaction.contributor_last_name = 'Smith'; + transaction.children = [childTransaction]; - transactionType.childTransactionType = childTransactionType; - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Earmarked through Joe Smith'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts index e0d884d518..5217806280 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts @@ -1,45 +1,44 @@ -import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; -import { EARMARK_MEMO_CONVENTION_ACCOUNT } from './EARMARK_MEMO_CONVENTION_ACCOUNT.model'; -import { EARMARK_RECEIPT_CONVENTION_ACCOUNT } from './EARMARK_RECEIPT_CONVENTION_ACCOUNT.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('EARMARK_RECEIPT_CONVENTION_ACCOUNT', () => { - let transactionType: EARMARK_RECEIPT_CONVENTION_ACCOUNT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new EARMARK_RECEIPT_CONVENTION_ACCOUNT(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION + ) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - if (transactionType) { - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('AG'); - } + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { - const txn = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION ); }); it('#generatePurposeDescription() should generate empty string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(''); }); it('#generatePurposeDescription() should reflect child', () => { - const childTransactionType: EARMARK_MEMO_CONVENTION_ACCOUNT = new EARMARK_MEMO_CONVENTION_ACCOUNT(); - childTransactionType.transaction = childTransactionType.getNewTransaction(); - childTransactionType.transaction.entity_type = ContactTypes.INDIVIDUAL; - childTransactionType.transaction.contributor_first_name = 'Joe'; - childTransactionType.transaction.contributor_last_name = 'Smith'; + const childTransaction = getTestTransactionByType( + ScheduleATransactionTypes.EARMARK_MEMO_CONVENTION_ACCOUNT + ) as SchATransaction; + childTransaction.entity_type = ContactTypes.INDIVIDUAL; + childTransaction.contributor_first_name = 'Joe'; + childTransaction.contributor_last_name = 'Smith'; + transaction.children = [childTransaction]; - transactionType.childTransactionType = childTransactionType; - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Pres. Nominating Convention Account - Earmarked Through Joe Smith'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts index f4665d54e2..a92d7b67ed 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,45 +1,44 @@ -import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; -import { EARMARK_MEMO_HEADQUARTERS_ACCOUNT } from './EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model'; -import { EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT } from './EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', () => { - let transactionType: EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION + ) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - if (transactionType) { - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('AG'); - } + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { - const txn = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION ); }); it('#generatePurposeDescription() should generate empty string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(''); }); it('#generatePurposeDescription() should reflect child', () => { - const childTransactionType: EARMARK_MEMO_HEADQUARTERS_ACCOUNT = new EARMARK_MEMO_HEADQUARTERS_ACCOUNT(); - childTransactionType.transaction = childTransactionType.getNewTransaction(); - childTransactionType.transaction.entity_type = ContactTypes.INDIVIDUAL; - childTransactionType.transaction.contributor_first_name = 'Joe'; - childTransactionType.transaction.contributor_last_name = 'Smith'; + const childTransaction = getTestTransactionByType( + ScheduleATransactionTypes.EARMARK_MEMO_HEADQUARTERS_ACCOUNT + ) as SchATransaction; + childTransaction.entity_type = ContactTypes.INDIVIDUAL; + childTransaction.contributor_first_name = 'Joe'; + childTransaction.contributor_last_name = 'Smith'; + transaction.children = [childTransaction]; - transactionType.childTransactionType = childTransactionType; - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Headquarters Buildings Account - Earmarked Through Joe Smith'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts index 048aedccd6..8035e15c2f 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts @@ -1,45 +1,44 @@ -import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; -import { EARMARK_MEMO_RECOUNT_ACCOUNT } from './EARMARK_MEMO_RECOUNT_ACCOUNT.model'; -import { EARMARK_RECEIPT_RECOUNT_ACCOUNT } from './EARMARK_RECEIPT_RECOUNT_ACCOUNT.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('EARMARK_RECEIPT_RECOUNT_ACCOUNT', () => { - let transactionType: EARMARK_RECEIPT_RECOUNT_ACCOUNT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new EARMARK_RECEIPT_RECOUNT_ACCOUNT(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_RECOUNT_ACCOUNT_CONTRIBUTION + ) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - if (transactionType) { - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('AG'); - } + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('AG'); }); it('#factory() should return a SchATransaction', () => { - const txn = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_RECOUNT_ACCOUNT_CONTRIBUTION ); }); it('#generatePurposeDescription() should generate empty string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(''); }); it('#generatePurposeDescription() should reflect child', () => { - const childTransactionType: EARMARK_MEMO_RECOUNT_ACCOUNT = new EARMARK_MEMO_RECOUNT_ACCOUNT(); - childTransactionType.transaction = childTransactionType.getNewTransaction(); - childTransactionType.transaction.entity_type = ContactTypes.INDIVIDUAL; - childTransactionType.transaction.contributor_first_name = 'Joe'; - childTransactionType.transaction.contributor_last_name = 'Smith'; + const childTransaction = getTestTransactionByType( + ScheduleATransactionTypes.EARMARK_MEMO_RECOUNT_ACCOUNT + ) as SchATransaction; + childTransaction.entity_type = ContactTypes.INDIVIDUAL; + childTransaction.contributor_first_name = 'Joe'; + childTransaction.contributor_last_name = 'Smith'; + transaction.children = [childTransaction]; - transactionType.childTransactionType = childTransactionType; - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Recount/Legal Proceedings Account - Earmarked Through Joe Smith'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts index 245a5b6580..b21673938e 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts @@ -1,31 +1,30 @@ +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { INDIVIDUAL_JF_TRANSFER_MEMO } from './INDIVIDUAL_JF_TRANSFER_MEMO.model'; -import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; describe('INDIVIDUAL_JF_TRANSFER_MEMO', () => { - let transactionType: INDIVIDUAL_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new INDIVIDUAL_JF_TRANSFER_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = new JOINT_FUNDRAISING_TRANSFER().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = getTestTransactionByType( + ScheduleATransactionTypes.INDIVIDUAL_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ) as SchATransaction; + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('A'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('A'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA12'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.INDIVIDUAL_JF_TRANSFER_MEMO); + expect(transaction.form_type).toBe('SA12'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.INDIVIDUAL_JF_TRANSFER_MEMO); }); it('#generatePurposeDescription() should return appropriate retval', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(`JF Memo: Test Org`); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 4ce85f1f2f..e228f22105 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,33 +1,31 @@ +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO } from './INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model'; describe('INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { - let transactionType: INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO + ) as SchATransaction; + transaction.parent_transaction = { contributor_organization_name: 'Test Org' } as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('A'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('A'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe( - `Pres. Nominating Convention Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name - }` - ); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + expect(descrip).toBe('Pres. Nominating Convention Account JF Memo: Test Org'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index 7ed578bb97..5e73cd87f2 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,33 +1,32 @@ -import { INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO } from './INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { - let transactionType: INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = new JOINT_FUNDRAISING_TRANSFER().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = getTestTransactionByType( + ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ) as SchATransaction; + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('A'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('A'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe(`Headquarters Buildings Account JF Memo: Test Org`); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + expect(descrip).toBe('Headquarters Buildings Account JF Memo: Test Org'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 029383d6de..b492fc4b27 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,33 +1,31 @@ +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from './INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model'; describe('INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { - let transactionType: INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO + ) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('A'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('A'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe( - `Recount/Legal Proceedings Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name - }` - ); + transaction.parent_transaction = { contributor_organization_name: 'Test Org' } as SchATransaction; + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + expect(descrip).toBe('Recount/Legal Proceedings Account JF Memo: Test Org'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts index 0ef57a53ab..3166aebb8b 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts @@ -1,43 +1,38 @@ -import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; -import { PAC_EARMARK_MEMO } from './PAC_EARMARK_MEMO.model'; -import { PAC_EARMARK_RECEIPT } from './PAC_EARMARK_RECEIPT.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('PAC_EARMARK_RECEIPT', () => { - let transactionType: PAC_EARMARK_RECEIPT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PAC_EARMARK_RECEIPT(); + transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_EARMARK_RECEIPT) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - if (transactionType) { - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('FG'); - } + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('FG'); }); it('#factory() should return a SchATransaction', () => { - const txn = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA11C'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PAC_EARMARK_RECEIPT); + expect(transaction.form_type).toBe('SA11C'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.PAC_EARMARK_RECEIPT); }); it('#generatePurposeDescription() should generate empty string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(''); }); it('#generatePurposeDescription() should reflect child', () => { - const childTransactionType: PAC_EARMARK_MEMO = new PAC_EARMARK_MEMO(); - childTransactionType.transaction = childTransactionType.getNewTransaction(); - childTransactionType.transaction.entity_type = ContactTypes.INDIVIDUAL; - childTransactionType.transaction.contributor_first_name = 'Joe'; - childTransactionType.transaction.contributor_last_name = 'Smith'; + const childTransaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_EARMARK_MEMO) as SchATransaction; + childTransaction.entity_type = ContactTypes.INDIVIDUAL; + childTransaction.contributor_first_name = 'Joe'; + childTransaction.contributor_last_name = 'Smith'; + transaction.children = [childTransaction]; - transactionType.childTransactionType = childTransactionType; - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Earmarked through Joe Smith'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts index 880e58b39f..ccc4cb41e0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts @@ -1,31 +1,30 @@ +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; -import { PAC_JF_TRANSFER_MEMO } from './PAC_JF_TRANSFER_MEMO.model'; describe('PAC_JF_TRANSFER_MEMO', () => { - let transactionType: PAC_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PAC_JF_TRANSFER_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = new JOINT_FUNDRAISING_TRANSFER().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = getTestTransactionByType( + ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ) as SchATransaction; + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('F'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA12'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO); + expect(transaction.form_type).toBe('SA12'); + expect(transaction.transaction_type_identifier).toBe(ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO); }); - it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe(`Joint Fundraising Memo: Test Org`); + it('#generatePurpotransaction.seDescription() should generate a string', () => { + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + expect(descrip).toBe('Joint Fundraising Memo: Test Org'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 3fa7fd31bb..4589eafb15 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,33 +1,31 @@ +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO } from './PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model'; describe('PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { - let transactionType: PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO + ) as SchATransaction; + transaction.parent_transaction = { contributor_organization_name: 'Test Org' } as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('F'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe( - `Pres. Nominating Convention Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name - }` - ); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + expect(descrip).toBe('Pres. Nominating Convention Account JF Memo: Test Org'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index fd57fb0a4f..520b43b1f0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,33 +1,32 @@ -import { PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO } from './PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { - let transactionType: PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = new JOINT_FUNDRAISING_TRANSFER().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; + transaction = getTestTransactionByType( + ScheduleATransactionTypes.PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER + ) as SchATransaction; + (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('F'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe( + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( ScheduleATransactionTypes.PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe(`Headquarters Buildings Account JF Memo: Test Org`); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index ce5f67db32..459d616f75 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -15,17 +15,17 @@ describe('PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO); + const transaction: SchATransaction = transactionType.getNewTransaction(); + expect(transaction.form_type).toBe('SA17'); + expect(transaction.transaction_type_identifier).toBe( + ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO + ); }); it('#generatePurposeDescription() should generate a string', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe( - `Recount/Legal Proceedings Account JF Memo: ${ - (transactionType.transaction?.parent_transaction as SchATransaction)?.contributor_organization_name - }` - ); + const transaction: SchATransaction = transactionType.getNewTransaction(); + transaction.parent_transaction = { contributor_organization_name: 'Test Org' } as SchATransaction; + const descrip = transactionType.generatePurposeDescription(transaction); + expect(descrip).toBe('Recount/Legal Proceedings Account JF Memo: Test Org'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts index 1ce0a7e8b4..301fc106ae 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts @@ -21,7 +21,6 @@ describe('PARTNERSHIP_MEMO', () => { }); it('#generatePurposeDescription() should generate a string', () => { - transactionType.transaction = transactionType.getNewTransaction(); const descrip = transactionType.generatePurposeDescription(); expect(descrip).toBe('Partnership Attribution'); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts index 4e37d7e16a..5a9922bcf1 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts @@ -8,7 +8,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { transaction = getTestTransactionByType( ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT - ); + ) as SchATransaction; (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); @@ -27,6 +27,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { it('#generatePurposeDescription() should generate a string', () => { const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe(`Recount/Legal Proceedings Account Partnership Attribution`); + expect(descrip).toBe('Recount/Legal Proceedings Account Partnership Attribution'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts index e207695978..7a57765187 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts @@ -1,16 +1,14 @@ -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; describe('TRIBAL_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; beforeEach(() => { - transaction = TransactionTypeUtils.factory( - ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO - ).getNewTransaction() as SchATransaction; - transaction.parent_transaction = TransactionTypeUtils.factory( + transaction = getTestTransactionByType( + ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER - ).getNewTransaction() as SchATransaction; + ) as SchATransaction; (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index d03019933d..c458bccedd 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,15 +1,11 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { Transaction } from '../transaction.model'; -import { TransactionTypeUtils } from '../../utils/transaction-type.utils'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { - let transaction: Transaction; - - beforeEach(() => { - transaction = TransactionTypeUtils.factory( - ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO - ).getNewTransaction(); - }); + const transaction: Transaction = getTestTransactionByType( + ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO + ); it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); @@ -25,11 +21,10 @@ describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { }); it('#generatePurposeDescription() should generate a string', () => { + transaction.parent_transaction = { + contributor_organization_name: 'ABC', + } as SchATransaction; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe( - `Headquarters Buildings Account JF Memo: ${ - (transaction.parent_transaction as SchATransaction)?.contributor_organization_name - }` - ); + expect(descrip).toBe('Headquarters Buildings Account JF Memo: ABC'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 407d30afc4..538a4c81a9 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,14 +1,12 @@ -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { Transaction } from '../transaction.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; describe('TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { let transaction: Transaction; beforeEach(() => { - transaction = TransactionTypeUtils.factory( - ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO - ).getNewTransaction(); + transaction = getTestTransactionByType(ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO); }); it('should create an instance', () => { @@ -32,11 +30,7 @@ describe('TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { transaction.parent_transaction = { contributor_organization_name: 'ABC', } as SchATransaction; - const descrip: string = transaction.transactionType?.generatePurposeDescription?.(transaction) || ''; - expect(descrip).toBe( - `Recount/Legal Proceedings Account JF Memo: ${ - (transaction.parent_transaction as SchATransaction)?.contributor_organization_name - }` - ); + const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); + expect(descrip).toBe('Recount/Legal Proceedings Account JF Memo: ABC'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts index c8f1b6554b..4e5638c89f 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts @@ -1,20 +1,12 @@ -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { ScheduleATransactionTypes } from '../scha-transaction.model'; -import { EARMARK_RECEIPT_RECOUNT_ACCOUNT } from './EARMARK_RECEIPT_RECOUNT_ACCOUNT.model'; -import { Transaction } from '../transaction.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; +import { TransactionType } from './transaction-type.model'; describe('Transaction Type Model', () => { - let transaction: Transaction; - - beforeEach(() => { - transaction = TransactionTypeUtils.factory( - ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_RECOUNT_ACCOUNT_CONTRIBUTION - ).getNewTransaction(); - }); - it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { - const transactionType = new EARMARK_RECEIPT_RECOUNT_ACCOUNT(); - const spy = spyOn(transactionType, 'generatePurposeDescription'); + const transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); + if (!transaction.transactionType) throw new Error('transactionType method does not exist'); + const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); spy.and.returnValue('A short response'); const originalDescrip = transaction.transactionType?.generatePurposeDescription?.(transaction); @@ -23,8 +15,9 @@ describe('Transaction Type Model', () => { }); it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { - const transactionType = new EARMARK_RECEIPT_RECOUNT_ACCOUNT(); - const spy = spyOn(transactionType, 'generatePurposeDescription'); + const transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); + if (!transaction.transactionType) throw new Error('transactionType method does not exist'); + const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); spy.and.returnValue( 'An absurdly long response' + 'Just the biggest; no corners cut.' + @@ -33,8 +26,8 @@ describe('Transaction Type Model', () => { ); const originalDescrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - const modifiedDescrip = transaction.transactionType?.generatePurposeDescriptionWrapper(transaction) || ''; + const modifiedDescrip = transaction.transactionType?.generatePurposeDescriptionWrapper(transaction); expect(originalDescrip).not.toEqual(modifiedDescrip); - expect(modifiedDescrip.length).toEqual(100); + expect(modifiedDescrip?.length).toEqual(100); }); }); diff --git a/front-end/src/app/shared/services/transaction.service.spec.ts b/front-end/src/app/shared/services/transaction.service.spec.ts index fa58043b23..487d719a2e 100644 --- a/front-end/src/app/shared/services/transaction.service.spec.ts +++ b/front-end/src/app/shared/services/transaction.service.spec.ts @@ -49,9 +49,7 @@ describe('TransactionService', () => { expect(response).toEqual(mockResponse); }); - const req = httpTestingController.expectOne( - `${environment.apiUrl}/transactions/schedule-a/?page=1&ordering=form_type` - ); + const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/?page=1&ordering=form_type`); expect(req.request.method).toEqual('GET'); req.flush(mockResponse); httpTestingController.verify(); @@ -67,7 +65,7 @@ describe('TransactionService', () => { expect(response).toEqual(mockResponse); }); - const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/1/`); + const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/1/`); expect(req.request.method).toEqual('GET'); req.flush(mockResponse); httpTestingController.verify(); @@ -88,7 +86,7 @@ describe('TransactionService', () => { }); const formattedDate = formatDate(new Date(), 'yyyy-MM-dd', 'en-US'); const req = httpTestingController.expectOne( - `${environment.apiUrl}/transactions/schedule-a/previous/?transaction_id=abc&contact_id=1&date=${formattedDate}&aggregation_group=${AggregationGroups.GENERAL}` + `${environment.apiUrl}/transactions/previous/?transaction_id=abc&contact_id=1&date=${formattedDate}&aggregation_group=${AggregationGroups.GENERAL}` ); expect(req.request.method).toEqual('GET'); req.flush(mockResponse); diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index fdb2f262a4..9c23ea1612 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -12,11 +12,14 @@ import { F3xSummary } from '../models/f3x-summary.model'; import { UploadSubmission } from '../models/upload-submission.model'; import { CashOnHand } from '../interfaces/report.interface'; import { AggregationGroups, ScheduleTransactionTypes } from '../models/transaction.model'; -import { SchBTransaction } from '../models/schb-transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from '../models/schb-transaction.model'; import { ContactTypes } from '../models/contact.model'; -import { SchATransaction } from '../models/scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; import { TransactionTypeUtils } from './transaction-type.utils'; import { Transaction } from '../models/transaction.model'; +import { TransactionTemplateMapType } from '../models/transaction-types/transaction-type.model'; +import { MemoText } from '../models/memo-text.model'; +import { Contact } from '../models/contact.model'; export const testCommitteeAccount: CommitteeAccount = CommitteeAccount.fromJSON({ affiliated_committee_name: 'NONE', @@ -125,6 +128,38 @@ export const testMockStore = { ], }; +export const testIndividualReceipt: SchATransaction = SchATransaction.fromJSON({ + id: '123', + transaction_type_identifier: ScheduleATransactionTypes.INDIVIDUAL_RECEIPT, + report_id: '999', + contribution_amount: '202.2', + contribution_date: '2022-02-02', + entity_type: ContactTypes.ORGANIZATION, + contributor_organization_name: 'org name', + contributor_street_1: '123 Main St', + contributor_city: 'city', + contributor_state: 'VA', + contributor_zip: '20001', + memo_text: MemoText.fromJSON({ text4000: 'Memo!' }), + contact_id: '456', + contact: Contact.fromJSON({ + id: 'testId', + type: ContactTypes.INDIVIDUAL, + last_name: 'testLn1', + first_name: 'testFn1', + middle_name: 'testMn1', + prefix: 'testPrefix1', + suffix: 'testSuffix1', + employer: 'testEmployer1', + occupation: 'testOccupation1', + street_1: 'testStreet1', + street_2: 'testStreet2', + city: 'testCity1', + state: 'VA', + zip: '12345', + }), +}); + export const testScheduleATransaction = SchATransaction.fromJSON({ form_type: 'SA15', filer_committee_id_number: 'C00000000', @@ -150,7 +185,7 @@ export const testScheduleATransaction = SchATransaction.fromJSON({ export const testScheduleBTransaction = SchBTransaction.fromJSON({ form_type: 'SB21b', filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'OPERATING_EXPENDITURE', + transaction_type_identifier: ScheduleBTransactionTypes.OPERATING_EXPENDITURE, transaction_id: 'AAAAAAAAAAAAAAAAAAA', entity_type: ContactTypes.ORGANIZATION, contributor_organization_name: 'org name', @@ -174,3 +209,29 @@ export function getTestTransactionByType( } return transaction; } + +export const testTemplateMap: TransactionTemplateMapType = { + last_name: 'contributor_last_name', + first_name: 'contributor_first_name', + middle_name: 'contributor_middle_name', + prefix: 'contributor_prefix', + suffix: 'contributor_suffix', + street_1: 'contributor_street_1', + street_2: 'contributor_street_2', + city: 'contributor_city', + state: 'contributor_state', + zip: 'contributor_zip', + employer: 'contributor_employer', + occupation: 'contributor_occupation', + organization_name: 'contributor_organization_name', + committee_fec_id: 'donor_committee_fec_id', + date: 'contribution_date', + dateLabel: 'DATE RECEIVED', + memo_code: 'memo_code', + amount: 'contribution_amount', + aggregate: 'contribution_aggregate', + purpose_descrip: 'contribution_purpose_descrip', + purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', + memo_text_input: 'memo_text_input', + category_code: '', +}; diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts index f35e0cdb39..c700196e1f 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.spec.ts @@ -3,15 +3,14 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { ContactTypes } from 'app/shared/models/contact.model'; -import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; +import { ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { NavigationAction, NavigationDestination, NavigationEvent, } from 'app/shared/models/transaction-navigation-controls.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore, testScheduleATransaction } from 'app/shared/utils/unit-test.utils'; +import { getTestTransactionByType, testMockStore, testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { environment } from 'environments/environment'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; @@ -31,22 +30,7 @@ describe('TransactionGroupAComponent', () => { let httpTestingController: HttpTestingController; let component: TransactionGroupAComponent; let fixture: ComponentFixture; - - const transaction = SchATransaction.fromJSON({ - form_type: 'SA11AI', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: ScheduleATransactionTypes.INDIVIDUAL_JF_TRANSFER_MEMO, - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.ORGANIZATION, - contributor_organization_name: 'org name', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - }); + const transaction = getTestTransactionByType(ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); beforeEach(async () => { await TestBed.configureTestingModule({ @@ -76,7 +60,8 @@ describe('TransactionGroupAComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupAComponent); component = fixture.componentInstance; - component.transaction = testScheduleATransaction; + component.templateMap = testTemplateMap; + component.transaction = transaction; fixture.detectChanges(); }); @@ -89,7 +74,7 @@ describe('TransactionGroupAComponent', () => { component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, transaction)); expect(component.form.invalid).toBe(true); httpTestingController.expectNone( - `${environment.apiUrl}/transactions/schedule-a/1/?schema=INDIVIDUAL_JF_TRANSFER_MEMO&fields_to_validate=` + `${environment.apiUrl}/transactions/schedule-a/1/?schema=INDIVIDUAL_RECEIPT&fields_to_validate=` ); httpTestingController.verify(); }); diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts index 468b2ab011..9f6246b0d8 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.spec.ts @@ -58,6 +58,7 @@ describe('TransactionGroupAgComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(TransactionGroupAgComponent); component = fixture.componentInstance; + component.transaction = earmarkReceipt; fixture.detectChanges(); }); diff --git a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.spec.ts b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.spec.ts index 2a9aaec535..de987de1dc 100644 --- a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.spec.ts @@ -3,8 +3,9 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { getTestTransactionByType, testMockStore } from 'app/shared/utils/unit-test.utils'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; @@ -43,14 +44,14 @@ describe('TransactionGroupCComponent', () => { ConfirmDialogModule, ], declarations: [TransactionGroupCComponent], - providers: [MessageService, ConfirmationService, - FormBuilder, provideMockStore(testMockStore), FecDatePipe], + providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], }).compileComponents(); }); beforeEach(() => { fixture = TestBed.createComponent(TransactionGroupCComponent); component = fixture.componentInstance; + component.transaction = getTestTransactionByType(ScheduleATransactionTypes.OTHER_RECEIPTS); fixture.detectChanges(); }); diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts index 3fd0fe3bc9..43fd02a0e2 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts @@ -11,7 +11,7 @@ import { NavigationEvent, } from 'app/shared/models/transaction-navigation-controls.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { getTestTransactionByType, testMockStore, testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { environment } from 'environments/environment'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; @@ -33,20 +33,7 @@ describe('TransactionGroupDComponent', () => { let component: TransactionGroupDComponent; let fixture: ComponentFixture; - const transaction = SchATransaction.fromJSON({ - form_type: 'SA12', - transaction_type_identifier: ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO, - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.ORGANIZATION, - contributor_organization_name: 'org name', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - }); + const transaction = getTestTransactionByType(ScheduleATransactionTypes.TRIBAL_RECEIPT); beforeEach(async () => { await TestBed.configureTestingModule({ @@ -76,15 +63,13 @@ describe('TransactionGroupDComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupDComponent); component = fixture.componentInstance; - component.transaction = TransactionTypeUtils.factory( - ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO - ).getNewTransaction(); + component.transaction = transaction; + component.templateMap = testTemplateMap; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); - component.ngOnInit(); expect(component.form.get('entity_type')?.value).toEqual(ContactTypes.ORGANIZATION); }); @@ -102,7 +87,7 @@ describe('TransactionGroupDComponent', () => { component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, transaction)); expect(component.form.invalid).toBe(true); httpTestingController.expectNone( - `${environment.apiUrl}/transactions/schedule-a/1/?schema=TRIBAL_JF_TRANSFER_MEMO&fields_to_validate=` + `${environment.apiUrl}/transactions/schedule-a/1/?schema=TRIBAL_RECEIPT&fields_to_validate=` ); httpTestingController.verify(); }); diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts index 063c3e35bf..6b72d403c2 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts @@ -70,9 +70,7 @@ describe('TransactionGroupFComponent', () => { httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupFComponent); component = fixture.componentInstance; - component.transaction = TransactionTypeUtils.factory( - ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO - ).getNewTransaction(); + component.transaction = TransactionTypeUtils.factory(ScheduleATransactionTypes.TRANSFER).getNewTransaction(); fixture.detectChanges(); }); diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts index 4af4de1190..290733269b 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.spec.ts @@ -4,8 +4,9 @@ import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { getTestTransactionByType, testMockStore, testTemplateMap } from 'app/shared/utils/unit-test.utils'; import { AccordionModule } from 'primeng/accordion'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; @@ -54,11 +55,14 @@ describe('TransactionGroupFgComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(TransactionGroupFgComponent); component = fixture.componentInstance; + component.transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_EARMARK_RECEIPT); + component.templateMap = testTemplateMap; + component.childTransaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_EARMARK_MEMO); + component.childTemplateMap = testTemplateMap; fixture.detectChanges(); }); it('should create', () => { - component.ngOnInit(); expect(component).toBeTruthy(); }); }); diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts index 43f62e9cfb..7500dbb89c 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts @@ -1,20 +1,11 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; -import { Contact, ContactTypes } from 'app/shared/models/contact.model'; -import { AggregationGroups } from 'app/shared/models/transaction.model'; -import { SchBTransaction } from 'app/shared/models/schb-transaction.model'; -import { - NavigationAction, - NavigationDestination, - NavigationEvent, -} from 'app/shared/models/transaction-navigation-controls.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { ContactService } from 'app/shared/services/contact.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; +import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; import { CheckboxModule } from 'primeng/checkbox'; @@ -25,35 +16,14 @@ import { InputNumberModule } from 'primeng/inputnumber'; import { InputTextModule } from 'primeng/inputtext'; import { InputTextareaModule } from 'primeng/inputtextarea'; import { ToastModule } from 'primeng/toast'; -import { of } from 'rxjs'; -import { environment } from '../../../environments/environment'; import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupHComponent } from './transaction-group-h.component'; import { testScheduleBTransaction } from '../../shared/utils/unit-test.utils'; describe('TransactionGroupHComponent', () => { - let httpTestingController: HttpTestingController; let component: TransactionGroupHComponent; let fixture: ComponentFixture; - let testContactService: ContactService; - let testConfirmationService: ConfirmationService; - - const transaction = SchBTransaction.fromJSON({ - form_type: 'SA15', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.ORGANIZATION, - contributor_organization_name: 'org name', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - aggregation_group: AggregationGroups.LINE_15, - }); + const transaction = testScheduleBTransaction; beforeEach(async () => { await TestBed.configureTestingModule({ @@ -77,200 +47,16 @@ describe('TransactionGroupHComponent', () => { declarations: [TransactionGroupHComponent], providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], }).compileComponents(); - testContactService = TestBed.inject(ContactService); - testConfirmationService = TestBed.inject(ConfirmationService); }); beforeEach(() => { - httpTestingController = TestBed.inject(HttpTestingController); fixture = TestBed.createComponent(TransactionGroupHComponent); component = fixture.componentInstance; + component.transaction = transaction; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); - - it('should reset form values when the entity_type changes', () => { - component.form.patchValue({ - contributor_organization_name: 'org name', - contributor_last_name: 'last name', - contributor_first_name: 'first name', - }); - component.form.patchValue({ - entity_type: ContactTypes.INDIVIDUAL, - }); - expect(component.form.get('contributor_organization_name')?.value).toBe(null); - expect(component.form.get('contributor_last_name')?.value).toBe('last name'); - expect(component.form.get('contributor_first_name')?.value).toBe('first name'); - - component.form.patchValue({ - contributor_organization_name: 'org name', - contributor_last_name: 'last name', - contributor_first_name: 'first name', - }); - component.form.patchValue({ - entity_type: ContactTypes.ORGANIZATION, - }); - expect(component.form.get('contributor_organization_name')?.value).toBe('org name'); - expect(component.form.get('contributor_last_name')?.value).toBe(null); - expect(component.form.get('contributor_first_name')?.value).toBe(null); - }); - - it('#save() should save a new org record', () => { - const testContact: Contact = new Contact(); - testContact.id = 'testId'; - spyOn(testContactService, 'create').and.returnValue(of(testContact)); - spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { - if (confirmation.accept) { - return confirmation.accept(); - } - }); - - if (component.transaction) { - component.transaction.id = undefined; - } - const testTran = testScheduleBTransaction; - component.form.patchValue({ ...testTran }); - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); - const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); - expect(req.request.method).toEqual('POST'); - httpTestingController.verify(); - }); - - it('#save() should update an existing org record', () => { - const testContact: Contact = new Contact(); - testContact.id = 'testId'; - spyOn(testContactService, 'create').and.returnValue(of(testContact)); - spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { - if (confirmation.accept) { - return confirmation.accept(); - } - }); - - if (component.transaction) { - component.transaction.id = '10'; - } - component.form.patchValue({ ...transaction }); - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.ANOTHER, transaction)); - const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/10/`); - expect(req.request.method).toEqual('PUT'); - httpTestingController.verify(); - }); - - it('#save() should save a new ind record', () => { - const testContact: Contact = new Contact(); - testContact.id = 'testId'; - spyOn(testContactService, 'create').and.returnValue(of(testContact)); - spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { - if (confirmation.accept) { - return confirmation.accept(); - } - }); - - if (component.transaction) { - component.transaction.id = undefined; - } - const testTran = SchBTransaction.fromJSON({ - form_type: 'SA15', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.INDIVIDUAL, - contributor_first_name: 'fn', - contributor_last_name: 'ln', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - aggregation_group: AggregationGroups.LINE_15, - }); - component.form.patchValue({ ...testTran }); - - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); - const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); - expect(req.request.method).toEqual('POST'); - httpTestingController.verify(); - }); - - it('#save() should save a new com record', () => { - const testContact: Contact = new Contact(); - testContact.id = 'testId'; - spyOn(testContactService, 'create').and.returnValue(of(testContact)); - spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { - if (confirmation.accept) { - return confirmation.accept(); - } - }); - - if (component.transaction) { - component.transaction.id = undefined; - } - const testTran = SchBTransaction.fromJSON({ - form_type: 'SA15', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.COMMITTEE, - contributor_organization_name: 'org name', - contributor_street_1: '123 Main St', - contributor_city: 'city', - contributor_state: 'VA', - contributor_zip: '20001', - contribution_date: '2022-08-11', - contribution_amount: 1, - contribution_aggregate: 2, - aggregation_group: AggregationGroups.LINE_15, - }); - component.form.patchValue({ ...testTran }); - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); - const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); - expect(req.request.method).toEqual('POST'); - httpTestingController.verify(); - }); - - it('#save() should not save an invalid record', () => { - component.form.patchValue({ ...transaction, ...{ contributor_state: 'not-valid' } }); - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, transaction)); - expect(component.form.invalid).toBe(true); - httpTestingController.expectNone(`${environment.apiUrl}/transactions/schedule-a/1/`); - httpTestingController.verify(); - }); - - it('#save() should not save an invalid org record', () => { - const testContact: Contact = new Contact(); - testContact.id = 'testId'; - if (component.transaction) { - component.transaction.contact = testContact; - } - spyOn(testContactService, 'create').and.returnValue(of(testContact)); - spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { - if (confirmation.accept) { - return confirmation.accept(); - } - }); - - if (component.transaction) { - component.transaction.id = undefined; - } - const testTran = SchBTransaction.fromJSON({ - form_type: 'SA15', - filer_committee_id_number: 'C00000000', - transaction_type_identifier: 'OFFSET_TO_OPERATING_EXPENDITURES', - transaction_id: 'AAAAAAAAAAAAAAAAAAA', - entity_type: ContactTypes.INDIVIDUAL, - contribution_amount: 1, - contribution_aggregate: undefined, // This field is required so the txn is invalid - aggregation_group: AggregationGroups.LINE_15, - }); - component.form.patchValue({ ...testTran }); - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); - expect(component.form.invalid).toBe(true); - httpTestingController.expectNone(`${environment.apiUrl}/transactions/schedule-a/1/`); - httpTestingController.verify(); - }); }); diff --git a/tasks.py b/tasks.py index 53b3641dbe..c0445fffe6 100644 --- a/tasks.py +++ b/tasks.py @@ -57,8 +57,7 @@ def _detect_branch(repo): DEPLOY_RULES = ( ("prod", lambda _, branch: branch == "main"), ("stage", lambda _, branch: branch.startswith("release")), - # ("dev", lambda _, branch: branch == "develop"), - ("dev", lambda _, branch: branch == "feature/678-operating-expenditure"), + ("dev", lambda _, branch: branch == "develop"), ) From cf8bd8753a4bcfb4e495d5176ed8f3159b557baf Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Mon, 13 Feb 2023 16:12:51 -0500 Subject: [PATCH 043/115] Fix code smells reported by SonarCloud --- .../models/scha-transaction.model.spec.ts | 20 ------------------- .../transaction-type.model.spec.ts | 6 ++++-- .../app/shared/models/transaction.model.ts | 2 +- .../shared/resolvers/transaction.resolver.ts | 4 ++-- .../services/transaction.service.spec.ts | 3 +-- .../shared/services/transaction.service.ts | 3 +-- .../src/app/shared/utils/unit-test.utils.ts | 6 ++---- .../transaction-group-d.component.spec.ts | 3 +-- .../transaction-group-f.component.spec.ts | 3 +-- 9 files changed, 13 insertions(+), 37 deletions(-) diff --git a/front-end/src/app/shared/models/scha-transaction.model.spec.ts b/front-end/src/app/shared/models/scha-transaction.model.spec.ts index 44715e4034..61530d6a36 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.spec.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.spec.ts @@ -1,26 +1,6 @@ import { getTestTransactionByType } from '../utils/unit-test.utils'; -import { MemoText } from './memo-text.model'; import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; -const initTransactionData = { - id: undefined, - report_id: undefined, - contact: undefined, - contact_id: undefined, - form_type: undefined, - filer_committee_id_number: undefined, - transaction_id: null, - transaction_type_identifier: 'INDIVIDUAL_RECEIPT', - contribution_purpose_descrip: undefined, - parent_transaction_id: undefined, - children: undefined, - parent_transaction: undefined, - fields_to_validate: undefined, - itemized: false, - memo_text: MemoText.fromJSON({ text4000: 'Memo!' }), - memo_text_id: 'ID Goes Here', -}; - describe('SchATransaction', () => { it('should create an instance', () => { expect(new SchATransaction()).toBeTruthy(); diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts index 4e5638c89f..a28280dcea 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts @@ -6,7 +6,8 @@ describe('Transaction Type Model', () => { it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { const transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); if (!transaction.transactionType) throw new Error('transactionType method does not exist'); - const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); + // prettier-ignore + const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); // eslint-disable-line @typescript-eslint/no-explicit-any spy.and.returnValue('A short response'); const originalDescrip = transaction.transactionType?.generatePurposeDescription?.(transaction); @@ -17,7 +18,8 @@ describe('Transaction Type Model', () => { it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { const transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); if (!transaction.transactionType) throw new Error('transactionType method does not exist'); - const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); + // prettier-ignore + const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); // eslint-disable-line @typescript-eslint/no-explicit-any spy.and.returnValue( 'An absurdly long response' + 'Just the biggest; no corners cut.' + diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 1fd49357cb..7ecad12335 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -105,7 +105,7 @@ export abstract class Transaction extends BaseModel { } // The parent is the new payload - const payload = this.parent_transaction as Transaction; + const payload = this.parent_transaction; if (!payload.children) payload.children = []; // Attach the original payload to the parent as a child, replacing an diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.ts b/front-end/src/app/shared/resolvers/transaction.resolver.ts index 11a5e7f2ce..e6995c6ae2 100644 --- a/front-end/src/app/shared/resolvers/transaction.resolver.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.ts @@ -32,7 +32,7 @@ export class TransactionResolver implements Resolve { } resolve_new_transaction(reportId: string, transactionTypeName: string): Observable { - const transactionType = TransactionTypeUtils.factory(transactionTypeName) as TransactionType; + const transactionType = TransactionTypeUtils.factory(transactionTypeName); const transaction: Transaction = transactionType.getNewTransaction(); transaction.report_id = String(reportId); @@ -49,7 +49,7 @@ export class TransactionResolver implements Resolve { ): Observable { return this.transactionService.get(String(parentTransactionId)).pipe( map((parentTransaction: Transaction) => { - const childTransactionType = TransactionTypeUtils.factory(childTransactionTypeName) as TransactionType; + const childTransactionType = TransactionTypeUtils.factory(childTransactionTypeName); const childTransaction = childTransactionType.getNewTransaction(); childTransaction.parent_transaction = parentTransaction; childTransaction.parent_transaction_id = String(parentTransactionId); diff --git a/front-end/src/app/shared/services/transaction.service.spec.ts b/front-end/src/app/shared/services/transaction.service.spec.ts index 487d719a2e..2713605240 100644 --- a/front-end/src/app/shared/services/transaction.service.spec.ts +++ b/front-end/src/app/shared/services/transaction.service.spec.ts @@ -3,10 +3,9 @@ import { HttpClientTestingModule, HttpTestingController } from '@angular/common/ import { TestBed } from '@angular/core/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { environment } from '../../../environments/environment'; -import { Transaction } from '../models/transaction.model'; +import { Transaction, AggregationGroups } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; -import { AggregationGroups } from '../models/transaction.model'; import { testMockStore } from '../utils/unit-test.utils'; import { TransactionService } from './transaction.service'; import { TransactionTypeUtils } from '../utils/transaction-type.utils'; diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 4ace1e0b74..ef990b2f34 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -3,10 +3,9 @@ import { Injectable } from '@angular/core'; import { Observable, of } from 'rxjs'; import { map, tap } from 'rxjs/operators'; import { TableListService } from '../interfaces/table-list-service.interface'; -import { Transaction, AggregationGroups } from '../models/transaction.model'; +import { Transaction, AggregationGroups, ScheduleTransaction } from '../models/transaction.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; -import { ScheduleTransaction } from '../models/transaction.model'; import { getFromJSON } from '../utils/transaction-type.utils'; @Injectable({ diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index 9c23ea1612..be4f35f5e0 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -11,15 +11,13 @@ import { CommitteeAccount } from '../models/committee-account.model'; import { F3xSummary } from '../models/f3x-summary.model'; import { UploadSubmission } from '../models/upload-submission.model'; import { CashOnHand } from '../interfaces/report.interface'; -import { AggregationGroups, ScheduleTransactionTypes } from '../models/transaction.model'; +import { Transaction, AggregationGroups, ScheduleTransactionTypes } from '../models/transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../models/schb-transaction.model'; -import { ContactTypes } from '../models/contact.model'; +import { Contact, ContactTypes } from '../models/contact.model'; import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; import { TransactionTypeUtils } from './transaction-type.utils'; -import { Transaction } from '../models/transaction.model'; import { TransactionTemplateMapType } from '../models/transaction-types/transaction-type.model'; import { MemoText } from '../models/memo-text.model'; -import { Contact } from '../models/contact.model'; export const testCommitteeAccount: CommitteeAccount = CommitteeAccount.fromJSON({ affiliated_committee_name: 'NONE', diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts index 43fd02a0e2..93772d0372 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.spec.ts @@ -4,7 +4,7 @@ import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { ContactTypes } from 'app/shared/models/contact.model'; -import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; +import { ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { NavigationDestination, NavigationAction, @@ -26,7 +26,6 @@ import { InputTextareaModule } from 'primeng/inputtextarea'; import { ToastModule } from 'primeng/toast'; import { SharedModule } from '../../shared/shared.module'; import { TransactionGroupDComponent } from './transaction-group-d.component'; -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; describe('TransactionGroupDComponent', () => { let httpTestingController: HttpTestingController; diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts index 6b72d403c2..5b0897cd84 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts @@ -11,7 +11,7 @@ import { import { Contact } from 'app/shared/models/contact.model'; import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { testMockStore, testScheduleATransaction } from 'app/shared/utils/unit-test.utils'; import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; @@ -29,7 +29,6 @@ import { TransactionGroupFComponent } from './transaction-group-f.component'; import { ContactService } from 'app/shared/services/contact.service'; import { of } from 'rxjs'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; -import { testScheduleATransaction } from 'app/shared/utils/unit-test.utils'; describe('TransactionGroupFComponent', () => { let httpTestingController: HttpTestingController; From c898ff97cbf89ba38472480e656004a317436806 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Mon, 13 Feb 2023 16:16:24 -0500 Subject: [PATCH 044/115] Fix code smell reported by SonarCloud --- front-end/src/app/shared/resolvers/transaction.resolver.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.ts b/front-end/src/app/shared/resolvers/transaction.resolver.ts index e6995c6ae2..d2ed60a73d 100644 --- a/front-end/src/app/shared/resolvers/transaction.resolver.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { map, Observable, of, mergeMap } from 'rxjs'; -import { TransactionType } from '../models/transaction-types/transaction-type.model'; import { Transaction } from '../models/transaction.model'; import { ContactService } from '../services/contact.service'; import { TransactionService } from '../services/transaction.service'; From b13abb21e4427a75fdee28dac478d878a692156f Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 07:27:12 -0500 Subject: [PATCH 045/115] Add unit tests to double transaction template --- ...le-transaction-type-base.component.spec.ts | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts index c4cf2c5da3..fe379b5d0c 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts @@ -1,13 +1,19 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder } from '@angular/forms'; +import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { TransactionService } from 'app/shared/services/transaction.service'; import { ValidateService } from 'app/shared/services/validate.service'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { MessageService } from 'primeng/api'; +import { getTestTransactionByType, testMockStore } from 'app/shared/utils/unit-test.utils'; +import { ConfirmationService, MessageService } from 'primeng/api'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; +import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; +import { DatePipe } from '@angular/common'; +import { ApiService } from 'app/shared/services/api.service'; +import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; +import { transactionDateReceived } from '../../../../../cypress/support/generators/generators.spec'; class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseComponent { formProperties: string[] = [ @@ -57,25 +63,53 @@ class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseCo ]; } -describe('TransactionTypeBaseComponent', () => { +describe('DoubleTransactionTypeBaseComponent', () => { let component: TestDoubleTransactionTypeBaseComponent; let fixture: ComponentFixture; + let testMessageService: MessageService; + let testRouter: Router; + let testTransactionService: TransactionService; + let testApiService: ApiService; + let testConfirmationService: ConfirmationService; + let fecDatePipe: FecDatePipe; + let testTransaction: SchATransaction; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [TestDoubleTransactionTypeBaseComponent], imports: [RouterTestingModule, HttpClientTestingModule], - providers: [MessageService, FormBuilder, ValidateService, TransactionService, provideMockStore(testMockStore)], + providers: [ + DatePipe, + MessageService, + FormBuilder, + ValidateService, + TransactionService, + ConfirmationService, + provideMockStore(testMockStore), + FecDatePipe, + ], }).compileComponents(); + + testMessageService = TestBed.inject(MessageService); + testRouter = TestBed.inject(Router); + testTransactionService = TestBed.inject(TransactionService); + testApiService = TestBed.inject(ApiService); + testConfirmationService = TestBed.inject(ConfirmationService); + fecDatePipe = TestBed.inject(FecDatePipe); }); beforeEach(() => { + testTransaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_EARMARK_RECEIPT) as SchATransaction; + testTransaction.children = [ + getTestTransactionByType(ScheduleATransactionTypes.PAC_EARMARK_MEMO) as SchATransaction, + ]; fixture = TestBed.createComponent(TestDoubleTransactionTypeBaseComponent); component = fixture.componentInstance; + component.transaction = testTransaction; fixture.detectChanges(); }); - xit('should create', () => { + it('should create', () => { expect(component).toBeTruthy(); }); }); From 80109fb2f837d40526680cd93c5a02f8c418323b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 07:45:52 -0500 Subject: [PATCH 046/115] Add unit test to transaction model --- ...ouble-transaction-type-base.component.spec.ts | 16 ---------------- .../app/shared/models/transaction.model.spec.ts | 12 ++++++++++++ 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts index fe379b5d0c..610e7547a1 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts @@ -1,7 +1,6 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder } from '@angular/forms'; -import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { TransactionService } from 'app/shared/services/transaction.service'; @@ -11,9 +10,7 @@ import { ConfirmationService, MessageService } from 'primeng/api'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { DatePipe } from '@angular/common'; -import { ApiService } from 'app/shared/services/api.service'; import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; -import { transactionDateReceived } from '../../../../../cypress/support/generators/generators.spec'; class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseComponent { formProperties: string[] = [ @@ -66,12 +63,6 @@ class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseCo describe('DoubleTransactionTypeBaseComponent', () => { let component: TestDoubleTransactionTypeBaseComponent; let fixture: ComponentFixture; - let testMessageService: MessageService; - let testRouter: Router; - let testTransactionService: TransactionService; - let testApiService: ApiService; - let testConfirmationService: ConfirmationService; - let fecDatePipe: FecDatePipe; let testTransaction: SchATransaction; beforeEach(async () => { @@ -89,13 +80,6 @@ describe('DoubleTransactionTypeBaseComponent', () => { FecDatePipe, ], }).compileComponents(); - - testMessageService = TestBed.inject(MessageService); - testRouter = TestBed.inject(Router); - testTransactionService = TestBed.inject(TransactionService); - testApiService = TestBed.inject(ApiService); - testConfirmationService = TestBed.inject(ConfirmationService); - fecDatePipe = TestBed.inject(FecDatePipe); }); beforeEach(() => { diff --git a/front-end/src/app/shared/models/transaction.model.spec.ts b/front-end/src/app/shared/models/transaction.model.spec.ts index 7a0e0509d7..76cd87dead 100644 --- a/front-end/src/app/shared/models/transaction.model.spec.ts +++ b/front-end/src/app/shared/models/transaction.model.spec.ts @@ -1,3 +1,5 @@ +import { getTestTransactionByType } from '../utils/unit-test.utils'; +import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; import { Transaction } from './transaction.model'; describe('Transaction', () => { @@ -8,4 +10,14 @@ describe('Transaction', () => { } expect(new ChildTransaction()).toBeTruthy(); }); + + it('should update child purpose descriptions', () => { + const testTransaction = getTestTransactionByType( + ScheduleATransactionTypes.PARTNERSHIP_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_RECEIPT + ) as SchATransaction; + + const payload = testTransaction.getUpdatedParent(); + expect(payload.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECEIPT); + }); }); From c6e9bfb2e8d50a47ba5404c55526300344526d8b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 07:55:30 -0500 Subject: [PATCH 047/115] Update unit test for transaction container component --- .../transaction-container.component.spec.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts b/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts index 586f660487..e75fd3258b 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts @@ -4,8 +4,9 @@ import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { getTestTransactionByType, testMockStore } from 'app/shared/utils/unit-test.utils'; import { ConfirmationService, MessageService } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; import { CalendarModule } from 'primeng/calendar'; @@ -66,6 +67,9 @@ describe('TransactionContainerComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(TransactionContainerComponent); component = fixture.componentInstance; + component.transaction = getTestTransactionByType( + ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES + ) as SchATransaction; fixture.detectChanges(); }); From 61603b34bbf2c2c18fbf2cbc7e864b61d7b6230d Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 08:02:04 -0500 Subject: [PATCH 048/115] Fix unit test for transaction container component --- .../transaction-container.component.spec.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts b/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts index e75fd3258b..feb87f311b 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.spec.ts @@ -19,7 +19,6 @@ import { InputTextareaModule } from 'primeng/inputtextarea'; import { ToastModule } from 'primeng/toast'; import { of } from 'rxjs'; import { SharedModule } from '../../shared/shared.module'; -import { TransactionTypeUtils } from '../../shared/utils/transaction-type.utils'; import { TransactionGroupBComponent } from '../transaction-group-b/transaction-group-b.component'; import { TransactionContainerComponent } from './transaction-container.component'; @@ -54,7 +53,9 @@ describe('TransactionContainerComponent', () => { provide: ActivatedRoute, useValue: { data: of({ - transactionType: TransactionTypeUtils.factory('OFFSET_TO_OPERATING_EXPENDITURES'), + transaction: getTestTransactionByType( + ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES + ) as SchATransaction, }), }, }, @@ -67,9 +68,6 @@ describe('TransactionContainerComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(TransactionContainerComponent); component = fixture.componentInstance; - component.transaction = getTestTransactionByType( - ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES - ) as SchATransaction; fixture.detectChanges(); }); From d6efe397225ee0f4b884659134ad50d002354670 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 14 Feb 2023 09:56:39 -0500 Subject: [PATCH 049/115] cleaned up ng model warnings --- front-end/src/app/login/login/login.component.spec.ts | 9 ++++++++- .../additional-info-input.component.html | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/front-end/src/app/login/login/login.component.spec.ts b/front-end/src/app/login/login/login.component.spec.ts index 3d32453bf8..07d8fcd08c 100644 --- a/front-end/src/app/login/login/login.component.spec.ts +++ b/front-end/src/app/login/login/login.component.spec.ts @@ -3,6 +3,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { DashboardComponent } from 'app/dashboard/dashboard.component'; import { UserLoginData } from 'app/shared/models/user.model'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { environment } from 'environments/environment'; @@ -18,7 +19,13 @@ describe('LoginComponent', () => { beforeEach(async () => { window.onbeforeunload = jasmine.createSpy(); await TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, RouterTestingModule, ReactiveFormsModule], + imports: [ + HttpClientTestingModule, + RouterTestingModule.withRoutes([{ + path: 'dashboard', component: DashboardComponent + }]), + ReactiveFormsModule + ], providers: [{ provide: Window, useValue: window }, provideMockStore(testMockStore)], declarations: [LoginComponent], }).compileComponents(); diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index 036ccac4f9..e3f43bf097 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -11,7 +11,6 @@ [rows]="4" [cols]="30" pInputTextarea - [disabled]="true" [autoResize]="true" formControlName="contribution_purpose_descrip" [ngClass]="{ readonly: descriptionIsSystemGenerated }" From 2f38db4705675934c1da6d80af2223b78e907f63 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 11:57:54 -0500 Subject: [PATCH 050/115] Removed type check for amount value --- .../transaction-type-base/transaction-type-base.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 65e506c47f..892022dcab 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -82,7 +82,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy .get(this.templateMap.amount) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((amount) => { - if (typeof amount === 'number' && amount > 0) { + if (+amount > 0) { this.form.patchValue({ [this.templateMap.amount]: -1 * amount }); } }); From 760530f7683024e7ae13e5ceeb5346610ad59390 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 15:11:40 -0500 Subject: [PATCH 051/115] Refactor purpose_descrip to purpose_description --- .../additional-info-input.component.html | 8 ++++---- .../additional-info-input.component.spec.ts | 4 ++-- .../inputs/name-input/name-input.component.html | 4 ++-- .../double-transaction-type-base.component.ts | 2 +- .../transaction-type-base/transaction-form.utils.ts | 2 +- .../transaction-types/SchaTransactionType.model.ts | 11 +---------- .../transaction-types/SchbTransactionType.model.ts | 11 +---------- .../transaction-types/transaction-type.model.ts | 12 ++++++++++-- front-end/src/app/shared/models/transaction.model.ts | 4 ++-- front-end/src/app/shared/utils/unit-test.utils.ts | 2 +- 10 files changed, 25 insertions(+), 35 deletions(-) diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index 495c805ae4..f0f0dd1a90 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -1,23 +1,23 @@
- + {{ purposeDescriptionLabelNotice }}
diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts index de474c9210..40d0bc434a 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.spec.ts @@ -32,13 +32,13 @@ describe('AdditionalInfoInputComponent', () => { }); it('should have a read-only cpd if system generated', () => { - const cpd = fixture.debugElement.query(By.css('#purpose_descrip')); + const cpd = fixture.debugElement.query(By.css('#purpose_description')); expect(cpd.classes['readonly']).toBeTruthy(); }); it('should have a mutable cpd if not system generated', () => { component.descriptionIsSystemGenerated = false; - const cpd = fixture.debugElement.query(By.css('#purpose_descrip')); + const cpd = fixture.debugElement.query(By.css('#purpose_description')); fixture.detectChanges(); expect(cpd.classes['readonly']).toBeFalsy(); }); diff --git a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html index 9fc65401aa..3cbbdd88cd 100644 --- a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html +++ b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html @@ -2,8 +2,8 @@
- - + + Date: Tue, 14 Feb 2023 15:56:57 -0500 Subject: [PATCH 052/115] Rename childContributionPurposeDescriptionLabel to childPurposeDescriptionLabel --- .../double-transaction-type-base.component.ts | 5 ++--- .../transaction-group-ag/transaction-group-ag.component.html | 2 +- .../transaction-group-fg/transaction-group-fg.component.html | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 8e1ef426b7..a803c0a738 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -36,7 +36,7 @@ export abstract class DoubleTransactionTypeBaseComponent childForm: FormGroup = this.fb.group({}); childValidateService: ValidateService = new ValidateService(); childContactId$: Subject = new BehaviorSubject(''); - childContributionPurposeDescriptionLabel = ''; + childPurposeDescriptionLabel = ''; childNegativeAmountValueOnly = false; childTemplateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; @@ -86,8 +86,7 @@ export abstract class DoubleTransactionTypeBaseComponent } if (this.childTransaction?.transactionType?.generatePurposeDescriptionLabel) { - this.childContributionPurposeDescriptionLabel = - this.childTransaction.transactionType.generatePurposeDescriptionLabel(); + this.childPurposeDescriptionLabel = this.childTransaction.transactionType.generatePurposeDescriptionLabel(); } // Default the child entity type to Committee diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html index 1fb198c998..9355cda0aa 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html @@ -144,7 +144,7 @@

Additional Information

[formSubmitted]="formSubmitted" [templateMap]="childTemplateMap" [descriptionIsSystemGenerated]="isDescriptionSystemGenerated(childTransaction?.transactionType)" - [purposeDescriptionLabel]="this.childContributionPurposeDescriptionLabel" + [purposeDescriptionLabel]="this.childPurposeDescriptionLabel" > diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html index 821358e17a..dfab818109 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html @@ -144,7 +144,7 @@

Additional Information

[formSubmitted]="formSubmitted" [templateMap]="childTemplateMap" [descriptionIsSystemGenerated]="isDescriptionSystemGenerated(childTransaction?.transactionType)" - [purposeDescriptionLabel]="this.childContributionPurposeDescriptionLabel" + [purposeDescriptionLabel]="this.childPurposeDescriptionLabel" > From b8148053ac707083e1aba0674b3a10955e032ad1 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 14 Feb 2023 16:06:29 -0500 Subject: [PATCH 053/115] Handle missing template map exception --- .../double-transaction-type-base.component.ts | 120 ++++++++---------- .../transaction-form.utils.ts | 4 +- .../transaction-type-base.component.spec.ts | 2 +- .../transaction-type-base.component.ts | 4 +- .../transaction-type.model.spec.ts | 4 +- .../transaction-type.model.ts | 2 +- .../app/shared/services/fec-api.service.ts | 4 +- .../src/app/shared/services/report.service.ts | 2 +- .../shared/utils/transaction-type.utils.ts | 2 +- 9 files changed, 66 insertions(+), 78 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index a803c0a738..bd7caeae6b 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -50,6 +50,8 @@ export abstract class DoubleTransactionTypeBaseComponent this.childTransaction = this.transaction?.children[0]; if (this.childTransaction.transactionType?.templateMap) { this.childTemplateMap = this.childTransaction.transactionType.templateMap; + } else { + throw new Error('Fecfile: Template map not found for double transaction component'); } TransactionFormUtils.onInit( this, @@ -69,20 +71,18 @@ export abstract class DoubleTransactionTypeBaseComponent this.childTransaction?.transactionType?.contactTypeOptions ); - if (this.childTemplateMap) { - const amountProperty = this.childTemplateMap.amount; - const amount_schema = this.childTransaction?.transactionType?.schema.properties[amountProperty]; - if (amount_schema?.exclusiveMaximum === 0) { - this.childNegativeAmountValueOnly = true; - this.childForm - .get(amountProperty) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((amount) => { - if (typeof amount === 'number' && amount > 0) { - this.childForm.patchValue({ amount: -1 * amount }); - } - }); - } + const amountProperty = this.childTemplateMap.amount; + const amount_schema = this.childTransaction?.transactionType?.schema.properties[amountProperty]; + if (amount_schema?.exclusiveMaximum === 0) { + this.childNegativeAmountValueOnly = true; + this.childForm + .get(amountProperty) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((amount) => { + if (+amount > 0) { + this.childForm.patchValue({ amount: -1 * amount }); + } + }); } if (this.childTransaction?.transactionType?.generatePurposeDescriptionLabel) { @@ -95,50 +95,38 @@ export abstract class DoubleTransactionTypeBaseComponent } // Parent contribution purpose description updates with child contributor name updates. - if (this.childTemplateMap) { - this.childForm - .get(this.childTemplateMap.organization_name) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.childTransaction && this.childTemplateMap) { - const key = this.childTemplateMap.organization_name as keyof ScheduleTransaction; - ((this.childTransaction as ScheduleTransaction)[key] as string) = value; - } - this.updateParentPurposeDescription(); - }); - this.childForm - .get(this.childTemplateMap.first_name) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.childTransaction && this.childTemplateMap) { - const key = this.childTemplateMap.first_name as keyof ScheduleTransaction; - ((this.childTransaction as ScheduleTransaction)[key] as string) = value; - } - this.updateParentPurposeDescription(); - }); - this.childForm - .get(this.childTemplateMap.last_name) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.childTransaction && this.childTemplateMap) { - const key = this.childTemplateMap.last_name as keyof ScheduleTransaction; - ((this.childTransaction as ScheduleTransaction)[key] as string) = value; - } - this.updateParentPurposeDescription(); - }); - } + this.childForm + .get(this.childTemplateMap.organization_name) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + const key = this.childTemplateMap.organization_name as keyof ScheduleTransaction; + ((this.childTransaction as ScheduleTransaction)[key] as string) = value; + this.updateParentPurposeDescription(); + }); + this.childForm + .get(this.childTemplateMap.first_name) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + const key = this.childTemplateMap.first_name as keyof ScheduleTransaction; + ((this.childTransaction as ScheduleTransaction)[key] as string) = value; + this.updateParentPurposeDescription(); + }); + this.childForm + .get(this.childTemplateMap.last_name) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + const key = this.childTemplateMap.last_name as keyof ScheduleTransaction; + ((this.childTransaction as ScheduleTransaction)[key] as string) = value; + this.updateParentPurposeDescription(); + }); // Child amount must match parent contribution amount - if (this.templateMap) { - this.form - .get(this.templateMap.amount) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((value) => { - if (this.childTemplateMap) { - this.childForm.get(this.childTemplateMap.amount)?.setValue(value); - } - }); - } + this.form + .get(this.templateMap.amount) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + this.childForm.get(this.childTemplateMap.amount)?.setValue(value); + }); } override ngOnDestroy(): void { @@ -147,16 +135,14 @@ export abstract class DoubleTransactionTypeBaseComponent } private updateParentPurposeDescription() { - if (this.childTransaction && this.childTemplateMap) { - (this.childTransaction as ScheduleTransaction).entity_type = this.childForm.get('entity_type')?.value; - - if (this.transaction?.transactionType?.generatePurposeDescription) { - this.form.patchValue({ - [this.templateMap.purpose_description]: this.transaction.transactionType.generatePurposeDescriptionWrapper( - this.transaction - ), - }); - } + (this.childTransaction as ScheduleTransaction).entity_type = this.childForm.get('entity_type')?.value; + + if (this.transaction?.transactionType?.generatePurposeDescription) { + this.form.patchValue({ + [this.templateMap.purpose_description]: this.transaction.transactionType.generatePurposeDescriptionWrapper( + this.transaction + ), + }); } } @@ -191,7 +177,7 @@ export abstract class DoubleTransactionTypeBaseComponent if (payload.children?.length === 1) { this.confirmSave(payload.children[0], this.childForm, this.doSave, navigationEvent, payload, 'childDialog'); } else { - throw new Error('Parent transaction missing child transaction when trying to confirm save.'); + throw new Error('Fecfile: Parent transaction missing child transaction when trying to confirm save.'); } } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 39bbeebb64..eeb5d085bf 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -54,7 +54,7 @@ export class TransactionFormUtils { const templateMap = transaction?.transactionType?.templateMap; if (!templateMap) { - throw new Error('Cannot find template map when initializing transaction form'); + throw new Error('Fecfile: Cannot find template map when initializing transaction form'); } form @@ -112,7 +112,7 @@ export class TransactionFormUtils { formProperties: string[] ): Transaction { if (!transaction) { - throw new Error('Payload transaction not found'); + throw new Error('Fecfile: Payload transaction not found'); } let formValues = validateService.getFormValues(form, formProperties); diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts index 2584f0f69c..e2a3009dfc 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts @@ -117,7 +117,7 @@ describe('TransactionTypeBaseComponent', () => { }); it('#retrieveMemoText should work', () => { - if (!component.transaction) throw new Error('transaction does not exist'); + if (!component.transaction) throw new Error('Fecfile: transaction does not exist'); component.form = new FormGroup({ memo_text_input: new FormControl('memo'), }); diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 892022dcab..ad6608d271 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -59,6 +59,8 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy this.form = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); if (this.transaction?.transactionType?.templateMap) { this.templateMap = this.transaction.transactionType.templateMap; + } else { + throw new Error('Fecfile: Template map not found for transaction component'); } TransactionFormUtils.onInit(this, this.form, this.validateService, this.transaction, this.contactId$); this.parentOnInit(); @@ -182,7 +184,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy }, }); } else { - throw new Error('Cannot find template map when confirming transaction'); + throw new Error('Fecfile: Cannot find template map when confirming transaction'); } } } diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts index a28280dcea..7d3775a713 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts @@ -5,7 +5,7 @@ import { TransactionType } from './transaction-type.model'; describe('Transaction Type Model', () => { it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { const transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); - if (!transaction.transactionType) throw new Error('transactionType method does not exist'); + if (!transaction.transactionType) throw new Error('Fecfile: transactionType method does not exist'); // prettier-ignore const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); // eslint-disable-line @typescript-eslint/no-explicit-any spy.and.returnValue('A short response'); @@ -17,7 +17,7 @@ describe('Transaction Type Model', () => { it('#generatePurposeDescriptionWrapper() should not truncate short purpose descriptions', () => { const transaction = getTestTransactionByType(ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); - if (!transaction.transactionType) throw new Error('transactionType method does not exist'); + if (!transaction.transactionType) throw new Error('Fecfile: transactionType method does not exist'); // prettier-ignore const spy = spyOn(transaction.transactionType, 'generatePurposeDescription'); // eslint-disable-line @typescript-eslint/no-explicit-any spy.and.returnValue( diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts index e9bce928f0..169b021ed4 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts @@ -27,7 +27,7 @@ export abstract class TransactionType { getSchemaName(): string { const schema_name = this?.schema?.$id?.split('/').pop()?.split('.')[0]; if (!schema_name) { - throw new Error('Schema name for transaction type not found.'); + throw new Error('Fecfile: Schema name for transaction type not found.'); } return schema_name; } diff --git a/front-end/src/app/shared/services/fec-api.service.ts b/front-end/src/app/shared/services/fec-api.service.ts index d87137c2a4..862432be96 100644 --- a/front-end/src/app/shared/services/fec-api.service.ts +++ b/front-end/src/app/shared/services/fec-api.service.ts @@ -34,7 +34,7 @@ export class FecApiService { */ public getDetails(committeeId: string | null): Observable { if (!committeeId) { - throw new Error('No Committee Id provided.'); + throw new Error('Fecfile: No Committee Id provided in getDetails()'); } const headers = this.getHeaders(); const params = this.getQueryParams(); @@ -58,7 +58,7 @@ export class FecApiService { */ public getCommitteeRecentFiling(committeeId: string | undefined): Observable { if (!committeeId) { - throw new Error('No Committee Id provided.'); + throw new Error('Fecfile: No Committee Id provided in getCommitteeRecentFiling()'); } const headers = this.getHeaders(); const nightlyEndpointParams = this.getQueryParams({ diff --git a/front-end/src/app/shared/services/report.service.ts b/front-end/src/app/shared/services/report.service.ts index b15f103e73..92f9e1f690 100644 --- a/front-end/src/app/shared/services/report.service.ts +++ b/front-end/src/app/shared/services/report.service.ts @@ -69,7 +69,7 @@ export class ReportService implements TableListService { * @returns Observable */ setActiveReportById(reportId: string | undefined): Observable { - if (!reportId) throw new Error('No Report Id Provided.'); + if (!reportId) throw new Error('Fecfile: No Report Id Provided.'); return this.get(reportId).pipe( tap((report) => { return this.store.dispatch(setActiveReportAction({ payload: report || new F3xSummary() })); diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index eb76782a92..0c6ab9efbb 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -172,5 +172,5 @@ export function getFromJSON(json: any, depth = 2): ScheduleTransaction { // esli if (transactionType.scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); } return SchATransaction.fromJSON(json, depth); // Until 404 resolved - // throw new Error('Missing transaction type identifier when creating a transaction object from a JSON record'); + // throw new Error('Fecfile: Missing transaction type identifier when creating a transaction object from a JSON record'); } From 401400de7e169296f6f4ace59153348343dbf7cd Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 15 Feb 2023 15:10:45 -0500 Subject: [PATCH 054/115] Changes to unit tests --- ...SHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts | 28 ++++++++++--------- ...RTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts | 12 +++----- ...RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts | 1 - ...SHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts | 8 ++---- 4 files changed, 21 insertions(+), 28 deletions(-) diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts index a89c771815..2cde0af957 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts @@ -1,32 +1,34 @@ -import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT } from './PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; +import { Transaction } from '../transaction.model'; describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', () => { - let transactionType: PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT; + let transaction: SchATransaction; beforeEach(() => { - transactionType = new PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT(); + transaction = getTestTransactionByType( + ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT + ) as SchATransaction; }); it('should create an instance', () => { - expect(transactionType).toBeTruthy(); - expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('D'); + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('A'); + expect(transaction.transactionType?.componentGroupId).toBe('D'); }); it('#factory() should return a SchATransaction', () => { - const txn: SchATransaction = transactionType.getNewTransaction(); - expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT); + const txn: SchATransaction | undefined = transaction.transactionType?.getNewTransaction() as SchATransaction; + expect(txn?.form_type).toBe('SA17'); + expect(txn?.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT); }); it('#generatePurposeDescription() should generate a string', () => { - transactionType.transaction = transactionType.getNewTransaction(); - let descrip = transactionType.generatePurposeDescription(); + let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Recount Account (Partnership attributions do not require itemization)'); - transactionType.transaction.children = [transactionType.getNewTransaction()]; - descrip = transactionType.generatePurposeDescription(); + transaction.children = [transaction.transactionType?.getNewTransaction() as Transaction]; + descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Recount Account (See Partnership Attribution(s) below)'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts index fb621642d7..483cf08bb1 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts @@ -1,12 +1,8 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { AggregationGroups } from '../transaction.model'; import { SchaTransactionType } from './SchaTransactionType.model'; export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchaTransactionType { @@ -17,8 +13,8 @@ export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchaTransactionType { override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionLabelNotice = 'If Partnership Receipt is saved without a Partnership Memo, this will read "Recount Account (Partnership attributions do not require itemization)". If a Partnership Memo is added, it will read "Recount Account (See Partnership Attribution(s) below)".'; - override generatePurposeDescription(): string { - if (this.transaction?.children && this.transaction?.children.length > 0) { + override generatePurposeDescription(transaction: SchATransaction): string { + if (transaction.children && transaction.children.length > 0) { return 'Recount Account (See Partnership Attribution(s) below)'; } return 'Recount Account (Partnership attributions do not require itemization)'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts index d33e2c5310..bb4d3646c1 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts @@ -21,7 +21,6 @@ describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO', () => { }); it('#generatePurposeDescription() should generate a string', () => { - transactionType.transaction = transactionType.getNewTransaction(); const descrip = transactionType.generatePurposeDescription(); expect(descrip).toBe('Recount Account Partnership Attribution'); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts index be609c4e11..714cb51fe9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts @@ -1,13 +1,9 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; +import { AggregationGroups } from '../transaction.model'; export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchaTransactionType { componentGroupId = 'A'; From d68a95fc8a656d929e32a119d1fe62abc80a8e38 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 15 Feb 2023 15:16:12 -0500 Subject: [PATCH 055/115] Update package-lock.json --- front-end/package-lock.json | 8039 +++++++++++++++++++++++++++-------- 1 file changed, 6322 insertions(+), 1717 deletions(-) diff --git a/front-end/package-lock.json b/front-end/package-lock.json index b64aac4305..ff542d70b3 100644 --- a/front-end/package-lock.json +++ b/front-end/package-lock.json @@ -72,8 +72,9 @@ }, "node_modules/@ampproject/remapping": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -84,8 +85,9 @@ }, "node_modules/@angular-devkit/architect": { "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", + "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "14.1.3", "rxjs": "6.6.7" @@ -98,8 +100,9 @@ }, "node_modules/@angular-devkit/architect/node_modules/rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -109,13 +112,15 @@ }, "node_modules/@angular-devkit/architect/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-devkit/build-angular": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.3.tgz", + "integrity": "sha512-LZCGd68LCVOwgcGC9DVfjc+wmsTbQmrTMIjWPMXkqufmicEFptR7ocr2dBFJRiVPwqRj+/J+A98cck0GYRC5fw==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "2.2.0", "@angular-devkit/architect": "0.1401.3", @@ -221,8 +226,9 @@ }, "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -232,18 +238,21 @@ }, "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-devkit/build-angular/node_modules/tslib": { "version": "2.4.0", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.3.tgz", + "integrity": "sha512-CCKinKF1JNy/cDE5Psn1N4Tl18k9eecDXJUhL4uix3DUHpP3qsVRta8sVJrmE4a3z8DYN6MCw6M38GRzOZiXCQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/architect": "0.1401.3", "rxjs": "6.6.7" @@ -260,8 +269,9 @@ }, "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -271,13 +281,15 @@ }, "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-devkit/core": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", + "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.11.0", "ajv-formats": "2.1.1", @@ -301,8 +313,9 @@ }, "node_modules/@angular-devkit/core/node_modules/rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -312,13 +325,15 @@ }, "node_modules/@angular-devkit/core/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-devkit/schematics": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.3.tgz", + "integrity": "sha512-i1vuuClGvBzmgQi3qAUWTwLdnGJZ/C8xVeFMHXmgVNZhck9/8xGGusi500SYsGcVzEfetGSJt5hOfUHmVrcpbg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "14.1.3", "jsonc-parser": "3.1.0", @@ -334,8 +349,9 @@ }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -345,13 +361,15 @@ }, "node_modules/@angular-devkit/schematics/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-eslint/builder": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.2.tgz", + "integrity": "sha512-RY/1fKNewm3Wt3ILe9Ue5jTiQRtPR8q+eAmV89EYl07jEQ4RA7oND+vYD0UT9IJDVVHZYs6nlEnb0JmwCQI8kA==", "dev": true, - "license": "MIT", "dependencies": { "@nrwl/devkit": "^14.2.4", "nx": "^14.2.4" @@ -363,13 +381,15 @@ }, "node_modules/@angular-eslint/bundled-angular-compiler": { "version": "14.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.2.tgz", + "integrity": "sha512-Ev001tGwBfy6lFd1IDrAHfW87VUqDmMQY5KWY+LM3dn0PY2XZv1RsBM16tBFbi7EaDeaxeFZg/G8PN5x+anNbg==", + "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.2.tgz", + "integrity": "sha512-TfiXWqaWGysnPB6JstZouvA9tNwIsCLvSIGqniE1U90kX6p5nL8Z09JOiv/9jlYfgAIEgUD48BGMZzDi86voGA==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/utils": "14.0.2", "@typescript-eslint/utils": "5.29.0" @@ -381,8 +401,9 @@ }, "node_modules/@angular-eslint/eslint-plugin-template": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.2.tgz", + "integrity": "sha512-egan0a2GVkubST4H7x2mPMTz3Ee9QXeLEchJyWXdFBZ6Nrpfjaki5dOQYhLU7KyxqhrSW4XugMWPGj2KW2gMxQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "14.0.2", "@typescript-eslint/utils": "5.29.0", @@ -396,8 +417,9 @@ }, "node_modules/@angular-eslint/schematics": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.2.tgz", + "integrity": "sha512-aLS13eaJmQZe02J3oZywvGOKonEhnHRIoJcVYovT4YRQ/QWmDzd7Ye81ta7C2x8YhKUWgU/7YQagBDGEP8XORw==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/eslint-plugin": "14.0.2", "@angular-eslint/eslint-plugin-template": "14.0.2", @@ -411,8 +433,9 @@ }, "node_modules/@angular-eslint/template-parser": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.2.tgz", + "integrity": "sha512-NTXSfL97WVs4GTKPtPcRZfWtvNbhgcIZUvKUTk5ieYiVLqsHF9Y+NlAKBh44AGldM5oCNO4HUfnvOedtqkQ+MA==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "14.0.2", "eslint-scope": "^5.1.0" @@ -424,8 +447,9 @@ }, "node_modules/@angular-eslint/utils": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.2.tgz", + "integrity": "sha512-8cHyQFG3jIHMHBjlqMU9ExAgOFGqbvxUa5EUvdc8wJUXtwhYx5NCQupdSpy/qG8gHiXjxvxinEtACZJQ9/SOwQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "14.0.2", "@typescript-eslint/utils": "5.29.0" @@ -437,7 +461,8 @@ }, "node_modules/@angular/animations": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.1.3.tgz", + "integrity": "sha512-AmnrsRWJxlIQPnnef3MCo9N7bbFmEWvyyDPB8z4UOYDqBwRBHnDn5g1rrVQzLJH7I1O2DLcm/EhWYJrfagQ2aQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -450,7 +475,8 @@ }, "node_modules/@angular/cdk": { "version": "14.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", "dependencies": { "tslib": "^2.3.0" }, @@ -465,8 +491,9 @@ }, "node_modules/@angular/cli": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.3.tgz", + "integrity": "sha512-JAvxOXXGf4VCJUQLe3g0pDNnOnE5E7tJfhqsn77+TGrhFpYPMmZ8z747ohiFXrTqbSe0dWTwOfqwpAA41R1CeA==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/architect": "0.1401.3", "@angular-devkit/core": "14.1.3", @@ -500,7 +527,8 @@ }, "node_modules/@angular/common": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.1.3.tgz", + "integrity": "sha512-t5zidNLcQrgrShBFFsEhvJ6yKw5jwv/Td/AQrknQzrAz3kVBH4dOZGC5jolasFipy/P1DNoG2K+igPCGeskc4w==", "dependencies": { "tslib": "^2.3.0" }, @@ -514,7 +542,8 @@ }, "node_modules/@angular/compiler": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.1.3.tgz", + "integrity": "sha512-QtBHzhGzym8CwGrZLFYsciaLq/F4lxUxNOBDQdrc5Pd/qYiaJ50rrWfmXpqrFR6CC0E0bgzIj0Uxdf+D/VRmWQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -532,8 +561,9 @@ }, "node_modules/@angular/compiler-cli": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.1.3.tgz", + "integrity": "sha512-GJqUfIKuM7bYeR699ceRSa6LT90vEi2q+s+YIwRrlXSFto7xNCmn5bJsYV6XmslvPPTqiLR5w9K8MNC9qYBbxw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -561,7 +591,8 @@ }, "node_modules/@angular/core": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.1.3.tgz", + "integrity": "sha512-V3OJD4cShjLzyJAWQ1ogSW0WhKJwti5zsoT1SQ2RoA5UScBPzZN/F/0n/4IupHeaIC+NfaLX916xKTGWA8G8SQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -575,7 +606,8 @@ }, "node_modules/@angular/forms": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.3.tgz", + "integrity": "sha512-gCN3my9KRp6BLlBGh4uw8NukUPKCl+quroMO2lkvsodF0MA42uhKHO+EImrpLxNMK7lfENIERwthb4mh4G4cFQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -591,7 +623,8 @@ }, "node_modules/@angular/platform-browser": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.3.tgz", + "integrity": "sha512-baEHBj2pCrz5XR9KCb2FaAChWsRrxl9yapDZFNpApucN/OlQpBDVA9UDDvaYeD3PsI8nVL3B6danKUloamd+pw==", "dependencies": { "tslib": "^2.3.0" }, @@ -611,7 +644,8 @@ }, "node_modules/@angular/platform-browser-dynamic": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.1.3.tgz", + "integrity": "sha512-WOWMgXUe8dEXt33jCP8/d8O5NQJKyr+4Dq2sjJ7y1ouCOjJsc9Ybi3y5uMyDCwb6SausGWLJ6w7DweMDWMlsYA==", "dependencies": { "tslib": "^2.3.0" }, @@ -627,7 +661,8 @@ }, "node_modules/@angular/router": { "version": "14.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.1.3.tgz", + "integrity": "sha512-LjWQBaeaGkgFy814booGmQV2eELDynzACGAZUwrpWmdHKo9p9GCi9dYttYXspNDmxoipXAzYvVPSABlMfhuQ+g==", "dependencies": { "tslib": "^2.3.0" }, @@ -643,13 +678,15 @@ }, "node_modules/@assemblyscript/loader": { "version": "0.10.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true }, "node_modules/@babel/code-frame": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -659,16 +696,18 @@ }, "node_modules/@babel/compat-data": { "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -696,16 +735,18 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -717,8 +758,9 @@ }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -730,8 +772,9 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -741,8 +784,9 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "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, - "license": "MIT", "dependencies": { "@babel/helper-explode-assignable-expression": "^7.18.6", "@babel/types": "^7.18.9" @@ -753,8 +797,9 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", @@ -771,16 +816,18 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -800,8 +847,9 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "regexpu-core": "^5.2.1" @@ -815,8 +863,9 @@ }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -831,24 +880,27 @@ }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -858,8 +910,9 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.18.10", "@babel/types": "^7.19.0" @@ -870,8 +923,9 @@ }, "node_modules/@babel/helper-function-name/node_modules/@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -883,8 +937,9 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -894,8 +949,9 @@ }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" }, @@ -905,8 +961,9 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -916,8 +973,9 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -934,8 +992,9 @@ }, "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -947,8 +1006,9 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -958,16 +1018,18 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "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, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -983,8 +1045,9 @@ }, "node_modules/@babel/helper-replace-supers": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.20.7", @@ -999,8 +1062,9 @@ }, "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -1012,8 +1076,9 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.2" }, @@ -1023,8 +1088,9 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.0" }, @@ -1034,8 +1100,9 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -1045,32 +1112,36 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", @@ -1083,8 +1154,9 @@ }, "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -1096,8 +1168,9 @@ }, "node_modules/@babel/helpers": { "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.20.7", "@babel/traverse": "^7.20.13", @@ -1109,8 +1182,9 @@ }, "node_modules/@babel/helpers/node_modules/@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -1122,8 +1196,9 @@ }, "node_modules/@babel/highlight": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -1135,8 +1210,9 @@ }, "node_modules/@babel/parser": { "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -1146,8 +1222,9 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1160,8 +1237,9 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -1176,8 +1254,9 @@ }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", + "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1193,8 +1272,9 @@ }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1208,8 +1288,9 @@ }, "node_modules/@babel/plugin-proposal-class-static-block": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", @@ -1224,8 +1305,9 @@ }, "node_modules/@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1239,8 +1321,9 @@ }, "node_modules/@babel/plugin-proposal-export-namespace-from": { "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1254,8 +1337,9 @@ }, "node_modules/@babel/plugin-proposal-json-strings": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1269,8 +1353,9 @@ }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1284,8 +1369,9 @@ }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1299,8 +1385,9 @@ }, "node_modules/@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1314,8 +1401,9 @@ }, "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -1332,8 +1420,9 @@ }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1347,8 +1436,9 @@ }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -1363,8 +1453,9 @@ }, "node_modules/@babel/plugin-proposal-private-methods": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1378,8 +1469,9 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.20.5", @@ -1395,8 +1487,9 @@ }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1410,8 +1503,9 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1421,8 +1515,9 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1432,8 +1527,9 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1446,8 +1542,9 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1457,8 +1554,9 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1468,8 +1566,9 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" }, @@ -1482,8 +1581,9 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1493,8 +1593,9 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1504,8 +1605,9 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1515,8 +1617,9 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1526,8 +1629,9 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1537,8 +1641,9 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1548,8 +1653,9 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1559,8 +1665,9 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1573,8 +1680,9 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1587,8 +1695,9 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" }, @@ -1601,8 +1710,9 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1617,8 +1727,9 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1631,8 +1742,9 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" }, @@ -1645,8 +1757,9 @@ }, "node_modules/@babel/plugin-transform-classes": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.20.7", @@ -1667,8 +1780,9 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/template": "^7.20.7" @@ -1682,8 +1796,9 @@ }, "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -1695,8 +1810,9 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" }, @@ -1709,8 +1825,9 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1724,8 +1841,9 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1738,8 +1856,9 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1753,8 +1872,9 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1767,8 +1887,9 @@ }, "node_modules/@babel/plugin-transform-function-name": { "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, - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-function-name": "^7.18.9", @@ -1783,8 +1904,9 @@ }, "node_modules/@babel/plugin-transform-literals": { "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1797,8 +1919,9 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1811,8 +1934,9 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.20.11", "@babel/helper-plugin-utils": "^7.20.2" @@ -1826,8 +1950,9 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.20.11", "@babel/helper-plugin-utils": "^7.20.2", @@ -1842,8 +1967,9 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-module-transforms": "^7.20.11", @@ -1859,8 +1985,9 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1874,8 +2001,9 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.20.5", "@babel/helper-plugin-utils": "^7.20.2" @@ -1889,8 +2017,9 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1903,8 +2032,9 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-replace-supers": "^7.18.6" @@ -1918,8 +2048,9 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" }, @@ -1932,8 +2063,9 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1946,8 +2078,9 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "regenerator-transform": "^0.15.1" @@ -1961,8 +2094,9 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1975,8 +2109,9 @@ }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", + "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1994,16 +2129,18 @@ }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2016,8 +2153,9 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" @@ -2031,8 +2169,9 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2045,8 +2184,9 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2059,8 +2199,9 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2073,8 +2214,9 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2087,8 +2229,9 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -2102,8 +2245,9 @@ }, "node_modules/@babel/preset-env": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", + "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.18.6", "@babel/helper-compilation-targets": "^7.18.6", @@ -2190,16 +2334,18 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2211,10 +2357,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", + "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", "dev": true, - "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -2224,8 +2377,9 @@ }, "node_modules/@babel/template": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.6", @@ -2237,8 +2391,9 @@ }, "node_modules/@babel/traverse": { "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", @@ -2257,8 +2412,9 @@ }, "node_modules/@babel/traverse/node_modules/@babel/generator": { "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -2270,8 +2426,9 @@ }, "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2283,8 +2440,9 @@ }, "node_modules/@babel/types": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -2296,16 +2454,18 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/@csstools/postcss-cascade-layers": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" @@ -2323,8 +2483,9 @@ }, "node_modules/@csstools/postcss-color-function": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2342,8 +2503,9 @@ }, "node_modules/@csstools/postcss-font-format-keywords": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2360,8 +2522,9 @@ }, "node_modules/@csstools/postcss-hwb-function": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2378,8 +2541,9 @@ }, "node_modules/@csstools/postcss-ic-unit": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2397,8 +2561,9 @@ }, "node_modules/@csstools/postcss-is-pseudo-class": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -2416,8 +2581,9 @@ }, "node_modules/@csstools/postcss-normalize-display-values": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2434,8 +2600,9 @@ }, "node_modules/@csstools/postcss-oklab-function": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2453,8 +2620,9 @@ }, "node_modules/@csstools/postcss-progressive-custom-properties": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2467,8 +2635,9 @@ }, "node_modules/@csstools/postcss-stepped-value-functions": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2485,8 +2654,9 @@ }, "node_modules/@csstools/postcss-trigonometric-functions": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2503,8 +2673,9 @@ }, "node_modules/@csstools/postcss-unset-value": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -2518,8 +2689,9 @@ }, "node_modules/@csstools/selector-specificity": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", + "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -2534,8 +2706,9 @@ }, "node_modules/@cypress-audit/lighthouse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@cypress-audit/lighthouse/-/lighthouse-1.3.1.tgz", + "integrity": "sha512-qBLlAgiYcQsCHUFRB7aFIXhk7EipF/ZtoBLruadKR4wkZhDyZJ4QtJh1YqCny4zi4Iy7WCG1tXQfH62eabLS4A==", "dev": true, - "license": "MIT", "dependencies": { "@cypress-audit/shared": "^1.3.1", "lighthouse": "^9.5.0" @@ -2543,13 +2716,15 @@ }, "node_modules/@cypress-audit/shared": { "version": "1.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@cypress-audit/shared/-/shared-1.3.1.tgz", + "integrity": "sha512-iE4yGh5hw+ICrP3xZXYmDbNHECyAXyKbpRQ604FvMOxrXQVCBZq24MSKKLLUBAgpcAkv09XCW3utx39OYozVTA==", + "dev": true }, "node_modules/@cypress/request": { "version": "2.88.11", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", + "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2576,8 +2751,9 @@ }, "node_modules/@cypress/schematic": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-1.7.0.tgz", + "integrity": "sha512-CouQrVlZ+uHVVBQtmNoMYU9LyoSAmQTOLDpVjrdTdMPpJH1mWnHCL5OCMt+FZLR+43KRiWEvDUjNqSza11oGsQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/architect": "^0.1202.10", "@angular-devkit/core": "^12.2.17", @@ -2593,8 +2769,9 @@ }, "node_modules/@cypress/schematic/node_modules/@angular-devkit/architect": { "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, - "license": "MIT", "dependencies": { "@angular-devkit/core": "12.2.18", "rxjs": "6.6.7" @@ -2607,8 +2784,9 @@ }, "node_modules/@cypress/schematic/node_modules/@angular-devkit/core": { "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.18.tgz", + "integrity": "sha512-GDLHGe9HEY5SRS+NrKr14C8aHsRCiBFkBFSSbeohgLgcgSXzZHFoU84nDWrl3KZNP8oqcUSv5lHu6dLcf2fnww==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.6.2", "ajv-formats": "2.1.0", @@ -2625,8 +2803,9 @@ }, "node_modules/@cypress/schematic/node_modules/@angular-devkit/schematics": { "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.18.tgz", + "integrity": "sha512-bZ9NS5PgoVfetRC6WeQBHCY5FqPZ9y2TKHUo12sOB2YSL3tgWgh1oXyP8PtX34gasqsLjNULxEQsAQYEsiX/qQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "12.2.18", "ora": "5.4.1", @@ -2640,8 +2819,9 @@ }, "node_modules/@cypress/schematic/node_modules/@schematics/angular": { "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.18.tgz", + "integrity": "sha512-niRS9Ly9y8uI0YmTSbo8KpdqCCiZ/ATMZWeS2id5M8JZvfXbngwiqJvojdSol0SWU+n1W4iA+lJBdt4gSKlD5w==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "12.2.18", "@angular-devkit/schematics": "12.2.18", @@ -2655,8 +2835,9 @@ }, "node_modules/@cypress/schematic/node_modules/ajv": { "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -2670,8 +2851,9 @@ }, "node_modules/@cypress/schematic/node_modules/ajv-formats": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", + "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -2686,21 +2868,24 @@ }, "node_modules/@cypress/schematic/node_modules/jsonc-parser": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true }, "node_modules/@cypress/schematic/node_modules/magic-string": { "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, - "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.4" } }, "node_modules/@cypress/schematic/node_modules/rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -2710,21 +2895,24 @@ }, "node_modules/@cypress/schematic/node_modules/source-map": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/@cypress/schematic/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -2732,24 +2920,27 @@ }, "node_modules/@cypress/xvfb/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2770,8 +2961,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2785,13 +2977,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2799,8 +2993,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -2813,8 +3008,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2824,13 +3020,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2840,8 +3038,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2851,13 +3050,15 @@ }, "node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -2869,8 +3070,9 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2878,8 +3080,9 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2889,8 +3092,9 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -2901,13 +3105,15 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2921,16 +3127,18 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2941,24 +3149,27 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -2966,8 +3177,9 @@ }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2979,13 +3191,15 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -2993,12 +3207,14 @@ }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true }, "node_modules/@ngrx/effects": { "version": "14.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-14.3.3.tgz", + "integrity": "sha512-bP7rIHlu1KAj5Wm0TWR7Q8VlOQOBu8uiN/fDP3Lqi8FwVW6HOq9eBGcFwJGyqwVAmulsvLFB68MhpMYg2W78+w==", "dependencies": { "tslib": "^2.0.0" }, @@ -3010,7 +3226,8 @@ }, "node_modules/@ngrx/store": { "version": "14.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-14.3.3.tgz", + "integrity": "sha512-VhPDR2a5OQJfrVRah3vdJgL/F6UC8NU/X7lxKFqBW3NC+pmlIeFO/y8jLrZOKBXwG45tY9wrg15S70nEGoZtHA==", "dependencies": { "tslib": "^2.0.0" }, @@ -3021,8 +3238,9 @@ }, "node_modules/@ngtools/webpack": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.3.tgz", + "integrity": "sha512-tP2aiWKezhOVcR/PhVHcxKohO4ShKrhD42wgbJPbcqHeenOv1Hf5nW1nyUviqeF8QbVmPdBPF/ZOB8hIq5o6sw==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || >=16.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -3036,8 +3254,9 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3048,16 +3267,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3068,8 +3289,9 @@ }, "node_modules/@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -3080,8 +3302,9 @@ }, "node_modules/@npmcli/git": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^3.0.0", "lru-cache": "^7.4.4", @@ -3099,16 +3322,18 @@ }, "node_modules/@npmcli/git/node_modules/lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "license": "ISC", "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" @@ -3122,8 +3347,10 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -3134,16 +3361,18 @@ }, "node_modules/@npmcli/node-gyp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/promise-spawn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, - "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" }, @@ -3153,8 +3382,9 @@ }, "node_modules/@npmcli/run-script": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", @@ -3168,16 +3398,18 @@ }, "node_modules/@nrwl/cli": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", + "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", "dev": true, - "license": "MIT", "dependencies": { "nx": "14.8.6" } }, "node_modules/@nrwl/devkit": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", + "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", "dev": true, - "license": "MIT", "dependencies": { "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", @@ -3190,8 +3422,9 @@ }, "node_modules/@nrwl/tao": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", + "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", "dev": true, - "license": "MIT", "dependencies": { "nx": "14.8.6" }, @@ -3201,9 +3434,10 @@ }, "node_modules/@parcel/watcher": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-addon-api": "^3.2.1", "node-gyp-build": "^4.3.0" @@ -3218,8 +3452,9 @@ }, "node_modules/@phenomnomnominal/tsquery": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", "dev": true, - "license": "MIT", "dependencies": { "esquery": "^1.0.1" }, @@ -3229,7 +3464,8 @@ }, "node_modules/@popperjs/core": { "version": "2.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -3237,8 +3473,9 @@ }, "node_modules/@schematics/angular": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz", + "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "14.1.3", "@angular-devkit/schematics": "14.1.3", @@ -3252,8 +3489,9 @@ }, "node_modules/@sentry/core": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/hub": "6.19.7", "@sentry/minimal": "6.19.7", @@ -3267,13 +3505,15 @@ }, "node_modules/@sentry/core/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@sentry/hub": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/types": "6.19.7", "@sentry/utils": "6.19.7", @@ -3285,13 +3525,15 @@ }, "node_modules/@sentry/hub/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@sentry/minimal": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/hub": "6.19.7", "@sentry/types": "6.19.7", @@ -3303,13 +3545,15 @@ }, "node_modules/@sentry/minimal/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@sentry/node": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/core": "6.19.7", "@sentry/hub": "6.19.7", @@ -3326,21 +3570,24 @@ }, "node_modules/@sentry/node/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@sentry/types": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=6" } }, "node_modules/@sentry/utils": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/types": "6.19.7", "tslib": "^1.9.3" @@ -3351,26 +3598,30 @@ }, "node_modules/@sentry/utils/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true }, "node_modules/@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/@types/body-parser": { "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, - "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -3378,24 +3629,27 @@ }, "node_modules/@types/bonjour": { "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", "dev": true, - "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -3403,21 +3657,24 @@ }, "node_modules/@types/cookie": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true }, "node_modules/@types/cors": { "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/eslint": { - "version": "8.21.0", + "version": "8.21.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", + "integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -3425,8 +3682,9 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -3434,13 +3692,15 @@ }, "node_modules/@types/estree": { "version": "0.0.51", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -3450,8 +3710,9 @@ }, "node_modules/@types/express-serve-static-core": { "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3460,95 +3721,111 @@ }, "node_modules/@types/http-proxy": { "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/intl-tel-input": { "version": "17.0.6", + "resolved": "https://registry.npmjs.org/@types/intl-tel-input/-/intl-tel-input-17.0.6.tgz", + "integrity": "sha512-Xqkfun/71N3wqvnwFzZiBacC3JsHHgYWjOEXxzl91nXrm/b/DLhDWM7baXOZksfLwggyOsn/McT1/neJejXmVg==", "dev": true, - "license": "MIT", "dependencies": { "@types/jquery": "*" } }, "node_modules/@types/jasmine": { "version": "3.10.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.7.tgz", + "integrity": "sha512-brLuHhITMz4YV2IxLstAJtyRJgtWfLqFKiqiJFvFWMSmydpAmn42CE4wfw7ywkSk02UrufhtzipTcehk8FctoQ==", + "dev": true }, "node_modules/@types/jquery": { "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", + "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", "dev": true, - "license": "MIT", "dependencies": { "@types/sizzle": "*" } }, "node_modules/@types/json-schema": { "version": "7.0.11", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "node_modules/@types/lodash": { "version": "4.14.191", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", + "dev": true }, "node_modules/@types/luxon": { "version": "2.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz", + "integrity": "sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==", + "dev": true }, "node_modules/@types/mime": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true }, "node_modules/@types/node": { "version": "12.20.55", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "node_modules/@types/qs": { "version": "6.9.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true }, "node_modules/@types/range-parser": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true }, "node_modules/@types/retry": { "version": "0.12.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true }, "node_modules/@types/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, - "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, - "license": "MIT", "dependencies": { "@types/mime": "*", "@types/node": "*" @@ -3556,34 +3833,39 @@ }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true }, "node_modules/@types/sizzle": { "version": "2.3.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true }, "node_modules/@types/sockjs": { "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/ws": { "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -3591,8 +3873,9 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.11.0.tgz", + "integrity": "sha512-HJh33bgzXe6jGRocOj4FmefD7hRY4itgjzOrSs3JPrTNXsX7j5+nQPciAUj/1nZtwo2kAc3C75jZO+T23gzSGw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/scope-manager": "5.11.0", "@typescript-eslint/type-utils": "5.11.0", @@ -3623,8 +3906,9 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", + "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.11.0", @@ -3646,8 +3930,9 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.11.0.tgz", + "integrity": "sha512-x0DCjetHZYBRovJdr3U0zG9OOdNXUaFLJ82ehr1AlkArljJuwEsgnud+Q7umlGDFLFrs8tU8ybQDFocp/eX8mQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.11.0", "@typescript-eslint/types": "5.11.0", @@ -3672,8 +3957,9 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz", + "integrity": "sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.11.0", "@typescript-eslint/visitor-keys": "5.11.0" @@ -3688,8 +3974,9 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.11.0.tgz", + "integrity": "sha512-wDqdsYO6ofLaD4DsGZ0jGwxp4HrzD2YKulpEZXmgN3xo4BHJwf7kq49JTRpV0Gx6bxkSUmc9s0EIK1xPbFFpIA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/utils": "5.11.0", "debug": "^4.3.2", @@ -3713,8 +4000,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", + "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.11.0", @@ -3736,8 +4024,9 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.11.0.tgz", + "integrity": "sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3748,8 +4037,9 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz", + "integrity": "sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.11.0", "@typescript-eslint/visitor-keys": "5.11.0", @@ -3774,8 +4064,9 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.29.0", @@ -3797,8 +4088,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.29.0", "@typescript-eslint/visitor-keys": "5.29.0" @@ -3813,8 +4105,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3825,8 +4118,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.29.0", "@typescript-eslint/visitor-keys": "5.29.0", @@ -3851,8 +4145,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.29.0", "eslint-visitor-keys": "^3.3.0" @@ -3867,8 +4162,9 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz", + "integrity": "sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.11.0", "eslint-visitor-keys": "^3.0.0" @@ -3883,8 +4179,9 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -3892,23 +4189,27 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -3917,13 +4218,15 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3933,29 +4236,33 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3969,8 +4276,9 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -3981,8 +4289,9 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3992,8 +4301,9 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -4005,8 +4315,9 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -4014,23 +4325,27 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.38", + "version": "3.0.0-rc.39", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", + "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "js-yaml": "^3.10.0", "tslib": "^2.4.0" @@ -4041,8 +4356,9 @@ }, "node_modules/@zkochan/js-yaml": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4052,23 +4368,27 @@ }, "node_modules/@zkochan/js-yaml/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/abab": { "version": "2.0.6", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true }, "node_modules/abbrev": { "version": "1.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/accepts": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4079,8 +4399,9 @@ }, "node_modules/acorn": { "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4090,24 +4411,27 @@ }, "node_modules/acorn-import-assertions": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, - "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -4118,8 +4442,9 @@ }, "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4131,8 +4456,9 @@ }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -4142,8 +4468,9 @@ }, "node_modules/agentkeepalive": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -4155,16 +4482,18 @@ }, "node_modules/agentkeepalive/node_modules/depd": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4175,7 +4504,8 @@ }, "node_modules/ajv": { "version": "8.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -4189,8 +4519,9 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4205,8 +4536,9 @@ }, "node_modules/ajv-keywords": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -4216,16 +4548,18 @@ }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4238,27 +4572,30 @@ }, "node_modules/ansi-html-community": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, "engines": [ "node >= 0.8.0" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -4268,8 +4605,9 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4280,11 +4618,14 @@ }, "node_modules/aproba": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/arch": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true, "funding": [ { @@ -4299,13 +4640,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/are-we-there-yet": { "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, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4316,92 +4657,105 @@ }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/aria-query": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=6.0" } }, "node_modules/array-find-index": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array-flatten": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/asap": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true }, "node_modules/asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async": { "version": "3.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/atob": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true, - "license": "(MIT OR Apache-2.0)", "bin": { "atob": "bin/atob.js" }, @@ -4411,6 +4765,8 @@ }, "node_modules/autoprefixer": { "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "dev": true, "funding": [ { @@ -4422,7 +4778,6 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } ], - "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "caniuse-lite": "^1.0.30001426", @@ -4443,29 +4798,33 @@ }, "node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.12.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true }, "node_modules/axe-core": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", "dev": true, - "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axios": { - "version": "1.3.2", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", "dev": true, - "license": "MIT", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -4474,8 +4833,9 @@ }, "node_modules/axios/node_modules/form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -4487,21 +4847,24 @@ }, "node_modules/axios/node_modules/proxy-from-env": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/axobject-query": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=6.0" } }, "node_modules/babel-loader": { "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, - "license": "MIT", "dependencies": { "find-cache-dir": "^3.3.1", "loader-utils": "^2.0.0", @@ -4518,8 +4881,9 @@ }, "node_modules/babel-loader/node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4531,8 +4895,9 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -4546,8 +4911,9 @@ }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -4559,16 +4925,18 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { "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, - "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" @@ -4579,8 +4947,9 @@ }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.1" }, @@ -4590,11 +4959,14 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -4609,50 +4981,55 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/base64id": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, - "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, "node_modules/batch": { "version": "0.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/big.js": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4661,18 +5038,21 @@ }, "node_modules/blob-util": { "version": "2.0.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true }, "node_modules/bluebird": { "version": "3.7.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "node_modules/body-parser": { "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -4694,21 +5074,24 @@ }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/body-parser/node_modules/qs": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -4721,8 +5104,9 @@ }, "node_modules/bonjour-service": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz", + "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==", "dev": true, - "license": "MIT", "dependencies": { "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", @@ -4732,12 +5116,14 @@ }, "node_modules/boolbase": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true }, "node_modules/bootstrap": { "version": "5.1.3", - "license": "MIT", + "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" @@ -4748,16 +5134,18 @@ }, "node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -4767,12 +5155,15 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/browserslist": { "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "funding": [ { @@ -4784,7 +5175,6 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001449", "electron-to-chromium": "^1.4.284", @@ -4800,6 +5190,8 @@ }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -4815,7 +5207,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4823,37 +5214,42 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, "node_modules/bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -4880,24 +5276,27 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/cachedir": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -4908,22 +5307,26 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001450", + "version": "1.0.30001452", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz", + "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==", "dev": true, "funding": [ { @@ -4934,18 +5337,19 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/caseless": { "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4957,19 +5361,23 @@ }, "node_modules/chardet": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, "node_modules/check-more-types": { "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -4977,7 +5385,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4996,16 +5403,18 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-launcher": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", + "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -5021,8 +5430,9 @@ }, "node_modules/chrome-launcher/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -5032,14 +5442,17 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { - "version": "3.7.1", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, "funding": [ { @@ -5047,27 +5460,29 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/class-transformer": { "version": "0.5.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -5077,8 +5492,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==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -5088,8 +5504,9 @@ }, "node_modules/cli-table3": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -5102,8 +5519,9 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -5117,16 +5535,18 @@ }, "node_modules/cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "license": "ISC", "engines": { "node": ">= 10" } }, "node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -5135,16 +5555,18 @@ }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5156,42 +5578,48 @@ }, "node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/colorette": { "version": "2.0.19", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5201,29 +5629,33 @@ }, "node_modules/commander": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/common-tags": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, "node_modules/compressible": { "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, - "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5233,8 +5665,9 @@ }, "node_modules/compression": { "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5250,39 +5683,45 @@ }, "node_modules/compression/node_modules/bytes": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/configstore": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", @@ -5297,8 +5736,9 @@ }, "node_modules/connect": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -5311,34 +5751,39 @@ }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/connect/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/connect/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/content-disposition": { "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -5348,34 +5793,39 @@ }, "node_modules/content-type": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "1.9.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true }, "node_modules/copy-anything": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, - "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -5385,8 +5835,9 @@ }, "node_modules/copy-webpack-plugin": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, - "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -5408,8 +5859,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5419,8 +5871,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/globby": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, - "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.2.11", @@ -5437,8 +5890,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -5455,8 +5909,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/slash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -5465,11 +5920,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.27.2", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz", + "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.21.5" }, "funding": { "type": "opencollective", @@ -5478,13 +5934,15 @@ }, "node_modules/core-util-is": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "node_modules/cors": { "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, - "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -5495,8 +5953,9 @@ }, "node_modules/cosmiconfig": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5510,8 +5969,9 @@ }, "node_modules/critters": { "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", "dev": true, - "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", "css-select": "^4.2.0", @@ -5523,8 +5983,9 @@ }, "node_modules/critters/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5537,8 +5998,9 @@ }, "node_modules/critters/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5552,8 +6014,9 @@ }, "node_modules/critters/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5563,26 +6026,30 @@ }, "node_modules/critters/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/critters/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/critters/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true }, "node_modules/critters/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5592,16 +6059,18 @@ }, "node_modules/cross-fetch": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, - "license": "MIT", "dependencies": { "node-fetch": "2.6.7" } }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5613,21 +6082,24 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/csp_evaluator": { "version": "1.1.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz", + "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==", + "dev": true }, "node_modules/css": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -5636,8 +6108,9 @@ }, "node_modules/css-blank-pseudo": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -5653,8 +6126,9 @@ }, "node_modules/css-has-pseudo": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -5670,8 +6144,9 @@ }, "node_modules/css-loader": { "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.7", @@ -5695,8 +6170,9 @@ }, "node_modules/css-prefers-color-scheme": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, - "license": "CC0-1.0", "bin": { "css-prefers-color-scheme": "dist/cli.cjs" }, @@ -5709,8 +6185,9 @@ }, "node_modules/css-select": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -5724,8 +6201,9 @@ }, "node_modules/css-what": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -5735,16 +6213,18 @@ }, "node_modules/css/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/cssdb": { "version": "6.6.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", + "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", "dev": true, - "license": "CC0-1.0", "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" @@ -5752,8 +6232,9 @@ }, "node_modules/cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5763,27 +6244,31 @@ }, "node_modules/cssom": { "version": "0.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, "node_modules/cssstyle": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", + "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", "dev": true, - "license": "MIT", "dependencies": { "cssom": "0.3.x" } }, "node_modules/custom-event": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true }, "node_modules/cypress": { "version": "10.11.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", + "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", @@ -5836,9 +6321,10 @@ } }, "node_modules/cypress-mochawesome-reporter": { - "version": "3.2.3", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cypress-mochawesome-reporter/-/cypress-mochawesome-reporter-3.3.0.tgz", + "integrity": "sha512-X4HU1JpuB62MXLh46660KmIs/L6noWV2KpxaXPDorz1zwgj26NN+BPCLP80D9cCFUwX3hNH0pKFZDwVR7vM8wg==", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "^10.0.1", "mochawesome": "^7.1.3", @@ -5848,14 +6334,18 @@ "engines": { "node": ">=14" }, + "funding": { + "url": "https://github.com/sponsors/LironEr" + }, "peerDependencies": { "cypress": ">=6.2.0" } }, "node_modules/cypress-mochawesome-reporter/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==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5867,13 +6357,15 @@ }, "node_modules/cypress/node_modules/@types/node": { "version": "14.18.36", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5886,8 +6378,9 @@ }, "node_modules/cypress/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5901,8 +6394,9 @@ }, "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5912,8 +6406,9 @@ }, "node_modules/cypress/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5923,21 +6418,24 @@ }, "node_modules/cypress/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/cypress/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cypress/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5950,8 +6448,9 @@ }, "node_modules/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -5961,29 +6460,33 @@ }, "node_modules/date-format": { "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/dateformat": { "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/dayjs": { "version": "1.11.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "dev": true }, "node_modules/debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -5998,16 +6501,18 @@ }, "node_modules/debuglog": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -6018,28 +6523,32 @@ }, "node_modules/decode-uri-component": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deepmerge": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "engines": { "node": ">=0.10.0" } }, "node_modules/default-gateway": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -6049,8 +6558,9 @@ }, "node_modules/default-gateway/node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6071,8 +6581,9 @@ }, "node_modules/default-gateway/node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6082,16 +6593,18 @@ }, "node_modules/default-gateway/node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, - "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -6101,45 +6614,51 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/dependency-graph": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/destroy": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -6147,18 +6666,21 @@ }, "node_modules/detect-node": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true }, "node_modules/devtools-protocol": { "version": "0.0.981744", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "dev": true }, "node_modules/dezalgo": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, - "license": "ISC", "dependencies": { "asap": "^2.0.0", "wrappy": "1" @@ -6166,21 +6688,24 @@ }, "node_modules/di": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true }, "node_modules/diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6190,13 +6715,15 @@ }, "node_modules/dns-equal": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true }, "node_modules/dns-packet": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, - "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -6206,8 +6733,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6217,8 +6745,9 @@ }, "node_modules/dom-serialize": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, - "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -6228,8 +6757,9 @@ }, "node_modules/dom-serializer": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -6241,19 +6771,21 @@ }, "node_modules/domelementtype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domhandler": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -6266,8 +6798,9 @@ }, "node_modules/domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -6279,8 +6812,9 @@ }, "node_modules/dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -6290,21 +6824,24 @@ }, "node_modules/dotenv": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=10" } }, "node_modules/duplexer": { "version": "0.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, "node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, - "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -6312,13 +6849,15 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true }, "node_modules/ejs": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -6330,35 +6869,40 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.288", - "dev": true, - "license": "ISC" + "version": "1.4.297", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.297.tgz", + "integrity": "sha512-dTXLXBdzfDYnZYq+bLer21HrFsEkzlR2OSIOsR+qroDmhmQU3i4T4KdY0Lcp83ZId3HnWTpPAEfhaJtVxmS/dQ==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/encodeurl": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -6366,8 +6910,9 @@ }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -6378,16 +6923,18 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io": { "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", + "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -6406,16 +6953,18 @@ }, "node_modules/engine.io-parser": { "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io/node_modules/ws": { "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -6434,8 +6983,9 @@ }, "node_modules/enhanced-resolve": { "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6446,8 +6996,9 @@ }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -6457,34 +7008,39 @@ }, "node_modules/ent": { "version": "2.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true }, "node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -6495,22 +7051,25 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-module-lexer": { "version": "0.9.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, "node_modules/esbuild": { "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", + "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "bin": { "esbuild": "bin/esbuild" @@ -6541,57 +7100,367 @@ "esbuild-windows-arm64": "0.14.49" } }, - "node_modules/esbuild-linux-64": { + "node_modules/esbuild-android-64": { "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", + "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-wasm": { + "node_modules/esbuild-android-arm64": { "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", + "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, + "optional": true, + "os": [ + "android" + ], "engines": { "node": ">=12" } }, - "node_modules/escalade": { - "version": "3.1.1", + "node_modules/esbuild-darwin-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", + "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", + "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "engines": { + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", + "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", + "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", + "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", + "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", + "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", + "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", + "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", + "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", + "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", + "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", + "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", + "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", + "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", + "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", + "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", + "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", + "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "8.33.0", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, - "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.4.1", "@humanwhocodes/config-array": "^0.11.8", @@ -6645,8 +7514,9 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -6657,8 +7527,9 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -6674,24 +7545,27 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6705,8 +7579,9 @@ }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6719,13 +7594,15 @@ }, "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6733,8 +7610,9 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6748,8 +7626,9 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6759,13 +7638,15 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6775,8 +7656,9 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -6787,16 +7669,18 @@ }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -6810,8 +7694,9 @@ }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -6821,8 +7706,9 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -6835,16 +7721,18 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -6854,13 +7742,15 @@ }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -6873,8 +7763,9 @@ }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6884,8 +7775,9 @@ }, "node_modules/eslint/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6898,8 +7790,9 @@ }, "node_modules/eslint/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -6912,8 +7805,9 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6923,8 +7817,9 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6934,8 +7829,9 @@ }, "node_modules/espree": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", @@ -6950,8 +7846,9 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -6962,8 +7859,9 @@ }, "node_modules/esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -6973,16 +7871,18 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -6992,63 +7892,72 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/eventemitter-asyncresource": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true }, "node_modules/eventemitter2": { "version": "6.4.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true }, "node_modules/eventemitter3": { "version": "4.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -7069,8 +7978,9 @@ }, "node_modules/executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.2.0" }, @@ -7080,8 +7990,9 @@ }, "node_modules/express": { "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -7121,29 +8032,33 @@ }, "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true }, "node_modules/express/node_modules/cookie": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/finalhandler": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7159,13 +8074,15 @@ }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/express/node_modules/qs": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -7178,21 +8095,24 @@ }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/extend": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "node_modules/external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -7204,8 +8124,9 @@ }, "node_modules/external-editor/node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -7215,8 +8136,9 @@ }, "node_modules/extract-zip": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -7234,20 +8156,23 @@ }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ], - "license": "MIT" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -7261,26 +8186,30 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fastq": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -7290,8 +8219,9 @@ }, "node_modules/fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, - "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -7308,8 +8238,9 @@ }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -7322,8 +8253,9 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -7333,16 +8265,18 @@ }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7352,8 +8286,9 @@ }, "node_modules/finalhandler": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7369,21 +8304,24 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/finalhandler/node_modules/on-finished": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -7393,8 +8331,9 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -7409,8 +8348,9 @@ }, "node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -7421,16 +8361,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -7441,11 +8383,14 @@ }, "node_modules/flatted": { "version": "3.2.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true }, "node_modules/follow-redirects": { "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -7453,7 +8398,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -7465,16 +8409,18 @@ }, "node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -7486,16 +8432,18 @@ }, "node_modules/forwarded": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fraction.js": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true, - "license": "MIT", "engines": { "node": "*" }, @@ -7506,21 +8454,24 @@ }, "node_modules/fresh": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fs-constants": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -7533,8 +8484,9 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7544,33 +8496,53 @@ }, "node_modules/fs-monkey": { "version": "1.0.3", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "ISC" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/fsu": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz", + "integrity": "sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==", + "dev": true }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true }, "node_modules/gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -7587,24 +8559,27 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -7616,16 +8591,18 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -7638,24 +8615,27 @@ }, "node_modules/getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, - "license": "MIT", "dependencies": { "async": "^3.2.0" } }, "node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7672,8 +8652,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -7683,13 +8664,15 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/global-dirs": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, - "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -7702,24 +8685,27 @@ }, "node_modules/global-dirs/node_modules/ini": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -7737,23 +8723,27 @@ }, "node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/grapheme-splitter": { "version": "1.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "node_modules/handle-thing": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true }, "node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -7763,16 +8753,18 @@ }, "node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/has-symbols": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7782,13 +8774,15 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/hdr-histogram-js": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", "dev": true, - "license": "BSD", "dependencies": { "@assemblyscript/loader": "^0.10.1", "base64-js": "^1.2.0", @@ -7797,13 +8791,15 @@ }, "node_modules/hdr-histogram-percentiles-obj": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "peer": true, "bin": { "he": "bin/he" @@ -7811,8 +8807,9 @@ }, "node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -7822,16 +8819,18 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/hpack.js": { "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -7841,8 +8840,9 @@ }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7855,41 +8855,48 @@ }, "node_modules/hpack.js/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/html-entities": { "version": "2.3.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true }, "node_modules/http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, - "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -7903,26 +8910,30 @@ }, "node_modules/http-errors/node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/http-link-header": { "version": "0.8.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-0.8.0.tgz", + "integrity": "sha512-qsh/wKe1Mk1vtYEFr+LpQBFWTO1gxZQBdii2D0Umj+IUQ23r5sT088Rhpq4XzpSyIpaX7vwjB8Rrtx8u9JTg+Q==", + "dev": true }, "node_modules/http-parser-js": { "version": "0.5.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true }, "node_modules/http-proxy": { "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -7934,8 +8945,9 @@ }, "node_modules/http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -7947,8 +8959,9 @@ }, "node_modules/http-proxy-middleware": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, - "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -7970,8 +8983,9 @@ }, "node_modules/http-signature": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -7983,8 +8997,9 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -7995,24 +9010,27 @@ }, "node_modules/human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } }, "node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8022,8 +9040,9 @@ }, "node_modules/icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -8033,6 +9052,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -8047,21 +9068,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^5.0.1" }, @@ -8071,8 +9093,9 @@ }, "node_modules/image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -8083,18 +9106,21 @@ }, "node_modules/image-ssim": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", + "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==", + "dev": true }, "node_modules/immutable": { "version": "4.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", + "dev": true }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8108,37 +9134,42 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8146,21 +9177,24 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/inquirer": { "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -8184,8 +9218,9 @@ }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8198,8 +9233,9 @@ }, "node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8213,8 +9249,9 @@ }, "node_modules/inquirer/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8224,21 +9261,24 @@ }, "node_modules/inquirer/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inquirer/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8248,43 +9288,51 @@ }, "node_modules/intl-messageformat": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-4.4.0.tgz", + "integrity": "sha512-z+Bj2rS3LZSYU4+sNitdHrwnBhr0wO80ZJSW8EzKDBowwUe3Q/UsvgCGjrwa+HPzoGCLEb9HAjfJgo4j2Sac8w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "intl-messageformat-parser": "^1.8.1" } }, "node_modules/intl-messageformat-parser": { "version": "1.8.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz", + "integrity": "sha512-IMSCKVf0USrM/959vj3xac7s8f87sc+80Y/ipBzdKy4ifBv5Gsj2tZ41EAaURVg01QU71fYr77uA8Meh6kELbg==", + "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser", + "dev": true }, "node_modules/intl-tel-input": { "version": "17.0.19", - "license": "MIT" + "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-17.0.19.tgz", + "integrity": "sha512-GBNoUT4JVgm2e1N+yFMaBQ24g5EQfZhDznGneCM9IEZwfKsMUAUa1dS+v0wOiKpRAZ5IPNLJMIEEFGgqlCI22A==" }, "node_modules/ip": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true }, "node_modules/ipaddr.js": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -8294,8 +9342,9 @@ }, "node_modules/is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -8305,8 +9354,9 @@ }, "node_modules/is-core-module": { "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, - "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -8316,8 +9366,9 @@ }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -8330,24 +9381,27 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -8357,8 +9411,9 @@ }, "node_modules/is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, - "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -8372,45 +9427,51 @@ }, "node_modules/is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8420,8 +9481,9 @@ }, "node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -8431,8 +9493,9 @@ }, "node_modules/is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -8442,13 +9505,15 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8458,13 +9523,15 @@ }, "node_modules/is-what": { "version": "3.14.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -8474,13 +9541,15 @@ }, "node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/isbinaryfile": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -8490,34 +9559,39 @@ }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isstream": { "version": "0.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -8531,16 +9605,18 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -8552,16 +9628,18 @@ }, "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8571,8 +9649,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -8584,16 +9663,18 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -8604,8 +9685,9 @@ }, "node_modules/jake": { "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -8621,8 +9703,9 @@ }, "node_modules/jake/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8635,8 +9718,9 @@ }, "node_modules/jake/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8644,8 +9728,9 @@ }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8659,8 +9744,9 @@ }, "node_modules/jake/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8670,21 +9756,24 @@ }, "node_modules/jake/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8694,8 +9783,9 @@ }, "node_modules/jake/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8705,13 +9795,15 @@ }, "node_modules/jasmine-core": { "version": "4.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.1.tgz", + "integrity": "sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg==", + "dev": true }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8723,16 +9815,18 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8745,21 +9839,24 @@ }, "node_modules/jpeg-js": { "version": "0.4.4", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "dev": true }, "node_modules/js-library-detector": { "version": "6.6.0", + "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.6.0.tgz", + "integrity": "sha512-z8OkDmXALZ22bIzBtIW8cpJ39MV93/Zu1rWrFdhsNw+sity2rOLaGT2kfWWQ6mnRTWs4ddONY5kiroA8e98Gvg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/js-sdsl": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/js-sdsl" @@ -8767,13 +9864,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -8784,13 +9883,15 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -8800,32 +9901,38 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema": { "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -8835,13 +9942,15 @@ }, "node_modules/jsonc-parser": { "version": "3.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -8851,19 +9960,21 @@ }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" - ], - "license": "MIT" + ] }, "node_modules/jsprim": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -8873,12 +9984,14 @@ }, "node_modules/jwt-decode": { "version": "3.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, "node_modules/karma": { "version": "6.3.20", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", + "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", "dev": true, - "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -8914,16 +10027,18 @@ }, "node_modules/karma-chrome-launcher": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, - "license": "MIT", "dependencies": { "which": "^1.2.1" } }, "node_modules/karma-chrome-launcher/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8933,8 +10048,9 @@ }, "node_modules/karma-coverage": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.1.tgz", + "integrity": "sha512-oxeOSBVK/jdZsiX03LhHQkO4eISSQb5GbHi6Nsw3Mw7G4u6yUgacBAftnO7q+emPBLMsrNbz1pGIrj+Jb3z17A==", "dev": true, - "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-instrument": "^4.0.3", @@ -8949,8 +10065,9 @@ }, "node_modules/karma-coverage/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8958,8 +10075,9 @@ }, "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -8972,8 +10090,9 @@ }, "node_modules/karma-coverage/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8983,16 +10102,18 @@ }, "node_modules/karma-coverage/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/karma-jasmine": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", + "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", "dev": true, - "license": "MIT", "dependencies": { "jasmine-core": "^3.6.0" }, @@ -9005,8 +10126,9 @@ }, "node_modules/karma-jasmine-html-reporter": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", "dev": true, - "license": "MIT", "peerDependencies": { "jasmine-core": ">=3.8", "karma": ">=0.9", @@ -9015,21 +10137,24 @@ }, "node_modules/karma-jasmine/node_modules/jasmine-core": { "version": "3.99.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", + "dev": true }, "node_modules/karma-source-map-support": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, - "license": "MIT", "dependencies": { "source-map-support": "^0.5.5" } }, "node_modules/karma-spec-reporter": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.33.tgz", + "integrity": "sha512-xRVevDUkiIVhKbDQ3CmeGEpyzA4b3HeVl95Sx5yJAvurpdKUSYF6ZEbQOqKJ7vrtDniABV1hyFez9KX9+7ruBA==", "dev": true, - "license": "MIT", "dependencies": { "colors": "1.4.0" }, @@ -9039,8 +10164,9 @@ }, "node_modules/karma/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9048,8 +10174,9 @@ }, "node_modules/karma/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9067,8 +10194,9 @@ }, "node_modules/karma/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9078,8 +10206,9 @@ }, "node_modules/karma/node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -9089,16 +10218,18 @@ }, "node_modules/karma/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/karma/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -9114,40 +10245,45 @@ }, "node_modules/karma/node_modules/yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/klona": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/lazy-ass": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true, - "license": "MIT", "engines": { "node": "> 0.8" } }, "node_modules/less": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -9171,8 +10307,9 @@ }, "node_modules/less-loader": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", "dev": true, - "license": "MIT", "dependencies": { "klona": "^2.0.4" }, @@ -9190,8 +10327,9 @@ }, "node_modules/less/node_modules/make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -9203,8 +10341,9 @@ }, "node_modules/less/node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -9215,8 +10354,9 @@ }, "node_modules/less/node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -9224,8 +10364,9 @@ }, "node_modules/less/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -9233,8 +10374,9 @@ }, "node_modules/less/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -9242,8 +10384,9 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -9254,8 +10397,9 @@ }, "node_modules/license-checker": { "version": "25.0.1", + "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", + "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "chalk": "^2.4.1", "debug": "^3.1.0", @@ -9274,16 +10418,18 @@ }, "node_modules/license-checker/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/license-checker/node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -9293,16 +10439,18 @@ }, "node_modules/license-checker/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/license-webpack-plugin": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, - "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" }, @@ -9317,8 +10465,9 @@ }, "node_modules/lighthouse": { "version": "9.6.8", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-9.6.8.tgz", + "integrity": "sha512-5aRSvnqazci8D2oE7GJM6C7IStvUuMVV+74cGyBuS4n4NCixsDd6+uJdX834XiInSfo+OuVbAJCX4Xu6d2+N9Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sentry/node": "^6.17.4", "axe-core": "4.4.1", @@ -9359,8 +10508,9 @@ }, "node_modules/lighthouse-logger": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" @@ -9368,39 +10518,45 @@ }, "node_modules/lighthouse-logger/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/lighthouse-logger/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/lighthouse-stack-packs": { "version": "1.8.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.8.2.tgz", + "integrity": "sha512-vlCUxxQAB8Nu6LQHqPpDRiMi06Du593/my/6JbMttQeEfJ7pf4OS8obSTh5xSOS80U/O7fq59Q8rQGAUxQatUQ==", + "dev": true }, "node_modules/lighthouse/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, - "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -9425,24 +10581,27 @@ }, "node_modules/loader-runner": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12.13.0" } }, "node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -9452,47 +10611,56 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "node_modules/lodash.isempty": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", + "dev": true }, "node_modules/lodash.isfunction": { "version": "3.0.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true }, "node_modules/lodash.isobject": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true }, "node_modules/lodash.isstring": { "version": "4.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.once": { "version": "4.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -9506,8 +10674,9 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9520,8 +10689,9 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9535,8 +10705,9 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9546,21 +10717,24 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9570,8 +10744,9 @@ }, "node_modules/log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -9587,8 +10762,9 @@ }, "node_modules/log-update/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9601,8 +10777,9 @@ }, "node_modules/log-update/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9612,13 +10789,15 @@ }, "node_modules/log-update/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -9633,8 +10812,9 @@ }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9646,8 +10826,9 @@ }, "node_modules/log4js": { "version": "6.7.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", + "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -9661,13 +10842,15 @@ }, "node_modules/lookup-closest-locale": { "version": "6.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz", + "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==", + "dev": true }, "node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, - "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -9677,28 +10860,32 @@ }, "node_modules/lru_map": { "version": "0.3.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/luxon": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", "engines": { "node": ">=12" } }, "node_modules/magic-string": { "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", "dev": true, - "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" }, @@ -9708,8 +10895,9 @@ }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -9722,16 +10910,18 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -9756,29 +10946,33 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/marky": { "version": "1.2.5", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true }, "node_modules/media-typer": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { "version": "3.4.13", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", + "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", "dev": true, - "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.3" }, @@ -9788,39 +10982,45 @@ }, "node_modules/merge-descriptors": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/metaviewport-parser": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.2.0.tgz", + "integrity": "sha512-qL5NtY18LGs7lvZCkj3ep2H4Pes9rIiSLZRUyfDdvVw7pWFA0eLwmqaIxApD74RGvUrNEtk9e5Wt1rT+VlCvGw==", + "dev": true }, "node_modules/methods": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -9831,8 +11031,9 @@ }, "node_modules/mime": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -9842,16 +11043,18 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -9861,16 +11064,18 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mini-css-extract-plugin": { "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", "dev": true, - "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" }, @@ -9887,8 +11092,9 @@ }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -9905,13 +11111,15 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "node_modules/minimatch": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9920,17 +11128,19 @@ } }, "node_modules/minimist": { - "version": "1.2.7", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -9940,8 +11150,9 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9951,8 +11162,9 @@ }, "node_modules/minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -9967,8 +11179,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9978,8 +11191,9 @@ }, "node_modules/minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -9987,8 +11201,9 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9998,8 +11213,9 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -10009,13 +11225,15 @@ }, "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -10026,13 +11244,15 @@ }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -10042,13 +11262,15 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true }, "node_modules/mocha": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-colors": "4.1.1", @@ -10087,8 +11309,9 @@ }, "node_modules/mocha/node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -10096,14 +11319,16 @@ }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0", "peer": true }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -10114,8 +11339,9 @@ }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "locate-path": "^6.0.0", @@ -10130,8 +11356,9 @@ }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -10150,8 +11377,9 @@ }, "node_modules/mocha/node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -10160,8 +11388,9 @@ }, "node_modules/mocha/node_modules/glob/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -10172,8 +11401,9 @@ }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -10181,8 +11411,9 @@ }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "argparse": "^2.0.1" @@ -10193,8 +11424,9 @@ }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "p-locate": "^5.0.0" @@ -10208,8 +11440,9 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -10220,14 +11453,16 @@ }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -10241,8 +11476,9 @@ }, "node_modules/mocha/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "p-limit": "^3.0.2" @@ -10256,8 +11492,9 @@ }, "node_modules/mocha/node_modules/serialize-javascript": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -10265,8 +11502,9 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -10280,8 +11518,9 @@ }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "cliui": "^7.0.2", @@ -10298,8 +11537,9 @@ }, "node_modules/mocha/node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "peer": true, "engines": { "node": ">=10" @@ -10307,8 +11547,9 @@ }, "node_modules/mochawesome": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", + "integrity": "sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "diff": "^5.0.0", @@ -10327,8 +11568,9 @@ }, "node_modules/mochawesome-merge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.2.2.tgz", + "integrity": "sha512-ZHeZcChGhb3If7fjSVuyB9rmDH86inNtsTb1ONYq1h0L1IduldFu38bJDcow46alMpiYQgJ7cPhv6nwpCwbJQw==", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "^7.0.1", "glob": "^7.1.6", @@ -10343,8 +11585,9 @@ }, "node_modules/mochawesome-merge/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10357,8 +11600,9 @@ }, "node_modules/mochawesome-merge/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10366,8 +11610,9 @@ }, "node_modules/mochawesome-merge/node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -10376,8 +11621,9 @@ }, "node_modules/mochawesome-merge/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10387,21 +11633,24 @@ }, "node_modules/mochawesome-merge/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/mochawesome-merge/node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/mochawesome-merge/node_modules/fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -10413,8 +11662,9 @@ }, "node_modules/mochawesome-merge/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10432,16 +11682,18 @@ }, "node_modules/mochawesome-merge/node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/mochawesome-merge/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10451,16 +11703,18 @@ }, "node_modules/mochawesome-merge/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, - "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/mochawesome-merge/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10472,13 +11726,15 @@ }, "node_modules/mochawesome-merge/node_modules/y18n": { "version": "4.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/mochawesome-merge/node_modules/yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -10498,8 +11754,9 @@ }, "node_modules/mochawesome-merge/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -10510,8 +11767,9 @@ }, "node_modules/mochawesome-report-generator": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mochawesome-report-generator/-/mochawesome-report-generator-6.2.0.tgz", + "integrity": "sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "dateformat": "^4.5.1", @@ -10532,8 +11790,9 @@ }, "node_modules/mochawesome-report-generator/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10546,8 +11805,9 @@ }, "node_modules/mochawesome-report-generator/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10561,8 +11821,9 @@ }, "node_modules/mochawesome-report-generator/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10572,13 +11833,15 @@ }, "node_modules/mochawesome-report-generator/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/mochawesome-report-generator/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==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10590,16 +11853,18 @@ }, "node_modules/mochawesome-report-generator/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mochawesome-report-generator/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10609,8 +11874,9 @@ }, "node_modules/mochawesome/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10623,8 +11889,9 @@ }, "node_modules/mochawesome/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10638,8 +11905,9 @@ }, "node_modules/mochawesome/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10649,21 +11917,24 @@ }, "node_modules/mochawesome/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/mochawesome/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mochawesome/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10673,13 +11944,15 @@ }, "node_modules/ms": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/multicast-dns": { "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, - "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -10690,13 +11963,15 @@ }, "node_modules/mute-stream": { "version": "0.0.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "license": "MIT", "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -10707,13 +11982,15 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/needle": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "debug": "^3.2.6", @@ -10729,8 +12006,9 @@ }, "node_modules/needle/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "ms": "^2.1.1" @@ -10738,8 +12016,9 @@ }, "node_modules/needle/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -10750,20 +12029,23 @@ }, "node_modules/negotiator": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/ngrx-store-localstorage": { "version": "14.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ngrx-store-localstorage/-/ngrx-store-localstorage-14.0.0.tgz", + "integrity": "sha512-78fw12dv7MTiYj7hbUMvcj/UUnPfmb7lBcT9hA5L/h4b7/y35z51voxum3mRYmCQqaT6K1PdxTf4uwJy8E99rA==", "dependencies": { "deepmerge": "^4.2.2", "tslib": "^2.3.0" @@ -10776,7 +12058,8 @@ }, "node_modules/ngx-cookie-service": { "version": "14.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-14.0.1.tgz", + "integrity": "sha512-PHjpA/bpp1ZgvQ2AWdXA6oxPQgE9k0WljQ7tvUH/u0Acl6p6akzF8kWlQiWxkgR3hBs7xB3paIsTk6GKdtakMg==", "dependencies": { "tslib": "^2.0.0" }, @@ -10787,7 +12070,8 @@ }, "node_modules/ngx-logger": { "version": "5.0.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ngx-logger/-/ngx-logger-5.0.11.tgz", + "integrity": "sha512-OP8qesmRPmu/FKGi0PYvxP4CSZMIzX+bN0UK6jtP3pOduqzCUlha91V57+tGY+lR1RNytdj2OjN2M1yfbiFtLQ==", "dependencies": { "tslib": "^2.3.0", "vlq": "^1.0.0" @@ -10798,9 +12082,10 @@ }, "node_modules/nice-napi": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "!win32" @@ -10812,13 +12097,15 @@ }, "node_modules/node-addon-api": { "version": "3.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true }, "node_modules/node-fetch": { "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10836,16 +12123,18 @@ }, "node_modules/node-forge": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-gyp": { "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", @@ -10867,8 +12156,9 @@ }, "node_modules/node-gyp-build": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true, - "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -10877,8 +12167,9 @@ }, "node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10886,8 +12177,9 @@ }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10905,8 +12197,9 @@ }, "node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10916,8 +12209,9 @@ }, "node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -10930,13 +12224,15 @@ }, "node_modules/node-releases": { "version": "2.0.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true }, "node_modules/nopt": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "1", "osenv": "^0.1.4" @@ -10947,8 +12243,9 @@ }, "node_modules/normalize-package-data": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -10961,32 +12258,36 @@ }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-range": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-bundled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-install-checks": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -10996,13 +12297,15 @@ }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, "node_modules/npm-package-arg": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -11015,8 +12318,9 @@ }, "node_modules/npm-packlist": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", @@ -11032,8 +12336,9 @@ }, "node_modules/npm-packlist/node_modules/npm-bundled": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^2.0.0" }, @@ -11043,16 +12348,18 @@ }, "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^1.0.1", @@ -11065,8 +12372,9 @@ }, "node_modules/npm-registry-fetch": { "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -11082,8 +12390,9 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -11093,8 +12402,9 @@ }, "node_modules/npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -11107,8 +12417,9 @@ }, "node_modules/nth-check": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -11118,9 +12429,10 @@ }, "node_modules/nx": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", + "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@nrwl/cli": "14.8.6", "@nrwl/tao": "14.8.6", @@ -11176,8 +12488,9 @@ }, "node_modules/nx/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11190,13 +12503,15 @@ }, "node_modules/nx/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/nx/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11204,8 +12519,9 @@ }, "node_modules/nx/node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11219,8 +12535,9 @@ }, "node_modules/nx/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11230,13 +12547,15 @@ }, "node_modules/nx/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/nx/node_modules/fast-glob": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -11250,8 +12569,9 @@ }, "node_modules/nx/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==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -11263,8 +12583,9 @@ }, "node_modules/nx/node_modules/glob": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11279,16 +12600,18 @@ }, "node_modules/nx/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/nx/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -11298,13 +12621,15 @@ }, "node_modules/nx/node_modules/jsonc-parser": { "version": "3.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true }, "node_modules/nx/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11314,8 +12639,9 @@ }, "node_modules/nx/node_modules/minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11325,8 +12651,9 @@ }, "node_modules/nx/node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11339,8 +12666,9 @@ }, "node_modules/nx/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11350,42 +12678,48 @@ }, "node_modules/nx/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/nx/node_modules/yargs-parser": { "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true }, "node_modules/on-finished": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -11395,24 +12729,27 @@ }, "node_modules/on-headers": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -11425,8 +12762,9 @@ }, "node_modules/open": { "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -11441,16 +12779,18 @@ }, "node_modules/opener": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, - "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } }, "node_modules/optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -11465,8 +12805,9 @@ }, "node_modules/ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -11487,8 +12828,9 @@ }, "node_modules/ora/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11501,8 +12843,9 @@ }, "node_modules/ora/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11516,8 +12859,9 @@ }, "node_modules/ora/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11527,21 +12871,24 @@ }, "node_modules/ora/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ora/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11551,24 +12898,27 @@ }, "node_modules/os-homedir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/osenv": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, - "license": "ISC", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -11576,13 +12926,15 @@ }, "node_modules/ospath": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true }, "node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -11595,8 +12947,9 @@ }, "node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -11606,8 +12959,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -11620,8 +12974,9 @@ }, "node_modules/p-retry": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -11632,24 +12987,27 @@ }, "node_modules/p-retry/node_modules/retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pacote": { "version": "13.6.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", + "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", @@ -11682,13 +13040,15 @@ }, "node_modules/pako": { "version": "1.0.11", - "dev": true, - "license": "(MIT AND Zlib)" + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -11698,12 +13058,15 @@ }, "node_modules/parse-cache-control": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", "dev": true }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11719,21 +13082,24 @@ }, "node_modules/parse-node-version": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/parse5": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "optional": true }, "node_modules/parse5-html-rewriting-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", "dev": true, - "license": "MIT", "dependencies": { "parse5": "^6.0.1", "parse5-sax-parser": "^6.0.1" @@ -11741,104 +13107,120 @@ }, "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, - "license": "MIT", "dependencies": { "parse5": "^6.0.1" } }, "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true }, "node_modules/parse5-sax-parser": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", "dev": true, - "license": "MIT", "dependencies": { "parse5": "^6.0.1" } }, "node_modules/parse5-sax-parser/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true }, "node_modules/parseurl": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-to-regexp": { "version": "0.1.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pend": { "version": "1.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "node_modules/performance-now": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -11848,16 +13230,18 @@ }, "node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/piscina": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", "dev": true, - "license": "MIT", "dependencies": { "eventemitter-asyncresource": "^1.0.0", "hdr-histogram-js": "^2.0.1", @@ -11869,8 +13253,9 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -11880,6 +13265,8 @@ }, "node_modules/postcss": { "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "dev": true, "funding": [ { @@ -11891,7 +13278,6 @@ "url": "https://tidelift.com/funding/github/npm/postcss" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -11903,8 +13289,9 @@ }, "node_modules/postcss-attribute-case-insensitive": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -11921,8 +13308,9 @@ }, "node_modules/postcss-clamp": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", "dev": true, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11935,8 +13323,9 @@ }, "node_modules/postcss-color-functional-notation": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11953,8 +13342,9 @@ }, "node_modules/postcss-color-hex-alpha": { "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11971,8 +13361,9 @@ }, "node_modules/postcss-color-rebeccapurple": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11989,8 +13380,9 @@ }, "node_modules/postcss-custom-media": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12007,8 +13399,9 @@ }, "node_modules/postcss-custom-properties": { "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12025,8 +13418,9 @@ }, "node_modules/postcss-custom-selectors": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -12043,8 +13437,9 @@ }, "node_modules/postcss-dir-pseudo-class": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12061,8 +13456,9 @@ }, "node_modules/postcss-double-position-gradients": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -12080,8 +13476,9 @@ }, "node_modules/postcss-env-function": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12094,8 +13491,9 @@ }, "node_modules/postcss-focus-visible": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -12108,8 +13506,9 @@ }, "node_modules/postcss-focus-within": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -12122,16 +13521,18 @@ }, "node_modules/postcss-font-variant": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "dev": true, - "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-gap-properties": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -12145,8 +13546,9 @@ }, "node_modules/postcss-image-set-function": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12163,8 +13565,9 @@ }, "node_modules/postcss-import": { "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -12179,16 +13582,18 @@ }, "node_modules/postcss-initial": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "dev": true, - "license": "MIT", "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-lab-function": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -12206,8 +13611,9 @@ }, "node_modules/postcss-loader": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", "dev": true, - "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -12227,8 +13633,9 @@ }, "node_modules/postcss-logical": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -12238,8 +13645,9 @@ }, "node_modules/postcss-media-minmax": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12249,8 +13657,9 @@ }, "node_modules/postcss-modules-extract-imports": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -12260,8 +13669,9 @@ }, "node_modules/postcss-modules-local-by-default": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -12276,8 +13686,9 @@ }, "node_modules/postcss-modules-scope": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -12290,8 +13701,9 @@ }, "node_modules/postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -12304,8 +13716,9 @@ }, "node_modules/postcss-nesting": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -12323,6 +13736,8 @@ }, "node_modules/postcss-opacity-percentage": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "funding": [ { @@ -12334,7 +13749,6 @@ "url": "https://liberapay.com/mrcgrtz" } ], - "license": "MIT", "engines": { "node": "^12 || ^14 || >=16" }, @@ -12344,8 +13758,9 @@ }, "node_modules/postcss-overflow-shorthand": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12362,16 +13777,18 @@ }, "node_modules/postcss-page-break": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", "dev": true, - "license": "MIT", "peerDependencies": { "postcss": "^8" } }, "node_modules/postcss-place": { "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12388,8 +13805,9 @@ }, "node_modules/postcss-preset-env": { "version": "7.7.2", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", + "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-cascade-layers": "^1.0.4", "@csstools/postcss-color-function": "^1.1.0", @@ -12452,8 +13870,9 @@ }, "node_modules/postcss-pseudo-class-any-link": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12470,16 +13889,18 @@ }, "node_modules/postcss-replace-overflow-wrap": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", "dev": true, - "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } }, "node_modules/postcss-selector-not": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", "dev": true, - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12496,8 +13917,9 @@ }, "node_modules/postcss-selector-parser": { "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12508,13 +13930,15 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/postcss/node_modules/nanoid": { "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -12524,16 +13948,18 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/pretty-bytes": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -12543,15 +13969,18 @@ }, "node_modules/primeflex": { "version": "3.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.0.tgz", + "integrity": "sha512-4hvyIO7lERN5bnyURn67Qpozghins8Jq/GSXO6tymc3oa2ADHWuiYBti8ZptPwHu+uD/HTEisS26NEmeIGfPZQ==" }, "node_modules/primeicons": { "version": "6.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", + "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" }, "node_modules/primeng": { "version": "14.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-14.2.3.tgz", + "integrity": "sha512-4B+ahbjzPcLeYB/4hw7hqD2le0CplSblRORvY97EhW/0T0Vzyr+neVcnSmUAZ9HfyBdflR/WvZzcFuELFRC7kw==", "dependencies": { "tslib": "^2.3.0" }, @@ -12566,34 +13995,39 @@ }, "node_modules/proc-log": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -12604,8 +14038,9 @@ }, "node_modules/prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, - "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -12614,8 +14049,9 @@ }, "node_modules/proxy-addr": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, - "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -12626,27 +14062,31 @@ }, "node_modules/proxy-addr/node_modules/ipaddr.js": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/proxy-from-env": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true }, "node_modules/prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/ps-list": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz", + "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -12656,13 +14096,15 @@ }, "node_modules/psl": { "version": "1.9.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, "node_modules/pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -12670,15 +14112,17 @@ }, "node_modules/punycode": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "engines": { "node": ">=6" } }, "node_modules/puppeteer-core": { "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", + "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", @@ -12699,13 +14143,15 @@ }, "node_modules/puppeteer-core/node_modules/proxy-from-env": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/puppeteer-core/node_modules/ws": { "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12724,16 +14170,18 @@ }, "node_modules/qjobs": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.9" } }, "node_modules/qs": { "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -12746,6 +14194,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -12760,29 +14210,31 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -12795,21 +14247,24 @@ }, "node_modules/react-is": { "version": "16.13.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "node_modules/read-cache": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.3.0" } }, "node_modules/read-installed": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", + "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==", "dev": true, - "license": "ISC", "dependencies": { "debuglog": "^1.0.1", "read-package-json": "^2.0.0", @@ -12824,8 +14279,9 @@ }, "node_modules/read-installed/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -12833,8 +14289,9 @@ }, "node_modules/read-installed/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12852,13 +14309,15 @@ }, "node_modules/read-installed/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-installed/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12868,8 +14327,9 @@ }, "node_modules/read-installed/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -12879,8 +14339,9 @@ }, "node_modules/read-installed/node_modules/read-package-json": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.1", "json-parse-even-better-errors": "^2.3.0", @@ -12890,16 +14351,18 @@ }, "node_modules/read-installed/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/read-package-json": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", @@ -12912,8 +14375,9 @@ }, "node_modules/read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -12924,16 +14388,18 @@ }, "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/readable-stream": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12945,8 +14411,10 @@ }, "node_modules/readdir-scoped-modules": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "ISC", "dependencies": { "debuglog": "^1.0.1", "dezalgo": "^1.0.0", @@ -12956,8 +14424,9 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -12967,17 +14436,20 @@ }, "node_modules/reflect-metadata": { "version": "0.1.13", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "node_modules/regenerate": { "version": "1.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, - "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -12987,26 +14459,30 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true }, "node_modules/regenerator-transform": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regex-parser": { "version": "2.2.11", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -13015,13 +14491,14 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.2", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", + "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", "dev": true, - "license": "MIT", "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -13030,15 +14507,11 @@ "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "dev": true, - "license": "MIT" - }, "node_modules/regjsparser": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -13048,6 +14521,8 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -13055,41 +14530,47 @@ }, "node_modules/request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, - "license": "MIT", "dependencies": { "throttleit": "^1.0.0" } }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "node_modules/requires-port": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "node_modules/resolve": { "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -13104,16 +14585,18 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-url-loader": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, - "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -13127,8 +14610,9 @@ }, "node_modules/resolve-url-loader/node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -13140,16 +14624,18 @@ }, "node_modules/resolve-url-loader/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -13160,16 +14646,18 @@ }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -13177,13 +14665,15 @@ }, "node_modules/rfdc": { "version": "1.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -13196,8 +14686,9 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13205,8 +14696,9 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13224,8 +14716,9 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13235,22 +14728,26 @@ }, "node_modules/robots-parser": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.0.tgz", + "integrity": "sha512-6xkze3WRdneibICBAzMKcXyTKQw5shA3GbwoEJy7RSvxpZNGF0GMuYKE1T0VMP4fwx/fQs0n0mtriOqRtk5L1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -13266,20 +14763,22 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { "version": "7.8.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -13294,18 +14793,19 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sass": { "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -13320,8 +14820,9 @@ }, "node_modules/sass-loader": { "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", "dev": true, - "license": "MIT", "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -13357,13 +14858,15 @@ }, "node_modules/sax": { "version": "1.2.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true }, "node_modules/schema-utils": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", @@ -13379,8 +14882,9 @@ }, "node_modules/schema-utils/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13394,26 +14898,30 @@ }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/select-hose": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true }, "node_modules/selfsigned": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, - "license": "MIT", "dependencies": { "node-forge": "^1" }, @@ -13423,8 +14931,9 @@ }, "node_modules/semver": { "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13437,8 +14946,9 @@ }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13448,13 +14958,15 @@ }, "node_modules/semver/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/send": { "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13476,21 +14988,24 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/send/node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -13500,29 +15015,33 @@ }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/serialize-javascript": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -13538,24 +15057,27 @@ }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, - "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -13568,23 +15090,27 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "node_modules/serve-static": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, - "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -13597,18 +15123,21 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -13618,8 +15147,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13629,16 +15159,18 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -13650,21 +15182,24 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -13676,8 +15211,9 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13690,8 +15226,9 @@ }, "node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13701,21 +15238,24 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/slide": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", "dev": true, - "license": "ISC", "engines": { "node": "*" } }, "node_modules/smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -13723,8 +15263,9 @@ }, "node_modules/socket.io": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", + "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -13739,16 +15280,18 @@ }, "node_modules/socket.io-adapter": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", "dev": true, - "license": "MIT", "dependencies": { "ws": "~8.11.0" } }, "node_modules/socket.io-adapter/node_modules/ws": { "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -13767,8 +15310,9 @@ }, "node_modules/socket.io-parser": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", "dev": true, - "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -13779,8 +15323,9 @@ }, "node_modules/sockjs": { "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, - "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -13789,8 +15334,9 @@ }, "node_modules/socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, - "license": "MIT", "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -13802,8 +15348,9 @@ }, "node_modules/socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -13815,24 +15362,27 @@ }, "node_modules/source-map": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-loader": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.6", "iconv-lite": "^0.6.3", @@ -13851,8 +15401,9 @@ }, "node_modules/source-map-loader/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -13862,8 +15413,10 @@ }, "node_modules/source-map-resolve": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "license": "MIT", "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -13871,8 +15424,9 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13880,21 +15434,25 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true }, "node_modules/spdx-compare": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", + "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", "dev": true, - "license": "MIT", "dependencies": { "array-find-index": "^1.0.2", "spdx-expression-parse": "^3.0.0", @@ -13903,8 +15461,9 @@ }, "node_modules/spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -13912,13 +15471,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -13926,18 +15487,21 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.12", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true }, "node_modules/spdx-ranges": { "version": "2.1.1", - "dev": true, - "license": "(MIT AND CC-BY-3.0)" + "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", + "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", + "dev": true }, "node_modules/spdx-satisfies": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz", + "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==", "dev": true, - "license": "MIT", "dependencies": { "spdx-compare": "^1.0.0", "spdx-expression-parse": "^3.0.0", @@ -13946,8 +15510,9 @@ }, "node_modules/spdy": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -13961,8 +15526,9 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -13974,8 +15540,9 @@ }, "node_modules/speedline-core": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", + "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "image-ssim": "^0.2.0", @@ -13987,13 +15554,15 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/sshpk": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -14016,8 +15585,9 @@ }, "node_modules/ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -14027,16 +15597,18 @@ }, "node_modules/statuses": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/streamroller": { - "version": "3.1.4", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, - "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -14048,8 +15620,9 @@ }, "node_modules/streamroller/node_modules/fs-extra": { "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, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -14061,32 +15634,36 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -14098,8 +15675,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -14109,24 +15687,27 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -14136,8 +15717,9 @@ }, "node_modules/strong-log-transformer": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "duplexer": "^0.1.1", "minimist": "^1.2.0", @@ -14152,8 +15734,9 @@ }, "node_modules/stylus": { "version": "0.58.1", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", + "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", "dev": true, - "license": "MIT", "dependencies": { "css": "^3.0.0", "debug": "^4.3.2", @@ -14170,8 +15753,9 @@ }, "node_modules/stylus-loader": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", "dev": true, - "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "klona": "^2.0.5", @@ -14191,8 +15775,9 @@ }, "node_modules/stylus/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14200,8 +15785,9 @@ }, "node_modules/stylus/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14219,8 +15805,9 @@ }, "node_modules/stylus/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14230,8 +15817,9 @@ }, "node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -14241,8 +15829,9 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -14252,24 +15841,27 @@ }, "node_modules/symbol-observable": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -14284,8 +15876,9 @@ }, "node_modules/tar-fs": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, - "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -14295,13 +15888,15 @@ }, "node_modules/tar-fs/node_modules/chownr": { "version": "1.1.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -14314,35 +15909,40 @@ } }, "node_modules/tar/node_modules/minipass": { - "version": "4.0.2", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", + "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/tcomb": { "version": "3.2.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", + "integrity": "sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==", + "dev": true }, "node_modules/tcomb-validation": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tcomb-validation/-/tcomb-validation-3.4.1.tgz", + "integrity": "sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA==", "dev": true, - "license": "MIT", "dependencies": { "tcomb": "^3.0.0" } }, "node_modules/terser": { "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -14358,8 +15958,9 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -14391,8 +15992,9 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14406,21 +16008,24 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -14436,13 +16041,15 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -14454,8 +16061,9 @@ }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14463,8 +16071,9 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14482,8 +16091,9 @@ }, "node_modules/test-exclude/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14493,33 +16103,39 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/third-party-web": { "version": "0.17.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.17.1.tgz", + "integrity": "sha512-X9Mha8cVeBwakunlZXkXL6xRzw8VCcDGWqT59EzeTYAJIi8ien3CuufnEGEx4ZUFahumNQdoOwf4H2T9Ca6lBg==", + "dev": true }, "node_modules/throttleit": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true }, "node_modules/through": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/thunky": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true }, "node_modules/tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -14529,16 +16145,18 @@ }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -14548,16 +16166,18 @@ }, "node_modules/toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -14568,29 +16188,33 @@ }, "node_modules/tr46": { "version": "0.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/treeify": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tsconfig-paths": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -14600,8 +16224,9 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -14611,12 +16236,14 @@ }, "node_modules/tslib": { "version": "2.5.0", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -14629,13 +16256,15 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -14645,13 +16274,15 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -14661,8 +16292,9 @@ }, "node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -14672,8 +16304,9 @@ }, "node_modules/type-is": { "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -14684,21 +16317,24 @@ }, "node_modules/typed-assert": { "version": "1.0.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14709,6 +16345,8 @@ }, "node_modules/ua-parser-js": { "version": "0.7.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", + "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", "dev": true, "funding": [ { @@ -14720,15 +16358,15 @@ "url": "https://paypal.me/faisalman" } ], - "license": "MIT", "engines": { "node": "*" } }, "node_modules/unbzip2-stream": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -14736,16 +16374,18 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -14756,40 +16396,45 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/unique-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, - "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -14799,30 +16444,35 @@ }, "node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/update-browserslist-db": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "funding": [ { @@ -14834,7 +16484,6 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -14848,46 +16497,53 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/util-extend": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", + "dev": true }, "node_modules/utils-merge": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -14895,8 +16551,9 @@ }, "node_modules/validate-npm-package-name": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -14906,27 +16563,30 @@ }, "node_modules/validator": { "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/vary": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -14935,20 +16595,23 @@ }, "node_modules/vlq": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" }, "node_modules/void-elements": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/watchpack": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -14959,29 +16622,33 @@ }, "node_modules/wbuf": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, - "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/webidl-conversions": { "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/webpack": { "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -15026,8 +16693,9 @@ }, "node_modules/webpack-dev-middleware": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -15048,8 +16716,9 @@ }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -15066,8 +16735,9 @@ }, "node_modules/webpack-dev-server": { "version": "4.9.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", + "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", "dev": true, - "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -15120,8 +16790,9 @@ }, "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -15137,9 +16808,10 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.12.0", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", + "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -15158,8 +16830,9 @@ }, "node_modules/webpack-merge": { "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -15170,16 +16843,18 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack-subresource-integrity": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, - "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" }, @@ -15198,8 +16873,9 @@ }, "node_modules/webpack/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -15213,21 +16889,24 @@ }, "node_modules/webpack/node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/webpack/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -15243,8 +16922,9 @@ }, "node_modules/websocket-driver": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -15256,16 +16936,18 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, - "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -15273,8 +16955,9 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -15287,40 +16970,46 @@ }, "node_modules/which-module": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wildcard": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true }, "node_modules/word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/workerpool": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, - "license": "Apache-2.0", "peer": true }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -15335,8 +17024,9 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15349,8 +17039,9 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -15360,18 +17051,21 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -15381,8 +17075,9 @@ }, "node_modules/ws": { "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -15401,37 +17096,42 @@ }, "node_modules/xdg-basedir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -15447,16 +17147,18 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "camelcase": "^6.0.0", @@ -15470,8 +17172,9 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -15482,8 +17185,9 @@ }, "node_modules/yargs-unparser/node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -15491,8 +17195,9 @@ }, "node_modules/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, - "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -15500,8 +17205,9 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -15511,7 +17217,8 @@ }, "node_modules/zone.js": { "version": "0.11.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "dependencies": { "tslib": "^2.3.0" } @@ -15520,6 +17227,8 @@ "dependencies": { "@ampproject/remapping": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.1.0", @@ -15528,6 +17237,8 @@ }, "@angular-devkit/architect": { "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", + "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", "dev": true, "requires": { "@angular-devkit/core": "14.1.3", @@ -15536,6 +17247,8 @@ "dependencies": { "rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -15543,12 +17256,16 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-devkit/build-angular": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.3.tgz", + "integrity": "sha512-LZCGd68LCVOwgcGC9DVfjc+wmsTbQmrTMIjWPMXkqufmicEFptR7ocr2dBFJRiVPwqRj+/J+A98cck0GYRC5fw==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", @@ -15618,6 +17335,8 @@ "dependencies": { "rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -15625,18 +17344,24 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "tslib": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } }, "@angular-devkit/build-webpack": { "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.3.tgz", + "integrity": "sha512-CCKinKF1JNy/cDE5Psn1N4Tl18k9eecDXJUhL4uix3DUHpP3qsVRta8sVJrmE4a3z8DYN6MCw6M38GRzOZiXCQ==", "dev": true, "requires": { "@angular-devkit/architect": "0.1401.3", @@ -15645,6 +17370,8 @@ "dependencies": { "rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -15652,12 +17379,16 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-devkit/core": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", + "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", "dev": true, "requires": { "ajv": "8.11.0", @@ -15669,6 +17400,8 @@ "dependencies": { "rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -15676,12 +17409,16 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-devkit/schematics": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.3.tgz", + "integrity": "sha512-i1vuuClGvBzmgQi3qAUWTwLdnGJZ/C8xVeFMHXmgVNZhck9/8xGGusi500SYsGcVzEfetGSJt5hOfUHmVrcpbg==", "dev": true, "requires": { "@angular-devkit/core": "14.1.3", @@ -15693,6 +17430,8 @@ "dependencies": { "rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -15700,12 +17439,16 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-eslint/builder": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.2.tgz", + "integrity": "sha512-RY/1fKNewm3Wt3ILe9Ue5jTiQRtPR8q+eAmV89EYl07jEQ4RA7oND+vYD0UT9IJDVVHZYs6nlEnb0JmwCQI8kA==", "dev": true, "requires": { "@nrwl/devkit": "^14.2.4", @@ -15714,10 +17457,14 @@ }, "@angular-eslint/bundled-angular-compiler": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.2.tgz", + "integrity": "sha512-Ev001tGwBfy6lFd1IDrAHfW87VUqDmMQY5KWY+LM3dn0PY2XZv1RsBM16tBFbi7EaDeaxeFZg/G8PN5x+anNbg==", "dev": true }, "@angular-eslint/eslint-plugin": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.2.tgz", + "integrity": "sha512-TfiXWqaWGysnPB6JstZouvA9tNwIsCLvSIGqniE1U90kX6p5nL8Z09JOiv/9jlYfgAIEgUD48BGMZzDi86voGA==", "dev": true, "requires": { "@angular-eslint/utils": "14.0.2", @@ -15726,6 +17473,8 @@ }, "@angular-eslint/eslint-plugin-template": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.2.tgz", + "integrity": "sha512-egan0a2GVkubST4H7x2mPMTz3Ee9QXeLEchJyWXdFBZ6Nrpfjaki5dOQYhLU7KyxqhrSW4XugMWPGj2KW2gMxQ==", "dev": true, "requires": { "@angular-eslint/bundled-angular-compiler": "14.0.2", @@ -15736,6 +17485,8 @@ }, "@angular-eslint/schematics": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.2.tgz", + "integrity": "sha512-aLS13eaJmQZe02J3oZywvGOKonEhnHRIoJcVYovT4YRQ/QWmDzd7Ye81ta7C2x8YhKUWgU/7YQagBDGEP8XORw==", "dev": true, "requires": { "@angular-eslint/eslint-plugin": "14.0.2", @@ -15747,6 +17498,8 @@ }, "@angular-eslint/template-parser": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.2.tgz", + "integrity": "sha512-NTXSfL97WVs4GTKPtPcRZfWtvNbhgcIZUvKUTk5ieYiVLqsHF9Y+NlAKBh44AGldM5oCNO4HUfnvOedtqkQ+MA==", "dev": true, "requires": { "@angular-eslint/bundled-angular-compiler": "14.0.2", @@ -15755,6 +17508,8 @@ }, "@angular-eslint/utils": { "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.2.tgz", + "integrity": "sha512-8cHyQFG3jIHMHBjlqMU9ExAgOFGqbvxUa5EUvdc8wJUXtwhYx5NCQupdSpy/qG8gHiXjxvxinEtACZJQ9/SOwQ==", "dev": true, "requires": { "@angular-eslint/bundled-angular-compiler": "14.0.2", @@ -15763,12 +17518,16 @@ }, "@angular/animations": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.1.3.tgz", + "integrity": "sha512-AmnrsRWJxlIQPnnef3MCo9N7bbFmEWvyyDPB8z4UOYDqBwRBHnDn5g1rrVQzLJH7I1O2DLcm/EhWYJrfagQ2aQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/cdk": { "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", "requires": { "parse5": "^5.0.0", "tslib": "^2.3.0" @@ -15776,6 +17535,8 @@ }, "@angular/cli": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.3.tgz", + "integrity": "sha512-JAvxOXXGf4VCJUQLe3g0pDNnOnE5E7tJfhqsn77+TGrhFpYPMmZ8z747ohiFXrTqbSe0dWTwOfqwpAA41R1CeA==", "dev": true, "requires": { "@angular-devkit/architect": "0.1401.3", @@ -15802,18 +17563,24 @@ }, "@angular/common": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.1.3.tgz", + "integrity": "sha512-t5zidNLcQrgrShBFFsEhvJ6yKw5jwv/Td/AQrknQzrAz3kVBH4dOZGC5jolasFipy/P1DNoG2K+igPCGeskc4w==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.1.3.tgz", + "integrity": "sha512-QtBHzhGzym8CwGrZLFYsciaLq/F4lxUxNOBDQdrc5Pd/qYiaJ50rrWfmXpqrFR6CC0E0bgzIj0Uxdf+D/VRmWQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.1.3.tgz", + "integrity": "sha512-GJqUfIKuM7bYeR699ceRSa6LT90vEi2q+s+YIwRrlXSFto7xNCmn5bJsYV6XmslvPPTqiLR5w9K8MNC9qYBbxw==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -15830,40 +17597,54 @@ }, "@angular/core": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.1.3.tgz", + "integrity": "sha512-V3OJD4cShjLzyJAWQ1ogSW0WhKJwti5zsoT1SQ2RoA5UScBPzZN/F/0n/4IupHeaIC+NfaLX916xKTGWA8G8SQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.3.tgz", + "integrity": "sha512-gCN3my9KRp6BLlBGh4uw8NukUPKCl+quroMO2lkvsodF0MA42uhKHO+EImrpLxNMK7lfENIERwthb4mh4G4cFQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.3.tgz", + "integrity": "sha512-baEHBj2pCrz5XR9KCb2FaAChWsRrxl9yapDZFNpApucN/OlQpBDVA9UDDvaYeD3PsI8nVL3B6danKUloamd+pw==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.1.3.tgz", + "integrity": "sha512-WOWMgXUe8dEXt33jCP8/d8O5NQJKyr+4Dq2sjJ7y1ouCOjJsc9Ybi3y5uMyDCwb6SausGWLJ6w7DweMDWMlsYA==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.1.3.tgz", + "integrity": "sha512-LjWQBaeaGkgFy814booGmQV2eELDynzACGAZUwrpWmdHKo9p9GCi9dYttYXspNDmxoipXAzYvVPSABlMfhuQ+g==", "requires": { "tslib": "^2.3.0" } }, "@assemblyscript/loader": { "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", "dev": true }, "@babel/code-frame": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { "@babel/highlight": "^7.18.6" @@ -15871,10 +17652,14 @@ }, "@babel/compat-data": { "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true }, "@babel/core": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", + "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", @@ -15896,12 +17681,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/generator": { "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "requires": { "@babel/types": "^7.18.7", @@ -15911,6 +17700,8 @@ "dependencies": { "@jridgewell/gen-mapping": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -15922,6 +17713,8 @@ }, "@babel/helper-annotate-as-pure": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -15929,6 +17722,8 @@ }, "@babel/helper-builder-binary-assignment-operator-visitor": { "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", @@ -15937,6 +17732,8 @@ }, "@babel/helper-compilation-targets": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "requires": { "@babel/compat-data": "^7.20.5", @@ -15948,12 +17745,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/helper-create-class-features-plugin": { "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -15968,6 +17769,8 @@ }, "@babel/helper-create-regexp-features-plugin": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -15976,6 +17779,8 @@ }, "@babel/helper-define-polyfill-provider": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", @@ -15988,16 +17793,22 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/helper-environment-visitor": { "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": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -16005,6 +17816,8 @@ }, "@babel/helper-function-name": { "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { "@babel/template": "^7.18.10", @@ -16013,6 +17826,8 @@ "dependencies": { "@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16024,6 +17839,8 @@ }, "@babel/helper-hoist-variables": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -16031,6 +17848,8 @@ }, "@babel/helper-member-expression-to-functions": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "requires": { "@babel/types": "^7.20.7" @@ -16038,6 +17857,8 @@ }, "@babel/helper-module-imports": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -16045,6 +17866,8 @@ }, "@babel/helper-module-transforms": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -16059,6 +17882,8 @@ "dependencies": { "@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16070,6 +17895,8 @@ }, "@babel/helper-optimise-call-expression": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -16077,10 +17904,14 @@ }, "@babel/helper-plugin-utils": { "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { "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", @@ -16091,6 +17922,8 @@ }, "@babel/helper-replace-supers": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -16103,6 +17936,8 @@ "dependencies": { "@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16114,6 +17949,8 @@ }, "@babel/helper-simple-access": { "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "requires": { "@babel/types": "^7.20.2" @@ -16121,6 +17958,8 @@ }, "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "requires": { "@babel/types": "^7.20.0" @@ -16128,6 +17967,8 @@ }, "@babel/helper-split-export-declaration": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -16135,18 +17976,26 @@ }, "@babel/helper-string-parser": { "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true }, "@babel/helper-validator-identifier": { "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "requires": { "@babel/helper-function-name": "^7.19.0", @@ -16157,6 +18006,8 @@ "dependencies": { "@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16168,6 +18019,8 @@ }, "@babel/helpers": { "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, "requires": { "@babel/template": "^7.20.7", @@ -16177,6 +18030,8 @@ "dependencies": { "@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16188,6 +18043,8 @@ }, "@babel/highlight": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", @@ -16197,10 +18054,14 @@ }, "@babel/parser": { "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16208,6 +18069,8 @@ }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -16217,6 +18080,8 @@ }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", + "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.6", @@ -16227,6 +18092,8 @@ }, "@babel/plugin-proposal-class-properties": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -16235,6 +18102,8 @@ }, "@babel/plugin-proposal-class-static-block": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.20.7", @@ -16244,6 +18113,8 @@ }, "@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -16252,6 +18123,8 @@ }, "@babel/plugin-proposal-export-namespace-from": { "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.9", @@ -16260,6 +18133,8 @@ }, "@babel/plugin-proposal-json-strings": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -16268,6 +18143,8 @@ }, "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -16276,6 +18153,8 @@ }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -16284,6 +18163,8 @@ }, "@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -16292,6 +18173,8 @@ }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "requires": { "@babel/compat-data": "^7.20.5", @@ -16303,6 +18186,8 @@ }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -16311,6 +18196,8 @@ }, "@babel/plugin-proposal-optional-chaining": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -16320,6 +18207,8 @@ }, "@babel/plugin-proposal-private-methods": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -16328,6 +18217,8 @@ }, "@babel/plugin-proposal-private-property-in-object": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -16338,6 +18229,8 @@ }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -16346,6 +18239,8 @@ }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16353,6 +18248,8 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" @@ -16360,6 +18257,8 @@ }, "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -16367,6 +18266,8 @@ }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16374,6 +18275,8 @@ }, "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -16381,6 +18284,8 @@ }, "@babel/plugin-syntax-import-assertions": { "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0" @@ -16388,6 +18293,8 @@ }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16395,6 +18302,8 @@ }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -16402,6 +18311,8 @@ }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16409,6 +18320,8 @@ }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -16416,6 +18329,8 @@ }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16423,6 +18338,8 @@ }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16430,6 +18347,8 @@ }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -16437,6 +18356,8 @@ }, "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -16444,6 +18365,8 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -16451,6 +18374,8 @@ }, "@babel/plugin-transform-arrow-functions": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -16458,6 +18383,8 @@ }, "@babel/plugin-transform-async-to-generator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", @@ -16467,6 +18394,8 @@ }, "@babel/plugin-transform-block-scoped-functions": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16474,6 +18403,8 @@ }, "@babel/plugin-transform-block-scoping": { "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -16481,6 +18412,8 @@ }, "@babel/plugin-transform-classes": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -16496,6 +18429,8 @@ }, "@babel/plugin-transform-computed-properties": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -16504,6 +18439,8 @@ "dependencies": { "@babel/template": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16515,6 +18452,8 @@ }, "@babel/plugin-transform-destructuring": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -16522,6 +18461,8 @@ }, "@babel/plugin-transform-dotall-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -16530,6 +18471,8 @@ }, "@babel/plugin-transform-duplicate-keys": { "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.9" @@ -16537,6 +18480,8 @@ }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", @@ -16545,6 +18490,8 @@ }, "@babel/plugin-transform-for-of": { "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16552,6 +18499,8 @@ }, "@babel/plugin-transform-function-name": { "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.9", @@ -16561,6 +18510,8 @@ }, "@babel/plugin-transform-literals": { "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.9" @@ -16568,6 +18519,8 @@ }, "@babel/plugin-transform-member-expression-literals": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16575,6 +18528,8 @@ }, "@babel/plugin-transform-modules-amd": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.20.11", @@ -16583,6 +18538,8 @@ }, "@babel/plugin-transform-modules-commonjs": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.20.11", @@ -16592,6 +18549,8 @@ }, "@babel/plugin-transform-modules-systemjs": { "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", @@ -16602,6 +18561,8 @@ }, "@babel/plugin-transform-modules-umd": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", @@ -16610,6 +18571,8 @@ }, "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.20.5", @@ -16618,6 +18581,8 @@ }, "@babel/plugin-transform-new-target": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16625,6 +18590,8 @@ }, "@babel/plugin-transform-object-super": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -16633,6 +18600,8 @@ }, "@babel/plugin-transform-parameters": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -16640,6 +18609,8 @@ }, "@babel/plugin-transform-property-literals": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16647,6 +18618,8 @@ }, "@babel/plugin-transform-regenerator": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -16655,6 +18628,8 @@ }, "@babel/plugin-transform-reserved-words": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16662,6 +18637,8 @@ }, "@babel/plugin-transform-runtime": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", + "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", @@ -16674,12 +18651,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/plugin-transform-shorthand-properties": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16687,6 +18668,8 @@ }, "@babel/plugin-transform-spread": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -16695,6 +18678,8 @@ }, "@babel/plugin-transform-sticky-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -16702,6 +18687,8 @@ }, "@babel/plugin-transform-template-literals": { "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.9" @@ -16709,6 +18696,8 @@ }, "@babel/plugin-transform-typeof-symbol": { "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.9" @@ -16716,6 +18705,8 @@ }, "@babel/plugin-transform-unicode-escapes": { "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -16723,6 +18714,8 @@ }, "@babel/plugin-transform-unicode-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -16731,6 +18724,8 @@ }, "@babel/preset-env": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", + "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", "dev": true, "requires": { "@babel/compat-data": "^7.18.6", @@ -16812,12 +18807,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/preset-modules": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -16827,8 +18826,16 @@ "esutils": "^2.0.2" } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/runtime": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", + "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -16836,6 +18843,8 @@ }, "@babel/template": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16845,6 +18854,8 @@ }, "@babel/traverse": { "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -16861,6 +18872,8 @@ "dependencies": { "@babel/generator": { "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, "requires": { "@babel/types": "^7.20.7", @@ -16870,6 +18883,8 @@ }, "@jridgewell/gen-mapping": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -16881,6 +18896,8 @@ }, "@babel/types": { "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", @@ -16890,10 +18907,14 @@ }, "@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true }, "@csstools/postcss-cascade-layers": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.2", @@ -16902,6 +18923,8 @@ }, "@csstools/postcss-color-function": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -16910,6 +18933,8 @@ }, "@csstools/postcss-font-format-keywords": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -16917,6 +18942,8 @@ }, "@csstools/postcss-hwb-function": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -16924,6 +18951,8 @@ }, "@csstools/postcss-ic-unit": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -16932,6 +18961,8 @@ }, "@csstools/postcss-is-pseudo-class": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -16940,6 +18971,8 @@ }, "@csstools/postcss-normalize-display-values": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -16947,6 +18980,8 @@ }, "@csstools/postcss-oklab-function": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -16955,6 +18990,8 @@ }, "@csstools/postcss-progressive-custom-properties": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -16962,6 +18999,8 @@ }, "@csstools/postcss-stepped-value-functions": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -16969,6 +19008,8 @@ }, "@csstools/postcss-trigonometric-functions": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -16976,16 +19017,22 @@ }, "@csstools/postcss-unset-value": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", "dev": true, "requires": {} }, "@csstools/selector-specificity": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", + "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", "dev": true, "requires": {} }, "@cypress-audit/lighthouse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@cypress-audit/lighthouse/-/lighthouse-1.3.1.tgz", + "integrity": "sha512-qBLlAgiYcQsCHUFRB7aFIXhk7EipF/ZtoBLruadKR4wkZhDyZJ4QtJh1YqCny4zi4Iy7WCG1tXQfH62eabLS4A==", "dev": true, "requires": { "@cypress-audit/shared": "^1.3.1", @@ -16994,10 +19041,14 @@ }, "@cypress-audit/shared": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@cypress-audit/shared/-/shared-1.3.1.tgz", + "integrity": "sha512-iE4yGh5hw+ICrP3xZXYmDbNHECyAXyKbpRQ604FvMOxrXQVCBZq24MSKKLLUBAgpcAkv09XCW3utx39OYozVTA==", "dev": true }, "@cypress/request": { "version": "2.88.11", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", + "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -17022,6 +19073,8 @@ }, "@cypress/schematic": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-1.7.0.tgz", + "integrity": "sha512-CouQrVlZ+uHVVBQtmNoMYU9LyoSAmQTOLDpVjrdTdMPpJH1mWnHCL5OCMt+FZLR+43KRiWEvDUjNqSza11oGsQ==", "dev": true, "requires": { "@angular-devkit/architect": "^0.1202.10", @@ -17034,6 +19087,8 @@ "dependencies": { "@angular-devkit/architect": { "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.18", @@ -17042,6 +19097,8 @@ }, "@angular-devkit/core": { "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", @@ -17054,6 +19111,8 @@ }, "@angular-devkit/schematics": { "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.18", @@ -17063,6 +19122,8 @@ }, "@schematics/angular": { "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.18", @@ -17072,6 +19133,8 @@ }, "ajv": { "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17082,6 +19145,8 @@ }, "ajv-formats": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", + "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", "dev": true, "requires": { "ajv": "^8.0.0" @@ -17089,10 +19154,14 @@ }, "jsonc-parser": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, "magic-string": { "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -17100,6 +19169,8 @@ }, "rxjs": { "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -17107,16 +19178,22 @@ }, "source-map": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, "requires": { "debug": "^3.1.0", @@ -17125,6 +19202,8 @@ "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -17134,10 +19213,14 @@ }, "@discoveryjs/json-ext": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, "@eslint/eslintrc": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -17153,6 +19236,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17163,10 +19248,14 @@ }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -17175,6 +19264,8 @@ }, "globals": { "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -17182,6 +19273,8 @@ }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -17189,10 +19282,14 @@ }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -17200,16 +19297,22 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "@gar/promisify": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, "@humanwhocodes/config-array": { "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -17219,6 +19322,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -17227,6 +19332,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -17236,14 +19343,20 @@ }, "@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, "@humanwhocodes/object-schema": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -17255,10 +19368,14 @@ }, "@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@jridgewell/gen-mapping": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.0", @@ -17267,14 +19384,20 @@ }, "@jridgewell/resolve-uri": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true }, "@jridgewell/set-array": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, "@jridgewell/source-map": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -17283,6 +19406,8 @@ "dependencies": { "@jridgewell/gen-mapping": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -17294,10 +19419,14 @@ }, "@jridgewell/sourcemap-codec": { "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", @@ -17306,27 +19435,37 @@ }, "@leichtgewicht/ip-codec": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, "@ngrx/effects": { "version": "14.3.3", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-14.3.3.tgz", + "integrity": "sha512-bP7rIHlu1KAj5Wm0TWR7Q8VlOQOBu8uiN/fDP3Lqi8FwVW6HOq9eBGcFwJGyqwVAmulsvLFB68MhpMYg2W78+w==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/store": { "version": "14.3.3", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-14.3.3.tgz", + "integrity": "sha512-VhPDR2a5OQJfrVRah3vdJgL/F6UC8NU/X7lxKFqBW3NC+pmlIeFO/y8jLrZOKBXwG45tY9wrg15S70nEGoZtHA==", "requires": { "tslib": "^2.0.0" } }, "@ngtools/webpack": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.3.tgz", + "integrity": "sha512-tP2aiWKezhOVcR/PhVHcxKohO4ShKrhD42wgbJPbcqHeenOv1Hf5nW1nyUviqeF8QbVmPdBPF/ZOB8hIq5o6sw==", "dev": true, "requires": {} }, "@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", @@ -17335,10 +19474,14 @@ }, "@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", @@ -17347,6 +19490,8 @@ }, "@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -17355,6 +19500,8 @@ }, "@npmcli/git": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "requires": { "@npmcli/promise-spawn": "^3.0.0", @@ -17370,12 +19517,16 @@ "dependencies": { "lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true } } }, "@npmcli/installed-package-contents": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, "requires": { "npm-bundled": "^1.1.1", @@ -17384,6 +19535,8 @@ }, "@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -17392,10 +19545,14 @@ }, "@npmcli/node-gyp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true }, "@npmcli/promise-spawn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, "requires": { "infer-owner": "^1.0.4" @@ -17403,6 +19560,8 @@ }, "@npmcli/run-script": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "requires": { "@npmcli/node-gyp": "^2.0.0", @@ -17414,6 +19573,8 @@ }, "@nrwl/cli": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", + "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", "dev": true, "requires": { "nx": "14.8.6" @@ -17421,6 +19582,8 @@ }, "@nrwl/devkit": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", + "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", "dev": true, "requires": { "@phenomnomnominal/tsquery": "4.1.1", @@ -17431,6 +19594,8 @@ }, "@nrwl/tao": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", + "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", "dev": true, "requires": { "nx": "14.8.6" @@ -17438,6 +19603,8 @@ }, "@parcel/watcher": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "requires": { "node-addon-api": "^3.2.1", @@ -17446,16 +19613,22 @@ }, "@phenomnomnominal/tsquery": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", "dev": true, "requires": { "esquery": "^1.0.1" } }, "@popperjs/core": { - "version": "2.11.6" + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, "@schematics/angular": { "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz", + "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==", "dev": true, "requires": { "@angular-devkit/core": "14.1.3", @@ -17465,6 +19638,8 @@ }, "@sentry/core": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", "dev": true, "requires": { "@sentry/hub": "6.19.7", @@ -17476,12 +19651,16 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@sentry/hub": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", "dev": true, "requires": { "@sentry/types": "6.19.7", @@ -17491,12 +19670,16 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@sentry/minimal": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", "dev": true, "requires": { "@sentry/hub": "6.19.7", @@ -17506,12 +19689,16 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@sentry/node": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", "dev": true, "requires": { "@sentry/core": "6.19.7", @@ -17526,16 +19713,22 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@sentry/types": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", "dev": true }, "@sentry/utils": { "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", "dev": true, "requires": { "@sentry/types": "6.19.7", @@ -17544,20 +19737,28 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@socket.io/component-emitter": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, "@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, "@types/body-parser": { "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, "requires": { "@types/connect": "*", @@ -17566,6 +19767,8 @@ }, "@types/bonjour": { "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", "dev": true, "requires": { "@types/node": "*" @@ -17573,6 +19776,8 @@ }, "@types/connect": { "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dev": true, "requires": { "@types/node": "*" @@ -17580,6 +19785,8 @@ }, "@types/connect-history-api-fallback": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", "dev": true, "requires": { "@types/express-serve-static-core": "*", @@ -17588,17 +19795,23 @@ }, "@types/cookie": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true }, "@types/cors": { "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", "dev": true, "requires": { "@types/node": "*" } }, "@types/eslint": { - "version": "8.21.0", + "version": "8.21.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", + "integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", "dev": true, "requires": { "@types/estree": "*", @@ -17607,6 +19820,8 @@ }, "@types/eslint-scope": { "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -17615,10 +19830,14 @@ }, "@types/estree": { "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "@types/express": { "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "requires": { "@types/body-parser": "*", @@ -17629,6 +19848,8 @@ }, "@types/express-serve-static-core": { "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", "dev": true, "requires": { "@types/node": "*", @@ -17638,6 +19859,8 @@ }, "@types/http-proxy": { "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "requires": { "@types/node": "*" @@ -17645,6 +19868,8 @@ }, "@types/intl-tel-input": { "version": "17.0.6", + "resolved": "https://registry.npmjs.org/@types/intl-tel-input/-/intl-tel-input-17.0.6.tgz", + "integrity": "sha512-Xqkfun/71N3wqvnwFzZiBacC3JsHHgYWjOEXxzl91nXrm/b/DLhDWM7baXOZksfLwggyOsn/McT1/neJejXmVg==", "dev": true, "requires": { "@types/jquery": "*" @@ -17652,10 +19877,14 @@ }, "@types/jasmine": { "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.7.tgz", + "integrity": "sha512-brLuHhITMz4YV2IxLstAJtyRJgtWfLqFKiqiJFvFWMSmydpAmn42CE4wfw7ywkSk02UrufhtzipTcehk8FctoQ==", "dev": true }, "@types/jquery": { "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", + "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", "dev": true, "requires": { "@types/sizzle": "*" @@ -17663,46 +19892,68 @@ }, "@types/json-schema": { "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/lodash": { "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", "dev": true }, "@types/luxon": { "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": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/node": { "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true }, "@types/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, "@types/qs": { "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, "@types/range-parser": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, "@types/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "@types/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, "requires": { "@types/express": "*" @@ -17710,6 +19961,8 @@ }, "@types/serve-static": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { "@types/mime": "*", @@ -17718,14 +19971,20 @@ }, "@types/sinonjs__fake-timers": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", "dev": true }, "@types/sizzle": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "dev": true }, "@types/sockjs": { "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", "dev": true, "requires": { "@types/node": "*" @@ -17733,6 +19992,8 @@ }, "@types/ws": { "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "dev": true, "requires": { "@types/node": "*" @@ -17740,6 +20001,8 @@ }, "@types/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, "optional": true, "requires": { @@ -17748,6 +20011,8 @@ }, "@typescript-eslint/eslint-plugin": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.11.0.tgz", + "integrity": "sha512-HJh33bgzXe6jGRocOj4FmefD7hRY4itgjzOrSs3JPrTNXsX7j5+nQPciAUj/1nZtwo2kAc3C75jZO+T23gzSGw==", "dev": true, "requires": { "@typescript-eslint/scope-manager": "5.11.0", @@ -17763,6 +20028,8 @@ "dependencies": { "@typescript-eslint/utils": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", + "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -17777,6 +20044,8 @@ }, "@typescript-eslint/parser": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.11.0.tgz", + "integrity": "sha512-x0DCjetHZYBRovJdr3U0zG9OOdNXUaFLJ82ehr1AlkArljJuwEsgnud+Q7umlGDFLFrs8tU8ybQDFocp/eX8mQ==", "dev": true, "requires": { "@typescript-eslint/scope-manager": "5.11.0", @@ -17787,6 +20056,8 @@ }, "@typescript-eslint/scope-manager": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz", + "integrity": "sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA==", "dev": true, "requires": { "@typescript-eslint/types": "5.11.0", @@ -17795,6 +20066,8 @@ }, "@typescript-eslint/type-utils": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.11.0.tgz", + "integrity": "sha512-wDqdsYO6ofLaD4DsGZ0jGwxp4HrzD2YKulpEZXmgN3xo4BHJwf7kq49JTRpV0Gx6bxkSUmc9s0EIK1xPbFFpIA==", "dev": true, "requires": { "@typescript-eslint/utils": "5.11.0", @@ -17804,6 +20077,8 @@ "dependencies": { "@typescript-eslint/utils": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", + "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -17818,10 +20093,14 @@ }, "@typescript-eslint/types": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.11.0.tgz", + "integrity": "sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz", + "integrity": "sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==", "dev": true, "requires": { "@typescript-eslint/types": "5.11.0", @@ -17835,6 +20114,8 @@ }, "@typescript-eslint/utils": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -17847,6 +20128,8 @@ "dependencies": { "@typescript-eslint/scope-manager": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, "requires": { "@typescript-eslint/types": "5.29.0", @@ -17855,10 +20138,14 @@ }, "@typescript-eslint/types": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, "requires": { "@typescript-eslint/types": "5.29.0", @@ -17872,6 +20159,8 @@ }, "@typescript-eslint/visitor-keys": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", "dev": true, "requires": { "@typescript-eslint/types": "5.29.0", @@ -17882,6 +20171,8 @@ }, "@typescript-eslint/visitor-keys": { "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz", + "integrity": "sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA==", "dev": true, "requires": { "@typescript-eslint/types": "5.11.0", @@ -17890,6 +20181,8 @@ }, "@webassemblyjs/ast": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", @@ -17898,18 +20191,26 @@ }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", @@ -17919,10 +20220,14 @@ }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -17933,6 +20238,8 @@ }, "@webassemblyjs/ieee754": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" @@ -17940,6 +20247,8 @@ }, "@webassemblyjs/leb128": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" @@ -17947,10 +20256,14 @@ }, "@webassemblyjs/utf8": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -17965,6 +20278,8 @@ }, "@webassemblyjs/wasm-gen": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -17976,6 +20291,8 @@ }, "@webassemblyjs/wasm-opt": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -17986,6 +20303,8 @@ }, "@webassemblyjs/wasm-parser": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -17998,6 +20317,8 @@ }, "@webassemblyjs/wast-printer": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -18006,18 +20327,26 @@ }, "@xtuc/ieee754": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, "@xtuc/long": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "@yarnpkg/lockfile": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, "@yarnpkg/parsers": { - "version": "3.0.0-rc.38", + "version": "3.0.0-rc.39", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", + "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -18026,6 +20355,8 @@ }, "@zkochan/js-yaml": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -18033,20 +20364,28 @@ "dependencies": { "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true } } }, "abab": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "abbrev": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "accepts": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { "mime-types": "~2.1.34", @@ -18055,20 +20394,28 @@ }, "acorn": { "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-import-assertions": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, "requires": {} }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, "adjust-sourcemap-loader": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, "requires": { "loader-utils": "^2.0.0", @@ -18077,6 +20424,8 @@ "dependencies": { "loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -18088,6 +20437,8 @@ }, "agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { "debug": "4" @@ -18095,6 +20446,8 @@ }, "agentkeepalive": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -18104,12 +20457,16 @@ "dependencies": { "depd": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true } } }, "aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -18118,6 +20475,8 @@ }, "ajv": { "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -18127,6 +20486,8 @@ }, "ajv-formats": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "requires": { "ajv": "^8.0.0" @@ -18134,6 +20495,8 @@ }, "ajv-keywords": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.3" @@ -18141,10 +20504,14 @@ }, "ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, "ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { "type-fest": "^0.21.3" @@ -18152,14 +20519,20 @@ }, "ansi-html-community": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -18167,6 +20540,8 @@ }, "anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -18175,14 +20550,20 @@ }, "aproba": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "arch": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, "are-we-there-yet": { "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", @@ -18191,6 +20572,8 @@ }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -18198,26 +20581,38 @@ }, "aria-query": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", "dev": true }, "array-find-index": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "dev": true }, "array-flatten": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, "array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, "asap": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -18225,30 +20620,44 @@ }, "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, "astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, "atob": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "autoprefixer": { "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "dev": true, "requires": { "browserslist": "^4.21.4", @@ -18261,18 +20670,26 @@ }, "aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true }, "aws4": { "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, "axe-core": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", "dev": true }, "axios": { - "version": "1.3.2", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -18282,6 +20699,8 @@ "dependencies": { "form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -18291,16 +20710,22 @@ }, "proxy-from-env": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true } } }, "axobject-query": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", "dev": true }, "babel-loader": { "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", @@ -18311,6 +20736,8 @@ "dependencies": { "loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -18322,6 +20749,8 @@ }, "babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -18333,6 +20762,8 @@ }, "babel-plugin-polyfill-corejs2": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "requires": { "@babel/compat-data": "^7.17.7", @@ -18342,12 +20773,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "babel-plugin-polyfill-corejs3": { "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.2", @@ -18356,6 +20791,8 @@ }, "babel-plugin-polyfill-regenerator": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.1" @@ -18363,22 +20800,32 @@ }, "balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "base64id": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, "batch": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -18386,14 +20833,20 @@ }, "big.js": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, "binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "requires": { "buffer": "^5.5.0", @@ -18403,14 +20856,20 @@ }, "blob-util": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", "dev": true }, "bluebird": { "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "body-parser": { "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -18429,6 +20888,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -18436,10 +20897,14 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "qs": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -18449,6 +20914,8 @@ }, "bonjour-service": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz", + "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==", "dev": true, "requires": { "array-flatten": "^2.1.2", @@ -18459,14 +20926,20 @@ }, "boolbase": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "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==", "requires": {} }, "brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -18474,6 +20947,8 @@ }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -18481,11 +20956,15 @@ }, "browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, "peer": true }, "browserslist": { "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001449", @@ -18496,6 +20975,8 @@ }, "buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { "base64-js": "^1.3.1", @@ -18504,14 +20985,20 @@ }, "buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-from": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "requires": { "semver": "^7.0.0" @@ -18519,10 +21006,14 @@ }, "bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "cacache": { "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", @@ -18547,16 +21038,22 @@ "dependencies": { "lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true } } }, "cachedir": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true }, "call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -18565,22 +21062,32 @@ }, "callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caniuse-lite": { - "version": "1.0.30001450", + "version": "1.0.30001452", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz", + "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==", "dev": true }, "caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -18590,14 +21097,20 @@ }, "chardet": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "check-more-types": { "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true }, "chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -18612,10 +21125,14 @@ }, "chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, "chrome-launcher": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", + "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", "dev": true, "requires": { "@types/node": "*", @@ -18626,27 +21143,39 @@ "dependencies": { "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true } } }, "chrome-trace-event": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, "ci-info": { - "version": "3.7.1", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "class-transformer": { - "version": "0.5.1" + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" }, "clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { "restore-cursor": "^3.1.0" @@ -18654,10 +21183,14 @@ }, "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 }, "cli-table3": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -18666,6 +21199,8 @@ }, "cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "requires": { "slice-ansi": "^3.0.0", @@ -18674,10 +21209,14 @@ }, "cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -18687,10 +21226,14 @@ }, "clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { "is-plain-object": "^2.0.4", @@ -18700,6 +21243,8 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -18707,22 +21252,32 @@ }, "color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, "colorette": { "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "colors": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -18730,18 +21285,26 @@ }, "commander": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, "common-tags": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true }, "commondir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "compressible": { "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { "mime-db": ">= 1.43.0 < 2" @@ -18749,6 +21312,8 @@ }, "compression": { "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { "accepts": "~1.3.5", @@ -18762,10 +21327,14 @@ "dependencies": { "bytes": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -18773,20 +21342,28 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true } } }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "configstore": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, "requires": { "dot-prop": "^5.2.0", @@ -18799,6 +21376,8 @@ }, "connect": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "requires": { "debug": "2.6.9", @@ -18809,6 +21388,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -18816,20 +21397,28 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "connect-history-api-fallback": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true }, "console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "content-disposition": { "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { "safe-buffer": "5.2.1" @@ -18837,22 +21426,32 @@ }, "content-type": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, "convert-source-map": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, "cookie": { "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true }, "cookie-signature": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "copy-anything": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "requires": { "is-what": "^3.14.1" @@ -18860,6 +21459,8 @@ }, "copy-webpack-plugin": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "requires": { "fast-glob": "^3.2.11", @@ -18872,6 +21473,8 @@ "dependencies": { "glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { "is-glob": "^4.0.3" @@ -18879,6 +21482,8 @@ }, "globby": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "requires": { "dir-glob": "^3.0.1", @@ -18890,6 +21495,8 @@ }, "schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -18900,23 +21507,31 @@ }, "slash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true } } }, "core-js-compat": { - "version": "3.27.2", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz", + "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==", "dev": true, "requires": { - "browserslist": "^4.21.4" + "browserslist": "^4.21.5" } }, "core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, "cors": { "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "requires": { "object-assign": "^4", @@ -18925,6 +21540,8 @@ }, "cosmiconfig": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -18936,6 +21553,8 @@ }, "critters": { "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -18948,6 +21567,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -18955,6 +21576,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -18963,6 +21586,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -18970,18 +21595,26 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -18991,6 +21624,8 @@ }, "cross-fetch": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, "requires": { "node-fetch": "2.6.7" @@ -18998,6 +21633,8 @@ }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -19007,14 +21644,20 @@ }, "crypto-random-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, "csp_evaluator": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz", + "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==", "dev": true }, "css": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, "requires": { "inherits": "^2.0.4", @@ -19024,12 +21667,16 @@ "dependencies": { "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "css-blank-pseudo": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -19037,6 +21684,8 @@ }, "css-has-pseudo": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -19044,6 +21693,8 @@ }, "css-loader": { "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "requires": { "icss-utils": "^5.1.0", @@ -19058,11 +21709,15 @@ }, "css-prefers-color-scheme": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, "requires": {} }, "css-select": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "requires": { "boolbase": "^1.0.0", @@ -19074,22 +21729,32 @@ }, "css-what": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "cssdb": { "version": "6.6.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", + "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", "dev": true }, "cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssom": { "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, "cssstyle": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", + "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", "dev": true, "requires": { "cssom": "0.3.x" @@ -19097,10 +21762,14 @@ }, "custom-event": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true }, "cypress": { "version": "10.11.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", + "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -19149,10 +21818,14 @@ "dependencies": { "@types/node": { "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", "dev": true }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -19160,6 +21833,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -19168,6 +21843,8 @@ "dependencies": { "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -19177,6 +21854,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -19184,14 +21863,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -19200,7 +21885,9 @@ } }, "cypress-mochawesome-reporter": { - "version": "3.2.3", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cypress-mochawesome-reporter/-/cypress-mochawesome-reporter-3.3.0.tgz", + "integrity": "sha512-X4HU1JpuB62MXLh46660KmIs/L6noWV2KpxaXPDorz1zwgj26NN+BPCLP80D9cCFUwX3hNH0pKFZDwVR7vM8wg==", "dev": true, "requires": { "fs-extra": "^10.0.1", @@ -19211,6 +21898,8 @@ "dependencies": { "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==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -19222,6 +21911,8 @@ }, "dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -19229,18 +21920,26 @@ }, "date-format": { "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true }, "dateformat": { "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true }, "dayjs": { "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", "dev": true }, "debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -19248,26 +21947,38 @@ }, "debuglog": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "dev": true }, "decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "peer": true }, "decode-uri-component": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, "deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepmerge": { - "version": "4.3.0" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==" }, "default-gateway": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { "execa": "^5.0.0" @@ -19275,6 +21986,8 @@ "dependencies": { "execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -19290,16 +22003,22 @@ }, "get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true } } }, "defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -19307,38 +22026,56 @@ }, "define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, "delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "delegates": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "dependency-graph": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, "destroy": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-node": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, "devtools-protocol": { "version": "0.0.981744", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", "dev": true }, "dezalgo": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "requires": { "asap": "^2.0.0", @@ -19347,14 +22084,20 @@ }, "di": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true }, "diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { "path-type": "^4.0.0" @@ -19362,10 +22105,14 @@ }, "dns-equal": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, "requires": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -19373,6 +22120,8 @@ }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -19380,6 +22129,8 @@ }, "dom-serialize": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, "requires": { "custom-event": "~1.0.0", @@ -19390,6 +22141,8 @@ }, "dom-serializer": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -19399,10 +22152,14 @@ }, "domelementtype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -19410,6 +22167,8 @@ }, "domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -19419,6 +22178,8 @@ }, "dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { "is-obj": "^2.0.0" @@ -19426,14 +22187,20 @@ }, "dotenv": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true }, "duplexer": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, "ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -19442,33 +22209,47 @@ }, "ee-first": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "ejs": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "requires": { "jake": "^10.8.5" } }, "electron-to-chromium": { - "version": "1.4.288", + "version": "1.4.297", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.297.tgz", + "integrity": "sha512-dTXLXBdzfDYnZYq+bLer21HrFsEkzlR2OSIOsR+qroDmhmQU3i4T4KdY0Lcp83ZId3HnWTpPAEfhaJtVxmS/dQ==", "dev": true }, "emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "optional": true, "requires": { @@ -19477,6 +22258,8 @@ "dependencies": { "iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "optional": true, "requires": { @@ -19487,6 +22270,8 @@ }, "end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" @@ -19494,6 +22279,8 @@ }, "engine.io": { "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", + "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -19510,6 +22297,8 @@ "dependencies": { "ws": { "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} } @@ -19517,10 +22306,14 @@ }, "engine.io-parser": { "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", "dev": true }, "enhanced-resolve": { "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -19529,6 +22322,8 @@ }, "enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -19536,22 +22331,32 @@ }, "ent": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", "dev": true }, "entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, "env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, "err-code": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, "errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "optional": true, "requires": { @@ -19560,6 +22365,8 @@ }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -19567,10 +22374,14 @@ }, "es-module-lexer": { "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, "esbuild": { "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", + "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", "dev": true, "optional": true, "requires": { @@ -19596,29 +22407,174 @@ "esbuild-windows-arm64": "0.14.49" } }, + "esbuild-android-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", + "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", + "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", + "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", + "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", + "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", + "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", + "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "dev": true, + "optional": true + }, "esbuild-linux-64": { "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", + "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", + "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", + "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", + "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", + "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", + "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", + "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", + "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", + "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", + "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", "dev": true, "optional": true }, "esbuild-wasm": { "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", + "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", "dev": true }, + "esbuild-windows-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", + "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", + "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", + "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "dev": true, + "optional": true + }, "escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-html": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "eslint": { - "version": "8.33.0", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, "requires": { "@eslint/eslintrc": "^1.4.1", @@ -19664,6 +22620,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -19674,6 +22632,8 @@ }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -19681,10 +22641,14 @@ }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -19693,6 +22657,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -19701,6 +22667,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -19708,14 +22676,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint-scope": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -19724,10 +22698,14 @@ }, "estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { "locate-path": "^6.0.0", @@ -19736,6 +22714,8 @@ }, "glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { "is-glob": "^4.0.3" @@ -19743,6 +22723,8 @@ }, "globals": { "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -19750,10 +22732,14 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -19761,10 +22747,14 @@ }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { "p-locate": "^5.0.0" @@ -19772,6 +22762,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -19779,6 +22771,8 @@ }, "p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -19786,6 +22780,8 @@ }, "p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { "p-limit": "^3.0.2" @@ -19793,6 +22789,8 @@ }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -19800,12 +22798,16 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -19814,6 +22816,8 @@ }, "eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { "eslint-visitor-keys": "^2.0.0" @@ -19821,16 +22825,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, "eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -19840,10 +22850,14 @@ }, "esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -19851,12 +22865,16 @@ "dependencies": { "estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" @@ -19864,40 +22882,58 @@ "dependencies": { "estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter-asyncresource": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", "dev": true }, "eventemitter2": { "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "dev": true }, "eventemitter3": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, "events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -19913,6 +22949,8 @@ }, "executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, "requires": { "pify": "^2.2.0" @@ -19920,6 +22958,8 @@ }, "express": { "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", @@ -19957,14 +22997,20 @@ "dependencies": { "array-flatten": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "cookie": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -19972,6 +23018,8 @@ }, "finalhandler": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { "debug": "2.6.9", @@ -19985,10 +23033,14 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "qs": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -19996,16 +23048,22 @@ }, "statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, "extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -20015,6 +23073,8 @@ "dependencies": { "tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -20024,6 +23084,8 @@ }, "extract-zip": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "requires": { "@types/yauzl": "^2.9.1", @@ -20034,13 +23096,19 @@ }, "extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, "fast-deep-equal": { - "version": "3.1.3" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -20052,14 +23120,20 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastq": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -20067,6 +23141,8 @@ }, "faye-websocket": { "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -20074,6 +23150,8 @@ }, "fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -20089,6 +23167,8 @@ }, "figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -20096,6 +23176,8 @@ }, "file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -20103,6 +23185,8 @@ }, "filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -20110,6 +23194,8 @@ }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -20117,6 +23203,8 @@ }, "finalhandler": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { "debug": "2.6.9", @@ -20130,6 +23218,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -20137,10 +23227,14 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "on-finished": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -20150,6 +23244,8 @@ }, "find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -20159,6 +23255,8 @@ }, "find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -20167,10 +23265,14 @@ }, "flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, "flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -20179,18 +23281,26 @@ }, "flatted": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -20200,22 +23310,32 @@ }, "forwarded": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, "fraction.js": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, "fresh": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fs-constants": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, "fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { "at-least-node": "^1.0.0", @@ -20226,6 +23346,8 @@ }, "fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -20233,26 +23355,45 @@ }, "fs-monkey": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", "dev": true }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "fsu": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz", + "integrity": "sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==", "dev": true }, "function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, "gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "requires": { "aproba": "^1.0.3 || ^2.0.0", @@ -20267,14 +23408,20 @@ }, "gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-intrinsic": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -20284,10 +23431,14 @@ }, "get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -20295,6 +23446,8 @@ }, "getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, "requires": { "async": "^3.2.0" @@ -20302,6 +23455,8 @@ }, "getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -20309,6 +23464,8 @@ }, "glob": { "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -20320,6 +23477,8 @@ }, "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -20327,10 +23486,14 @@ }, "glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, "global-dirs": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, "requires": { "ini": "2.0.0" @@ -20338,16 +23501,22 @@ "dependencies": { "ini": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true } } }, "globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -20360,18 +23529,26 @@ }, "graceful-fs": { "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "grapheme-splitter": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, "handle-thing": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, "has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -20379,18 +23556,26 @@ }, "has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "has-symbols": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "hdr-histogram-js": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", "dev": true, "requires": { "@assemblyscript/loader": "^0.10.1", @@ -20400,15 +23585,21 @@ }, "hdr-histogram-percentiles-obj": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true }, "he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "peer": true }, "hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "requires": { "lru-cache": "^7.5.1" @@ -20416,12 +23607,16 @@ "dependencies": { "lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true } } }, "hpack.js": { "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -20432,6 +23627,8 @@ "dependencies": { "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -20445,10 +23642,14 @@ }, "safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -20458,22 +23659,32 @@ }, "html-entities": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "http-cache-semantics": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-deceiver": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { "depd": "2.0.0", @@ -20485,20 +23696,28 @@ "dependencies": { "statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, "http-link-header": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-0.8.0.tgz", + "integrity": "sha512-qsh/wKe1Mk1vtYEFr+LpQBFWTO1gxZQBdii2D0Umj+IUQ23r5sT088Rhpq4XzpSyIpaX7vwjB8Rrtx8u9JTg+Q==", "dev": true }, "http-parser-js": { "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy": { "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -20508,6 +23727,8 @@ }, "http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "requires": { "@tootallnate/once": "2", @@ -20517,6 +23738,8 @@ }, "http-proxy-middleware": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "requires": { "@types/http-proxy": "^1.17.8", @@ -20528,6 +23751,8 @@ }, "http-signature": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -20537,6 +23762,8 @@ }, "https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -20545,10 +23772,14 @@ }, "human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, "humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "requires": { "ms": "^2.0.0" @@ -20556,6 +23787,8 @@ }, "iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -20563,19 +23796,27 @@ }, "icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "requires": {} }, "ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "ignore": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "ignore-walk": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -20583,19 +23824,27 @@ }, "image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "optional": true }, "image-ssim": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", + "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==", "dev": true }, "immutable": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", "dev": true }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -20604,24 +23853,34 @@ "dependencies": { "resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true } } }, "imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "infer-owner": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -20630,14 +23889,20 @@ }, "inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "ini": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", "dev": true }, "inquirer": { "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -20659,6 +23924,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -20666,6 +23933,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -20674,6 +23943,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -20681,14 +23952,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -20698,6 +23975,8 @@ }, "intl-messageformat": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-4.4.0.tgz", + "integrity": "sha512-z+Bj2rS3LZSYU4+sNitdHrwnBhr0wO80ZJSW8EzKDBowwUe3Q/UsvgCGjrwa+HPzoGCLEb9HAjfJgo4j2Sac8w==", "dev": true, "requires": { "intl-messageformat-parser": "^1.8.1" @@ -20705,25 +23984,37 @@ }, "intl-messageformat-parser": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz", + "integrity": "sha512-IMSCKVf0USrM/959vj3xac7s8f87sc+80Y/ipBzdKy4ifBv5Gsj2tZ41EAaURVg01QU71fYr77uA8Meh6kELbg==", "dev": true }, "intl-tel-input": { - "version": "17.0.19" + "version": "17.0.19", + "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-17.0.19.tgz", + "integrity": "sha512-GBNoUT4JVgm2e1N+yFMaBQ24g5EQfZhDznGneCM9IEZwfKsMUAUa1dS+v0wOiKpRAZ5IPNLJMIEEFGgqlCI22A==" }, "ip": { "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": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, "is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -20731,6 +24022,8 @@ }, "is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "requires": { "ci-info": "^3.2.0" @@ -20738,6 +24031,8 @@ }, "is-core-module": { "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -20745,18 +24040,26 @@ }, "is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -20764,6 +24067,8 @@ }, "is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { "global-dirs": "^3.0.0", @@ -20772,30 +24077,44 @@ }, "is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, "is-lambda": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, "is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, "is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true }, "is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -20803,22 +24122,32 @@ }, "is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, "is-what": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, "is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { "is-docker": "^2.0.0" @@ -20826,30 +24155,44 @@ }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isbinaryfile": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true }, "isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "isstream": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, "istanbul-lib-coverage": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -20861,12 +24204,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", @@ -20876,10 +24223,14 @@ "dependencies": { "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -20889,6 +24240,8 @@ }, "istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -20898,12 +24251,16 @@ "dependencies": { "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "istanbul-reports": { "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", @@ -20912,6 +24269,8 @@ }, "jake": { "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "requires": { "async": "^3.2.3", @@ -20922,6 +24281,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -20929,6 +24290,8 @@ }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -20937,6 +24300,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -20945,6 +24310,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -20952,14 +24319,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -20967,6 +24340,8 @@ }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -20976,10 +24351,14 @@ }, "jasmine-core": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.1.tgz", + "integrity": "sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg==", "dev": true }, "jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -20989,10 +24368,14 @@ "dependencies": { "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -21002,22 +24385,32 @@ }, "jpeg-js": { "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true }, "js-library-detector": { "version": "6.6.0", + "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.6.0.tgz", + "integrity": "sha512-z8OkDmXALZ22bIzBtIW8cpJ39MV93/Zu1rWrFdhsNw+sity2rOLaGT2kfWWQ6mnRTWs4ddONY5kiroA8e98Gvg==", "dev": true }, "js-sdsl": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true }, "js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -21026,41 +24419,61 @@ }, "jsbn": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonc-parser": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", "dev": true }, "jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", @@ -21069,10 +24482,14 @@ }, "jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "jsprim": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "requires": { "assert-plus": "1.0.0", @@ -21082,10 +24499,14 @@ } }, "jwt-decode": { - "version": "3.1.2" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, "karma": { "version": "6.3.20", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", + "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -21116,6 +24537,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -21124,6 +24547,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -21136,6 +24561,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -21143,6 +24570,8 @@ }, "mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { "minimist": "^1.2.6" @@ -21150,10 +24579,14 @@ }, "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -21167,12 +24600,16 @@ }, "yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true } } }, "karma-chrome-launcher": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, "requires": { "which": "^1.2.1" @@ -21180,6 +24617,8 @@ "dependencies": { "which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -21189,6 +24628,8 @@ }, "karma-coverage": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.1.tgz", + "integrity": "sha512-oxeOSBVK/jdZsiX03LhHQkO4eISSQb5GbHi6Nsw3Mw7G4u6yUgacBAftnO7q+emPBLMsrNbz1pGIrj+Jb3z17A==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.2.0", @@ -21201,6 +24642,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -21209,6 +24652,8 @@ }, "istanbul-lib-instrument": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { "@babel/core": "^7.7.5", @@ -21219,6 +24664,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -21226,12 +24673,16 @@ }, "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "karma-jasmine": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", + "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", "dev": true, "requires": { "jasmine-core": "^3.6.0" @@ -21239,17 +24690,23 @@ "dependencies": { "jasmine-core": { "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", "dev": true } } }, "karma-jasmine-html-reporter": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", "dev": true, "requires": {} }, "karma-source-map-support": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, "requires": { "source-map-support": "^0.5.5" @@ -21257,6 +24714,8 @@ }, "karma-spec-reporter": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.33.tgz", + "integrity": "sha512-xRVevDUkiIVhKbDQ3CmeGEpyzA4b3HeVl95Sx5yJAvurpdKUSYF6ZEbQOqKJ7vrtDniABV1hyFez9KX9+7ruBA==", "dev": true, "requires": { "colors": "1.4.0" @@ -21264,18 +24723,26 @@ }, "kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "klona": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true }, "lazy-ass": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true }, "less": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", "dev": true, "requires": { "copy-anything": "^2.0.1", @@ -21292,6 +24759,8 @@ "dependencies": { "make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "optional": true, "requires": { @@ -21301,21 +24770,29 @@ }, "mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "optional": true }, "pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "optional": true }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "optional": true }, "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true } @@ -21323,6 +24800,8 @@ }, "less-loader": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", "dev": true, "requires": { "klona": "^2.0.4" @@ -21330,6 +24809,8 @@ }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -21338,6 +24819,8 @@ }, "license-checker": { "version": "25.0.1", + "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", + "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -21354,6 +24837,8 @@ "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -21361,6 +24846,8 @@ }, "mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { "minimist": "^1.2.6" @@ -21368,12 +24855,16 @@ }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "license-webpack-plugin": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "requires": { "webpack-sources": "^3.0.0" @@ -21381,6 +24872,8 @@ }, "lighthouse": { "version": "9.6.8", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-9.6.8.tgz", + "integrity": "sha512-5aRSvnqazci8D2oE7GJM6C7IStvUuMVV+74cGyBuS4n4NCixsDd6+uJdX834XiInSfo+OuVbAJCX4Xu6d2+N9Q==", "dev": true, "requires": { "@sentry/node": "^6.17.4", @@ -21414,12 +24907,16 @@ "dependencies": { "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "lighthouse-logger": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -21428,6 +24925,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -21435,20 +24934,28 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "lighthouse-stack-packs": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.8.2.tgz", + "integrity": "sha512-vlCUxxQAB8Nu6LQHqPpDRiMi06Du593/my/6JbMttQeEfJ7pf4OS8obSTh5xSOS80U/O7fq59Q8rQGAUxQatUQ==", "dev": true }, "lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, "requires": { "cli-truncate": "^2.1.0", @@ -21463,52 +24970,76 @@ }, "loader-runner": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "loader-utils": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", "dev": true }, "locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.21" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.isempty": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", "dev": true }, "lodash.isfunction": { "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", "dev": true }, "lodash.isobject": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, "lodash.isstring": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "lodash.once": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -21517,6 +25048,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -21524,6 +25057,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21532,6 +25067,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -21539,14 +25076,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -21556,6 +25099,8 @@ }, "log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "requires": { "ansi-escapes": "^4.3.0", @@ -21566,6 +25111,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -21573,6 +25120,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -21580,10 +25129,14 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -21593,6 +25146,8 @@ }, "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -21604,6 +25159,8 @@ }, "log4js": { "version": "6.7.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", + "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", "dev": true, "requires": { "date-format": "^4.0.14", @@ -21615,10 +25172,14 @@ }, "lookup-closest-locale": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz", + "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==", "dev": true }, "loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -21626,20 +25187,28 @@ }, "lru_map": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", "dev": true }, "lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { "yallist": "^3.0.2" } }, "luxon": { - "version": "2.5.2" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==" }, "magic-string": { "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", "dev": true, "requires": { "sourcemap-codec": "^1.4.8" @@ -21647,6 +25216,8 @@ }, "make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -21654,12 +25225,16 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -21682,20 +25257,28 @@ "dependencies": { "lru-cache": { "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", "dev": true } } }, "marky": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", "dev": true }, "media-typer": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memfs": { "version": "3.4.13", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", + "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", "dev": true, "requires": { "fs-monkey": "^1.0.3" @@ -21703,26 +25286,38 @@ }, "merge-descriptors": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "metaviewport-parser": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.2.0.tgz", + "integrity": "sha512-qL5NtY18LGs7lvZCkj3ep2H4Pes9rIiSLZRUyfDdvVw7pWFA0eLwmqaIxApD74RGvUrNEtk9e5Wt1rT+VlCvGw==", "dev": true }, "methods": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { "braces": "^3.0.2", @@ -21731,14 +25326,20 @@ }, "mime": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, "mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { "mime-db": "1.52.0" @@ -21746,10 +25347,14 @@ }, "mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mini-css-extract-plugin": { "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", "dev": true, "requires": { "schema-utils": "^4.0.0" @@ -21757,6 +25362,8 @@ "dependencies": { "schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -21769,21 +25376,29 @@ }, "minimalistic-assert": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimatch": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minimist": { - "version": "1.2.7", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -21791,12 +25406,16 @@ "dependencies": { "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -21804,6 +25423,8 @@ }, "minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -21814,6 +25435,8 @@ }, "minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -21821,6 +25444,8 @@ }, "minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "requires": { "jsonparse": "^1.3.1", @@ -21829,6 +25454,8 @@ }, "minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -21836,6 +25463,8 @@ }, "minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -21843,6 +25472,8 @@ }, "minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { "minipass": "^3.0.0", @@ -21851,20 +25482,28 @@ "dependencies": { "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, "mkdirp-classic": { "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, "mocha": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "peer": true, "requires": { @@ -21893,21 +25532,29 @@ "dependencies": { "ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "peer": true }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "peer": true }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "peer": true }, "find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "peer": true, "requires": { @@ -21917,6 +25564,8 @@ }, "glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "peer": true, "requires": { @@ -21930,6 +25579,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "peer": true, "requires": { @@ -21939,6 +25590,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "peer": true, "requires": { @@ -21949,11 +25602,15 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "peer": true }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "peer": true, "requires": { @@ -21962,6 +25619,8 @@ }, "locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "peer": true, "requires": { @@ -21970,6 +25629,8 @@ }, "minimatch": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "peer": true, "requires": { @@ -21978,11 +25639,15 @@ }, "ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "peer": true }, "p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "peer": true, "requires": { @@ -21991,6 +25656,8 @@ }, "p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "peer": true, "requires": { @@ -21999,6 +25666,8 @@ }, "serialize-javascript": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "peer": true, "requires": { @@ -22007,6 +25676,8 @@ }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "peer": true, "requires": { @@ -22015,6 +25686,8 @@ }, "yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "peer": true, "requires": { @@ -22029,6 +25702,8 @@ }, "yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "peer": true } @@ -22036,6 +25711,8 @@ }, "mochawesome": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", + "integrity": "sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -22052,6 +25729,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22059,6 +25738,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22067,6 +25748,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -22074,14 +25757,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -22091,6 +25780,8 @@ }, "mochawesome-merge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.2.2.tgz", + "integrity": "sha512-ZHeZcChGhb3If7fjSVuyB9rmDH86inNtsTb1ONYq1h0L1IduldFu38bJDcow46alMpiYQgJ7cPhv6nwpCwbJQw==", "dev": true, "requires": { "fs-extra": "^7.0.1", @@ -22100,6 +25791,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22107,6 +25800,8 @@ }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -22115,6 +25810,8 @@ }, "cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -22124,6 +25821,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -22131,14 +25830,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -22148,6 +25853,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -22160,6 +25867,8 @@ }, "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" @@ -22167,6 +25876,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -22174,10 +25885,14 @@ }, "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 }, "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -22187,10 +25902,14 @@ }, "y18n": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { "cliui": "^6.0.0", @@ -22208,6 +25927,8 @@ }, "yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -22218,6 +25939,8 @@ }, "mochawesome-report-generator": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mochawesome-report-generator/-/mochawesome-report-generator-6.2.0.tgz", + "integrity": "sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -22236,6 +25959,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22243,6 +25968,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22251,6 +25978,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -22258,10 +25987,14 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -22271,10 +26004,14 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -22284,10 +26021,14 @@ }, "ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "multicast-dns": { "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "requires": { "dns-packet": "^5.2.2", @@ -22296,19 +26037,27 @@ }, "mute-stream": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "nanoid": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "peer": true }, "natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "needle": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, "optional": true, "requires": { @@ -22319,6 +26068,8 @@ "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "optional": true, "requires": { @@ -22327,6 +26078,8 @@ }, "iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "optional": true, "requires": { @@ -22337,14 +26090,20 @@ }, "negotiator": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "ngrx-store-localstorage": { "version": "14.0.0", + "resolved": "https://registry.npmjs.org/ngrx-store-localstorage/-/ngrx-store-localstorage-14.0.0.tgz", + "integrity": "sha512-78fw12dv7MTiYj7hbUMvcj/UUnPfmb7lBcT9hA5L/h4b7/y35z51voxum3mRYmCQqaT6K1PdxTf4uwJy8E99rA==", "requires": { "deepmerge": "^4.2.2", "tslib": "^2.3.0" @@ -22352,12 +26111,16 @@ }, "ngx-cookie-service": { "version": "14.0.1", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-14.0.1.tgz", + "integrity": "sha512-PHjpA/bpp1ZgvQ2AWdXA6oxPQgE9k0WljQ7tvUH/u0Acl6p6akzF8kWlQiWxkgR3hBs7xB3paIsTk6GKdtakMg==", "requires": { "tslib": "^2.0.0" } }, "ngx-logger": { "version": "5.0.11", + "resolved": "https://registry.npmjs.org/ngx-logger/-/ngx-logger-5.0.11.tgz", + "integrity": "sha512-OP8qesmRPmu/FKGi0PYvxP4CSZMIzX+bN0UK6jtP3pOduqzCUlha91V57+tGY+lR1RNytdj2OjN2M1yfbiFtLQ==", "requires": { "tslib": "^2.3.0", "vlq": "^1.0.0" @@ -22365,6 +26128,8 @@ }, "nice-napi": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, "optional": true, "requires": { @@ -22374,10 +26139,14 @@ }, "node-addon-api": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, "node-fetch": { "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -22385,10 +26154,14 @@ }, "node-forge": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-gyp": { "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, "requires": { "env-paths": "^2.2.0", @@ -22405,6 +26178,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -22413,6 +26188,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -22425,6 +26202,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -22432,6 +26211,8 @@ }, "nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { "abbrev": "^1.0.0" @@ -22441,14 +26222,20 @@ }, "node-gyp-build": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true }, "node-releases": { "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, "nopt": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, "requires": { "abbrev": "1", @@ -22457,6 +26244,8 @@ }, "normalize-package-data": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, "requires": { "hosted-git-info": "^5.0.0", @@ -22467,14 +26256,20 @@ }, "normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "normalize-range": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "npm-bundled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^1.0.1" @@ -22482,6 +26277,8 @@ }, "npm-install-checks": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, "requires": { "semver": "^7.1.1" @@ -22489,10 +26286,14 @@ }, "npm-normalize-package-bin": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, "npm-package-arg": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "requires": { "hosted-git-info": "^5.0.0", @@ -22503,6 +26304,8 @@ }, "npm-packlist": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "requires": { "glob": "^8.0.1", @@ -22513,6 +26316,8 @@ "dependencies": { "npm-bundled": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", "dev": true, "requires": { "npm-normalize-package-bin": "^2.0.0" @@ -22520,12 +26325,16 @@ }, "npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true } } }, "npm-pick-manifest": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", "dev": true, "requires": { "npm-install-checks": "^5.0.0", @@ -22536,6 +26345,8 @@ }, "npm-registry-fetch": { "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "requires": { "make-fetch-happen": "^10.0.6", @@ -22549,6 +26360,8 @@ }, "npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { "path-key": "^3.0.0" @@ -22556,6 +26369,8 @@ }, "npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "requires": { "are-we-there-yet": "^3.0.0", @@ -22566,6 +26381,8 @@ }, "nth-check": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -22573,6 +26390,8 @@ }, "nx": { "version": "14.8.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", + "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", "dev": true, "requires": { "@nrwl/cli": "14.8.6", @@ -22614,6 +26433,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22621,10 +26442,14 @@ }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -22633,6 +26458,8 @@ }, "chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22641,6 +26468,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -22648,10 +26477,14 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "fast-glob": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -22663,6 +26496,8 @@ }, "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==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -22672,6 +26507,8 @@ }, "glob": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -22684,10 +26521,14 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -22695,10 +26536,14 @@ }, "jsonc-parser": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -22706,6 +26551,8 @@ }, "minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -22713,6 +26560,8 @@ }, "semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -22720,6 +26569,8 @@ }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -22727,28 +26578,40 @@ }, "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yargs-parser": { "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true } } }, "object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "object-inspect": { "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "obuf": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "on-finished": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -22756,10 +26619,14 @@ }, "on-headers": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -22767,6 +26634,8 @@ }, "onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -22774,6 +26643,8 @@ }, "open": { "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -22783,10 +26654,14 @@ }, "opener": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, "optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -22799,6 +26674,8 @@ }, "ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "requires": { "bl": "^4.1.0", @@ -22814,6 +26691,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22821,6 +26700,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22829,6 +26710,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -22836,14 +26719,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -22853,14 +26742,20 @@ }, "os-homedir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, "os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "osenv": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -22869,10 +26764,14 @@ }, "ospath": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, "p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -22880,6 +26779,8 @@ }, "p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -22887,6 +26788,8 @@ }, "p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -22894,6 +26797,8 @@ }, "p-retry": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "requires": { "@types/retry": "0.12.0", @@ -22902,16 +26807,22 @@ "dependencies": { "retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true } } }, "p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pacote": { "version": "13.6.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", + "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", "dev": true, "requires": { "@npmcli/git": "^3.0.0", @@ -22939,10 +26850,14 @@ }, "pako": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" @@ -22950,10 +26865,14 @@ }, "parse-cache-control": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", "dev": true }, "parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -22964,14 +26883,20 @@ }, "parse-node-version": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true }, "parse5": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "optional": true }, "parse5-html-rewriting-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", "dev": true, "requires": { "parse5": "^6.0.1", @@ -22980,12 +26905,16 @@ "dependencies": { "parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true } } }, "parse5-htmlparser2-tree-adapter": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { "parse5": "^6.0.1" @@ -22993,12 +26922,16 @@ "dependencies": { "parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true } } }, "parse5-sax-parser": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", "dev": true, "requires": { "parse5": "^6.0.1" @@ -23006,60 +26939,88 @@ "dependencies": { "parse5": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true } } }, "parseurl": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, "path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, "pend": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "performance-now": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picocolors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "piscina": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", "dev": true, "requires": { "eventemitter-asyncresource": "^1.0.0", @@ -23070,6 +27031,8 @@ }, "pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -23077,6 +27040,8 @@ }, "postcss": { "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -23086,12 +27051,16 @@ "dependencies": { "nanoid": { "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true } } }, "postcss-attribute-case-insensitive": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -23099,6 +27068,8 @@ }, "postcss-clamp": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23106,6 +27077,8 @@ }, "postcss-color-functional-notation": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23113,6 +27086,8 @@ }, "postcss-color-hex-alpha": { "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23120,6 +27095,8 @@ }, "postcss-color-rebeccapurple": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23127,6 +27104,8 @@ }, "postcss-custom-media": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23134,6 +27113,8 @@ }, "postcss-custom-properties": { "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23141,6 +27122,8 @@ }, "postcss-custom-selectors": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -23148,6 +27131,8 @@ }, "postcss-dir-pseudo-class": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -23155,6 +27140,8 @@ }, "postcss-double-position-gradients": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -23163,6 +27150,8 @@ }, "postcss-env-function": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23170,6 +27159,8 @@ }, "postcss-focus-visible": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -23177,6 +27168,8 @@ }, "postcss-focus-within": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -23184,16 +27177,22 @@ }, "postcss-font-variant": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "dev": true, "requires": {} }, "postcss-gap-properties": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, "requires": {} }, "postcss-image-set-function": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23201,6 +27200,8 @@ }, "postcss-import": { "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, "requires": { "postcss-value-parser": "^4.0.0", @@ -23210,11 +27211,15 @@ }, "postcss-initial": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "dev": true, "requires": {} }, "postcss-lab-function": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -23223,6 +27228,8 @@ }, "postcss-loader": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", "dev": true, "requires": { "cosmiconfig": "^7.0.0", @@ -23232,21 +27239,29 @@ }, "postcss-logical": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "dev": true, "requires": {} }, "postcss-media-minmax": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "dev": true, "requires": {} }, "postcss-modules-extract-imports": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { "icss-utils": "^5.0.0", @@ -23256,6 +27271,8 @@ }, "postcss-modules-scope": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -23263,6 +27280,8 @@ }, "postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { "icss-utils": "^5.0.0" @@ -23270,6 +27289,8 @@ }, "postcss-nesting": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -23278,11 +27299,15 @@ }, "postcss-opacity-percentage": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "requires": {} }, "postcss-overflow-shorthand": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23290,11 +27315,15 @@ }, "postcss-page-break": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", "dev": true, "requires": {} }, "postcss-place": { "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -23302,6 +27331,8 @@ }, "postcss-preset-env": { "version": "7.7.2", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", + "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", "dev": true, "requires": { "@csstools/postcss-cascade-layers": "^1.0.4", @@ -23355,6 +27386,8 @@ }, "postcss-pseudo-class-any-link": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -23362,11 +27395,15 @@ }, "postcss-replace-overflow-wrap": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", "dev": true, "requires": {} }, "postcss-selector-not": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -23374,6 +27411,8 @@ }, "postcss-selector-parser": { "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -23382,46 +27421,68 @@ }, "postcss-value-parser": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "pretty-bytes": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, "primeflex": { - "version": "3.3.0" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.0.tgz", + "integrity": "sha512-4hvyIO7lERN5bnyURn67Qpozghins8Jq/GSXO6tymc3oa2ADHWuiYBti8ZptPwHu+uD/HTEisS26NEmeIGfPZQ==" }, "primeicons": { - "version": "6.0.1" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", + "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" }, "primeng": { "version": "14.2.3", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-14.2.3.tgz", + "integrity": "sha512-4B+ahbjzPcLeYB/4hw7hqD2le0CplSblRORvY97EhW/0T0Vzyr+neVcnSmUAZ9HfyBdflR/WvZzcFuELFRC7kw==", "requires": { "tslib": "^2.3.0" } }, "proc-log": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true }, "process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise-inflight": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { "err-code": "^2.0.2", @@ -23430,6 +27491,8 @@ }, "prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "requires": { "loose-envify": "^1.4.0", @@ -23439,6 +27502,8 @@ }, "proxy-addr": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { "forwarded": "0.2.0", @@ -23447,29 +27512,41 @@ "dependencies": { "ipaddr.js": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true } } }, "proxy-from-env": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, "prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "optional": true }, "ps-list": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz", + "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==", "dev": true }, "psl": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -23477,10 +27554,14 @@ } }, "punycode": { - "version": "2.3.0" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "puppeteer-core": { "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", + "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", "dev": true, "requires": { "cross-fetch": "3.1.5", @@ -23499,10 +27580,14 @@ "dependencies": { "proxy-from-env": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, "ws": { "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, "requires": {} } @@ -23510,10 +27595,14 @@ }, "qjobs": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, "qs": { "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -23521,10 +27610,14 @@ }, "queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -23532,10 +27625,14 @@ }, "range-parser": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { "bytes": "3.1.2", @@ -23546,10 +27643,14 @@ }, "react-is": { "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, "read-cache": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "requires": { "pify": "^2.3.0" @@ -23557,6 +27658,8 @@ }, "read-installed": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", + "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==", "dev": true, "requires": { "debuglog": "^1.0.1", @@ -23570,6 +27673,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -23578,6 +27683,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -23590,10 +27697,14 @@ }, "hosted-git-info": { "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -23601,6 +27712,8 @@ }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -23611,6 +27724,8 @@ }, "read-package-json": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", "dev": true, "requires": { "glob": "^7.1.1", @@ -23621,12 +27736,16 @@ }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "read-package-json": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, "requires": { "glob": "^8.0.1", @@ -23637,12 +27756,16 @@ "dependencies": { "npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true } } }, "read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.0", @@ -23651,6 +27774,8 @@ }, "readable-stream": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -23660,6 +27785,8 @@ }, "readdir-scoped-modules": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "dev": true, "requires": { "debuglog": "^1.0.1", @@ -23670,20 +27797,28 @@ }, "readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" } }, "reflect-metadata": { - "version": "0.1.13" + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -23691,10 +27826,14 @@ }, "regenerator-runtime": { "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -23702,30 +27841,34 @@ }, "regex-parser": { "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, "regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { - "version": "5.2.2", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", + "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.7.1", - "dev": true - }, "regjsparser": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -23733,12 +27876,16 @@ "dependencies": { "jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } }, "request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, "requires": { "throttleit": "^1.0.0" @@ -23746,21 +27893,31 @@ }, "require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { - "version": "2.0.2" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { "is-core-module": "^2.9.0", @@ -23770,10 +27927,14 @@ }, "resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "resolve-url-loader": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, "requires": { "adjust-sourcemap-loader": "^4.0.0", @@ -23785,6 +27946,8 @@ "dependencies": { "loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -23794,12 +27957,16 @@ }, "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { "onetime": "^5.1.0", @@ -23808,18 +27975,26 @@ }, "retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, "reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, "rfdc": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -23827,6 +28002,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -23835,6 +28012,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -23847,6 +28026,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -23856,14 +28037,20 @@ }, "robots-parser": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.0.tgz", + "integrity": "sha512-6xkze3WRdneibICBAzMKcXyTKQw5shA3GbwoEJy7RSvxpZNGF0GMuYKE1T0VMP4fwx/fQs0n0mtriOqRtk5L1w==", "dev": true }, "run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true }, "run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { "queue-microtask": "^1.2.2" @@ -23871,20 +28058,28 @@ }, "rxjs": { "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "requires": { "tslib": "^2.1.0" } }, "safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, "sass": { "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -23894,6 +28089,8 @@ }, "sass-loader": { "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", "dev": true, "requires": { "klona": "^2.0.4", @@ -23902,10 +28099,14 @@ }, "sax": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, "schema-utils": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { "@types/json-schema": "^7.0.5", @@ -23915,6 +28116,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -23925,21 +28128,29 @@ }, "ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true } } }, "select-hose": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -23947,6 +28158,8 @@ }, "semver": { "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -23954,6 +28167,8 @@ "dependencies": { "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -23961,12 +28176,16 @@ }, "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "send": { "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", @@ -23986,6 +28205,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -23993,26 +28214,36 @@ "dependencies": { "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, "serialize-javascript": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -24020,6 +28251,8 @@ }, "serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -24033,6 +28266,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -24040,10 +28275,14 @@ }, "depd": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -24054,20 +28293,28 @@ }, "inherits": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true } } }, "serve-static": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", @@ -24078,14 +28325,20 @@ }, "set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "setprototypeof": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -24093,6 +28346,8 @@ }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -24100,10 +28355,14 @@ }, "shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -24113,14 +28372,20 @@ }, "signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -24130,6 +28395,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -24137,6 +28404,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -24144,20 +28413,28 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "slide": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", "dev": true }, "smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "socket.io": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", + "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -24170,6 +28447,8 @@ }, "socket.io-adapter": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", "dev": true, "requires": { "ws": "~8.11.0" @@ -24177,6 +28456,8 @@ "dependencies": { "ws": { "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} } @@ -24184,6 +28465,8 @@ }, "socket.io-parser": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", @@ -24192,6 +28475,8 @@ }, "sockjs": { "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "requires": { "faye-websocket": "^0.11.3", @@ -24201,6 +28486,8 @@ }, "socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { "ip": "^2.0.0", @@ -24209,6 +28496,8 @@ }, "socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "requires": { "agent-base": "^6.0.2", @@ -24218,14 +28507,20 @@ }, "source-map": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true }, "source-map-js": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-loader": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", "dev": true, "requires": { "abab": "^2.0.6", @@ -24235,6 +28530,8 @@ "dependencies": { "iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -24244,6 +28541,8 @@ }, "source-map-resolve": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "requires": { "atob": "^2.1.2", @@ -24252,6 +28551,8 @@ }, "source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -24260,16 +28561,22 @@ "dependencies": { "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "sourcemap-codec": { "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, "spdx-compare": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", + "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", "dev": true, "requires": { "array-find-index": "^1.0.2", @@ -24279,6 +28586,8 @@ }, "spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -24287,10 +28596,14 @@ }, "spdx-exceptions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -24299,14 +28612,20 @@ }, "spdx-license-ids": { "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "spdx-ranges": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", + "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", "dev": true }, "spdx-satisfies": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz", + "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==", "dev": true, "requires": { "spdx-compare": "^1.0.0", @@ -24316,6 +28635,8 @@ }, "spdy": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -24327,6 +28648,8 @@ }, "spdy-transport": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { "debug": "^4.1.0", @@ -24339,6 +28662,8 @@ }, "speedline-core": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", + "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", "dev": true, "requires": { "@types/node": "*", @@ -24348,10 +28673,14 @@ }, "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "sshpk": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -24367,6 +28696,8 @@ }, "ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -24374,10 +28705,14 @@ }, "statuses": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true }, "streamroller": { - "version": "3.1.4", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "requires": { "date-format": "^4.0.14", @@ -24387,6 +28722,8 @@ "dependencies": { "fs-extra": { "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", @@ -24396,6 +28733,8 @@ }, "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" @@ -24403,12 +28742,16 @@ }, "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 } } }, "string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { "safe-buffer": "~5.2.0" @@ -24416,6 +28759,8 @@ }, "string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -24425,6 +28770,8 @@ }, "strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { "ansi-regex": "^5.0.1" @@ -24432,18 +28779,26 @@ }, "strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "strong-log-transformer": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, "requires": { "duplexer": "^0.1.1", @@ -24453,6 +28808,8 @@ }, "stylus": { "version": "0.58.1", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", + "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", "dev": true, "requires": { "css": "^3.0.0", @@ -24464,6 +28821,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -24472,6 +28831,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -24484,6 +28845,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -24493,6 +28856,8 @@ }, "stylus-loader": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", "dev": true, "requires": { "fast-glob": "^3.2.11", @@ -24502,6 +28867,8 @@ }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -24509,18 +28876,26 @@ }, "supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, "symbol-observable": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true }, "tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "tar": { "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -24532,17 +28907,23 @@ }, "dependencies": { "minipass": { - "version": "4.0.2", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", + "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", "dev": true }, "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "tar-fs": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "requires": { "chownr": "^1.1.1", @@ -24553,12 +28934,16 @@ "dependencies": { "chownr": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true } } }, "tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "requires": { "bl": "^4.0.3", @@ -24570,10 +28955,14 @@ }, "tcomb": { "version": "3.2.29", + "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", + "integrity": "sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==", "dev": true }, "tcomb-validation": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tcomb-validation/-/tcomb-validation-3.4.1.tgz", + "integrity": "sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA==", "dev": true, "requires": { "tcomb": "^3.0.0" @@ -24581,6 +28970,8 @@ }, "terser": { "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -24591,12 +28982,16 @@ "dependencies": { "commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true } } }, "terser-webpack-plugin": { "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.14", @@ -24608,6 +29003,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -24618,15 +29015,21 @@ }, "ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "schema-utils": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -24638,6 +29041,8 @@ }, "test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", @@ -24647,6 +29052,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -24655,6 +29062,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -24667,6 +29076,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -24676,26 +29087,38 @@ }, "text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "third-party-web": { "version": "0.17.1", + "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.17.1.tgz", + "integrity": "sha512-X9Mha8cVeBwakunlZXkXL6xRzw8VCcDGWqT59EzeTYAJIi8ien3CuufnEGEx4ZUFahumNQdoOwf4H2T9Ca6lBg==", "dev": true }, "throttleit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", "dev": true }, "through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "thunky": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { "rimraf": "^3.0.0" @@ -24703,10 +29126,14 @@ }, "to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -24714,10 +29141,14 @@ }, "toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { "psl": "^1.1.28", @@ -24726,18 +29157,26 @@ }, "tr46": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "treeify": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true }, "tsconfig-paths": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -24748,6 +29187,8 @@ "dependencies": { "json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -24756,10 +29197,14 @@ } }, "tslib": { - "version": "2.5.0" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -24767,12 +29212,16 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -24780,10 +29229,14 @@ }, "tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -24791,10 +29244,14 @@ }, "type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "type-is": { "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { "media-typer": "0.3.0", @@ -24803,10 +29260,14 @@ }, "typed-assert": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" @@ -24814,14 +29275,20 @@ }, "typescript": { "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true }, "ua-parser-js": { "version": "0.7.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", + "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", "dev": true }, "unbzip2-stream": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "requires": { "buffer": "^5.2.1", @@ -24830,10 +29297,14 @@ }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -24842,14 +29313,20 @@ }, "unicode-match-property-value-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { "unique-slug": "^2.0.0" @@ -24857,6 +29334,8 @@ }, "unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -24864,6 +29343,8 @@ }, "unique-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "requires": { "crypto-random-string": "^2.0.0" @@ -24871,18 +29352,26 @@ }, "universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unpipe": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, "update-browserslist-db": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -24891,32 +29380,46 @@ }, "uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } }, "util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "util-extend": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", "dev": true }, "utils-merge": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "v8-compile-cache": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -24925,6 +29428,8 @@ }, "validate-npm-package-name": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "requires": { "builtins": "^5.0.0" @@ -24932,14 +29437,20 @@ }, "validator": { "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", "dev": true }, "vary": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -24948,14 +29459,20 @@ } }, "vlq": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" }, "void-elements": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true }, "watchpack": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -24964,6 +29481,8 @@ }, "wbuf": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { "minimalistic-assert": "^1.0.0" @@ -24971,6 +29490,8 @@ }, "wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" @@ -24978,10 +29499,14 @@ }, "webidl-conversions": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "webpack": { "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -25012,6 +29537,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -25022,15 +29549,21 @@ }, "ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "schema-utils": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -25042,6 +29575,8 @@ }, "webpack-dev-middleware": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, "requires": { "colorette": "^2.0.10", @@ -25053,6 +29588,8 @@ "dependencies": { "schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -25065,6 +29602,8 @@ }, "webpack-dev-server": { "version": "4.9.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", + "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -25100,6 +29639,8 @@ "dependencies": { "schema-utils": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -25109,7 +29650,9 @@ } }, "ws": { - "version": "8.12.0", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", + "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", "dev": true, "requires": {} } @@ -25117,6 +29660,8 @@ }, "webpack-merge": { "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -25125,10 +29670,14 @@ }, "webpack-sources": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, "webpack-subresource-integrity": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, "requires": { "typed-assert": "^1.0.8" @@ -25136,6 +29685,8 @@ }, "websocket-driver": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { "http-parser-js": ">=0.5.1", @@ -25145,10 +29696,14 @@ }, "websocket-extensions": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -25157,6 +29712,8 @@ }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -25164,10 +29721,14 @@ }, "which-module": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { "string-width": "^1.0.2 || 2 || 3 || 4" @@ -25175,19 +29736,27 @@ }, "wildcard": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, "word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "workerpool": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, "peer": true }, "wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -25197,6 +29766,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -25204,6 +29775,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -25211,16 +29784,22 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -25231,27 +29810,39 @@ }, "ws": { "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "requires": {} }, "xdg-basedir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, "y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs": { "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -25265,10 +29856,14 @@ }, "yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true }, "yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "peer": true, "requires": { @@ -25280,11 +29875,15 @@ "dependencies": { "camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "peer": true }, "is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "peer": true } @@ -25292,6 +29891,8 @@ }, "yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", @@ -25300,10 +29901,14 @@ }, "yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, "zone.js": { "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "requires": { "tslib": "^2.3.0" } From d206eac522cfeb85c6867a16454f18b63393eb46 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 15 Feb 2023 16:12:10 -0500 Subject: [PATCH 056/115] Fix lint error reported by SonarCloud --- ...ERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts index 55e2c3e3b0..e973205ff9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', () => { From e1b77f42588b411822210ba7fdcaa7b67f9020f2 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 15 Feb 2023 16:19:36 -0500 Subject: [PATCH 057/115] refactor contactlookup to support createcontact pg --- .../contact-lookup.component.html | 139 ++++++------------ .../contact-lookup.component.spec.ts | 91 +++--------- .../contact-lookup.component.ts | 120 ++------------- .../transaction-contact-lookup.component.html | 51 +++++++ ...ansaction-contact-lookup.component.spec.ts | 135 +++++++++++++++++ .../transaction-contact-lookup.component.ts | 130 ++++++++++++++++ front-end/src/app/shared/shared.module.ts | 3 + .../transaction-group-a.component.html | 5 +- .../transaction-group-ag.component.html | 9 +- .../transaction-group-b.component.html | 4 +- .../transaction-group-c.component.html | 4 +- .../transaction-group-d.component.html | 5 +- .../transaction-group-e.component.html | 5 +- .../transaction-group-f.component.html | 5 +- .../transaction-group-fg.component.html | 9 +- .../transaction-group-h.component.html | 4 +- 16 files changed, 420 insertions(+), 299 deletions(-) create mode 100644 front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html create mode 100644 front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts create mode 100644 front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html index 98c904cc9c..fae42603bf 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html @@ -1,93 +1,50 @@ -
-
-
-
- - -
-
- - -
{{ group.label }}
-
- Try another search or create a new contact -
-
- - - In contacts - -
-
-
- -
+ +
+
+ +
- - - - - - - -
-
- -
-
- -
+
+ + +
{{ group.label }}
+
+ Try another search or create a new contact +
+
+ + + In contacts + +
+
+
+ - - -
+
+
+ diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts index 0b8cd14a04..bb07242b0c 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts @@ -1,27 +1,23 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { EventEmitter } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; import { CommitteeLookupResponse, Contact, ContactTypes, - FecApiCommitteeLookupData, - FecApiLookupData, - FecfileCommitteeLookupData, + FecApiCommitteeLookupData, FecfileCommitteeLookupData, FecfileIndividualLookupData, FecfileOrganizationLookupData, IndividualLookupResponse, - OrganizationLookupResponse, + OrganizationLookupResponse } from 'app/shared/models/contact.model'; import { ContactService } from 'app/shared/services/contact.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { DropdownModule } from 'primeng/dropdown'; import { of } from 'rxjs'; -import { CommitteeAccount } from 'app/shared/models/committee-account.model'; -import { FecApiService } from 'app/shared/services/fec-api.service'; import { SelectItem } from 'primeng/api'; import { AutoCompleteModule } from 'primeng/autocomplete'; import { DialogModule } from 'primeng/dialog'; @@ -32,7 +28,6 @@ describe('ContactLookupComponent', () => { let fixture: ComponentFixture; let testContactService: ContactService; - let testFecApiService: FecApiService; beforeEach(async () => { await TestBed.configureTestingModule({ @@ -45,11 +40,10 @@ describe('ContactLookupComponent', () => { DropdownModule, AutoCompleteModule, ], - providers: [FormBuilder, ContactService, FecApiService, EventEmitter, provideMockStore(testMockStore)], + providers: [FormBuilder, ContactService, EventEmitter, provideMockStore(testMockStore)], }).compileComponents(); testContactService = TestBed.inject(ContactService); - testFecApiService = TestBed.inject(FecApiService); }); beforeEach(() => { @@ -195,7 +189,7 @@ describe('ContactLookupComponent', () => { tick(500); expect( JSON.stringify(component.contactLookupList) === - JSON.stringify(testOrganizationLookupResponse.toSelectItemGroups()) + JSON.stringify(testOrganizationLookupResponse.toSelectItemGroups()) ).toBeTrue(); expect( JSON.stringify([ @@ -207,8 +201,8 @@ describe('ContactLookupComponent', () => { ).toBeTrue(); })); - it('#onContactSelect Contact happy path', fakeAsync(() => { - const eventEmitterEmitSpy = spyOn(component.contactSelect, 'emit'); + it('#onContactLookupSelect Contact happy path', fakeAsync(() => { + const eventEmitterEmitSpy = spyOn(component.contactLookupSelect, 'emit'); const testContact = Contact.fromJSON({ id: 123, last_name: 'testLastName', @@ -218,39 +212,25 @@ describe('ContactLookupComponent', () => { const testValue = { value: testContact, } as SelectItem; - component.onContactSelect(testValue); + component.onContactLookupSelect(testValue); tick(500); expect(eventEmitterEmitSpy).toHaveBeenCalledOnceWith(testValue); })); - it('#onContactSelect FecApiLookupData createContactForm null vals', fakeAsync(() => { - const testFecApiLookupData = new FecApiCommitteeLookupData({ id: 'C12345678' } as FecApiCommitteeLookupData); - const testValue = { - value: testFecApiLookupData, - } as SelectItem; - spyOn(testFecApiService, 'getDetails').and.returnValue(of(new CommitteeAccount())); - component.createContactForm.removeControl('committee_id'); - component.createContactForm.removeControl('name'); - component.createContactForm.removeControl('street_1'); - component.createContactForm.removeControl('street_2'); - component.createContactForm.removeControl('city'); - component.createContactForm.removeControl('state'); - component.createContactForm.removeControl('zip'); - component.onContactSelect(testValue); - tick(500); - expect(component.createContactDialogVisible).toEqual(true); - })); - - it('#onContactSelect FecApiLookupData happy path', fakeAsync(() => { - const testFecApiLookupData = new FecApiCommitteeLookupData({ id: 'C12345678' } as FecApiCommitteeLookupData); + it('#onCreateNewContactSelect Contact happy path', fakeAsync(() => { + const eventEmitterEmitSpy = spyOn(component.createNewContactSelect, 'emit'); + const testContact = Contact.fromJSON({ + id: 123, + last_name: 'testLastName', + first_name: 'testFirstName', + type: ContactTypes.COMMITTEE, + }); const testValue = { - value: testFecApiLookupData, - } as SelectItem; - spyOn(testFecApiService, 'getDetails').and.returnValue(of(new CommitteeAccount())); - - component.onContactSelect(testValue); + value: testContact, + } as SelectItem; + component.onCreateNewContactSelect(); tick(500); - expect(component.createContactDialogVisible).toEqual(true); + expect(eventEmitterEmitSpy).toHaveBeenCalled(); })); it('#isContact happy path', () => { @@ -260,35 +240,4 @@ describe('ContactLookupComponent', () => { expect(retval).toEqual(expectedRetval); }); - it('#onCreateContactDialogOpen null form control', () => { - component.createContactForm = new FormGroup({}); - component.selectedFecCommitteeAccount = {} as CommitteeAccount; - - component.onCreateContactDialogOpen(); - expect(component.createContactFormSubmitted).toBeFalse(); - component.selectedFecCommitteeAccount = undefined; - component.onCreateContactDialogOpen(); - }); - - it('#createNewContact happy path', () => { - component.createNewContact(); - component.closeCreateContactDialog(); - component.createContactSave(); - component.selectedFecCommitteeAccount = { - committee_id: 'testCommitteeId', - name: 'testName', - street_1: 'testStreet1', - street_2: 'testStreet2', - city: 'testCity', - state: 'testState', - zip: 'testZip', - treasurer_phone: 'testTreasPhone', - } as CommitteeAccount; - component.onCreateContactDialogOpen(); - expect(component.createContactForm.get('committee_id')?.value).toBe( - component.selectedFecCommitteeAccount.committee_id - ); - component.onCreateContactDialogClose(); - expect(component.createContactFormSubmitted).toBeFalse(); - }); }); diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index 5428b65cd0..b9ed5ea279 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -1,15 +1,8 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; -import { CommitteeAccount } from 'app/shared/models/committee-account.model'; -import { Contact, ContactTypes, FecApiCommitteeLookupData, FecApiLookupData } from 'app/shared/models/contact.model'; +import { Contact, ContactTypes, FecApiLookupData } from 'app/shared/models/contact.model'; import { ContactService } from 'app/shared/services/contact.service'; -import { FecApiService } from 'app/shared/services/fec-api.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; -import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; -import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; -import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; -import { schema as contactOrganizationSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Organization'; import { SelectItem, SelectItemGroup } from 'primeng/api'; @Component({ @@ -19,17 +12,17 @@ import { SelectItem, SelectItemGroup } from 'primeng/api'; }) export class ContactLookupComponent { @Input() contactTypeOptions: PrimeOptions = []; - @Input() contactTypeInputId = 'entity_type'; @Input() contactTypeFormControl: FormControl = new FormControl(); @Input() contactTypeReadOnly = false; - @Input() contactTypeStyleClass = ''; + @Input() showCreateNewContactButton = true; @Input() maxFecCommitteeResults = 5; @Input() maxFecfileCommitteeResults = 5; @Input() maxFecfileIndividualResults = 10; @Input() maxFecfileOrganizationResults = 10; - @Output() contactSelect = new EventEmitter>(); + @Output() contactLookupSelect = new EventEmitter(); + @Output() createNewContactSelect = new EventEmitter(); selectedContact: FormControl | null = null; @@ -42,30 +35,10 @@ export class ContactLookupComponent { searchTerm = ''; - createContactDialogVisible = false; - createContactFormSubmitted = false; - createContactForm: FormGroup = this.formBuilder.group( - this.validateService.getFormGroupFields([ - ...new Set([ - ...ValidateService.getSchemaProperties(contactIndividualSchema), - ...ValidateService.getSchemaProperties(contactCandidateSchema), - ...ValidateService.getSchemaProperties(contactCommitteeSchema), - ...ValidateService.getSchemaProperties(contactOrganizationSchema), - ]), - ]) - ); - - selectedFecCommitteeAccount: CommitteeAccount | undefined; - - workingValidatorSchema = this.validateService.formValidatorSchema; - workingValidatorForm = this.validateService.formValidatorForm; - constructor( private formBuilder: FormBuilder, - private validateService: ValidateService, - private contactService: ContactService, - private fecApiService: FecApiService - ) {} + private contactService: ContactService + ) { } // eslint-disable-next-line @typescript-eslint/no-explicit-any onDropdownSearch(event: any) { @@ -99,88 +72,17 @@ export class ContactLookupComponent { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - onContactSelect(event: any) { - if (event && event.value) { - if (event.value instanceof Contact) { - this.contactSelect.emit(event); - } else if (event.value instanceof FecApiCommitteeLookupData) { - const value: FecApiCommitteeLookupData = event.value; - if (value.id) { - this.fecApiService.getDetails(value.id).subscribe((committeeAccount) => { - this.openCreateContactDialog(committeeAccount); - }); - } - } - this.contactLookupForm.patchValue({ selectedContact: '' }); - } + onContactLookupSelect(event: any) { + this.contactLookupSelect.emit(event); } - createNewContact() { - this.openCreateContactDialog(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onCreateNewContactSelect() { + this.createNewContactSelect.emit(); } isContact(value: Contact | FecApiLookupData) { return value instanceof Contact; } - openCreateContactDialog(value?: CommitteeAccount) { - this.selectedFecCommitteeAccount = value; - // Need these since contact-form sets these for validation - this.workingValidatorSchema = this.validateService.formValidatorSchema; - this.workingValidatorForm = this.validateService.formValidatorForm; - - this.createContactDialogVisible = true; - } - - closeCreateContactDialog() { - // Need these since contact-form sets these for validation - this.validateService.formValidatorSchema = this.workingValidatorSchema; - this.validateService.formValidatorForm = this.workingValidatorForm; - - this.createContactDialogVisible = false; - } - - createContactSave() { - this.createContactFormSubmitted = true; - if (this.createContactForm.invalid) { - return; - } - - const createdContact = Contact.fromJSON({ - ...this.validateService.getFormValues(this.createContactForm), - }); - this.contactSelect.emit({ - value: createdContact, - }); - this.closeCreateContactDialog(); - } - - onCreateContactDialogOpen() { - this.createContactForm.reset(); - this.createContactFormSubmitted = false; - const typeFormControl = this.createContactForm.get('type'); - typeFormControl?.setValue(this.contactTypeFormControl.value); - typeFormControl?.disable(); - let phone; - if (this.selectedFecCommitteeAccount?.treasurer_phone) { - phone = '+1 ' + this.selectedFecCommitteeAccount.treasurer_phone; - } - if (this.selectedFecCommitteeAccount) { - this.createContactForm.get('committee_id')?.setValue(this.selectedFecCommitteeAccount.committee_id); - this.createContactForm.get('name')?.setValue(this.selectedFecCommitteeAccount.name); - this.createContactForm.get('street_1')?.setValue(this.selectedFecCommitteeAccount.street_1); - this.createContactForm.get('street_2')?.setValue(this.selectedFecCommitteeAccount.street_2); - this.createContactForm.get('city')?.setValue(this.selectedFecCommitteeAccount.city); - this.createContactForm.get('state')?.setValue(this.selectedFecCommitteeAccount.state); - this.createContactForm.get('zip')?.setValue(this.selectedFecCommitteeAccount.zip); - this.createContactForm.get('telephone')?.setValue(phone); - } - } - - onCreateContactDialogClose() { - this.selectedFecCommitteeAccount = undefined; - this.createContactForm.reset(); - this.createContactFormSubmitted = false; - this.createContactDialogVisible = false; - } } diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html new file mode 100644 index 0000000000..9ec7b2abca --- /dev/null +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html @@ -0,0 +1,51 @@ +
+ + + + + + + + +
+
+ +
+
+ +
+
+
+
+
diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts new file mode 100644 index 0000000000..f982ec6ea5 --- /dev/null +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts @@ -0,0 +1,135 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { EventEmitter } from '@angular/core'; +import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; +import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { provideMockStore } from '@ngrx/store/testing'; +import { + Contact, + ContactTypes, + FecApiCommitteeLookupData, + FecApiLookupData +} from 'app/shared/models/contact.model'; +import { testMockStore } from 'app/shared/utils/unit-test.utils'; +import { DropdownModule } from 'primeng/dropdown'; +import { of } from 'rxjs'; + +import { CommitteeAccount } from 'app/shared/models/committee-account.model'; +import { FecApiService } from 'app/shared/services/fec-api.service'; +import { SelectItem } from 'primeng/api'; +import { AutoCompleteModule } from 'primeng/autocomplete'; +import { DialogModule } from 'primeng/dialog'; +import { TransactionContactLookupComponent } from './transaction-contact-lookup.component'; + +describe('TransactionContactLookupComponent', () => { + let component: TransactionContactLookupComponent; + let fixture: ComponentFixture; + + let testFecApiService: FecApiService; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TransactionContactLookupComponent], + imports: [ + FormsModule, + ReactiveFormsModule, + DialogModule, + HttpClientTestingModule, + DropdownModule, + AutoCompleteModule, + ], + providers: [FormBuilder, FecApiService, EventEmitter, provideMockStore(testMockStore)], + }).compileComponents(); + + testFecApiService = TestBed.inject(FecApiService); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TransactionContactLookupComponent); + component = fixture.componentInstance; + + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('#onContactLookupSelect Contact happy path', fakeAsync(() => { + const eventEmitterEmitSpy = spyOn(component.contactSelect, 'emit'); + const testContact = Contact.fromJSON({ + id: 123, + last_name: 'testLastName', + first_name: 'testFirstName', + type: ContactTypes.COMMITTEE, + }); + const testValue = { + value: testContact, + } as SelectItem; + component.onContactLookupSelect(testValue); + tick(500); + expect(eventEmitterEmitSpy).toHaveBeenCalledOnceWith(testValue); + })); + + it('#onContactLookupSelect FecApiLookupData createContactForm null vals', fakeAsync(() => { + const testFecApiLookupData = new FecApiCommitteeLookupData({ id: 'C12345678' } as FecApiCommitteeLookupData); + const testValue = { + value: testFecApiLookupData, + } as SelectItem; + spyOn(testFecApiService, 'getDetails').and.returnValue(of(new CommitteeAccount())); + component.createContactForm.removeControl('committee_id'); + component.createContactForm.removeControl('name'); + component.createContactForm.removeControl('street_1'); + component.createContactForm.removeControl('street_2'); + component.createContactForm.removeControl('city'); + component.createContactForm.removeControl('state'); + component.createContactForm.removeControl('zip'); + component.onContactLookupSelect(testValue); + tick(500); + expect(component.createContactDialogVisible).toEqual(true); + })); + + it('#onContactLookupSelect FecApiLookupData happy path', fakeAsync(() => { + const testFecApiLookupData = new FecApiCommitteeLookupData({ id: 'C12345678' } as FecApiCommitteeLookupData); + const testValue = { + value: testFecApiLookupData, + } as SelectItem; + spyOn(testFecApiService, 'getDetails').and.returnValue(of(new CommitteeAccount())); + + component.onContactLookupSelect(testValue); + tick(500); + expect(component.createContactDialogVisible).toEqual(true); + })); + + it('#onCreateContactDialogOpen null form control', () => { + component.createContactForm = new FormGroup({}); + component.selectedFecCommitteeAccount = {} as CommitteeAccount; + + component.onCreateContactDialogOpen(); + expect(component.createContactFormSubmitted).toBeFalse(); + component.selectedFecCommitteeAccount = undefined; + component.onCreateContactDialogOpen(); + }); + + it('#createNewContact happy path', () => { + component.onCreateNewContactSelect(); + component.closeCreateContactDialog(); + component.createContactSave(); + component.selectedFecCommitteeAccount = { + committee_id: 'testCommitteeId', + name: 'testName', + street_1: 'testStreet1', + street_2: 'testStreet2', + city: 'testCity', + state: 'testState', + zip: 'testZip', + treasurer_phone: 'testTreasPhone', + } as CommitteeAccount; + component.onCreateContactDialogOpen(); + expect(component.createContactForm.get('committee_id')?.value).toBe( + component.selectedFecCommitteeAccount.committee_id + ); + component.onCreateContactDialogClose(); + expect(component.createContactFormSubmitted).toBeFalse(); + }); + +}); diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts new file mode 100644 index 0000000000..6deb68b9d2 --- /dev/null +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts @@ -0,0 +1,130 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { CommitteeAccount } from 'app/shared/models/committee-account.model'; +import { Contact, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; +import { FecApiService } from 'app/shared/services/fec-api.service'; +import { ValidateService } from 'app/shared/services/validate.service'; +import { PrimeOptions } from 'app/shared/utils/label.utils'; +import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; +import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; +import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; +import { schema as contactOrganizationSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Organization'; +import { SelectItem } from 'primeng/api'; + +@Component({ + selector: 'app-transaction-contact-lookup', + templateUrl: './transaction-contact-lookup.component.html', +}) +export class TransactionContactLookupComponent { + @Input() contactTypeOptions: PrimeOptions = []; + @Input() contactTypeFormControl: FormControl = new FormControl(); + @Input() contactTypeReadOnly = false; + + @Output() contactSelect = new EventEmitter>(); + + createContactDialogVisible = false; + createContactFormSubmitted = false; + createContactForm: FormGroup = this.formBuilder.group( + this.validateService.getFormGroupFields([ + ...new Set([ + ...ValidateService.getSchemaProperties(contactIndividualSchema), + ...ValidateService.getSchemaProperties(contactCandidateSchema), + ...ValidateService.getSchemaProperties(contactCommitteeSchema), + ...ValidateService.getSchemaProperties(contactOrganizationSchema), + ]), + ]) + ); + + selectedFecCommitteeAccount: CommitteeAccount | undefined; + + workingValidatorSchema = this.validateService.formValidatorSchema; + workingValidatorForm = this.validateService.formValidatorForm; + + constructor( + private formBuilder: FormBuilder, + private validateService: ValidateService, + private fecApiService: FecApiService + ) { } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onContactLookupSelect(event: any) { + if (event && event.value) { + if (event.value instanceof Contact) { + this.contactSelect.emit(event); + } else if (event.value instanceof FecApiCommitteeLookupData) { + const value: FecApiCommitteeLookupData = event.value; + if (value.id) { + this.fecApiService.getDetails(value.id).subscribe((committeeAccount) => { + this.openCreateContactDialog(committeeAccount); + }); + } + } + } + } + + onCreateNewContactSelect() { + this.openCreateContactDialog(); + } + + openCreateContactDialog(value?: CommitteeAccount) { + this.selectedFecCommitteeAccount = value; + // Need these since contact-form sets these for validation + this.workingValidatorSchema = this.validateService.formValidatorSchema; + this.workingValidatorForm = this.validateService.formValidatorForm; + + this.createContactDialogVisible = true; + } + + closeCreateContactDialog() { + // Need these since contact-form sets these for validation + this.validateService.formValidatorSchema = this.workingValidatorSchema; + this.validateService.formValidatorForm = this.workingValidatorForm; + + this.createContactDialogVisible = false; + } + + createContactSave() { + this.createContactFormSubmitted = true; + if (this.createContactForm.invalid) { + return; + } + + const createdContact = Contact.fromJSON({ + ...this.validateService.getFormValues(this.createContactForm), + }); + this.contactSelect.emit({ + value: createdContact, + }); + this.closeCreateContactDialog(); + } + + onCreateContactDialogOpen() { + this.createContactForm.reset(); + this.createContactFormSubmitted = false; + const typeFormControl = this.createContactForm.get('type'); + typeFormControl?.setValue(this.contactTypeFormControl.value); + typeFormControl?.disable(); + let phone; + if (this.selectedFecCommitteeAccount?.treasurer_phone) { + phone = '+1 ' + this.selectedFecCommitteeAccount.treasurer_phone; + } + if (this.selectedFecCommitteeAccount) { + this.createContactForm.get('committee_id')?.setValue(this.selectedFecCommitteeAccount.committee_id); + this.createContactForm.get('name')?.setValue(this.selectedFecCommitteeAccount.name); + this.createContactForm.get('street_1')?.setValue(this.selectedFecCommitteeAccount.street_1); + this.createContactForm.get('street_2')?.setValue(this.selectedFecCommitteeAccount.street_2); + this.createContactForm.get('city')?.setValue(this.selectedFecCommitteeAccount.city); + this.createContactForm.get('state')?.setValue(this.selectedFecCommitteeAccount.state); + this.createContactForm.get('zip')?.setValue(this.selectedFecCommitteeAccount.zip); + this.createContactForm.get('telephone')?.setValue(phone); + } + } + + onCreateContactDialogClose() { + this.selectedFecCommitteeAccount = undefined; + this.createContactForm.reset(); + this.createContactFormSubmitted = false; + this.createContactDialogVisible = false; + } + +} diff --git a/front-end/src/app/shared/shared.module.ts b/front-end/src/app/shared/shared.module.ts index c0ea4a0a2e..cbb80ba38f 100644 --- a/front-end/src/app/shared/shared.module.ts +++ b/front-end/src/app/shared/shared.module.ts @@ -29,6 +29,7 @@ import { LabelPipe } from './pipes/label.pipe'; import { LongDatePipe } from './pipes/long-date.pipe'; import { NavigationControlComponent } from './components/navigation-control/navigation-control/navigation-control.component'; import { NavigationControlBarComponent } from './components/navigation-control-bar/navigation-control-bar.component'; +import { TransactionContactLookupComponent } from './components/transaction-contact-lookup/transaction-contact-lookup.component'; @NgModule({ imports: [ @@ -58,6 +59,7 @@ import { NavigationControlBarComponent } from './components/navigation-control-b NavigationControlComponent, NavigationControlBarComponent, ContactLookupComponent, + TransactionContactLookupComponent, ContactFormComponent, AddressInputComponent, NameInputComponent, @@ -80,6 +82,7 @@ import { NavigationControlBarComponent } from './components/navigation-control-b NavigationControlComponent, NavigationControlBarComponent, ContactLookupComponent, + TransactionContactLookupComponent, ContactFormComponent, AddressInputComponent, NameInputComponent, diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html index 9731df9150..b75cd5b075 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html @@ -7,14 +7,13 @@

Contact

- - +
diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html index 9355cda0aa..3be30f0408 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html @@ -17,14 +17,13 @@

Contact

- - +
@@ -84,12 +83,12 @@

Conduit

- - +
diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html index 5ef0b5f32d..265b4c07f1 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html @@ -8,12 +8,12 @@

Contact

- - +
diff --git a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html index cb69560063..92e53cb8f2 100644 --- a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html +++ b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html @@ -8,12 +8,12 @@

Contact

- - +
diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html index d74b0cf740..83888222ca 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html @@ -8,14 +8,13 @@

Contact

- - +
diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html index 7da1145bdd..03091331d0 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html @@ -8,14 +8,13 @@

Contact

- - +
diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html index 7b4e75c212..9171a97e3c 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html @@ -8,14 +8,13 @@

Contact

- - +
diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html index dfab818109..65753c61e9 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html @@ -17,14 +17,13 @@

Contact

- - +
@@ -84,12 +83,12 @@

Conduit

- - +
diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html index 75a9973622..21d2819165 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html @@ -8,12 +8,12 @@

Contact

- - +
From 1efa3ddafb3bb1686623bb444ef6b7bc7a2e750d Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 15 Feb 2023 16:24:45 -0500 Subject: [PATCH 058/115] fix lint --- .../contact-lookup/contact-lookup.component.spec.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts index bb07242b0c..12eacb216d 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts @@ -219,15 +219,6 @@ describe('ContactLookupComponent', () => { it('#onCreateNewContactSelect Contact happy path', fakeAsync(() => { const eventEmitterEmitSpy = spyOn(component.createNewContactSelect, 'emit'); - const testContact = Contact.fromJSON({ - id: 123, - last_name: 'testLastName', - first_name: 'testFirstName', - type: ContactTypes.COMMITTEE, - }); - const testValue = { - value: testContact, - } as SelectItem; component.onCreateNewContactSelect(); tick(500); expect(eventEmitterEmitSpy).toHaveBeenCalled(); From 225ffece3883cdbaea547a980d41a272a050e99e Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Wed, 15 Feb 2023 16:38:22 -0500 Subject: [PATCH 059/115] Fix unit tests --- ..._NOMINATING_CONVENTION_ACCOUNT.model.spec.ts | 13 ++++--------- ..._PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts | 17 +++++------------ ...NATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts | 5 ----- ..._NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts | 8 ++------ 4 files changed, 11 insertions(+), 32 deletions(-) diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts index 29ca73d337..33eb9fd62e 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts @@ -24,18 +24,13 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { ); }); - it('#generatePurposeDescription() should generate expected retval', () => { - const descrip = transactionType.generatePurposeDescription(); - expect(descrip).toBe('Pres. Nominating Convention Account (Partnership attributions do not require itemization)'); - }); - it('#generatePurposeDescription() should generate a string', () => { - transactionType.transaction = transactionType.getNewTransaction(); - let descrip = transactionType.generatePurposeDescription(); + const transaction = transactionType.getNewTransaction(); + let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Pres. Nominating Convention Account (Partnership attributions do not require itemization)'); - transactionType.transaction.children = [transactionType.getNewTransaction()]; - descrip = transactionType.generatePurposeDescription(); + transaction.children = [transactionType.getNewTransaction()]; + descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe('Pres. Nominating Convention Account (See Partnership Attribution(s) below)'); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts index 16f7657b35..4bb2e18936 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts @@ -1,14 +1,9 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; +import { AggregationGroups } from '../transaction.model'; export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT extends SchaTransactionType { componentGroupId = 'D'; @@ -20,15 +15,13 @@ export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT exten override subTransactionTypes = [ ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, ]; - override childTransactionType = TransactionTypeUtils.factory( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO - ); + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionLabelNotice = 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; - override generatePurposeDescription(): string { - if (this.transaction?.children && this.transaction?.children.length > 0) { + override generatePurposeDescription(transaction: SchATransaction): string { + if (transaction.children && transaction.children.length > 0) { return 'Pres. Nominating Convention Account (See Partnership Attribution(s) below)'; } return 'Pres. Nominating Convention Account (Partnership attributions do not require itemization)'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts index 755fbdf386..8ed67cf2ca 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model'; import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model'; describe('PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', () => { @@ -7,10 +6,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', ( beforeEach(() => { transactionType = new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO(); - transactionType.transaction = transactionType.getNewTransaction(); - transactionType.transaction.parent_transaction = - new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT().getNewTransaction(); - (transactionType.transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; }); it('should create an instance', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts index bbe3ad8468..6050ad6f86 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts @@ -1,13 +1,9 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; -import { - AggregationGroups, - SchATransaction, - ScheduleATransactionTypeLabels, - ScheduleATransactionTypes, -} from '../scha-transaction.model'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchaTransactionType } from './SchaTransactionType.model'; +import { AggregationGroups } from '../transaction.model'; export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO extends SchaTransactionType { componentGroupId = 'A'; From e870299fb9bdec788e41e1bf322c3b0f289c58eb Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 16 Feb 2023 00:47:59 -0500 Subject: [PATCH 060/115] added contact lookup for COM to create contact --- .../contact-form/contact-form.component.html | 17 ++-- .../contact-form/contact-form.component.ts | 79 ++++++++++++++++++- .../contact-lookup.component.html | 2 +- .../contact-lookup.component.ts | 1 + 4 files changed, 88 insertions(+), 11 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.html b/front-end/src/app/shared/components/contact-form/contact-form.component.html index d0fd33a389..24d0839600 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.html +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.html @@ -6,16 +6,17 @@

Contact

-
+
- + +
diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index d502f49d1b..7a150cdeb8 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -1,6 +1,7 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { FormBuilder, FormGroup } from '@angular/forms'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; +import { FecApiService } from 'app/shared/services/fec-api.service'; import { ValidateService } from 'app/shared/services/validate.service'; import { CountryCodeLabels, LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; @@ -11,8 +12,10 @@ import { Subject, takeUntil } from 'rxjs'; import { CandidateOfficeTypeLabels, CandidateOfficeTypes, + Contact, ContactTypeLabels, ContactTypes, + FecApiCommitteeLookupData } from '../../models/contact.model'; @Component({ @@ -32,6 +35,8 @@ export class ContactFormComponent implements OnInit, OnDestroy { ); @Input() formSubmitted = false; + contactTypeFormControl: FormControl = new FormControl(); + private destroy$: Subject = new Subject(); ContactTypes = ContactTypes; @@ -42,7 +47,11 @@ export class ContactFormComponent implements OnInit, OnDestroy { candidateStateOptions: PrimeOptions = []; candidateDistrictOptions: PrimeOptions = []; - constructor(private validateService: ValidateService, private fb: FormBuilder) {} + constructor( + private validateService: ValidateService, + private fb: FormBuilder, + private fecApiService: FecApiService + ) { } ngOnInit(): void { this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); @@ -55,6 +64,8 @@ export class ContactFormComponent implements OnInit, OnDestroy { this.validateService.formValidatorSchema = contactIndividualSchema; this.validateService.formValidatorForm = this.form; + this.contactTypeFormControl = this.form?.get('type') as FormControl || new FormControl(); + this.form ?.get('type') ?.valueChanges.pipe(takeUntil(this.destroy$)) @@ -145,6 +156,70 @@ export class ContactFormComponent implements OnInit, OnDestroy { return CandidateOfficeTypes; } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onContactLookupSelect(event: any) { + if (event && event.value) { + if (event.value instanceof Contact) { + this.onContactSelect(event.value); + } else if (event.value instanceof FecApiCommitteeLookupData) { + this.onFecApiCommitteeLookupDataSelect(event.value); + } + } + } + + onContactSelect(contact: Contact) { + if (contact) { + switch (contact.type) { + case ContactTypes.CANDIDATE: + this.form.get('type')?.setValue(contact.type); + this.form.get('candidate_id')?.setValue(contact.candidate_id); + this.form.get('last_name')?.setValue(contact.last_name); + this.form.get('first_name')?.setValue(contact.first_name); + this.form.get('middle_name')?.setValue(contact.middle_name); + this.form.get('prefix')?.setValue(contact.prefix); + this.form.get('suffix')?.setValue(contact.suffix); + this.form.get('employer')?.setValue(contact.employer); + this.form.get('occupation')?.setValue(contact.occupation); + this.form.get('candidate_office')?.setValue(contact.candidate_office); + this.form.get('candidate_state')?.setValue(contact.candidate_state); + this.form.get('candidate_district')?.setValue(contact.candidate_district); + break; + case ContactTypes.COMMITTEE: + this.form.get('type')?.setValue(contact.type); + this.form.get('committee_id')?.setValue(contact.committee_id); + this.form.get('name')?.setValue(contact.name); + break; + } + this.form.get('country')?.setValue(contact.country); + this.form.get('street_1')?.setValue(contact.street_1); + this.form.get('street_2')?.setValue(contact.street_2); + this.form.get('city')?.setValue(contact.city); + this.form.get('state')?.setValue(contact.state); + this.form.get('zip')?.setValue(contact.zip); + this.form.get('telephone')?.setValue(contact.telephone); + } + } + + onFecApiCommitteeLookupDataSelect(data: FecApiCommitteeLookupData) { + if (data.id) { + this.fecApiService.getDetails(data.id).subscribe((committeeAccount) => { + let phone; + if (committeeAccount?.treasurer_phone) { + phone = '+1 ' + committeeAccount.treasurer_phone; + } + this.form.get('type')?.setValue(ContactTypes.COMMITTEE); + this.form.get('committee_id')?.setValue(committeeAccount.committee_id); + this.form.get('name')?.setValue(committeeAccount.name); + this.form.get('street_1')?.setValue(committeeAccount.street_1); + this.form.get('street_2')?.setValue(committeeAccount.street_2); + this.form.get('city')?.setValue(committeeAccount.city); + this.form.get('state')?.setValue(committeeAccount.state); + this.form.get('zip')?.setValue(committeeAccount.zip); + this.form.get('telephone')?.setValue(phone); + }); + } + } + /** * Given the type of contact given, return the appropriate JSON schema doc * @param {ContactTypes} type diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html index fae42603bf..8748f39179 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html @@ -14,7 +14,7 @@ >
-
+
Date: Thu, 16 Feb 2023 07:27:39 -0500 Subject: [PATCH 061/115] Cleaned up transaction reference in input form --- .../transaction-type-base/transaction-form.utils.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index eeb5d085bf..60b1dcd1a9 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -33,19 +33,13 @@ export class TransactionFormUtils { validateService.formValidatorSchema = transaction?.transactionType?.schema; validateService.formValidatorForm = form; - // Intialize form values - function isExisting(transaction: Transaction | undefined) { - return !!transaction?.id; - } - - if (isExisting(transaction)) { - const txn = { ...transaction } as Transaction; - form.patchValue({ ...txn }); + if (transaction && transaction.id) { + form.patchValue({ ...transaction }); TransactionMemoUtils.patchMemoText(transaction, form); form.get('entity_type')?.disable(); - contactId$.next(txn.contact_id || ''); + contactId$.next(transaction.contact_id || ''); } else { component.resetForm(); form.get('entity_type')?.enable(); From f511bf8be29d6bc447daae43698ef2b8d924847d Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 07:40:05 -0500 Subject: [PATCH 062/115] Moved transaction type base classes into shared/models directory --- .../app/shared/components/inputs/base-input.component.ts | 2 +- .../double-transaction-type-base.component.ts | 2 +- .../transaction-type-base/transaction-contact.utils.ts | 2 +- .../transaction-type-base/transaction-form.utils.ts | 2 +- .../transaction-type-base.component.ts | 5 +---- ...actionType.model.ts => scha-transaction-type.model.ts} | 0 ...actionType.model.ts => schb-transaction-type.model.ts} | 0 .../transaction-type.model.spec.ts | 2 +- .../{transaction-types => }/transaction-type.model.ts | 8 ++++---- .../BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts | 2 +- .../shared/models/transaction-types/EARMARK_MEMO.model.ts | 2 +- .../EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts | 2 +- .../EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts | 2 +- .../EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts | 2 +- .../models/transaction-types/EARMARK_RECEIPT.model.ts | 2 +- .../EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts | 2 +- .../EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts | 2 +- .../EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts | 2 +- .../INDIVIDUAL_JF_TRANSFER_MEMO.model.ts | 2 +- .../INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- ...AL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- ...NDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- ..._NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- .../INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- ...IDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts | 2 +- .../models/transaction-types/INDIVIDUAL_RECEIPT.model.ts | 2 +- .../INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts | 2 +- .../transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts | 2 +- ...JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- ..._TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- .../JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- .../transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts | 2 +- .../OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts | 2 +- .../OFFSET_TO_OPERATING_EXPENDITURES.model.ts | 2 +- .../transaction-types/OPERATING_EXPENDITURE.model.spec.ts | 2 +- .../transaction-types/OPERATING_EXPENDITURE.model.ts | 2 +- .../OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts | 2 +- .../models/transaction-types/OTHER_RECEIPT.model.spec.ts | 2 +- .../models/transaction-types/OTHER_RECEIPT.model.ts | 2 +- .../models/transaction-types/PAC_EARMARK_MEMO.model.ts | 2 +- .../models/transaction-types/PAC_EARMARK_RECEIPT.model.ts | 2 +- .../transaction-types/PAC_JF_TRANSFER_MEMO.model.ts | 2 +- .../PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- ...AC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- .../PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- ..._NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- .../PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- .../PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../models/transaction-types/PAC_RECEIPT.model.spec.ts | 2 +- .../shared/models/transaction-types/PAC_RECEIPT.model.ts | 2 +- .../models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts | 2 +- .../models/transaction-types/PAC_RETURN.model.spec.ts | 2 +- .../shared/models/transaction-types/PAC_RETURN.model.ts | 2 +- .../models/transaction-types/PARTNERSHIP_MEMO.model.ts | 2 +- ...RTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- ...SHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts | 2 +- .../PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- ...RTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts | 2 +- .../models/transaction-types/PARTNERSHIP_RECEIPT.model.ts | 2 +- .../PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts | 2 +- .../PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts | 2 +- .../transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts | 2 +- .../PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- .../PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- .../PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- .../models/transaction-types/PARTY_RECEIPT.model.spec.ts | 2 +- .../models/transaction-types/PARTY_RECEIPT.model.ts | 2 +- .../transaction-types/PARTY_RECOUNT_RECEIPT.model.ts | 2 +- .../models/transaction-types/PARTY_RETURN.model.spec.ts | 2 +- .../shared/models/transaction-types/PARTY_RETURN.model.ts | 2 +- .../models/transaction-types/RETURN_RECEIPT.model.spec.ts | 2 +- .../models/transaction-types/RETURN_RECEIPT.model.ts | 2 +- .../models/transaction-types/TRANSFER.model.spec.ts | 2 +- .../app/shared/models/transaction-types/TRANSFER.model.ts | 2 +- .../transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts | 2 +- .../TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- ...AL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- .../TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- ..._NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- .../TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- ...RIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../models/transaction-types/TRIBAL_RECEIPT.model.ts | 2 +- .../transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts | 2 +- .../UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts | 2 +- .../UNREGISTERED_RECEIPT_FROM_PERSON.model.ts | 2 +- .../UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts | 2 +- .../UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts | 2 +- front-end/src/app/shared/models/transaction.model.ts | 2 +- front-end/src/app/shared/utils/transaction-type.utils.ts | 2 +- front-end/src/app/shared/utils/unit-test.utils.ts | 2 +- 91 files changed, 92 insertions(+), 95 deletions(-) rename front-end/src/app/shared/models/{transaction-types/SchaTransactionType.model.ts => scha-transaction-type.model.ts} (100%) rename front-end/src/app/shared/models/{transaction-types/SchbTransactionType.model.ts => schb-transaction-type.model.ts} (100%) rename front-end/src/app/shared/models/{transaction-types => }/transaction-type.model.spec.ts (96%) rename front-end/src/app/shared/models/{transaction-types => }/transaction-type.model.ts (92%) diff --git a/front-end/src/app/shared/components/inputs/base-input.component.ts b/front-end/src/app/shared/components/inputs/base-input.component.ts index 37eeb11c41..7ed4e01c62 100644 --- a/front-end/src/app/shared/components/inputs/base-input.component.ts +++ b/front-end/src/app/shared/components/inputs/base-input.component.ts @@ -1,6 +1,6 @@ import { Component, Input } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { TransactionTemplateMapType } from '../../models/transaction-types/transaction-type.model'; +import { TransactionTemplateMapType } from '../../models/transaction-type.model'; @Component({ template: '', diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index bd7caeae6b..92dfd22388 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -10,7 +10,7 @@ import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.m import { TransactionTypeBaseComponent } from './transaction-type-base.component'; import { TransactionFormUtils } from './transaction-form.utils'; import { TransactionContactUtils } from './transaction-contact.utils'; -import { TransactionTemplateMapType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionTemplateMapType } from 'app/shared/models/transaction-type.model'; /** * This component is to help manage a form that contains 2 transactions that the diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts index 7928e84a61..4c4333ec3f 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts @@ -1,5 +1,5 @@ import { AbstractControl, FormGroup } from '@angular/forms'; -import { TransactionTemplateMapType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionTemplateMapType } from 'app/shared/models/transaction-type.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { SelectItem } from 'primeng/api'; import { Subject } from 'rxjs'; diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 60b1dcd1a9..be28445979 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -1,5 +1,5 @@ import { FormGroup } from '@angular/forms'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; import { Transaction, ScheduleTransaction } from 'app/shared/models/transaction.model'; import { ValidateService } from 'app/shared/services/validate.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index ad6608d271..4fb1ef5bfd 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -8,10 +8,7 @@ import { NavigationEvent, TransactionNavigationControls, } from 'app/shared/models/transaction-navigation-controls.model'; -import { - TransactionTemplateMapType, - TransactionType, -} from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionTemplateMapType, TransactionType } from 'app/shared/models/transaction-type.model'; import { Transaction, ScheduleTransaction, ScheduleTransactionTypes } from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; diff --git a/front-end/src/app/shared/models/transaction-types/SchaTransactionType.model.ts b/front-end/src/app/shared/models/scha-transaction-type.model.ts similarity index 100% rename from front-end/src/app/shared/models/transaction-types/SchaTransactionType.model.ts rename to front-end/src/app/shared/models/scha-transaction-type.model.ts diff --git a/front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts b/front-end/src/app/shared/models/schb-transaction-type.model.ts similarity index 100% rename from front-end/src/app/shared/models/transaction-types/SchbTransactionType.model.ts rename to front-end/src/app/shared/models/schb-transaction-type.model.ts diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts b/front-end/src/app/shared/models/transaction-type.model.spec.ts similarity index 96% rename from front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts rename to front-end/src/app/shared/models/transaction-type.model.spec.ts index 7d3775a713..95d33b010d 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-type.model.spec.ts @@ -1,4 +1,4 @@ -import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { ScheduleATransactionTypes } from './scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { TransactionType } from './transaction-type.model'; diff --git a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-type.model.ts similarity index 92% rename from front-end/src/app/shared/models/transaction-types/transaction-type.model.ts rename to front-end/src/app/shared/models/transaction-type.model.ts index 169b021ed4..6d611dd7bf 100644 --- a/front-end/src/app/shared/models/transaction-types/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-type.model.ts @@ -1,7 +1,7 @@ -import { TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { JsonSchema } from '../../interfaces/json-schema.interface'; -import { ContactType } from '../contact.model'; -import { Transaction, ScheduleTransactionTypes } from '../transaction.model'; +import { TransactionNavigationControls } from './transaction-navigation-controls.model'; +import { JsonSchema } from '../interfaces/json-schema.interface'; +import { ContactType } from './contact.model'; +import { Transaction, ScheduleTransactionTypes } from './transaction.model'; /** * Class that defines the meta data associated with a transaction type. diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts index c7a65ebd5e..14c4c0abd6 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts index 4860a1595a..741f989fb5 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts @@ -1,7 +1,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/EARMARK_MEMO'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_MEMO extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts index ea00c71607..e8467eeb04 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts @@ -1,7 +1,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_MEMO_CONVENTION_ACCOUNT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts index a8f1441faa..029e6da820 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts @@ -1,7 +1,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts index e540e6efc1..7c8a2fc40e 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts @@ -1,7 +1,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_MEMO_RECOUNT_ACCOUNT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts index 568b5b4ade..88e0309e08 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts @@ -5,7 +5,7 @@ import { ContactTypes } from '../contact.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS_MINIMAL, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_RECEIPT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts index f3db67b521..7ca5e1871e 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts @@ -9,7 +9,7 @@ import { SAVE_LIST_CONTROL, TransactionNavigationControls, } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts index bb89504c09..8482021807 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts @@ -9,7 +9,7 @@ import { SAVE_LIST_CONTROL, TransactionNavigationControls, } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts index 8a5d97e2ac..9aae0963c9 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts @@ -9,7 +9,7 @@ import { SAVE_LIST_CONTROL, TransactionNavigationControls, } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends SchaTransactionType { componentGroupId = 'AG'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts index 0963f08ccb..da7efb84d2 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_JF_ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class INDIVIDUAL_JF_TRANSFER_MEMO extends SchaTransactionType { componentGroupId = 'A'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 812bbba93e..53d529fc07 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index dd2b787574..587eca65f5 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 76856cb574..eb98c69dd1 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 00484e9f37..40a3687654 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 2c20cc85b1..067a88d60f 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 4c980d005d..c1f7460405 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts index d172f57815..78a4cc3f0f 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts @@ -1,6 +1,6 @@ import { INDIVIDUAL_RECEIPT } from './INDIVIDUAL_RECEIPT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; describe('INDIVIDUAL_RECEIPT', () => { let transactionType: INDIVIDUAL_RECEIPT; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts index a5403d2a4a..b5e3c9612e 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts index d6185278e8..df2146821b 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts index 9a95efec64..3100bf7568 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class INDIVIDUAL_RECOUNT_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 9fb56797c7..290061c312 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 49708c0135..65b5728a31 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index f6ef0ba9ea..a2a7a6e4d5 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts index 3f19ee5654..ca3bef72ff 100644 --- a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JOINT_FUNDRAISING_TRANSFER'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class JOINT_FUNDRAISING_TRANSFER extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts index f0ec64a58e..0430fdc542 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts @@ -1,6 +1,6 @@ import { OFFSET_TO_OPERATING_EXPENDITURES } from './OFFSET_TO_OPERATING_EXPENDITURES.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; describe('OFFSET_TO_OPERATING_EXPENDITURES', () => { let transactionType: OFFSET_TO_OPERATING_EXPENDITURES; diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts index fb69ca0800..6f957f3b60 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { ContactTypes } from '../contact.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts index 6cfb3c4c86..667926be42 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts @@ -1,6 +1,6 @@ import { OPERATING_EXPENDITURE } from './OPERATING_EXPENDITURE.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; describe('OPERATING_EXPENDITURE', () => { let transactionType: OPERATING_EXPENDITURE; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index ceec28c8ba..32c952acad 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COMMON_DISBURSEMENTS'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { SchbTransactionType } from './SchbTransactionType.model'; +import { SchbTransactionType } from '../schb-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { ContactTypes } from '../contact.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts index 05a81039c2..75d8394e06 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts index 321ba0763e..8d7078e438 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts @@ -1,6 +1,6 @@ import { OTHER_RECEIPT } from './OTHER_RECEIPT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; describe('OTHER_RECEIPT', () => { let transactionType: OTHER_RECEIPT; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts index c94122ddbc..4130604c60 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class OTHER_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts index 8d9bfcf864..d8e9f998dd 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts @@ -1,7 +1,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_EARMARK_MEMO'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PAC_EARMARK_MEMO extends SchaTransactionType { componentGroupId = 'FG'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts index a0a700d2bb..4679240b24 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts @@ -5,7 +5,7 @@ import { ContactTypes } from '../contact.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS_MINIMAL, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PAC_EARMARK_RECEIPT extends SchaTransactionType { componentGroupId = 'FG'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts index 43bd159bc3..ea71f4653e 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_JF_TRANSFE import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PAC_JF_TRANSFER_MEMO extends SchaTransactionType { componentGroupId = 'F'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 2f894da4c7..99eb0363ef 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index a029e2f59d..4e6ab8eda1 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 9809c57852..bef2b07ab6 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 1b357bc2e9..cdcb0eafe5 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 6c67b40050..f1f6862cea 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 097851e03a..0d9925d5ff 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts index 0518ac72f1..5fc6596f19 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts @@ -1,4 +1,4 @@ -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { PAC_RECEIPT } from './PAC_RECEIPT.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts index a66ce64a4c..a366e4ffaf 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts index bab51dd5cc..6fb0e8b6d8 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_RECOUNT_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts index e2a0cbdf63..de507ba10b 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts @@ -1,4 +1,4 @@ -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { PAC_RETURN } from './PAC_RETURN.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts index d3aa9724a7..8e49416e77 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts @@ -1,4 +1,4 @@ -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts index 3a08251f72..0536d79d4f 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ME import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PARTNERSHIP_MEMO extends SchaTransactionType { componentGroupId = 'A'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index ba6dcdf938..1c2ba786b7 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts index ee2baf8d70..16982156c8 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index da2aed0a6b..b1792cfb83 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -4,7 +4,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NA import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { componentGroupId = 'D'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts index a0fbf03360..775fc2e116 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NA import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO extends SchaTransactionType { componentGroupId = 'A'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts index 8a3defb174..0f126175b3 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RE import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PARTNERSHIP_RECEIPT extends SchaTransactionType { componentGroupId = 'D'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts index 483cf08bb1..0a28098f80 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RE import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchaTransactionType { componentGroupId = 'D'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts index 714cb51fe9..9b0047783e 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 7a907fc2ac..970677e9a3 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_JF_TRANS import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class PARTY_JF_TRANSFER_MEMO extends SchaTransactionType { componentGroupId = 'F'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 3b501564d4..a6f755f171 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index b835443639..22ac6fe737 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 30caef000d..c3ccbd1e3f 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts index 7887514070..482d75eaeb 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts @@ -1,4 +1,4 @@ -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { PARTY_RECEIPT } from './PARTY_RECEIPT.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts index 400ffef9f1..a9e0c4df03 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts index 190bbff602..34b178ee99 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_RECOUNT_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts index b356444c85..25f24970bb 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts @@ -1,4 +1,4 @@ -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { PARTY_RETURN } from './PARTY_RETURN.model'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts index f8be417b5a..9a7c674d76 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RETURN'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_RETURN extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts index 6b9fec5ce5..2d7f3e7d05 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts @@ -1,4 +1,4 @@ -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { RETURN_RECEIPT } from './RETURN_RECEIPT.model'; diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts index bae8cc076b..a42a90ca51 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts @@ -4,7 +4,7 @@ import { ContactTypes } from '../contact.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class RETURN_RECEIPT extends SchaTransactionType { componentGroupId = 'C'; diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts index 93ebf9bc84..4b7fa3f376 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts @@ -1,4 +1,4 @@ -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TRANSFER } from './TRANSFER.model'; diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts index 2f6d97d1af..b10b6a5c5f 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRANSFER'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRANSFER extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts index 669cc035e2..bfdf4777eb 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_JF_TRAN import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class TRIBAL_JF_TRANSFER_MEMO extends SchaTransactionType { componentGroupId = 'D'; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index ae4a43ad6d..073d573d08 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index fcd7c80cb3..58782616a8 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 88a97a3ab4..9317b04f78 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 4ca50622e2..7faceb1b57 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index dcc1a3df77..3a52f1d205 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index ba71a92647..90156876d3 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts index 8af000cbaf..4c3626519f 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts index 41c464051b..acfa70dbb8 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts @@ -2,7 +2,7 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRIBAL_RECOUNT_RECEIPT extends SchaTransactionType { diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts index 704859c11a..cd7ac16b83 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts @@ -1,6 +1,6 @@ import { UNREGISTERED_RECEIPT_FROM_PERSON } from './UNREGISTERED_RECEIPT_FROM_PERSON.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; describe('UNREGISTERED_RECEIPT_FROM_PERSON', () => { let transactionType: UNREGISTERED_RECEIPT_FROM_PERSON; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts index 6d03586304..520748f141 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts @@ -3,7 +3,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_R import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class UNREGISTERED_RECEIPT_FROM_PERSON extends SchaTransactionType { componentGroupId = 'D'; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts index e680360210..d312a40f54 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts @@ -1,6 +1,6 @@ import { UNREGISTERED_RECEIPT_FROM_PERSON_RETURN } from './UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionType } from 'app/shared/models/transaction-types/transaction-type.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; describe('UNREGISTERED_RECEIPT_FROM_PERSON_RETURN', () => { let transactionType: UNREGISTERED_RECEIPT_FROM_PERSON_RETURN; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts index 21a0604e42..d60716acff 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts @@ -3,7 +3,7 @@ import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchaTransactionType } from '../scha-transaction-type.model'; export class UNREGISTERED_RECEIPT_FROM_PERSON_RETURN extends SchaTransactionType { componentGroupId = 'D'; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 12b84d982f..421d0f65e4 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -4,7 +4,7 @@ import { MemoText } from './memo-text.model'; import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes } from './schb-transaction.model'; import { ValidateService } from '../services/validate.service'; -import { TransactionType } from './transaction-types/transaction-type.model'; +import { TransactionType } from './transaction-type.model'; import { Type } from 'class-transformer'; export abstract class Transaction extends BaseModel { diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 80351bec92..ba1a00ee90 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -44,7 +44,7 @@ import { PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from '../models/transaction import { PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT } from '../models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { PARTY_RECEIPT } from '../models/transaction-types/PARTY_RECEIPT.model'; import { PARTY_RECOUNT_RECEIPT } from '../models/transaction-types/PARTY_RECOUNT_RECEIPT.model'; -import { TransactionType } from '../models/transaction-types/transaction-type.model'; +import { TransactionType } from '../models/transaction-type.model'; import { TRANSFER } from '../models/transaction-types/TRANSFER.model'; import { TRIBAL_JF_TRANSFER_MEMO } from '../models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model'; import { TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT } from '../models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index 7db35a2eec..bc1b6eb334 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -16,7 +16,7 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../models/schb-trans import { Contact, ContactTypes } from '../models/contact.model'; import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; import { TransactionTypeUtils } from './transaction-type.utils'; -import { TransactionTemplateMapType } from '../models/transaction-types/transaction-type.model'; +import { TransactionTemplateMapType } from '../models/transaction-type.model'; import { MemoText } from '../models/memo-text.model'; export const testCommitteeAccount: CommitteeAccount = CommitteeAccount.fromJSON({ From 836490c423b3bdfd36c9f1d0279fd85b51e39551 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 07:59:26 -0500 Subject: [PATCH 063/115] Moved TransactionTypes and GroupTypes to Transaction model file --- .../transaction-type-base.component.ts | 4 ++-- .../src/app/shared/models/scha-transaction-type.model.ts | 2 +- .../src/app/shared/models/schb-transaction-type.model.ts | 2 +- .../shared/models/transaction-navigation-controls.model.ts | 6 +++--- front-end/src/app/shared/models/transaction-type.model.ts | 4 ++-- .../BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts | 4 ++-- .../shared/models/transaction-types/EARMARK_MEMO.model.ts | 4 ++-- .../EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts | 4 ++-- .../EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- .../EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts | 4 ++-- .../models/transaction-types/EARMARK_RECEIPT.model.ts | 4 ++-- .../EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts | 4 ++-- .../EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- .../EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts | 4 ++-- .../transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 4 ++-- ...UAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 4 ++-- ...INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- ...L_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ++-- ...VIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../models/transaction-types/INDIVIDUAL_RECEIPT.model.ts | 4 ++-- .../INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts | 4 ++-- .../transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts | 4 ++-- .../JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 4 ++-- ...F_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- .../JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ++-- .../transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts | 4 ++-- .../OFFSET_TO_OPERATING_EXPENDITURES.model.ts | 4 ++-- .../transaction-types/OPERATING_EXPENDITURE.model.ts | 4 ++-- .../OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts | 4 ++-- .../shared/models/transaction-types/OTHER_RECEIPT.model.ts | 4 ++-- .../models/transaction-types/PAC_EARMARK_MEMO.model.ts | 4 ++-- .../models/transaction-types/PAC_EARMARK_RECEIPT.model.ts | 4 ++-- .../models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 4 ++-- ...PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- ...C_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ++-- .../PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../shared/models/transaction-types/PAC_RECEIPT.model.ts | 4 ++-- .../models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts | 4 ++-- .../models/transaction-types/PAC_RETURN.model.spec.ts | 4 ++-- .../shared/models/transaction-types/PAC_RETURN.model.ts | 4 ++-- .../models/transaction-types/PARTNERSHIP_MEMO.model.ts | 4 ++-- ...ARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- ...RSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts | 4 ++-- .../PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ++-- ...ARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts | 4 ++-- .../models/transaction-types/PARTNERSHIP_RECEIPT.model.ts | 4 ++-- .../PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts | 4 ++-- .../PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts | 4 ++-- .../transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 4 ++-- .../PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- .../PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ++-- .../shared/models/transaction-types/PARTY_RECEIPT.model.ts | 4 ++-- .../transaction-types/PARTY_RECOUNT_RECEIPT.model.ts | 4 ++-- .../shared/models/transaction-types/PARTY_RETURN.model.ts | 4 ++-- .../models/transaction-types/RETURN_RECEIPT.model.ts | 4 ++-- .../app/shared/models/transaction-types/TRANSFER.model.ts | 4 ++-- .../transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 4 ++-- ...BAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 4 ++-- ...L_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ++-- ...TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 4 ++-- .../models/transaction-types/TRIBAL_RECEIPT.model.ts | 4 ++-- .../transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts | 4 ++-- .../UNREGISTERED_RECEIPT_FROM_PERSON.model.ts | 4 ++-- .../UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts | 4 ++-- front-end/src/app/shared/models/transaction.model.ts | 7 ++++--- front-end/src/app/shared/utils/unit-test.utils.ts | 6 +++--- .../transaction-type-picker.component.ts | 7 +++---- 76 files changed, 155 insertions(+), 155 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 4fb1ef5bfd..c8de4c69d1 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -9,7 +9,7 @@ import { TransactionNavigationControls, } from 'app/shared/models/transaction-navigation-controls.model'; import { TransactionTemplateMapType, TransactionType } from 'app/shared/models/transaction-type.model'; -import { Transaction, ScheduleTransaction, ScheduleTransactionTypes } from 'app/shared/models/transaction.model'; +import { Transaction, ScheduleTransaction, TransactionTypes } from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; @@ -282,7 +282,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy return this.form.get('entity_type')?.value || ''; } - createSubTransaction(event: { value: ScheduleTransactionTypes }) { + createSubTransaction(event: { value: TransactionTypes }) { this.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.CHILD, this.transaction, event.value)); this.form.get('subTransaction')?.reset(); // If the save fails, this clears the dropdown } diff --git a/front-end/src/app/shared/models/scha-transaction-type.model.ts b/front-end/src/app/shared/models/scha-transaction-type.model.ts index 67a9bb569f..d65badb990 100644 --- a/front-end/src/app/shared/models/scha-transaction-type.model.ts +++ b/front-end/src/app/shared/models/scha-transaction-type.model.ts @@ -1,6 +1,6 @@ import { TransactionType, TransactionTemplateMapType } from './transaction-type.model'; -export abstract class SchaTransactionType extends TransactionType { +export abstract class SchATransactionType extends TransactionType { scheduleId = 'A'; // Mapping of schedule fields to the group input component form templates diff --git a/front-end/src/app/shared/models/schb-transaction-type.model.ts b/front-end/src/app/shared/models/schb-transaction-type.model.ts index 5e616260f1..c254c2f742 100644 --- a/front-end/src/app/shared/models/schb-transaction-type.model.ts +++ b/front-end/src/app/shared/models/schb-transaction-type.model.ts @@ -1,6 +1,6 @@ import { TransactionType, TransactionTemplateMapType } from './transaction-type.model'; -export abstract class SchbTransactionType extends TransactionType { +export abstract class SchBTransactionType extends TransactionType { scheduleId = 'B'; // Mapping of schedule fields to the group input component form templates diff --git a/front-end/src/app/shared/models/transaction-navigation-controls.model.ts b/front-end/src/app/shared/models/transaction-navigation-controls.model.ts index a859baee04..a0ac5fffad 100644 --- a/front-end/src/app/shared/models/transaction-navigation-controls.model.ts +++ b/front-end/src/app/shared/models/transaction-navigation-controls.model.ts @@ -1,5 +1,5 @@ import { hasNoContact, isNewTransaction, Transaction } from './transaction.model'; -import { ScheduleTransactionTypes } from 'app/shared/models/transaction.model'; +import { TransactionTypes } from 'app/shared/models/transaction.model'; export enum NavigationAction { CANCEL, @@ -17,13 +17,13 @@ export class NavigationEvent { action: NavigationAction; destination: NavigationDestination; transaction?: Transaction; - destinationTransactionType?: ScheduleTransactionTypes; + destinationTransactionType?: TransactionTypes; constructor( action?: NavigationAction, destination?: NavigationDestination, transaction?: Transaction, - destinationTransactionType?: ScheduleTransactionTypes + destinationTransactionType?: TransactionTypes ) { this.action = action || NavigationAction.CANCEL; this.destination = destination || NavigationDestination.LIST; diff --git a/front-end/src/app/shared/models/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-type.model.ts index 6d611dd7bf..bda391458c 100644 --- a/front-end/src/app/shared/models/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-type.model.ts @@ -1,7 +1,7 @@ import { TransactionNavigationControls } from './transaction-navigation-controls.model'; import { JsonSchema } from '../interfaces/json-schema.interface'; import { ContactType } from './contact.model'; -import { Transaction, ScheduleTransactionTypes } from './transaction.model'; +import { Transaction, TransactionTypes } from './transaction.model'; /** * Class that defines the meta data associated with a transaction type. @@ -17,7 +17,7 @@ export abstract class TransactionType { updateParentOnSave = false; // Set to true when the parent transaction may be affected by a change in the transaction contactTypeOptions?: ContactType[]; // Override the default list of contact types in the transaction component defaultContactTypeOption?: ContactType; // Set this to the default contact type (entity type) of the form select box if it is other than the first contact type in the contactTypeOptions list - subTransactionTypes?: ScheduleTransactionTypes[]; // TransactionTypes displayed in dropdown to choose from when creating a child transaction + subTransactionTypes?: TransactionTypes[]; // TransactionTypes displayed in dropdown to choose from when creating a child transaction navigationControls?: TransactionNavigationControls; generatePurposeDescription?(transaction: Transaction): string; // Dynamically generates the text in the CPD or EPD field purposeDescriptionLabelNotice?: string; // Additional italicized text that appears beneath the form input label diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts index 14c4c0abd6..ec5c63df78 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT extends SchaTransactionType { +export class BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts index 741f989fb5..7bba10138e 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts @@ -1,9 +1,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/EARMARK_MEMO'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_MEMO extends SchaTransactionType { +export class EARMARK_MEMO extends SchATransactionType { componentGroupId = 'AG'; override isDependentChild = true; title = ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts index e8467eeb04..77e9678e0a 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts @@ -1,9 +1,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_MEMO_CONVENTION_ACCOUNT extends SchaTransactionType { +export class EARMARK_MEMO_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'AG'; override isDependentChild = true; title = ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts index 029e6da820..35b17c1bd8 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts @@ -1,9 +1,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'AG'; override isDependentChild = true; title = ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts index 7c8a2fc40e..64bbc9ed0e 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts @@ -1,9 +1,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_MEMO_RECOUNT_ACCOUNT extends SchaTransactionType { +export class EARMARK_MEMO_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'AG'; override isDependentChild = true; title = ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts index 88e0309e08..7f63c4b37c 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts @@ -5,9 +5,9 @@ import { ContactTypes } from '../contact.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS_MINIMAL, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_RECEIPT extends SchaTransactionType { +export class EARMARK_RECEIPT extends SchATransactionType { componentGroupId = 'AG'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts index 7ca5e1871e..4257fc0bf4 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts @@ -9,9 +9,9 @@ import { SAVE_LIST_CONTROL, TransactionNavigationControls, } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchaTransactionType { +export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'AG'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts index 8482021807..f1ca49b47b 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts @@ -9,9 +9,9 @@ import { SAVE_LIST_CONTROL, TransactionNavigationControls, } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'AG'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts index 9aae0963c9..3257f34521 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts @@ -9,9 +9,9 @@ import { SAVE_LIST_CONTROL, TransactionNavigationControls, } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends SchaTransactionType { +export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'AG'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts index da7efb84d2..36fe9bf43c 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_JF_ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class INDIVIDUAL_JF_TRANSFER_MEMO extends SchaTransactionType { +export class INDIVIDUAL_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_JF_TRANSFER_MEMO); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 53d529fc07..ee162bf09e 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { +export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 587eca65f5..3dac8a23d1 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransactionType { +export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index eb98c69dd1..f19b899069 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 40a3687654..c687080e92 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransactionType { +export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 067a88d60f..d3ba68dd33 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { +export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index c1f7460405..d4546581a0 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransactionType { +export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts index b5e3c9612e..e1459cccf7 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_RECEIPT extends SchaTransactionType { +export class INDIVIDUAL_RECEIPT extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts index df2146821b..14b0748006 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT extends SchaTransactionType { +export class INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts index 3100bf7568..4fe200c218 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class INDIVIDUAL_RECOUNT_RECEIPT extends SchaTransactionType { +export class INDIVIDUAL_RECOUNT_RECEIPT extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_RECOUNT_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 290061c312..ede6d0bbb2 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { +export class JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 65b5728a31..1e21aeb45a 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index a2a7a6e4d5..0635b7e192 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { +export class JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts index ca3bef72ff..05610b782a 100644 --- a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JOINT_FUNDRAISING_TRANSFER'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class JOINT_FUNDRAISING_TRANSFER extends SchaTransactionType { +export class JOINT_FUNDRAISING_TRANSFER extends SchATransactionType { componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts index 6f957f3b60..a071814d22 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts @@ -2,11 +2,11 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { ContactTypes } from '../contact.model'; -export class OFFSET_TO_OPERATING_EXPENDITURES extends SchaTransactionType { +export class OFFSET_TO_OPERATING_EXPENDITURES extends SchATransactionType { componentGroupId = 'B'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index 32c952acad..846ab5ab47 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -2,11 +2,11 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COMMON_DISBURSEMENTS'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { SchbTransactionType } from '../schb-transaction-type.model'; +import { SchBTransactionType } from '../schb-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { ContactTypes } from '../contact.model'; -export class OPERATING_EXPENDITURE extends SchbTransactionType { +export class OPERATING_EXPENDITURE extends SchBTransactionType { componentGroupId = 'H'; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts index 75d8394e06..55097ff07f 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT extends SchaTransactionType { +export class OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts index 4130604c60..3af835f0dd 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class OTHER_RECEIPT extends SchaTransactionType { +export class OTHER_RECEIPT extends SchATransactionType { componentGroupId = 'C'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OTHER_RECEIPTS); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts index d8e9f998dd..0e8c09ee55 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts @@ -1,9 +1,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_EARMARK_MEMO'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PAC_EARMARK_MEMO extends SchaTransactionType { +export class PAC_EARMARK_MEMO extends SchATransactionType { componentGroupId = 'FG'; override isDependentChild = true; title = ''; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts index 4679240b24..fd7013421b 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts @@ -5,9 +5,9 @@ import { ContactTypes } from '../contact.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS_MINIMAL, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PAC_EARMARK_RECEIPT extends SchaTransactionType { +export class PAC_EARMARK_RECEIPT extends SchATransactionType { componentGroupId = 'FG'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_EARMARK_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts index ea71f4653e..5b7c155af6 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_JF_TRANSFE import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PAC_JF_TRANSFER_MEMO extends SchaTransactionType { +export class PAC_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 99eb0363ef..6bf760cae0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { +export class PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 4e6ab8eda1..49e4ff0f29 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransactionType { +export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index bef2b07ab6..562895a7d2 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index cdcb0eafe5..f2eaddcbc2 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransactionType { +export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index f1f6862cea..67f129c5e0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { +export class PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 0d9925d5ff..4eb288b43a 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransactionType { +export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts index a366e4ffaf..89046c3164 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_RECEIPT extends SchaTransactionType { +export class PAC_RECEIPT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts index 6fb0e8b6d8..acedffef19 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PAC_RECOUNT_RECEIPT extends SchaTransactionType { +export class PAC_RECOUNT_RECEIPT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts index de507ba10b..61cca76e83 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts @@ -1,4 +1,4 @@ -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { PAC_RETURN } from './PAC_RETURN.model'; @@ -21,6 +21,6 @@ describe('PAC_RETURN', () => { expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PAC_RETURN); }); it('#generatePurposeDescription() should not be defined', () => { - expect((transactionType as SchaTransactionType).generatePurposeDescription).toBe(undefined); + expect((transactionType as SchATransactionType).generatePurposeDescription).toBe(undefined); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts index 8e49416e77..7e9e673971 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts @@ -1,11 +1,11 @@ -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RETURN'; import { TransactionNavigationControls, STANDARD_CONTROLS } from '../transaction-navigation-controls.model'; -export class PAC_RETURN extends SchaTransactionType { +export class PAC_RETURN extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RETURN); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts index 0536d79d4f..e0911d7152 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ME import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PARTNERSHIP_MEMO extends SchaTransactionType { +export class PARTNERSHIP_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_MEMO); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 1c2ba786b7..595c68fcd1 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts index 16982156c8..de722b306c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index b1792cfb83..e6c39f4a7e 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -4,9 +4,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NA import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts index 775fc2e116..9c68bebc9a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NA import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts index 0f126175b3..d2a3217fa3 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RE import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PARTNERSHIP_RECEIPT extends SchaTransactionType { +export class PARTNERSHIP_RECEIPT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts index 0a28098f80..3bfc11aa69 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RE import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchaTransactionType { +export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts index 9b0047783e..353394fbda 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchaTransactionType { +export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 970677e9a3..02f7527669 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_JF_TRANS import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class PARTY_JF_TRANSFER_MEMO extends SchaTransactionType { +export class PARTY_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_JF_TRANSFER_MEMO); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index a6f755f171..19baabea80 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { +export class PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 22ac6fe737..c45be2e486 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index c3ccbd1e3f..ef52d4d793 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { +export class PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts index a9e0c4df03..e5103b5411 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PARTY_RECEIPT extends SchaTransactionType { +export class PARTY_RECEIPT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts index 34b178ee99..b1d86835cd 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PARTY_RECOUNT_RECEIPT extends SchaTransactionType { +export class PARTY_RECOUNT_RECEIPT extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RECOUNT_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts index 9a7c674d76..c1462d6676 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RETURN'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class PARTY_RETURN extends SchaTransactionType { +export class PARTY_RETURN extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RETURN); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts index a42a90ca51..8b88cf22c1 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts @@ -4,9 +4,9 @@ import { ContactTypes } from '../contact.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class RETURN_RECEIPT extends SchaTransactionType { +export class RETURN_RECEIPT extends SchATransactionType { componentGroupId = 'C'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.RETURNED_BOUNCED_RECEIPT_INDIVIDUAL); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts index b10b6a5c5f..4ea0adda32 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRANSFER'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class TRANSFER extends SchaTransactionType { +export class TRANSFER extends SchATransactionType { componentGroupId = 'F'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRANSFER); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts index bfdf4777eb..312db45784 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_JF_TRAN import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class TRIBAL_JF_TRANSFER_MEMO extends SchaTransactionType { +export class TRIBAL_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 073d573d08..ef1b017e8c 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { +export class TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 58782616a8..d2e38a3d5c 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchaTransactionType { +export class TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 9317b04f78..6d1016f16d 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchaTransactionType { +export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 7faceb1b57..6e32016e06 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchaTransactionType { +export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 3a52f1d205..cf5085446e 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchaTransactionType { +export class TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 90156876d3..a166f534f4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchaTransactionType { +export class TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts index 4c3626519f..25f749f041 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_RECEIPT extends SchaTransactionType { +export class TRIBAL_RECEIPT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts index acfa70dbb8..291ddc6ab2 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECOUNT_RECEIPT'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -export class TRIBAL_RECOUNT_RECEIPT extends SchaTransactionType { +export class TRIBAL_RECOUNT_RECEIPT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_RECOUNT_RECEIPT); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts index 520748f141..816a1546e3 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts @@ -3,9 +3,9 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_R import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class UNREGISTERED_RECEIPT_FROM_PERSON extends SchaTransactionType { +export class UNREGISTERED_RECEIPT_FROM_PERSON extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.UNREGISTERED_RECEIPT_FROM_PERSON); schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts index d60716acff..1ef42b84ed 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts @@ -3,9 +3,9 @@ import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from '../scha-transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; -export class UNREGISTERED_RECEIPT_FROM_PERSON_RETURN extends SchaTransactionType { +export class UNREGISTERED_RECEIPT_FROM_PERSON_RETURN extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 421d0f65e4..906617d6c0 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -1,8 +1,8 @@ import { BaseModel } from './base.model'; import { Contact } from './contact.model'; import { MemoText } from './memo-text.model'; -import { SchATransaction, ScheduleATransactionTypes } from './scha-transaction.model'; -import { SchBTransaction, ScheduleBTransactionTypes } from './schb-transaction.model'; +import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionGroupsType } from './scha-transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionGroupsType } from './schb-transaction.model'; import { ValidateService } from '../services/validate.service'; import { TransactionType } from './transaction-type.model'; import { Type } from 'class-transformer'; @@ -137,7 +137,8 @@ export function hasNoContact(transaction?: Transaction): boolean { } export type ScheduleTransaction = SchATransaction | SchBTransaction; -export type ScheduleTransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; +export type TransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; +export type TransactionGroupTypes = ScheduleATransactionGroupsType | ScheduleBTransactionGroupsType; export enum AggregationGroups { GENERAL = 'GENERAL', diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index bc1b6eb334..76badbe0b5 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -11,7 +11,7 @@ import { CommitteeAccount } from '../models/committee-account.model'; import { F3xSummary } from '../models/f3x-summary.model'; import { UploadSubmission } from '../models/upload-submission.model'; import { CashOnHand } from '../interfaces/report.interface'; -import { Transaction, AggregationGroups, ScheduleTransactionTypes } from '../models/transaction.model'; +import { Transaction, AggregationGroups, TransactionTypes } from '../models/transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../models/schb-transaction.model'; import { Contact, ContactTypes } from '../models/contact.model'; import { SchATransaction, ScheduleATransactionTypes } from '../models/scha-transaction.model'; @@ -198,8 +198,8 @@ export const testScheduleBTransaction = SchBTransaction.fromJSON({ }); export function getTestTransactionByType( - transactionType: ScheduleTransactionTypes, - parentTransactionType?: ScheduleTransactionTypes + transactionType: TransactionTypes, + parentTransactionType?: TransactionTypes ): Transaction { const transaction = TransactionTypeUtils.factory(transactionType).getNewTransaction(); if (parentTransactionType) { diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index 616ee47d6f..a172ae7184 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -5,6 +5,7 @@ import { Subject, takeUntil } from 'rxjs'; import { Store } from '@ngrx/store'; import { selectActiveReport } from 'app/store/active-report.selectors'; import { Report } from 'app/shared/interfaces/report.interface'; +import { TransactionTypes, TransactionGroupTypes } from 'app/shared/models/transaction.model'; import { ScheduleATransactionGroups, ScheduleATransactionGroupsType, @@ -21,8 +22,6 @@ import { LabelList } from 'app/shared/utils/label.utils'; import { getTransactionTypeClass } from 'app/shared/utils/transaction-type.utils'; type Categories = 'receipt' | 'disbursement'; -type GroupsTypes = ScheduleATransactionGroupsType | ScheduleBTransactionGroupsType; -type TransactionTypes = ScheduleATransactionTypes | ScheduleBTransactionTypes; @Component({ selector: 'app-transaction-type-picker', @@ -55,7 +54,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { this.destroy$.complete(); } - getTransactionGroups(): GroupsTypes[] { + getTransactionGroups(): TransactionGroupTypes[] { if (this.category == 'disbursement') { return [ ScheduleBTransactionGroups.OPERATING_EXPENDITURES, @@ -74,7 +73,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ]; } - getTransactionTypes(group: GroupsTypes): TransactionTypes[] { + getTransactionTypes(group: TransactionGroupTypes): TransactionTypes[] { switch (group) { case ScheduleATransactionGroups.CONTRIBUTIONS_FROM_INDIVIDUALS_PERSONS: return [ From ab9bd5beee8f1c1e0a041e47714fabbf472af5c5 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 08:16:59 -0500 Subject: [PATCH 064/115] Refactored getPrimeOptions() call to use values parameter in group templates --- .../contacts/contact-list/contact-list.component.ts | 7 ++++--- .../transaction-group-a.component.ts | 4 +--- .../transaction-group-ag.component.ts | 11 +++++------ .../transaction-group-b.component.ts | 8 +++++--- .../transaction-group-c.component.ts | 8 +++++--- .../transaction-group-d.component.ts | 6 +++--- .../transaction-group-e.component.ts | 4 +--- .../transaction-group-f.component.ts | 4 +--- .../transaction-group-fg.component.ts | 11 +++++------ .../transaction-group-h.component.ts | 8 +++++--- 10 files changed, 35 insertions(+), 36 deletions(-) diff --git a/front-end/src/app/contacts/contact-list/contact-list.component.ts b/front-end/src/app/contacts/contact-list/contact-list.component.ts index 0d8fbdfbef..e33f8d2ee8 100644 --- a/front-end/src/app/contacts/contact-list/contact-list.component.ts +++ b/front-end/src/app/contacts/contact-list/contact-list.component.ts @@ -18,9 +18,10 @@ export class ContactListComponent extends TableListBaseComponent { searchTerm = ''; // contact lookup - contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL].includes(option.code as ContactTypes) - ); + contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.COMMITTEE, + ContactTypes.INDIVIDUAL, + ]); constructor( protected override messageService: MessageService, diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.ts b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.ts index 587d7b9daf..5748d03abd 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.ts +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.ts @@ -29,7 +29,5 @@ export class TransactionGroupAComponent extends TransactionTypeBaseComponent imp 'memo_code', 'memo_text_input', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); } diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.ts b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.ts index a09e2e25c7..0b0cb715fc 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.ts +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.ts @@ -53,10 +53,9 @@ export class TransactionGroupAgComponent extends DoubleTransactionTypeBaseCompon 'memo_code', 'memo_text_input', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL].includes(option.code as ContactTypes) - ); - override childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); + override childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.INDIVIDUAL, + ContactTypes.COMMITTEE, + ]); } diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts index c2a581801a..874a06bf73 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts @@ -28,7 +28,9 @@ export class TransactionGroupBComponent extends TransactionTypeBaseComponent imp 'memo_code', 'memo_text_input', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.INDIVIDUAL, + ContactTypes.ORGANIZATION, + ContactTypes.COMMITTEE, + ]); } diff --git a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.ts b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.ts index 02bb49f671..460457c326 100644 --- a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.ts +++ b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.ts @@ -30,7 +30,9 @@ export class TransactionGroupCComponent extends TransactionTypeBaseComponent imp 'memo_code', 'memo_text_input', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.INDIVIDUAL, + ContactTypes.ORGANIZATION, + ContactTypes.COMMITTEE, + ]); } diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts index dfcd3a135e..cf0eb9a100 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.ts @@ -28,9 +28,9 @@ export class TransactionGroupDComponent extends TransactionTypeBaseComponent imp ]; subTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.ORGANIZATION].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.ORGANIZATION, + ]); override ngOnInit(): void { super.ngOnInit(); diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts index 723898dab0..a341e94f7b 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.ts @@ -29,9 +29,7 @@ export class TransactionGroupEComponent extends TransactionTypeBaseComponent imp ]; subTransactionOptions: { [key: string]: string | ScheduleATransactionTypes }[] = []; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); override ngOnInit(): void { super.ngOnInit(); diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts index ab940f9371..84f2bcecb7 100644 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts +++ b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts @@ -24,7 +24,5 @@ export class TransactionGroupFComponent extends TransactionTypeBaseComponent imp 'memo_code', 'memo_text_input', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); } diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.ts b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.ts index 342e76ef3e..da81af105b 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.ts +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.ts @@ -48,10 +48,9 @@ export class TransactionGroupFgComponent extends DoubleTransactionTypeBaseCompon 'memo_code', 'memo_text_input', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); - override childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); + override childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.INDIVIDUAL, + ContactTypes.COMMITTEE, + ]); } diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts index 4ffde89f40..4ff7e4c223 100644 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts +++ b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts @@ -29,7 +29,9 @@ export class TransactionGroupHComponent extends TransactionTypeBaseComponent imp 'memo_text_input', 'category_code', ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels).filter((option) => - [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION, ContactTypes.COMMITTEE].includes(option.code as ContactTypes) - ); + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ + ContactTypes.INDIVIDUAL, + ContactTypes.ORGANIZATION, + ContactTypes.COMMITTEE, + ]); } From 3a7281801f46de203ba70079a67b3f4c19c9f655 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 09:12:54 -0500 Subject: [PATCH 065/115] Removed errant transaction type config settings --- .../shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts | 1 - .../PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 4 ---- .../PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts | 1 - 3 files changed, 6 deletions(-) diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts index e0911d7152..f196c3e9fc 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts @@ -10,7 +10,6 @@ export class PARTNERSHIP_MEMO extends SchATransactionType { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_MEMO); schema = schema; override updateParentOnSave = true; - override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_MEMO]; override navigationControls: TransactionNavigationControls = getChildNavigationControls( LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECEIPT) ); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index e6c39f4a7e..602e22fc74 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,5 +1,4 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; @@ -14,9 +13,6 @@ export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionT ); schema = schema; override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO]; - override dependentChildTransactionType = TransactionTypeUtils.factory( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO - ); override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionLabelNotice = 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts index 353394fbda..72a34d9155 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts @@ -13,7 +13,6 @@ export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchATransactionTyp ); schema = schema; override updateParentOnSave = true; - override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO]; override navigationControls: TransactionNavigationControls = getChildNavigationControls( LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO) ); From 93fcd39d1a78acdce12626d0dce0501c39520ea2 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 16 Feb 2023 11:20:19 -0500 Subject: [PATCH 066/115] 108 add tests --- .../contact-form.component.spec.ts | 72 +++++++++++++++++-- 1 file changed, 68 insertions(+), 4 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index 1e95dc1dad..7f8aae5a64 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -1,11 +1,14 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; -import { CandidateOfficeTypes, ContactTypes } from 'app/shared/models/contact.model'; +import { CommitteeAccount } from 'app/shared/models/committee-account.model'; +import { CandidateOfficeTypes, Contact, ContactTypes, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; +import { FecApiService } from 'app/shared/services/fec-api.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { DropdownModule } from 'primeng/dropdown'; +import { of } from 'rxjs'; import { ErrorMessagesComponent } from '../error-messages/error-messages.component'; import { FecInternationalPhoneInputComponent } from '../fec-international-phone-input/fec-international-phone-input.component'; import { ContactFormComponent } from './contact-form.component'; @@ -13,15 +16,23 @@ import { ContactFormComponent } from './contact-form.component'; describe('ContactFormComponent', () => { let component: ContactFormComponent; let fixture: ComponentFixture; + let httpTestingController: HttpTestingController; + let testFecApiService: FecApiService; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, FormsModule, - ReactiveFormsModule, DropdownModule], + imports: [ + HttpClientTestingModule, + FormsModule, + ReactiveFormsModule, + DropdownModule, + ], declarations: [ContactFormComponent, ErrorMessagesComponent, FecInternationalPhoneInputComponent], providers: [FormBuilder, provideMockStore(testMockStore)], }).compileComponents(); + httpTestingController = TestBed.inject(HttpTestingController); + testFecApiService = TestBed.inject(FecApiService); }); beforeEach(() => { @@ -90,4 +101,57 @@ describe('ContactFormComponent', () => { expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Candidate.json'); }); + it('#onContactLookupSelect CANDIDATE Contact happy path', () => { + const testContact = new Contact(); + const testLastName = "testLastName"; + const testZip = "12345"; + testContact.type = ContactTypes.CANDIDATE; + testContact.last_name = testLastName; + testContact.zip = testZip; + + component.onContactLookupSelect({ value: testContact }); + + expect(component.form.get('last_name')?.value).toBe(testLastName); + expect(component.form.get('zip')?.value).toBe(testZip + ); + }); + + it('#onContactLookupSelect COMMITTEE Contact happy path', () => { + const testContact = new Contact(); + const testCommitteeId = "C1234568"; + const testZip = "12345"; + testContact.type = ContactTypes.COMMITTEE; + testContact.committee_id = testCommitteeId; + testContact.zip = testZip; + + component.onContactLookupSelect({ value: testContact }); + + expect(component.form.get('committee_id')?.value).toBe(testCommitteeId); + expect(component.form.get('zip')?.value).toBe(testZip + ); + }); + + it('#onContactLookupSelect FecApiCommitteeLookupData happy path', () => { + const testId = 'C12345678' + const testIsActive = true; + const testName = 'testName'; + const testPhone = '1234567890'; + const testFecApiCommitteeLookupData = new FecApiCommitteeLookupData({ + id: testId, + is_active: testIsActive, + name: testName + } as FecApiCommitteeLookupData); + const testResponse = new CommitteeAccount(); + testResponse.committee_id = testId; + testResponse.treasurer_phone = testPhone; + + spyOn(testFecApiService, 'getDetails').and.returnValue(of(testResponse)); + + component.onContactLookupSelect({ value: testFecApiCommitteeLookupData }); + + expect(component.form.get('type')?.value).toBe(ContactTypes.COMMITTEE); + expect(component.form.get('committee_id')?.value).toBe(testId); + expect(component.form.get('telephone')?.value).toBe('+1 ' + testPhone); + }); + }); From fa9e581d503315905b25dc356456fc1920b91b55 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 16 Feb 2023 11:27:44 -0500 Subject: [PATCH 067/115] add coverage --- .../contact-form/contact-form.component.spec.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index 7f8aae5a64..1e315f76ea 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -1,6 +1,6 @@ import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; @@ -112,8 +112,10 @@ describe('ContactFormComponent', () => { component.onContactLookupSelect({ value: testContact }); expect(component.form.get('last_name')?.value).toBe(testLastName); - expect(component.form.get('zip')?.value).toBe(testZip - ); + expect(component.form.get('zip')?.value).toBe(testZip); + + component.form = new FormGroup({}); + component.onContactLookupSelect({ value: testContact }); }); it('#onContactLookupSelect COMMITTEE Contact happy path', () => { @@ -127,8 +129,10 @@ describe('ContactFormComponent', () => { component.onContactLookupSelect({ value: testContact }); expect(component.form.get('committee_id')?.value).toBe(testCommitteeId); - expect(component.form.get('zip')?.value).toBe(testZip - ); + expect(component.form.get('zip')?.value).toBe(testZip); + + component.form = new FormGroup({}); + component.onContactLookupSelect({ value: testContact }); }); it('#onContactLookupSelect FecApiCommitteeLookupData happy path', () => { @@ -152,6 +156,9 @@ describe('ContactFormComponent', () => { expect(component.form.get('type')?.value).toBe(ContactTypes.COMMITTEE); expect(component.form.get('committee_id')?.value).toBe(testId); expect(component.form.get('telephone')?.value).toBe('+1 ' + testPhone); + + component.form = new FormGroup({}); + component.onContactLookupSelect({ value: testFecApiCommitteeLookupData }); }); }); From b09bcda8bc90f7982f87b6116b5306dc24f6c49a Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 12:29:44 -0500 Subject: [PATCH 068/115] Migrated group H to group B template --- .../OPERATING_EXPENDITURE.model.ts | 2 +- .../transaction-container.component.html | 3 - .../transaction-group-b.component.ts | 29 +++++++++ .../transaction-group-e.component.html | 2 +- .../transaction-group-h.component.html | 65 ------------------- .../transaction-group-h.component.spec.ts | 62 ------------------ .../transaction-group-h.component.ts | 37 ----------- .../app/transactions/transactions.module.ts | 2 - 8 files changed, 31 insertions(+), 171 deletions(-) delete mode 100644 front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.html delete mode 100644 front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts delete mode 100644 front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index 846ab5ab47..b33820c905 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -7,7 +7,7 @@ import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction import { ContactTypes } from '../contact.model'; export class OPERATING_EXPENDITURE extends SchBTransactionType { - componentGroupId = 'H'; + componentGroupId = 'B'; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE); schema = schema; override defaultContactTypeOption = ContactTypes.ORGANIZATION; diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/transactions/transaction-container/transaction-container.component.html index 1758de1391..54559d75f3 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.html @@ -22,6 +22,3 @@ - - - diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts index 874a06bf73..85a7edb250 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.ts @@ -8,6 +8,7 @@ import { ContactTypeLabels, ContactTypes } from '../../shared/models/contact.mod templateUrl: './transaction-group-b.component.html', }) export class TransactionGroupBComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { + // Default to Schedule A properties formProperties: string[] = [ 'entity_type', 'contributor_organization_name', @@ -28,6 +29,34 @@ export class TransactionGroupBComponent extends TransactionTypeBaseComponent imp 'memo_code', 'memo_text_input', ]; + + override ngOnInit(): void { + if (this.transaction?.transactionType?.scheduleId === 'B') { + this.formProperties = [ + 'entity_type', + 'payee_organization_name', + 'payee_last_name', + 'payee_first_name', + 'payee_middle_name', + 'payee_prefix', + 'payee_suffix', + 'payee_street_1', + 'payee_street_2', + 'payee_city', + 'payee_state', + 'payee_zip', + 'expenditure_date', + 'expenditure_amount', + 'aggregate_amount', + 'expenditure_purpose_descrip', + 'memo_code', + 'memo_text_input', + 'category_code', + ]; + } + super.ngOnInit(); + } + override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION, diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html index 7da1145bdd..293015444f 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html @@ -48,7 +48,7 @@

Additional Information

[descriptionIsSystemGenerated]="isDescriptionSystemGenerated(transaction?.transactionType)" [purposeDescriptionLabel]="this.purposeDescriptionLabel" > -
+
- -
-

{{ transaction?.transactionType?.title }}

-

Contact

-
-
-
-
- - - -
-
-
- - - - - - - - -

Address

- - -

Expenditure Information

- - -

Additional Information

- -
- - -
-
- - diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts deleted file mode 100644 index 7500dbb89c..0000000000 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; -import { provideMockStore } from '@ngrx/store/testing'; -import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { ConfirmationService, MessageService } from 'primeng/api'; -import { ButtonModule } from 'primeng/button'; -import { CalendarModule } from 'primeng/calendar'; -import { CheckboxModule } from 'primeng/checkbox'; -import { ConfirmDialogModule } from 'primeng/confirmdialog'; -import { DividerModule } from 'primeng/divider'; -import { DropdownModule } from 'primeng/dropdown'; -import { InputNumberModule } from 'primeng/inputnumber'; -import { InputTextModule } from 'primeng/inputtext'; -import { InputTextareaModule } from 'primeng/inputtextarea'; -import { ToastModule } from 'primeng/toast'; -import { SharedModule } from '../../shared/shared.module'; -import { TransactionGroupHComponent } from './transaction-group-h.component'; -import { testScheduleBTransaction } from '../../shared/utils/unit-test.utils'; - -describe('TransactionGroupHComponent', () => { - let component: TransactionGroupHComponent; - let fixture: ComponentFixture; - const transaction = testScheduleBTransaction; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - HttpClientTestingModule, - RouterTestingModule, - FormsModule, - ReactiveFormsModule, - ToastModule, - SharedModule, - DividerModule, - DropdownModule, - CalendarModule, - ButtonModule, - CheckboxModule, - InputNumberModule, - InputTextModule, - InputTextareaModule, - ConfirmDialogModule, - ], - declarations: [TransactionGroupHComponent], - providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(TransactionGroupHComponent); - component = fixture.componentInstance; - component.transaction = transaction; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts b/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts deleted file mode 100644 index 4ff7e4c223..0000000000 --- a/front-end/src/app/transactions/transaction-group-h/transaction-group-h.component.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; -import { TransactionTypeBaseComponent } from 'app/shared/components/transaction-type-base/transaction-type-base.component'; -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../../shared/models/contact.model'; - -@Component({ - selector: 'app-transaction-group-h', - templateUrl: './transaction-group-h.component.html', -}) -export class TransactionGroupHComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { - formProperties: string[] = [ - 'entity_type', - 'payee_organization_name', - 'payee_last_name', - 'payee_first_name', - 'payee_middle_name', - 'payee_prefix', - 'payee_suffix', - 'payee_street_1', - 'payee_street_2', - 'payee_city', - 'payee_state', - 'payee_zip', - 'expenditure_date', - 'expenditure_amount', - 'aggregate_amount', - 'expenditure_purpose_descrip', - 'memo_code', - 'memo_text_input', - 'category_code', - ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.INDIVIDUAL, - ContactTypes.ORGANIZATION, - ContactTypes.COMMITTEE, - ]); -} diff --git a/front-end/src/app/transactions/transactions.module.ts b/front-end/src/app/transactions/transactions.module.ts index 27cbcdd3d6..0311114601 100644 --- a/front-end/src/app/transactions/transactions.module.ts +++ b/front-end/src/app/transactions/transactions.module.ts @@ -25,7 +25,6 @@ import { TransactionGroupCComponent } from './transaction-group-c/transaction-gr import { TransactionGroupDComponent } from './transaction-group-d/transaction-group-d.component'; import { TransactionGroupEComponent } from './transaction-group-e/transaction-group-e.component'; import { TransactionGroupFComponent } from './transaction-group-f/transaction-group-f.component'; -import { TransactionGroupHComponent } from './transaction-group-h/transaction-group-h.component'; import { TransactionGroupAgComponent } from './transaction-group-ag/transaction-group-ag.component'; import { TransactionGroupFgComponent } from './transaction-group-fg/transaction-group-fg.component'; import { MemoCodePipe, TransactionListComponent } from './transaction-list/transaction-list.component'; @@ -44,7 +43,6 @@ import { TransactionsRoutingModule } from './transactions-routing.module'; TransactionGroupDComponent, TransactionGroupEComponent, TransactionGroupFComponent, - TransactionGroupHComponent, TransactionGroupAgComponent, TransactionGroupFgComponent, ], From 2f71404688ab7f2e00fbb695e3fb13c97901a1b3 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 12:32:02 -0500 Subject: [PATCH 069/115] Fixed operating_expense unit test --- .../transaction-types/OPERATING_EXPENDITURE.model.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts index 667926be42..bc92893525 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts @@ -12,7 +12,7 @@ describe('OPERATING_EXPENDITURE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.componentGroupId).toBe('H'); + expect(transactionType.componentGroupId).toBe('B'); }); it('#factory() should return a SchBTransaction', () => { From 2ebc697105dab900219f48ec9e24c36af2c5d907 Mon Sep 17 00:00:00 2001 From: toddlees Date: Thu, 16 Feb 2023 13:00:19 -0500 Subject: [PATCH 070/115] get transaction type identifier to match --- .../src/app/shared/models/scha-transaction.model.ts | 8 ++++---- ...P_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts} | 8 ++++---- ...ERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts} | 11 ++++------- ...IONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts} | 10 +++++----- ...P_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts} | 11 +++++------ .../src/app/shared/utils/transaction-type.utils.ts | 8 ++++---- .../transaction-type-picker.component.ts | 2 +- 7 files changed, 27 insertions(+), 31 deletions(-) rename front-end/src/app/shared/models/transaction-types/{PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts => PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts} (74%) rename front-end/src/app/shared/models/transaction-types/{PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts => PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts} (76%) rename front-end/src/app/shared/models/transaction-types/{PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts => PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts} (59%) rename front-end/src/app/shared/models/transaction-types/{PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts => PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts} (68%) diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index cceca23674..12def39b59 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -152,7 +152,7 @@ export enum ScheduleATransactionTypes { EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_CONVENTION_ACCOUNT', EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION = 'EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', - PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT', + PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT', PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT = 'PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', // Child transactiion types @@ -174,7 +174,7 @@ export enum ScheduleATransactionTypes { TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', - PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', + PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO', PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', PARTNERSHIP_MEMO = 'PARTNERSHIP_MEMO', PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO = 'PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO', @@ -358,7 +358,7 @@ export const ScheduleATransactionTypeLabels: LabelList = [ 'Partnership National Party Headquarters Buildings Account', ], [ - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT, 'Partnership National Party Pres. Nominating Convention Account', ], [ @@ -394,7 +394,7 @@ export const ScheduleATransactionTypeLabels: LabelList = [ 'Partnership National Party Recount/Legal Proceedings Account Memo', ], [ - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, 'Partnership National Party Pres. Nominating Convention Account Memo', ], [ diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts similarity index 74% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index 33eb9fd62e..2fc8bcb252 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,11 +1,11 @@ import { ScheduleATransactionTypes } from '../scha-transaction.model'; -import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { - let transactionType: PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT; + let transactionType: PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT; beforeEach(() => { - transactionType = new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT(); + transactionType = new PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT(); }); it('should create an instance', () => { @@ -20,7 +20,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { const txn = transactionType.getNewTransaction(); expect(txn.form_type).toBe('SA17'); expect(txn.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts similarity index 76% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 4bb2e18936..6728d6318c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -5,16 +5,14 @@ import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction import { SchaTransactionType } from './SchaTransactionType.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT ); schema = schema; - override subTransactionTypes = [ - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, - ]; + override subTransactionTypes = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionLabelNotice = @@ -30,8 +28,7 @@ export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT exten getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT, aggregation_group: AggregationGroups.NATIONAL_PARTY_CONVENTION_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts similarity index 59% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts index 8ed67cf2ca..a992917d9a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts @@ -1,11 +1,11 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model'; -describe('PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', () => { - let transactionType: PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO; +describe('PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO', () => { + let transactionType: PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO; beforeEach(() => { - transactionType = new PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO(); + transactionType = new PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO(); }); it('should create an instance', () => { @@ -18,7 +18,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO', ( const txn: SchATransaction = transactionType.getNewTransaction(); expect(txn.form_type).toBe('SA17'); expect(txn.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts similarity index 68% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts index 6050ad6f86..a08064cea1 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts @@ -5,18 +5,18 @@ import { getChildNavigationControls, TransactionNavigationControls } from '../tr import { SchaTransactionType } from './SchaTransactionType.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO extends SchaTransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO ); schema = schema; override updateParentOnSave = true; override navigationControls: TransactionNavigationControls = getChildNavigationControls( LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT ) ); @@ -27,10 +27,9 @@ export class PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, back_reference_sched_name: 'SA17', - aggregation_group: AggregationGroups.NATIONAL_PARTY_RECOUNT_ACCOUNT, + aggregation_group: AggregationGroups.NATIONAL_PARTY_CONVENTION_ACCOUNT, }); } } diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 162ad6e9a6..8866f7ab1e 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -38,8 +38,8 @@ import { PARTNERSHIP_MEMO } from '../models/transaction-types/PARTNERSHIP_MEMO.m import { PARTNERSHIP_RECEIPT } from '../models/transaction-types/PARTNERSHIP_RECEIPT.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model'; -import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT.model'; -import { PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; +import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model'; import { PARTY_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTY_JF_TRANSFER_MEMO.model'; import { PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; import { PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; @@ -126,8 +126,8 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, - PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, - PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT_MEMO, + PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT, + PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT, diff --git a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts index 8ab41c86f2..5f638b549d 100644 --- a/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -145,7 +145,7 @@ export class TransactionTypePickerComponent implements OnInit, OnDestroy { ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_PRES_NOMINATING_CONVENTION_ACCOUNT, + ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, ]; case ScheduleBTransactionGroups.OPERATING_EXPENDITURES: From fd13a7db8f657469d6a3f5a46a92a249aafc5dc6 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 13:21:13 -0500 Subject: [PATCH 071/115] Migrated group F transaction types to group E --- ...TEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts | 2 +- ...OMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts | 2 +- .../PAC_JF_TRANSFER_MEMO.model.spec.ts | 2 +- .../PAC_JF_TRANSFER_MEMO.model.ts | 2 +- ...NAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts | 2 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- ..._CONVENTION_JF_TRANSFER_MEMO.model.spec.ts | 2 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- ...L_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts | 2 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- ...EADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts | 2 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- ...TIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts | 2 +- ...AC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- ...RTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts | 2 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../PAC_RECEIPT.model.spec.ts | 2 +- .../transaction-types/PAC_RECEIPT.model.ts | 2 +- .../PAC_RECOUNT_RECEIPT.model.spec.ts | 2 +- .../PAC_RECOUNT_RECEIPT.model.ts | 2 +- .../PAC_RETURN.model.spec.ts | 2 +- .../transaction-types/PAC_RETURN.model.ts | 2 +- .../PARTY_JF_TRANSFER_MEMO.model.spec.ts | 2 +- .../PARTY_JF_TRANSFER_MEMO.model.ts | 2 +- ...NAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts | 2 +- ...NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 2 +- ...L_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts | 2 +- ...TIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts | 2 +- ...TIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts | 2 +- ...TY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts | 2 +- .../PARTY_RECEIPT.model.spec.ts | 2 +- .../transaction-types/PARTY_RECEIPT.model.ts | 2 +- .../PARTY_RECOUNT_RECEIPT.model.spec.ts | 2 +- .../PARTY_RECOUNT_RECEIPT.model.ts | 2 +- .../PARTY_RETURN.model.spec.ts | 2 +- .../transaction-types/PARTY_RETURN.model.ts | 2 +- .../transaction-types/TRANSFER.model.spec.ts | 2 +- .../transaction-types/TRANSFER.model.ts | 2 +- .../transaction-container.component.html | 3 - .../transaction-group-f.component.html | 72 ----------- .../transaction-group-f.component.spec.ts | 115 ------------------ .../transaction-group-f.component.ts | 28 ----- .../app/transactions/transactions.module.ts | 2 - 43 files changed, 38 insertions(+), 258 deletions(-) delete mode 100644 front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html delete mode 100644 front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts delete mode 100644 front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index dccb92d1ad..f2a701efca 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts index 55097ff07f..5fe5dccd42 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OTHER_COMMITTEE_RECEIPT_NON_CONTRIBUTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts index ccc4cb41e0..8e3d679a82 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts @@ -15,7 +15,7 @@ describe('PAC_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.componentGroupId).toBe('F'); + expect(transaction.transactionType?.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts index 5b7c155af6..1b7c0a91ce 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts @@ -6,7 +6,7 @@ import { TransactionNavigationControls, getChildNavigationControls } from '../tr import { SchATransactionType } from '../scha-transaction-type.model'; export class PAC_JF_TRANSFER_MEMO extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO); schema = schema; override navigationControls: TransactionNavigationControls = getChildNavigationControls( diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index 5ad5eb31d6..b564af39c7 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 6bf760cae0..2aef58c586 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 4589eafb15..3aa93318c9 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -14,7 +14,7 @@ describe('PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.componentGroupId).toBe('F'); + expect(transaction.transactionType?.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 49e4ff0f29..22a1f71185 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index 6fa6dc0f74..e095f82fe7 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('PAC_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 562895a7d2..0b0d121b32 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index 520b43b1f0..18c227a1fc 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -15,7 +15,7 @@ describe('PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.componentGroupId).toBe('F'); + expect(transaction.transactionType?.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index f2eaddcbc2..75caa9b165 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index d6a0f75cd8..d9846431ff 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 67f129c5e0..0327ade975 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 459d616f75..0195ad4db6 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -11,7 +11,7 @@ describe('PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 4eb288b43a..162832abc8 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts index 5fc6596f19..3d1e8771d8 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts @@ -12,7 +12,7 @@ describe('PAC_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts index 89046c3164..8f6b4538cc 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_RECEIPT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts index cf765db0d4..d2f5c10cf0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts @@ -11,7 +11,7 @@ describe('PAC_RECOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts index acedffef19..bbde47e9f1 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PAC_RECOUNT_RECEIPT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts index 61cca76e83..f2d92cef95 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts @@ -12,7 +12,7 @@ describe('PAC_RETURN', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts index 7e9e673971..d08b5b3171 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts @@ -6,7 +6,7 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RETURN'; import { TransactionNavigationControls, STANDARD_CONTROLS } from '../transaction-navigation-controls.model'; export class PAC_RETURN extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RETURN); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts index 6ed660937c..f9227cbb27 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts @@ -17,7 +17,7 @@ describe('PARTY_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.componentGroupId).toBe('F'); + expect(transaction.transactionType?.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 02f7527669..1a0be4fd49 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -6,7 +6,7 @@ import { TransactionNavigationControls, getChildNavigationControls } from '../tr import { SchATransactionType } from '../scha-transaction-type.model'; export class PARTY_JF_TRANSFER_MEMO extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_JF_TRANSFER_MEMO); schema = schema; override navigationControls: TransactionNavigationControls = getChildNavigationControls( diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index 28dd77415b..3e9e7720c9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('PARTY_NATIONAL_PARTY_CONVENTION_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 19baabea80..d96f4191ed 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index d913621883..c7ffacb451 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('PARTY_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index c45be2e486..fdba7e8dce 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 919a996ef9..ce59e3ec78 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -11,7 +11,7 @@ describe('PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index ef52d4d793..ed55b5d33b 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts index 482d75eaeb..3c64bd20d6 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts @@ -12,7 +12,7 @@ describe('PARTY_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts index e5103b5411..6382551dba 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_RECEIPT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts index 854aa00641..baa82b837c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts @@ -11,7 +11,7 @@ describe('PARTY_RECOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts index b1d86835cd..3af4a68c50 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_RECOUNT_RECEIPT extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RECOUNT_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts index 25f24970bb..bcd4220a70 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts @@ -12,7 +12,7 @@ describe('PARTY_RETURN', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts index c1462d6676..84a0b6d7cb 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTY_RETURN extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RETURN); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts index 4b7fa3f376..4e4202cae1 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts @@ -12,7 +12,7 @@ describe('TRANSFER', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.componentGroupId).toBe('F'); + expect(transactionType.componentGroupId).toBe('E'); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts index 4ea0adda32..88a8ab0a5c 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts @@ -6,7 +6,7 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class TRANSFER extends SchATransactionType { - componentGroupId = 'F'; + componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRANSFER); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/transactions/transaction-container/transaction-container.component.html index 54559d75f3..6ff3d6a7b6 100644 --- a/front-end/src/app/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/transactions/transaction-container/transaction-container.component.html @@ -13,9 +13,6 @@ - - - diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html deleted file mode 100644 index 7b4e75c212..0000000000 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.html +++ /dev/null @@ -1,72 +0,0 @@ - - -
-

{{ transaction?.transactionType?.title }}

-

Contact

-
-
-
-
- - - -
-
-
- - - -

Address

- - -

Receipt Information

- - -

Additional Information

- -
- -
- -
-
-
-
- - -
-
- - diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts deleted file mode 100644 index 5b0897cd84..0000000000 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.spec.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; -import { provideMockStore } from '@ngrx/store/testing'; -import { - NavigationAction, - NavigationDestination, - NavigationEvent, -} from 'app/shared/models/transaction-navigation-controls.model'; -import { Contact } from 'app/shared/models/contact.model'; -import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; -import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { testMockStore, testScheduleATransaction } from 'app/shared/utils/unit-test.utils'; -import { Confirmation, ConfirmationService, MessageService } from 'primeng/api'; -import { ButtonModule } from 'primeng/button'; -import { CalendarModule } from 'primeng/calendar'; -import { CheckboxModule } from 'primeng/checkbox'; -import { ConfirmDialogModule } from 'primeng/confirmdialog'; -import { DividerModule } from 'primeng/divider'; -import { DropdownModule } from 'primeng/dropdown'; -import { InputNumberModule } from 'primeng/inputnumber'; -import { InputTextModule } from 'primeng/inputtext'; -import { InputTextareaModule } from 'primeng/inputtextarea'; -import { ToastModule } from 'primeng/toast'; -import { environment } from '../../../environments/environment'; -import { SharedModule } from '../../shared/shared.module'; -import { TransactionGroupFComponent } from './transaction-group-f.component'; -import { ContactService } from 'app/shared/services/contact.service'; -import { of } from 'rxjs'; -import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; - -describe('TransactionGroupFComponent', () => { - let httpTestingController: HttpTestingController; - let component: TransactionGroupFComponent; - let fixture: ComponentFixture; - let testConfirmationService: ConfirmationService; - let testContactService: ContactService; - - const transaction = testScheduleATransaction; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - HttpClientTestingModule, - RouterTestingModule, - FormsModule, - ReactiveFormsModule, - ToastModule, - SharedModule, - DividerModule, - DropdownModule, - CalendarModule, - ButtonModule, - CheckboxModule, - InputNumberModule, - InputTextModule, - InputTextareaModule, - ConfirmDialogModule, - ], - declarations: [TransactionGroupFComponent], - providers: [MessageService, ConfirmationService, FormBuilder, provideMockStore(testMockStore), FecDatePipe], - }).compileComponents(); - testContactService = TestBed.inject(ContactService); - testConfirmationService = TestBed.inject(ConfirmationService); - }); - - beforeEach(() => { - httpTestingController = TestBed.inject(HttpTestingController); - fixture = TestBed.createComponent(TransactionGroupFComponent); - component = fixture.componentInstance; - component.transaction = TransactionTypeUtils.factory(ScheduleATransactionTypes.TRANSFER).getNewTransaction(); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - it('#save() should save a new com record', () => { - const testContact: Contact = new Contact(); - testContact.id = 'testId'; - spyOn(testContactService, 'create').and.returnValue(of(testContact)); - spyOn(testConfirmationService, 'confirm').and.callFake((confirmation: Confirmation) => { - if (confirmation.accept) { - return confirmation.accept(); - } - }); - - const testTran = SchATransaction.fromJSON({ - ...transaction, - }); - component.form.patchValue({ ...testTran }); - if (component.transaction) { - component.transaction = testTran; - component.transaction.id = undefined; - component.transaction.contact = testContact; - } - fixture.detectChanges(); - component.handleNavigate(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, testTran)); - expect(component.form.invalid).toBe(false); - const req = httpTestingController.expectOne(`${environment.apiUrl}/transactions/schedule-a/`); - expect(req.request.method).toEqual('POST'); - httpTestingController.verify(); - }); - - it('#save() should not save an invalid record', () => { - component.form.patchValue({ ...transaction, ...{ contributor_state: 'not-valid' } }); - component.save(new NavigationEvent(NavigationAction.SAVE, NavigationDestination.LIST, transaction)); - expect(component.form.invalid).toBe(true); - httpTestingController.expectNone( - `${environment.apiUrl}/transactions/schedule-a/1/?schema=PAC_JF_TRANSFER_MEMO&fields_to_validate=` - ); - httpTestingController.verify(); - }); -}); diff --git a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts b/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts deleted file mode 100644 index 84f2bcecb7..0000000000 --- a/front-end/src/app/transactions/transaction-group-f/transaction-group-f.component.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; -import { TransactionTypeBaseComponent } from 'app/shared/components/transaction-type-base/transaction-type-base.component'; -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../../shared/models/contact.model'; - -@Component({ - selector: 'app-transaction-group-f', - templateUrl: './transaction-group-f.component.html', -}) -export class TransactionGroupFComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { - formProperties: string[] = [ - 'entity_type', - 'contributor_organization_name', - 'donor_committee_fec_id', - 'contributor_street_1', - 'contributor_street_2', - 'contributor_city', - 'contributor_state', - 'contributor_zip', - 'contribution_date', - 'contribution_amount', - 'contribution_aggregate', - 'contribution_purpose_descrip', - 'memo_code', - 'memo_text_input', - ]; - override contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); -} diff --git a/front-end/src/app/transactions/transactions.module.ts b/front-end/src/app/transactions/transactions.module.ts index 0311114601..856e6f10a1 100644 --- a/front-end/src/app/transactions/transactions.module.ts +++ b/front-end/src/app/transactions/transactions.module.ts @@ -24,7 +24,6 @@ import { TransactionGroupBComponent } from './transaction-group-b/transaction-gr import { TransactionGroupCComponent } from './transaction-group-c/transaction-group-c.component'; import { TransactionGroupDComponent } from './transaction-group-d/transaction-group-d.component'; import { TransactionGroupEComponent } from './transaction-group-e/transaction-group-e.component'; -import { TransactionGroupFComponent } from './transaction-group-f/transaction-group-f.component'; import { TransactionGroupAgComponent } from './transaction-group-ag/transaction-group-ag.component'; import { TransactionGroupFgComponent } from './transaction-group-fg/transaction-group-fg.component'; import { MemoCodePipe, TransactionListComponent } from './transaction-list/transaction-list.component'; @@ -42,7 +41,6 @@ import { TransactionsRoutingModule } from './transactions-routing.module'; TransactionGroupCComponent, TransactionGroupDComponent, TransactionGroupEComponent, - TransactionGroupFComponent, TransactionGroupAgComponent, TransactionGroupFgComponent, ], From 1037b0eabf7621d2d83e72ef3b6c9936cc7c513b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 16 Feb 2023 16:10:42 -0500 Subject: [PATCH 072/115] Fix bad merge into develop branch --- .../PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts | 4 ++-- ...ARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 6728d6318c..794edac1f9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { componentGroupId = 'D'; title = LabelUtils.get( ScheduleATransactionTypeLabels, diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts index a08064cea1..a82879865f 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts @@ -2,10 +2,10 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { SchaTransactionType } from './SchaTransactionType.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO extends SchaTransactionType { +export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO extends SchATransactionType { componentGroupId = 'A'; title = LabelUtils.get( ScheduleATransactionTypeLabels, From 1d3e4f1686a330004b715f6fd5e5ef10ba801a82 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 16 Feb 2023 16:44:11 -0500 Subject: [PATCH 073/115] 108 added candidate lookup for create contact --- .../contact-form/contact-form.component.html | 1 + .../contact-form.component.spec.ts | 2 +- .../contact-form/contact-form.component.ts | 32 ++++++++- .../contact-lookup.component.spec.ts | 4 +- .../contact-lookup.component.ts | 12 +++- ...ansaction-contact-lookup.component.spec.ts | 4 +- .../transaction-contact-lookup.component.ts | 2 +- .../app/shared/models/candidate.model.spec.ts | 7 ++ .../src/app/shared/models/candidate.model.ts | 39 +++++++++++ .../src/app/shared/models/contact.model.ts | 70 +++++++++++++++++-- .../src/app/shared/models/fec-api.model.ts | 3 +- .../services/committee-account.service.ts | 2 +- .../shared/services/contact.service.spec.ts | 22 +++++- .../app/shared/services/contact.service.ts | 13 +++- .../shared/services/fec-api.service.spec.ts | 4 +- .../app/shared/services/fec-api.service.ts | 31 ++++++-- 16 files changed, 225 insertions(+), 23 deletions(-) create mode 100644 front-end/src/app/shared/models/candidate.model.spec.ts create mode 100644 front-end/src/app/shared/models/candidate.model.ts diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.html b/front-end/src/app/shared/components/contact-form/contact-form.component.html index 24d0839600..059ac604e9 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.html +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.html @@ -14,6 +14,7 @@

Contact

[contactTypeOptions]="contactTypeOptions" [showSearchBox]="form.get('type')?.value === ContactTypes.CANDIDATE || form.get('type')?.value === ContactTypes.COMMITTEE" [showCreateNewContactButton]="false" + [includeFecfileResults]="false" (contactLookupSelect)="onContactLookupSelect($event)" > diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index 1e315f76ea..1bb3c3b818 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -149,7 +149,7 @@ describe('ContactFormComponent', () => { testResponse.committee_id = testId; testResponse.treasurer_phone = testPhone; - spyOn(testFecApiService, 'getDetails').and.returnValue(of(testResponse)); + spyOn(testFecApiService, 'getCommitteeDetails').and.returnValue(of(testResponse)); component.onContactLookupSelect({ value: testFecApiCommitteeLookupData }); diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 7a150cdeb8..c316662c70 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -15,6 +15,7 @@ import { Contact, ContactTypeLabels, ContactTypes, + FecApiCandidateLookupData, FecApiCommitteeLookupData } from '../../models/contact.model'; @@ -161,6 +162,8 @@ export class ContactFormComponent implements OnInit, OnDestroy { if (event && event.value) { if (event.value instanceof Contact) { this.onContactSelect(event.value); + } else if (event.value instanceof FecApiCandidateLookupData) { + this.onFecApiCandidateLookupDataSelect(event.value); } else if (event.value instanceof FecApiCommitteeLookupData) { this.onFecApiCommitteeLookupDataSelect(event.value); } @@ -200,9 +203,36 @@ export class ContactFormComponent implements OnInit, OnDestroy { } } + onFecApiCandidateLookupDataSelect(data: FecApiCandidateLookupData) { + if (data.id) { + this.fecApiService.getCandidateDetails(data.id).subscribe((candidate) => { + // TODO: fix once we get info from api and set all names below properly + const nameSplit = candidate.name?.split(/,(.*)/s); + + this.form.get('type')?.setValue(ContactTypes.CANDIDATE); + this.form.get('candidate_id')?.setValue(candidate.candidate_id); + this.form.get('last_name')?.setValue(nameSplit?.[0]); + this.form.get('first_name')?.setValue(nameSplit?.[1]); + this.form.get('middle_name')?.setValue(''); + this.form.get('prefix')?.setValue(''); + this.form.get('suffix')?.setValue(''); + this.form.get('street_1')?.setValue(candidate.address_street_1); + this.form.get('street_2')?.setValue(candidate.address_street_2); + this.form.get('city')?.setValue(candidate.address_city); + this.form.get('state')?.setValue(candidate.address_state); + this.form.get('zip')?.setValue(candidate.address_zip); + this.form.get('employer')?.setValue(''); + this.form.get('occupation')?.setValue(''); + this.form.get('candidate_office')?.setValue(candidate.office_full); + this.form.get('candidate_state')?.setValue(candidate.state); + this.form.get('candidate_district')?.setValue(candidate.district); + }); + } + } + onFecApiCommitteeLookupDataSelect(data: FecApiCommitteeLookupData) { if (data.id) { - this.fecApiService.getDetails(data.id).subscribe((committeeAccount) => { + this.fecApiService.getCommitteeDetails(data.id).subscribe((committeeAccount) => { let phone; if (committeeAccount?.treasurer_phone) { phone = '+1 ' + committeeAccount.treasurer_phone; diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts index 12eacb216d..d2c41d801b 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts @@ -115,13 +115,13 @@ describe('ContactLookupComponent', () => { component.contactTypeFormControl.setValue('COM'); component.onDropdownSearch(testEvent); expect( - JSON.stringify(component.contactLookupList) === JSON.stringify(testCommitteeLookupResponse.toSelectItemGroups()) + JSON.stringify(component.contactLookupList) === JSON.stringify(testCommitteeLookupResponse.toSelectItemGroups(true)) ).toBeTrue(); expect( JSON.stringify([ { label: 'There are no matching committees', items: [] }, { label: 'There are no matching registered committees', items: [] }, - ]) === JSON.stringify(new CommitteeLookupResponse().toSelectItemGroups()) + ]) === JSON.stringify(new CommitteeLookupResponse().toSelectItemGroups(true)) ).toBeTrue(); })); diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index 189531e9ae..fddff7faff 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -21,6 +21,7 @@ export class ContactLookupComponent { @Input() maxFecfileCommitteeResults = 5; @Input() maxFecfileIndividualResults = 10; @Input() maxFecfileOrganizationResults = 10; + @Input() includeFecfileResults = true; @Output() contactLookupSelect = new EventEmitter(); @Output() createNewContactSelect = new EventEmitter(); @@ -47,11 +48,20 @@ export class ContactLookupComponent { if (searchTerm) { this.searchTerm = searchTerm; switch (this.contactTypeFormControl.value) { + case ContactTypes.CANDIDATE: + this.contactService + .candidateLookup(searchTerm, this.maxFecCommitteeResults, this.maxFecfileCommitteeResults) + .subscribe((response) => { + this.contactLookupList = response && response.toSelectItemGroups( + this.includeFecfileResults); + }); + break; case ContactTypes.COMMITTEE: this.contactService .committeeLookup(searchTerm, this.maxFecCommitteeResults, this.maxFecfileCommitteeResults) .subscribe((response) => { - this.contactLookupList = response && response.toSelectItemGroups(); + this.contactLookupList = response && response.toSelectItemGroups( + this.includeFecfileResults); }); break; case ContactTypes.INDIVIDUAL: diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts index f982ec6ea5..9e02b7ff67 100644 --- a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.spec.ts @@ -75,7 +75,7 @@ describe('TransactionContactLookupComponent', () => { const testValue = { value: testFecApiLookupData, } as SelectItem; - spyOn(testFecApiService, 'getDetails').and.returnValue(of(new CommitteeAccount())); + spyOn(testFecApiService, 'getCommitteeDetails').and.returnValue(of(new CommitteeAccount())); component.createContactForm.removeControl('committee_id'); component.createContactForm.removeControl('name'); component.createContactForm.removeControl('street_1'); @@ -93,7 +93,7 @@ describe('TransactionContactLookupComponent', () => { const testValue = { value: testFecApiLookupData, } as SelectItem; - spyOn(testFecApiService, 'getDetails').and.returnValue(of(new CommitteeAccount())); + spyOn(testFecApiService, 'getCommitteeDetails').and.returnValue(of(new CommitteeAccount())); component.onContactLookupSelect(testValue); tick(500); diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts index 6deb68b9d2..e62c067887 100644 --- a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts @@ -54,7 +54,7 @@ export class TransactionContactLookupComponent { } else if (event.value instanceof FecApiCommitteeLookupData) { const value: FecApiCommitteeLookupData = event.value; if (value.id) { - this.fecApiService.getDetails(value.id).subscribe((committeeAccount) => { + this.fecApiService.getCommitteeDetails(value.id).subscribe((committeeAccount) => { this.openCreateContactDialog(committeeAccount); }); } diff --git a/front-end/src/app/shared/models/candidate.model.spec.ts b/front-end/src/app/shared/models/candidate.model.spec.ts new file mode 100644 index 0000000000..40ec8d805f --- /dev/null +++ b/front-end/src/app/shared/models/candidate.model.spec.ts @@ -0,0 +1,7 @@ +import { Candidate } from './candidate.model'; + +describe('Candidate', () => { + it('should create an instance', () => { + expect(new Candidate()).toBeTruthy(); + }); +}); diff --git a/front-end/src/app/shared/models/candidate.model.ts b/front-end/src/app/shared/models/candidate.model.ts new file mode 100644 index 0000000000..59e9b5d9e0 --- /dev/null +++ b/front-end/src/app/shared/models/candidate.model.ts @@ -0,0 +1,39 @@ +import { plainToClass } from 'class-transformer'; +import { BaseModel } from './base.model'; + +export class Candidate extends BaseModel { + active_through: number | undefined; + address_city: string | undefined; + address_state: string | undefined; + address_street_1: string | undefined; + address_street_2: string | undefined; + address_zip: string | undefined; + candidate_id: string | undefined; + candidate_inactive: boolean | undefined; + candidate_status: string | undefined; + cycles: number[] = []; + district: string | undefined; + district_number: number | undefined; + election_districts: string[] = []; + election_years: number[] = []; + federal_funds_flag: boolean | undefined; + first_file_date: string | undefined; + flags: string | undefined; + has_raised_funds: boolean | undefined; + incumbent_challenge: string | undefined; + incumbent_challenge_full: string | undefined; + last_f2_date: string | undefined; + last_file_date: string | undefined; + load_date: string | undefined; + name: string | undefined; + office: string | undefined; + office_full: string | undefined; + party: string | undefined; + party_full: string | undefined; + state: string | undefined; + + // prettier-ignore + static fromJSON(json: any): Candidate { // eslint-disable-line @typescript-eslint/no-explicit-any + return plainToClass(Candidate, json); + } +} diff --git a/front-end/src/app/shared/models/contact.model.ts b/front-end/src/app/shared/models/contact.model.ts index 92425a3982..8c560aeb45 100644 --- a/front-end/src/app/shared/models/contact.model.ts +++ b/front-end/src/app/shared/models/contact.model.ts @@ -98,7 +98,69 @@ export class Contact extends BaseModel { } } -export class FecApiLookupData {} +export class FecApiLookupData { } + +export class FecApiCandidateLookupData extends FecApiLookupData { + id: string | undefined; + office_sought: string | undefined; + name: string | undefined; + + constructor(data: FecApiCandidateLookupData) { + super(); + Object.assign(this, data); + } + + toSelectItem(): SelectItem { + return { + label: `${this.name} (${this.id})`, + value: this, + }; + } +} + +export class FecfileCandidateLookupData extends Contact { + constructor(data: FecfileCandidateLookupData) { + super(); + Object.assign(this, data); + } + + toSelectItem(): SelectItem { + return { + label: `${this.name} (${this.candidate_id})`, + value: this, + }; + } +} + +export class CandidateLookupResponse { + fec_api_candidates?: FecApiCandidateLookupData[]; + fecfile_candidates?: FecfileCandidateLookupData[]; + + // prettier-ignore + static fromJSON(json: any): CandidateLookupResponse { // eslint-disable-line @typescript-eslint/no-explicit-any + return plainToClass(CandidateLookupResponse, json); + } + + toSelectItemGroups(includeFecfileResults: boolean): SelectItemGroup[] { + const fecApiSelectItems = + this.fec_api_candidates?.map((data) => new FecApiCandidateLookupData(data).toSelectItem()) || []; + const fecfileSelectItems = + this.fecfile_candidates?.map((data) => new FecfileCandidateLookupData(data).toSelectItem()) || []; + return [ + ...includeFecfileResults ? [{ + label: fecfileSelectItems.length ? 'Select an existing candidate contact:' : 'There are no matching candidates', + items: fecfileSelectItems, + }] : [], + { + label: fecApiSelectItems.length + ? 'Create a new contact from list of registered candidates:' + : 'There are no matching registered candidates', + items: fecApiSelectItems, + }, + ]; + } +} + export class FecApiCommitteeLookupData extends FecApiLookupData { id: string | undefined; is_active: boolean | undefined; @@ -140,16 +202,16 @@ export class CommitteeLookupResponse { return plainToClass(CommitteeLookupResponse, json); } - toSelectItemGroups(): SelectItemGroup[] { + toSelectItemGroups(includeFecfileResults: boolean): SelectItemGroup[] { const fecApiSelectItems = this.fec_api_committees?.map((data) => new FecApiCommitteeLookupData(data).toSelectItem()) || []; const fecfileSelectItems = this.fecfile_committees?.map((data) => new FecfileCommitteeLookupData(data).toSelectItem()) || []; return [ - { + ...includeFecfileResults ? [{ label: fecfileSelectItems.length ? 'Select an existing committee contact:' : 'There are no matching committees', items: fecfileSelectItems, - }, + }] : [], { label: fecApiSelectItems.length ? 'Create a new contact from list of registered committees:' diff --git a/front-end/src/app/shared/models/fec-api.model.ts b/front-end/src/app/shared/models/fec-api.model.ts index 904ac1cc8c..cc411935c8 100644 --- a/front-end/src/app/shared/models/fec-api.model.ts +++ b/front-end/src/app/shared/models/fec-api.model.ts @@ -1,3 +1,4 @@ +import { Candidate } from './candidate.model'; import { CommitteeAccount } from './committee-account.model'; import { FecFiling } from './fec-filing.model'; @@ -11,5 +12,5 @@ export type FecApiPagination = { export type FecApiPaginatedResponse = { api_version: string; pagination: FecApiPagination; - results: CommitteeAccount[] | FecFiling[]; + results: Candidate[] | CommitteeAccount[] | FecFiling[]; }; diff --git a/front-end/src/app/shared/services/committee-account.service.ts b/front-end/src/app/shared/services/committee-account.service.ts index 0938a8c961..4e50d0532d 100644 --- a/front-end/src/app/shared/services/committee-account.service.ts +++ b/front-end/src/app/shared/services/committee-account.service.ts @@ -20,7 +20,7 @@ export class CommitteeAccountService { const userLoginData$ = this.store.select(selectUserLoginData); return userLoginData$.pipe( mergeMap((userLoginData) => { - return this.fecApiService.getDetails(userLoginData.committee_id); + return this.fecApiService.getCommitteeDetails(userLoginData.committee_id); }) ); } diff --git a/front-end/src/app/shared/services/contact.service.spec.ts b/front-end/src/app/shared/services/contact.service.spec.ts index 7517f8cde1..b8bc4735eb 100644 --- a/front-end/src/app/shared/services/contact.service.spec.ts +++ b/front-end/src/app/shared/services/contact.service.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { of } from 'rxjs'; import { environment } from '../../../environments/environment'; -import { CommitteeLookupResponse, Contact, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; +import { CandidateLookupResponse, CommitteeLookupResponse, Contact, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; import { ListRestResponse } from '../models/rest-api.model'; import { testMockStore } from '../utils/unit-test.utils'; import { ApiService } from './api.service'; @@ -98,6 +98,26 @@ describe('ContactService', () => { httpTestingController.verify(); }); + it('#candidateLookup() happy path', () => { + const expectedRetval = new CandidateLookupResponse(); + const apiServiceGetSpy = spyOn(testApiService, 'get').and.returnValue(of(expectedRetval)); + const testSearch = 'testSearch'; + const testMaxFecResults = 1; + const testMaxFecfileResults = 2; + + const expectedEndpoint = '/contacts/candidate_lookup/'; + const expectedParams = { + q: testSearch, + max_fec_results: testMaxFecResults, + max_fecfile_results: testMaxFecfileResults + } + + service + .candidateLookup(testSearch, testMaxFecResults, testMaxFecfileResults) + .subscribe((value) => expect(value).toEqual(expectedRetval)); + expect(apiServiceGetSpy).toHaveBeenCalledOnceWith(expectedEndpoint, expectedParams); + }); + it('#committeeLookup() happy path', () => { const expectedRetval = new CommitteeLookupResponse(); const apiServiceGetSpy = spyOn(testApiService, 'get').and.returnValue(of(expectedRetval)); diff --git a/front-end/src/app/shared/services/contact.service.ts b/front-end/src/app/shared/services/contact.service.ts index 6aa6ee6617..b7d68a8b3e 100644 --- a/front-end/src/app/shared/services/contact.service.ts +++ b/front-end/src/app/shared/services/contact.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { TableListService } from '../interfaces/table-list-service.interface'; -import { CommitteeLookupResponse, Contact, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; +import { CandidateLookupResponse, CommitteeLookupResponse, Contact, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; @@ -44,6 +44,17 @@ export class ContactService implements TableListService { return this.apiService.delete(`/contacts/${contact.id}`); } + public candidateLookup(search: string, maxFecResults: number, + maxFecfileResults: number): Observable { + return this.apiService.get( + '/contacts/candidate_lookup/', { + q: search, + max_fec_results: maxFecResults, + max_fecfile_results: maxFecfileResults + }).pipe( + map((response) => CandidateLookupResponse.fromJSON(response))); + } + public committeeLookup(search: string, maxFecResults: number, maxFecfileResults: number): Observable { return this.apiService.get( diff --git a/front-end/src/app/shared/services/fec-api.service.spec.ts b/front-end/src/app/shared/services/fec-api.service.spec.ts index e095796aef..ee736e2dbc 100644 --- a/front-end/src/app/shared/services/fec-api.service.spec.ts +++ b/front-end/src/app/shared/services/fec-api.service.spec.ts @@ -22,7 +22,7 @@ describe('FecApiService', () => { expect(service).toBeTruthy(); }); - describe('#getDetails()', () => { + describe('#getCommitteeDetails()', () => { it('should return committee details', () => { const committeeAccount: CommitteeAccount = new CommitteeAccount(); const response: FecApiPaginatedResponse = { @@ -36,7 +36,7 @@ describe('FecApiService', () => { results: [committeeAccount], }; - service.getDetails('C00601211').subscribe((committeeAccountData) => { + service.getCommitteeDetails('C00601211').subscribe((committeeAccountData) => { expect(committeeAccountData).toEqual(committeeAccount); }); diff --git a/front-end/src/app/shared/services/fec-api.service.ts b/front-end/src/app/shared/services/fec-api.service.ts index 862432be96..8796388c11 100644 --- a/front-end/src/app/shared/services/fec-api.service.ts +++ b/front-end/src/app/shared/services/fec-api.service.ts @@ -1,9 +1,10 @@ import { HttpClient, HttpParams } from '@angular/common/http'; -import { environment } from '../../../environments/environment'; import { Injectable } from '@angular/core'; +import { FecApiPaginatedResponse } from 'app/shared/models/fec-api.model'; import { map, Observable, of, switchMap } from 'rxjs'; +import { environment } from '../../../environments/environment'; +import { Candidate } from '../models/candidate.model'; import { CommitteeAccount } from '../models/committee-account.model'; -import { FecApiPaginatedResponse } from 'app/shared/models/fec-api.model'; import { FecFiling } from '../models/fec-filing.model'; export type QueryParamsType = { [param: string]: string | number | boolean | readonly (string | number | boolean)[] }; @@ -14,7 +15,7 @@ export type QueryParamsType = { [param: string]: string | number | boolean | rea export class FecApiService { private apiKey: string | null = environment.fecApiKey; - constructor(private http: HttpClient) {} + constructor(private http: HttpClient) { } getHeaders() { return { @@ -27,14 +28,34 @@ export class FecApiService { return new HttpParams({ fromObject: allParams }); } + /** + * Gets the candidate details. + * + * @return {Observable} The candidate details. + */ + public getCandidateDetails(candidateId: string | null): Observable { + if (!candidateId) { + throw new Error('Fecfile: No Candidate Id provided in getCandidateDetails()'); + } + const headers = this.getHeaders(); + const params = this.getQueryParams(); + return this.http + .get(`${environment.fecApiUrl}candidate/${candidateId}/`, { + headers: headers, + params: params, + }) + .pipe(map((response: FecApiPaginatedResponse) => (response.results[0] as Candidate) || undefined)); + } + + /** * Gets the commitee account details. * * @return {Observable} The commitee details. */ - public getDetails(committeeId: string | null): Observable { + public getCommitteeDetails(committeeId: string | null): Observable { if (!committeeId) { - throw new Error('Fecfile: No Committee Id provided in getDetails()'); + throw new Error('Fecfile: No Committee Id provided in getCommitteeDetails()'); } const headers = this.getHeaders(); const params = this.getQueryParams(); From 073fcf392636d817c4f3328ef43dbc58ac411391 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 16 Feb 2023 16:46:34 -0500 Subject: [PATCH 074/115] office fix --- .../shared/components/contact-form/contact-form.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index c316662c70..6bced32173 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -223,7 +223,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { this.form.get('zip')?.setValue(candidate.address_zip); this.form.get('employer')?.setValue(''); this.form.get('occupation')?.setValue(''); - this.form.get('candidate_office')?.setValue(candidate.office_full); + this.form.get('candidate_office')?.setValue(candidate.office); this.form.get('candidate_state')?.setValue(candidate.state); this.form.get('candidate_district')?.setValue(candidate.district); }); From 217c0d71000472c4a1aa9422ac6b94cf204502f3 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 16 Feb 2023 16:48:28 -0500 Subject: [PATCH 075/115] fix lint --- .../components/contact-form/contact-form.component.spec.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index 1bb3c3b818..bbda6e43ba 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; @@ -16,7 +16,6 @@ import { ContactFormComponent } from './contact-form.component'; describe('ContactFormComponent', () => { let component: ContactFormComponent; let fixture: ComponentFixture; - let httpTestingController: HttpTestingController; let testFecApiService: FecApiService; beforeEach(async () => { @@ -31,7 +30,6 @@ describe('ContactFormComponent', () => { FecInternationalPhoneInputComponent], providers: [FormBuilder, provideMockStore(testMockStore)], }).compileComponents(); - httpTestingController = TestBed.inject(HttpTestingController); testFecApiService = TestBed.inject(FecApiService); }); From 99df7c22f869bc39a30e9a2f9a950079c15ce266 Mon Sep 17 00:00:00 2001 From: toddlees Date: Fri, 17 Feb 2023 09:58:10 -0500 Subject: [PATCH 076/115] Other Disbursement --- .../shared/models/schb-transaction.model.ts | 2 +- .../OTHER_DISBURSEMENT.model.spec.ts | 27 +++++++++++++++++++ .../OTHER_DISBURSEMENT.model.ts | 23 ++++++++++++++++ .../shared/utils/transaction-type.utils.ts | 2 ++ 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 17a1d9aac8..2721b32a9e 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -163,7 +163,7 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ [ScheduleBTransactionTypes.CONTRIBUTION_TO_CANDIDATE_VOID, 'Void of Contribution to Candidate'], [ScheduleBTransactionTypes.CONTRIBUTION_TO_OTHER_COMMITTEE, 'Contribution to Other Committee'], [ScheduleBTransactionTypes.CONTRIBUTION_TO_OTHER_COMMITTEE_VOID, 'Void of Contribution to Other Committee'], - [ScheduleBTransactionTypes.OTHER_DISBURSEMENT, 'Other Disbursements'], + [ScheduleBTransactionTypes.OTHER_DISBURSEMENT, 'Other Disbursement'], [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT, 'Credit Card Payment for Other Disbursements'], [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO, 'Credit Card Corresponding Memo'], [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT, 'Staff Reimbursements for Other Disbursements'], diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts new file mode 100644 index 0000000000..f8adb1286b --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts @@ -0,0 +1,27 @@ +import { OTHER_DISBURSEMENT } from './OTHER_DISBURSEMENT.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; + +describe('OPERATING_EXPENDITURE', () => { + let transactionType: OTHER_DISBURSEMENT; + + beforeEach(() => { + transactionType = new OTHER_DISBURSEMENT(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('B'); + expect(transactionType.componentGroupId).toBe('B'); + }); + + it('#factory() should return a SchBTransaction', () => { + const txn: SchBTransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SB29'); + expect(txn.transaction_type_identifier).toBe(ScheduleBTransactionTypes.OTHER_DISBURSEMENT); + }); + + it('#generatePurposeDescription() should not be defined', () => { + expect((transactionType as TransactionType).generatePurposeDescription).toBe(undefined); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts new file mode 100644 index 0000000000..07b413f30e --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts @@ -0,0 +1,23 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COMMON_DISBURSEMENTS'; +import { AggregationGroups } from '../transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { SchBTransactionType } from '../schb-transaction-type.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { ContactTypes } from '../contact.model'; + +export class OTHER_DISBURSEMENT extends SchBTransactionType { + componentGroupId = 'B'; + title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT); + schema = schema; + override defaultContactTypeOption = ContactTypes.ORGANIZATION; + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + + getNewTransaction() { + return SchBTransaction.fromJSON({ + form_type: 'SB29', + transaction_type_identifier: ScheduleBTransactionTypes.OTHER_DISBURSEMENT, + aggregation_group: AggregationGroups.GENERAL_DISBURSEMENT, + }); + } +} diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 8c379f88aa..ce38904489 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -75,6 +75,7 @@ import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO } from '../models/transaction- // Schedule B ///////////////////////////////////////////////////// import { OPERATING_EXPENDITURE } from '../models/transaction-types/OPERATING_EXPENDITURE.model'; +import { OTHER_DISBURSEMENT } from '../models/transaction-types/OTHER_DISBURSEMENT.model'; // prettier-ignore const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/no-explicit-any @@ -149,6 +150,7 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, // Schedule B ///////////////////////////////////////////////////// OPERATING_EXPENDITURE, + OTHER_DISBURSEMENT, } export class TransactionTypeUtils { From 10e3adc44caf96f0364ab698b085613fac5481be Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 17 Feb 2023 13:40:56 -0500 Subject: [PATCH 077/115] Add operating expenditure void and other disbursement void --- front-end/package-lock.json | 108 +++++++++--------- front-end/package.json | 2 +- .../EARMARK_RECEIPT.model.ts | 8 +- ...ARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts | 8 +- ...MARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts | 8 +- .../EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts | 8 +- .../INDIVIDUAL_JF_TRANSFER_MEMO.model.ts | 2 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../OPERATING_EXPENDITURE.model.ts | 2 +- .../OPERATING_EXPENDITURE_VOID.model.spec.ts | 27 +++++ .../OPERATING_EXPENDITURE_VOID.model.ts | 23 ++++ .../OTHER_DISBURSEMENT.model.spec.ts | 2 +- .../OTHER_DISBURSEMENT.model.ts | 2 +- .../OTHER_DISBURSEMENT_VOID.model.spec.ts | 27 +++++ .../OTHER_DISBURSEMENT_VOID.model.ts | 23 ++++ .../PAC_EARMARK_RECEIPT.model.ts | 8 +- ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../PARTNERSHIP_RECEIPT.model.ts | 2 +- .../PARTY_JF_TRANSFER_MEMO.model.ts | 2 +- .../TRIBAL_JF_TRANSFER_MEMO.model.ts | 2 +- ..._CONVENTION_JF_TRANSFER_MEMO.model.spec.ts | 3 + ...PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts | 2 +- ...RTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts | 2 +- ...AL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts | 2 +- .../shared/utils/transaction-type.utils.ts | 4 + 29 files changed, 198 insertions(+), 91 deletions(-) create mode 100644 front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts create mode 100644 front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts create mode 100644 front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts diff --git a/front-end/package-lock.json b/front-end/package-lock.json index ff542d70b3..3bb30b89ad 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#cdc9918818e651b3e79a8d0db09306ba65dcfec3", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#93df5f252838bda7a7ee99ad941fffb80f4897e8", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -3321,9 +3321,9 @@ } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true, "engines": { "node": ">=12" @@ -5275,9 +5275,9 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true, "engines": { "node": ">=12" @@ -5324,9 +5324,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001452", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz", - "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==", + "version": "1.0.30001456", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", + "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", "dev": true, "funding": [ { @@ -6869,9 +6869,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.297", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.297.tgz", - "integrity": "sha512-dTXLXBdzfDYnZYq+bLer21HrFsEkzlR2OSIOsR+qroDmhmQU3i4T4KdY0Lcp83ZId3HnWTpPAEfhaJtVxmS/dQ==", + "version": "1.4.301", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz", + "integrity": "sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA==", "dev": true }, "node_modules/emoji-regex": { @@ -7858,9 +7858,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -8228,8 +8228,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#cdc9918818e651b3e79a8d0db09306ba65dcfec3", - "integrity": "sha512-kci1McU+FadBcUs3hSCIZ+wUwY5LR5BiGKFsE3uYagJx7y8MKONaKo9BWSo8Yj9xytl9pE5UsrK63xpbT9jZjg==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#93df5f252838bda7a7ee99ad941fffb80f4897e8", + "integrity": "sha512-N3jGb5vsXvYWoYjGZYTkg4lnjIh7CeVnuSt+N/WAXGBpnpfHb5sxSJdv5EJv5X4lyTaXn+BdLMTtzUCBKMtaDw==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -8818,9 +8818,9 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true, "engines": { "node": ">=12" @@ -10945,9 +10945,9 @@ } }, "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true, "engines": { "node": ">=12" @@ -14491,9 +14491,9 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", - "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", @@ -19516,9 +19516,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true } } @@ -21037,9 +21037,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true } } @@ -21073,9 +21073,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001452", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz", - "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==", + "version": "1.0.30001456", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", + "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", "dev": true }, "caseless": { @@ -22223,9 +22223,9 @@ } }, "electron-to-chromium": { - "version": "1.4.297", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.297.tgz", - "integrity": "sha512-dTXLXBdzfDYnZYq+bLer21HrFsEkzlR2OSIOsR+qroDmhmQU3i4T4KdY0Lcp83ZId3HnWTpPAEfhaJtVxmS/dQ==", + "version": "1.4.301", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz", + "integrity": "sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA==", "dev": true }, "emoji-regex": { @@ -22855,9 +22855,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -23158,9 +23158,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#cdc9918818e651b3e79a8d0db09306ba65dcfec3", - "integrity": "sha512-kci1McU+FadBcUs3hSCIZ+wUwY5LR5BiGKFsE3uYagJx7y8MKONaKo9BWSo8Yj9xytl9pE5UsrK63xpbT9jZjg==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#cdc9918818e651b3e79a8d0db09306ba65dcfec3", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#93df5f252838bda7a7ee99ad941fffb80f4897e8", + "integrity": "sha512-N3jGb5vsXvYWoYjGZYTkg4lnjIh7CeVnuSt+N/WAXGBpnpfHb5sxSJdv5EJv5X4lyTaXn+BdLMTtzUCBKMtaDw==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#93df5f252838bda7a7ee99ad941fffb80f4897e8", "requires": { "ajv": "^8.11.0" } @@ -23606,9 +23606,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true } } @@ -25256,9 +25256,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", + "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", "dev": true } } @@ -27852,9 +27852,9 @@ "dev": true }, "regexpu-core": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", - "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", diff --git a/front-end/package.json b/front-end/package.json index 8bfdb76075..77189a21be 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#cdc9918818e651b3e79a8d0db09306ba65dcfec3", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#93df5f252838bda7a7ee99ad941fffb80f4897e8", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts index 7f63c4b37c..8e22547439 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts @@ -17,11 +17,11 @@ export class EARMARK_RECEIPT extends SchATransactionType { override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; const earmarkMemo: SchATransaction = transaction.children[0] as SchATransaction; - let conduit = earmarkMemo?.contributor_organization_name || ''; + let conduit = earmarkMemo.contributor_organization_name || ''; if ( - earmarkMemo?.entity_type === ContactTypes.INDIVIDUAL && - earmarkMemo?.contributor_first_name && - earmarkMemo?.contributor_last_name + earmarkMemo.entity_type === ContactTypes.INDIVIDUAL && + earmarkMemo.contributor_first_name && + earmarkMemo.contributor_last_name ) { conduit = `${earmarkMemo.contributor_first_name || ''} ${earmarkMemo.contributor_last_name || ''}`; } diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts index 4257fc0bf4..180e36015b 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts @@ -30,11 +30,11 @@ export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchATransactionType { override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; const subTransaction: SchATransaction = transaction.children[0] as SchATransaction; - let conduit = subTransaction?.contributor_organization_name || ''; + let conduit = subTransaction.contributor_organization_name || ''; if ( - subTransaction?.entity_type === ContactTypes.INDIVIDUAL && - subTransaction?.contributor_first_name && - subTransaction?.contributor_last_name + subTransaction.entity_type === ContactTypes.INDIVIDUAL && + subTransaction.contributor_first_name && + subTransaction.contributor_last_name ) { conduit = `${subTransaction.contributor_first_name || ''} ${subTransaction.contributor_last_name || ''}`; } diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts index f1ca49b47b..f216a7e403 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts @@ -30,11 +30,11 @@ export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchATransactionType { override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; const subTransaction: SchATransaction = transaction.children[0] as SchATransaction; - let conduit = subTransaction?.contributor_organization_name || ''; + let conduit = subTransaction.contributor_organization_name || ''; if ( - subTransaction?.entity_type === ContactTypes.INDIVIDUAL && - subTransaction?.contributor_first_name && - subTransaction?.contributor_last_name + subTransaction.entity_type === ContactTypes.INDIVIDUAL && + subTransaction.contributor_first_name && + subTransaction.contributor_last_name ) { conduit = `${subTransaction.contributor_first_name || ''} ${subTransaction.contributor_last_name || ''}`; } diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts index 3257f34521..7ddbd5e864 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts @@ -30,11 +30,11 @@ export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends SchATransactionType { override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; const subTransaction: SchATransaction = transaction.children[0] as SchATransaction; - let conduit = subTransaction?.contributor_organization_name || ''; + let conduit = subTransaction.contributor_organization_name || ''; if ( - subTransaction?.entity_type === ContactTypes.INDIVIDUAL && - subTransaction?.contributor_first_name && - subTransaction?.contributor_last_name + subTransaction.entity_type === ContactTypes.INDIVIDUAL && + subTransaction.contributor_first_name && + subTransaction.contributor_last_name ) { conduit = `${subTransaction.contributor_first_name || ''} ${subTransaction.contributor_last_name || ''}`; } diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts index 36fe9bf43c..b4b8547b69 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts @@ -14,7 +14,7 @@ export class INDIVIDUAL_JF_TRANSFER_MEMO extends SchATransactionType { ); override generatePurposeDescription(transaction: SchATransaction): string { - return `JF Memo: ${(transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; + return `JF Memo: ${(transaction.parent_transaction as SchATransaction).contributor_organization_name}`; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 3dac8a23d1..b3db028288 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchAT override generatePurposeDescription(transaction: SchATransaction): string { return `Pres. Nominating Convention Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index c687080e92..6d8324d665 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends Sch override generatePurposeDescription(transaction: SchATransaction): string { return `Headquarters Buildings Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction).contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index d4546581a0..ea66179073 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATran override generatePurposeDescription(transaction: SchATransaction): string { return `Recount/Legal Proceedings Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction?.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index b33820c905..870d87f135 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -1,5 +1,5 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COMMON_DISBURSEMENTS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts new file mode 100644 index 0000000000..ba175c151f --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts @@ -0,0 +1,27 @@ +import { OPERATING_EXPENDITURE_VOID } from './OPERATING_EXPENDITURE_VOID.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; + +describe('OPERATING_EXPENDITURE_VOID', () => { + let transactionType: OPERATING_EXPENDITURE_VOID; + + beforeEach(() => { + transactionType = new OPERATING_EXPENDITURE_VOID(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('B'); + expect(transactionType.componentGroupId).toBe('B'); + }); + + it('#factory() should return a SchBTransaction', () => { + const txn: SchBTransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SB21b'); + expect(txn.transaction_type_identifier).toBe(ScheduleBTransactionTypes.OPERATING_EXPENDITURE_VOID); + }); + + it('#generatePurposeDescription() should not be defined', () => { + expect((transactionType as TransactionType).generatePurposeDescription).toBe(undefined); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts new file mode 100644 index 0000000000..6427fc3596 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts @@ -0,0 +1,23 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; +import { AggregationGroups } from '../transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { SchBTransactionType } from '../schb-transaction-type.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { ContactTypes } from '../contact.model'; + +export class OPERATING_EXPENDITURE_VOID extends SchBTransactionType { + componentGroupId = 'B'; + title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_VOID); + schema = schema; + override defaultContactTypeOption = ContactTypes.ORGANIZATION; + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + + getNewTransaction() { + return SchBTransaction.fromJSON({ + form_type: 'SB21b', + transaction_type_identifier: ScheduleBTransactionTypes.OPERATING_EXPENDITURE_VOID, + aggregation_group: AggregationGroups.GENERAL_DISBURSEMENT, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts index f8adb1286b..3d00adad2b 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts @@ -2,7 +2,7 @@ import { OTHER_DISBURSEMENT } from './OTHER_DISBURSEMENT.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -describe('OPERATING_EXPENDITURE', () => { +describe('OTHER_DISBURSEMENT', () => { let transactionType: OTHER_DISBURSEMENT; beforeEach(() => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts index 07b413f30e..9784d3fcb7 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts @@ -1,5 +1,5 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COMMON_DISBURSEMENTS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts new file mode 100644 index 0000000000..2b1d68041e --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts @@ -0,0 +1,27 @@ +import { OTHER_DISBURSEMENT_VOID } from './OTHER_DISBURSEMENT_VOID.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { TransactionType } from 'app/shared/models/transaction-type.model'; + +describe('OTHER_DISBURSEMENT_VOID', () => { + let transactionType: OTHER_DISBURSEMENT_VOID; + + beforeEach(() => { + transactionType = new OTHER_DISBURSEMENT_VOID(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('B'); + expect(transactionType.componentGroupId).toBe('B'); + }); + + it('#factory() should return a SchBTransaction', () => { + const txn: SchBTransaction = transactionType.getNewTransaction(); + expect(txn.form_type).toBe('SB29'); + expect(txn.transaction_type_identifier).toBe(ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID); + }); + + it('#generatePurposeDescription() should not be defined', () => { + expect((transactionType as TransactionType).generatePurposeDescription).toBe(undefined); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts new file mode 100644 index 0000000000..d61e7e0320 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts @@ -0,0 +1,23 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; +import { AggregationGroups } from '../transaction.model'; +import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { SchBTransactionType } from '../schb-transaction-type.model'; +import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { ContactTypes } from '../contact.model'; + +export class OTHER_DISBURSEMENT_VOID extends SchBTransactionType { + componentGroupId = 'B'; + title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID); + schema = schema; + override defaultContactTypeOption = ContactTypes.ORGANIZATION; + override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + + getNewTransaction() { + return SchBTransaction.fromJSON({ + form_type: 'SB29', + transaction_type_identifier: ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID, + aggregation_group: AggregationGroups.GENERAL_DISBURSEMENT, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts index fd7013421b..81c1a7c18f 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts @@ -17,11 +17,11 @@ export class PAC_EARMARK_RECEIPT extends SchATransactionType { override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; const earmarkMemo: SchATransaction = transaction.children[0] as SchATransaction; - let conduit = earmarkMemo?.contributor_organization_name || ''; + let conduit = earmarkMemo.contributor_organization_name || ''; if ( - earmarkMemo?.entity_type === ContactTypes.INDIVIDUAL && - earmarkMemo?.contributor_first_name && - earmarkMemo?.contributor_last_name + earmarkMemo.entity_type === ContactTypes.INDIVIDUAL && + earmarkMemo.contributor_first_name && + earmarkMemo.contributor_last_name ) { conduit = `${earmarkMemo.contributor_first_name || ''} ${earmarkMemo.contributor_last_name || ''}`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 22a1f71185..3c777040b9 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransact override generatePurposeDescription(transaction: SchATransaction): string { return `Pres. Nominating Convention Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 75caa9b165..79bab0157d 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransa override generatePurposeDescription(transaction: SchATransaction): string { return `Headquarters Buildings Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction).contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 162832abc8..03b544f4dc 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransaction override generatePurposeDescription(transaction: SchATransaction): string { return `Recount/Legal Proceedings Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts index d2a3217fa3..95eccee6e2 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts @@ -14,7 +14,7 @@ export class PARTNERSHIP_RECEIPT extends SchATransactionType { override purposeDescriptionLabelNotice = 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; override generatePurposeDescription(transaction: SchATransaction): string { - if (transaction?.children && transaction?.children.length > 0) { + if (transaction.children && transaction.children.length > 0) { return 'See Partnership Attribution(s) below'; } return 'Partnership attributions do not require itemization'; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 1a0be4fd49..47011eef86 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -14,7 +14,7 @@ export class PARTY_JF_TRANSFER_MEMO extends SchATransactionType { ); override generatePurposeDescription(transaction: SchATransaction): string { - return `JF Memo: ${(transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; + return `JF Memo: ${(transaction.parent_transaction as SchATransaction).contributor_organization_name}`; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts index 312db45784..8df4cd0a97 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts @@ -14,7 +14,7 @@ export class TRIBAL_JF_TRANSFER_MEMO extends SchATransactionType { ); override generatePurposeDescription(transaction: SchATransaction): string { - return `JF Memo: ${(transaction?.parent_transaction as SchATransaction).contributor_organization_name}`; + return `JF Memo: ${(transaction.parent_transaction as SchATransaction).contributor_organization_name}`; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 250a52dd4e..4ffc6cdffb 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -25,6 +25,9 @@ describe('TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { }); it('#generatePurposeDescription() should generate a string', () => { + transaction.parent_transaction = { + contributor_organization_name: 'ABC', + } as SchATransaction; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( `Pres. Nominating Convention Account JF Memo: ${ diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index d2e38a3d5c..24e9590cc4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATrans override generatePurposeDescription(transaction: SchATransaction): string { return `Pres. Nominating Convention Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 6e32016e06..d1f176a300 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATra override generatePurposeDescription(transaction: SchATransaction): string { return `Headquarters Buildings Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index a166f534f4..556b7c8b50 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -18,7 +18,7 @@ export class TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransact override generatePurposeDescription(transaction: SchATransaction): string { return `Recount/Legal Proceedings Account JF Memo: ${ - (transaction?.parent_transaction as SchATransaction)?.contributor_organization_name + (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; } diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index ce38904489..405ff80d6d 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -75,7 +75,9 @@ import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO } from '../models/transaction- // Schedule B ///////////////////////////////////////////////////// import { OPERATING_EXPENDITURE } from '../models/transaction-types/OPERATING_EXPENDITURE.model'; +import { OPERATING_EXPENDITURE_VOID } from '../models/transaction-types/OPERATING_EXPENDITURE_VOID.model'; import { OTHER_DISBURSEMENT } from '../models/transaction-types/OTHER_DISBURSEMENT.model'; +import { OTHER_DISBURSEMENT_VOID } from '../models/transaction-types/OTHER_DISBURSEMENT_VOID.model'; // prettier-ignore const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/no-explicit-any @@ -150,7 +152,9 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, // Schedule B ///////////////////////////////////////////////////// OPERATING_EXPENDITURE, + OPERATING_EXPENDITURE_VOID, OTHER_DISBURSEMENT, + OTHER_DISBURSEMENT_VOID, } export class TransactionTypeUtils { From a4850fc6b1572762bc4dff0f521f7921a2b0cc78 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 17 Feb 2023 14:37:50 -0500 Subject: [PATCH 078/115] Fix bug in name input component --- .../components/inputs/name-input/name-input.component.html | 4 ++-- .../transaction-group-b/transaction-group-b.component.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html index 3cbbdd88cd..9fc65401aa 100644 --- a/front-end/src/app/shared/components/inputs/name-input/name-input.component.html +++ b/front-end/src/app/shared/components/inputs/name-input/name-input.component.html @@ -2,8 +2,8 @@
- - + + Contact > - +

Address

From 0cff330f4251d36a4dff18f0fc3a4a04a7e9fd90 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 17 Feb 2023 14:40:12 -0500 Subject: [PATCH 079/115] Add fecfile prefix to error exception messages --- front-end/src/app/shared/models/transaction.model.ts | 2 +- front-end/src/app/shared/resolvers/transaction.resolver.ts | 4 ++-- front-end/src/app/shared/utils/transaction-type.utils.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index 906617d6c0..e23dad3365 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -100,7 +100,7 @@ export abstract class Transaction extends BaseModel { getUpdatedParent(childDeleted = false): Transaction { if (!this.parent_transaction?.transaction_type_identifier) { throw new Error( - `Child transaction '${this.transaction_type_identifier}' is missing its parent when saving to API` + `Fecfile: Child transaction '${this.transaction_type_identifier}' is missing its parent when saving to API` ); } diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.ts b/front-end/src/app/shared/resolvers/transaction.resolver.ts index d2ed60a73d..d3d58df943 100644 --- a/front-end/src/app/shared/resolvers/transaction.resolver.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.ts @@ -71,7 +71,7 @@ export class TransactionResolver implements Resolve { return this.transactionService.get(transaction.parent_transaction.id); } else { throw new Error( - `Transaction ${transaction.id} (${transaction.transaction_type_identifier}) is a dependent transaction type but does not have a parent transaction.` + `Fecfile: Transaction ${transaction.id} (${transaction.transaction_type_identifier}) is a dependent transaction type but does not have a parent transaction.` ); } } else { @@ -79,7 +79,7 @@ export class TransactionResolver implements Resolve { } } throw new Error( - `Transaction type resolver can't find transaction and/or contact for transaction ID ${transactionId}` + `Fecfile: Transaction type resolver can't find transaction and/or contact for transaction ID ${transactionId}` ); }) ); diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 405ff80d6d..e60fcfa158 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -161,7 +161,7 @@ export class TransactionTypeUtils { static factory(transactionTypeIdentifier: string): TransactionType { const transactionType = getTransactionTypeClass(transactionTypeIdentifier); if (!transactionType) { - throw new Error(`Class transaction type of '${transactionTypeIdentifier}' is not found`); + throw new Error(`Fecfile: Class transaction type of '${transactionTypeIdentifier}' is not found`); } return new transactionType(); } From 1a3afee3daa10420e1ce4f3cc42be6ebf25e5050 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Fri, 17 Feb 2023 15:11:12 -0500 Subject: [PATCH 080/115] Switch setting value for negativeAmountValueOnly to transaction type config property rather than determining from schema --- .../transaction-type-base.component.ts | 23 ++++++++----------- .../shared/models/transaction-type.model.ts | 1 + .../OPERATING_EXPENDITURE_VOID.model.ts | 1 + .../OTHER_DISBURSEMENT_VOID.model.ts | 1 + .../transaction-types/PAC_RETURN.model.ts | 1 + .../transaction-types/PARTY_RETURN.model.ts | 1 + .../transaction-types/RETURN_RECEIPT.model.ts | 1 + ...STERED_RECEIPT_FROM_PERSON_RETURN.model.ts | 1 + .../transaction-group-a.component.html | 2 +- .../transaction-group-ag.component.html | 4 ++-- .../transaction-group-b.component.html | 2 +- .../transaction-group-c.component.html | 2 +- .../transaction-group-d.component.html | 2 +- .../transaction-group-e.component.html | 2 +- .../transaction-group-fg.component.html | 4 ++-- 15 files changed, 25 insertions(+), 23 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index c8de4c69d1..a5d879335c 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -36,7 +36,6 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy formSubmitted = false; memoItemHelpText = 'The dollar amount in a memo item is not incorporated into the total figure for the schedule.'; purposeDescriptionLabel = ''; - negativeAmountValueOnly = false; templateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; form: FormGroup = this.fb.group({}); @@ -73,19 +72,15 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } // Determine if amount should always be negative and then force it to be so if needed - if (this.templateMap?.amount) { - const amount_schema = this.transaction?.transactionType?.schema.properties[this.templateMap.amount]; - if (amount_schema?.exclusiveMaximum === 0) { - this.negativeAmountValueOnly = true; - this.form - .get(this.templateMap.amount) - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((amount) => { - if (+amount > 0) { - this.form.patchValue({ [this.templateMap.amount]: -1 * amount }); - } - }); - } + if (this.transaction?.transactionType?.negativeAmountValueOnly && this.templateMap?.amount) { + this.form + .get(this.templateMap.amount) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((amount) => { + if (+amount > 0) { + this.form.patchValue({ [this.templateMap.amount]: -1 * amount }); + } + }); } if (this.transaction?.transactionType?.generatePurposeDescriptionLabel) { diff --git a/front-end/src/app/shared/models/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-type.model.ts index bda391458c..e6bb3f78bc 100644 --- a/front-end/src/app/shared/models/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-type.model.ts @@ -12,6 +12,7 @@ export abstract class TransactionType { abstract componentGroupId: string; // Identifier of transaction component use to render UI form entry page abstract title: string; abstract schema: JsonSchema; // FEC validation JSON schema + negativeAmountValueOnly = false; // Set to true if the amount for the transaction can only have a negative value isDependentChild = false; // When set to true, the parent transaction of the transaction is used to generate UI form entry page dependentChildTransactionType?: TransactionType; // For double-entry transaction forms, this property defines the transaction type of the dependent child transaction updateParentOnSave = false; // Set to true when the parent transaction may be affected by a change in the transaction diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts index 6427fc3596..334eb800bf 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts @@ -10,6 +10,7 @@ export class OPERATING_EXPENDITURE_VOID extends SchBTransactionType { componentGroupId = 'B'; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_VOID); schema = schema; + override negativeAmountValueOnly = true; override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts index d61e7e0320..d14a0bcf71 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts @@ -10,6 +10,7 @@ export class OTHER_DISBURSEMENT_VOID extends SchBTransactionType { componentGroupId = 'B'; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID); schema = schema; + override negativeAmountValueOnly = true; override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts index d08b5b3171..72ad3deb6c 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts @@ -9,6 +9,7 @@ export class PAC_RETURN extends SchATransactionType { componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RETURN); schema = schema; + override negativeAmountValueOnly = true; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts index 84a0b6d7cb..d70c02f6c8 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts @@ -9,6 +9,7 @@ export class PARTY_RETURN extends SchATransactionType { componentGroupId = 'E'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RETURN); schema = schema; + override negativeAmountValueOnly = true; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts index 8b88cf22c1..6ac9dbbef7 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts @@ -10,6 +10,7 @@ export class RETURN_RECEIPT extends SchATransactionType { componentGroupId = 'C'; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.RETURNED_BOUNCED_RECEIPT_INDIVIDUAL); schema = schema; + override negativeAmountValueOnly = true; override contactTypeOptions = [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts index 1ef42b84ed..6375610e3b 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts @@ -12,6 +12,7 @@ export class UNREGISTERED_RECEIPT_FROM_PERSON_RETURN extends SchATransactionType ScheduleATransactionTypes.UNREGISTERED_RECEIPT_FROM_PERSON_RETURN ); schema = schema; + override negativeAmountValueOnly = true; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html index 9731df9150..4b6eb30687 100644 --- a/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html +++ b/front-end/src/app/transactions/transaction-group-a/transaction-group-a.component.html @@ -36,7 +36,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html index 9355cda0aa..93f568ff33 100644 --- a/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html +++ b/front-end/src/app/transactions/transaction-group-ag/transaction-group-ag.component.html @@ -50,7 +50,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

@@ -135,7 +135,7 @@

Receipt Information

[templateMap]="childTemplateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(childTransaction?.transactionType)" [contributionAmountReadOnly]="true" - [negativeAmountValueOnly]="childNegativeAmountValueOnly" + [negativeAmountValueOnly]="!!childTransaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html index fac46bc527..e6ab3fb8f1 100644 --- a/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html +++ b/front-end/src/app/transactions/transaction-group-b/transaction-group-b.component.html @@ -41,7 +41,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html index cb69560063..420cbf1835 100644 --- a/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html +++ b/front-end/src/app/transactions/transaction-group-c/transaction-group-c.component.html @@ -49,7 +49,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html index d74b0cf740..2ef239e79c 100644 --- a/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html +++ b/front-end/src/app/transactions/transaction-group-d/transaction-group-d.component.html @@ -36,7 +36,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html index 293015444f..de1ac8c0b4 100644 --- a/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html +++ b/front-end/src/app/transactions/transaction-group-e/transaction-group-e.component.html @@ -37,7 +37,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

diff --git a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html index dfab818109..0bc04b1112 100644 --- a/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html +++ b/front-end/src/app/transactions/transaction-group-fg/transaction-group-fg.component.html @@ -50,7 +50,7 @@

Receipt Information

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(transaction?.transactionType)" - [negativeAmountValueOnly]="negativeAmountValueOnly" + [negativeAmountValueOnly]="!!transaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

@@ -135,7 +135,7 @@

Receipt Information

[templateMap]="childTemplateMap" [memoCodeReadOnly]="isMemoCodeReadOnly(childTransaction?.transactionType)" [contributionAmountReadOnly]="true" - [negativeAmountValueOnly]="childNegativeAmountValueOnly" + [negativeAmountValueOnly]="!!childTransaction?.transactionType?.negativeAmountValueOnly" >

Additional Information

From f48047b905791297c5ec717fc1add54a9beb3854 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Sun, 19 Feb 2023 14:17:22 -0500 Subject: [PATCH 081/115] Fix unit test when schema does not exist --- front-end/src/app/shared/utils/transaction-type.utils.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/shared/utils/transaction-type.utils.spec.ts b/front-end/src/app/shared/utils/transaction-type.utils.spec.ts index 1c78f6fcf3..424ea117bc 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.spec.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.spec.ts @@ -8,6 +8,6 @@ describe('LabelUtils', () => { it('non-existing transaction type should throw an error', () => { expect(() => { TransactionTypeUtils.factory('DOES_NOT_EXIST'); - }).toThrow(new Error("Class transaction type of 'DOES_NOT_EXIST' is not found")); + }).toThrow(new Error("Fecfile: Class transaction type of 'DOES_NOT_EXIST' is not found")); }); }); From 2170cea1c252c7892e8131054af1038678be5aeb Mon Sep 17 00:00:00 2001 From: toddlees Date: Tue, 21 Feb 2023 11:30:32 -0500 Subject: [PATCH 082/115] WIP report actions --- .../report-list/report-list.component.html | 29 ++++++++++++------- .../report-list/report-list.component.ts | 8 +++++ front-end/src/app/reports/reports.module.ts | 4 +++ 3 files changed, 31 insertions(+), 10 deletions(-) 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 f081ad1ca3..e13f3a446d 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 @@ -59,7 +59,7 @@
Recent reports
- {{ item.form_type | label: f3xFormTypeLabels }} + {{ item.form_type | label : f3xFormTypeLabels }} {{ item.report_code_label }} Recent reports > {{ item.report_status }} - {{ item.form_type | label: f3xFormVerionLabels }} + {{ item.form_type | label : f3xFormVerionLabels }} {{ item.upload_submission?.created | fecDate }} - + + + + + + + + + + diff --git a/front-end/src/app/reports/report-list/report-list.component.ts b/front-end/src/app/reports/report-list/report-list.component.ts index d49ba353b9..f1b5883469 100644 --- a/front-end/src/app/reports/report-list/report-list.component.ts +++ b/front-end/src/app/reports/report-list/report-list.component.ts @@ -85,4 +85,12 @@ export class ReportListComponent extends TableListBaseComponent implemen public displayName(item: Report): string { return item.form_type; } + + public actionOptions(item: Report): any { + console.log(item); + return [ + { label: 'Edit report', action: this.editItem }, + { label: 'Download as .fec', action: this.goToTest }, + ]; + } } diff --git a/front-end/src/app/reports/reports.module.ts b/front-end/src/app/reports/reports.module.ts index 2ce3a1c0d1..e5bcea988b 100644 --- a/front-end/src/app/reports/reports.module.ts +++ b/front-end/src/app/reports/reports.module.ts @@ -9,6 +9,8 @@ import { CheckboxModule } from 'primeng/checkbox'; import { ConfirmDialogModule } from 'primeng/confirmdialog'; import { DividerModule } from 'primeng/divider'; import { DropdownModule } from 'primeng/dropdown'; +import { OverlayPanelModule } from 'primeng/overlaypanel'; +import { ListboxModule } from 'primeng/listbox'; import { InputTextModule } from 'primeng/inputtext'; import { InputTextareaModule } from 'primeng/inputtextarea'; import { ProgressSpinnerModule } from 'primeng/progressspinner'; @@ -60,6 +62,8 @@ import { InputNumberModule } from 'primeng/inputnumber'; ButtonModule, DividerModule, DropdownModule, + OverlayPanelModule, + ListboxModule, RadioButtonModule, CheckboxModule, InputTextModule, From 1f0f7c499ee8b7742befed2386a4565e4bf7b004 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Tue, 21 Feb 2023 12:29:00 -0500 Subject: [PATCH 083/115] Fix label for void of other disbursement --- front-end/src/app/shared/models/schb-transaction.model.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index 2721b32a9e..bbd3c32b6c 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -170,7 +170,7 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO, 'Reimbursement Corresponding Memo'], [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL, 'Payment to Payroll for Other Disbursements'], [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO, 'Payroll Memo'], - [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID, 'Void of Other Disbursements'], + [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID, 'Void of Other Disbursement'], [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_NON_CONTRIBUTION_ACCOUNT, 'Non-Contribution Account Disbursements'], [ ScheduleBTransactionTypes.OTHER_DISBURSEMENT_NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT, From 5689eeeeb9a49320d727f25b6fcf966b3a975a34 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 21 Feb 2023 14:46:34 -0500 Subject: [PATCH 084/115] 825 initial dev + local testing --- .../inputs/amount-input/amount-input.component.html | 8 +++++--- .../inputs/amount-input/amount-input.component.ts | 2 +- .../transaction-type-base.component.ts | 1 - front-end/src/app/shared/shared.module.ts | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html index 42afc298f2..cb31a59109 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html @@ -25,9 +25,11 @@ [falseValue]="false" [readonly]="memoCodeReadOnly" > -
- {{ memoItemHelpText }} -
+
diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts index d0bdc7ab64..b24c578c39 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts @@ -10,7 +10,7 @@ export class AmountInputComponent extends BaseInputComponent implements OnInit { @Input() memoCodeReadOnly = false; @Input() contributionAmountReadOnly = false; @Input() memoItemHelpText = - 'The dollar amount in a memo item is not incorporated into the total figure for the schedule.'; + 'The dollar amount in a memo item is not incorporated into the total figures for the schedule.'; @Input() negativeAmountValueOnly = false; @ViewChild('amountInput') amountInput!: InputNumber; diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index a5d879335c..e08a7aa6e8 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -34,7 +34,6 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy destroy$: Subject = new Subject(); contactId$: Subject = new BehaviorSubject(''); formSubmitted = false; - memoItemHelpText = 'The dollar amount in a memo item is not incorporated into the total figure for the schedule.'; purposeDescriptionLabel = ''; templateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; diff --git a/front-end/src/app/shared/shared.module.ts b/front-end/src/app/shared/shared.module.ts index c0ea4a0a2e..9b1f62ed83 100644 --- a/front-end/src/app/shared/shared.module.ts +++ b/front-end/src/app/shared/shared.module.ts @@ -29,12 +29,14 @@ import { LabelPipe } from './pipes/label.pipe'; import { LongDatePipe } from './pipes/long-date.pipe'; import { NavigationControlComponent } from './components/navigation-control/navigation-control/navigation-control.component'; import { NavigationControlBarComponent } from './components/navigation-control-bar/navigation-control-bar.component'; +import { TooltipModule } from 'primeng/tooltip'; @NgModule({ imports: [ CommonModule, ReactiveFormsModule, ButtonModule, + TooltipModule, DropdownModule, AutoCompleteModule, InputTextModule, From 6ab477f4cea118499c2dfcbffcce1bb08e8e2c48 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 21 Feb 2023 15:13:18 -0500 Subject: [PATCH 085/115] e2e test --- front-end/cypress/e2e/transactions/memo-code-checked.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/cypress/e2e/transactions/memo-code-checked.cy.ts b/front-end/cypress/e2e/transactions/memo-code-checked.cy.ts index fa9f424e7a..e742893524 100644 --- a/front-end/cypress/e2e/transactions/memo-code-checked.cy.ts +++ b/front-end/cypress/e2e/transactions/memo-code-checked.cy.ts @@ -47,7 +47,7 @@ describe('Tests that memos have the memo_code checkbox checked', () => { enterContact(transaction.contact, true, true); cy.medWait(); - cy.contains('The dollar amount in a memo item is not incorporated into the total figure for the schedule').should( + cy.contains('span', 'The dollar amount in a memo item is not incorporated into the total figures for the schedule').should( 'exist' ); cy.longWait(); From b4b2858457ee6900aac7b6cf22d5f996a5644a44 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 21 Feb 2023 16:38:56 -0500 Subject: [PATCH 086/115] 108 added unit tests --- .../contact-form/contact-form.component.ts | 2 +- .../contact-lookup.component.spec.ts | 56 ++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 6bced32173..674c61444d 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -207,7 +207,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { if (data.id) { this.fecApiService.getCandidateDetails(data.id).subscribe((candidate) => { // TODO: fix once we get info from api and set all names below properly - const nameSplit = candidate.name?.split(/,(.*)/s); + const nameSplit = candidate.name?.split(", "); this.form.get('type')?.setValue(ContactTypes.CANDIDATE); this.form.get('candidate_id')?.setValue(candidate.candidate_id); diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts index d2c41d801b..ade773a1b5 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts @@ -4,10 +4,11 @@ import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testin import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; import { + CandidateLookupResponse, CommitteeLookupResponse, Contact, ContactTypes, - FecApiCommitteeLookupData, FecfileCommitteeLookupData, + FecApiCommitteeLookupData, FecfileCandidateLookupData, FecfileCommitteeLookupData, FecfileIndividualLookupData, FecfileOrganizationLookupData, IndividualLookupResponse, @@ -64,6 +65,59 @@ describe('ContactLookupComponent', () => { expect(component.contactLookupList.length === 0).toBeTrue(); })); + it('#onDropdownSearch CAN undefined fec_api_candidates', fakeAsync(() => { + const testCandidateLookupResponse = new CandidateLookupResponse(); + testCandidateLookupResponse.fecfile_candidates = [ + { + id: 123, + first_name: 'testFirstName', + last_na2me: 'testLastName', + } as unknown as FecfileCandidateLookupData, + ]; + spyOn(testContactService, 'candidateLookup').and.returnValue(of(testCandidateLookupResponse)); + const testEvent = { query: 'hi' }; + component.contactTypeFormControl.setValue('CAN'); + component.onDropdownSearch(testEvent); + expect(component.contactLookupList[1].items.length === 0).toBeTrue(); + })); + + it('#onDropdownSearch CAN undefined fecfile_candidates', fakeAsync(() => { + const testCandidateLookupResponse = new CandidateLookupResponse(); + spyOn(testContactService, 'candidateLookup').and.returnValue(of(testCandidateLookupResponse)); + const testEvent = { query: 'hi' }; + component.contactTypeFormControl.setValue('CAN'); + component.onDropdownSearch(testEvent); + tick(500); + expect(component.contactLookupList[0].items.length === 0).toBeTrue(); + })); + + it('#onDropdownSearch CAN happy path', fakeAsync(() => { + const testCandidateLookupResponse = new CandidateLookupResponse(); + testCandidateLookupResponse.fecfile_candidates = [ + new FecfileCandidateLookupData({ + id: 123, + last_name: 'testLastName', + first_name: 'testFirstName', + type: ContactTypes.CANDIDATE, + } as unknown as FecfileCandidateLookupData), + ]; + spyOn(testContactService, 'candidateLookup').and.returnValue(of(testCandidateLookupResponse)); + const testEvent = { query: 'hi' }; + component.contactTypeFormControl.setValue('CAN'); + component.onDropdownSearch(testEvent); + tick(500); + expect( + JSON.stringify(component.contactLookupList) === JSON.stringify( + testCandidateLookupResponse.toSelectItemGroups(true)) + ).toBeTrue(); + expect( + JSON.stringify([ + { label: 'There are no matching candidates', items: [] }, + { label: 'There are no matching registered candidates', items: [] }, + ]) === JSON.stringify(new CandidateLookupResponse().toSelectItemGroups(true)) + ).toBeTrue(); + })); + it('#onDropdownSearch COM undefined fec_api_committees', fakeAsync(() => { const testCommitteeLookupResponse = new CommitteeLookupResponse(); testCommitteeLookupResponse.fecfile_committees = [ From 91f87d3c66c9a41a880a6e2dcf51e3158a902bd8 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 21 Feb 2023 16:56:26 -0500 Subject: [PATCH 087/115] 108 add unit tests --- .../contact-form.component.spec.ts | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index bbda6e43ba..646a1a8ca9 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -3,8 +3,9 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; +import { Candidate } from 'app/shared/models/candidate.model'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; -import { CandidateOfficeTypes, Contact, ContactTypes, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; +import { CandidateOfficeTypes, Contact, ContactTypes, FecApiCandidateLookupData, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; import { FecApiService } from 'app/shared/services/fec-api.service'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { DropdownModule } from 'primeng/dropdown'; @@ -133,6 +134,32 @@ describe('ContactFormComponent', () => { component.onContactLookupSelect({ value: testContact }); }); + it('#onContactLookupSelect FecApiCandidateLookupData happy path', () => { + const testId = 'P12345678' + const testOfficeSought = 'P'; + const testName = 'testName'; + const testAddressCity = 'testAddressCity'; + const testFecApiCandidateLookupData = new FecApiCandidateLookupData({ + id: testId, + office_sought: testOfficeSought, + name: testName + } as FecApiCandidateLookupData); + const testResponse = new Candidate(); + testResponse.candidate_id = testId; + testResponse.address_city = testAddressCity; + + spyOn(testFecApiService, 'getCandidateDetails').and.returnValue(of(testResponse)); + + component.onContactLookupSelect({ value: testFecApiCandidateLookupData }); + + expect(component.form.get('type')?.value).toBe(ContactTypes.CANDIDATE); + expect(component.form.get('candidate_id')?.value).toBe(testId); + expect(component.form.get('city')?.value).toBe(testAddressCity); + + component.form = new FormGroup({}); + component.onContactLookupSelect({ value: testFecApiCandidateLookupData }); + }); + it('#onContactLookupSelect FecApiCommitteeLookupData happy path', () => { const testId = 'C12345678' const testIsActive = true; From c5887b91df4e0348376e82102e166869f4c7bb5c Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 21 Feb 2023 17:03:08 -0500 Subject: [PATCH 088/115] 108 add more unit test --- .../shared/services/fec-api.service.spec.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/front-end/src/app/shared/services/fec-api.service.spec.ts b/front-end/src/app/shared/services/fec-api.service.spec.ts index ee736e2dbc..ccf2abbb94 100644 --- a/front-end/src/app/shared/services/fec-api.service.spec.ts +++ b/front-end/src/app/shared/services/fec-api.service.spec.ts @@ -5,6 +5,7 @@ import { FecApiPaginatedResponse } from 'app/shared/models/fec-api.model'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; import { environment } from 'environments/environment'; import { FecFiling } from '../models/fec-filing.model'; +import { Candidate } from '../models/candidate.model'; describe('FecApiService', () => { let httpTestingController: HttpTestingController; @@ -22,6 +23,33 @@ describe('FecApiService', () => { expect(service).toBeTruthy(); }); + describe('#getCandidateDetails()', () => { + it('should return candidate details', () => { + const candidate: Candidate = new Candidate(); + const response: FecApiPaginatedResponse = { + api_version: '1.0', + pagination: { + page: 1, + per_page: 20, + count: 1, + pages: 1, + }, + results: [candidate], + }; + + service.getCandidateDetails('P12345678').subscribe((candidateData) => { + expect(candidateData).toEqual(candidate); + }); + + const req = httpTestingController.expectOne( + 'https://api.open.fec.gov/v1/candidate/P12345678/?api_key=' + environment.fecApiKey + ); + + expect(req.request.method).toEqual('GET'); + req.flush(response); + }); + }); + describe('#getCommitteeDetails()', () => { it('should return committee details', () => { const committeeAccount: CommitteeAccount = new CommitteeAccount(); From a9f7f27c38f139a7048fd27eba6894c67a2fb91b Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 22 Feb 2023 09:22:40 -0500 Subject: [PATCH 089/115] 108 testing fix --- .../shared/components/contact-lookup/contact-lookup.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index fddff7faff..f2a13d5c52 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -85,6 +85,7 @@ export class ContactLookupComponent { // eslint-disable-next-line @typescript-eslint/no-explicit-any onContactLookupSelect(event: any) { this.contactLookupSelect.emit(event); + this.contactLookupForm.patchValue({ selectedContact: '' }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any From 986e95530173215045bb45e5afdff9904e31ac97 Mon Sep 17 00:00:00 2001 From: Elaine Krauss Date: Wed, 22 Feb 2023 09:51:00 -0500 Subject: [PATCH 090/115] Updates the description label for scha transactions --- front-end/src/app/shared/models/scha-transaction-type.model.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/src/app/shared/models/scha-transaction-type.model.ts b/front-end/src/app/shared/models/scha-transaction-type.model.ts index d65badb990..78b0c331a5 100644 --- a/front-end/src/app/shared/models/scha-transaction-type.model.ts +++ b/front-end/src/app/shared/models/scha-transaction-type.model.ts @@ -25,7 +25,7 @@ export abstract class SchATransactionType extends TransactionType { amount: 'contribution_amount', aggregate: 'contribution_aggregate', purpose_description: 'contribution_purpose_descrip', - purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', + purposeDescripLabel: 'PURPOSE OF RECEIPT', memo_text_input: 'memo_text_input', category_code: '', }; From ecf0c3af1c2423277658414aa7af338e7e1e440e Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 22 Feb 2023 15:10:59 -0500 Subject: [PATCH 091/115] report action options --- .../report-list/report-list.component.html | 26 +++++++++---------- .../report-list/report-list.component.ts | 16 ++++++------ front-end/src/styles.scss | 11 ++++++++ 3 files changed, 32 insertions(+), 21 deletions(-) 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 e13f3a446d..d05af34c25 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 @@ -70,20 +70,20 @@
Recent reports
{{ item.form_type | label : f3xFormVerionLabels }} {{ item.upload_submission?.created | fecDate }} - + - - - - - - +
  • + +
  • implemen report_id: undefined, value: undefined, }; + public actionOptions: any = [ + { label: 'Edit report', action: this.editItem.bind(this) }, + { label: 'Download as .fec', action: this.goToTest.bind(this) }, + ]; private destroy$ = new Subject(); constructor( @@ -77,6 +81,10 @@ export class ReportListComponent extends TableListBaseComponent implemen this.router.navigateByUrl(`/transactions/report/${item.id}/create`); } + public onActionClick(action: any, report: Report) { + action.action(report); + } + /** * Get the display name for the contact to show in the table column. * @param item @@ -85,12 +93,4 @@ export class ReportListComponent extends TableListBaseComponent implemen public displayName(item: Report): string { return item.form_type; } - - public actionOptions(item: Report): any { - console.log(item); - return [ - { label: 'Edit report', action: this.editItem }, - { label: 'Download as .fec', action: this.goToTest }, - ]; - } } diff --git a/front-end/src/styles.scss b/front-end/src/styles.scss index eff8a2e20a..ea7fd29946 100644 --- a/front-end/src/styles.scss +++ b/front-end/src/styles.scss @@ -273,3 +273,14 @@ label.disabled { color: black; border: 1px solid black; } + +.action-options { + padding: 0; +} +.action-options .p-overlaypanel-content { + padding: .5em; +} +.action-options .p-overlaypanel-content .p-button { + width: 100%; + text-align: inherit; +} \ No newline at end of file From 65c519ac087516cb47b8c1b3341f516adc114c12 Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 22 Feb 2023 15:23:42 -0500 Subject: [PATCH 092/115] conditional action options --- .../reports/report-list/report-list.component.html | 1 + .../app/reports/report-list/report-list.component.ts | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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 d05af34c25..4d9e0b4cc1 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 @@ -74,6 +74,7 @@
    Recent reports
  • -
  • +
      +
    • + +
    • +
    { let component: ReportListComponent; @@ -49,9 +50,15 @@ describe('ReportListComponent', () => { it('#editItem should route properly', () => { const navigateSpy = spyOn(router, 'navigateByUrl'); - - component.editItem({ id: '999' } as F3xSummary); + component.editItem({ id: '999' } as F3xSummary); // 999 is the cash on hand report expect(navigateSpy).toHaveBeenCalledWith('/reports/f3x/create/cash-on-hand/999'); + component.editItem({ id: '888' } as F3xSummary); + expect(navigateSpy).toHaveBeenCalledWith('/transactions/report/888/list'); + component.editItem({ + id: '777', + upload_submission: UploadSubmission.fromJSON({ fec_status: 'ACCEPTED' }), + } as F3xSummary); + expect(navigateSpy).toHaveBeenCalledWith('/reports/f3x/submit/status/777'); }); it('#displayName should display the item form_type code', () => { diff --git a/front-end/src/app/shared/components/table-list-base/table-list-base.component.ts b/front-end/src/app/shared/components/table-list-base/table-list-base.component.ts index d323f210ae..96f95068db 100644 --- a/front-end/src/app/shared/components/table-list-base/table-list-base.component.ts +++ b/front-end/src/app/shared/components/table-list-base/table-list-base.component.ts @@ -190,8 +190,7 @@ export class RowAction { label: string; action: (item?: any) => void; // eslint-disable-line @typescript-eslint/no-explicit-any isAvailable: (item?: any) => boolean = () => true; // eslint-disable-line @typescript-eslint/no-explicit-any - constructor(label: string, action: (item?: any) => void, isAvailable?: (item?: any) => boolean) { - // eslint-disable-line @typescript-eslint/no-explicit-any + constructor(label: string, action: (item?: any) => void, isAvailable?: (item?: any) => boolean) { // eslint-disable-line @typescript-eslint/no-explicit-any this.label = label; this.action = action; this.isAvailable = isAvailable || this.isAvailable; From bb0e28cbf8bacfdeaab5f8ce92eac4a35fe5d540 Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 22 Feb 2023 16:36:43 -0500 Subject: [PATCH 097/115] fix unit test --- .../reports/form-type-dialog/form-type-dialog.component.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts index a050fb6546..1f7e85349e 100644 --- a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts +++ b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.spec.ts @@ -17,6 +17,7 @@ describe('FormTypeDialogComponent', () => { }).compileComponents(); fixture = TestBed.createComponent(FormTypeDialogComponent); + router = TestBed.inject(Router); component = fixture.componentInstance; fixture.detectChanges(); }); From 61782fb1f7680dde751d3e4be7c72055bea59855 Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 22 Feb 2023 16:38:51 -0500 Subject: [PATCH 098/115] get rid of unused method --- .../src/app/reports/report-list/report-list.component.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/front-end/src/app/reports/report-list/report-list.component.ts b/front-end/src/app/reports/report-list/report-list.component.ts index 350b98a65b..11def105d2 100644 --- a/front-end/src/app/reports/report-list/report-list.component.ts +++ b/front-end/src/app/reports/report-list/report-list.component.ts @@ -69,10 +69,6 @@ export class ReportListComponent extends TableListBaseComponent implemen this.router.navigateByUrl(`/reports/f3x/test-dot-fec/${item.id}`); } - public createTransaction(item: Report): void { - this.router.navigateByUrl(`/transactions/report/${item.id}/create`); - } - /** * Get the display name for the contact to show in the table column. * @param item From 324ef7ee36470640e838237e8b6facf5d625d53e Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 22 Feb 2023 16:42:46 -0500 Subject: [PATCH 099/115] get rid of unused method --- .../src/app/reports/report-list/report-list.component.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/front-end/src/app/reports/report-list/report-list.component.ts b/front-end/src/app/reports/report-list/report-list.component.ts index 6abdebb410..a66c69533f 100644 --- a/front-end/src/app/reports/report-list/report-list.component.ts +++ b/front-end/src/app/reports/report-list/report-list.component.ts @@ -86,10 +86,6 @@ export class ReportListComponent extends TableListBaseComponent implemen this.router.navigateByUrl(`/reports/f3x/test-dot-fec/${item.id}`); } - public createTransaction(item: Report): void { - this.router.navigateByUrl(`/transactions/report/${item.id}/create`); - } - public onActionClick(action: RowAction, report: Report) { action.action(report); } From 98c3c7ea3f868171f091eac32543b4a3669295ec Mon Sep 17 00:00:00 2001 From: toddlees Date: Wed, 22 Feb 2023 16:53:30 -0500 Subject: [PATCH 100/115] more coverage --- .../reports/report-list/report-list.component.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/front-end/src/app/reports/report-list/report-list.component.spec.ts b/front-end/src/app/reports/report-list/report-list.component.spec.ts index d0aac02fcd..00c1803e5a 100644 --- a/front-end/src/app/reports/report-list/report-list.component.spec.ts +++ b/front-end/src/app/reports/report-list/report-list.component.spec.ts @@ -12,6 +12,7 @@ import { Report } from '../../shared/interfaces/report.interface'; import { RouterTestingModule } from '@angular/router/testing'; import { Router } from '@angular/router'; import { UploadSubmission } from 'app/shared/models/upload-submission.model'; +import { RowAction } from 'app/shared/components/table-list-base/table-list-base.component'; describe('ReportListComponent', () => { let component: ReportListComponent; @@ -61,6 +62,14 @@ describe('ReportListComponent', () => { expect(navigateSpy).toHaveBeenCalledWith('/reports/f3x/submit/status/777'); }); + it('#onActionClick should route properly', () => { + const navigateSpy = spyOn(router, 'navigateByUrl'); + component.onActionClick(new RowAction('', component.editItem.bind(component)), { id: '888' } as F3xSummary); + expect(navigateSpy).toHaveBeenCalledWith('/transactions/report/888/list'); + component.onActionClick(new RowAction('', component.goToTest.bind(component)), { id: '888' } as F3xSummary); + expect(navigateSpy).toHaveBeenCalledWith('/reports/f3x/test-dot-fec/888'); + }); + it('#displayName should display the item form_type code', () => { const item: Report = F3xSummary.fromJSON({ form_type: F3xFormTypes.F3XT }); const name: string = component.displayName(item); From 2e6e4cd3a1d44fed8d0b9e6f1556bfb9354acc8c Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 23 Feb 2023 12:05:22 -0500 Subject: [PATCH 101/115] 876 add transaction-type-id to validated data --- .../transaction-type-base.component.ts | 3 +- .../app/shared/services/validate.service.ts | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index a5d879335c..000376b3f1 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -52,7 +52,8 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ) {} ngOnInit(): void { - this.form = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); + this.form = this.fb.group(this.validateService.getFormGroupFields( + this.formProperties, this.transaction)); if (this.transaction?.transactionType?.templateMap) { this.templateMap = this.transaction.transactionType.templateMap; } else { diff --git a/front-end/src/app/shared/services/validate.service.ts b/front-end/src/app/shared/services/validate.service.ts index cbf3f0e355..e5cc741010 100644 --- a/front-end/src/app/shared/services/validate.service.ts +++ b/front-end/src/app/shared/services/validate.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@angular/core'; import { FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; import { validate, ValidationError } from 'fecfile-validate'; import { JsonSchema } from '../interfaces/json-schema.interface'; +import { Transaction } from '../models/transaction.model'; import { DateUtils } from '../utils/date.utils'; @Injectable({ @@ -50,9 +51,9 @@ export class ValidateService { * @param {string[]} properties * @returns data structure to pass to the FormBuilder group() method */ - getFormGroupFields(properties: string[]) { + getFormGroupFields(properties: string[], transaction?: Transaction) { const group: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - properties.forEach((property) => (group[property] = ['', [this.formValidator(property)]])); + properties.forEach((property) => (group[property] = ['', [this.formValidator(property, transaction)]])); return group; } @@ -80,6 +81,21 @@ export class ValidateService { return formValues; } + /** + * + * @param transaction Transaction object to get values from. + * This method returns "non-form" values that may be required + * for validation of form fields. + */ + getNonFormValues(transaction?: Transaction) { + const values: any = {}; + if (transaction) { + values['transaction_type_identifier'] = + transaction.transaction_type_identifier; + } + return values; + } + /** * Convert the form input value to the appropriate type. * @param {string} property @@ -120,15 +136,18 @@ export class ValidateService { * @param {string} property - name of form property to validate * @returns {ValidationErrors | undefined} */ - formValidator(property: string): ValidatorFn { + formValidator(property: string, transaction?: Transaction): ValidatorFn { return (): ValidationErrors | null => { if (!this.formValidatorSchema || !this.formValidatorForm) { return null; } - + const data = { + ...this.getFormValues(this.formValidatorForm), + ...this.getNonFormValues(transaction) + } const errors: ValidationError[] = this.validate( this.formValidatorSchema, - this.getFormValues(this.formValidatorForm), + data, [property] ); From 9b1bc17dbf314d6ac3455cb8a0ebab785cd7b45b Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 23 Feb 2023 14:16:16 -0500 Subject: [PATCH 102/115] Moved form-type style to styles.scss file --- .../form-type-dialog/form-type-dialog.component.scss | 0 .../reports/form-type-dialog/form-type-dialog.component.ts | 1 - front-end/src/assets/styles/theme.css | 7 ------- front-end/src/styles.scss | 7 +++++++ 4 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 front-end/src/app/reports/form-type-dialog/form-type-dialog.component.scss diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.scss b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts index e582e7972f..7b08519775 100644 --- a/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts +++ b/front-end/src/app/reports/form-type-dialog/form-type-dialog.component.ts @@ -5,7 +5,6 @@ import { FormType, FORM_TYPES, FormTypes } from 'app/shared/utils/form-type.util @Component({ selector: 'app-form-type-dialog', templateUrl: './form-type-dialog.component.html', - styleUrls: ['./form-type-dialog.component.scss'], }) export class FormTypeDialogComponent { @Input() visible = false; diff --git a/front-end/src/assets/styles/theme.css b/front-end/src/assets/styles/theme.css index da4e41fd2f..b5e0c21f31 100644 --- a/front-end/src/assets/styles/theme.css +++ b/front-end/src/assets/styles/theme.css @@ -4649,13 +4649,6 @@ p-treeselect.p-treeselect-clearable .p-treeselect-clear-icon { margin-left: 1rem; } -.form-type-dialog{ - width: 50%; -} -.form-type-dialog p-dropdown{ - display: flex; -} - .p-overlaypanel { background: #ffffff; color: #212121; diff --git a/front-end/src/styles.scss b/front-end/src/styles.scss index eff8a2e20a..9f8f792f0b 100644 --- a/front-end/src/styles.scss +++ b/front-end/src/styles.scss @@ -130,6 +130,13 @@ label.disabled { font-size: 48px; } +.form-type-dialog { + width: 50%; +} +.form-type-dialog p-dropdown { + display: flex; +} + // PRIMENG PANELMENU STYLE OVERRIDE .menu-item-disabled { From 973c57dae6f113af5ae04477e1da4a24780d87b9 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Thu, 23 Feb 2023 16:47:14 -0500 Subject: [PATCH 103/115] initial dev --- .../contact-detail.component.ts | 20 ++-- .../create-workflow/cash-on-hand.component.ts | 21 ++-- .../create-f3x-step1.component.ts | 30 +++-- .../report-level-memo.component.ts | 17 +-- .../submit-f3x-step1.component.spec.ts | 16 ++- .../submit-f3x-step1.component.ts | 27 ++--- .../submit-f3x-step2.component.spec.ts | 20 ++-- .../submit-f3x-step2.component.ts | 33 +++--- .../contact-form.component.spec.ts | 12 -- .../contact-form/contact-form.component.ts | 50 +++------ .../contact-lookup.component.ts | 31 ++---- .../error-messages.component.spec.ts | 20 ++-- ...le-transaction-type-base.component.spec.ts | 8 +- .../double-transaction-type-base.component.ts | 10 +- .../transaction-form.utils.ts | 18 +-- .../transaction-type-base.component.spec.ts | 2 - .../transaction-type-base.component.ts | 17 ++- .../app/shared/models/transaction.model.ts | 4 +- .../shared/services/contact.service.spec.ts | 14 ++- .../app/shared/services/contact.service.ts | 27 ++++- .../shared/services/validate.service.spec.ts | 104 ------------------ .../app/shared/utils/validate.utils.spec.ts | 104 ++++++++++++++++++ .../validate.utils.ts} | 81 +++++++------- 23 files changed, 328 insertions(+), 358 deletions(-) delete mode 100644 front-end/src/app/shared/services/validate.service.spec.ts create mode 100644 front-end/src/app/shared/utils/validate.utils.spec.ts rename front-end/src/app/shared/{services/validate.service.ts => utils/validate.utils.ts} (69%) diff --git a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts index 762441f672..64076c9770 100644 --- a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts +++ b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts @@ -1,7 +1,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { ContactService } from 'app/shared/services/contact.service'; -import { ValidateService } from 'app/shared/services/validate.service'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; @@ -36,12 +36,12 @@ export class ContactDetailComponent { formSubmitted = false; form: FormGroup = this.fb.group( - this.validateService.getFormGroupFields([ + ValidateUtils.getFormGroupFields([ ...new Set([ - ...ValidateService.getSchemaProperties(contactIndividualSchema), - ...ValidateService.getSchemaProperties(contactCandidateSchema), - ...ValidateService.getSchemaProperties(contactCommitteeSchema), - ...ValidateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateUtils.getSchemaProperties(contactIndividualSchema), + ...ValidateUtils.getSchemaProperties(contactCandidateSchema), + ...ValidateUtils.getSchemaProperties(contactCommitteeSchema), + ...ValidateUtils.getSchemaProperties(contactOrganizationSchema), ]), ]) ); @@ -49,9 +49,8 @@ export class ContactDetailComponent { constructor( private messageService: MessageService, private contactService: ContactService, - private validateService: ValidateService, private fb: FormBuilder - ) {} + ) { } public onOpenDetail() { this.resetForm(); @@ -65,7 +64,10 @@ export class ContactDetailComponent { return; } - const payload: Contact = Contact.fromJSON({ ...this.contact, ...this.validateService.getFormValues(this.form) }); + const payload: Contact = Contact.fromJSON({ + ...this.contact, + ...ValidateUtils.getFormValues(this.form) + }); if (payload.id) { this.contactService.update(payload).subscribe(() => { diff --git a/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts b/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts index 6a0b607466..6fd1458c62 100644 --- a/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts +++ b/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts @@ -1,15 +1,15 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { Subject, takeUntil } from 'rxjs'; +import { Router } from '@angular/router'; import { Store } from '@ngrx/store'; -import { setCashOnHandAction } from 'app/store/cash-on-hand.actions'; -import { MessageService } from 'primeng/api'; -import { ValidateService } from 'app/shared/services/validate.service'; -import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { F3xSummaryService } from 'app/shared/services/f3x-summary.service'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { selectActiveReport } from 'app/store/active-report.selectors'; +import { setCashOnHandAction } from 'app/store/cash-on-hand.actions'; +import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; +import { MessageService } from 'primeng/api'; +import { Subject, takeUntil } from 'rxjs'; @Component({ selector: 'app-cash-on-hand', @@ -20,16 +20,15 @@ export class CashOnHandComponent implements OnInit, OnDestroy { formProperties: string[] = ['L6a_cash_on_hand_jan_1_ytd', 'cash_on_hand_date']; report: F3xSummary | undefined; formSubmitted = false; - form: FormGroup = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); + form: FormGroup = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); constructor( public router: Router, private f3xSummaryService: F3xSummaryService, - private validateService: ValidateService, private fb: FormBuilder, private messageService: MessageService, private store: Store - ) {} + ) { } ngOnInit(): void { this.store @@ -38,8 +37,6 @@ export class CashOnHandComponent implements OnInit, OnDestroy { .subscribe((report) => (this.report = report as F3xSummary)); // Initialize validation tracking of current JSON schema and form data - this.validateService.formValidatorSchema = f3xSchema; - this.validateService.formValidatorForm = this.form; this.form.controls['L6a_cash_on_hand_jan_1_ytd'].addValidators([Validators.required]); this.form.controls['cash_on_hand_date'].addValidators([Validators.required]); @@ -61,7 +58,7 @@ export class CashOnHandComponent implements OnInit, OnDestroy { const payload: F3xSummary = F3xSummary.fromJSON({ ...this.report, - ...this.validateService.getFormValues(this.form, this.formProperties), + ...ValidateUtils.getFormValues(this.form, this.formProperties, f3xSchema), ...{ cash_on_hand_date: this.form.controls['cash_on_hand_date'].value, L6a_year_for_above_ytd: String(this.form.controls['cash_on_hand_date'].value.getYear() + 1900), diff --git a/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts b/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts index 3521796a8f..0917dd9d93 100644 --- a/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts +++ b/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts @@ -1,20 +1,11 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { AbstractControl, FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms'; -import { Router, ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { Store } from '@ngrx/store'; import { F3xCoverageDates, F3xFormTypes, F3xSummary } from 'app/shared/models/f3x-summary.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { F3xSummaryService } from 'app/shared/services/f3x-summary.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; -import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; -import { selectActiveReport } from 'app/store/active-report.selectors'; -import { environment } from 'environments/environment'; -import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; -import { MessageService } from 'primeng/api'; -import { Subject, switchMap, of, takeUntil, zip, map, combineLatest, startWith } from 'rxjs'; -import { ReportService } from '../../../shared/services/report.service'; -import { selectCashOnHand } from '../../../store/cash-on-hand.selectors'; import { electionReportCodes, F3xReportCodes, @@ -23,8 +14,17 @@ import { monthlyElectionYearReportCodes, monthlyNonElectionYearReportCodes, quarterlyElectionYearReportCodes, - quarterlyNonElectionYearReportCodes, + quarterlyNonElectionYearReportCodes } from 'app/shared/utils/report-code.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; +import { selectActiveReport } from 'app/store/active-report.selectors'; +import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; +import { environment } from 'environments/environment'; +import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; +import { MessageService } from 'primeng/api'; +import { combineLatest, map, of, startWith, Subject, switchMap, takeUntil, zip } from 'rxjs'; +import { ReportService } from '../../../shared/services/report.service'; +import { selectCashOnHand } from '../../../store/cash-on-hand.selectors'; @Component({ selector: 'app-create-f3x-step1', @@ -46,14 +46,13 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { stateOptions: PrimeOptions = []; formSubmitted = false; - form: FormGroup = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); + form: FormGroup = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); readonly F3xReportTypeCategories = F3xReportTypeCategories; public f3xCoverageDatesList: F3xCoverageDates[] | undefined; constructor( private store: Store, - private validateService: ValidateService, private fecDatePipe: FecDatePipe, private fb: FormBuilder, private f3xSummaryService: F3xSummaryService, @@ -132,8 +131,6 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { }); // Initialize validation tracking of current JSON schema and form data - this.validateService.formValidatorSchema = f3xSchema; - this.validateService.formValidatorForm = this.form; this.form.addValidators(this.buildCoverageDatesValidator()); } @@ -245,7 +242,8 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { return; } - const summary: F3xSummary = F3xSummary.fromJSON(this.validateService.getFormValues(this.form, this.formProperties)); + const summary: F3xSummary = F3xSummary.fromJSON(ValidateUtils.getFormValues( + this.form, this.formProperties, f3xSchema)); // If a termination report, set the form_type appropriately. if (summary.report_code === F3xReportCodes.TER) { 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 cebaf8cf98..5cc5fea68e 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,16 +1,16 @@ -import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { 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'; 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 { ValidateUtils } from 'app/shared/utils/validate.utils'; import { selectActiveReport } from 'app/store/active-report.selectors'; +import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; import { schema as textSchema } from 'fecfile-validate/fecfile_validate_js/dist/Text'; import { MessageService } from 'primeng/api'; +import { Subject, takeUntil } from 'rxjs'; @Component({ selector: 'app-report-level-memo', @@ -41,7 +41,6 @@ export class ReportLevelMemoComponent implements OnInit, OnDestroy { constructor( private store: Store, - protected validateService: ValidateService, protected fb: FormBuilder, public router: Router, public memoTextService: MemoTextService, @@ -54,11 +53,7 @@ export class ReportLevelMemoComponent implements OnInit, OnDestroy { 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.form = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); this.store .select(selectCommitteeAccount) @@ -95,7 +90,7 @@ export class ReportLevelMemoComponent implements OnInit, OnDestroy { const payload: MemoText = MemoText.fromJSON({ ...this.assignedMemoText, - ...this.validateService.getFormValues(this.form, this.formProperties), + ...ValidateUtils.getFormValues(this.form, this.formProperties, textSchema), }); payload.report_id = this.report.id; diff --git a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.spec.ts b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.spec.ts index c2d4c83fbd..1c73275112 100644 --- a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.spec.ts +++ b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step1.component.spec.ts @@ -1,21 +1,20 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { of } from 'rxjs'; import { MessageService, SharedModule } from 'primeng/api'; -import { DividerModule } from 'primeng/divider'; import { CheckboxModule } from 'primeng/checkbox'; +import { DividerModule } from 'primeng/divider'; import { RadioButtonModule } from 'primeng/radiobutton'; -import { SubmitF3xStep1Component } from './submit-f3x-step1.component'; -import { F3xSummary } from 'app/shared/models/f3x-summary.model'; +import { of } from 'rxjs'; import { CommitteeAccount } from '../../../shared/models/committee-account.model'; -import { ValidateService } from '../../../shared/services/validate.service'; import { F3xSummaryService } from '../../../shared/services/f3x-summary.service'; import { ReportsModule } from '../../reports.module'; +import { SubmitF3xStep1Component } from './submit-f3x-step1.component'; describe('SubmitF3xStep1Component', () => { let component: SubmitF3xStep1Component; @@ -37,7 +36,6 @@ describe('SubmitF3xStep1Component', () => { ], declarations: [SubmitF3xStep1Component], providers: [ - ValidateService, FormBuilder, F3xSummaryService, MessageService, 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 be6f0aa6f6..240a9117b2 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 @@ -1,17 +1,17 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; import { FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; -import { Observable, Subject, takeUntil } from 'rxjs'; +import { Router } from '@angular/router'; import { Store } from '@ngrx/store'; -import { MessageService } from 'primeng/api'; -import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; -import { selectActiveReport } from 'app/store/active-report.selectors'; -import { LabelUtils, PrimeOptions, StatesCodeLabels, CountryCodeLabels } from 'app/shared/utils/label.utils'; -import { ValidateService } from 'app/shared/services/validate.service'; -import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; +import { CommitteeAccount } from 'app/shared/models/committee-account.model'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { F3xSummaryService } from 'app/shared/services/f3x-summary.service'; -import { CommitteeAccount } from 'app/shared/models/committee-account.model'; +import { CountryCodeLabels, LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; +import { selectActiveReport } from 'app/store/active-report.selectors'; +import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; +import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; +import { MessageService } from 'primeng/api'; +import { Observable, Subject, takeUntil } from 'rxjs'; @Component({ selector: 'app-submit-f3x-step1', @@ -34,16 +34,15 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { formSubmitted = false; destroy$: Subject = new Subject(); committeeAccount$: Observable = this.store.select(selectCommitteeAccount); - form: FormGroup = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); + form: FormGroup = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); constructor( public router: Router, private f3xSummaryService: F3xSummaryService, - private validateService: ValidateService, private fb: FormBuilder, private store: Store, private messageService: MessageService - ) {} + ) { } ngOnInit(): void { this.stateOptions = LabelUtils.getPrimeOptions(StatesCodeLabels); @@ -60,8 +59,6 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { .subscribe((committeeAccount) => this.setDefaultFormValues(committeeAccount)); // Initialize validation tracking of current JSON schema and form data - this.validateService.formValidatorSchema = f3xSchema; - this.validateService.formValidatorForm = this.form; this.form.controls['confirmation_email_1'].addValidators([ Validators.required, Validators.maxLength(44), @@ -146,7 +143,7 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { } else { addressFields = { change_of_address: true, - ...this.validateService.getFormValues(this.form, this.formProperties), + ...ValidateUtils.getFormValues(this.form, this.formProperties, f3xSchema), }; } diff --git a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.spec.ts b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.spec.ts index d157943475..10e2c5c1e8 100644 --- a/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.spec.ts +++ b/front-end/src/app/reports/f3x/submission-workflow/submit-f3x-step2.component.spec.ts @@ -1,22 +1,21 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { Router, ActivatedRoute } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; -import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { of } from 'rxjs'; -import { MessageService, SharedModule, ConfirmationService } from 'primeng/api'; -import { DividerModule } from 'primeng/divider'; +import { ConfirmationService, MessageService, SharedModule } from 'primeng/api'; import { CheckboxModule } from 'primeng/checkbox'; +import { DividerModule } from 'primeng/divider'; import { RadioButtonModule } from 'primeng/radiobutton'; -import { SubmitF3xStep2Component } from './submit-f3x-step2.component'; -import { F3xSummary } from 'app/shared/models/f3x-summary.model'; +import { of } from 'rxjs'; import { CommitteeAccount } from '../../../shared/models/committee-account.model'; -import { ValidateService } from '../../../shared/services/validate.service'; import { F3xSummaryService } from '../../../shared/services/f3x-summary.service'; -import { ReportsModule } from '../../reports.module'; import { ReportService } from '../../../shared/services/report.service'; +import { ReportsModule } from '../../reports.module'; +import { SubmitF3xStep2Component } from './submit-f3x-step2.component'; describe('SubmitF3xStep2Component', () => { let component: SubmitF3xStep2Component; @@ -39,7 +38,6 @@ describe('SubmitF3xStep2Component', () => { ], declarations: [SubmitF3xStep2Component], providers: [ - ValidateService, FormBuilder, F3xSummaryService, MessageService, 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 ef85e7029f..da55a47f39 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 @@ -1,20 +1,20 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { Observable, Subject, takeUntil } from 'rxjs'; +import { Router } from '@angular/router'; import { Store } from '@ngrx/store'; -import { ConfirmationService, MessageService } from 'primeng/api'; -import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; -import { selectCashOnHand } from 'app/store/cash-on-hand.selectors'; -import { selectActiveReport } from 'app/store/active-report.selectors'; import { CashOnHand } from 'app/shared/interfaces/report.interface'; -import { LabelUtils, PrimeOptions, StatesCodeLabels, CountryCodeLabels } from 'app/shared/utils/label.utils'; -import { ValidateService } from 'app/shared/services/validate.service'; -import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; -import { F3xSummary } from 'app/shared/models/f3x-summary.model'; -import { F3xSummaryService } from 'app/shared/services/f3x-summary.service'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; +import { F3xSummary } from 'app/shared/models/f3x-summary.model'; import { ApiService } from 'app/shared/services/api.service'; +import { F3xSummaryService } from 'app/shared/services/f3x-summary.service'; +import { CountryCodeLabels, LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; +import { selectActiveReport } from 'app/store/active-report.selectors'; +import { selectCashOnHand } from 'app/store/cash-on-hand.selectors'; +import { selectCommitteeAccount } from 'app/store/committee-account.selectors'; +import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; +import { ConfirmationService, MessageService } from 'primeng/api'; +import { Observable, Subject, takeUntil } from 'rxjs'; import { ReportService } from '../../../shared/services/report.service'; @Component({ @@ -37,7 +37,7 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { formSubmitted = false; destroy$: Subject = new Subject(); committeeAccount$: Observable = this.store.select(selectCommitteeAccount); - form: FormGroup = this.fb.group(this.validateService.getFormGroupFields(this.formProperties)); + form: FormGroup = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); loading: 0 | 1 | 2 = 0; cashOnHand: CashOnHand = { report_id: undefined, @@ -47,14 +47,13 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { constructor( public router: Router, private f3xSummaryService: F3xSummaryService, - private validateService: ValidateService, private fb: FormBuilder, private store: Store, private messageService: MessageService, protected confirmationService: ConfirmationService, private apiService: ApiService, private reportService: ReportService - ) {} + ) { } ngOnInit(): void { this.stateOptions = LabelUtils.getPrimeOptions(StatesCodeLabels); @@ -76,9 +75,7 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { .subscribe((cashOnHand: CashOnHand) => (this.cashOnHand = cashOnHand)); // Initialize validation tracking of current JSON schema and form data - this.validateService.formValidatorSchema = f3xSchema; - this.validateService.formValidatorForm = this.form; - this.form.controls['filing_password'].addValidators(this.validateService.passwordValidator()); + this.form.controls['filing_password'].addValidators(ValidateUtils.passwordValidator()); this.form.controls['truth_statement'].addValidators(Validators.requiredTrue); } @@ -167,7 +164,7 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { this.loading = 1; const payload: F3xSummary = F3xSummary.fromJSON({ ...this.report, - ...this.validateService.getFormValues(this.form, this.formProperties), + ...ValidateUtils.getFormValues(this.form, this.formProperties, f3xSchema), }); return this.f3xSummaryService.update(payload, this.formProperties); diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index 1e95dc1dad..05d2b7461f 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -2,7 +2,6 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; -import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { CandidateOfficeTypes, ContactTypes } from 'app/shared/models/contact.model'; import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { DropdownModule } from 'primeng/dropdown'; @@ -79,15 +78,4 @@ describe('ContactFormComponent', () => { expect(component.form.get('state')?.value).toBe('ZZ'); }); - it('#getSchemaByType should return the correct schema', () => { - let schema: JsonSchema = component['getSchemaByType'](ContactTypes.COMMITTEE); - expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Committee.json'); - - schema = component['getSchemaByType'](ContactTypes.ORGANIZATION); - expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Organization.json'); - - schema = component['getSchemaByType'](ContactTypes.CANDIDATE); - expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Candidate.json'); - }); - }); diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index d502f49d1b..36f07fe643 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -1,8 +1,8 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; -import { ValidateService } from 'app/shared/services/validate.service'; +import { ContactService } from 'app/shared/services/contact.service'; import { CountryCodeLabels, LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; @@ -12,7 +12,7 @@ import { CandidateOfficeTypeLabels, CandidateOfficeTypes, ContactTypeLabels, - ContactTypes, + ContactTypes } from '../../models/contact.model'; @Component({ @@ -21,12 +21,12 @@ import { }) export class ContactFormComponent implements OnInit, OnDestroy { @Input() form: FormGroup = this.fb.group( - this.validateService.getFormGroupFields([ + ValidateUtils.getFormGroupFields([ ...new Set([ - ...ValidateService.getSchemaProperties(contactIndividualSchema), - ...ValidateService.getSchemaProperties(contactCandidateSchema), - ...ValidateService.getSchemaProperties(contactCommitteeSchema), - ...ValidateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateUtils.getSchemaProperties(contactIndividualSchema), + ...ValidateUtils.getSchemaProperties(contactCandidateSchema), + ...ValidateUtils.getSchemaProperties(contactCommitteeSchema), + ...ValidateUtils.getSchemaProperties(contactOrganizationSchema), ]), ]) ); @@ -42,7 +42,10 @@ export class ContactFormComponent implements OnInit, OnDestroy { candidateStateOptions: PrimeOptions = []; candidateDistrictOptions: PrimeOptions = []; - constructor(private validateService: ValidateService, private fb: FormBuilder) {} + constructor( + private fb: FormBuilder, + private contactService: ContactService + ) { } ngOnInit(): void { this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); @@ -51,21 +54,18 @@ export class ContactFormComponent implements OnInit, OnDestroy { this.countryOptions = LabelUtils.getPrimeOptions(CountryCodeLabels); this.candidateStateOptions = LabelUtils.getPrimeOptions(LabelUtils.getStateCodeLabelsWithoutMilitary()); - // Initialize validation tracking of current JSON schema and form data - this.validateService.formValidatorSchema = contactIndividualSchema; - this.validateService.formValidatorForm = this.form; - this.form ?.get('type') ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value: string) => { // Update validator JSON schema to the selected contact type - this.validateService.formValidatorSchema = this.getSchemaByType(value as ContactTypes); + const formValidatorSchema = this.contactService.getSchemaByType( + value as ContactTypes); // Clear out non-schema form values const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - const schemaProperties: string[] = ValidateService.getSchemaProperties( - this.validateService.formValidatorSchema + const schemaProperties: string[] = ValidateUtils.getSchemaProperties( + formValidatorSchema ); Object.keys(this.form.controls).forEach((property: string) => { if (!schemaProperties.includes(property)) { @@ -145,22 +145,4 @@ export class ContactFormComponent implements OnInit, OnDestroy { return CandidateOfficeTypes; } - /** - * Given the type of contact given, return the appropriate JSON schema doc - * @param {ContactTypes} type - * @returns {JsonSchema} schema - */ - private getSchemaByType(type: ContactTypes): JsonSchema { - let schema: JsonSchema = contactIndividualSchema; - if (type === ContactTypes.CANDIDATE) { - schema = contactCandidateSchema; - } - if (type === ContactTypes.COMMITTEE) { - schema = contactCommitteeSchema; - } - if (type === ContactTypes.ORGANIZATION) { - schema = contactOrganizationSchema; - } - return schema; - } } diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index 5428b65cd0..638d9d6dc8 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -1,11 +1,12 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; import { Contact, ContactTypes, FecApiCommitteeLookupData, FecApiLookupData } from 'app/shared/models/contact.model'; import { ContactService } from 'app/shared/services/contact.service'; import { FecApiService } from 'app/shared/services/fec-api.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; @@ -45,27 +46,26 @@ export class ContactLookupComponent { createContactDialogVisible = false; createContactFormSubmitted = false; createContactForm: FormGroup = this.formBuilder.group( - this.validateService.getFormGroupFields([ + ValidateUtils.getFormGroupFields([ ...new Set([ - ...ValidateService.getSchemaProperties(contactIndividualSchema), - ...ValidateService.getSchemaProperties(contactCandidateSchema), - ...ValidateService.getSchemaProperties(contactCommitteeSchema), - ...ValidateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateUtils.getSchemaProperties(contactIndividualSchema), + ...ValidateUtils.getSchemaProperties(contactCandidateSchema), + ...ValidateUtils.getSchemaProperties(contactCommitteeSchema), + ...ValidateUtils.getSchemaProperties(contactOrganizationSchema), ]), ]) ); selectedFecCommitteeAccount: CommitteeAccount | undefined; - workingValidatorSchema = this.validateService.formValidatorSchema; - workingValidatorForm = this.validateService.formValidatorForm; + workingValidatorSchema: JsonSchema | undefined; + workingValidatorForm: FormGroup | undefined; constructor( private formBuilder: FormBuilder, - private validateService: ValidateService, private contactService: ContactService, private fecApiService: FecApiService - ) {} + ) { } // eslint-disable-next-line @typescript-eslint/no-explicit-any onDropdownSearch(event: any) { @@ -125,18 +125,10 @@ export class ContactLookupComponent { openCreateContactDialog(value?: CommitteeAccount) { this.selectedFecCommitteeAccount = value; - // Need these since contact-form sets these for validation - this.workingValidatorSchema = this.validateService.formValidatorSchema; - this.workingValidatorForm = this.validateService.formValidatorForm; - this.createContactDialogVisible = true; } closeCreateContactDialog() { - // Need these since contact-form sets these for validation - this.validateService.formValidatorSchema = this.workingValidatorSchema; - this.validateService.formValidatorForm = this.workingValidatorForm; - this.createContactDialogVisible = false; } @@ -147,7 +139,8 @@ export class ContactLookupComponent { } const createdContact = Contact.fromJSON({ - ...this.validateService.getFormValues(this.createContactForm), + ...ValidateUtils.getFormValues(this.createContactForm, + undefined, this.contactTypeFormControl.value), }); this.contactSelect.emit({ value: createdContact, diff --git a/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts b/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts index e678eb75c1..41174a8bca 100644 --- a/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts +++ b/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts @@ -1,14 +1,13 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder } from '@angular/forms'; import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; -import { ValidateService } from 'app/shared/services/validate.service'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { ErrorMessagesComponent } from './error-messages.component'; describe('ErrorMessagesComponent', () => { let component: ErrorMessagesComponent; let fixture: ComponentFixture; - let validateService: ValidateService; const testSchema: JsonSchema = { $schema: 'http://json-schema.org/draft-07/schema#', @@ -41,12 +40,10 @@ describe('ErrorMessagesComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ErrorMessagesComponent], - providers: [ValidateService], }).compileComponents(); }); beforeEach(() => { - validateService = TestBed.inject(ValidateService); fixture = TestBed.createComponent(ErrorMessagesComponent); component = fixture.componentInstance; @@ -58,12 +55,13 @@ describe('ErrorMessagesComponent', () => { }); it('should provide default error messages', () => { - validateService.formValidatorSchema = testSchema; + const formValidatorSchema = testSchema; const fb: FormBuilder = new FormBuilder(); - validateService.formValidatorForm = fb.group( - validateService.getFormGroupFields(['in_between', 'low_high', 'exclusive_low_high', 'exclusive_negative_amount']) + const formValidatorForm = fb.group( + ValidateUtils.getFormGroupFields(['in_between', + 'low_high', 'exclusive_low_high', 'exclusive_negative_amount']) ); - component.form = validateService.formValidatorForm; + component.form = formValidatorForm; component.fieldName = 'in_between'; component.ngOnInit(); component.form.patchValue({ in_between: 'short' }); @@ -88,10 +86,10 @@ describe('ErrorMessagesComponent', () => { it('should present a unique error message when a negative contribution amount is required', () => { //This has to be done separately because a new exclusiveMaxErrorMessage has to be generated - validateService.formValidatorSchema = testSchema; + const formValidatorSchema = testSchema; const fb: FormBuilder = new FormBuilder(); - validateService.formValidatorForm = fb.group(validateService.getFormGroupFields(['exclusive_negative_amount'])); - component.form = validateService.formValidatorForm; + const formValidatorForm = fb.group(ValidateUtils.getFormGroupFields(['exclusive_negative_amount'])); + component.form = formValidatorForm; component.fieldName = 'exclusive_negative_amount'; component.ngOnInit(); component.form.patchValue({ exclusive_negative_amount: 1 }); diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts index 610e7547a1..b050111878 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts @@ -1,16 +1,15 @@ +import { DatePipe } from '@angular/common'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { provideMockStore } from '@ngrx/store/testing'; +import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; +import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { TransactionService } from 'app/shared/services/transaction.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { getTestTransactionByType, testMockStore } from 'app/shared/utils/unit-test.utils'; import { ConfirmationService, MessageService } from 'primeng/api'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; -import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; -import { DatePipe } from '@angular/common'; -import { SchATransaction, ScheduleATransactionTypes } from 'app/shared/models/scha-transaction.model'; class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseComponent { formProperties: string[] = [ @@ -73,7 +72,6 @@ describe('DoubleTransactionTypeBaseComponent', () => { DatePipe, MessageService, FormBuilder, - ValidateService, TransactionService, ConfirmationService, provideMockStore(testMockStore), diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 92dfd22388..377e6fbaee 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -3,7 +3,6 @@ import { FormGroup } from '@angular/forms'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; import { NavigationEvent } from 'app/shared/models/transaction-navigation-controls.model'; import { Transaction, ScheduleTransaction } from 'app/shared/models/transaction.model'; -import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; import { SelectItem } from 'primeng/api'; import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.model'; @@ -11,6 +10,7 @@ import { TransactionTypeBaseComponent } from './transaction-type-base.component' import { TransactionFormUtils } from './transaction-form.utils'; import { TransactionContactUtils } from './transaction-contact.utils'; import { TransactionTemplateMapType } from 'app/shared/models/transaction-type.model'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; /** * This component is to help manage a form that contains 2 transactions that the @@ -34,7 +34,6 @@ export abstract class DoubleTransactionTypeBaseComponent childTransaction?: Transaction; childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); childForm: FormGroup = this.fb.group({}); - childValidateService: ValidateService = new ValidateService(); childContactId$: Subject = new BehaviorSubject(''); childPurposeDescriptionLabel = ''; childNegativeAmountValueOnly = false; @@ -45,7 +44,9 @@ export abstract class DoubleTransactionTypeBaseComponent super.ngOnInit(); // Initialize child form. - this.childForm = this.fb.group(this.childValidateService.getFormGroupFields(this.childFormProperties)); + this.childForm = this.fb.group(ValidateUtils.getFormGroupFields( + this.childFormProperties, this.childTransaction, + this.childTransaction?.transactionType?.schema, this.form)); if (this.transaction?.children) { this.childTransaction = this.transaction?.children[0]; if (this.childTransaction.transactionType?.templateMap) { @@ -56,7 +57,6 @@ export abstract class DoubleTransactionTypeBaseComponent TransactionFormUtils.onInit( this, this.childForm, - this.childValidateService, this.childTransaction, this.childContactId$ ); @@ -155,14 +155,12 @@ export abstract class DoubleTransactionTypeBaseComponent const payload: Transaction = TransactionFormUtils.getPayloadTransaction( this.transaction, - this.validateService, this.form, this.formProperties ); payload.children = [ TransactionFormUtils.getPayloadTransaction( this.childTransaction, - this.childValidateService, this.childForm, this.childFormProperties ), diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index be28445979..289c882461 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -1,14 +1,14 @@ import { FormGroup } from '@angular/forms'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { Transaction, ScheduleTransaction } from 'app/shared/models/transaction.model'; -import { ValidateService } from 'app/shared/services/validate.service'; +import { ScheduleTransaction, Transaction } from 'app/shared/models/transaction.model'; import { PrimeOptions } from 'app/shared/utils/label.utils'; +import { getFromJSON } from 'app/shared/utils/transaction-type.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { combineLatestWith, Observable, of, startWith, Subject, switchMap, takeUntil } from 'rxjs'; import { ContactTypes } from '../../models/contact.model'; +import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; -import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; -import { getFromJSON } from 'app/shared/utils/transaction-type.utils'; export class TransactionFormUtils { /** @@ -18,21 +18,15 @@ export class TransactionFormUtils { * child transaction type defined in the DoubleTransactionTypeBase class. * @param component * @param form - parent or child (i.e. form or childForm) - * @param validateService - parent or child (i.e. validateService or childValidateService) * @param transaction - parent or child * @param contactId$ - parent or child (i.e. contactId$ or childContactId$) */ static onInit( component: TransactionTypeBaseComponent | DoubleTransactionTypeBaseComponent, form: FormGroup, - validateService: ValidateService, transaction: Transaction | undefined, contactId$: Subject ): void { - // Initialize validation tracking of current JSON schema and form data - validateService.formValidatorSchema = transaction?.transactionType?.schema; - validateService.formValidatorForm = form; - if (transaction && transaction.id) { form.patchValue({ ...transaction }); @@ -101,7 +95,6 @@ export class TransactionFormUtils { static getPayloadTransaction( transaction: Transaction | undefined, - validateService: ValidateService, form: FormGroup, formProperties: string[] ): Transaction { @@ -109,7 +102,8 @@ export class TransactionFormUtils { throw new Error('Fecfile: Payload transaction not found'); } - let formValues = validateService.getFormValues(form, formProperties); + let formValues = ValidateUtils.getFormValues(form, formProperties, + transaction.transactionType?.schema); formValues = TransactionMemoUtils.retrieveMemoText(transaction, form, formValues); const payload: ScheduleTransaction = getFromJSON({ diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts index e2a3009dfc..ee0bf13353 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts @@ -14,7 +14,6 @@ import { Contact, ContactTypes } from 'app/shared/models/contact.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ApiService } from 'app/shared/services/api.service'; import { TransactionService } from 'app/shared/services/transaction.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { getTestTransactionByType, testMockStore, testIndividualReceipt } from 'app/shared/utils/unit-test.utils'; import { Confirmation, ConfirmationService, Message, MessageService, SelectItem } from 'primeng/api'; import { of } from 'rxjs'; @@ -88,7 +87,6 @@ describe('TransactionTypeBaseComponent', () => { DatePipe, MessageService, FormBuilder, - ValidateService, TransactionService, ConfirmationService, provideMockStore(testMockStore), diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 000376b3f1..2d9a95cfc8 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -6,15 +6,15 @@ import { NavigationControl, NavigationDestination, NavigationEvent, - TransactionNavigationControls, + TransactionNavigationControls } from 'app/shared/models/transaction-navigation-controls.model'; import { TransactionTemplateMapType, TransactionType } from 'app/shared/models/transaction-type.model'; -import { Transaction, ScheduleTransaction, TransactionTypes } from 'app/shared/models/transaction.model'; +import { ScheduleTransaction, Transaction, TransactionTypes } from 'app/shared/models/transaction.model'; import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ContactService } from 'app/shared/services/contact.service'; import { TransactionService } from 'app/shared/services/transaction.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { ConfirmationService, MessageService, SelectItem } from 'primeng/api'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.model'; @@ -44,22 +44,22 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy protected messageService: MessageService, public transactionService: TransactionService, protected contactService: ContactService, - protected validateService: ValidateService, protected confirmationService: ConfirmationService, protected fb: FormBuilder, protected router: Router, protected fecDatePipe: FecDatePipe - ) {} + ) { } ngOnInit(): void { - this.form = this.fb.group(this.validateService.getFormGroupFields( - this.formProperties, this.transaction)); + this.form = this.fb.group(ValidateUtils.getFormGroupFields( + this.formProperties, this.transaction, + this.transaction?.transactionType?.schema, this.form)); if (this.transaction?.transactionType?.templateMap) { this.templateMap = this.transaction.transactionType.templateMap; } else { throw new Error('Fecfile: Template map not found for transaction component'); } - TransactionFormUtils.onInit(this, this.form, this.validateService, this.transaction, this.contactId$); + TransactionFormUtils.onInit(this, this.form, this.transaction, this.contactId$); this.parentOnInit(); } @@ -104,7 +104,6 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy const payload: Transaction = TransactionFormUtils.getPayloadTransaction( this.transaction, - this.validateService, this.form, this.formProperties ); diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index e23dad3365..306d69d150 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -3,9 +3,9 @@ import { Contact } from './contact.model'; import { MemoText } from './memo-text.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionGroupsType } from './scha-transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionGroupsType } from './schb-transaction.model'; -import { ValidateService } from '../services/validate.service'; import { TransactionType } from './transaction-type.model'; import { Type } from 'class-transformer'; +import { ValidateUtils } from '../utils/validate.utils'; export abstract class Transaction extends BaseModel { id: string | undefined; @@ -63,7 +63,7 @@ export abstract class Transaction extends BaseModel { this.contact_id = this.contact?.id; this.transactionType = transactionType; this.schema_name = transactionType.getSchemaName(); - const fieldsToValidate: string[] = ValidateService.getSchemaProperties(transactionType.schema); + const fieldsToValidate: string[] = ValidateUtils.getSchemaProperties(transactionType.schema); const fieldsNotToValidate: string[] = this.getFieldsNotToValidate(); this.fields_to_validate = fieldsToValidate.filter((p) => ![...fieldsNotToValidate].includes(p)); } diff --git a/front-end/src/app/shared/services/contact.service.spec.ts b/front-end/src/app/shared/services/contact.service.spec.ts index 7517f8cde1..cd608adefb 100644 --- a/front-end/src/app/shared/services/contact.service.spec.ts +++ b/front-end/src/app/shared/services/contact.service.spec.ts @@ -3,7 +3,8 @@ import { TestBed } from '@angular/core/testing'; import { provideMockStore } from '@ngrx/store/testing'; import { of } from 'rxjs'; import { environment } from '../../../environments/environment'; -import { CommitteeLookupResponse, Contact, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; +import { JsonSchema } from '../interfaces/json-schema.interface'; +import { CommitteeLookupResponse, Contact, ContactTypes, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; import { ListRestResponse } from '../models/rest-api.model'; import { testMockStore } from '../utils/unit-test.utils'; import { ApiService } from './api.service'; @@ -154,4 +155,15 @@ describe('ContactService', () => { expect(apiServiceGetSpy).toHaveBeenCalledOnceWith(expectedEndpoint, expectedParams); }); + it('#getSchemaByType should return the correct schema', () => { + let schema: JsonSchema = service.getSchemaByType(ContactTypes.COMMITTEE); + expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Committee.json'); + + schema = service.getSchemaByType(ContactTypes.ORGANIZATION); + expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Organization.json'); + + schema = service.getSchemaByType(ContactTypes.CANDIDATE); + expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Candidate.json'); + }); + }); diff --git a/front-end/src/app/shared/services/contact.service.ts b/front-end/src/app/shared/services/contact.service.ts index 6aa6ee6617..2874d9aade 100644 --- a/front-end/src/app/shared/services/contact.service.ts +++ b/front-end/src/app/shared/services/contact.service.ts @@ -1,11 +1,17 @@ import { Injectable } from '@angular/core'; +import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; +import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; +import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; +import { schema as contactOrganizationSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Organization'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; +import { JsonSchema } from '../interfaces/json-schema.interface'; import { TableListService } from '../interfaces/table-list-service.interface'; -import { CommitteeLookupResponse, Contact, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; +import { CommitteeLookupResponse, Contact, ContactTypes, IndividualLookupResponse, OrganizationLookupResponse } from '../models/contact.model'; import { ListRestResponse } from '../models/rest-api.model'; import { ApiService } from './api.service'; + @Injectable({ providedIn: 'root', }) @@ -75,4 +81,23 @@ export class ContactService implements TableListService { map((response) => OrganizationLookupResponse.fromJSON(response))); } + /** + * Given the type of contact given, return the appropriate JSON schema doc + * @param {ContactTypes} type + * @returns {JsonSchema} schema + */ + public getSchemaByType(type: ContactTypes): JsonSchema { + let schema: JsonSchema = contactIndividualSchema; + if (type === ContactTypes.CANDIDATE) { + schema = contactCandidateSchema; + } + if (type === ContactTypes.COMMITTEE) { + schema = contactCommitteeSchema; + } + if (type === ContactTypes.ORGANIZATION) { + schema = contactOrganizationSchema; + } + return schema; + } + } diff --git a/front-end/src/app/shared/services/validate.service.spec.ts b/front-end/src/app/shared/services/validate.service.spec.ts deleted file mode 100644 index 0976bb043f..0000000000 --- a/front-end/src/app/shared/services/validate.service.spec.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { FormBuilder, ValidationErrors, ValidatorFn, FormControl } from '@angular/forms'; -import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; -import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; -import { ValidateService } from './validate.service'; - -describe('ValidateService', () => { - let service: ValidateService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(ValidateService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); - - it('#formValidator should validate properties correctly', () => { - const fb: FormBuilder = new FormBuilder(); - service.formValidatorSchema = contactCandidateSchema; - service.formValidatorForm = fb.group( - service.getFormGroupFields(ValidateService.getSchemaProperties(contactCandidateSchema)) - ); - service.formValidatorForm.patchValue({ - telephone: '12345678910', - candidate_office: 'S', - last_name: 'Valid Name', - }); - - let validator: ValidatorFn = service.formValidator('telephone'); - let result: ValidationErrors | null = validator(service.formValidatorForm.get('telephone') as FormControl); - expect(result).not.toBe(null); - if (result) { - expect(result['pattern'].requiredPattern).toBe('^\\+\\d{1,3} \\d{10}$'); - } - - validator = service.formValidator('candidate_state'); - result = validator(service.formValidatorForm.get('candidate_state') as FormControl); - expect(result).not.toBe(null); - if (result) { - expect(result['required']).toBe(true); - } - - validator = service.formValidator('last_name'); - result = validator(service.formValidatorForm.get('last_name') as FormControl); - expect(result).toBe(null); - }); - - it('#formValidator should validate boolean properties correctly', () => { - const fb: FormBuilder = new FormBuilder(); - service.formValidatorSchema = f3xSchema; - service.formValidatorForm = fb.group(service.getFormGroupFields(ValidateService.getSchemaProperties(f3xSchema))); - service.formValidatorForm.patchValue({ - change_of_address: 'A', - }); - - let validator: ValidatorFn = service.formValidator('change_of_address'); - let result: ValidationErrors | null = validator(service.formValidatorForm.get('change_of_address') as FormControl); - expect(result).not.toBe(null); - if (result) { - expect(result['pattern'].requiredPattern).toBe('must be boolean,null'); - } - - service.formValidatorForm.patchValue({ - change_of_address: true, - }); - validator = service.formValidator('change_of_address'); - result = validator(service.formValidatorForm.get('change_of_address') as FormControl); - expect(result).toBe(null); - }); - - it('#formValidator should validate min/max numeric properties correctly', () => { - const fb: FormBuilder = new FormBuilder(); - service.formValidatorSchema = f3xSchema; - service.formValidatorForm = fb.group(service.getFormGroupFields(ValidateService.getSchemaProperties(f3xSchema))); - service.formValidatorForm.patchValue({ - L6a_cash_on_hand_jan_1_ytd: 1000000000.0, - }); - - let validator: ValidatorFn = service.formValidator('L6a_cash_on_hand_jan_1_ytd'); - let result: ValidationErrors | null = validator( - service.formValidatorForm.get('L6a_cash_on_hand_jan_1_ytd') as FormControl - ); - expect(result).not.toEqual(null); - if (result) { - expect(result['max'].max).toBe(999999999.99); - } - - service.formValidatorForm.patchValue({ - L6a_cash_on_hand_jan_1_ytd: -200.0, - }); - validator = service.formValidator('L6a_cash_on_hand_jan_1_ytd'); - result = validator(service.formValidatorForm.get('L6a_cash_on_hand_jan_1_ytd') as FormControl); - if (result) { - expect(result['min'].min).toBe(0); - } - }); - - it('#getSchemaProperties() should return empty array when no schema', () => { - const properties: string[] = ValidateService.getSchemaProperties(undefined); - expect(properties.length).toBe(0); - }); -}); diff --git a/front-end/src/app/shared/utils/validate.utils.spec.ts b/front-end/src/app/shared/utils/validate.utils.spec.ts new file mode 100644 index 0000000000..fed37207ca --- /dev/null +++ b/front-end/src/app/shared/utils/validate.utils.spec.ts @@ -0,0 +1,104 @@ +import { FormBuilder, FormControl, ValidationErrors, ValidatorFn } from '@angular/forms'; +import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; +import { schema as f3xSchema } from 'fecfile-validate/fecfile_validate_js/dist/F3X'; +import { ValidateUtils } from './validate.utils'; + +describe('ValidateUtils', () => { + + it('#formValidator should validate properties correctly', () => { + const fb: FormBuilder = new FormBuilder(); + const formValidatorSchema = contactCandidateSchema; + const formValidatorForm = fb.group( + ValidateUtils.getFormGroupFields(ValidateUtils.getSchemaProperties(contactCandidateSchema)) + ); + formValidatorForm.patchValue({ + telephone: '12345678910', + candidate_office: 'S', + last_name: 'Valid Name', + }); + + let validator: ValidatorFn = ValidateUtils.formValidator('telephone', + undefined, formValidatorSchema, formValidatorForm); + let result: ValidationErrors | null = + validator(formValidatorForm.get('telephone') as FormControl); + expect(result).not.toBe(null); + if (result) { + expect(result['pattern'].requiredPattern).toBe('^\\+\\d{1,3} \\d{10}$'); + } + + validator = ValidateUtils.formValidator('candidate_state', + undefined, formValidatorSchema, formValidatorForm); + result = validator(formValidatorForm.get('candidate_state') as FormControl); + expect(result).not.toBe(null); + if (result) { + expect(result['required']).toBe(true); + } + + validator = ValidateUtils.formValidator('last_name', + undefined, formValidatorSchema, formValidatorForm); + result = validator(formValidatorForm.get('last_name') as FormControl); + expect(result).toBe(null); + }); + + it('#formValidator should validate boolean properties correctly', () => { + const fb: FormBuilder = new FormBuilder(); + const formValidatorSchema = f3xSchema; + const formValidatorForm = fb.group(ValidateUtils.getFormGroupFields( + ValidateUtils.getSchemaProperties(f3xSchema))); + formValidatorForm.patchValue({ + change_of_address: 'A', + }); + + let validator: ValidatorFn = ValidateUtils.formValidator('change_of_address', + undefined, formValidatorSchema, formValidatorForm); + let result: ValidationErrors | null = validator( + formValidatorForm.get('change_of_address') as FormControl); + expect(result).not.toBe(null); + if (result) { + expect(result['pattern'].requiredPattern).toBe('must be boolean,null'); + } + + formValidatorForm.patchValue({ + change_of_address: true, + }); + validator = ValidateUtils.formValidator('change_of_address', + undefined, formValidatorSchema, formValidatorForm); + result = validator(formValidatorForm.get('change_of_address') as FormControl); + expect(result).toBe(null); + }); + + it('#formValidator should validate min/max numeric properties correctly', () => { + const fb: FormBuilder = new FormBuilder(); + const formValidatorSchema = f3xSchema; + const formValidatorForm = fb.group(ValidateUtils.getFormGroupFields( + ValidateUtils.getSchemaProperties(f3xSchema))); + formValidatorForm.patchValue({ + L6a_cash_on_hand_jan_1_ytd: 1000000000.0, + }); + + let validator: ValidatorFn = ValidateUtils.formValidator('L6a_cash_on_hand_jan_1_ytd', + undefined, formValidatorSchema, formValidatorForm); + let result: ValidationErrors | null = validator( + formValidatorForm.get('L6a_cash_on_hand_jan_1_ytd') as FormControl + ); + expect(result).not.toEqual(null); + if (result) { + expect(result['max'].max).toBe(999999999.99); + } + + formValidatorForm.patchValue({ + L6a_cash_on_hand_jan_1_ytd: -200.0, + }); + validator = ValidateUtils.formValidator('L6a_cash_on_hand_jan_1_ytd', + undefined, formValidatorSchema, formValidatorForm); + result = validator(formValidatorForm.get('L6a_cash_on_hand_jan_1_ytd') as FormControl); + if (result) { + expect(result['min'].min).toBe(0); + } + }); + + it('#getSchemaProperties() should return empty array when no schema', () => { + const properties: string[] = ValidateUtils.getSchemaProperties(undefined); + expect(properties.length).toBe(0); + }); +}); diff --git a/front-end/src/app/shared/services/validate.service.ts b/front-end/src/app/shared/utils/validate.utils.ts similarity index 69% rename from front-end/src/app/shared/services/validate.service.ts rename to front-end/src/app/shared/utils/validate.utils.ts index e5cc741010..88024a0bef 100644 --- a/front-end/src/app/shared/services/validate.service.ts +++ b/front-end/src/app/shared/utils/validate.utils.ts @@ -1,25 +1,10 @@ -import { Injectable } from '@angular/core'; import { FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; import { validate, ValidationError } from 'fecfile-validate'; import { JsonSchema } from '../interfaces/json-schema.interface'; import { Transaction } from '../models/transaction.model'; -import { DateUtils } from '../utils/date.utils'; +import { DateUtils } from './date.utils'; -@Injectable({ - providedIn: 'root', -}) -export class ValidateService { - /** - * @property - This property is a placeholder for the schema to use in the form element - * custom validator located in the method formValidator() below. - */ - formValidatorSchema: JsonSchema | undefined; - - /** - * @property - This property is a placeholder for the ng reactive form to use in the form - * element custom validator located in the method formValidator() below. - */ - formValidatorForm: FormGroup | undefined; +export class ValidateUtils { /** * Validate a data object against a JSON Schema document @@ -29,7 +14,7 @@ export class ValidateService { * @returns {ValidationError[]} array of validation errors if any */ // prettier-ignore - validate(schema: JsonSchema, data: any, fieldsToValidate: string[] = []): ValidationError[] { // eslint-disable-line @typescript-eslint/no-explicit-any + static validate(schema: JsonSchema, data: any, fieldsToValidate: string[] = []): ValidationError[] { // eslint-disable-line @typescript-eslint/no-explicit-any return validate(schema, data, fieldsToValidate); } @@ -51,9 +36,12 @@ export class ValidateService { * @param {string[]} properties * @returns data structure to pass to the FormBuilder group() method */ - getFormGroupFields(properties: string[], transaction?: Transaction) { + static getFormGroupFields(properties: string[], transaction?: Transaction, + formValidatorSchema?: JsonSchema, formValidatorForm?: FormGroup) { const group: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - properties.forEach((property) => (group[property] = ['', [this.formValidator(property, transaction)]])); + properties.forEach((property) => (group[property] = ['', + [ValidateUtils.formValidator(property, transaction, + formValidatorSchema, formValidatorForm)]])); return group; } @@ -61,20 +49,22 @@ export class ValidateService { * * @param {FormGroup} form * @param {string[]} propertiesSubset - Only get values for the listed subset of schema parameters. + * @param {JsonSchema} formValidatorSchema - the schema to use in the form element custom validator. * @returns object containing the form property values limited to the current validation schema * This method will 'null' any schema values that do not have a form value and, more importantly, * set those form fields with an empty '' value to null for the backend. It will also convert * strings to number types when necessary. */ - getFormValues(form: FormGroup, propertiesSubset: string[] = []) { + static getFormValues(form: FormGroup, propertiesSubset: string[] = [], + formValidatorSchema?: JsonSchema) { const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - if (this.formValidatorSchema) { - ValidateService.getSchemaProperties(this.formValidatorSchema).forEach((property: string) => { + if (formValidatorSchema) { + ValidateUtils.getSchemaProperties(formValidatorSchema).forEach((property: string) => { if (propertiesSubset.length > 0 && !propertiesSubset.includes(property)) { return; } - formValues[property] = this.getPropertyValue(property, form); + formValues[property] = ValidateUtils.getPropertyValue(property, form); }); } @@ -87,7 +77,7 @@ export class ValidateService { * This method returns "non-form" values that may be required * for validation of form fields. */ - getNonFormValues(transaction?: Transaction) { + static getNonFormValues(transaction?: Transaction) { const values: any = {}; if (transaction) { values['transaction_type_identifier'] = @@ -100,9 +90,11 @@ export class ValidateService { * Convert the form input value to the appropriate type. * @param {string} property * @param {FromGroup} form + * @param {JsonSchema} formValidatorSchema - the schema to use in the form element custom validator. * @returns */ - private getPropertyValue(property: string, form: FormGroup) { + private static getPropertyValue(property: string, form: FormGroup, + formValidatorSchema?: JsonSchema) { // Undefined and empty strings are set to null. if ( form?.get(property)?.value === undefined || @@ -114,9 +106,9 @@ export class ValidateService { // Convert a string to number if expected in the schema. if ( - (Array.isArray(this.formValidatorSchema?.properties[property].type) && - this.formValidatorSchema?.properties[property].type.includes('number')) || - this.formValidatorSchema?.properties[property].type === 'number' + (Array.isArray(formValidatorSchema?.properties[property].type) && + formValidatorSchema?.properties[property].type.includes('number')) || + formValidatorSchema?.properties[property].type === 'number' ) { return Number(form?.get(property)?.value); } @@ -134,19 +126,30 @@ export class ValidateService { * ng validator function for reactive forms. Provides validation based on the * JSON schema and form in the formValidationSchema and formValidationForm properties * @param {string} property - name of form property to validate + * @param {Transaction} transaction - Transaction (if any) associated with the property passed in. + * @param {JsonSchema} formValidatorSchema - the schema to use in the form element custom validator. + * @param {FormGroup} formValidatorForm - the ng reactive form to use in the form element custom + * validator * @returns {ValidationErrors | undefined} */ - formValidator(property: string, transaction?: Transaction): ValidatorFn { + static formValidator(property: string, transaction?: Transaction, + formValidatorSchema?: JsonSchema, formValidatorForm?: FormGroup): ValidatorFn { return (): ValidationErrors | null => { - if (!this.formValidatorSchema || !this.formValidatorForm) { + if (!formValidatorSchema || !formValidatorForm) { return null; } const data = { - ...this.getFormValues(this.formValidatorForm), - ...this.getNonFormValues(transaction) + ...ValidateUtils.getFormValues(formValidatorForm), + ...ValidateUtils.getNonFormValues(transaction) + } + if (data['contributor_state'] === 'not-valid') { + console.log('hi3'); + } + if (data['transaction_type_identifier'] === 'INDIVIDUAL_RECEIPT') { + console.log('hi4'); } - const errors: ValidationError[] = this.validate( - this.formValidatorSchema, + const errors: ValidationError[] = ValidateUtils.validate( + formValidatorSchema, data, [property] ); @@ -185,9 +188,9 @@ export class ValidateService { } if (error.keyword === 'type' && error.params['type'] === 'number') { if ( - this.formValidatorForm?.get(error.path)?.value === '' || - this.formValidatorForm?.get(error.path)?.value === null || - this.formValidatorForm?.get(error.path)?.value === undefined + formValidatorForm?.get(error.path)?.value === '' || + formValidatorForm?.get(error.path)?.value === null || + formValidatorForm?.get(error.path)?.value === undefined ) { result['required'] = true; } else { @@ -205,7 +208,7 @@ export class ValidateService { }; } - passwordValidator(): ValidatorFn | ValidatorFn[] { + static passwordValidator(): ValidatorFn | ValidatorFn[] { const v = Validators.compose([ Validators.required, Validators.minLength(8), From 6f27e18dd43d07c755005d9685b7f1f8c476e9a1 Mon Sep 17 00:00:00 2001 From: Matt Travers Date: Thu, 23 Feb 2023 18:20:53 -0500 Subject: [PATCH 104/115] Remove aria-hidden styles to fix primeng icons --- front-end/src/assets/styles/typography.css | 6 ------ 1 file changed, 6 deletions(-) diff --git a/front-end/src/assets/styles/typography.css b/front-end/src/assets/styles/typography.css index 5f871dd7f6..4063758661 100644 --- a/front-end/src/assets/styles/typography.css +++ b/front-end/src/assets/styles/typography.css @@ -258,12 +258,6 @@ body { padding: 0; position: relative; } -main[aria-hidden='true'] { - display: block !important; -} -[aria-hidden='true'] { - display: none !important; -} @media print { footer, nav { From a27602f9a0a6d333eb0e619156b3427060df692b Mon Sep 17 00:00:00 2001 From: toddlees Date: Fri, 24 Feb 2023 08:53:39 -0500 Subject: [PATCH 105/115] style ellipsis button --- .../src/app/reports/report-list/report-list.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0ac287294e..f38cb0ceb4 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,7 +92,7 @@
    Recent reports
    From b62d1042d2bdc4e519c97e27d291b4eb8d72f105 Mon Sep 17 00:00:00 2001 From: toddlees Date: Fri, 24 Feb 2023 10:07:13 -0500 Subject: [PATCH 106/115] no arrow on overlay panel --- front-end/src/styles.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/front-end/src/styles.scss b/front-end/src/styles.scss index 2d6e81787a..9135d509c9 100644 --- a/front-end/src/styles.scss +++ b/front-end/src/styles.scss @@ -282,7 +282,16 @@ label.disabled { } .action-options { + &:before { + content:none !important; + } + + &:after { + content:none !important; + } + padding: 0; + margin-top: 0px !important; } .action-options .p-overlaypanel-content { padding: .5em; From 589b19270d3e42ebf587424c6db516131d28fb13 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Mon, 27 Feb 2023 13:53:37 -0500 Subject: [PATCH 107/115] 876 cleanup --- .../components/contact-lookup/contact-lookup.component.ts | 3 --- front-end/src/app/shared/utils/validate.utils.ts | 6 ------ 2 files changed, 9 deletions(-) diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index 638d9d6dc8..26be50c188 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -58,9 +58,6 @@ export class ContactLookupComponent { selectedFecCommitteeAccount: CommitteeAccount | undefined; - workingValidatorSchema: JsonSchema | undefined; - workingValidatorForm: FormGroup | undefined; - constructor( private formBuilder: FormBuilder, private contactService: ContactService, diff --git a/front-end/src/app/shared/utils/validate.utils.ts b/front-end/src/app/shared/utils/validate.utils.ts index 88024a0bef..a3bca50dd7 100644 --- a/front-end/src/app/shared/utils/validate.utils.ts +++ b/front-end/src/app/shared/utils/validate.utils.ts @@ -142,12 +142,6 @@ export class ValidateUtils { ...ValidateUtils.getFormValues(formValidatorForm), ...ValidateUtils.getNonFormValues(transaction) } - if (data['contributor_state'] === 'not-valid') { - console.log('hi3'); - } - if (data['transaction_type_identifier'] === 'INDIVIDUAL_RECEIPT') { - console.log('hi4'); - } const errors: ValidationError[] = ValidateUtils.validate( formValidatorSchema, data, From 11fba8da86a98f5a54b32b27f3bcf186e4c306ab Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Mon, 27 Feb 2023 14:27:30 -0500 Subject: [PATCH 108/115] 876 fix compile errs --- .../transaction-contact-lookup.component.ts | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts index e62c067887..389aeb7743 100644 --- a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts @@ -3,8 +3,8 @@ import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; import { Contact, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; import { FecApiService } from 'app/shared/services/fec-api.service'; -import { ValidateService } from 'app/shared/services/validate.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Committee'; import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; @@ -25,24 +25,20 @@ export class TransactionContactLookupComponent { createContactDialogVisible = false; createContactFormSubmitted = false; createContactForm: FormGroup = this.formBuilder.group( - this.validateService.getFormGroupFields([ + ValidateUtils.getFormGroupFields([ ...new Set([ - ...ValidateService.getSchemaProperties(contactIndividualSchema), - ...ValidateService.getSchemaProperties(contactCandidateSchema), - ...ValidateService.getSchemaProperties(contactCommitteeSchema), - ...ValidateService.getSchemaProperties(contactOrganizationSchema), + ...ValidateUtils.getSchemaProperties(contactIndividualSchema), + ...ValidateUtils.getSchemaProperties(contactCandidateSchema), + ...ValidateUtils.getSchemaProperties(contactCommitteeSchema), + ...ValidateUtils.getSchemaProperties(contactOrganizationSchema), ]), ]) ); selectedFecCommitteeAccount: CommitteeAccount | undefined; - workingValidatorSchema = this.validateService.formValidatorSchema; - workingValidatorForm = this.validateService.formValidatorForm; - constructor( private formBuilder: FormBuilder, - private validateService: ValidateService, private fecApiService: FecApiService ) { } @@ -68,18 +64,10 @@ export class TransactionContactLookupComponent { openCreateContactDialog(value?: CommitteeAccount) { this.selectedFecCommitteeAccount = value; - // Need these since contact-form sets these for validation - this.workingValidatorSchema = this.validateService.formValidatorSchema; - this.workingValidatorForm = this.validateService.formValidatorForm; - this.createContactDialogVisible = true; } closeCreateContactDialog() { - // Need these since contact-form sets these for validation - this.validateService.formValidatorSchema = this.workingValidatorSchema; - this.validateService.formValidatorForm = this.workingValidatorForm; - this.createContactDialogVisible = false; } @@ -90,7 +78,7 @@ export class TransactionContactLookupComponent { } const createdContact = Contact.fromJSON({ - ...this.validateService.getFormValues(this.createContactForm), + ...ValidateUtils.getFormValues(this.createContactForm), }); this.contactSelect.emit({ value: createdContact, From 696d78a6c1c0f5c6cdbe0e0c875e4c90584705cf Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 28 Feb 2023 22:20:56 -0500 Subject: [PATCH 109/115] 876 bug --- .../shared/components/contact-form/contact-form.component.html | 2 +- .../shared/components/contact-form/contact-form.component.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.html b/front-end/src/app/shared/components/contact-form/contact-form.component.html index 059ac604e9..153368f4e2 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.html +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.html @@ -10,7 +10,7 @@

    Contact

    = new Subject(); ContactTypes = ContactTypes; From f128fe9fe8cbe664035a31a0ace8a45913ec669b Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Tue, 28 Feb 2023 22:51:01 -0500 Subject: [PATCH 110/115] 876 local testing fixes --- .../contact-form/contact-form.component.ts | 14 ++++++++++---- front-end/src/app/shared/utils/validate.utils.ts | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 5a0b3edc1d..1e6526c640 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { FormBuilder, FormGroup } from '@angular/forms'; import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { ContactService } from 'app/shared/services/contact.service'; import { FecApiService } from 'app/shared/services/fec-api.service'; @@ -63,14 +63,19 @@ export class ContactFormComponent implements OnInit, OnDestroy { ?.get('type') ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value: string) => { - // Update validator JSON schema to the selected contact type - const formValidatorSchema = this.contactService.getSchemaByType( + const schema = this.contactService.getSchemaByType( value as ContactTypes); + for (const key in this.form.controls) { + this.form.get(key)?.clearValidators(); + this.form.get(key)?.addValidators( + ValidateUtils.formValidator(key, undefined, schema, this.form)); + } + this.form.updateValueAndValidity(); // Clear out non-schema form values const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any const schemaProperties: string[] = ValidateUtils.getSchemaProperties( - formValidatorSchema + schema ); Object.keys(this.form.controls).forEach((property: string) => { if (!schemaProperties.includes(property)) { @@ -136,6 +141,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { this.candidateDistrictOptions = []; } }); + } ngOnDestroy(): void { diff --git a/front-end/src/app/shared/utils/validate.utils.ts b/front-end/src/app/shared/utils/validate.utils.ts index a3bca50dd7..39aea01900 100644 --- a/front-end/src/app/shared/utils/validate.utils.ts +++ b/front-end/src/app/shared/utils/validate.utils.ts @@ -139,7 +139,8 @@ export class ValidateUtils { return null; } const data = { - ...ValidateUtils.getFormValues(formValidatorForm), + ...ValidateUtils.getFormValues( + formValidatorForm, undefined, formValidatorSchema), ...ValidateUtils.getNonFormValues(transaction) } const errors: ValidationError[] = ValidateUtils.validate( From c3f03342817dec8e047ac37c71cb93f36b37e44d Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 1 Mar 2023 00:05:38 -0500 Subject: [PATCH 111/115] 876 local testing --- .../contact-detail.component.ts | 6 +++-- .../create-f3x-step1.component.ts | 6 +++++ .../report-level-memo.component.ts | 6 +++++ .../submit-f3x-step1.component.ts | 6 +++++ .../submit-f3x-step2.component.ts | 6 +++++ .../contact-form/contact-form.component.ts | 22 +------------------ .../double-transaction-type-base.component.ts | 18 +++++++-------- .../transaction-form.utils.ts | 7 ++++++ .../transaction-type-base.component.ts | 4 +--- .../app/shared/services/contact.service.ts | 2 +- 10 files changed, 46 insertions(+), 37 deletions(-) diff --git a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts index 64076c9770..5694b307db 100644 --- a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts +++ b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts @@ -7,7 +7,7 @@ import { schema as contactCommitteeSchema } from 'fecfile-validate/fecfile_valid import { schema as contactIndividualSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Individual'; import { schema as contactOrganizationSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Organization'; import { LazyLoadEvent, MessageService } from 'primeng/api'; -import { Contact } from '../../shared/models/contact.model'; +import { Contact, ContactType } from '../../shared/models/contact.model'; @Component({ selector: 'app-contact-detail', @@ -66,7 +66,9 @@ export class ContactDetailComponent { const payload: Contact = Contact.fromJSON({ ...this.contact, - ...ValidateUtils.getFormValues(this.form) + ...ValidateUtils.getFormValues(this.form, undefined, + ContactService.getSchemaByType( + this.form.get('type')?.value as ContactType)) }); if (payload.id) { diff --git a/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts b/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts index 0917dd9d93..863954b85e 100644 --- a/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts +++ b/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts @@ -130,6 +130,12 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { } }); + for (const key in this.form.controls) { + this.form.get(key)?.addValidators( + ValidateUtils.formValidator(key, undefined, f3xSchema, this.form)); + } + this.form.updateValueAndValidity(); + // Initialize validation tracking of current JSON schema and form data this.form.addValidators(this.buildCoverageDatesValidator()); } 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 5cc5fea68e..e4db8d7889 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 @@ -74,6 +74,12 @@ export class ReportLevelMemoComponent implements OnInit, OnDestroy { }); } }); + + for (const key in this.form.controls) { + this.form.get(key)?.addValidators( + ValidateUtils.formValidator(key, undefined, textSchema, this.form)); + } + this.form.updateValueAndValidity(); } ngOnDestroy(): void { 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 240a9117b2..6081d246ef 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 @@ -68,6 +68,12 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { Validators.maxLength(44), this.buildEmailValidator('confirmation_email_2'), ]); + + for (const key in this.form.controls) { + this.form.get(key)?.addValidators( + ValidateUtils.formValidator(key, undefined, f3xSchema, this.form)); + } + this.form.updateValueAndValidity(); } setDefaultFormValues(committeeAccount: CommitteeAccount) { 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 da55a47f39..e781a00c81 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 @@ -77,6 +77,12 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { // Initialize validation tracking of current JSON schema and form data this.form.controls['filing_password'].addValidators(ValidateUtils.passwordValidator()); this.form.controls['truth_statement'].addValidators(Validators.requiredTrue); + + for (const key in this.form.controls) { + this.form.get(key)?.addValidators( + ValidateUtils.formValidator(key, undefined, f3xSchema, this.form)); + } + this.form.updateValueAndValidity(); } setDefaultFormValues(committeeAccount: CommitteeAccount) { diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 1e6526c640..25ee0ce2ab 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -1,6 +1,5 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { ContactService } from 'app/shared/services/contact.service'; import { FecApiService } from 'app/shared/services/fec-api.service'; import { CountryCodeLabels, LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; @@ -48,7 +47,6 @@ export class ContactFormComponent implements OnInit, OnDestroy { constructor( private fb: FormBuilder, - private contactService: ContactService, private fecApiService: FecApiService ) { } @@ -63,7 +61,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { ?.get('type') ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value: string) => { - const schema = this.contactService.getSchemaByType( + const schema = ContactService.getSchemaByType( value as ContactTypes); for (const key in this.form.controls) { this.form.get(key)?.clearValidators(); @@ -249,22 +247,4 @@ export class ContactFormComponent implements OnInit, OnDestroy { } } - /** - * Given the type of contact given, return the appropriate JSON schema doc - * @param {ContactTypes} type - * @returns {JsonSchema} schema - */ - private getSchemaByType(type: ContactTypes): JsonSchema { - let schema: JsonSchema = contactIndividualSchema; - if (type === ContactTypes.CANDIDATE) { - schema = contactCandidateSchema; - } - if (type === ContactTypes.COMMITTEE) { - schema = contactCommitteeSchema; - } - if (type === ContactTypes.ORGANIZATION) { - schema = contactOrganizationSchema; - } - return schema; - } } diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index 377e6fbaee..5442955169 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -1,16 +1,16 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; import { NavigationEvent } from 'app/shared/models/transaction-navigation-controls.model'; -import { Transaction, ScheduleTransaction } from 'app/shared/models/transaction.model'; +import { TransactionTemplateMapType } from 'app/shared/models/transaction-type.model'; +import { ScheduleTransaction, Transaction } from 'app/shared/models/transaction.model'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; +import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { SelectItem } from 'primeng/api'; +import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.model'; -import { TransactionTypeBaseComponent } from './transaction-type-base.component'; -import { TransactionFormUtils } from './transaction-form.utils'; import { TransactionContactUtils } from './transaction-contact.utils'; -import { TransactionTemplateMapType } from 'app/shared/models/transaction-type.model'; -import { ValidateUtils } from 'app/shared/utils/validate.utils'; +import { TransactionFormUtils } from './transaction-form.utils'; +import { TransactionTypeBaseComponent } from './transaction-type-base.component'; /** * This component is to help manage a form that contains 2 transactions that the @@ -28,8 +28,7 @@ import { ValidateUtils } from 'app/shared/utils/validate.utils'; }) export abstract class DoubleTransactionTypeBaseComponent extends TransactionTypeBaseComponent - implements OnInit, OnDestroy -{ + implements OnInit, OnDestroy { abstract childFormProperties: string[]; childTransaction?: Transaction; childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); @@ -45,8 +44,7 @@ export abstract class DoubleTransactionTypeBaseComponent // Initialize child form. this.childForm = this.fb.group(ValidateUtils.getFormGroupFields( - this.childFormProperties, this.childTransaction, - this.childTransaction?.transactionType?.schema, this.form)); + this.childFormProperties)); if (this.transaction?.children) { this.childTransaction = this.transaction?.children[0]; if (this.childTransaction.transactionType?.templateMap) { diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 289c882461..149fae1106 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -91,6 +91,13 @@ export class TransactionFormUtils { const previousAggregate = previous_transaction ? +((previous_transaction as ScheduleTransaction)[key] || 0) : 0; form.get(templateMap.aggregate)?.setValue(+amount + previousAggregate); }); + + const schema = transaction.transactionType?.schema; + for (const key in form.controls) { + form.get(key)?.addValidators( + ValidateUtils.formValidator(key, undefined, schema, form)); + } + form.updateValueAndValidity(); } static getPayloadTransaction( diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index a0e66290ff..0915af9896 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -50,9 +50,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ) { } ngOnInit(): void { - this.form = this.fb.group(ValidateUtils.getFormGroupFields( - this.formProperties, this.transaction, - this.transaction?.transactionType?.schema, this.form)); + this.form = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); if (this.transaction?.transactionType?.templateMap) { this.templateMap = this.transaction.transactionType.templateMap; } else { diff --git a/front-end/src/app/shared/services/contact.service.ts b/front-end/src/app/shared/services/contact.service.ts index a8c2cafb7e..bc463e1792 100644 --- a/front-end/src/app/shared/services/contact.service.ts +++ b/front-end/src/app/shared/services/contact.service.ts @@ -97,7 +97,7 @@ export class ContactService implements TableListService { * @param {ContactTypes} type * @returns {JsonSchema} schema */ - public getSchemaByType(type: ContactTypes): JsonSchema { + public static getSchemaByType(type: ContactTypes): JsonSchema { let schema: JsonSchema = contactIndividualSchema; if (type === ContactTypes.CANDIDATE) { schema = contactCandidateSchema; From c714bdb7b7ffd882bf4f363e9a22abfb4806b1ee Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 1 Mar 2023 11:03:59 -0500 Subject: [PATCH 112/115] 876 code cleanup --- .../contact-detail.component.ts | 2 +- .../create-workflow/cash-on-hand.component.ts | 2 +- .../create-f3x-step1.component.ts | 10 +- .../report-level-memo.component.ts | 8 +- .../submit-f3x-step1.component.ts | 9 +- .../submit-f3x-step2.component.ts | 9 +- .../contact-form/contact-form.component.ts | 7 +- .../error-messages.component.spec.ts | 1 - .../transaction-contact-lookup.component.ts | 7 +- .../transaction-form.utils.ts | 10 +- .../app/shared/utils/validate.utils.spec.ts | 28 +++--- .../src/app/shared/utils/validate.utils.ts | 97 ++++++++++--------- 12 files changed, 87 insertions(+), 103 deletions(-) diff --git a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts index 5694b307db..e8411d0187 100644 --- a/front-end/src/app/contacts/contact-detail/contact-detail.component.ts +++ b/front-end/src/app/contacts/contact-detail/contact-detail.component.ts @@ -66,7 +66,7 @@ export class ContactDetailComponent { const payload: Contact = Contact.fromJSON({ ...this.contact, - ...ValidateUtils.getFormValues(this.form, undefined, + ...ValidateUtils.getFormValues(this.form, ContactService.getSchemaByType( this.form.get('type')?.value as ContactType)) }); diff --git a/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts b/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts index 6fd1458c62..5850d07405 100644 --- a/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts +++ b/front-end/src/app/reports/f3x/create-workflow/cash-on-hand.component.ts @@ -58,7 +58,7 @@ export class CashOnHandComponent implements OnInit, OnDestroy { const payload: F3xSummary = F3xSummary.fromJSON({ ...this.report, - ...ValidateUtils.getFormValues(this.form, this.formProperties, f3xSchema), + ...ValidateUtils.getFormValues(this.form, f3xSchema, this.formProperties), ...{ cash_on_hand_date: this.form.controls['cash_on_hand_date'].value, L6a_year_for_above_ytd: String(this.form.controls['cash_on_hand_date'].value.getYear() + 1900), diff --git a/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts b/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts index 863954b85e..0acb16fe6f 100644 --- a/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts +++ b/front-end/src/app/reports/f3x/create-workflow/create-f3x-step1.component.ts @@ -60,7 +60,7 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { protected router: Router, private activatedRoute: ActivatedRoute, private reportService: ReportService - ) {} + ) { } ngOnInit(): void { const reportId = this.activatedRoute.snapshot.data['reportId']; @@ -130,11 +130,7 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { } }); - for (const key in this.form.controls) { - this.form.get(key)?.addValidators( - ValidateUtils.formValidator(key, undefined, f3xSchema, this.form)); - } - this.form.updateValueAndValidity(); + ValidateUtils.addJsonSchemaValidators(this.form, f3xSchema, false); // Initialize validation tracking of current JSON schema and form data this.form.addValidators(this.buildCoverageDatesValidator()); @@ -249,7 +245,7 @@ export class CreateF3XStep1Component implements OnInit, OnDestroy { } const summary: F3xSummary = F3xSummary.fromJSON(ValidateUtils.getFormValues( - this.form, this.formProperties, f3xSchema)); + this.form, f3xSchema, this.formProperties)); // If a termination report, set the form_type appropriately. if (summary.report_code === F3xReportCodes.TER) { 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 e4db8d7889..d4c0a32965 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 @@ -75,11 +75,7 @@ export class ReportLevelMemoComponent implements OnInit, OnDestroy { } }); - for (const key in this.form.controls) { - this.form.get(key)?.addValidators( - ValidateUtils.formValidator(key, undefined, textSchema, this.form)); - } - this.form.updateValueAndValidity(); + ValidateUtils.addJsonSchemaValidators(this.form, textSchema, false); } ngOnDestroy(): void { @@ -96,7 +92,7 @@ export class ReportLevelMemoComponent implements OnInit, OnDestroy { const payload: MemoText = MemoText.fromJSON({ ...this.assignedMemoText, - ...ValidateUtils.getFormValues(this.form, this.formProperties, textSchema), + ...ValidateUtils.getFormValues(this.form, textSchema, this.formProperties), }); payload.report_id = this.report.id; 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 6081d246ef..9cda309c97 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 @@ -69,11 +69,7 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { this.buildEmailValidator('confirmation_email_2'), ]); - for (const key in this.form.controls) { - this.form.get(key)?.addValidators( - ValidateUtils.formValidator(key, undefined, f3xSchema, this.form)); - } - this.form.updateValueAndValidity(); + ValidateUtils.addJsonSchemaValidators(this.form, f3xSchema, false); } setDefaultFormValues(committeeAccount: CommitteeAccount) { @@ -149,7 +145,8 @@ export class SubmitF3xStep1Component implements OnInit, OnDestroy { } else { addressFields = { change_of_address: true, - ...ValidateUtils.getFormValues(this.form, this.formProperties, f3xSchema), + ...ValidateUtils.getFormValues(this.form, + f3xSchema, this.formProperties), }; } 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 e781a00c81..0e4d508860 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 @@ -78,11 +78,7 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { this.form.controls['filing_password'].addValidators(ValidateUtils.passwordValidator()); this.form.controls['truth_statement'].addValidators(Validators.requiredTrue); - for (const key in this.form.controls) { - this.form.get(key)?.addValidators( - ValidateUtils.formValidator(key, undefined, f3xSchema, this.form)); - } - this.form.updateValueAndValidity(); + ValidateUtils.addJsonSchemaValidators(this.form, f3xSchema, false); } setDefaultFormValues(committeeAccount: CommitteeAccount) { @@ -170,7 +166,8 @@ export class SubmitF3xStep2Component implements OnInit, OnDestroy { this.loading = 1; const payload: F3xSummary = F3xSummary.fromJSON({ ...this.report, - ...ValidateUtils.getFormValues(this.form, this.formProperties, f3xSchema), + ...ValidateUtils.getFormValues(this.form, + f3xSchema, this.formProperties), }); return this.f3xSummaryService.update(payload, this.formProperties); diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 25ee0ce2ab..f2e037d69d 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -63,12 +63,7 @@ export class ContactFormComponent implements OnInit, OnDestroy { .subscribe((value: string) => { const schema = ContactService.getSchemaByType( value as ContactTypes); - for (const key in this.form.controls) { - this.form.get(key)?.clearValidators(); - this.form.get(key)?.addValidators( - ValidateUtils.formValidator(key, undefined, schema, this.form)); - } - this.form.updateValueAndValidity(); + ValidateUtils.addJsonSchemaValidators(this.form, schema, true); // Clear out non-schema form values const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any diff --git a/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts b/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts index 41174a8bca..8af7da7a63 100644 --- a/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts +++ b/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts @@ -86,7 +86,6 @@ describe('ErrorMessagesComponent', () => { it('should present a unique error message when a negative contribution amount is required', () => { //This has to be done separately because a new exclusiveMaxErrorMessage has to be generated - const formValidatorSchema = testSchema; const fb: FormBuilder = new FormBuilder(); const formValidatorForm = fb.group(ValidateUtils.getFormGroupFields(['exclusive_negative_amount'])); component.form = formValidatorForm; diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts index 389aeb7743..cc81218c41 100644 --- a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts @@ -1,7 +1,8 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; -import { Contact, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; +import { Contact, ContactType, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; +import { ContactService } from 'app/shared/services/contact.service'; import { FecApiService } from 'app/shared/services/fec-api.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; import { ValidateUtils } from 'app/shared/utils/validate.utils'; @@ -78,7 +79,9 @@ export class TransactionContactLookupComponent { } const createdContact = Contact.fromJSON({ - ...ValidateUtils.getFormValues(this.createContactForm), + ...ValidateUtils.getFormValues(this.createContactForm, + ContactService.getSchemaByType( + this.createContactForm.get('type')?.value as ContactType)), }); this.contactSelect.emit({ value: createdContact, diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index 149fae1106..9e3b0b2031 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -93,11 +93,9 @@ export class TransactionFormUtils { }); const schema = transaction.transactionType?.schema; - for (const key in form.controls) { - form.get(key)?.addValidators( - ValidateUtils.formValidator(key, undefined, schema, form)); + if (schema) { + ValidateUtils.addJsonSchemaValidators(form, schema, false, transaction); } - form.updateValueAndValidity(); } static getPayloadTransaction( @@ -109,8 +107,8 @@ export class TransactionFormUtils { throw new Error('Fecfile: Payload transaction not found'); } - let formValues = ValidateUtils.getFormValues(form, formProperties, - transaction.transactionType?.schema); + let formValues = ValidateUtils.getFormValues(form, + transaction.transactionType?.schema, formProperties); formValues = TransactionMemoUtils.retrieveMemoText(transaction, form, formValues); const payload: ScheduleTransaction = getFromJSON({ diff --git a/front-end/src/app/shared/utils/validate.utils.spec.ts b/front-end/src/app/shared/utils/validate.utils.spec.ts index fed37207ca..331a398d1f 100644 --- a/front-end/src/app/shared/utils/validate.utils.spec.ts +++ b/front-end/src/app/shared/utils/validate.utils.spec.ts @@ -17,8 +17,8 @@ describe('ValidateUtils', () => { last_name: 'Valid Name', }); - let validator: ValidatorFn = ValidateUtils.formValidator('telephone', - undefined, formValidatorSchema, formValidatorForm); + let validator: ValidatorFn = ValidateUtils.jsonSchemaValidator('telephone', + formValidatorForm, formValidatorSchema); let result: ValidationErrors | null = validator(formValidatorForm.get('telephone') as FormControl); expect(result).not.toBe(null); @@ -26,16 +26,16 @@ describe('ValidateUtils', () => { expect(result['pattern'].requiredPattern).toBe('^\\+\\d{1,3} \\d{10}$'); } - validator = ValidateUtils.formValidator('candidate_state', - undefined, formValidatorSchema, formValidatorForm); + validator = ValidateUtils.jsonSchemaValidator('candidate_state', + formValidatorForm, formValidatorSchema); result = validator(formValidatorForm.get('candidate_state') as FormControl); expect(result).not.toBe(null); if (result) { expect(result['required']).toBe(true); } - validator = ValidateUtils.formValidator('last_name', - undefined, formValidatorSchema, formValidatorForm); + validator = ValidateUtils.jsonSchemaValidator('last_name', + formValidatorForm, formValidatorSchema); result = validator(formValidatorForm.get('last_name') as FormControl); expect(result).toBe(null); }); @@ -49,8 +49,8 @@ describe('ValidateUtils', () => { change_of_address: 'A', }); - let validator: ValidatorFn = ValidateUtils.formValidator('change_of_address', - undefined, formValidatorSchema, formValidatorForm); + let validator: ValidatorFn = ValidateUtils.jsonSchemaValidator('change_of_address', + formValidatorForm, formValidatorSchema); let result: ValidationErrors | null = validator( formValidatorForm.get('change_of_address') as FormControl); expect(result).not.toBe(null); @@ -61,8 +61,8 @@ describe('ValidateUtils', () => { formValidatorForm.patchValue({ change_of_address: true, }); - validator = ValidateUtils.formValidator('change_of_address', - undefined, formValidatorSchema, formValidatorForm); + validator = ValidateUtils.jsonSchemaValidator('change_of_address', + formValidatorForm, formValidatorSchema); result = validator(formValidatorForm.get('change_of_address') as FormControl); expect(result).toBe(null); }); @@ -76,8 +76,8 @@ describe('ValidateUtils', () => { L6a_cash_on_hand_jan_1_ytd: 1000000000.0, }); - let validator: ValidatorFn = ValidateUtils.formValidator('L6a_cash_on_hand_jan_1_ytd', - undefined, formValidatorSchema, formValidatorForm); + let validator: ValidatorFn = ValidateUtils.jsonSchemaValidator('L6a_cash_on_hand_jan_1_ytd', + formValidatorForm, formValidatorSchema); let result: ValidationErrors | null = validator( formValidatorForm.get('L6a_cash_on_hand_jan_1_ytd') as FormControl ); @@ -89,8 +89,8 @@ describe('ValidateUtils', () => { formValidatorForm.patchValue({ L6a_cash_on_hand_jan_1_ytd: -200.0, }); - validator = ValidateUtils.formValidator('L6a_cash_on_hand_jan_1_ytd', - undefined, formValidatorSchema, formValidatorForm); + validator = ValidateUtils.jsonSchemaValidator('L6a_cash_on_hand_jan_1_ytd', + formValidatorForm, formValidatorSchema); result = validator(formValidatorForm.get('L6a_cash_on_hand_jan_1_ytd') as FormControl); if (result) { expect(result['min'].min).toBe(0); diff --git a/front-end/src/app/shared/utils/validate.utils.ts b/front-end/src/app/shared/utils/validate.utils.ts index 39aea01900..75a96aec96 100644 --- a/front-end/src/app/shared/utils/validate.utils.ts +++ b/front-end/src/app/shared/utils/validate.utils.ts @@ -6,18 +6,6 @@ import { DateUtils } from './date.utils'; export class ValidateUtils { - /** - * Validate a data object against a JSON Schema document - * @param {JsonSchema} schema - * @param data - * @param {string[]} fieldsToValidate - * @returns {ValidationError[]} array of validation errors if any - */ - // prettier-ignore - static validate(schema: JsonSchema, data: any, fieldsToValidate: string[] = []): ValidationError[] { // eslint-disable-line @typescript-eslint/no-explicit-any - return validate(schema, data, fieldsToValidate); - } - /** * Returns an array of the property fields for a given JSON schema. * @param {JsonSchema} schema @@ -36,31 +24,28 @@ export class ValidateUtils { * @param {string[]} properties * @returns data structure to pass to the FormBuilder group() method */ - static getFormGroupFields(properties: string[], transaction?: Transaction, - formValidatorSchema?: JsonSchema, formValidatorForm?: FormGroup) { + static getFormGroupFields(properties: string[]) { const group: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - properties.forEach((property) => (group[property] = ['', - [ValidateUtils.formValidator(property, transaction, - formValidatorSchema, formValidatorForm)]])); + properties.forEach((property) => (group[property] = ['', null])); return group; } /** * * @param {FormGroup} form + * @param {JsonSchema} jsonSchema - the schema to use in the form element custom validator. * @param {string[]} propertiesSubset - Only get values for the listed subset of schema parameters. - * @param {JsonSchema} formValidatorSchema - the schema to use in the form element custom validator. * @returns object containing the form property values limited to the current validation schema * This method will 'null' any schema values that do not have a form value and, more importantly, * set those form fields with an empty '' value to null for the backend. It will also convert * strings to number types when necessary. */ - static getFormValues(form: FormGroup, propertiesSubset: string[] = [], - formValidatorSchema?: JsonSchema) { + static getFormValues(form: FormGroup, jsonSchema?: JsonSchema, + propertiesSubset: string[] = []) { const formValues: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any - if (formValidatorSchema) { - ValidateUtils.getSchemaProperties(formValidatorSchema).forEach((property: string) => { + if (jsonSchema) { + ValidateUtils.getSchemaProperties(jsonSchema).forEach((property: string) => { if (propertiesSubset.length > 0 && !propertiesSubset.includes(property)) { return; } @@ -78,7 +63,7 @@ export class ValidateUtils { * for validation of form fields. */ static getNonFormValues(transaction?: Transaction) { - const values: any = {}; + const values: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any if (transaction) { values['transaction_type_identifier'] = transaction.transaction_type_identifier; @@ -90,11 +75,11 @@ export class ValidateUtils { * Convert the form input value to the appropriate type. * @param {string} property * @param {FromGroup} form - * @param {JsonSchema} formValidatorSchema - the schema to use in the form element custom validator. + * @param {JsonSchema} jsonSchema - the schema to use in the form element custom validator. * @returns */ private static getPropertyValue(property: string, form: FormGroup, - formValidatorSchema?: JsonSchema) { + jsonSchema?: JsonSchema) { // Undefined and empty strings are set to null. if ( form?.get(property)?.value === undefined || @@ -106,9 +91,9 @@ export class ValidateUtils { // Convert a string to number if expected in the schema. if ( - (Array.isArray(formValidatorSchema?.properties[property].type) && - formValidatorSchema?.properties[property].type.includes('number')) || - formValidatorSchema?.properties[property].type === 'number' + (Array.isArray(jsonSchema?.properties[property].type) && + jsonSchema?.properties[property].type.includes('number')) || + jsonSchema?.properties[property].type === 'number' ) { return Number(form?.get(property)?.value); } @@ -122,32 +107,50 @@ export class ValidateUtils { return form?.get(property)?.value; } + /** + * This method adds JSON schema validators to a form + * for the JsonSchema passed in, removing existing + * validators first (if clearExistingValidators === true). + * @param form formGroup to add validators to. + * @param jsonSchema JSON schema to add validators for. + * @param clearExistingValidators flag specifying whether + * @param transaction (if any) to add validators for. + * to remove existing form validators first for each field. + */ + static addJsonSchemaValidators(form: FormGroup, + jsonSchema: JsonSchema, clearExistingValidators: boolean, + transaction?: Transaction) { + for (const key in form.controls) { + if (clearExistingValidators) { + form.get(key)?.clearValidators(); + } + form.get(key)?.addValidators( + ValidateUtils.jsonSchemaValidator(key, form, + jsonSchema, transaction)); + } + form.updateValueAndValidity(); + } + /** * ng validator function for reactive forms. Provides validation based on the - * JSON schema and form in the formValidationSchema and formValidationForm properties + * JSON schema and form in the jsonSchema and formGroup properties * @param {string} property - name of form property to validate - * @param {Transaction} transaction - Transaction (if any) associated with the property passed in. - * @param {JsonSchema} formValidatorSchema - the schema to use in the form element custom validator. - * @param {FormGroup} formValidatorForm - the ng reactive form to use in the form element custom - * validator - * @returns {ValidationErrors | undefined} + * @param {JsonSchema} jsonSchema - the schema to use in the form element custom validator. + * @param {FormGroup} form - the ng reactive form to use in the form element custom validator + * @param {Transaction} transaction - Transaction (if any) associated with the property passed in. + * @returns {ValidationErrors | undefined} generated by the Ajv validation library */ - static formValidator(property: string, transaction?: Transaction, - formValidatorSchema?: JsonSchema, formValidatorForm?: FormGroup): ValidatorFn { + static jsonSchemaValidator(property: string, form: FormGroup, + jsonSchema: JsonSchema, transaction?: Transaction): ValidatorFn { return (): ValidationErrors | null => { - if (!formValidatorSchema || !formValidatorForm) { + if (!jsonSchema || !form) { return null; } const data = { - ...ValidateUtils.getFormValues( - formValidatorForm, undefined, formValidatorSchema), + ...ValidateUtils.getFormValues(form, jsonSchema), ...ValidateUtils.getNonFormValues(transaction) } - const errors: ValidationError[] = ValidateUtils.validate( - formValidatorSchema, - data, - [property] - ); + const errors: ValidationError[] = validate(jsonSchema, data, [property]); if (errors.length) { const result: ValidationErrors = {}; @@ -183,9 +186,9 @@ export class ValidateUtils { } if (error.keyword === 'type' && error.params['type'] === 'number') { if ( - formValidatorForm?.get(error.path)?.value === '' || - formValidatorForm?.get(error.path)?.value === null || - formValidatorForm?.get(error.path)?.value === undefined + form?.get(error.path)?.value === '' || + form?.get(error.path)?.value === null || + form?.get(error.path)?.value === undefined ) { result['required'] = true; } else { From a86634100bda091e032fd3abbf65469ecdf80818 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 1 Mar 2023 11:36:35 -0500 Subject: [PATCH 113/115] 876 fix unit tests --- .../contact-form/contact-form.component.spec.ts | 12 ------------ .../error-messages/error-messages.component.spec.ts | 7 ++++--- .../src/app/shared/services/contact.service.spec.ts | 6 +++--- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts index 646a1a8ca9..851277d488 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.spec.ts @@ -2,7 +2,6 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { provideMockStore } from '@ngrx/store/testing'; -import { JsonSchema } from 'app/shared/interfaces/json-schema.interface'; import { Candidate } from 'app/shared/models/candidate.model'; import { CommitteeAccount } from 'app/shared/models/committee-account.model'; import { CandidateOfficeTypes, Contact, ContactTypes, FecApiCandidateLookupData, FecApiCommitteeLookupData } from 'app/shared/models/contact.model'; @@ -89,17 +88,6 @@ describe('ContactFormComponent', () => { expect(component.form.get('state')?.value).toBe('ZZ'); }); - it('#getSchemaByType should return the correct schema', () => { - let schema: JsonSchema = component['getSchemaByType'](ContactTypes.COMMITTEE); - expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Committee.json'); - - schema = component['getSchemaByType'](ContactTypes.ORGANIZATION); - expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Organization.json'); - - schema = component['getSchemaByType'](ContactTypes.CANDIDATE); - expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Candidate.json'); - }); - it('#onContactLookupSelect CANDIDATE Contact happy path', () => { const testContact = new Contact(); const testLastName = "testLastName"; diff --git a/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts b/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts index 8af7da7a63..d934144cfa 100644 --- a/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts +++ b/front-end/src/app/shared/components/error-messages/error-messages.component.spec.ts @@ -55,12 +55,12 @@ describe('ErrorMessagesComponent', () => { }); it('should provide default error messages', () => { - const formValidatorSchema = testSchema; const fb: FormBuilder = new FormBuilder(); const formValidatorForm = fb.group( - ValidateUtils.getFormGroupFields(['in_between', - 'low_high', 'exclusive_low_high', 'exclusive_negative_amount']) + ValidateUtils.getFormGroupFields(['in_between', + 'low_high', 'exclusive_low_high', 'exclusive_negative_amount']) ); + ValidateUtils.addJsonSchemaValidators(formValidatorForm, testSchema, false); component.form = formValidatorForm; component.fieldName = 'in_between'; component.ngOnInit(); @@ -88,6 +88,7 @@ describe('ErrorMessagesComponent', () => { //This has to be done separately because a new exclusiveMaxErrorMessage has to be generated const fb: FormBuilder = new FormBuilder(); const formValidatorForm = fb.group(ValidateUtils.getFormGroupFields(['exclusive_negative_amount'])); + ValidateUtils.addJsonSchemaValidators(formValidatorForm, testSchema, false); component.form = formValidatorForm; component.fieldName = 'exclusive_negative_amount'; component.ngOnInit(); diff --git a/front-end/src/app/shared/services/contact.service.spec.ts b/front-end/src/app/shared/services/contact.service.spec.ts index 883e26c7b5..5130281c65 100644 --- a/front-end/src/app/shared/services/contact.service.spec.ts +++ b/front-end/src/app/shared/services/contact.service.spec.ts @@ -176,13 +176,13 @@ describe('ContactService', () => { }); it('#getSchemaByType should return the correct schema', () => { - let schema: JsonSchema = service.getSchemaByType(ContactTypes.COMMITTEE); + let schema: JsonSchema = ContactService.getSchemaByType(ContactTypes.COMMITTEE); expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Committee.json'); - schema = service.getSchemaByType(ContactTypes.ORGANIZATION); + schema = ContactService.getSchemaByType(ContactTypes.ORGANIZATION); expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Organization.json'); - schema = service.getSchemaByType(ContactTypes.CANDIDATE); + schema = ContactService.getSchemaByType(ContactTypes.CANDIDATE); expect(schema.$id).toBe('https://github.com/fecgov/fecfile-validate/blob/main/schema/Contact_Candidate.json'); }); From 7535201a0116aafd8229f18c5f8f0f0a566d4558 Mon Sep 17 00:00:00 2001 From: David Heitzer Date: Wed, 1 Mar 2023 12:22:02 -0500 Subject: [PATCH 114/115] 876 local testing fix --- front-end/src/app/shared/utils/validate.utils.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/front-end/src/app/shared/utils/validate.utils.ts b/front-end/src/app/shared/utils/validate.utils.ts index 75a96aec96..95ea3fee91 100644 --- a/front-end/src/app/shared/utils/validate.utils.ts +++ b/front-end/src/app/shared/utils/validate.utils.ts @@ -49,7 +49,8 @@ export class ValidateUtils { if (propertiesSubset.length > 0 && !propertiesSubset.includes(property)) { return; } - formValues[property] = ValidateUtils.getPropertyValue(property, form); + formValues[property] = ValidateUtils.getPropertyValue( + property, form, jsonSchema); }); } @@ -143,9 +144,6 @@ export class ValidateUtils { static jsonSchemaValidator(property: string, form: FormGroup, jsonSchema: JsonSchema, transaction?: Transaction): ValidatorFn { return (): ValidationErrors | null => { - if (!jsonSchema || !form) { - return null; - } const data = { ...ValidateUtils.getFormValues(form, jsonSchema), ...ValidateUtils.getNonFormValues(transaction) From 57fdc63aaf7b4fecf1c3c2d2d3cdc62150b51871 Mon Sep 17 00:00:00 2001 From: toddlees Date: Mon, 13 Mar 2023 12:41:58 -0400 Subject: [PATCH 115/115] updates validate hash to most recent sprint 21 hash --- front-end/package-lock.json | 1098 ++++++++++++++++++++--------------- front-end/package.json | 2 +- 2 files changed, 627 insertions(+), 473 deletions(-) diff --git a/front-end/package-lock.json b/front-end/package-lock.json index 3bb30b89ad..7432de6532 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#93df5f252838bda7a7ee99ad941fffb80f4897e8", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#4f4595f250eb39ecdddf393047a3e763662431b9", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -695,9 +695,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", - "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", "dev": true, "engines": { "node": ">=6.9.0" @@ -824,15 +824,15 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", - "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -846,13 +846,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz", + "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "regexpu-core": "^5.3.1" }, "engines": { "node": ">=6.9.0" @@ -909,13 +909,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -948,12 +948,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -972,9 +972,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -983,8 +983,8 @@ "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" }, "engines": { "node": ">=6.9.0" @@ -1129,9 +1129,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1167,14 +1167,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "dependencies": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -1209,9 +1209,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1287,12 +1287,12 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", - "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1435,9 +1435,9 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", - "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -1468,13 +1468,13 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1741,9 +1741,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", - "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1756,15 +1756,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", - "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-replace-supers": "^7.20.7", @@ -1871,12 +1871,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", + "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1949,12 +1949,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", - "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", + "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-module-transforms": "^7.21.2", "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-simple-access": "^7.20.2" }, @@ -2390,19 +2390,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.1", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2411,13 +2411,14 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -2439,9 +2440,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -2936,15 +2937,39 @@ "node": ">=10.0.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -3048,6 +3073,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -3321,9 +3355,9 @@ } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" @@ -3397,18 +3431,18 @@ } }, "node_modules/@nrwl/cli": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", - "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.7.tgz", + "integrity": "sha512-wkVa2VpAgNs8p3piOtILY622HqPQmZFfcoLeQ1B6OaUWKXDyFEcYIoFmIblXQKhhQVkBHC8NJyMt0zfRkPvVBA==", "dev": true, "dependencies": { - "nx": "14.8.6" + "nx": "14.8.7" } }, "node_modules/@nrwl/devkit": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", - "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.7.tgz", + "integrity": "sha512-VTE+1IAdv/S3r7VzX/3Mlyyfzbq7mpQxk9mDrm6lSQVsMbOht8ItlZG8fO/viCQjx7LWu0BzyR8g0aUC3OmVpA==", "dev": true, "dependencies": { "@phenomnomnominal/tsquery": "4.1.1", @@ -3421,12 +3455,12 @@ } }, "node_modules/@nrwl/tao": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", - "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.7.tgz", + "integrity": "sha512-M6uro//M7zebnemDHwbR0dFTTOG6Y332MPknYNnr3FYgmqt/BdNoA7vXia6BdrfP6uNqKCPY/HMgRW0tiMUzcg==", "dev": true, "dependencies": { - "nx": "14.8.6" + "nx": "14.8.7" }, "bin": { "tao": "index.js" @@ -3720,9 +3754,9 @@ } }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", "dev": true, "dependencies": { "@types/node": "*" @@ -3822,9 +3856,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", "dev": true, "dependencies": { "@types/mime": "*", @@ -4342,9 +4376,9 @@ "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.39", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", - "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", + "version": "3.0.0-rc.40", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.40.tgz", + "integrity": "sha512-sKbi5XhHKXCjzb5m0ftGuQuODM2iUXEsrCSl8MkKexNWHepCmU3IPaGTPC5gHZy4sOvsb9JqTLaZEez+kDzG+Q==", "dev": true, "dependencies": { "js-yaml": "^3.10.0", @@ -4467,28 +4501,19 @@ } }, "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", "dev": true, "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { "node": ">= 8.0.0" } }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -4764,9 +4789,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "funding": [ { @@ -4779,8 +4804,8 @@ } ], "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -4821,9 +4846,9 @@ } }, "node_modules/axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -5049,13 +5074,13 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -5063,7 +5088,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -5275,9 +5300,9 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" @@ -5324,9 +5349,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001456", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", - "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", + "version": "1.0.30001465", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001465.tgz", + "integrity": "sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==", "dev": true, "funding": [ { @@ -5920,9 +5945,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz", - "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", "dev": true, "dependencies": { "browserslist": "^4.21.5" @@ -6356,9 +6381,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "version": "14.18.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.37.tgz", + "integrity": "sha512-7GgtHCs/QZrBrDzgIJnQtuSvhFSwhyYSI2uafSwZoNt1iOGhEN5fwNrQMjtONyHm9+/LoA4453jH0CMYcr06Pg==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -6854,9 +6879,9 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -6869,9 +6894,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.301", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz", - "integrity": "sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA==", + "version": "1.4.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz", + "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==", "dev": true }, "node_modules/emoji-regex": { @@ -6931,9 +6956,9 @@ } }, "node_modules/engine.io": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", - "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", + "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -7457,12 +7482,15 @@ } }, "node_modules/eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7473,10 +7501,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -7497,7 +7524,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -7828,9 +7854,9 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "dependencies": { "acorn": "^8.8.0", @@ -7858,9 +7884,9 @@ } }, "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -8036,6 +8062,30 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/express/node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -8093,6 +8143,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -8228,8 +8293,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#93df5f252838bda7a7ee99ad941fffb80f4897e8", - "integrity": "sha512-N3jGb5vsXvYWoYjGZYTkg4lnjIh7CeVnuSt+N/WAXGBpnpfHb5sxSJdv5EJv5X4lyTaXn+BdLMTtzUCBKMtaDw==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#4f4595f250eb39ecdddf393047a3e763662431b9", + "integrity": "sha512-ouYi7GGsPsn31xWciY63B0DmY2RcwjmZ3xa1tzByE6aUvvKjFmgB2b2CBrm+qakbmMi4eZNSdP8qq5znHwne9Q==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -8818,9 +8883,9 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" @@ -8839,9 +8904,9 @@ } }, "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -9111,9 +9176,9 @@ "dev": true }, "node_modules/immutable": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", - "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", "dev": true }, "node_modules/import-fresh": { @@ -9303,9 +9368,9 @@ "dev": true }, "node_modules/intl-tel-input": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-17.0.19.tgz", - "integrity": "sha512-GBNoUT4JVgm2e1N+yFMaBQ24g5EQfZhDznGneCM9IEZwfKsMUAUa1dS+v0wOiKpRAZ5IPNLJMIEEFGgqlCI22A==" + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-17.0.21.tgz", + "integrity": "sha512-TfyPxLe41QZPOf6RqBxRE2dpQ0FThB/PBD/gRbxVhGW7IuYg30QD90x/vjmEo4vkZw7j8etxpVcjIZVRcG+Otw==" }, "node_modules/ip": { "version": "2.0.0", @@ -10825,16 +10890,16 @@ } }, "node_modules/log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.3" + "streamroller": "^3.1.5" }, "engines": { "node": ">=8.0" @@ -10945,9 +11010,9 @@ } }, "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" @@ -11567,9 +11632,9 @@ } }, "node_modules/mochawesome-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.2.2.tgz", - "integrity": "sha512-ZHeZcChGhb3If7fjSVuyB9rmDH86inNtsTb1ONYq1h0L1IduldFu38bJDcow46alMpiYQgJ7cPhv6nwpCwbJQw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.3.0.tgz", + "integrity": "sha512-1roR6g+VUlfdaRmL8dCiVpKiaUhbPVm1ZQYUM6zHX46mWk+tpsKVZR6ba98k2zc8nlPvYd71yn5gyH970pKBSw==", "dev": true, "dependencies": { "fs-extra": "^7.0.1", @@ -12428,14 +12493,14 @@ } }, "node_modules/nx": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", - "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.7.tgz", + "integrity": "sha512-5Q+u2mcrI4l54VR7trtp3KBNAZknIAi3XFka5h7lp3m1gZbt++Ij27GCLleKPgOVnDRs0fFayyNgpKTGGHRq1A==", "dev": true, "hasInstallScript": true, "dependencies": { - "@nrwl/cli": "14.8.6", - "@nrwl/tao": "14.8.6", + "@nrwl/cli": "14.8.7", + "@nrwl/tao": "14.8.7", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "^3.0.0-rc.18", @@ -14231,9 +14296,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -14396,9 +14461,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -14491,9 +14556,9 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", - "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", @@ -14727,12 +14792,12 @@ } }, "node_modules/robots-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.0.tgz", - "integrity": "sha512-6xkze3WRdneibICBAzMKcXyTKQw5shA3GbwoEJy7RSvxpZNGF0GMuYKE1T0VMP4fwx/fQs0n0mtriOqRtk5L1w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz", + "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==", "dev": true, "engines": { - "node": ">=0.10" + "node": ">=10.0.0" } }, "node_modules/run-async": { @@ -15262,15 +15327,15 @@ } }, "node_modules/socket.io": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", - "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", + "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.4.0", + "engine.io": "~6.4.1", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" }, @@ -15460,9 +15525,9 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -15486,9 +15551,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, "node_modules/spdx-ranges": { @@ -15909,9 +15974,9 @@ } }, "node_modules/tar/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", "dev": true, "engines": { "node": ">=8" @@ -15957,16 +16022,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "engines": { "node": ">= 10.13.0" @@ -16015,6 +16080,12 @@ "ajv": "^6.9.1" } }, + "node_modules/terser-webpack-plugin/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -16039,6 +16110,24 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -16211,13 +16300,13 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } @@ -16344,9 +16433,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", + "integrity": "sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==", "dev": true, "funding": [ { @@ -16808,9 +16897,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "engines": { "node": ">=10.0.0" @@ -17651,9 +17740,9 @@ } }, "@babel/compat-data": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", - "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", "dev": true }, "@babel/core": { @@ -17752,15 +17841,15 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", - "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -17768,13 +17857,13 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz", + "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "regexpu-core": "^5.3.1" } }, "@babel/helper-define-polyfill-provider": { @@ -17815,13 +17904,13 @@ } }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "dependencies": { "@babel/template": { @@ -17847,12 +17936,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, "requires": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.21.0" } }, "@babel/helper-module-imports": { @@ -17865,9 +17954,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -17876,8 +17965,8 @@ "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" }, "dependencies": { "@babel/template": { @@ -17987,9 +18076,9 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true }, "@babel/helper-wrap-function": { @@ -18018,14 +18107,14 @@ } }, "@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "requires": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "dependencies": { "@babel/template": { @@ -18053,9 +18142,9 @@ } }, "@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -18101,12 +18190,12 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", - "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" } @@ -18195,9 +18284,9 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", - "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", @@ -18216,13 +18305,13 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } @@ -18402,24 +18491,24 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", - "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", - "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-replace-supers": "^7.20.7", @@ -18489,12 +18578,12 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", + "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-function-name": { @@ -18537,12 +18626,12 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", - "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", + "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-module-transforms": "^7.21.2", "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-simple-access": "^7.20.2" } @@ -18853,31 +18942,32 @@ } }, "@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.1", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, "requires": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" } }, @@ -18895,9 +18985,9 @@ } }, "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", @@ -19217,15 +19307,30 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -19303,6 +19408,12 @@ } } }, + "@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -19516,9 +19627,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true } } @@ -19572,18 +19683,18 @@ } }, "@nrwl/cli": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", - "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.7.tgz", + "integrity": "sha512-wkVa2VpAgNs8p3piOtILY622HqPQmZFfcoLeQ1B6OaUWKXDyFEcYIoFmIblXQKhhQVkBHC8NJyMt0zfRkPvVBA==", "dev": true, "requires": { - "nx": "14.8.6" + "nx": "14.8.7" } }, "@nrwl/devkit": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", - "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.7.tgz", + "integrity": "sha512-VTE+1IAdv/S3r7VzX/3Mlyyfzbq7mpQxk9mDrm6lSQVsMbOht8ItlZG8fO/viCQjx7LWu0BzyR8g0aUC3OmVpA==", "dev": true, "requires": { "@phenomnomnominal/tsquery": "4.1.1", @@ -19593,12 +19704,12 @@ } }, "@nrwl/tao": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", - "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.7.tgz", + "integrity": "sha512-M6uro//M7zebnemDHwbR0dFTTOG6Y332MPknYNnr3FYgmqt/BdNoA7vXia6BdrfP6uNqKCPY/HMgRW0tiMUzcg==", "dev": true, "requires": { - "nx": "14.8.6" + "nx": "14.8.7" } }, "@parcel/watcher": { @@ -19858,9 +19969,9 @@ } }, "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", "dev": true, "requires": { "@types/node": "*" @@ -19960,9 +20071,9 @@ } }, "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", "dev": true, "requires": { "@types/mime": "*", @@ -20344,9 +20455,9 @@ "dev": true }, "@yarnpkg/parsers": { - "version": "3.0.0-rc.39", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", - "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", + "version": "3.0.0-rc.40", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.40.tgz", + "integrity": "sha512-sKbi5XhHKXCjzb5m0ftGuQuODM2iUXEsrCSl8MkKexNWHepCmU3IPaGTPC5gHZy4sOvsb9JqTLaZEez+kDzG+Q==", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -20445,22 +20556,14 @@ } }, "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", "dev": true, "requires": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - } } }, "aggregate-error": { @@ -20655,13 +20758,13 @@ "dev": true }, "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -20687,9 +20790,9 @@ "dev": true }, "axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -20867,13 +20970,13 @@ "dev": true }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -20881,7 +20984,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -21037,9 +21140,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true } } @@ -21073,9 +21176,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001456", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", - "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", + "version": "1.0.30001465", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001465.tgz", + "integrity": "sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==", "dev": true }, "caseless": { @@ -21514,9 +21617,9 @@ } }, "core-js-compat": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz", - "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", "dev": true, "requires": { "browserslist": "^4.21.5" @@ -21817,9 +21920,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "version": "14.18.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.37.tgz", + "integrity": "sha512-7GgtHCs/QZrBrDzgIJnQtuSvhFSwhyYSI2uafSwZoNt1iOGhEN5fwNrQMjtONyHm9+/LoA4453jH0CMYcr06Pg==", "dev": true }, "ansi-styles": { @@ -22214,18 +22317,18 @@ "dev": true }, "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "requires": { "jake": "^10.8.5" } }, "electron-to-chromium": { - "version": "1.4.301", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz", - "integrity": "sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA==", + "version": "1.4.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz", + "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==", "dev": true }, "emoji-regex": { @@ -22278,9 +22381,9 @@ } }, "engine.io": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", - "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", + "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -22572,12 +22675,15 @@ "dev": true }, "eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -22588,10 +22694,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -22612,7 +22717,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -22838,9 +22942,9 @@ "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -22855,9 +22959,9 @@ "dev": true }, "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -23001,6 +23105,26 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, "cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -23046,6 +23170,18 @@ "side-channel": "^1.0.4" } }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -23158,9 +23294,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#93df5f252838bda7a7ee99ad941fffb80f4897e8", - "integrity": "sha512-N3jGb5vsXvYWoYjGZYTkg4lnjIh7CeVnuSt+N/WAXGBpnpfHb5sxSJdv5EJv5X4lyTaXn+BdLMTtzUCBKMtaDw==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#93df5f252838bda7a7ee99ad941fffb80f4897e8", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#4f4595f250eb39ecdddf393047a3e763662431b9", + "integrity": "sha512-ouYi7GGsPsn31xWciY63B0DmY2RcwjmZ3xa1tzByE6aUvvKjFmgB2b2CBrm+qakbmMi4eZNSdP8qq5znHwne9Q==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#4f4595f250eb39ecdddf393047a3e763662431b9", "requires": { "ajv": "^8.11.0" } @@ -23606,9 +23742,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true } } @@ -23626,9 +23762,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -23836,9 +23972,9 @@ "dev": true }, "immutable": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", - "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", "dev": true }, "import-fresh": { @@ -23989,9 +24125,9 @@ "dev": true }, "intl-tel-input": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-17.0.19.tgz", - "integrity": "sha512-GBNoUT4JVgm2e1N+yFMaBQ24g5EQfZhDznGneCM9IEZwfKsMUAUa1dS+v0wOiKpRAZ5IPNLJMIEEFGgqlCI22A==" + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-17.0.21.tgz", + "integrity": "sha512-TfyPxLe41QZPOf6RqBxRE2dpQ0FThB/PBD/gRbxVhGW7IuYg30QD90x/vjmEo4vkZw7j8etxpVcjIZVRcG+Otw==" }, "ip": { "version": "2.0.0", @@ -25158,16 +25294,16 @@ } }, "log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, "requires": { "date-format": "^4.0.14", "debug": "^4.3.4", "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.3" + "streamroller": "^3.1.5" } }, "lookup-closest-locale": { @@ -25256,9 +25392,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz", - "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true } } @@ -25779,9 +25915,9 @@ } }, "mochawesome-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.2.2.tgz", - "integrity": "sha512-ZHeZcChGhb3If7fjSVuyB9rmDH86inNtsTb1ONYq1h0L1IduldFu38bJDcow46alMpiYQgJ7cPhv6nwpCwbJQw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.3.0.tgz", + "integrity": "sha512-1roR6g+VUlfdaRmL8dCiVpKiaUhbPVm1ZQYUM6zHX46mWk+tpsKVZR6ba98k2zc8nlPvYd71yn5gyH970pKBSw==", "dev": true, "requires": { "fs-extra": "^7.0.1", @@ -26389,13 +26525,13 @@ } }, "nx": { - "version": "14.8.6", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", - "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", + "version": "14.8.7", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.7.tgz", + "integrity": "sha512-5Q+u2mcrI4l54VR7trtp3KBNAZknIAi3XFka5h7lp3m1gZbt++Ij27GCLleKPgOVnDRs0fFayyNgpKTGGHRq1A==", "dev": true, "requires": { - "@nrwl/cli": "14.8.6", - "@nrwl/tao": "14.8.6", + "@nrwl/cli": "14.8.7", + "@nrwl/tao": "14.8.7", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "^3.0.0-rc.18", @@ -27630,9 +27766,9 @@ "dev": true }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "requires": { "bytes": "3.1.2", @@ -27773,9 +27909,9 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -27852,9 +27988,9 @@ "dev": true }, "regexpu-core": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", - "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", @@ -28036,9 +28172,9 @@ } }, "robots-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.0.tgz", - "integrity": "sha512-6xkze3WRdneibICBAzMKcXyTKQw5shA3GbwoEJy7RSvxpZNGF0GMuYKE1T0VMP4fwx/fQs0n0mtriOqRtk5L1w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz", + "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==", "dev": true }, "run-async": { @@ -28432,15 +28568,15 @@ "dev": true }, "socket.io": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", - "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", + "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.4.0", + "engine.io": "~6.4.1", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" } @@ -28585,9 +28721,9 @@ } }, "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -28611,9 +28747,9 @@ } }, "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, "spdx-ranges": { @@ -28907,9 +29043,9 @@ }, "dependencies": { "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", "dev": true }, "yallist": { @@ -28989,16 +29125,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "dependencies": { "ajv": { @@ -29020,6 +29156,12 @@ "dev": true, "requires": {} }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -29036,6 +29178,18 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "terser": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } } } }, @@ -29174,13 +29328,13 @@ "dev": true }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, @@ -29280,9 +29434,9 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", + "integrity": "sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==", "dev": true }, "unbzip2-stream": { @@ -29650,9 +29804,9 @@ } }, "ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "requires": {} } diff --git a/front-end/package.json b/front-end/package.json index 77189a21be..19f5da95e8 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#93df5f252838bda7a7ee99ad941fffb80f4897e8", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#4f4595f250eb39ecdddf393047a3e763662431b9", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21",