From 208d19a4aa42b00e1cfad2b8145e9e9856e2b32e Mon Sep 17 00:00:00 2001 From: Travis Semple Date: Mon, 16 Oct 2023 10:29:53 -0700 Subject: [PATCH 01/55] =?UTF-8?q?17347=20-=20Move=20COA=20and=20COD=20corr?= =?UTF-8?q?ections=20for=20COOPS=20into=20the=20generic=20correction=20wo?= =?UTF-8?q?=E2=80=A6=20(#549)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move COA and COD corrections for COOPS into the generic correction workflow. --- src/components/Dashboard/FilingHistoryList/HeaderActions.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/Dashboard/FilingHistoryList/HeaderActions.vue b/src/components/Dashboard/FilingHistoryList/HeaderActions.vue index 2ce6a54c1..b9e01d424 100644 --- a/src/components/Dashboard/FilingHistoryList/HeaderActions.vue +++ b/src/components/Dashboard/FilingHistoryList/HeaderActions.vue @@ -154,9 +154,8 @@ export default class HeaderActions extends Mixins(AllowableActionsMixin) { case FilingTypes.CHANGE_OF_ADDRESS: case FilingTypes.CHANGE_OF_DIRECTORS: - if (this.isBenBcCccUlc) { - // correction via Edit UI if current type is BC, CC, ULC, or BEN - // To-Do for the future: Revisit this when we do Coop corrections in Edit UI + if (this.isBenBcCccUlc || this.isCoop) { + // correction via Edit UI if current type is BC, CC, ULC, BEN or COOP this.setCurrentFiling(filing) this.setFileCorrectionDialog(true) break From 3f71127479e8be18dd5e97c105db82b6749f6dda Mon Sep 17 00:00:00 2001 From: Travis Semple Date: Mon, 16 Oct 2023 11:09:37 -0700 Subject: [PATCH 02/55] 17347 - Add in isCoop check for resume button. (#550) * Add in isCoop check for resume button. * Fix code complexity issues * Fix code complexity --- src/components/Dashboard/TodoList.vue | 58 ++++++++++++++------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/src/components/Dashboard/TodoList.vue b/src/components/Dashboard/TodoList.vue index b244538a6..7ceafe0fe 100644 --- a/src/components/Dashboard/TodoList.vue +++ b/src/components/Dashboard/TodoList.vue @@ -1677,8 +1677,7 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E case FilingNames.CHANGE_OF_ADDRESS: case FilingNames.CHANGE_OF_DIRECTORS: - if (this.isBenBcCccUlc) { - // To-Do for the future: Revisit this when we do Coop corrections in Edit UI + if (this.isBenBcCccUlc || this.isCoop) { navigateToCorrectionEditUi(this.getEditUrl, this.getIdentifier) break } else { @@ -1746,33 +1745,9 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E break } - case FilingTypes.RESTORATION: { - let restorationType: FilingSubTypes - - /** - * Type assertion is done to fix TypeScript error. - * "This condition will always return 'false' since the types - * 'FilingSubTypes' and 'RestorationTypes' have no overlap." - */ - if (item.filingSubType === FilingSubTypes.FULL_RESTORATION) { - restorationType = FilingSubTypes.FULL_RESTORATION - } - - if (item.filingSubType === FilingSubTypes.LIMITED_RESTORATION) { - restorationType = FilingSubTypes.LIMITED_RESTORATION - } - - if (item.filingSubType === FilingSubTypes.LIMITED_RESTORATION_EXTENSION) { - restorationType = FilingSubTypes.LIMITED_RESTORATION_EXTENSION - } - - if (item.filingSubType === FilingSubTypes.LIMITED_RESTORATION_TO_FULL) { - restorationType = FilingSubTypes.LIMITED_RESTORATION_TO_FULL - } - - navigate(this.buildRestorationUrl(item, restorationType)) + case FilingTypes.RESTORATION: + this.navigateForResumeRestoration(item) break - } default: // eslint-disable-next-line no-console @@ -1795,6 +1770,33 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E } } + /* Handles the restoration flow inside of doResumeFiling */ + navigateForResumeRestoration (item: TodoItemIF): void { + let restorationType: FilingSubTypes + /** + * Type assertion is done to fix TypeScript error. + * "This condition will always return 'false' since the types + * 'FilingSubTypes' and 'RestorationTypes' have no overlap." + */ + if (item.filingSubType === FilingSubTypes.FULL_RESTORATION) { + restorationType = FilingSubTypes.FULL_RESTORATION + } + + if (item.filingSubType === FilingSubTypes.LIMITED_RESTORATION) { + restorationType = FilingSubTypes.LIMITED_RESTORATION + } + + if (item.filingSubType === FilingSubTypes.LIMITED_RESTORATION_EXTENSION) { + restorationType = FilingSubTypes.LIMITED_RESTORATION_EXTENSION + } + + if (item.filingSubType === FilingSubTypes.LIMITED_RESTORATION_TO_FULL) { + restorationType = FilingSubTypes.LIMITED_RESTORATION_TO_FULL + } + + navigate(this.buildRestorationUrl(item, restorationType)) + } + // navigate to Create UI if Full/Limited restoration or to Edit UI if Limited extension/Full to Limited conversion buildRestorationUrl (item: TodoItemIF, restorationType: FilingSubTypes): string { let url: string From 4ba88d2ebe03fc1176ce02232a57ffea450fc1e4 Mon Sep 17 00:00:00 2001 From: ketaki-deodhar <116035339+ketaki-deodhar@users.noreply.github.com> Date: Fri, 20 Oct 2023 11:19:54 -0700 Subject: [PATCH 03/55] 18027 AGM Location change (#551) * 18027-agm location details 1 * 18027-agm location details 2 * 18027-agm location details 3 * 18027-update package version * 18027-agm location details 4 * 18027-agm location details 5 * 18027-agm location details 6 * 18027-agm location details 7 * 18027-agm location details 8 * 18027-agm location details 9 --- package-lock.json | 40 +- package.json | 8 +- src/components/AgmLocationChange/AgmYear.vue | 71 ++++ src/components/Dashboard/TodoList.vue | 33 ++ src/components/EntityInfo.vue | 2 +- src/components/EntityInfo/EntityMenu.vue | 59 ++- src/components/common/Certify.vue | 8 +- src/enums/allowableActions.ts | 2 +- src/enums/routes.ts | 2 +- src/interfaces/api-filing-interface.ts | 7 +- src/interfaces/api-task-interface.ts | 1 + src/mixins/allowable-actions-mixin.ts | 5 +- src/resources/business-config.ts | 8 +- src/routes.ts | 6 +- src/schemas/index.ts | 1 + src/schemas/location-address-schema.ts | 30 ++ src/utils/feature-flags.ts | 3 +- src/views/AgmLocationChg.vue | 388 +++++++------------ tests/unit/AgmLocationChg.spec.ts | 340 +++++++--------- tests/unit/Certify.spec.ts | 5 +- tests/unit/EntityMenu.spec.ts | 16 +- 21 files changed, 504 insertions(+), 531 deletions(-) create mode 100644 src/components/AgmLocationChange/AgmYear.vue create mode 100644 src/schemas/location-address-schema.ts diff --git a/package-lock.json b/package-lock.json index 91a2e3307..c223f5b7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,17 @@ "version": "6.10.0", "dependencies": { "@babel/compat-data": "^7.21.5", - "@bcrs-shared-components/base-address": "2.0.7", + "@bcrs-shared-components/base-address": "2.0.9", "@bcrs-shared-components/breadcrumb": "2.1.11", "@bcrs-shared-components/confirm-dialog": "1.2.1", "@bcrs-shared-components/corp-type-module": "1.0.11", "@bcrs-shared-components/court-order-poa": "2.1.4", "@bcrs-shared-components/document-delivery": "1.2.1", - "@bcrs-shared-components/enums": "1.0.50", + "@bcrs-shared-components/enums": "1.0.51", "@bcrs-shared-components/expandable-help": "^1.0.0", "@bcrs-shared-components/folio-number-input": "1.1.18", - "@bcrs-shared-components/interfaces": "1.0.75", - "@bcrs-shared-components/mixins": "1.1.25", + "@bcrs-shared-components/interfaces": "1.0.76", + "@bcrs-shared-components/mixins": "1.1.27", "@bcrs-shared-components/staff-comments": "1.3.11", "@bcrs-shared-components/staff-payment": "2.1.11", "@mdi/font": "^5.9.55", @@ -234,11 +234,11 @@ "dev": true }, "node_modules/@bcrs-shared-components/base-address": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/base-address/-/base-address-2.0.7.tgz", - "integrity": "sha512-8BEklPFUkbXkdWS1p4NItQS+ZRJSh4WppmuJp98iZmR/4EFe+olSjACdEEA0q4X+5uRnoYoYHdrusN1jDM5kIQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@bcrs-shared-components/base-address/-/base-address-2.0.9.tgz", + "integrity": "sha512-0vAFlzWxBLU1Pxv+eDJ1mrHjOfk45jG9wtY1HJ82SyViVK0kvZWI1AOzWaVQ+p/1WU6+60OR8uhyixzUwggAjQ==", "dependencies": { - "@bcrs-shared-components/mixins": "^1.1.25", + "@bcrs-shared-components/mixins": "^1.1.27", "lodash.uniqueid": "^4.0.1", "vue": "^2.7.14", "vuelidate": "0.6.2" @@ -284,9 +284,9 @@ } }, "node_modules/@bcrs-shared-components/enums": { - "version": "1.0.50", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/enums/-/enums-1.0.50.tgz", - "integrity": "sha512-a2FnvCt1Vb0PHdYzPW8oa7+956sUz4lUIzFMvgryJF1T+jop+RK3RM/aEfn2fath8PRWCRs9AqL6PMGTAyNcxw==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@bcrs-shared-components/enums/-/enums-1.0.51.tgz", + "integrity": "sha512-FTFovs3NUgqDVaoUJOjF/F4sHsh27Ih7KRArZ2fQUP6aMVGTKHII5poeaP5w0PeV9UsMKTBBVsKF3TILY7s3RA==", "dependencies": { "@bcrs-shared-components/corp-type-module": "^1.0.13" } @@ -314,21 +314,21 @@ } }, "node_modules/@bcrs-shared-components/interfaces": { - "version": "1.0.75", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/interfaces/-/interfaces-1.0.75.tgz", - "integrity": "sha512-duTiywSNipho1mfdJGj8K+r5MgsNMU06rP5T9wIVPhtUsq/u+8QTRIqr6JD565kFbSvWGFo/HZhqtpVaAmp6/w==", + "version": "1.0.76", + "resolved": "https://registry.npmjs.org/@bcrs-shared-components/interfaces/-/interfaces-1.0.76.tgz", + "integrity": "sha512-jsN6k8Du7gcV7WnRuqAIrpmxdlLNYtvInfHGzgTSHoADLd+G2NFhEW8E0qPR7eVMA+0EA7/sr6Ijp9m2gCpKzg==", "dependencies": { - "@bcrs-shared-components/enums": "^1.0.50", + "@bcrs-shared-components/enums": "^1.0.51", "vue": "^2.7.14" } }, "node_modules/@bcrs-shared-components/mixins": { - "version": "1.1.25", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/mixins/-/mixins-1.1.25.tgz", - "integrity": "sha512-GGA75o+O+IlUJPDlGQPtYIIIYpYps7KBULEED0SISLZw/kuM4tT6/TeIvDSdvNNxWo7KyDQQnq2R7Sq5nRZuoQ==", + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/@bcrs-shared-components/mixins/-/mixins-1.1.27.tgz", + "integrity": "sha512-/GEZKPhIwY8EXFaP37fV5Hlun+/F+Tx6hXeu/Djzk19xFv7Y5KQeFdsX2cLTHrkqtTZAhVzoUboQ+RCCo41lgw==", "dependencies": { - "@bcrs-shared-components/enums": "^1.0.50", - "@bcrs-shared-components/interfaces": "^1.0.75", + "@bcrs-shared-components/enums": "^1.0.51", + "@bcrs-shared-components/interfaces": "^1.0.76", "country-list": "^2.3.0", "lodash": "4.17.21", "provinces": "^1.11.0", diff --git a/package.json b/package.json index 326bc7874..e3f59dcca 100644 --- a/package.json +++ b/package.json @@ -14,17 +14,17 @@ }, "dependencies": { "@babel/compat-data": "^7.21.5", - "@bcrs-shared-components/base-address": "2.0.7", + "@bcrs-shared-components/base-address": "2.0.9", "@bcrs-shared-components/breadcrumb": "2.1.11", "@bcrs-shared-components/confirm-dialog": "1.2.1", "@bcrs-shared-components/corp-type-module": "1.0.11", "@bcrs-shared-components/court-order-poa": "2.1.4", "@bcrs-shared-components/document-delivery": "1.2.1", - "@bcrs-shared-components/enums": "1.0.50", + "@bcrs-shared-components/enums": "1.0.51", "@bcrs-shared-components/expandable-help": "^1.0.0", "@bcrs-shared-components/folio-number-input": "1.1.18", - "@bcrs-shared-components/interfaces": "1.0.75", - "@bcrs-shared-components/mixins": "1.1.25", + "@bcrs-shared-components/interfaces": "1.0.76", + "@bcrs-shared-components/mixins": "1.1.27", "@bcrs-shared-components/staff-comments": "1.3.11", "@bcrs-shared-components/staff-payment": "2.1.11", "@mdi/font": "^5.9.55", diff --git a/src/components/AgmLocationChange/AgmYear.vue b/src/components/AgmLocationChange/AgmYear.vue new file mode 100644 index 000000000..e9c91f115 --- /dev/null +++ b/src/components/AgmLocationChange/AgmYear.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/components/Dashboard/TodoList.vue b/src/components/Dashboard/TodoList.vue index 7ceafe0fe..f1fa64c60 100644 --- a/src/components/Dashboard/TodoList.vue +++ b/src/components/Dashboard/TodoList.vue @@ -991,6 +991,9 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E if (header) { switch (header.name) { + case FilingTypes.AGM_LOCATION_CHANGE: + await this.loadAgmLocationChange(task) + break case FilingTypes.ANNUAL_REPORT: await this.loadAnnualReport(task) break @@ -1479,6 +1482,36 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E } } + async loadAgmLocationChange (task: ApiTaskIF): Promise { + const filing = task.task.filing + const header = filing.header + const agmLocationChange = filing.agmLocationChange + + if (header && agmLocationChange) { + const paymentStatusCode = header.paymentStatusCode + const payErrorObj = paymentStatusCode && await PayServices.getPayErrorObj(this.getPayApiUrl, paymentStatusCode) + + const item = { + name: FilingTypes.AGM_LOCATION_CHANGE, + filingId: header.filingId, + title: FilingNames.AGM_LOCATION_CHANGE, + draftTitle: FilingNames.AGM_LOCATION_CHANGE, + status: header.status, + enabled: task.enabled, + order: task.order, + paymentMethod: header.paymentMethod || null, + paymentToken: header.paymentToken || null, + payErrorObj, + // FUTURE: ideally, this would come from the filing: + warnings: this.getBusinessWarnings.map(warning => warning.message) + } as TodoItemIF + this.todoItems.push(item) + } else { + // eslint-disable-next-line no-console + console.log('ERROR - invalid header or business in filing =', filing) + } + } + async loadContinuationOut (task: ApiTaskIF): Promise { const filing = task.task.filing const header = filing.header diff --git a/src/components/EntityInfo.vue b/src/components/EntityInfo.vue index c06b792fd..44f7a9c60 100644 --- a/src/components/EntityInfo.vue +++ b/src/components/EntityInfo.vue @@ -73,7 +73,7 @@ export default class EntityInfo extends Vue { get isInLocalFilingPage (): boolean { return ( this.$route?.name === Routes.AGM_EXTENSION || - this.$route?.name === Routes.AGM_LOCATION_CHG || + this.$route?.name === Routes.AGM_LOCATION_CHANGE || this.$route?.name === Routes.ANNUAL_REPORT || this.$route?.name === Routes.CONSENT_CONTINUATION_OUT || this.$route?.name === Routes.CONTINUATION_OUT || diff --git a/src/components/EntityInfo/EntityMenu.vue b/src/components/EntityInfo/EntityMenu.vue index 9e70d9e1f..0c091589b 100644 --- a/src/components/EntityInfo/EntityMenu.vue +++ b/src/components/EntityInfo/EntityMenu.vue @@ -186,25 +186,33 @@ - - - Request an AGM location change. - +
+ + + {{ toolTipText }} + +
+ @@ -250,7 +258,16 @@ export default class EntityMenu extends Mixins(AllowableActionsMixin) { } get enableAgmLocationChg (): boolean { - return !!GetFeatureFlag('enable-agm-location-chg') + return !!GetFeatureFlag('supported-agm-location-chg-entities').includes(this.getLegalType) + } + + /** get tooltip text for AGM location chg list item. Text is different if action item is disabled */ + get toolTipText (): string { + if (!this.isAllowed(AllowableActions.AGM_LOCATION_CHANGE)) { + return 'The business must be in good standing to request an AGM location change.' + } else { + return 'Request an AGM location change.' + } } /** @@ -294,7 +311,7 @@ export default class EntityMenu extends Mixins(AllowableActionsMixin) { goToAgmLocationChgFiling (): void { // 0 means "new filing" - this.$router.push({ name: Routes.AGM_LOCATION_CHG, params: { filingId: '0' } }) + this.$router.push({ name: Routes.AGM_LOCATION_CHANGE, params: { filingId: '0' } }) } /** Emits an event to confirm dissolution. */ diff --git a/src/components/common/Certify.vue b/src/components/common/Certify.vue index 7e6f04426..c0e4982e9 100644 --- a/src/components/common/Certify.vue +++ b/src/components/common/Certify.vue @@ -37,7 +37,7 @@

- Date: {{ getCurrentDate }} + Date: {{ formattedCurrentDate }}

{{ message }} @@ -50,6 +50,7 @@ diff --git a/src/components/AgmLocationChange/AgmYear.vue b/src/components/AgmLocationChange/AgmYear.vue index e9c91f115..fd3c63f87 100644 --- a/src/components/AgmLocationChange/AgmYear.vue +++ b/src/components/AgmLocationChange/AgmYear.vue @@ -46,7 +46,7 @@ export default class AgmYear extends Vue { this.emitValid(val) } - /** Validate business name field */ + /** Validate AGM year field */ @Watch('validateForm') validateAgmYear (): void { if (this.validateForm && !this.agmYear) { diff --git a/src/schemas/index.ts b/src/schemas/index.ts index a8065c88e..3f5e9cd0d 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -1,2 +1 @@ export * from './office-address-schema' -export * from './location-address-schema' diff --git a/src/schemas/location-address-schema.ts b/src/schemas/location-address-schema.ts deleted file mode 100644 index 888074e75..000000000 --- a/src/schemas/location-address-schema.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { required, maxLength } from 'vuelidate/lib/validators' - -// The schema containing Vuelidate rules. -// NB: This should match the subject JSON schema. -export const locationAddressSchema = { - streetAddress: { - required, - maxLength: maxLength(50) - }, - streetAddressAdditional: { - maxLength: maxLength(50) - }, - addressCity: { - required, - maxLength: maxLength(40) - }, - addressCountry: { - required - }, - addressRegion: { - maxLength: maxLength(2) - }, - postalCode: { - required, - maxLength: maxLength(15) - }, - deliveryInstructions: { - maxLength: maxLength(80) - } -} diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index fcb320a17..e3bd38031 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -61,42 +61,40 @@ - +

-

AGM Location Detail

+

Location Change Detail

- Enter the new AGM location detail including any + Enter the calendar year the AGM is for and AGM location outside B.C.

@@ -117,7 +115,7 @@ AGM Year @@ -126,9 +124,8 @@ sm="4" >
- AGM Location + AGM Location - - - +

+ Enter the AGM location not in B.C. Include the city, province or state equivalent, and country. + E.g. "Red Deer, Alberta, Canada" +

+
@@ -305,7 +306,6 @@ import { Getter } from 'pinia-class' import { StatusCodes } from 'http-status-codes' import { navigate } from '@/utils' import SbcFeeSummary from 'sbc-common-components/src/components/SbcFeeSummary.vue' -import { locationAddressSchema } from '@/schemas' import { Certify, DetailComment } from '@/components/common' import { ConfirmDialog, PaymentErrorDialog, StaffPaymentDialog } from '@/components/dialogs' @@ -314,12 +314,14 @@ import { ExpandableHelp } from '@bcrs-shared-components/expandable-help' import { LegalServices } from '@/services/' import { FilingCodes, FilingTypes, Routes, SaveErrorReasons, StaffPaymentOptions } from '@/enums' -import { AddressIF, ConfirmDialogType, StaffPaymentIF } from '@/interfaces' +import { ConfirmDialogType, StaffPaymentIF } from '@/interfaces' import { useBusinessStore, useConfigurationStore, useRootStore } from '@/stores' +import AgmLocation from '@/components/AgmLocationChange/AgmLocation.vue' import AgmYear from '@/components/AgmLocationChange/AgmYear.vue' @Component({ components: { + AgmLocation, AgmYear, Certify, ConfirmDialog, @@ -334,7 +336,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, EnumMixin, FilingMixin, ResourceLookupMixin) { // Refs $refs!: { - agmYearRef: AgmYear, confirm: ConfirmDialogType, certifyRef: Certify } @@ -348,8 +349,8 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, readonly FilingCodes = FilingCodes // variables for main section - agmLocationAddress = {} as AddressIF - agmLocationAddressValid = false + agmLocation = '' + agmLocationValid = false agmYear = '' agmYearValid = false @@ -385,9 +386,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, saveErrors = [] saveWarnings = [] - /** The Address schema containing Vuelidate rules. */ - locationAddressSchema = locationAddressSchema - /** True if loading container should be shown, else False. */ get showLoadingContainer (): boolean { // show loading container when data isn't yet loaded and when @@ -402,7 +400,7 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, /** True if page is valid, else False. */ get isPageValid (): boolean { - return (this.agmLocationAddressValid && this.agmYearValid && this.certifyFormValid) + return (this.agmLocationValid && this.agmYearValid && this.certifyFormValid && this.reasonValid) } /** True when saving, saving and resuming, or filing and paying. */ @@ -416,6 +414,14 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, return (this.totalFee > 0) } + /** Array of validations rules for AGM location. */ + get agmLocationRules (): Array<(val) => boolean | string> { + const rules = [] as Array<(val) => boolean | string> + rules.push(val => !!val || 'AGM location is required.') + rules.push(val => (val.length <= 100) || 'Must be 100 characters or less.') + return rules + } + /** Array of validations rules for AGM year. */ get agmYearRules (): Array<(val) => boolean | string> { const rules = [] as Array<(val) => boolean | string> @@ -480,10 +486,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, (this.staffPaymentData.option === StaffPaymentOptions.NO_FEE)) } - updateLocationAddress (val: AddressIF): void { - this.agmLocationAddress = val - } - /** * Called when user clicks File and Pay button * or when user retries from Save Error dialog @@ -493,10 +495,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, // if there is an invalid component, scroll to it if (!this.isPageValid) { this.showErrors = true - if (!this.agmYearValid) { - // Show error message of agm year if invalid - this.$refs.agmYearRef.$refs.textAreaRef.error = true - } if (!this.certifyFormValid) { // Show error message of legal name text field if invalid this.$refs.certifyRef.$refs.certifyTextfieldRef.error = true @@ -634,7 +632,8 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, const data: any = { [FilingTypes.AGM_LOCATION_CHANGE]: { year: this.agmYear, - newAgmLocation: this.agmLocationAddress + reason: this.reason, + agmLocation: this.agmLocation } } @@ -723,13 +722,13 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, // mainSection: this.sectionValid, agmYear: this.agmYearValid, reason: this.reasonValid, - locationAddress: this.agmLocationAddressValid, + location: this.agmLocationValid, certifyForm: this.certifyFormValid } } @Watch('agmYearValid') - @Watch('agmLocationAddressValid') + @Watch('agmLocationValid') @Watch('certifyFormValid') @Watch('resonValid') onHaveChanges (): void { diff --git a/tests/unit/AgmLocationChg.spec.ts b/tests/unit/AgmLocationChg.spec.ts index 9d84eb1ec..11b09d4ba 100644 --- a/tests/unit/AgmLocationChg.spec.ts +++ b/tests/unit/AgmLocationChg.spec.ts @@ -186,27 +186,38 @@ describe('AGM Location Chg view', () => { expect(!!vm.isPayRequired).toBe(true) // verify "validated" - all true - vm.agmLocationAddressValid = true + vm.agmLocationValid = true vm.agmYearValid = true vm.certifyFormValid = true + vm.reasonValid = true expect(!!vm.isPageValid).toBe(true) - // verify "validated" - invalid Location change form - vm.agmLocationAddressValid = false + // verify "validated" - invalid agm year + vm.agmLocationValid = true + vm.agmYearValid = false + vm.certifyFormValid = true + vm.reasonValid = true + expect(!!vm.isPageValid).toBe(false) + + // verify "validated" - invalid reason + vm.agmLocationValid = true vm.agmYearValid = true vm.certifyFormValid = true + vm.reasonValid = false expect(!!vm.isPageValid).toBe(false) - // verify "validated" - invalid agm year - vm.agmLocationAddressValid = true - vm.agmYearValid = false + // verify "validated" - invalid Location change form + vm.agmLocationValid = false + vm.agmYearValid = true vm.certifyFormValid = true + vm.reasonValid = true expect(!!vm.isPageValid).toBe(false) // verify "validated" - invalid Certify form - vm.agmLocationAddressValid = true + vm.agmLocationValid = true vm.agmYearValid = true vm.certifyFormValid = false + vm.reasonValid = true expect(!!vm.isPageValid).toBe(false) }) @@ -217,9 +228,10 @@ describe('AGM Location Chg view', () => { // make sure form is validated await wrapper.setData({ - agmLocationAddressValid: true, + agmLocationValid: true, agmYearValid: true, - certifyFormValid: true + certifyFormValid: true, + reasonValid: true }) await wrapper.setData({ dataLoaded: true }) From 5ddb97ba0ea667f20af697a83aa42049406f20af Mon Sep 17 00:00:00 2001 From: Karim El Jazzar <122301442+JazzarKarim@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:13:33 -0700 Subject: [PATCH 06/55] AGM Location Change Third PR (#555) * Created + updated unit tests * Fixed EntityMenu test from ticket part 1 * Fixed lint errors * Fixes in response to Sev's comments * fixed lint issues * Fixed in reponse to Sev's comments * removed unnecessary test code --- src/views/AgmLocationChg.vue | 4 +- tests/unit/AgmLocation.spec.ts | 99 ++++++++++++++++++++++ tests/unit/AgmLocationChg.spec.ts | 11 +-- tests/unit/AgmYear.spec.ts | 132 ++++++++++++++++++++++++++++++ tests/unit/EntityMenu.spec.ts | 11 ++- 5 files changed, 240 insertions(+), 17 deletions(-) create mode 100644 tests/unit/AgmLocation.spec.ts create mode 100644 tests/unit/AgmYear.spec.ts diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index e3bd38031..6bf5ef789 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -192,8 +192,8 @@ sm="8" >

- Enter the AGM location not in B.C. Include the city, province or state equivalent, and country. - E.g. "Red Deer, Alberta, Canada" + Enter the AGM location not in B.C. Include the city, province or state equivalent, + and country. E.g. "Red Deer, Alberta, Canada"

{ + /** Array of validations rules for AGM location to be passed as a prop. */ + const rules = [] as Array<(val) => boolean | string> + rules.push(val => !!val || 'AGM location is required.') + rules.push(val => (val.length <= 100) || 'Must be 100 characters or less.') + + it('initializes correctly', () => { + const wrapper = mount(AgmLocation, + { + vuetify, + propsData: { + rules: rules + } + }) + const vm: any = wrapper.vm + + expect(vm.agmLocation).toBe('') + expect(wrapper.emitted('update:agmLocation')).toBeUndefined() + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) + + it('emit correct validation when initial location value is passed', async () => { + const wrapper = mount(AgmLocation, + { + vuetify, + propsData: { + rules: rules, + locationValue: 'Toronto, Ontario, Canada' + } + }) + + expect(wrapper.emitted('valid').pop()[0]).toBe(true) + wrapper.destroy() + }) + + it('emit correct events when a valid agm location is the input', async () => { + const wrapper = mount(AgmLocation, + { + vuetify, + propsData: { + rules: rules + } + }) + + const input = wrapper.find('#agm-location') + await input.setValue('Toronto, Ontario, Canada') + + expect(wrapper.emitted('update:agmLocation').pop()[0]).toBe('Toronto, Ontario, Canada') + expect(wrapper.emitted('valid').pop()[0]).toBe(true) + wrapper.destroy() + }) + + it('emit correct events when an invalid agm location (empty string) is the input', async () => { + const wrapper = mount(AgmLocation, + { + vuetify, + propsData: { + rules: rules + } + }) + + const input = wrapper.find('#agm-location') + await input.setValue('') + + expect(wrapper.emitted('update:agmLocation').pop()[0]).toBe('') + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) + + it('emit correct events when an invalid agm location (over 100 chars) is the input', async () => { + const wrapper = mount(AgmLocation, + { + vuetify, + propsData: { + rules: rules + } + }) + + const input = wrapper.find('#agm-location') + const a101 = 'a'.repeat(101) + await input.setValue(a101) + + expect(wrapper.emitted('update:agmLocation').pop()[0]).toBe(a101) + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) +}) diff --git a/tests/unit/AgmLocationChg.spec.ts b/tests/unit/AgmLocationChg.spec.ts index 11b09d4ba..62111a51e 100644 --- a/tests/unit/AgmLocationChg.spec.ts +++ b/tests/unit/AgmLocationChg.spec.ts @@ -80,15 +80,8 @@ describe('AGM Location Chg view', () => { filing: { agmLocationChange: { year: '2023', - newAgmLocation: { - streetAddress: 'Peter Griffin delivery street address', - streetAddressAdditional: null, - addressCity: 'deliv address city', - addressCountry: 'deliv country', - postalCode: 'H0H0H0', - addressRegion: 'MB', - deliveryInstructions: 'Test notes' - } + agmLocation: 'Toronto, Ontario, Canada', + reason: 'Test Reason' }, business: { foundingDate: '2007-04-08T00:00:00+00:00', diff --git a/tests/unit/AgmYear.spec.ts b/tests/unit/AgmYear.spec.ts new file mode 100644 index 000000000..eae889e07 --- /dev/null +++ b/tests/unit/AgmYear.spec.ts @@ -0,0 +1,132 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import { mount } from '@vue/test-utils' +import AgmYear from '@/components/AgmLocationChange/AgmYear.vue' +import { sleep } from '@/utils/sleep' + +Vue.use(Vuetify) +const vuetify = new Vuetify({}) + +// Prevent the warning "[Vuetify] Unable to locate target [data-app]" +document.body.setAttribute('data-app', 'true') + +describe('AgmYear', () => { + /** Array of validations rules for AGM Year with min and max AGM year. */ + const today = new Date() + const minAgmYear = today.getFullYear() - 2 + const maxAgmYear = today.getFullYear() + 1 + const rules = [] as Array<(val) => boolean | string> + rules.push(val => !!val || 'AGM year is required.') + rules.push(val => (val && +val <= maxAgmYear) || 'Must be on or before ' + maxAgmYear) + rules.push(val => (val && +val >= minAgmYear) || 'Must be on or after ' + minAgmYear) + + it('initializes correctly', () => { + const wrapper = mount(AgmYear, + { + vuetify, + propsData: { + rules: rules + } + }) + const vm: any = wrapper.vm + + expect(vm.agmYear).toBe('') + expect(wrapper.emitted('input')).toBeUndefined() + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) + + it('emit correct validation when valid agm year is passed', async () => { + const wrapper = mount(AgmYear, + { + vuetify, + propsData: { + rules: rules, + value: today.getFullYear() + } + }) + + expect(wrapper.emitted('valid').pop()[0]).toBe(true) + wrapper.destroy() + }) + + it('emit correct events when a valid agm year is the input', async () => { + const wrapper = mount(AgmYear, + { + vuetify, + propsData: { + rules: rules + } + }) + + const vm: any = wrapper.vm + vm.onValueChanged(today.getFullYear()) + const input = wrapper.find('#year-txt') + await input.setValue(today.getFullYear()) + await sleep(300) // need to wait for debounce + + expect(wrapper.emitted('input').pop()[0]).toBe(today.getFullYear().toString()) + expect(wrapper.emitted('valid').pop()[0]).toBe(true) + wrapper.destroy() + }) + + it('emit correct events when an invalid agm year (empty string) is the input', async () => { + const wrapper = mount(AgmYear, + { + vuetify, + propsData: { + rules: rules + } + }) + + const vm: any = wrapper.vm + vm.onValueChanged('') + const input = wrapper.find('#year-txt') + await input.setValue('') + await sleep(300) // need to wait for debounce + + expect(wrapper.emitted('input').pop()[0]).toBe('') + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) + + it('emit correct events when an invalid agm year (less than min) is the input', async () => { + const wrapper = mount(AgmYear, + { + vuetify, + propsData: { + rules: rules + } + }) + + const vm: any = wrapper.vm + vm.onValueChanged(today.getFullYear() - 3) + const input = wrapper.find('#year-txt') + await input.setValue(today.getFullYear() - 3) + await sleep(300) // need to wait for debounce + + expect(wrapper.emitted('input').pop()[0]).toBe((today.getFullYear() - 3).toString()) + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) + + it('emit correct events when an invalid agm year (more than max) is the input', async () => { + const wrapper = mount(AgmYear, + { + vuetify, + propsData: { + rules: rules + } + }) + + const vm: any = wrapper.vm + vm.onValueChanged(today.getFullYear() + 2) + const input = wrapper.find('#year-txt') + await input.setValue(today.getFullYear() + 2) + await sleep(300) // need to wait for debounce + + expect(wrapper.emitted('input').pop()[0]).toBe((today.getFullYear() + 2).toString()) + expect(wrapper.emitted('valid').pop()[0]).toBe(false) + wrapper.destroy() + }) +}) diff --git a/tests/unit/EntityMenu.spec.ts b/tests/unit/EntityMenu.spec.ts index 58e852365..35efc6580 100644 --- a/tests/unit/EntityMenu.spec.ts +++ b/tests/unit/EntityMenu.spec.ts @@ -478,13 +478,15 @@ describe('Entity Menu - Consent to Continuation click tests', () => { }) }) -describe.skip('Entity Menu - Request AGM Extension click tests', () => { +describe('Entity Menu - Request AGM Extension click tests', () => { let vm: any beforeAll(() => { // override feature flag - vi.spyOn(utils, 'GetFeatureFlag').mockImplementation( - (flag) => (flag === 'enable-agm-extension')) + vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => { + if (flag === 'enable-agm-extension') return true + if (flag === 'supported-agm-location-chg-entities') return 'BEN' + }) }) afterAll(() => { @@ -500,9 +502,6 @@ describe.skip('Entity Menu - Request AGM Extension click tests', () => { propsData: { businessId: 'BC1234567' } }) - vm = wrapper.vm - vi.spyOn(vm, 'enableAgmExtension', 'get').mockReturnValue(true) - await wrapper.find('.menu-btn').trigger('click') expect(wrapper.find('#agm-ext-list-item').exists()).toBe(true) From dad3a3e15fa24663da8c31e8c52079ab7d7a2ddf Mon Sep 17 00:00:00 2001 From: Karim El Jazzar <122301442+JazzarKarim@users.noreply.github.com> Date: Mon, 30 Oct 2023 12:34:49 -0700 Subject: [PATCH 07/55] AGM Location Change 4th and final PR (#556) * AGM Location Change 4th and final PR * changed method name * changed comment * fixed lint error * removed unnecessary line * Fix in response to Sev's comment * Fixed in response to Sev's comment + simplified logic * Removed staff payment dialog * update agm location variable --- src/components/Dashboard/TodoList.vue | 12 ++++- src/interfaces/api-filing-interface.ts | 5 +- src/views/AgmLocationChg.vue | 73 ++++---------------------- tests/unit/AgmLocation.spec.ts | 8 +-- tests/unit/EntityMenu.spec.ts | 2 - 5 files changed, 27 insertions(+), 73 deletions(-) diff --git a/src/components/Dashboard/TodoList.vue b/src/components/Dashboard/TodoList.vue index f1fa64c60..4ab70cf10 100644 --- a/src/components/Dashboard/TodoList.vue +++ b/src/components/Dashboard/TodoList.vue @@ -395,6 +395,7 @@ @@ -823,6 +826,11 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E }) } + /** Check if task item is cancellable (has a draft). */ + isCancellableTodoItem (item: TodoItemIF): boolean { + return (item.name !== FilingTypes.AGM_LOCATION_CHANGE) + } + /** Loads a todo item into the Todo Items array. */ loadTodoItem (task: ApiTaskIF): void { const todo = task.task.todo // already checked for not falsey in loadData() @@ -2099,8 +2107,8 @@ export default class TodoList extends Mixins(AllowableActionsMixin, DateMixin, E border-bottom-right-radius: 0; } - .btn-change-payment-type, - .btn-resume-payment { + .btn-change-payment-type.cancellable, + .btn-resume-payment.cancellable { border-top-right-radius: 0; border-bottom-right-radius: 0; } diff --git a/src/interfaces/api-filing-interface.ts b/src/interfaces/api-filing-interface.ts index c942ad15d..f99238307 100644 --- a/src/interfaces/api-filing-interface.ts +++ b/src/interfaces/api-filing-interface.ts @@ -1,5 +1,5 @@ import { CorpTypeCd, EffectOfOrderTypes, FilingStatus, FilingSubTypes, FilingTypes } from '@/enums' -import { AddressIF, ApiDateTimeUtc, CommentIF, DocumentIF, FormattedDateTimeGmt, IsoDatePacific, SpecialResolutionIF } +import { ApiDateTimeUtc, CommentIF, DocumentIF, FormattedDateTimeGmt, IsoDatePacific, SpecialResolutionIF } from '@/interfaces' /** @@ -43,7 +43,8 @@ export interface ApiFilingIF { agmLocationChange?: { year: string, - newAgmLocation: AddressIF + reason: string, + agmLocation: string } // alteration filings only diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index 6bf5ef789..5c55ae75b 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -14,15 +14,6 @@ @exit="onPaymentErrorDialogExit()" /> - -
@@ -307,14 +299,12 @@ import { StatusCodes } from 'http-status-codes' import { navigate } from '@/utils' import SbcFeeSummary from 'sbc-common-components/src/components/SbcFeeSummary.vue' import { Certify, DetailComment } from '@/components/common' -import { ConfirmDialog, PaymentErrorDialog, StaffPaymentDialog } - from '@/components/dialogs' +import { ConfirmDialog, PaymentErrorDialog } from '@/components/dialogs' import { CommonMixin, DateMixin, EnumMixin, FilingMixin, ResourceLookupMixin } from '@/mixins' import { ExpandableHelp } from '@bcrs-shared-components/expandable-help' import { LegalServices } from '@/services/' -import { FilingCodes, FilingTypes, Routes, SaveErrorReasons, StaffPaymentOptions } - from '@/enums' -import { ConfirmDialogType, StaffPaymentIF } from '@/interfaces' +import { FilingCodes, FilingTypes, Routes, SaveErrorReasons } from '@/enums' +import { ConfirmDialogType } from '@/interfaces' import { useBusinessStore, useConfigurationStore, useRootStore } from '@/stores' import AgmLocation from '@/components/AgmLocationChange/AgmLocation.vue' import AgmYear from '@/components/AgmLocationChange/AgmYear.vue' @@ -328,8 +318,7 @@ import AgmYear from '@/components/AgmLocationChange/AgmYear.vue' DetailComment, ExpandableHelp, PaymentErrorDialog, - SbcFeeSummary, - StaffPaymentDialog + SbcFeeSummary } }) export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, @@ -363,10 +352,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, reason = '' reasonValid = false - // variables for staff payment - staffPaymentData = { option: StaffPaymentOptions.NONE } as StaffPaymentIF - staffPaymentDialog = false - // variables for displaying dialogs resumeErrorDialog = false saveErrorReason: SaveErrorReasons = null @@ -418,7 +403,7 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, get agmLocationRules (): Array<(val) => boolean | string> { const rules = [] as Array<(val) => boolean | string> rules.push(val => !!val || 'AGM location is required.') - rules.push(val => (val.length <= 100) || 'Must be 100 characters or less.') + rules.push(val => (val.length <= 400) || 'Must be 400 characters or less.') return rules } @@ -481,17 +466,15 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, this.dataLoaded = true // always include agm location change code - // use existing Priority and Waive Fees flags - this.updateFilingData('add', FilingCodes.AGM_LOCATION_CHANGE, this.staffPaymentData.isPriority, - (this.staffPaymentData.option === StaffPaymentOptions.NO_FEE)) + // clear Priority flag and set the Waive Fees flag to true + this.updateFilingData('add', FilingCodes.AGM_LOCATION_CHANGE, undefined, true) } /** * Called when user clicks File and Pay button * or when user retries from Save Error dialog - * or when user submits from Staff Payment dialog. */ - async onClickFilePay (fromStaffPayment = false): Promise { + async onClickFilePay (): Promise { // if there is an invalid component, scroll to it if (!this.isPageValid) { this.showErrors = true @@ -506,13 +489,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, // prevent double saving if (this.busySaving) return - // if this is a staff user clicking File and Pay (not Submit) - // then detour via Staff Payment dialog - if (this.isRoleStaff && !fromStaffPayment) { - this.staffPaymentDialog = true - return - } - this.filingPaying = true // save final filing (not draft) @@ -599,26 +575,7 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, } } - switch (this.staffPaymentData.option) { - case StaffPaymentOptions.FAS: - header.header['routingSlipNumber'] = this.staffPaymentData.routingSlipNumber - header.header['priority'] = this.staffPaymentData.isPriority - break - - case StaffPaymentOptions.BCOL: - header.header['bcolAccountNumber'] = this.staffPaymentData.bcolAccountNumber - header.header['datNumber'] = this.staffPaymentData.datNumber - header.header['folioNumber'] = this.staffPaymentData.folioNumber - header.header['priority'] = this.staffPaymentData.isPriority - break - - case StaffPaymentOptions.NO_FEE: - header.header['waiveFees'] = true - break - - case StaffPaymentOptions.NONE: // should never happen - break - } + header.header['waiveFees'] = true const business: any = { business: { @@ -734,16 +691,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, onHaveChanges (): void { this.haveChanges = true } - - @Watch('staffPaymentData') - onStaffPaymentDataChanged (val: StaffPaymentIF): void { - const waiveFees = (val.option === StaffPaymentOptions.NO_FEE) - - // add Waive Fees flag to all filing codes - this.updateFilingData('add', FilingCodes.AGM_LOCATION_CHANGE, val.isPriority, waiveFees) - - this.haveChanges = true - } } diff --git a/tests/unit/AgmLocation.spec.ts b/tests/unit/AgmLocation.spec.ts index 651a352b1..f2fcb62e3 100644 --- a/tests/unit/AgmLocation.spec.ts +++ b/tests/unit/AgmLocation.spec.ts @@ -13,7 +13,7 @@ describe('AgmLocation', () => { /** Array of validations rules for AGM location to be passed as a prop. */ const rules = [] as Array<(val) => boolean | string> rules.push(val => !!val || 'AGM location is required.') - rules.push(val => (val.length <= 100) || 'Must be 100 characters or less.') + rules.push(val => (val.length <= 400) || 'Must be 400 characters or less.') it('initializes correctly', () => { const wrapper = mount(AgmLocation, @@ -89,10 +89,10 @@ describe('AgmLocation', () => { }) const input = wrapper.find('#agm-location') - const a101 = 'a'.repeat(101) - await input.setValue(a101) + const a401 = 'a'.repeat(401) + await input.setValue(a401) - expect(wrapper.emitted('update:agmLocation').pop()[0]).toBe(a101) + expect(wrapper.emitted('update:agmLocation').pop()[0]).toBe(a401) expect(wrapper.emitted('valid').pop()[0]).toBe(false) wrapper.destroy() }) diff --git a/tests/unit/EntityMenu.spec.ts b/tests/unit/EntityMenu.spec.ts index 35efc6580..3b7638442 100644 --- a/tests/unit/EntityMenu.spec.ts +++ b/tests/unit/EntityMenu.spec.ts @@ -479,8 +479,6 @@ describe('Entity Menu - Consent to Continuation click tests', () => { }) describe('Entity Menu - Request AGM Extension click tests', () => { - let vm: any - beforeAll(() => { // override feature flag vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => { From 21b927df393e9142cdb3399fe284bbf9cbe63dda Mon Sep 17 00:00:00 2001 From: Karim El Jazzar <122301442+JazzarKarim@users.noreply.github.com> Date: Thu, 2 Nov 2023 14:15:47 -0700 Subject: [PATCH 08/55] AGM Location Change 5th PR for styling issues (#559) * AGM Location Change 5th PR for styling issues * fixed left spacing of ripple * fixed small lint issue * fixed in response to Sev's comments * Pre-populate the certify block when logged in user is not staff * Moved user's full name to store to minimize API calls * Fixed in response to Sev's comments * Added optional chaining * 16764 - Fixed end user certify block * Reverted currentuser interface + fixed accordingly * Prevent from showing undefined in certified block * Prevented undefined from showing in certify block in agm location change --- src/App.vue | 2 ++ src/components/common/Certify.vue | 10 ++++++++ src/interfaces/state-interface.ts | 1 + src/stores/rootStore.ts | 10 ++++++++ src/views/AgmLocationChg.vue | 35 +++++++++++++++++++++------- src/views/ConsentContinuationOut.vue | 9 +++++++ tests/unit/AgmLocationChg.spec.ts | 3 ++- 7 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/App.vue b/src/App.vue index bdd65bbab..49f8b2554 100644 --- a/src/App.vue +++ b/src/App.vue @@ -393,6 +393,7 @@ export default { 'setRecordsAddress', 'setRegisteredAddress', 'setTasks', + 'setUserInfo', 'setUserKeycloakGuid' ]), @@ -437,6 +438,7 @@ export default { // and save user's Keycloak GUID try { const userInfo = await AuthServices.fetchUserInfo(this.getAuthApiUrl).then(response => response?.data) + this.setUserInfo(userInfo) await this.updateLaunchDarkly(userInfo) this.setUserKeycloakGuid(userInfo.keycloakGuid) } catch (error) { diff --git a/src/components/common/Certify.vue b/src/components/common/Certify.vue index c0e4982e9..a8a13ed40 100644 --- a/src/components/common/Certify.vue +++ b/src/components/common/Certify.vue @@ -20,6 +20,7 @@ filled persistent-hint label="Person's legal name" + :disabled="disableEdit" :value="certifiedBy" :rules="[ v => !!v || 'A person\'s legal name is required.']" @input="emitCertifiedBy($event)" @@ -78,6 +79,9 @@ export default class Certify extends Vue { /** Prompt the validations. Used for global validations. */ @Prop({ default: false }) readonly validateForm!: boolean + /** Disable Text Input field. */ + @Prop({ default: false }) readonly disableEdit!: boolean + certifyName = '' checkboxState = false @@ -174,4 +178,10 @@ export default class Certify extends Vue { margin-top: -1.25rem; } } + +:deep() { + .v-input--selection-controls__ripple { + margin-top: -3px; + } +} diff --git a/src/interfaces/state-interface.ts b/src/interfaces/state-interface.ts index 1a6efce89..88f94c979 100644 --- a/src/interfaces/state-interface.ts +++ b/src/interfaces/state-interface.ts @@ -19,6 +19,7 @@ export interface StateIF { entityStatus: EntityStatus // for draft app only keycloakRoles: Array stateFiling: StateFilingIF // the state filing object + userInfo: any userKeycloakGuid: string // entity info from auth db diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 2520a31ef..83b1fdb1e 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -14,6 +14,7 @@ export const useRootStore = defineStore('root', { entityStatus: null, keycloakRoles: [], stateFiling: null, + userInfo: null, userKeycloakGuid: null, businessEmail: null, businessPhone: null, @@ -184,6 +185,11 @@ export const useRootStore = defineStore('root', { return state.corpTypeCd }, + /** The user's full info. */ + getUserInfo (state: StateIF): any { + return state.userInfo + }, + // // State Filing getters // @@ -271,6 +277,10 @@ export const useRootStore = defineStore('root', { this.userKeycloakGuid = userKeycloakGuid }, + setUserInfo (userInfo: any) { + this.userInfo = userInfo + }, + /** Set the app permissions. */ setAuthRoles (authRoles: Array) { this.authRoles = authRoles diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index 5c55ae75b..571930a90 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -90,10 +90,7 @@
- +
- +
- +
0) { this.loadingMessage = `Resuming Your Request for AGM Location Change` } else { @@ -775,5 +780,17 @@ h2 { color: $app-red; } } + + // Setting the top and bottom red borders (error) radii to 0. + .v-card > *:first-child:not(.v-btn):not(.v-chip):not(.v-avatar), + .v-card > .v-card__progress + *:not(.v-btn):not(.v-chip):not(.v-avatar) { + border-top-left-radius: 0px; + border-top-right-radius: 0px; + } + + .v-card > *:last-child:not(.v-btn):not(.v-chip):not(.v-avatar) { + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + } } diff --git a/src/views/ConsentContinuationOut.vue b/src/views/ConsentContinuationOut.vue index da3fb354c..5f65d4c6a 100644 --- a/src/views/ConsentContinuationOut.vue +++ b/src/views/ConsentContinuationOut.vue @@ -193,6 +193,7 @@ :isCertified.sync="isCertified" :certifiedBy.sync="certifiedBy" :class="{ 'invalid-certify': !certifyFormValid && showErrors }" + :disableEdit="!isRoleStaff" :entityDisplay="displayName()" :message="certifyText(FilingCodes.ANNUAL_REPORT_OT)" @valid="certifyFormValid=$event" @@ -366,6 +367,7 @@ export default class ConsentContinuationOut extends Mixins(CommonMixin, DateMixi @Getter(useRootStore) getBusinessEmail!: string @Getter(useBusinessStore) getLegalName!: string @Getter(useConfigurationStore) getPayApiUrl!: string + @Getter(useRootStore) getUserInfo!: any @Getter(useRootStore) isRoleStaff!: boolean // enum for template @@ -503,6 +505,13 @@ export default class ConsentContinuationOut extends Mixins(CommonMixin, DateMixi this.dataLoaded = true + // Pre-populate the certified block with the logged in user's name (if not staff) + if (!this.isRoleStaff && this.getUserInfo) { + const firstName = this.getUserInfo?.firstname + const lastName = this.getUserInfo?.lastname + this.certifiedBy = firstName + ' ' + lastName + } + // always include consent continue out code // use existing Priority and Waive Fees flags this.updateFilingData('add', FilingCodes.CONSENT_CONTINUATION_OUT, this.staffPaymentData.isPriority, diff --git a/tests/unit/AgmLocationChg.spec.ts b/tests/unit/AgmLocationChg.spec.ts index 62111a51e..e0884f634 100644 --- a/tests/unit/AgmLocationChg.spec.ts +++ b/tests/unit/AgmLocationChg.spec.ts @@ -13,6 +13,7 @@ import { CorpTypeCd } from '@bcrs-shared-components/corp-type-module' import sinon from 'sinon' import axios from '@/axios-auth' import { FilingStatus } from '@/enums' +import { waitForUpdate } from 'tests/wait-for-update' // suppress various warnings: // - "Unknown custom element " warnings @@ -144,7 +145,7 @@ describe('AGM Location Chg view', () => { const wrapper = shallowMount(AgmLocationChg, { mocks: { $route, $router } }) wrapper.vm.$data.dataLoaded = true - await Vue.nextTick() + await waitForUpdate(2) const vm: any = wrapper.vm From f9c0bb94a4e3db601b59dad98e12682fe1060c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9verin=20Beauvais?= Date: Thu, 2 Nov 2023 14:55:29 -0700 Subject: [PATCH 09/55] 18024 Incremental AGM extension work (#558) - app version = 6.9.5 - imported shared DatePicker component - renamed a base class - added a base class - saved user info into store - added initial AboutTheBusiness sub-component - added initial AgmExtensionEvaluation sub-component - added AgmExtensionHelp sub-component - added initial ExtensionRequest sub-component - added VcardTemplate - updated tooltip text - updated FF - added AgmExtEval interface - renamed RootStateIF -> AuthenticationStateIF - renamed StateIF -> RootStateIF - added DateMixin function for DatePicker component - updated fetchUserInfo to return object (not Axios response) - added missing default FF - deleted obsolete dialog, transition, buttons, methods, CSS from AGM Extension - added help section - added initial sub-components to AGM Extension - updated intro text - updated some whitespace - updated filing code - removed delay in mounted() in AGM Extension - updated onHaveChanges() watcher in AGM Extension - pre-populated CertifiedBy - deleted obsolete transition, methods, CSS from AGM Extension - removed delay in mounted() in AGM Location Chg - updated onHaveChanges() watcher in AGM Location Chg - updated unit tests - misc cleanup --- package-lock.json | 11 + package.json | 1 + src/App.vue | 7 +- src/assets/styles/base.scss | 6 +- .../AgmExtension/AboutTheBusiness.vue | 77 +++ .../AgmExtension/AgmExtensionEvaluation.vue | 82 +++ .../AgmExtension/AgmExtensionHelp.vue | 31 + .../AgmExtension/ExtensionRequest.vue | 159 ++++++ src/components/EntityInfo/EntityMenu.vue | 64 ++- src/components/common/Certify.vue | 7 +- src/components/common/VcardTemplate.vue | 35 ++ src/components/common/index.ts | 2 + src/interfaces/agm-ext-eval-interface.ts | 23 + .../authentication-state-interface.ts | 14 + ...rfaces.ts => business-state-interfaces.ts} | 2 +- .../configuration-state-interface.ts | 2 +- .../filing-history-list-state-interface.ts | 2 +- src/interfaces/index.ts | 8 +- src/interfaces/root-state-interface.ts | 57 +- src/interfaces/state-interface.ts | 48 -- src/mixins/date-mixin.ts | 10 + src/services/auth-services.ts | 11 +- src/stores/authenticationStore.ts | 30 +- src/stores/rootStore.ts | 64 +-- src/stores/state.ts | 7 +- src/utils/feature-flags.ts | 3 +- src/views/AgmExtension.vue | 530 +++--------------- src/views/AgmLocationChg.vue | 72 +-- tests/unit/EntityMenu.spec.ts | 21 +- tests/unit/auth-services.spec.ts | 2 +- 30 files changed, 717 insertions(+), 671 deletions(-) create mode 100644 src/components/AgmExtension/AboutTheBusiness.vue create mode 100644 src/components/AgmExtension/AgmExtensionEvaluation.vue create mode 100644 src/components/AgmExtension/AgmExtensionHelp.vue create mode 100644 src/components/AgmExtension/ExtensionRequest.vue create mode 100644 src/components/common/VcardTemplate.vue create mode 100644 src/interfaces/agm-ext-eval-interface.ts create mode 100644 src/interfaces/authentication-state-interface.ts rename src/interfaces/{business-interfaces.ts => business-state-interfaces.ts} (97%) delete mode 100644 src/interfaces/state-interface.ts diff --git a/package-lock.json b/package-lock.json index c223f5b7a..2b09d07d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@bcrs-shared-components/confirm-dialog": "1.2.1", "@bcrs-shared-components/corp-type-module": "1.0.11", "@bcrs-shared-components/court-order-poa": "2.1.4", + "@bcrs-shared-components/date-picker": "1.2.34", "@bcrs-shared-components/document-delivery": "1.2.1", "@bcrs-shared-components/enums": "1.0.51", "@bcrs-shared-components/expandable-help": "^1.0.0", @@ -275,6 +276,16 @@ "vue-property-decorator": "^9.1.2" } }, + "node_modules/@bcrs-shared-components/date-picker": { + "version": "1.2.34", + "resolved": "https://registry.npmjs.org/@bcrs-shared-components/date-picker/-/date-picker-1.2.34.tgz", + "integrity": "sha512-t/cqY8KTzsHo4cFyo+zOdCf3FFWht0g1aTiLrT1mJZlFy/mMHl+AiDuHAMmv0d8Lp6LuMPFUzFyXOkSSjm35mw==", + "dependencies": { + "@bcrs-shared-components/interfaces": "^1.0.76", + "@bcrs-shared-components/mixins": "^1.1.27", + "vue": "^2.7.14" + } + }, "node_modules/@bcrs-shared-components/document-delivery": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@bcrs-shared-components/document-delivery/-/document-delivery-1.2.1.tgz", diff --git a/package.json b/package.json index e3f59dcca..49591b45a 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@bcrs-shared-components/confirm-dialog": "1.2.1", "@bcrs-shared-components/corp-type-module": "1.0.11", "@bcrs-shared-components/court-order-poa": "2.1.4", + "@bcrs-shared-components/date-picker": "1.2.34", "@bcrs-shared-components/document-delivery": "1.2.1", "@bcrs-shared-components/enums": "1.0.51", "@bcrs-shared-components/expandable-help": "^1.0.0", diff --git a/src/App.vue b/src/App.vue index 49f8b2554..9c7dbb937 100644 --- a/src/App.vue +++ b/src/App.vue @@ -104,7 +104,7 @@ type="warning" >
@@ -437,13 +437,14 @@ export default { // fetch user info and update Launch Darkly // and save user's Keycloak GUID try { - const userInfo = await AuthServices.fetchUserInfo(this.getAuthApiUrl).then(response => response?.data) + const userInfo = await AuthServices.fetchUserInfo(this.getAuthApiUrl) this.setUserInfo(userInfo) await this.updateLaunchDarkly(userInfo) this.setUserKeycloakGuid(userInfo.keycloakGuid) } catch (error) { // just log the error -- no need to halt app - console.log('Error updating Launch Darkly =', error) // eslint-disable-line no-console + // eslint-disable-next-line no-console + console.log('Error fetching user info or updating Launch Darkly =', error) } // is this a business entity? diff --git a/src/assets/styles/base.scss b/src/assets/styles/base.scss index 27e1fa2b7..f9d157067 100644 --- a/src/assets/styles/base.scss +++ b/src/assets/styles/base.scss @@ -315,6 +315,10 @@ ul.list { border-left: 1px solid $gray6; } -.colour-dk-text { +.color-dk-text { color: $gray9 !important; } + +.bg-color-blue { + background-color: $BCgovBlue5O !important; +} diff --git a/src/components/AgmExtension/AboutTheBusiness.vue b/src/components/AgmExtension/AboutTheBusiness.vue new file mode 100644 index 000000000..bf3363e9c --- /dev/null +++ b/src/components/AgmExtension/AboutTheBusiness.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/src/components/AgmExtension/AgmExtensionEvaluation.vue b/src/components/AgmExtension/AgmExtensionEvaluation.vue new file mode 100644 index 000000000..c552c0a0d --- /dev/null +++ b/src/components/AgmExtension/AgmExtensionEvaluation.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/components/AgmExtension/AgmExtensionHelp.vue b/src/components/AgmExtension/AgmExtensionHelp.vue new file mode 100644 index 000000000..8ff89a828 --- /dev/null +++ b/src/components/AgmExtension/AgmExtensionHelp.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/AgmExtension/ExtensionRequest.vue b/src/components/AgmExtension/ExtensionRequest.vue new file mode 100644 index 000000000..f05539f4a --- /dev/null +++ b/src/components/AgmExtension/ExtensionRequest.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/components/EntityInfo/EntityMenu.vue b/src/components/EntityInfo/EntityMenu.vue index 0c091589b..01bea093a 100644 --- a/src/components/EntityInfo/EntityMenu.vue +++ b/src/components/EntityInfo/EntityMenu.vue @@ -182,37 +182,34 @@ - Request an AGM extension. The longest extension granted at one time is six months. + {{ agmExtensionToolTipText }} -
- - + {{ agmLocationChgToolTipText }} + @@ -254,15 +251,24 @@ export default class EntityMenu extends Mixins(AllowableActionsMixin) { } get enableAgmExtension (): boolean { - return !!GetFeatureFlag('enable-agm-extension') + return !!GetFeatureFlag('supported-agm-extension-entities').includes(this.getLegalType) } get enableAgmLocationChg (): boolean { return !!GetFeatureFlag('supported-agm-location-chg-entities').includes(this.getLegalType) } - /** get tooltip text for AGM location chg list item. Text is different if action item is disabled */ - get toolTipText (): string { + /** The tooltip text for AGM Extension list item. Text is different if action item is disabled. */ + get agmExtensionToolTipText (): string { + if (!this.isAllowed(AllowableActions.AGM_LOCATION_CHANGE)) { + return 'The business must be in good standing to request an AGM extension.' + } else { + return 'Request an AGM extension. The longest extension granted at one time is six months.' + } + } + + /** The tooltip text for AGM Location Change list item. Text is different if action item is disabled. */ + get agmLocationChgToolTipText (): string { if (!this.isAllowed(AllowableActions.AGM_LOCATION_CHANGE)) { return 'The business must be in good standing to request an AGM location change.' } else { diff --git a/src/components/common/Certify.vue b/src/components/common/Certify.vue index a8a13ed40..5f97512fc 100644 --- a/src/components/common/Certify.vue +++ b/src/components/common/Certify.vue @@ -79,11 +79,11 @@ export default class Certify extends Vue { /** Prompt the validations. Used for global validations. */ @Prop({ default: false }) readonly validateForm!: boolean - /** Disable Text Input field. */ - @Prop({ default: false }) readonly disableEdit!: boolean + /** Whether to disable the Certified By input field. */ + @Prop({ default: false }) readonly disableEdit!: boolean + // local properties certifyName = '' - checkboxState = false /** Called when component is created. */ @@ -179,6 +179,7 @@ export default class Certify extends Vue { } } +// vertically align the ripple circle with the check box :deep() { .v-input--selection-controls__ripple { margin-top: -3px; diff --git a/src/components/common/VcardTemplate.vue b/src/components/common/VcardTemplate.vue new file mode 100644 index 000000000..b248936ad --- /dev/null +++ b/src/components/common/VcardTemplate.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/components/common/index.ts b/src/components/common/index.ts index d6cbe2e14..b702225ef 100644 --- a/src/components/common/index.ts +++ b/src/components/common/index.ts @@ -13,6 +13,7 @@ import OfficeAddresses from './OfficeAddresses.vue' import Stepper from '@/components/common/Stepper.vue' import SummaryDirectors from './SummaryDirectors.vue' import SummaryOfficeAddresses from './SummaryOfficeAddresses.vue' +import VcardTemplate from './VcardTemplate.vue' import WarningPopover from './WarningPopover.vue' // NB: importing/exporting Directors gives us weird errors, @@ -34,5 +35,6 @@ export { Stepper, SummaryDirectors, SummaryOfficeAddresses, + VcardTemplate, WarningPopover } diff --git a/src/interfaces/agm-ext-eval-interface.ts b/src/interfaces/agm-ext-eval-interface.ts new file mode 100644 index 000000000..88d989eea --- /dev/null +++ b/src/interfaces/agm-ext-eval-interface.ts @@ -0,0 +1,23 @@ +/** Object that stores AGM Extension evaluation fields. */ +export interface AgmExtEvalIF { + isGoodStanding: boolean + incorporationDate: Date + isFirstAgm: boolean + agmYear: string // YYYY + prevAgmDate?: string // YYYY-MM-DD + isPrevExtension?: boolean + prevExpiryDate?: string // YYYY-MM-DD + intendedAgmDate?: string // YYYY-MM-DD + extensionDuration: number // in months + agmDueDate: string // YYYY-MM-DD +} + +/** An empty AGM Extension Evaluation object. Note: don't assign this - make a copy instead. */ +export const EmptyAgmExtEval: AgmExtEvalIF = { + isGoodStanding: null, + incorporationDate: null, + isFirstAgm: null, + agmYear: null, + extensionDuration: NaN, + agmDueDate: null +} diff --git a/src/interfaces/authentication-state-interface.ts b/src/interfaces/authentication-state-interface.ts new file mode 100644 index 000000000..3ebaedaa5 --- /dev/null +++ b/src/interfaces/authentication-state-interface.ts @@ -0,0 +1,14 @@ +import { CurrentUserIF, CurrentAccountIF } from '@/interfaces' + +/** The state model interface for the Authentication Store. */ +export interface AuthenticationStateIF { + account: { + currentUser: CurrentUserIF + currentAccount: CurrentAccountIF + }, + auth: { + token: string + idToken: string + refreshToken: string + } +} diff --git a/src/interfaces/business-interfaces.ts b/src/interfaces/business-state-interfaces.ts similarity index 97% rename from src/interfaces/business-interfaces.ts rename to src/interfaces/business-state-interfaces.ts index 93c16c1df..49c2cedcb 100644 --- a/src/interfaces/business-interfaces.ts +++ b/src/interfaces/business-state-interfaces.ts @@ -69,7 +69,7 @@ export interface ApiBusinessIF { warnings: Array } -/** The Business module state interface. */ +/** The state model interface for the Business Store. */ export interface BusinessStateIF { businessInfo: ApiBusinessIF } diff --git a/src/interfaces/configuration-state-interface.ts b/src/interfaces/configuration-state-interface.ts index b88be3a8f..b4fa4dbda 100644 --- a/src/interfaces/configuration-state-interface.ts +++ b/src/interfaces/configuration-state-interface.ts @@ -1,4 +1,4 @@ -/** The Configuration module state interface. */ +/** The state model interface for the Configuration Store. */ export interface ConfigurationStateIF { configuration: { VUE_APP_ADDRESS_COMPLETE_KEY: string, diff --git a/src/interfaces/filing-history-list-state-interface.ts b/src/interfaces/filing-history-list-state-interface.ts index dd689609e..89257d60b 100644 --- a/src/interfaces/filing-history-list-state-interface.ts +++ b/src/interfaces/filing-history-list-state-interface.ts @@ -1,6 +1,6 @@ import { ApiFilingIF } from '@/interfaces' -/** The Filing History List module state interface. */ +/** The state model interface for the Filing History List Store. */ export interface FilingHistoryListStateIF { addCommentDialog: boolean currentFiling: ApiFilingIF diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts index 97056e614..a87b8e0bd 100644 --- a/src/interfaces/index.ts +++ b/src/interfaces/index.ts @@ -11,15 +11,16 @@ export type { AlterationIF, ContactPointIF, NameTranslationIF, ShareStructureIF, IncorporationApplicationIF, IncorporationAddressIf, ShareClassIF, CommentIF, ConfirmDialogType, StaffPaymentIF, ApiDateTimeUtc, FormattedDateTimeGmt, IsoDatePacific, SpecialResolutionIF } -// must come before other interfaces that use it -export * from './officer-interface' +export * from './officer-interface' // must come before other interfaces that use it export * from './address-interfaces' export * from './affiliation-invitation-interface' +export * from './agm-ext-eval-interface' export * from './alert-message-interface' export * from './api-filing-interface' export * from './api-task-interface' +export * from './authentication-state-interface' export * from './breadcrumb-interface' -export * from './business-interfaces' +export * from './business-state-interfaces' export * from './component-interface' export * from './configuration-state-interface' export * from './correction-filing-interface' @@ -44,7 +45,6 @@ export * from './presigned-url-interface' export * from './restoration-interfaces' export * from './role-interface' export * from './root-state-interface' -export * from './state-interface' export * from './steps-interface' export * from './table-header-interface' export * from './todo-item-interface' diff --git a/src/interfaces/root-state-interface.ts b/src/interfaces/root-state-interface.ts index 3f9ca863f..49e29734b 100644 --- a/src/interfaces/root-state-interface.ts +++ b/src/interfaces/root-state-interface.ts @@ -1,14 +1,49 @@ -import { CurrentUserIF, CurrentAccountIF } from '@/interfaces' +import { CorpTypeCd, EntityStatus, FilingStatus } from '@/enums' +import { ApiHeaderIF, ApiTaskIF, FilingDataIF, OfficeAddressIF, PartyIF } from '@/interfaces' -/** The ROOT state model interface. */ +/** Interface for the state filing object. */ +export interface StateFilingIF { + business: any + consentContinuationOut?: any + header: ApiHeaderIF + dissolution?: any + restoration?: any + putBackOn?: any +} + +/** The state model interface for the Root Store. */ export interface RootStateIF { - account: { - currentUser: CurrentUserIF, - currentAccount: CurrentAccountIF - }, - auth: { - token: string, - idToken: string, - refreshToken: string - } + // tombstone data + authRoles: Array + currentDate: string // 'today' as YYYY-MM-DD in Pacific timezone + currentJsDate: Date // 'now' as of dashboard loading in UTC + entityStatus: EntityStatus // for draft app only + keycloakRoles: Array + stateFiling: StateFilingIF + userKeycloakGuid: string + + // entity info from auth db + businessEmail: string + businessPhone: string + businessPhoneExtension: string + corpTypeCd: CorpTypeCd + + // set by Todo List + ARFilingYear: number // YYYY + arMaxDate: string // YYYY-MM-DD // COOPs only + arMinDate: string // YYYY-MM-DD // COOPs only + nextARDate: string // YYYY-MM-DD // BCOMPs only + + // other global data + businessAddress: OfficeAddressIF + configObject: any + currentFilingStatus: FilingStatus + fetchingDataSpinner: boolean + filingData: Array + nameRequest: any + parties: Array + recordsAddress: OfficeAddressIF + registeredAddress: OfficeAddressIF + tasks: Array // "tasks" data from API + userInfo: any // from auth db } diff --git a/src/interfaces/state-interface.ts b/src/interfaces/state-interface.ts deleted file mode 100644 index 88f94c979..000000000 --- a/src/interfaces/state-interface.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { CorpTypeCd, EntityStatus, FilingStatus } from '@/enums' -import { ApiHeaderIF, ApiTaskIF, FilingDataIF, OfficeAddressIF, PartyIF } from '@/interfaces' - -export interface StateFilingIF { - business: any - consentContinuationOut?: any - header: ApiHeaderIF - dissolution?: any - restoration?: any - putBackOn?: any -} - -/** The state model interface. */ -export interface StateIF { - // tombstone data - authRoles: Array - currentDate: string // 'today' as YYYY-MM-DD in Pacific timezone - currentJsDate: Date // 'now' as of dashboard loading in UTC - entityStatus: EntityStatus // for draft app only - keycloakRoles: Array - stateFiling: StateFilingIF // the state filing object - userInfo: any - userKeycloakGuid: string - - // entity info from auth db - businessEmail: string - businessPhone: string - businessPhoneExtension: string - corpTypeCd: CorpTypeCd - - // set by Todo List - ARFilingYear: number // YYYY - arMaxDate: string // YYYY-MM-DD // COOPs only - arMinDate: string // YYYY-MM-DD // COOPs only - nextARDate: string // YYYY-MM-DD // BCOMPs only - - // other global data - businessAddress: OfficeAddressIF - configObject: any - currentFilingStatus: FilingStatus - fetchingDataSpinner: boolean - filingData: Array - nameRequest: any - parties: Array - recordsAddress: OfficeAddressIF - registeredAddress: OfficeAddressIF - tasks: Array // "tasks" data from API -} diff --git a/src/mixins/date-mixin.ts b/src/mixins/date-mixin.ts index d13875480..a085f4c42 100644 --- a/src/mixins/date-mixin.ts +++ b/src/mixins/date-mixin.ts @@ -93,6 +93,16 @@ export default class DateMixin extends Vue { return DateUtilities.dateToPacificDateTime(date) } + /** + * Converts a date string (YYYY-MM-DD) to a date string (Month Day, Year) in Pacific timezone. + * @param longMonth whether to show long month name (eg, December vs Dec) + * @param showWeekday whether to show the weekday name (eg, Thursday) + * @example "2021-01-01" -> "Thursday, December 31, 2020" + */ + yyyyMmDdToPacificDate (dateStr: IsoDatePacific, longMonth = false, showWeekday = false): string { + return DateUtilities.dateToPacificDate(this.yyyyMmDdToDate(dateStr), longMonth, showWeekday) + } + /** * DEPRECATED - call resources/date-utilities instead * Converts a Date object to an API datetime string. diff --git a/src/services/auth-services.ts b/src/services/auth-services.ts index bc76a6e8b..3dc1647d0 100644 --- a/src/services/auth-services.ts +++ b/src/services/auth-services.ts @@ -19,11 +19,18 @@ export default class AuthServices { /** * Fetches user info for the current user. - * @returns the axios response + * @returns the user info object */ - static async fetchUserInfo (authApiUrl: string): Promise { + static async fetchUserInfo (authApiUrl: string): Promise { const url = `${authApiUrl}users/@me` return axios.get(url) + .then(response => { + const data = response?.data + if (!data) { + console.log('fetchUserInfo() error - invalid response =', response) + } + return data + }) } /** diff --git a/src/stores/authenticationStore.ts b/src/stores/authenticationStore.ts index 457f361a7..4a28d134e 100644 --- a/src/stores/authenticationStore.ts +++ b/src/stores/authenticationStore.ts @@ -1,18 +1,18 @@ import { AccountTypes } from '@bcrs-shared-components/enums' -import { RootStateIF } from '@/interfaces' +import { AuthenticationStateIF } from '@/interfaces' import { defineStore } from 'pinia' import { useRootStore } from './rootStore' export const useAuthenticationStore = defineStore('authentication', { getters: { /** Whether the current account is a premium account. */ - isPremiumAccount (rootState: RootStateIF): boolean { - return (rootState.account.currentAccount.accountType === AccountTypes.PREMIUM) + isPremiumAccount (state: AuthenticationStateIF): boolean { + return (state.account.currentAccount.accountType === AccountTypes.PREMIUM) }, /** Whether the user is ServiceBC Staff (which is not the same as Staff). */ - isSbcStaff (rootState: RootStateIF): boolean { - return (rootState.account.currentAccount.accountType === AccountTypes.SBC_STAFF) + isSbcStaff (state: AuthenticationStateIF): boolean { + return (state.account.currentAccount.accountType === AccountTypes.SBC_STAFF) }, /** The user's Keycloak GUID. */ @@ -21,8 +21,8 @@ export const useAuthenticationStore = defineStore('authentication', { }, /** The user's Keycloak Bearer Token. */ - getKeycloakToken (rootState: RootStateIF): string { - return rootState.auth.token + getKeycloakToken (state: AuthenticationStateIF): string { + return state.auth.token }, /** Returns true is the user is Keycloak authenticated. */ @@ -31,26 +31,26 @@ export const useAuthenticationStore = defineStore('authentication', { }, /** Returns the Keycloak user object. */ - getKeycloakUser (rootState: RootStateIF): any { - return rootState.account.currentUser + getKeycloakUser (state: AuthenticationStateIF): any { + return state.account.currentUser }, /** Each Keycloak user can have many accounts. * This getter returns the account the user * has selected */ - getCurrentAccount (rootState: RootStateIF): any { - return rootState.account.currentAccount + getCurrentAccount (state: AuthenticationStateIF): any { + return state.account.currentAccount }, /** Returns the Keycloak roles. */ - getKeycloakRoles (rootState: RootStateIF): Array { - return rootState.account.currentUser.roles + getKeycloakRoles (state: AuthenticationStateIF): Array { + return state.account.currentUser.roles }, /** Is True if Keycloak Staff role is set. */ - isKeycloakRoleStaff (rootState: RootStateIF): boolean { - return rootState.account.currentUser.roles.includes('staff') + isKeycloakRoleStaff (state: AuthenticationStateIF): boolean { + return state.account.currentUser.roles.includes('staff') } } }) diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 83b1fdb1e..fa20956f1 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -1,20 +1,19 @@ import { defineStore } from 'pinia' import { CorpTypeCd, EntityStatus, FilingStatus, FilingSubTypes, FilingTypes } from '@/enums' -import { ApiTaskIF, DissolutionConfirmationResourceIF, FilingDataIF, OfficeAddressIF, PartyIF, StateIF, +import { ApiTaskIF, DissolutionConfirmationResourceIF, FilingDataIF, OfficeAddressIF, PartyIF, RootStateIF, TodoListResourceIF, IsoDatePacific, StateFilingIF } from '@/interfaces' import { DateUtilities, EnumUtilities, LegalServices } from '@/services' import { useBusinessStore } from './businessStore' import { useFilingHistoryListStore } from './filingHistoryListStore' export const useRootStore = defineStore('root', { - state: (): StateIF => ({ + state: (): RootStateIF => ({ authRoles: [], currentDate: null, currentJsDate: null, entityStatus: null, keycloakRoles: [], stateFiling: null, - userInfo: null, userKeycloakGuid: null, businessEmail: null, businessPhone: null, @@ -33,12 +32,13 @@ export const useRootStore = defineStore('root', { parties: [], recordsAddress: null, registeredAddress: null, - tasks: [] + tasks: [], + userInfo: null }), getters: { /** The list of tasks from the API. */ - getTasks (state: StateIF): ApiTaskIF[] { + getTasks (state: RootStateIF): ApiTaskIF[] { return state.tasks }, @@ -47,7 +47,7 @@ export const useRootStore = defineStore('root', { * NB: internally this is stored as UTC * NB: use date mixins to display this */ - getCurrentJsDate (state: StateIF): Date { + getCurrentJsDate (state: RootStateIF): Date { return state.currentJsDate }, @@ -55,22 +55,22 @@ export const useRootStore = defineStore('root', { * The current date (YYYY-MM-DD), which was refreshed when the dashload loaded, * in Pacific timezone. */ - getCurrentDate (state: StateIF): IsoDatePacific { + getCurrentDate (state: RootStateIF): IsoDatePacific { return state.currentDate }, /** The current year. */ - getCurrentYear (state: StateIF): number { + getCurrentYear (state: RootStateIF): number { return (state.currentDate ? +state.currentDate.substring(0, 4) : 0) }, /** The business email. */ - getBusinessEmail (state: StateIF): string { + getBusinessEmail (state: RootStateIF): string { return state.businessEmail }, /** The business phone number and optional extension. */ - getFullPhoneNumber (state: StateIF): string { + getFullPhoneNumber (state: RootStateIF): string { const phone = state.businessPhone const ext = state.businessPhoneExtension @@ -81,24 +81,24 @@ export const useRootStore = defineStore('root', { }, /** The roles from the Keycloak token (JWT). */ - getKeycloakRoles (state: StateIF): Array { + getKeycloakRoles (state: RootStateIF): Array { return state.keycloakRoles }, /** Is True if Staff role is set. * DEPRECATED - use authentication/isKeycloakRoleStaff() instead */ - isRoleStaff (state: StateIF): boolean { + isRoleStaff (state: RootStateIF): boolean { return state.keycloakRoles.includes('staff') }, /** Is True if app permissions includes Edit role. */ - isRoleEdit (state: StateIF): boolean { + isRoleEdit (state: RootStateIF): boolean { return state.authRoles.includes('edit') }, /** Is True if app permission includes View role. */ - isRoleView (state: StateIF): boolean { + isRoleView (state: RootStateIF): boolean { return state.authRoles.includes('view') }, @@ -108,25 +108,25 @@ export const useRootStore = defineStore('root', { }, /** Is True if this is a Draft Application. */ - isAppTask (state: StateIF): boolean { + isAppTask (state: RootStateIF): boolean { return (state.entityStatus === EntityStatus.DRAFT_APP) }, /** Is True if this is a Paid or Completed Application. */ - isAppFiling (state: StateIF): boolean { + isAppFiling (state: RootStateIF): boolean { return (state.entityStatus === EntityStatus.FILED_APP) }, /** The Name Request (may be null). */ - getNameRequest (state: StateIF): any { + getNameRequest (state: RootStateIF): any { return (state.nameRequest) }, - isCurrentFilingEditable (state: StateIF): boolean { + isCurrentFilingEditable (state: RootStateIF): boolean { return (state.currentFilingStatus === FilingStatus.NEW || state.currentFilingStatus === FilingStatus.DRAFT) }, - getReportState (state: StateIF): string { + getReportState (state: RootStateIF): string { switch (state.currentFilingStatus) { case FilingStatus.NEW: return '' case FilingStatus.DRAFT: return 'Draft' @@ -135,7 +135,7 @@ export const useRootStore = defineStore('root', { }, /** Whether to show the Fetching Data spinner. */ - showFetchingDataSpinner (state: StateIF): boolean { + showFetchingDataSpinner (state: RootStateIF): boolean { return state.fetchingDataSpinner }, @@ -143,7 +143,7 @@ export const useRootStore = defineStore('root', { * This is used to show Legal Obligations only for a new business * that has no tasks and hasn't filed anything yet (except their IA). **/ - isBusinessWithNoMaintenanceFilings (state: StateIF): boolean { + isBusinessWithNoMaintenanceFilings (state: RootStateIF): boolean { const filingHistoryListStore = useFilingHistoryListStore() return ( // no todo items @@ -157,36 +157,36 @@ export const useRootStore = defineStore('root', { }, /** The entity registered office address. */ - getRegisteredOfficeAddress (state: StateIF): OfficeAddressIF { + getRegisteredOfficeAddress (state: RootStateIF): OfficeAddressIF { return state.registeredAddress }, /** The parties list from the API. */ - getParties (state: StateIF): Array { + getParties (state: RootStateIF): Array { return state.parties }, /** The entity business address. */ - getBusinessAddress (state: StateIF): OfficeAddressIF { + getBusinessAddress (state: RootStateIF): OfficeAddressIF { return state.businessAddress }, /** The entity resource text for confirmation modal. */ - getDissolutionConfirmationResource (state: StateIF): DissolutionConfirmationResourceIF { + getDissolutionConfirmationResource (state: RootStateIF): DissolutionConfirmationResourceIF { return state.configObject?.dissolutionConfirmation }, /** The entity TodoList resources. */ - getTodoListResource (state: StateIF): TodoListResourceIF { + getTodoListResource (state: RootStateIF): TodoListResourceIF { return state.configObject?.todoList }, /** The corp type code from Auth db (may be null). */ - getCorpTypeCd (state: StateIF): CorpTypeCd { + getCorpTypeCd (state: RootStateIF): CorpTypeCd { return state.corpTypeCd }, - /** The user's full info. */ - getUserInfo (state: StateIF): any { + /** The user info from Auth db (may be null). */ + getUserInfo (state: RootStateIF): any { return state.userInfo }, @@ -195,7 +195,7 @@ export const useRootStore = defineStore('root', { // /** The filing that changed the business state, if there is one. */ - getStateFiling (state: StateIF): StateFilingIF { + getStateFiling (state: RootStateIF): StateFilingIF { return state.stateFiling }, @@ -277,8 +277,8 @@ export const useRootStore = defineStore('root', { this.userKeycloakGuid = userKeycloakGuid }, - setUserInfo (userInfo: any) { - this.userInfo = userInfo + setUserInfo (val: any) { + this.userInfo = val }, /** Set the app permissions. */ diff --git a/src/stores/state.ts b/src/stores/state.ts index 06fb2f7ae..d7da90ce9 100644 --- a/src/stores/state.ts +++ b/src/stores/state.ts @@ -1,6 +1,6 @@ -import { StateIF } from '@/interfaces' +import { RootStateIF } from '@/interfaces' -export const state: StateIF = { +export const state: RootStateIF = { authRoles: [], currentDate: null, currentJsDate: null, @@ -28,5 +28,6 @@ export const state: StateIF = { parties: [], recordsAddress: null, registeredAddress: null, - tasks: [] + tasks: [], + userInfo: null } diff --git a/src/utils/feature-flags.ts b/src/utils/feature-flags.ts index a6df91af7..9d3b4e8e0 100644 --- a/src/utils/feature-flags.ts +++ b/src/utils/feature-flags.ts @@ -9,8 +9,6 @@ declare const window: any */ const defaultFlagSet: LDFlagSet = { 'banner-text': '', // by default, there is no banner text - 'enable-agm-extension': false, - 'enable-agm-location-chg': false, 'enable-digital-credentials': false, 'sentry-enable': false, // by default, no sentry logs 'show-alert-phone-numbers-firm': false, @@ -18,6 +16,7 @@ const defaultFlagSet: LDFlagSet = { 'supported-correction-entities': [], 'supported-dissolution-entities': [], 'supported-consent-continuation-out-entities': [], + 'supported-agm-extension-entities': [], 'supported-agm-location-chg-entities': [] } diff --git a/src/views/AgmExtension.vue b/src/views/AgmExtension.vue index c6d2aa894..3e8dd5e13 100644 --- a/src/views/AgmExtension.vue +++ b/src/views/AgmExtension.vue @@ -14,12 +14,6 @@ @exit="onPaymentErrorDialogExit()" /> - - - - -
-
- -
- {{ loadingMessage }} -
-
-
-
- - +
-
-

- AGM Extension -

-
+

AGM Extension

- -
-
-

Extension Eligibility

-

- Fill out the following section to evaluate the eligibility for extension. -

-
+
+

Extension Detail

+

+ Enter the details about the extension request to evaluate eligibility. +

+
-
- - - - - Business in Good Standing - - - - Yes - - - - - - - - - Date of Incorporation - - - - (date goes here) - - - - - - - - - Date of the Last Extension Grant on Record - - - - (date goes here) - - - - - - - - - Date the Annual General Meeting is intended to be held - - - - (date picker goes here) - - - - - - - - - Date of Previous Annual General Meeting - - - - (radio buttons go here) - - - - - - - - - Was the above extension grant for the current AGM? - - - - (radio buttons go here) - - - -
-
+ + + + + + + + + + +
data: {{ data }}
-
+

Certify

@@ -292,27 +132,6 @@ id="buttons-container" class="list-item" > -

- - Save - - - Save and Resume Later - -
-
{ - // wait until entire view is rendered (including all child components) - // see https://v3.vuejs.org/api/options-lifecycle-hooks.html#mounted - await this.$nextTick() + mounted (): void { + this.data.isGoodStanding = this.isGoodStanding + this.data.incorporationDate = this.getFoundingDate - if (this.filingId > 0) { - this.loadingMessage = `Resuming Your Request for AGM Extension` - } else { - this.loadingMessage = `Preparing Your Request for AGM Extension` + // Pre-populate the certified block with the logged in user's name (if not staff) + if (!this.isRoleStaff && this.getUserInfo) { + this.certifiedBy = this.getUserInfo.firstname + ' ' + this.getUserInfo.lastname } - // fetch draft (which may overwrite some properties) - if (this.filingId > 0) { - await this.fetchDraftFiling() - } - - this.dataLoaded = true - // always include consent continue out code // use existing Priority and Waive Fees flags this.updateFilingData('add', FilingCodes.AGM_EXTENSION, this.staffPaymentData.isPriority, (this.staffPaymentData.option === StaffPaymentOptions.NO_FEE)) } - /** Fetches the draft consent filing. */ - async fetchDraftFiling (): Promise { - const url = `businesses/${this.getIdentifier}/filings/${this.filingId}` - await LegalServices.fetchFiling(url).then(filing => { - // verify data - if (!filing) throw new Error('Missing filing') - if (!filing.header) throw new Error('Missing header') - if (!filing.business) throw new Error('Missing business') - if (!filing.agmExtension) throw new Error('Missing agm extension object') - if (filing.header.name !== FilingTypes.AGM_EXTENSION) throw new Error('Invalid filing type') - if (filing.header.status !== FilingStatus.DRAFT) throw new Error('Invalid filing status') - if (filing.business.identifier !== this.getIdentifier) throw new Error('Invalid business identifier') - if (filing.business.legalName !== this.getLegalName) throw new Error('Invalid business legal name') - - // load Certified By (but not Date) - this.certifiedBy = filing.header.certifiedBy - - // load Staff Payment properties - if (filing.header.routingSlipNumber) { - this.staffPaymentData = { - option: StaffPaymentOptions.FAS, - routingSlipNumber: filing.header.routingSlipNumber, - isPriority: filing.header.priority - } as StaffPaymentIF - } else if (filing.header.bcolAccountNumber) { - this.staffPaymentData = { - option: StaffPaymentOptions.BCOL, - bcolAccountNumber: filing.header.bcolAccountNumber, - datNumber: filing.header.datNumber, - folioNumber: filing.header.folioNumber, - isPriority: filing.header.priority - } as StaffPaymentIF - } else if (filing.header.waiveFees) { - this.staffPaymentData = { - option: StaffPaymentOptions.NO_FEE - } as StaffPaymentIF - } else { - this.staffPaymentData = { - option: StaffPaymentOptions.NONE - } as StaffPaymentIF - } - }).catch(error => { - // eslint-disable-next-line no-console - console.log('fetchDraftFiling() error =', error) - this.resumeErrorDialog = true - }) - } - - /** - * Called when user clicks Save button - * or when user retries from Save Error dialog. - */ - async onClickSave (): Promise { - // prevent double saving - if (this.busySaving) return - - this.saving = true - - // save draft filing - this.savedFiling = await this.saveFiling(true).catch(error => { - this.saveErrorReason = SaveErrorReasons.SAVE - // try to return filing (which may exist depending on save error) - return error?.response?.data?.filing || null - }) - - const filingId = +this.savedFiling?.header?.filingId || 0 - if (filingId > 0) { - // save filing ID for possible future updates - this.filingId = filingId - } - - // if there was no error, finish save process now - // otherwise, dialog may finish this later - if (!this.saveErrorReason) this.onClickSaveFinish() - - this.saving = false - } - - onClickSaveFinish (): void { - // safety check - if (this.filingId > 0) { - // changes were saved, so clear flag - this.haveChanges = false - } else { - // eslint-disable-next-line no-console - console.log('onClickSaveFinish(): invalid filing ID, filing =', null) - } - } - - /** - * Called when user clicks Save and Resume later button - * or when user retries from Save Error dialog. - */ - async onClickSaveResume (): Promise { - // prevent double saving - if (this.busySaving) return - - this.savingResuming = true - - // save draft filing - this.savedFiling = await this.saveFiling(true).catch(error => { - this.saveErrorReason = SaveErrorReasons.SAVE_RESUME - // try to return filing (which may exist depending on save error) - return error?.response?.data?.filing || null - }) - - const filingId = +this.savedFiling?.header?.filingId || 0 - if (filingId > 0) { - // save filing ID for possible future updates - this.filingId = filingId - } - - // if there was no error, finish save-resume process now - // otherwise, dialog may finish this later - if (!this.saveErrorReason) this.onClickSaveResumeFinish() - - this.savingResuming = false - } - - onClickSaveResumeFinish (): void { - // safety check - if (this.filingId > 0) { - // changes were saved, so go to dashboard - this.goToDashboard(true) - } else { - // eslint-disable-next-line no-console - console.log('onClickSaveResumeFinish(): invalid filing ID, filing =', null) - } - } - /** * Called when user clicks File and Pay button * or when user retries from Save Error dialog @@ -647,7 +324,7 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, if (!this.isPageValid) { this.showErrors = true // *** TODO: check for section errors here - if (!this.extensionEligibilityValid) { + if (!this.extensionRequestValid) { // Show error message of detail comment text area if invalid // this.$refs.detailCommentRef.$refs.textarea.error = true } @@ -749,7 +426,7 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, const header: any = { header: { - name: FilingTypes.CONSENT_CONTINUATION_OUT, + name: FilingTypes.AGM_EXTENSION, certifiedBy: this.certifiedBy || '', date: this.getCurrentDate // NB: API will reassign this date according to its clock } @@ -864,73 +541,55 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, /** Handles Retry events from Save Error dialog. */ async onSaveErrorDialogRetry (): Promise { - switch (this.saveErrorReason) { - case SaveErrorReasons.SAVE: - // close the dialog and retry save - this.saveErrorReason = null - await this.onClickSave() - break - case SaveErrorReasons.SAVE_RESUME: - // close the dialog and retry save-resume - this.saveErrorReason = null - await this.onClickSaveResume() - break - case SaveErrorReasons.FILE_PAY: - // close the dialog and retry file-pay - this.saveErrorReason = null - if (this.isRoleStaff) await this.onClickFilePay(true) - else await this.onClickFilePay() - break + if (this.saveErrorReason === SaveErrorReasons.FILE_PAY) { + // close the dialog and retry file-pay + this.saveErrorReason = null + await this.onClickFilePay(this.isRoleStaff) } } /** Handles Okay events from Save Error dialog. */ onSaveErrorDialogOkay (): void { - switch (this.saveErrorReason) { - case SaveErrorReasons.SAVE: - // close the dialog and finish save process - this.saveErrorReason = null - this.onClickSaveFinish() - break - case SaveErrorReasons.SAVE_RESUME: - // close the dialog and finish save-resume process - this.saveErrorReason = null - this.onClickSaveResumeFinish() - break - case SaveErrorReasons.FILE_PAY: - // close the dialog and finish file-pay process - this.saveErrorReason = null - this.onClickFilePayFinish() - break + if (this.saveErrorReason === SaveErrorReasons.FILE_PAY) { + // close the dialog and finish file-pay process + this.saveErrorReason = null + this.onClickFilePayFinish() } } /** Array of valid components. Must match validFlags. */ readonly validComponents = [ - 'extension-eligibility-section', + 'extension-request-vcard', 'certify-form-section' ] /** Object of valid flags. Must match validComponents. */ get validFlags (): object { return { - extensionEligibility: this.extensionEligibilityValid, + extensionEligibility: this.extensionRequestValid, certifyForm: this.certifyFormValid } } - @Watch('extensionEligibilityValid') - @Watch('certifyFormValid') - onHaveChanges (): void { + /** Watches all data properties to keep track of changes. */ + @Watch('data.isFirstAgm') + @Watch('data.agmYear') + @Watch('data.prevAgmDate') + @Watch('data.isPrevExtension') + @Watch('data.prevExpiryDate') + @Watch('data.intendedAgmDate') + @Watch('certifiedBy') + @Watch('isCertified') + private onHaveChanges (): void { this.haveChanges = true } @Watch('staffPaymentData') - onStaffPaymentDataChanged (val: StaffPaymentIF): void { + private onStaffPaymentDataChanged (val: StaffPaymentIF): void { const waiveFees = (val.option === StaffPaymentOptions.NO_FEE) // add Waive Fees flag to all filing codes - this.updateFilingData('add', FilingCodes.CONSENT_CONTINUATION_OUT, val.isPriority, waiveFees) + this.updateFilingData('add', FilingCodes.AGM_EXTENSION, val.isPriority, waiveFees) this.haveChanges = true } @@ -951,17 +610,6 @@ h2::before { content: counter(header-counter) '. '; } -article { - .v-card { - line-height: 1.2rem; - font-size: $px-14; - } -} - -section + section { - margin-top: 3rem; -} - h1 { margin-bottom: 1.25rem; line-height: 2rem; @@ -974,10 +622,6 @@ h2 { font-size: 1.125rem; } -strong { - color: $gray9; -} - // Save & Filing Buttons #buttons-container { padding-top: 2rem; @@ -1002,12 +646,6 @@ strong { // Fix font size and color to stay consistent. :deep() { - .invalid-extension-eligibility { - .title-label { - color: $app-red; - } - } - .certify-clause, .certify-stmt, .grey-text { color: $gray7; } diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index 571930a90..a0f125243 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -14,30 +14,8 @@ @exit="onPaymentErrorDialogExit()" /> - - -
-
- -
- {{ loadingMessage }} -
-
-
-
- - + { - // wait until entire view is rendered (including all child components) - // see https://v3.vuejs.org/api/options-lifecycle-hooks.html#mounted - await this.$nextTick() - + mounted (): void { // Pre-populate the certified block with the logged in user's name (if not staff) if (!this.isRoleStaff && this.getUserInfo) { - const firstName = this.getUserInfo?.firstname - const lastName = this.getUserInfo?.lastname - this.certifiedBy = firstName + ' ' + lastName - } - - if (this.filingId > 0) { - this.loadingMessage = `Resuming Your Request for AGM Location Change` - } else { - this.loadingMessage = `Preparing Your Request for AGM Location Change` + this.certifiedBy = this.getUserInfo.firstname + ' ' + this.getUserInfo.lastName } - this.dataLoaded = true - // always include agm location change code // clear Priority flag and set the Waive Fees flag to true this.updateFilingData('add', FilingCodes.AGM_LOCATION_CHANGE, undefined, true) @@ -689,11 +641,13 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, } } - @Watch('agmYearValid') - @Watch('agmLocationValid') - @Watch('certifyFormValid') - @Watch('resonValid') - onHaveChanges (): void { + /** Watches all data properties to keep track of changes. */ + @Watch('agmYear') + @Watch('agmLocation') + @Watch('certifiedBy') + @Watch('isCertified') + @Watch('reason') + private onHaveChanges (): void { this.haveChanges = true } } diff --git a/tests/unit/EntityMenu.spec.ts b/tests/unit/EntityMenu.spec.ts index 3b7638442..905885e63 100644 --- a/tests/unit/EntityMenu.spec.ts +++ b/tests/unit/EntityMenu.spec.ts @@ -482,8 +482,9 @@ describe('Entity Menu - Request AGM Extension click tests', () => { beforeAll(() => { // override feature flag vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => { - if (flag === 'enable-agm-extension') return true - if (flag === 'supported-agm-location-chg-entities') return 'BEN' + if (flag === 'supported-agm-extension-entities') return 'BEN' + if (flag === 'supported-agm-location-chg-entities') return '' + return null }) }) @@ -493,6 +494,8 @@ describe('Entity Menu - Request AGM Extension click tests', () => { }) it('displays the Request AGM Extension button', async () => { + businessStore.setLegalType(CorpTypeCd.BENEFIT_COMPANY) + // mount the component and wait for everything to stabilize const wrapper = mount(EntityMenu, { vuetify, @@ -511,12 +514,13 @@ describe('Entity Menu - Request AGM Extension click tests', () => { }) describe('Entity Menu - Request AGM Location Change click tests', () => { - let vm: any - beforeAll(async () => { // override feature flag - vi.spyOn(utils, 'GetFeatureFlag').mockImplementation( - (flag) => (flag === 'supported-agm-location-chg-entities')) + vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => { + if (flag === 'supported-agm-extension-entities') return '' + if (flag === 'supported-agm-location-chg-entities') return 'BEN' + return null + }) }) afterAll(() => { @@ -525,6 +529,8 @@ describe('Entity Menu - Request AGM Location Change click tests', () => { }) it('displays the Request AGM Location Change button', async () => { + businessStore.setLegalType(CorpTypeCd.BENEFIT_COMPANY) + // mount the component and wait for everything to stabilize const wrapper = mount(EntityMenu, { vuetify, @@ -532,9 +538,6 @@ describe('Entity Menu - Request AGM Location Change click tests', () => { propsData: { businessId: 'BC1234567' } }) - vm = wrapper.vm - vi.spyOn(vm, 'enableAgmLocationChg', 'get').mockReturnValue(true) - await wrapper.find('.menu-btn').trigger('click') expect(wrapper.find('#agm-loc-chg-list-item').exists()).toBe(true) diff --git a/tests/unit/auth-services.spec.ts b/tests/unit/auth-services.spec.ts index e4e788c4b..7d077143b 100644 --- a/tests/unit/auth-services.spec.ts +++ b/tests/unit/auth-services.spec.ts @@ -48,7 +48,7 @@ describe('Auth Services', () => { const response = await AuthServices.fetchUserInfo('') // verify data - expect(response).toEqual({ data: USER_INFO }) + expect(response).toEqual(USER_INFO) }) it('fetches entity info correctly', async () => { From a201be58144f893a8a9c98b0dc0b7d74824e6843 Mon Sep 17 00:00:00 2001 From: Karim El Jazzar <122301442+JazzarKarim@users.noreply.github.com> Date: Thu, 2 Nov 2023 15:31:26 -0700 Subject: [PATCH 10/55] Make Certify block non-editable if non-staff user (AGM Filings) (#564) Make certify block non-editable if non-staff user --- src/views/AgmExtension.vue | 1 + src/views/AgmLocationChg.vue | 3 ++- src/views/ConsentContinuationOut.vue | 4 +--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/AgmExtension.vue b/src/views/AgmExtension.vue index 3e8dd5e13..7aa302db5 100644 --- a/src/views/AgmExtension.vue +++ b/src/views/AgmExtension.vue @@ -97,6 +97,7 @@ :isCertified.sync="isCertified" :certifiedBy.sync="certifiedBy" :class="{ 'invalid-certify': !certifyFormValid && showErrors }" + :disableEdit="!isRoleStaff" :entityDisplay="displayName()" :message="certifyText(FilingCodes.AGM_EXTENSION)" @valid="certifyFormValid=$event" diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index a0f125243..603bc1ad5 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -192,6 +192,7 @@ :isCertified.sync="isCertified" :certifiedBy.sync="certifiedBy" :class="{ 'invalid-certify': !certifyFormValid && showErrors }" + :disableEdit="!isRoleStaff" :entityDisplay="displayName()" :message="certifyText(FilingCodes.AGM_LOCATION_CHANGE)" @valid="certifyFormValid=$event" @@ -419,7 +420,7 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, mounted (): void { // Pre-populate the certified block with the logged in user's name (if not staff) if (!this.isRoleStaff && this.getUserInfo) { - this.certifiedBy = this.getUserInfo.firstname + ' ' + this.getUserInfo.lastName + this.certifiedBy = this.getUserInfo.firstname + ' ' + this.getUserInfo.lastname } // always include agm location change code diff --git a/src/views/ConsentContinuationOut.vue b/src/views/ConsentContinuationOut.vue index 5f65d4c6a..ede34ef7f 100644 --- a/src/views/ConsentContinuationOut.vue +++ b/src/views/ConsentContinuationOut.vue @@ -507,9 +507,7 @@ export default class ConsentContinuationOut extends Mixins(CommonMixin, DateMixi // Pre-populate the certified block with the logged in user's name (if not staff) if (!this.isRoleStaff && this.getUserInfo) { - const firstName = this.getUserInfo?.firstname - const lastName = this.getUserInfo?.lastname - this.certifiedBy = firstName + ' ' + lastName + this.certifiedBy = this.getUserInfo.firstname + ' ' + this.getUserInfo.lastname } // always include consent continue out code From 72932effebc594b2bbf5514b70ae0619f1d0ff4a Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Fri, 3 Nov 2023 12:29:37 -0700 Subject: [PATCH 11/55] feat: digital business card (#566) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: CredentialsLanding component: add heading card Signed-off-by: Akiff Manji * feat: CredentialsLanding component: add supplemental cards Signed-off-by: Akiff Manji * feat: CredentialsLanding component: add image and word wrapping Signed-off-by: Akiff Manji * feat: CredentialsLanding component: link styling Signed-off-by: Akiff Manji * feat: CredentialsStepper component: deprecate routes Signed-off-by: Akiff Manji * refactor: CredentialsStepper component: function naming Signed-off-by: Akiff Manji * refactor: DigitalCredentials component: split into sub components Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add web socket component Signed-off-by: Akiff Manji * feat: DigitalCredentials component: re-add credential table Signed-off-by: Akiff Manji * refactor: DigitalCredentials component: update types and imports Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add revocation dialogs Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add replacement dialogs Signed-off-by: Akiff Manji * feat: devcontainer config Signed-off-by: Akiff Manji * chore: fix linting errors Signed-off-by: Akiff Manji * chore: bump version number Signed-off-by: Akiff Manji * chore: rename route for specificity Signed-off-by: Akiff Manji * chore: ran linter and fixed linting errors Signed-off-by: Akiff Manji * chore: make interface field optional Signed-off-by: Akiff Manji * chore: revert auto-formatting Signed-off-by: Akiff Manji * refactor: contain dialogs for DigitalCredentials component Signed-off-by: Akiff Manji * chore: fix code smells Signed-off-by: Akiff Manji * chore: address code review comments Signed-off-by: Akiff Manji * chore: revert autoformatting Signed-off-by: Akiff Manji * chore: update wording and styling to align with UX Signed-off-by: Akiff Manji * chore: fix styling Signed-off-by: Akiff Manji * feat: feature flag credentials feature with mixin Signed-off-by: Akiff Manji * feat: add TOU dialog Signed-off-by: Akiff Manji * chore: fix test failiures and code comments * chore: cleaup Signed-off-by: Akiff Manji * fix: mixin to access digital credential feature Signed-off-by: Akiff Manji * fix: entity menu styling Signed-off-by: Akiff Manji * feat: add loading indicators to digital credential route pages Signed-off-by: Akiff Manji * feat: reset dialog and functions Signed-off-by: Akiff Manji * chore: returl null if undefined Signed-off-by: Akiff Manji * chore: beef up conditional checks Signed-off-by: Akiff Manji * chore: spelling error Signed-off-by: Akiff Manji * chore: spelling error Signed-off-by: Akiff Manji * 18284: digital business card (#552) * refactor: CredentialsLanding component: add heading card Signed-off-by: Akiff Manji * feat: CredentialsLanding component: add supplemental cards Signed-off-by: Akiff Manji * feat: CredentialsLanding component: add image and word wrapping Signed-off-by: Akiff Manji * feat: CredentialsLanding component: link styling Signed-off-by: Akiff Manji * feat: CredentialsStepper component: deprecate routes Signed-off-by: Akiff Manji * refactor: CredentialsStepper component: function naming Signed-off-by: Akiff Manji * refactor: DigitalCredentials component: split into sub components Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add web socket component Signed-off-by: Akiff Manji * feat: DigitalCredentials component: re-add credential table Signed-off-by: Akiff Manji * refactor: DigitalCredentials component: update types and imports Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add revocation dialogs Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add replacement dialogs Signed-off-by: Akiff Manji * feat: devcontainer config Signed-off-by: Akiff Manji * chore: fix linting errors Signed-off-by: Akiff Manji * chore: bump version number Signed-off-by: Akiff Manji * chore: rename route for specificity Signed-off-by: Akiff Manji * chore: ran linter and fixed linting errors Signed-off-by: Akiff Manji * chore: make interface field optional Signed-off-by: Akiff Manji * chore: revert auto-formatting Signed-off-by: Akiff Manji * refactor: contain dialogs for DigitalCredentials component Signed-off-by: Akiff Manji * chore: fix code smells Signed-off-by: Akiff Manji * chore: address code review comments Signed-off-by: Akiff Manji * chore: revert autoformatting Signed-off-by: Akiff Manji * chore: update wording and styling to align with UX Signed-off-by: Akiff Manji * chore: fix styling Signed-off-by: Akiff Manji * feat: feature flag credentials feature with mixin Signed-off-by: Akiff Manji * feat: add TOU dialog Signed-off-by: Akiff Manji * chore: fix test failiures and code comments * chore: cleaup Signed-off-by: Akiff Manji * fix: mixin to access digital credential feature Signed-off-by: Akiff Manji * fix: entity menu styling Signed-off-by: Akiff Manji * feat: add loading indicators to digital credential route pages Signed-off-by: Akiff Manji * feat: reset dialog and functions Signed-off-by: Akiff Manji * chore: returl null if undefined Signed-off-by: Akiff Manji * chore: beef up conditional checks Signed-off-by: Akiff Manji * chore: spelling error Signed-off-by: Akiff Manji * chore: spelling error Signed-off-by: Akiff Manji --------- Signed-off-by: Akiff Manji * chore: cleanup spelling and handle edge cases Signed-off-by: Akiff Manji * fix: failing tests Signed-off-by: Akiff Manji * fix: entity menu logic Signed-off-by: Akiff Manji * 18284 Updated CSP (#561) - added wss://*.gov.bc.ca to connect-src * refactor: remove websocket support in favour of interval polling Signed-off-by: Akiff Manji * chore: remove console log Signed-off-by: Akiff Manji * chore: address PR comments Signed-off-by: Akiff Manji * chore: remove unused import Signed-off-by: Akiff Manji * fix: build and test failures Signed-off-by: Akiff Manji * feat: digital business card (#562) * refactor: CredentialsLanding component: add heading card Signed-off-by: Akiff Manji * feat: CredentialsLanding component: add supplemental cards Signed-off-by: Akiff Manji * feat: CredentialsLanding component: add image and word wrapping Signed-off-by: Akiff Manji * feat: CredentialsLanding component: link styling Signed-off-by: Akiff Manji * feat: CredentialsStepper component: deprecate routes Signed-off-by: Akiff Manji * refactor: CredentialsStepper component: function naming Signed-off-by: Akiff Manji * refactor: DigitalCredentials component: split into sub components Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add web socket component Signed-off-by: Akiff Manji * feat: DigitalCredentials component: re-add credential table Signed-off-by: Akiff Manji * refactor: DigitalCredentials component: update types and imports Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add revocation dialogs Signed-off-by: Akiff Manji * feat: DigitalCredentials component: add replacement dialogs Signed-off-by: Akiff Manji * feat: devcontainer config Signed-off-by: Akiff Manji * chore: fix linting errors Signed-off-by: Akiff Manji * chore: bump version number Signed-off-by: Akiff Manji * chore: rename route for specificity Signed-off-by: Akiff Manji * chore: ran linter and fixed linting errors Signed-off-by: Akiff Manji * chore: make interface field optional Signed-off-by: Akiff Manji * chore: revert auto-formatting Signed-off-by: Akiff Manji * refactor: contain dialogs for DigitalCredentials component Signed-off-by: Akiff Manji * chore: fix code smells Signed-off-by: Akiff Manji * chore: address code review comments Signed-off-by: Akiff Manji * chore: revert autoformatting Signed-off-by: Akiff Manji * chore: update wording and styling to align with UX Signed-off-by: Akiff Manji * chore: fix styling Signed-off-by: Akiff Manji * feat: feature flag credentials feature with mixin Signed-off-by: Akiff Manji * feat: add TOU dialog Signed-off-by: Akiff Manji * chore: fix test failiures and code comments * chore: cleaup Signed-off-by: Akiff Manji * fix: mixin to access digital credential feature Signed-off-by: Akiff Manji * fix: entity menu styling Signed-off-by: Akiff Manji * feat: add loading indicators to digital credential route pages Signed-off-by: Akiff Manji * feat: reset dialog and functions Signed-off-by: Akiff Manji * chore: returl null if undefined Signed-off-by: Akiff Manji * chore: beef up conditional checks Signed-off-by: Akiff Manji * chore: spelling error Signed-off-by: Akiff Manji * chore: spelling error Signed-off-by: Akiff Manji * chore: cleanup spelling and handle edge cases Signed-off-by: Akiff Manji * fix: failing tests Signed-off-by: Akiff Manji * fix: entity menu logic Signed-off-by: Akiff Manji * refactor: remove websocket support in favour of interval polling Signed-off-by: Akiff Manji * chore: remove console log Signed-off-by: Akiff Manji * chore: address PR comments Signed-off-by: Akiff Manji * chore: remove unused import Signed-off-by: Akiff Manji * fix: build and test failures Signed-off-by: Akiff Manji --------- Signed-off-by: Akiff Manji * Update EntityMenu.spec.ts * chore: remove web socket references Signed-off-by: Akiff Manji --------- Signed-off-by: Akiff Manji Co-authored-by: Séverin Beauvais --- .devcontainer/devcontainer.json | 22 + firebase.json | 2 +- package-lock.json | 3039 +++++------------ package.json | 2 + src/assets/images/business_card_feature.png | Bin 0 -> 52285 bytes src/assets/styles/base.scss | 4 + src/assets/styles/theme.scss | 4 + .../CredentialsDashboard.vue | 194 ++ .../DigitalCredentials/CredentialsFooter.vue | 84 - .../DigitalCredentials/CredentialsInfo.vue | 40 + .../DigitalCredentials/CredentialsLanding.vue | 126 +- .../DigitalCredentials/CredentialsMenu.vue | 85 + .../DigitalCredentials/CredentialsStepper.vue | 334 ++ .../DigitalCredentials/CredentialsTable.vue | 65 +- .../CredentialsWebSocket.vue | 107 + .../DigitalWalletDownload.vue | 192 -- .../DigitalCredentials/IssueCredentials.vue | 165 - .../DigitalCredentials/RegisterWallet.vue | 107 - .../ConfirmCredentialsTermsofUseDialog.vue | 105 + .../ConfirmReplaceCredentialDialog.vue | 127 + .../dialogs/ConfirmRevokeCredentialDialog.vue | 127 + .../dialogs/CredentialNotReceivedDialog.vue | 131 + .../dialogs/CredentialRevokedDialog.vue | 88 + .../dialogs/ReplaceCredentialErrorDialog.vue | 67 + .../dialogs/RevokeCredentialErrorDialog.vue | 67 + .../DigitalCredentials/enums/routes.ts | 4 + src/components/DigitalCredentials/index.ts | 9 +- src/components/EntityInfo.vue | 8 +- src/components/EntityInfo/EntityMenu.vue | 45 +- src/enums/routes.ts | 17 +- .../digitalCredentials-interface.ts | 12 +- src/interfaces/steps-interface.ts | 1 + src/mixins/allowable-actions-mixin.ts | 7 +- src/resources/DigitalCredentialRoutes.ts | 39 +- src/router.ts | 4 +- src/services/legal-services.ts | 81 +- src/stores/configurationStore.ts | 2 +- src/views/DigitalCredentials.vue | 214 +- tests/unit/EntityInfo.spec.ts | 5 +- tests/unit/EntityMenu.spec.ts | 43 +- 40 files changed, 2676 insertions(+), 3099 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 src/assets/images/business_card_feature.png create mode 100644 src/components/DigitalCredentials/CredentialsDashboard.vue delete mode 100644 src/components/DigitalCredentials/CredentialsFooter.vue create mode 100644 src/components/DigitalCredentials/CredentialsInfo.vue create mode 100644 src/components/DigitalCredentials/CredentialsMenu.vue create mode 100644 src/components/DigitalCredentials/CredentialsStepper.vue create mode 100644 src/components/DigitalCredentials/CredentialsWebSocket.vue delete mode 100644 src/components/DigitalCredentials/DigitalWalletDownload.vue delete mode 100644 src/components/DigitalCredentials/IssueCredentials.vue delete mode 100644 src/components/DigitalCredentials/RegisterWallet.vue create mode 100644 src/components/DigitalCredentials/dialogs/ConfirmCredentialsTermsofUseDialog.vue create mode 100644 src/components/DigitalCredentials/dialogs/ConfirmReplaceCredentialDialog.vue create mode 100644 src/components/DigitalCredentials/dialogs/ConfirmRevokeCredentialDialog.vue create mode 100644 src/components/DigitalCredentials/dialogs/CredentialNotReceivedDialog.vue create mode 100644 src/components/DigitalCredentials/dialogs/CredentialRevokedDialog.vue create mode 100644 src/components/DigitalCredentials/dialogs/ReplaceCredentialErrorDialog.vue create mode 100644 src/components/DigitalCredentials/dialogs/RevokeCredentialErrorDialog.vue create mode 100644 src/components/DigitalCredentials/enums/routes.ts diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..19f7f6833 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,22 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node +{ + "name": "Node.js & TypeScript", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye" + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "yarn install", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/firebase.json b/firebase.json index 50521685f..0a07be0d6 100644 --- a/firebase.json +++ b/firebase.json @@ -20,7 +20,7 @@ { "key" : "X-XSS-Protection", "value" : "1; mode=block" }, { "key": "Content-Security-Policy", - "value": "default-src 'self'; frame-src 'self' *.gov.bc.ca *.hotjar.com *.googleapis.com https://*.nr-data.net https://*.newrelic.com https://*.cac1.pure.cloud; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.gov.bc.ca *.hotjar.com *.googleapis.com https://*.nr-data.net https://*.newrelic.com https://*.cac1.pure.cloud; style-src 'self' 'unsafe-inline' *.cloudflare.com *.googleapis.com; font-src 'self' *.gov.bc.ca *.hotjar.com *.cloudflare.com *.googleapis.com *.gstatic.com *.jsdelivr.net; img-src 'self' data: *.hotjar.com https://*.cac1.pure.cloud; connect-src 'self' https://*.run.app *.gov.bc.ca *.launchdarkly.com *.hotjar.com *.postescanada-canadapost.ca *.sentry.io *.apigee.net wss://*.hotjar.com *.hotjar.io https://*.nr-data.net https://shyrka-prod-cac1.s3.ca-central-1.amazonaws.com https://*.newrelic.com https://*.cac1.pure.cloud wss://*.cac1.pure.cloud; manifest-src 'self'; media-src 'self' https://*.cac1.pure.cloud; object-src 'self' https://*.cac1.pure.cloud; child-src 'self' https://*.cac1.pure.cloud;" + "value": "default-src 'self'; frame-src 'self' *.gov.bc.ca *.hotjar.com *.googleapis.com https://*.nr-data.net https://*.newrelic.com https://*.cac1.pure.cloud; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.gov.bc.ca *.hotjar.com *.googleapis.com https://*.nr-data.net https://*.newrelic.com https://*.cac1.pure.cloud; style-src 'self' 'unsafe-inline' *.cloudflare.com *.googleapis.com; font-src 'self' *.gov.bc.ca *.hotjar.com *.cloudflare.com *.googleapis.com *.gstatic.com *.jsdelivr.net; img-src 'self' data: *.hotjar.com https://*.cac1.pure.cloud; connect-src 'self' https://*.run.app *.gov.bc.ca wss://*.gov.bc.ca *.launchdarkly.com *.hotjar.com *.postescanada-canadapost.ca *.sentry.io *.apigee.net wss://*.hotjar.com *.hotjar.io https://*.nr-data.net https://shyrka-prod-cac1.s3.ca-central-1.amazonaws.com https://*.newrelic.com https://*.cac1.pure.cloud wss://*.cac1.pure.cloud; manifest-src 'self'; media-src 'self' https://*.cac1.pure.cloud; object-src 'self' https://*.cac1.pure.cloud; child-src 'self' https://*.cac1.pure.cloud;" }, { "key": "Cache-Control", "value": "no-cache, no-store, must-revalidate"}, { "key": "Pragma", "value": "no-cache"}, diff --git a/package-lock.json b/package-lock.json index 2b09d07d9..2f5d76673 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@bcrs-shared-components/staff-comments": "1.3.11", "@bcrs-shared-components/staff-payment": "2.1.11", "@mdi/font": "^5.9.55", + "@reactivex/rxjs": "^6.6.7", "@sentry/integrations": "^7.50.0", "@sentry/vue": "^7.50.0", "axios": "^0.27.2", @@ -40,6 +41,7 @@ "qrcode.vue": "1.7.0", "regenerator-runtime": "^0.13.11", "register-service-worker": "^1.7.2", + "rxjs": "^7.8.1", "sbc-common-components": "3.0.8", "vue": "2.7.14", "vue-affix": "^0.5.2", @@ -86,18 +88,16 @@ }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -108,35 +108,31 @@ }, "node_modules/@babel/code-frame": { "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.23.2", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -148,9 +144,8 @@ }, "node_modules/@babel/highlight/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" }, @@ -160,9 +155,8 @@ }, "node_modules/@babel/highlight/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", @@ -174,42 +168,37 @@ }, "node_modules/@babel/highlight/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/@babel/highlight/node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/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, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/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/@babel/highlight/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" }, @@ -219,8 +208,7 @@ }, "node_modules/@babel/parser": { "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -230,9 +218,8 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@bcrs-shared-components/base-address": { "version": "2.0.9", @@ -247,8 +234,6 @@ }, "node_modules/@bcrs-shared-components/breadcrumb": { "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/breadcrumb/-/breadcrumb-2.1.11.tgz", - "integrity": "sha512-p3rxQqchkbbXFIISoXRVQ0fOIzLT4kzxdp+WVrgwVlQAb0SrNEDJC/XNc850mLJUlt/N5uI9debf5+ItQtytlA==", "dependencies": { "@bcrs-shared-components/interfaces": "^1.0.54", "vue-property-decorator": "^9.1.2" @@ -256,21 +241,15 @@ }, "node_modules/@bcrs-shared-components/confirm-dialog": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/confirm-dialog/-/confirm-dialog-1.2.1.tgz", - "integrity": "sha512-cwCj01zXavyvS/7VQiBFfU5GlZXrSP+A3BJus35xDjYscduTPsszA86+AWKeR6KBmq+GNjSC9RlxsY613ocD7w==", "dependencies": { "vue-property-decorator": "^9.1.2" } }, "node_modules/@bcrs-shared-components/corp-type-module": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/corp-type-module/-/corp-type-module-1.0.11.tgz", - "integrity": "sha512-+iE3qiySSafiA311m14DuoG9Rq/ranBJNT7Kf7KQ9dJFDNNuTA326pCGwKBeuT1L6pFpGeibXGE+vQ0AYnSPUA==" + "version": "1.0.11" }, "node_modules/@bcrs-shared-components/court-order-poa": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/court-order-poa/-/court-order-poa-2.1.4.tgz", - "integrity": "sha512-dw2eMvs5DBa7E6WTymgUbLRoeTsr4Zlmx4CzViA4cIU5fePrppoNcP4IGz38ep9FRUoq7zKz8j5lBSJi+U/xAw==", "dependencies": { "@bcrs-shared-components/interfaces": "^1.0.47", "vue-property-decorator": "^9.1.2" @@ -288,8 +267,6 @@ }, "node_modules/@bcrs-shared-components/document-delivery": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/document-delivery/-/document-delivery-1.2.1.tgz", - "integrity": "sha512-jzbBvhKzgJb1v/+WdFOzqDNU+9yZGxr+YtSd4KC3lsa1qTIBsyIGjY5o323K1hnJdVDoHljWoN0gdBTc6TlBdg==", "dependencies": { "vue-property-decorator": "^9.1.2" } @@ -303,22 +280,16 @@ } }, "node_modules/@bcrs-shared-components/enums/node_modules/@bcrs-shared-components/corp-type-module": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/corp-type-module/-/corp-type-module-1.0.13.tgz", - "integrity": "sha512-Wa8H/bxo8GAlcG7YdiP4zl1wzqxewiCO0TC+pBaYUc4+eufuInlS3yYFa9MFg8+vIL/pDfamRtXqdg1I6C6QYA==" + "version": "1.0.13" }, "node_modules/@bcrs-shared-components/expandable-help": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/expandable-help/-/expandable-help-1.0.0.tgz", - "integrity": "sha512-UsjE87YDfZqldplKSR6kzdcQUitz+rP4IyWmwy0qxR97xICzdOT3V4e5258QLEuDwcPt8ZudIZvbR5i80vTWJg==", "dependencies": { "vue": "^2.7.14" } }, "node_modules/@bcrs-shared-components/folio-number-input": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/folio-number-input/-/folio-number-input-1.1.18.tgz", - "integrity": "sha512-e1nqsuZTwPIKWHQROnQVw2gOThBPYnRw14F3CRROf5+4yugBBEjvyvAo+s//JnXRTTCSQky5JesQDu6U3LEU6w==", "dependencies": { "@bcrs-shared-components/interfaces": "^1.0.61", "vue-property-decorator": "^9.1.2" @@ -348,8 +319,6 @@ }, "node_modules/@bcrs-shared-components/staff-comments": { "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/staff-comments/-/staff-comments-1.3.11.tgz", - "integrity": "sha512-ZncZwiWV4j+siL4Z73mXVkdqCvBMVpqAA5RQBwTry9OlygCFGNPpHNbCkyEkquuTG0kEgz29t4W9wyJqNI1qfQ==", "dependencies": { "@bcrs-shared-components/interfaces": "^1.0.54", "vue-property-decorator": "^9.1.2" @@ -357,8 +326,6 @@ }, "node_modules/@bcrs-shared-components/staff-payment": { "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@bcrs-shared-components/staff-payment/-/staff-payment-2.1.11.tgz", - "integrity": "sha512-n/KpfyvsfU0C7FeRIg/BIKNZR8nq9qFP/cujNfpgcPIpDEnUPeeHEVvgcPHiTOqa/c+/9L+bIppbMvlPPvg5yg==", "dependencies": { "@bcrs-shared-components/enums": "^1.0.33", "@bcrs-shared-components/folio-number-input": "^1.1.11", @@ -366,142 +333,13 @@ "vue-property-decorator": "^9.1.2" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/linux-arm64": { "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -510,219 +348,10 @@ "node": ">=12" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -734,19 +363,17 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz", - "integrity": "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==", + "version": "4.10.0", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -764,27 +391,24 @@ }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "version": "8.52.0", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -796,9 +420,8 @@ }, "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" }, @@ -809,24 +432,21 @@ }, "node_modules/@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 + "dev": true, + "license": "BSD-3-Clause" }, "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/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -836,9 +456,8 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -850,92 +469,42 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "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/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/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==", - "optional": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@mdi/font": { "version": "5.9.55", - "resolved": "https://registry.npmjs.org/@mdi/font/-/font-5.9.55.tgz", - "integrity": "sha512-jswRF6q3eq8NWpWiqct6q+6Fg/I7nUhrxYJfiEM8JJpap0wVJLQdbKtyS65GdlK7S7Ytnx3TTi/bmw+tBhkGmg==" + "license": "Apache-2.0" }, "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" @@ -946,18 +515,16 @@ }, "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" @@ -968,15 +535,13 @@ }, "node_modules/@one-ini/wasm": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@pinia/testing": { "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.0.16.tgz", - "integrity": "sha512-oa5kO82hzWekqMq1HTnS/b+ZM+ZKEcEApuuCTelvKK79jTxg7P026Qw8/2RbVn5eUGAvRWQu4ubObrshVqCRjQ==", "dev": true, + "license": "MIT", "dependencies": { "vue-demi": "*" }, @@ -989,10 +554,9 @@ }, "node_modules/@pinia/testing/node_modules/vue-demi": { "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -1013,106 +577,104 @@ } } }, + "node_modules/@reactivex/rxjs": { + "version": "6.6.7", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/@sentry-internal/tracing": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.72.0.tgz", - "integrity": "sha512-DToryaRSHk9R5RLgN4ktYEXZjQdqncOAWPqyyIurji8lIobXFRfmLtGL1wjoCK6sQNgWsjhSM9kXxwGnva1DNw==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry/core": "7.72.0", - "@sentry/types": "7.72.0", - "@sentry/utils": "7.72.0", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/core": "7.77.0", + "@sentry/types": "7.77.0", + "@sentry/utils": "7.77.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.72.0.tgz", - "integrity": "sha512-fcFDTzqhPd3VZAmmYW3KvBTBaEfrKjPmRhlAsfhkGWYLCHqVkNtzsFER4cmUNRGNxjyt9tcG3WlTTqgLRucycQ==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.72.0", - "@sentry/core": "7.72.0", - "@sentry/replay": "7.72.0", - "@sentry/types": "7.72.0", - "@sentry/utils": "7.72.0", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry-internal/tracing": "7.77.0", + "@sentry/core": "7.77.0", + "@sentry/replay": "7.77.0", + "@sentry/types": "7.77.0", + "@sentry/utils": "7.77.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.72.0.tgz", - "integrity": "sha512-G03JdQ5ZsFNRjcNNi+QvCjqOuBvYqU92Gs1T2iK3GE8dSBTu2khThydMpG4xrKZQLIpHOyiIhlFZiuPtZ66W8w==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry/types": "7.72.0", - "@sentry/utils": "7.72.0", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/types": "7.77.0", + "@sentry/utils": "7.77.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.72.0.tgz", - "integrity": "sha512-ay2WgLtjsr0WS8+N7i7VmKzondoZRh3ISx8rb91LjmVrDNu8baleZAB59jkKe/JSy0gYh99umJuptc2te/65+A==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry/types": "7.72.0", - "@sentry/utils": "7.72.0", - "localforage": "^1.8.1", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/core": "7.77.0", + "@sentry/types": "7.77.0", + "@sentry/utils": "7.77.0", + "localforage": "^1.8.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.72.0.tgz", - "integrity": "sha512-dHH/mYCFBwJ/kYmL9L5KihjwQKcefiuvcH0otHSwKSpbbeEoM/BV+SHQoYGd6OMSYnL9fq1dHfF7Zo26p5Yu0Q==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry/core": "7.72.0", - "@sentry/types": "7.72.0", - "@sentry/utils": "7.72.0" + "@sentry-internal/tracing": "7.77.0", + "@sentry/core": "7.77.0", + "@sentry/types": "7.77.0", + "@sentry/utils": "7.77.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.72.0.tgz", - "integrity": "sha512-g6u0mk62yGshx02rfFADIfyR/S9VXcf3RG2qQPuvykrWtOfN/BOTrZypF7I+MiqKwRW76r3Pcu2C/AB+6z9XQA==", + "version": "7.77.0", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.72.0.tgz", - "integrity": "sha512-o/MtqI7WJXuswidH0bSgBP40KN2lrnyQEIx5uoyJUJi/QEaboIsqbxU62vaFJpde8SYrbA+rTnP3J3ujF2gUag==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry/types": "7.72.0", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/types": "7.77.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/vue": { - "version": "7.72.0", - "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-7.72.0.tgz", - "integrity": "sha512-XTJK7C8WH370jBhXzKwPS3TgG5w5tT+qW25IQ+ypyBv4vclcaKeeGMlIehuH2n3hVI9ut/f4Wjj1EwCrQE4ORw==", + "version": "7.77.0", + "license": "MIT", "dependencies": { - "@sentry/browser": "7.72.0", - "@sentry/core": "7.72.0", - "@sentry/types": "7.72.0", - "@sentry/utils": "7.72.0", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/browser": "7.77.0", + "@sentry/core": "7.77.0", + "@sentry/types": "7.77.0", + "@sentry/utils": "7.77.0" }, "engines": { "node": ">=8" @@ -1123,42 +685,37 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } }, "node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/samsam": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz", - "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^2.0.0", "lodash.get": "^4.4.2", @@ -1167,108 +724,96 @@ }, "node_modules/@sinonjs/text-encoding": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true + "dev": true, + "license": "(Unlicense OR Apache-2.0)" }, "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/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", - "dev": true + "version": "4.3.9", + "dev": true, + "license": "MIT" }, "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "version": "1.3.4", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true + "version": "2.0.5", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", - "dev": true + "version": "7.0.14", + "dev": true, + "license": "MIT" }, "node_modules/@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 + "dev": true, + "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", - "dev": true + "version": "4.14.200", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", - "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", - "dev": true + "version": "20.8.10", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true + "version": "7.5.4", + "dev": true, + "license": "MIT" }, "node_modules/@types/sinon": { - "version": "10.0.17", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.17.tgz", - "integrity": "sha512-+6ILpcixQ0Ma3dHMTLv4rSycbDXkDljgKL+E0nI2RUxxhYTFyPSjt6RVMxh7jUshvyVcBvicb0Ktj+lAJcjgeA==", + "version": "10.0.20", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.3.tgz", - "integrity": "sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ==", - "dev": true + "version": "8.1.4", + "dev": true, + "license": "MIT" }, "node_modules/@types/vue-the-mask": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/@types/vue-the-mask/-/vue-the-mask-0.11.2.tgz", - "integrity": "sha512-8XXSMyic/jLMJspzSkxILpF6P2p+lkp2T9DH/MyW/AlKuTDv6uWkObfwLM0lMiOzmYeQgM6clWHF4SRoDKrV8Q==", + "version": "0.11.4", "dev": true, + "license": "MIT", "dependencies": { "vue": "^2.6.10" } }, "node_modules/@types/vuelidate": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/@types/vuelidate/-/vuelidate-0.7.19.tgz", - "integrity": "sha512-fXVthNVCuWurszolIxi5CML9jbwXDq1ZwYgt0aQR8zBZ0UjcFcn8oyQie4zykjBAiyzExlEoGktzYy0/xc5BlA==", + "version": "0.7.20", "dev": true, + "license": "MIT", "dependencies": { "vue": "^2.6.11" } }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -1300,9 +845,8 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -1327,9 +871,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -1344,9 +887,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -1371,9 +913,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1384,9 +925,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -1411,9 +951,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -1437,9 +976,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -1452,11 +990,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, "node_modules/@vitejs/plugin-vue2": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.2.0.tgz", - "integrity": "sha512-1km7zEuZ/9QRPvzXSjikbTYGQPG86Mq1baktpC4sXqsXlb02HQKfi+fl8qVS703JM7cgm24Ga9j+RwKmvFn90A==", "dev": true, + "license": "MIT", "engines": { "node": "^14.18.0 || >= 16.0.0" }, @@ -1466,10 +1008,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.5.tgz", - "integrity": "sha512-97xjhRTSdmeeHCm2nNHhT3hLsMYkAhHXm/rwj6SZ3voka8xiCJrwgtfIjoZIFEL4OO0KezGmVuHWQXcMunULIA==", + "version": "0.34.6", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@bcoe/v8-coverage": "^0.2.3", @@ -1492,9 +1033,8 @@ }, "node_modules/@vitest/expect": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.33.0.tgz", - "integrity": "sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/spy": "0.33.0", "@vitest/utils": "0.33.0", @@ -1506,9 +1046,8 @@ }, "node_modules/@vitest/runner": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.33.0.tgz", - "integrity": "sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/utils": "0.33.0", "p-limit": "^4.0.0", @@ -1520,9 +1059,8 @@ }, "node_modules/@vitest/snapshot": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.33.0.tgz", - "integrity": "sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==", "dev": true, + "license": "MIT", "dependencies": { "magic-string": "^0.30.1", "pathe": "^1.1.1", @@ -1534,9 +1072,8 @@ }, "node_modules/@vitest/spy": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.33.0.tgz", - "integrity": "sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^2.1.1" }, @@ -1546,9 +1083,8 @@ }, "node_modules/@vitest/utils": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.33.0.tgz", - "integrity": "sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==", "dev": true, + "license": "MIT", "dependencies": { "diff-sequences": "^29.4.3", "loupe": "^2.3.6", @@ -1579,14 +1115,11 @@ }, "node_modules/@vscode/l10n": { "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.16.tgz", - "integrity": "sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@vue/compiler-sfc": { "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", "dependencies": { "@babel/parser": "^7.18.4", "postcss": "^8.4.14", @@ -1594,15 +1127,13 @@ } }, "node_modules/@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + "version": "6.5.1", + "license": "MIT" }, "node_modules/@vue/eslint-config-standard": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-4.0.0.tgz", - "integrity": "sha512-bQghq1cw1BuMRHNhr3tRpAJx1tpGy0QtajQX873kLtA9YVuOIoXR7nAWnTN09bBHnSUh2N288vMsqPi2fI4Hzg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-standard": "^12.0.0", "eslint-plugin-import": "^2.14.0", @@ -1613,9 +1144,8 @@ }, "node_modules/@vue/eslint-config-typescript": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-9.1.0.tgz", - "integrity": "sha512-j/852/ZYQ5wDvCD3HE2q4uqJwJAceer2FwoEch1nFo+zTOsPrbzbE3cuWIs3kvu5hdFsGTMYwRwjI6fqZKDMxQ==", "dev": true, + "license": "MIT", "dependencies": { "vue-eslint-parser": "^8.0.0" }, @@ -1631,9 +1161,8 @@ }, "node_modules/@vue/test-utils": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.3.6.tgz", - "integrity": "sha512-udMmmF1ts3zwxUJEIAj5ziioR900reDrt6C9H3XpWPsLBx2lpHKoA4BTdd9HNIYbkGltWw+JjWJ+5O6QBwiyEw==", "dev": true, + "license": "MIT", "dependencies": { "dom-event-types": "^1.0.0", "lodash": "^4.17.15", @@ -1646,21 +1175,18 @@ }, "node_modules/abab": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "devOptional": true + "dev": true, + "license": "ISC" }, "node_modules/acorn": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1670,27 +1196,24 @@ }, "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/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.0", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "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==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -1700,9 +1223,8 @@ }, "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", @@ -1716,27 +1238,24 @@ }, "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-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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" }, @@ -1749,9 +1268,8 @@ }, "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" @@ -1760,39 +1278,18 @@ "node": ">= 8" } }, - "node_modules/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==", - "optional": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, "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/array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -1803,9 +1300,8 @@ }, "node_modules/array-includes": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1822,18 +1318,16 @@ }, "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/array.prototype.findlastindex": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1850,9 +1344,8 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1868,9 +1361,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1886,9 +1378,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -1907,32 +1398,28 @@ }, "node_modules/assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "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/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1942,8 +1429,7 @@ }, "node_modules/axios": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" @@ -1951,14 +1437,11 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true + "dev": true, + "license": "MIT" }, "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==", "funding": [ { "type": "github", @@ -1972,28 +1455,26 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "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/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 + "dev": true, + "license": "ISC" }, "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==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2001,9 +1482,8 @@ }, "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" }, @@ -2013,30 +1493,28 @@ }, "node_modules/builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/cac": { "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", + "version": "1.0.5", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2044,33 +1522,16 @@ }, "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, - "engines": { - "node": ">=6" - } - }, - "node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/chai": { "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -2086,9 +1547,8 @@ }, "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" @@ -2102,18 +1562,16 @@ }, "node_modules/character-parser": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", "dev": true, + "license": "MIT", "dependencies": { "is-regex": "^1.0.3" } }, "node_modules/check-error": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" }, @@ -2123,8 +1581,6 @@ }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -2132,6 +1588,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2148,25 +1605,14 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "optional": true, - "engines": { - "node": ">=10" - } - }, "node_modules/clickout-event": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/clickout-event/-/clickout-event-1.1.2.tgz", - "integrity": "sha512-oGb80mX872OcwV5Rfz6khuolsi3cJHLGHmJ+Tvw9w6J3MejH5StPfFma+Z3rPhNZ+vCXnAo+GLBl09bfxCLaSQ==" + "license": "MIT" }, "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" }, @@ -2176,23 +1622,12 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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==", - "optional": true, - "bin": { - "color-support": "bin.js" - } + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -2202,24 +1637,21 @@ }, "node_modules/commander": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true + "dev": true, + "license": "MIT" }, "node_modules/condense-newlines": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-whitespace": "^0.3.0", @@ -2231,31 +1663,22 @@ }, "node_modules/config-chain": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, - "node_modules/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==", - "optional": true - }, "node_modules/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 + "version": "2.0.0", + "dev": true, + "license": "MIT" }, "node_modules/core-js": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.2.tgz", - "integrity": "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==", + "version": "3.33.2", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -2263,14 +1686,12 @@ }, "node_modules/country-list": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/country-list/-/country-list-2.3.0.tgz", - "integrity": "sha512-qZk66RlmQm7fQjMYWku1AyjlKPogjPEorAZJG88owPExoPV8EsyCcuFLvO2afTXHEhi9liVOoyd+5A6ZS5QwaA==" + "license": "MIT" }, "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", @@ -2282,9 +1703,8 @@ }, "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" }, @@ -2294,9 +1714,8 @@ }, "node_modules/cssstyle": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", "dev": true, + "license": "MIT", "dependencies": { "rrweb-cssom": "^0.6.0" }, @@ -2306,14 +1725,12 @@ }, "node_modules/csstype": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "license": "MIT" }, "node_modules/data-urls": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", @@ -2325,16 +1742,14 @@ }, "node_modules/de-indent": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2349,27 +1764,13 @@ }, "node_modules/decimal.js": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "optional": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } + "dev": true, + "license": "MIT" }, "node_modules/deep-eql": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -2379,15 +1780,13 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -2399,9 +1798,8 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2416,50 +1814,31 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "optional": true - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/diff": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "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" }, @@ -2469,9 +1848,8 @@ }, "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" }, @@ -2481,15 +1859,13 @@ }, "node_modules/dom-event-types": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.1.0.tgz", - "integrity": "sha512-jNCX+uNJ3v38BKvPbpki6j5ItVlnSqVV6vDWGS6rExzCMjsc39frLjm1n91o6YaKK6AZl0wLloItW6C6mr61BQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/domexception": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^7.0.0" }, @@ -2499,9 +1875,8 @@ }, "node_modules/editorconfig": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, + "license": "MIT", "dependencies": { "@one-ini/wasm": "0.1.1", "commander": "^10.0.0", @@ -2517,18 +1892,16 @@ }, "node_modules/editorconfig/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/editorconfig/node_modules/minimatch": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2541,15 +1914,13 @@ }, "node_modules/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==", - "devOptional": true + "dev": true, + "license": "MIT" }, "node_modules/enquirer": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -2560,9 +1931,8 @@ }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -2571,26 +1941,25 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -2600,7 +1969,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -2614,7 +1983,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -2624,33 +1993,30 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2665,10 +2031,9 @@ }, "node_modules/esbuild": { "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -2702,8 +2067,7 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -2713,9 +2077,8 @@ }, "node_modules/eslint": { "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -2770,9 +2133,8 @@ }, "node_modules/eslint-config-standard": { "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", - "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", "dev": true, + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0", "eslint-plugin-import": ">=2.13.0", @@ -2783,9 +2145,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -2794,18 +2155,16 @@ }, "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -2820,18 +2179,16 @@ }, "node_modules/eslint-module-utils/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/eslint-plugin-es": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", - "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-utils": "^1.4.2", "regexpp": "^2.0.1" @@ -2845,9 +2202,8 @@ }, "node_modules/eslint-plugin-es/node_modules/eslint-utils": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -2857,43 +2213,40 @@ }, "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-plugin-es/node_modules/regexpp": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.5.0" } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -2906,18 +2259,16 @@ }, "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -2927,18 +2278,16 @@ }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-node": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz", - "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==", "dev": true, + "license": "MIT", "dependencies": { "eslint-plugin-es": "^1.3.1", "eslint-utils": "^1.3.1", @@ -2956,9 +2305,8 @@ }, "node_modules/eslint-plugin-node/node_modules/eslint-utils": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -2968,35 +2316,30 @@ }, "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-plugin-node/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/eslint-plugin-promise": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", - "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=6" } }, "node_modules/eslint-plugin-standard": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", - "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", "dev": true, "funding": [ { @@ -3012,15 +2355,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } }, "node_modules/eslint-plugin-vue": { "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-utils": "^3.0.0", "natural-compare": "^1.4.0", @@ -3038,9 +2381,8 @@ }, "node_modules/eslint-plugin-vue/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" }, @@ -3056,18 +2398,16 @@ }, "node_modules/eslint-plugin-vue/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-plugin-vuetify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vuetify/-/eslint-plugin-vuetify-1.1.0.tgz", - "integrity": "sha512-I1YRUCGkDqe8F7O0tdf63UZVKtk4734+8fzbZ24YIZKTTyQp/FIR0nSZYG8mPFhTWerzPta7oXNzliBOwP2XeQ==", "dev": true, + "license": "MIT", "dependencies": { "eslint-plugin-vue": "^7.0.0", "requireindex": "^1.2.0" @@ -3079,9 +2419,8 @@ }, "node_modules/eslint-plugin-vuetify/node_modules/eslint-plugin-vue": { "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", - "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", "dev": true, + "license": "MIT", "dependencies": { "eslint-utils": "^2.1.0", "natural-compare": "^1.4.0", @@ -3097,18 +2436,16 @@ }, "node_modules/eslint-plugin-vuetify/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-plugin-vuetify/node_modules/espree": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.1.1", "acorn-jsx": "^5.2.0", @@ -3120,18 +2457,16 @@ }, "node_modules/eslint-plugin-vuetify/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-vuetify/node_modules/vue-eslint-parser": { "version": "7.11.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "eslint-scope": "^5.1.1", @@ -3153,9 +2488,8 @@ }, "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" @@ -3166,9 +2500,8 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -3181,18 +2514,16 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3202,27 +2533,24 @@ }, "node_modules/eslint/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/node_modules/ignore": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/espree": { "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -3234,18 +2562,16 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "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" @@ -3256,9 +2582,8 @@ }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3268,18 +2593,16 @@ }, "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" }, @@ -3289,36 +2612,32 @@ }, "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/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -3328,15 +2647,13 @@ }, "node_modules/fast-deep-equal": { "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==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3350,30 +2667,26 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "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/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" }, @@ -3383,9 +2696,8 @@ }, "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" }, @@ -3395,9 +2707,8 @@ }, "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" @@ -3410,12 +2721,11 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.1.1", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, @@ -3425,26 +2735,23 @@ }, "node_modules/flatted": { "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/flush-promises": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flush-promises/-/flush-promises-1.0.2.tgz", - "integrity": "sha512-G0sYfLQERwKz4+4iOZYQEZVpOt9zQrlItIxQAAYAWpfby3gbHrx0osCHz5RLl/XoXevXk0xoN4hDFky/VV9TrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/follow-redirects": { "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3456,81 +2763,41 @@ }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "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==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" + "mime-types": "^2.1.12" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, "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==", - "devOptional": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -3546,58 +2813,34 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "optional": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/get-func-name": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3605,9 +2848,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -3621,9 +2863,8 @@ }, "node_modules/glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3640,9 +2881,8 @@ }, "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" }, @@ -3652,18 +2892,16 @@ }, "node_modules/glob/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/glob/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3672,10 +2910,9 @@ } }, "node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3688,9 +2925,8 @@ }, "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -3703,9 +2939,8 @@ }, "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", @@ -3723,9 +2958,8 @@ }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -3735,47 +2969,31 @@ }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "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, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3783,9 +3001,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3795,9 +3012,8 @@ }, "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" }, @@ -3807,9 +3023,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -3820,17 +3035,21 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "optional": true + "node_modules/hasown": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, "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" @@ -3838,9 +3057,8 @@ }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^2.0.0" }, @@ -3850,15 +3068,13 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "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", @@ -3870,14 +3086,12 @@ }, "node_modules/http-status-codes": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", - "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==" + "license": "MIT" }, "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==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -3888,9 +3102,8 @@ }, "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" }, @@ -3900,29 +3113,25 @@ }, "node_modules/ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "license": "MIT" }, "node_modules/immutable": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true + "dev": true, + "license": "MIT" }, "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" @@ -3936,18 +3145,16 @@ }, "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/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3955,24 +3162,21 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -3981,9 +3185,8 @@ }, "node_modules/is-array-buffer": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -3995,9 +3198,8 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -4007,9 +3209,8 @@ }, "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" }, @@ -4019,9 +3220,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4035,15 +3235,13 @@ }, "node_modules/is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4052,12 +3250,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4065,9 +3262,8 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4080,9 +3276,8 @@ }, "node_modules/is-expression": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^7.1.1", "object-assign": "^4.1.1" @@ -4090,36 +3285,32 @@ }, "node_modules/is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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==", - "devOptional": true, + "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" }, @@ -4129,9 +3320,8 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4141,18 +3331,16 @@ }, "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-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4165,24 +3353,21 @@ }, "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-potential-custom-element-name": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4196,9 +3381,8 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -4208,9 +3392,8 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4223,9 +3406,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -4238,9 +3420,8 @@ }, "node_modules/is-typed-array": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.11" }, @@ -4253,9 +3434,8 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -4265,39 +3445,34 @@ }, "node_modules/is-whitespace": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "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-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -4309,9 +3484,8 @@ }, "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", @@ -4323,9 +3497,8 @@ }, "node_modules/istanbul-reports": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -4336,9 +3509,8 @@ }, "node_modules/js-beautify": { "version": "1.14.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", - "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", "dev": true, + "license": "MIT", "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.3", @@ -4356,9 +3528,8 @@ }, "node_modules/js-beautify/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" }, @@ -4371,20 +3542,17 @@ }, "node_modules/js-sha256": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "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" @@ -4395,9 +3563,8 @@ }, "node_modules/jsdom": { "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "cssstyle": "^3.0.0", @@ -4437,27 +3604,23 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "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" }, @@ -4467,20 +3630,17 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/just-extend": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/keycloak-js": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-9.0.3.tgz", - "integrity": "sha512-c8FFPa8YiJmPbJEMZ/mIrHflBR6FIFUm5xTWtIDzlrnoeF4u0wDmTBfo1u71rWIL1HanLvg3T+9AgR1NqfmGbA==", + "license": "Apache-2.0", "dependencies": { "base64-js": "1.3.1", "js-sha256": "0.9.0" @@ -4488,23 +3648,20 @@ }, "node_modules/keycloak-js/node_modules/base64-js": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "license": "MIT" }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -4514,8 +3671,7 @@ }, "node_modules/launchdarkly-js-client-sdk": { "version": "2.24.2", - "resolved": "https://registry.npmjs.org/launchdarkly-js-client-sdk/-/launchdarkly-js-client-sdk-2.24.2.tgz", - "integrity": "sha512-8jrLOia0vfZ4stqQRv9TjAYfRGK2JyWpLIL6PbTl99LqTtJMuYtryFUQp0b8WH1153YN+gVdoqPVI7uwbbzLLQ==", + "license": "Apache-2.0", "dependencies": { "escape-string-regexp": "^4.0.0", "launchdarkly-js-sdk-common": "3.8.2" @@ -4523,8 +3679,7 @@ }, "node_modules/launchdarkly-js-sdk-common": { "version": "3.8.2", - "resolved": "https://registry.npmjs.org/launchdarkly-js-sdk-common/-/launchdarkly-js-sdk-common-3.8.2.tgz", - "integrity": "sha512-pEqZ3FTKtYrTaPdbPntFJs87svzcezrkoRWY2GEFmyPC33txOqU788x0yby2+haC/saFPNfXpH6bbiJE/GjMSA==", + "license": "Apache-2.0", "dependencies": { "base64-js": "^1.3.0", "fast-deep-equal": "^2.0.1", @@ -4533,14 +3688,12 @@ }, "node_modules/launchdarkly-js-sdk-common/node_modules/fast-deep-equal": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==" + "license": "MIT" }, "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" @@ -4551,17 +3704,15 @@ }, "node_modules/lie": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/local-pkg": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -4571,17 +3722,15 @@ }, "node_modules/localforage": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "license": "Apache-2.0", "dependencies": { "lie": "3.1.1" } }, "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" }, @@ -4594,57 +3743,48 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.get": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/lodash.omit": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniqueid": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz", - "integrity": "sha512-GQQWaIeGlL6DIIr06kj1j6sSmBxyNMwI8kaX9aKpHR/XsMTiaXDVPNPAkiboOTK9OJpTJF/dXT3xYoFQnj386Q==" + "license": "MIT" }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", "dev": true, + "license": "MIT", "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "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==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -4653,10 +3793,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.5", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -4666,9 +3805,8 @@ }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -4681,18 +3819,16 @@ }, "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/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" @@ -4703,16 +3839,14 @@ }, "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==", + "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==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -4720,23 +3854,10 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "optional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4746,64 +3867,16 @@ }, "node_modules/minimist": { "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": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mlly": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.10.0", "pathe": "^1.1.1", @@ -4812,10 +3885,9 @@ } }, "node_modules/mlly/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4825,26 +3897,18 @@ }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true - }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "optional": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4854,21 +3918,18 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", + "version": "5.1.5", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^2.0.0", "@sinonjs/fake-timers": "^10.0.2", @@ -4879,105 +3940,32 @@ }, "node_modules/nise/node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } }, "node_modules/nise/node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "node_modules/node-fetch/node_modules/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==", - "optional": true - }, - "node_modules/node-fetch/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==", - "optional": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "optional": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, "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/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "optional": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, "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" }, @@ -4987,42 +3975,37 @@ }, "node_modules/nwsapi": { "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", - "devOptional": true, + "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==", + "version": "1.13.1", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -5038,9 +4021,8 @@ }, "node_modules/object.fromentries": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5055,9 +4037,8 @@ }, "node_modules/object.groupby": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5067,9 +4048,8 @@ }, "node_modules/object.values": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5084,18 +4064,16 @@ }, "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==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -5110,9 +4088,8 @@ }, "node_modules/p-limit": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -5125,9 +4102,8 @@ }, "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" }, @@ -5140,9 +4116,8 @@ }, "node_modules/p-locate/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" }, @@ -5155,9 +4130,8 @@ }, "node_modules/p-locate/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" }, @@ -5167,9 +4141,8 @@ }, "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" }, @@ -5179,9 +4152,8 @@ }, "node_modules/parse5": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -5191,65 +4163,57 @@ }, "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==", - "devOptional": true, + "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", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "0.0.1" } }, "node_modules/path-to-regexp/node_modules/isarray": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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/path2d-polyfill": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz", - "integrity": "sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==", + "license": "MIT", "optional": true, "engines": { "node": ">=8" @@ -5257,23 +4221,20 @@ }, "node_modules/pathe": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/pdfjs-dist": { "version": "3.9.179", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.9.179.tgz", - "integrity": "sha512-AZBEIAORYDaOAlM0/A4Zg465+XF3ugYDdgrVmioVvNW5tH3xs3RpGFBYOG5PM9/vLM3M/wNncsMLTgyIKdqMKg==", + "license": "Apache-2.0", "engines": { "node": ">=18" }, @@ -5284,14 +4245,12 @@ }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "license": "ISC" }, "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" }, @@ -5300,9 +4259,8 @@ } }, "node_modules/pinia": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", - "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", + "version": "2.1.7", + "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.5.0", "vue-demi": ">=0.14.5" @@ -5326,8 +4284,7 @@ }, "node_modules/pinia-class": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/pinia-class/-/pinia-class-0.0.3.tgz", - "integrity": "sha512-7l1ZB6c50v5aDaSZRauK1CVaUL0ZrOC2Z1xwX03AZCGKnV+EzZmmQ3fm19LgaXhD9oGExb6eezJ8hZDu86s8vw==", + "license": "MIT", "peerDependencies": { "pinia": "^2.0.0", "vue-class-component": "^7.0.0" @@ -5335,9 +4292,8 @@ }, "node_modules/pinia/node_modules/vue-demi": { "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -5360,9 +4316,8 @@ }, "node_modules/pkg-types": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", "dev": true, + "license": "MIT", "dependencies": { "jsonc-parser": "^3.2.0", "mlly": "^1.2.0", @@ -5371,8 +4326,6 @@ }, "node_modules/postcss": { "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -5387,6 +4340,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -5398,9 +4352,8 @@ }, "node_modules/postcss-selector-parser": { "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5411,18 +4364,16 @@ }, "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/prettier": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -5435,9 +4386,8 @@ }, "node_modules/pretty": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", "dev": true, + "license": "MIT", "dependencies": { "condense-newlines": "^0.2.1", "extend-shallow": "^2.0.1", @@ -5449,9 +4399,8 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -5463,9 +4412,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -5475,41 +4423,35 @@ }, "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/proto-list": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/provinces": { "version": "1.11.0", - "resolved": "https://registry.npmjs.org/provinces/-/provinces-1.11.0.tgz", - "integrity": "sha512-5hoDYWtKr89stoSVajofU1rFGKzB2wpUqJJfnldokWfLUnLamQK9PnA8svh2j3XOYdb8BI2vbU4q3DtEcdNQ9w==" + "license": "MIT" }, "node_modules/psl": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pug-error": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pug-lexer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", "dev": true, + "license": "MIT", "dependencies": { "character-parser": "^2.2.0", "is-expression": "^4.0.0", @@ -5517,32 +4459,27 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qrcode.vue": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-1.7.0.tgz", - "integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==", + "license": "MIT", "peerDependencies": { "vue": "^2.0.0" } }, "node_modules/querystringify": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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": [ { @@ -5557,33 +4494,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "dev": true, + "license": "MIT" }, "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" }, @@ -5593,14 +4515,12 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "license": "MIT" }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5615,9 +4535,8 @@ }, "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" }, @@ -5627,38 +4546,33 @@ }, "node_modules/register-service-worker": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz", - "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==" + "license": "MIT" }, "node_modules/require-from-string": { "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/requireindex": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.5" } }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -5673,18 +4587,16 @@ }, "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/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" @@ -5692,9 +4604,8 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -5707,9 +4618,8 @@ }, "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==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5727,9 +4637,8 @@ }, "node_modules/rollup": { "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -5743,14 +4652,11 @@ }, "node_modules/rrweb-cssom": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true + "dev": true, + "license": "MIT" }, "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": [ { @@ -5766,15 +4672,26 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.6.2", + "license": "0BSD" + }, "node_modules/safe-array-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -5788,31 +4705,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, "node_modules/safe-regex-test": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -5824,15 +4720,13 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sass": { - "version": "1.68.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.68.0.tgz", - "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", + "version": "1.69.5", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -5847,9 +4741,8 @@ }, "node_modules/saxes": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -5859,8 +4752,7 @@ }, "node_modules/sbc-common-components": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/sbc-common-components/-/sbc-common-components-3.0.8.tgz", - "integrity": "sha512-TjZA8xRxtwrynI/EXLbGKr68+NFBlFPXDs1n7Uc+EaGD+zwmi8flSi6FEQNbrfb01YfVmlZ8GNghU7f1YP41rw==", + "license": "Apache-2.0", "dependencies": { "@mdi/font": "^4.5.95", "axios": "^0.21.1", @@ -5882,27 +4774,22 @@ } }, "node_modules/sbc-common-components/node_modules/@mdi/font": { - "version": "4.9.95", - "resolved": "https://registry.npmjs.org/@mdi/font/-/font-4.9.95.tgz", - "integrity": "sha512-m2sbAs+SMwRnWpkMriBxEulwuhmqRyh6X+hdOZlqSxYZUM2C2TaDnQ4gcilzdoAgru2XYnWViZ/xPuSDGgRXVw==" + "version": "4.9.95" }, "node_modules/sbc-common-components/node_modules/axios": { "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/sbc-common-components/node_modules/vue2-filters": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/vue2-filters/-/vue2-filters-0.7.2.tgz", - "integrity": "sha512-7I74isiBUQFGaNbVv57NzHGqh54cLe0JNJmJmu66wxP5eOK/CqHN4iqHMgwPPPvPbgbFbpI/GjbHiIx8tNruwg==" + "license": "MIT" }, "node_modules/sbc-common-components/node_modules/vuelidate": { "version": "0.7.7", - "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.7.tgz", - "integrity": "sha512-pT/U2lDI67wkIqI4tum7cMSIfGcAMfB+Phtqh2ttdXURwvHRBJEAQ0tVbUsW9Upg83Q5QH59bnCoXI7A9JDGnA==", + "license": "MIT", "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" @@ -5910,9 +4797,8 @@ }, "node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5923,17 +4809,24 @@ "node": ">=10" } }, - "node_modules/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==", - "optional": true + "node_modules/set-function-length": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/set-function-name": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -5945,9 +4838,8 @@ }, "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" }, @@ -5957,18 +4849,16 @@ }, "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", @@ -5980,52 +4870,13 @@ }, "node_modules/siginfo": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true - }, - "node_modules/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==", - "optional": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "optional": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } + "dev": true, + "license": "ISC" }, "node_modules/sinon": { "version": "14.0.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.2.tgz", - "integrity": "sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^2.0.0", "@sinonjs/fake-timers": "^9.1.2", @@ -6041,18 +4892,16 @@ }, "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": "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", @@ -6067,52 +4916,37 @@ }, "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==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "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==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/stackback": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/std-env": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", - "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", - "dev": true - }, - "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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } + "dev": true, + "license": "MIT" }, "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==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6124,9 +4958,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6141,9 +4974,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6155,9 +4987,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6169,9 +5000,8 @@ }, "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==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6181,18 +5011,16 @@ }, "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-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" }, @@ -6202,9 +5030,8 @@ }, "node_modules/strip-literal": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.10.0" }, @@ -6213,10 +5040,9 @@ } }, "node_modules/strip-literal/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -6226,9 +5052,8 @@ }, "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" }, @@ -6238,9 +5063,8 @@ }, "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" }, @@ -6250,15 +5074,13 @@ }, "node_modules/symbol-tree": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table": { "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -6272,9 +5094,8 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -6288,32 +5109,13 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", - "optional": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT" }, "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", @@ -6325,9 +5127,8 @@ }, "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", @@ -6345,39 +5146,34 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/tinybench": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", - "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinypool": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.6.0.tgz", - "integrity": "sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "version": "2.2.0", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "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" }, @@ -6387,9 +5183,8 @@ }, "node_modules/tough-cookie": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -6402,9 +5197,8 @@ }, "node_modules/tr46": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.0" }, @@ -6414,9 +5208,8 @@ }, "node_modules/tsconfig-paths": { "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, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -6425,16 +5218,13 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "1.14.1", + "license": "0BSD" }, "node_modules/tslint": { "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", "dev": true, + "license": "Apache-2.0", "dependencies": { "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", @@ -6462,9 +5252,8 @@ }, "node_modules/tslint/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" }, @@ -6474,9 +5263,8 @@ }, "node_modules/tslint/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", @@ -6488,48 +5276,42 @@ }, "node_modules/tslint/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/tslint/node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/tslint/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 + "dev": true, + "license": "MIT" }, "node_modules/tslint/node_modules/diff": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/tslint/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, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/tslint/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", @@ -6547,18 +5329,16 @@ }, "node_modules/tslint/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/tslint/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" }, @@ -6568,18 +5348,16 @@ }, "node_modules/tslint/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/tslint/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" }, @@ -6587,17 +5365,10 @@ "node": ">=4" } }, - "node_modules/tslint/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/tslint/node_modules/tsutils": { "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -6607,9 +5378,8 @@ }, "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" }, @@ -6620,17 +5390,10 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "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" }, @@ -6640,18 +5403,16 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "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" }, @@ -6661,9 +5422,8 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -6675,9 +5435,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -6693,9 +5452,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -6712,9 +5470,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -6726,9 +5483,8 @@ }, "node_modules/typescript": { "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6739,15 +5495,13 @@ }, "node_modules/ufo": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", - "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -6758,29 +5512,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT" + }, "node_modules/universalify": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -6788,34 +5544,29 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "devOptional": true + "dev": true, + "license": "MIT" }, "node_modules/uuid": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", "bin": { "uuid": "bin/uuid" } }, "node_modules/v8-compile-cache": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.1.3", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" @@ -6823,9 +5574,8 @@ }, "node_modules/vite": { "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.17.5", "postcss": "^8.4.23", @@ -6871,9 +5621,8 @@ }, "node_modules/vite-node": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.33.0.tgz", - "integrity": "sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", @@ -6894,18 +5643,16 @@ }, "node_modules/vite-plugin-environment": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vite-plugin-environment/-/vite-plugin-environment-1.1.3.tgz", - "integrity": "sha512-9LBhB0lx+2lXVBEWxFZC+WO7PKEyE/ykJ7EPWCq95NEcCpblxamTbs5Dm3DLBGzwODpJMEnzQywJU8fw6XGGGA==", "dev": true, + "license": "MIT", "peerDependencies": { "vite": ">= 2.7" } }, "node_modules/vitest": { "version": "0.33.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.33.0.tgz", - "integrity": "sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", @@ -6979,10 +5726,9 @@ } }, "node_modules/vitest/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -6992,9 +5738,8 @@ }, "node_modules/vls": { "version": "0.8.5", - "resolved": "https://registry.npmjs.org/vls/-/vls-0.8.5.tgz", - "integrity": "sha512-61kbdO2COZWBMC4wq59QfDdev9ruXd0226f57DFJTFpFXv85S+qnHakQlAmbSYFFLGKcx95HB2UjnuQh4YRwFA==", "dev": true, + "license": "MIT", "dependencies": { "eslint": "^8.34.0", "eslint-plugin-vue": "^9.9.0", @@ -7012,9 +5757,8 @@ }, "node_modules/vls/node_modules/@eslint/eslintrc": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -7034,12 +5778,11 @@ } }, "node_modules/vls/node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -7047,11 +5790,15 @@ "node": ">=10.10.0" } }, + "node_modules/vls/node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/vls/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -7061,23 +5808,22 @@ }, "node_modules/vls/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 + "dev": true, + "license": "Python-2.0" }, "node_modules/vls/node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "version": "8.52.0", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -7120,10 +5866,9 @@ } }, "node_modules/vls/node_modules/eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.18.1", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", @@ -7142,9 +5887,8 @@ }, "node_modules/vls/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7158,9 +5902,8 @@ }, "node_modules/vls/node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -7175,18 +5918,16 @@ }, "node_modules/vls/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/vls/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" }, @@ -7196,9 +5937,8 @@ }, "node_modules/vls/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" }, @@ -7208,9 +5948,8 @@ }, "node_modules/vls/node_modules/typescript": { "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7220,10 +5959,9 @@ } }, "node_modules/vls/node_modules/vue-eslint-parser": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", - "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "version": "9.3.2", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "eslint-scope": "^7.1.1", @@ -7244,39 +5982,34 @@ } }, "node_modules/vscode-html-languageservice": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.1.0.tgz", - "integrity": "sha512-cGOu5+lrz+2dDXSGS15y24lDtPaML1T8K/SfqgFbLmCZ1btYOxceFieR+ybTS2es/A67kRc62m2cKFLUQPWG5g==", + "version": "5.1.1", "dev": true, + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.16", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-languageserver-types": "^3.17.3", - "vscode-uri": "^3.0.7" + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.0.8" } }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", - "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vscode-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", - "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==", - "dev": true + "version": "3.0.8", + "dev": true, + "license": "MIT" }, "node_modules/vue": { "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "license": "MIT", "dependencies": { "@vue/compiler-sfc": "2.7.14", "csstype": "^3.1.0" @@ -7284,37 +6017,32 @@ }, "node_modules/vue-affix": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/vue-affix/-/vue-affix-0.5.2.tgz", - "integrity": "sha512-60TedWOHHuqTpaZsTni9yyc+FwH4qP/Kjt6QegK7Hv1G+tP/CJ7+K1mTRsrEJkjUq55Q0a7hjHTblv+Y+u4o0Q==" + "license": "MIT" }, "node_modules/vue-class-component": { "version": "7.2.6", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz", - "integrity": "sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==", + "license": "MIT", "peerDependencies": { "vue": "^2.0.0" } }, "node_modules/vue-debounce-decorator": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vue-debounce-decorator/-/vue-debounce-decorator-1.0.1.tgz", - "integrity": "sha512-2XUI5deMvWDK810Py3b002rpgGdBBUI1Qvggl1rfFo1kDBEo49FDYFYo1yBuwK+Bs7p3XqF++z0K37RuGjgmIQ==", "dev": true, + "license": "MIT", "dependencies": { "vue-class-component": "^6.3.2" } }, "node_modules/vue-debounce-decorator/node_modules/vue-class-component": { "version": "6.3.2", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz", - "integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vue-eslint-parser": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.2", "eslint-scope": "^7.0.0", @@ -7335,10 +6063,9 @@ } }, "node_modules/vue-eslint-parser/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -7348,9 +6075,8 @@ }, "node_modules/vue-eslint-parser/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7364,9 +6090,8 @@ }, "node_modules/vue-eslint-parser/node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -7381,27 +6106,23 @@ }, "node_modules/vue-eslint-parser/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/vue-hotjar": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/vue-hotjar/-/vue-hotjar-1.4.0.tgz", - "integrity": "sha512-C/4lfjB1R3+eXiC+jSpNn3z0GWicpnADeRWpEHLdP2FSIi/AjupoIBikugHvGV334QYGUueXUyVZz6GHr+3eYQ==" + "license": "MIT" }, "node_modules/vue-i18n": { "version": "8.28.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.28.2.tgz", - "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" + "license": "MIT" }, "node_modules/vue-property-decorator": { "version": "9.1.2", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz", - "integrity": "sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==", + "license": "MIT", "peerDependencies": { "vue": "*", "vue-class-component": "*" @@ -7409,14 +6130,12 @@ }, "node_modules/vue-router": { "version": "3.6.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", - "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==" + "license": "MIT" }, "node_modules/vue-template-compiler": { "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "de-indent": "^1.0.2", @@ -7434,13 +6153,11 @@ }, "node_modules/vue2-filters": { "version": "0.14.0", - "resolved": "https://registry.npmjs.org/vue2-filters/-/vue2-filters-0.14.0.tgz", - "integrity": "sha512-2tFWC6gx1SVIr+6VXoufkL+bZa8Gn0/P09T/bnGjOEAGH1+eVT05bPm/VF2V/nL/HMyWkLdlvxKh9JNqpfFlyw==" + "license": "MIT" }, "node_modules/vuelidate": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.6.2.tgz", - "integrity": "sha512-rowo/OSwC8XEGdWg+ZgTpcgxYtmbQKbGOw4Z+lfT/BkNPoNyPEVgIeObUhhFO7Q7Lz0u0p429qfus/BHs9tMpg==", + "license": "MIT", "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" @@ -7448,9 +6165,8 @@ }, "node_modules/vuelidate-property-decorators": { "version": "1.0.28", - "resolved": "https://registry.npmjs.org/vuelidate-property-decorators/-/vuelidate-property-decorators-1.0.28.tgz", - "integrity": "sha512-ktb+9bYkTSmUFLi9g7gMGY035F5WvNnBQ/yl1U8MlclcFT65bYU/vBQ5HcZ4T1Ko6IL5wIPD4XJ+KkllKvgycg==", "dev": true, + "license": "MIT", "dependencies": { "vue-class-component": "^7.0.1", "vuelidate": "^0.7.4" @@ -7458,9 +6174,8 @@ }, "node_modules/vuelidate-property-decorators/node_modules/vuelidate": { "version": "0.7.7", - "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.7.tgz", - "integrity": "sha512-pT/U2lDI67wkIqI4tum7cMSIfGcAMfB+Phtqh2ttdXURwvHRBJEAQ0tVbUsW9Upg83Q5QH59bnCoXI7A9JDGnA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" @@ -7468,8 +6183,7 @@ }, "node_modules/vuetify": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.7.1.tgz", - "integrity": "sha512-DVFmRsDtYrITw9yuGLwpFWngFYzEgk0KwloDCIV3+vhZw+NBFJOSzdbttbYmOwtqvQlhDxUyIRQolrRbSFAKlg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/johnleider" @@ -7480,17 +6194,15 @@ }, "node_modules/vuex": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "license": "MIT", "peerDependencies": { "vue": "^2.0.0" } }, "node_modules/vuex-class": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/vuex-class/-/vuex-class-0.3.2.tgz", - "integrity": "sha512-m0w7/FMsNcwJgunJeM+wcNaHzK2KX1K1rw2WUQf7Q16ndXHo7pflRyOV/E8795JO/7fstyjH3EgqBI4h4n4qXQ==", "dev": true, + "license": "MIT", "peerDependencies": { "vue": "^2.5.0", "vue-class-component": "^6.0.0 || ^7.0.0", @@ -7499,10 +6211,9 @@ }, "node_modules/vuex-module-decorators": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vuex-module-decorators/-/vuex-module-decorators-1.2.0.tgz", - "integrity": "sha512-3lHp75qVgrNXUpFKs4J4eRnrxjY3BYUkHwR+ZKvvIycw/7tDwlL0RPuiYLwrHEUBTvJePSZaehZJ0BMTw1/ugQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "engines": { "node": ">= 8", "npm": ">= 5", @@ -7515,9 +6226,8 @@ }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^4.0.0" }, @@ -7527,18 +6237,16 @@ }, "node_modules/webidl-conversions": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/whatwg-encoding": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -7548,18 +6256,16 @@ }, "node_modules/whatwg-mimetype": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/whatwg-url": { "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" @@ -7570,9 +6276,8 @@ }, "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" }, @@ -7585,9 +6290,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -7600,13 +6304,12 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -7620,9 +6323,8 @@ }, "node_modules/why-is-node-running": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", "dev": true, + "license": "MIT", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -7634,26 +6336,15 @@ "node": ">=8" } }, - "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==", - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -7672,30 +6363,26 @@ }, "node_modules/xml-name-validator": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12" } }, "node_modules/xmlchars": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true + "dev": true, + "license": "ISC" }, "node_modules/yocto-queue": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, diff --git a/package.json b/package.json index 49591b45a..f5eb119f9 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@bcrs-shared-components/staff-comments": "1.3.11", "@bcrs-shared-components/staff-payment": "2.1.11", "@mdi/font": "^5.9.55", + "@reactivex/rxjs": "^6.6.7", "@sentry/integrations": "^7.50.0", "@sentry/vue": "^7.50.0", "axios": "^0.27.2", @@ -45,6 +46,7 @@ "qrcode.vue": "1.7.0", "regenerator-runtime": "^0.13.11", "register-service-worker": "^1.7.2", + "rxjs": "^7.8.1", "sbc-common-components": "3.0.8", "vue": "2.7.14", "vue-affix": "^0.5.2", diff --git a/src/assets/images/business_card_feature.png b/src/assets/images/business_card_feature.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8e1bbb9553de043c0b36908ce1eda1787a08ff GIT binary patch literal 52285 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 +
+ + + + + + + + + + + + + +
+
+ +
+ {{ loadingMessage }} +
+
+
+
+ + + + + + + + + + + + +
+ + + + + diff --git a/src/components/DigitalCredentials/CredentialsFooter.vue b/src/components/DigitalCredentials/CredentialsFooter.vue deleted file mode 100644 index 5ce5f35bc..000000000 --- a/src/components/DigitalCredentials/CredentialsFooter.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - - - diff --git a/src/components/DigitalCredentials/CredentialsInfo.vue b/src/components/DigitalCredentials/CredentialsInfo.vue new file mode 100644 index 000000000..566bc5f48 --- /dev/null +++ b/src/components/DigitalCredentials/CredentialsInfo.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/DigitalCredentials/CredentialsLanding.vue b/src/components/DigitalCredentials/CredentialsLanding.vue index 499b7485c..829c75c54 100644 --- a/src/components/DigitalCredentials/CredentialsLanding.vue +++ b/src/components/DigitalCredentials/CredentialsLanding.vue @@ -1,70 +1,63 @@ diff --git a/src/components/DigitalCredentials/CredentialsMenu.vue b/src/components/DigitalCredentials/CredentialsMenu.vue new file mode 100644 index 000000000..7ccbdd722 --- /dev/null +++ b/src/components/DigitalCredentials/CredentialsMenu.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/components/DigitalCredentials/CredentialsStepper.vue b/src/components/DigitalCredentials/CredentialsStepper.vue new file mode 100644 index 000000000..1cc4ef684 --- /dev/null +++ b/src/components/DigitalCredentials/CredentialsStepper.vue @@ -0,0 +1,334 @@ + + + + + diff --git a/src/components/DigitalCredentials/CredentialsTable.vue b/src/components/DigitalCredentials/CredentialsTable.vue index ed386f126..814d95acd 100644 --- a/src/components/DigitalCredentials/CredentialsTable.vue +++ b/src/components/DigitalCredentials/CredentialsTable.vue @@ -1,9 +1,8 @@ + @@ -32,17 +38,22 @@ diff --git a/src/components/DigitalCredentials/IssueCredentials.vue b/src/components/DigitalCredentials/IssueCredentials.vue deleted file mode 100644 index 720922de6..000000000 --- a/src/components/DigitalCredentials/IssueCredentials.vue +++ /dev/null @@ -1,165 +0,0 @@ - - - - - diff --git a/src/components/DigitalCredentials/RegisterWallet.vue b/src/components/DigitalCredentials/RegisterWallet.vue deleted file mode 100644 index 472de3dfb..000000000 --- a/src/components/DigitalCredentials/RegisterWallet.vue +++ /dev/null @@ -1,107 +0,0 @@ - - - - - diff --git a/src/components/DigitalCredentials/dialogs/ConfirmCredentialsTermsofUseDialog.vue b/src/components/DigitalCredentials/dialogs/ConfirmCredentialsTermsofUseDialog.vue new file mode 100644 index 000000000..eff67d6f6 --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/ConfirmCredentialsTermsofUseDialog.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/components/DigitalCredentials/dialogs/ConfirmReplaceCredentialDialog.vue b/src/components/DigitalCredentials/dialogs/ConfirmReplaceCredentialDialog.vue new file mode 100644 index 000000000..d8b96692f --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/ConfirmReplaceCredentialDialog.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/DigitalCredentials/dialogs/ConfirmRevokeCredentialDialog.vue b/src/components/DigitalCredentials/dialogs/ConfirmRevokeCredentialDialog.vue new file mode 100644 index 000000000..2f8213995 --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/ConfirmRevokeCredentialDialog.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/DigitalCredentials/dialogs/CredentialNotReceivedDialog.vue b/src/components/DigitalCredentials/dialogs/CredentialNotReceivedDialog.vue new file mode 100644 index 000000000..424c1e839 --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/CredentialNotReceivedDialog.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/components/DigitalCredentials/dialogs/CredentialRevokedDialog.vue b/src/components/DigitalCredentials/dialogs/CredentialRevokedDialog.vue new file mode 100644 index 000000000..254d26e4d --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/CredentialRevokedDialog.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/DigitalCredentials/dialogs/ReplaceCredentialErrorDialog.vue b/src/components/DigitalCredentials/dialogs/ReplaceCredentialErrorDialog.vue new file mode 100644 index 000000000..92d013446 --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/ReplaceCredentialErrorDialog.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/components/DigitalCredentials/dialogs/RevokeCredentialErrorDialog.vue b/src/components/DigitalCredentials/dialogs/RevokeCredentialErrorDialog.vue new file mode 100644 index 000000000..98e1aa328 --- /dev/null +++ b/src/components/DigitalCredentials/dialogs/RevokeCredentialErrorDialog.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/components/DigitalCredentials/enums/routes.ts b/src/components/DigitalCredentials/enums/routes.ts new file mode 100644 index 000000000..6229a60d9 --- /dev/null +++ b/src/components/DigitalCredentials/enums/routes.ts @@ -0,0 +1,4 @@ +export enum Routes { + DIGITAL_CREDENTIALS = 'digital-credentials', // Root route for Digital Credentials + ISSUE_CREDENTIAL = 'issue' +} diff --git a/src/components/DigitalCredentials/index.ts b/src/components/DigitalCredentials/index.ts index 820f90882..907750d6d 100644 --- a/src/components/DigitalCredentials/index.ts +++ b/src/components/DigitalCredentials/index.ts @@ -1,5 +1,6 @@ +export { default as CredentialsDashboard } from './CredentialsDashboard.vue' +export { default as CredentialsInfo } from './CredentialsInfo.vue' export { default as CredentialsLanding } from './CredentialsLanding.vue' -export { default as DigitalWalletDownload } from './DigitalWalletDownload.vue' -export { default as RegisterWallet } from './RegisterWallet.vue' -export { default as IssueCredentials } from './IssueCredentials.vue' -export { default as CredentialsFooter } from './CredentialsFooter.vue' +export { default as CredentialsStepper } from './CredentialsStepper.vue' +export { default as CredentialsTable } from './CredentialsTable.vue' +export { default as CredentialsWebSocket } from './CredentialsWebSocket.vue' diff --git a/src/components/EntityInfo.vue b/src/components/EntityInfo.vue index 44f7a9c60..33c2438e7 100644 --- a/src/components/EntityInfo.vue +++ b/src/components/EntityInfo.vue @@ -18,7 +18,7 @@ :tempRegNumber="tempRegNumber" /> route.path.includes(DCRoutes.DIGITAL_CREDENTIALS)) + } + /** The Temporary Registration Number string (may be null). */ get tempRegNumber (): string { return sessionStorage.getItem('TEMP_REG_NUMBER') diff --git a/src/components/EntityInfo/EntityMenu.vue b/src/components/EntityInfo/EntityMenu.vue index 01bea093a..4cda0b8a5 100644 --- a/src/components/EntityInfo/EntityMenu.vue +++ b/src/components/EntityInfo/EntityMenu.vue @@ -69,30 +69,6 @@
- - - - - Manage the digital credentials generated for the business. - - - + + + + + Manage the digital cards generated for the business. + + + route.name === Routes.DIGITAL_CREDENTIALS)) - return (ff && isNotaDcRoute && this.isGoodStanding && this.isBComp && !this.isRoleStaff) + return (ff && this.isSoleProp && !this.isRoleStaff) } case AllowableActions.DIRECTOR_CHANGE: { diff --git a/src/resources/DigitalCredentialRoutes.ts b/src/resources/DigitalCredentialRoutes.ts index 4de61e26e..757debd83 100644 --- a/src/resources/DigitalCredentialRoutes.ts +++ b/src/resources/DigitalCredentialRoutes.ts @@ -1,55 +1,36 @@ import { Routes } from '@/enums' import DigitalCredentials from '@/views/DigitalCredentials.vue' import { getDigitalCredentialBreadcrumb } from '@/resources/BreadcrumbResources' -import { DigitalWalletDownload, IssueCredentials, RegisterWallet } from '@/components/DigitalCredentials' +import { CredentialsDashboard, CredentialsStepper } from '@/components/DigitalCredentials' export const DigitalCredentialRoutes = { path: `/${Routes.DIGITAL_CREDENTIALS}`, - name: Routes.DIGITAL_CREDENTIALS, component: DigitalCredentials, meta: { requiresAuth: true, - breadcrumb: [ getDigitalCredentialBreadcrumb() ] + breadcrumb: [getDigitalCredentialBreadcrumb()] }, children: [ { - name: Routes.DOWNLOAD_WALLET, - path: Routes.DOWNLOAD_WALLET, - component: DigitalWalletDownload, + path: '', + name: Routes.DIGITAL_CREDENTIALS, + component: CredentialsDashboard, meta: { breadcrumb: [ - getDigitalCredentialBreadcrumb(), - { - text: 'Download Wallet', - to: { name: Routes.DOWNLOAD_WALLET } - } - ] - } - }, - { - name: Routes.REGISTER_WALLET, - path: Routes.REGISTER_WALLET, - component: RegisterWallet, - meta: { - breadcrumb: [ - getDigitalCredentialBreadcrumb(), - { - text: 'Register Wallet', - to: { name: Routes.REGISTER_WALLET } - } + getDigitalCredentialBreadcrumb() ] } }, { - name: Routes.ISSUE_CREDENTIALS, - path: Routes.ISSUE_CREDENTIALS, - component: IssueCredentials, + path: Routes.ISSUE_CREDENTIAL, + name: Routes.ISSUE_CREDENTIAL, + component: CredentialsStepper, meta: { breadcrumb: [ getDigitalCredentialBreadcrumb(), { text: 'Issue Credentials', - to: { name: Routes.ISSUE_CREDENTIALS } + to: { name: Routes.ISSUE_CREDENTIAL } } ] } diff --git a/src/router.ts b/src/router.ts index 2b292071d..a358c7f16 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,7 +1,7 @@ import Vue from 'vue' import VueRouter, { Route } from 'vue-router' import routes from '@/routes' -import { Routes } from '@/enums' +import { Routes, DCRoutes } from '@/enums' import { SessionStorageKeys } from 'sbc-common-components/src/util/constants' import { GetFeatureFlag } from '@/utils' @@ -56,7 +56,7 @@ export function getVueRouter () { // See DIGITAL_CREDENTIALS in Allowable Actions Mixin. return ( !GetFeatureFlag('enable-digital-credentials') && - [Routes.DIGITAL_CREDENTIALS].includes(route.name as Routes) + [Routes.DIGITAL_CREDENTIALS].includes(route.name as DCRoutes) ) } diff --git a/src/services/legal-services.ts b/src/services/legal-services.ts index f18396e61..cd01324f5 100644 --- a/src/services/legal-services.ts +++ b/src/services/legal-services.ts @@ -308,7 +308,7 @@ export default class LegalServices { // /** - * Fetches digital credential information. + * Fetches digital credentials for a business. * @param businessId the business identifier (aka entity inc no) * @returns the axios response */ @@ -323,7 +323,7 @@ export default class LegalServices { } /** - * Creates a digital credentials invitation. + * Creates a wallet connection invitation. * @param businessId the business identifier (aka entity inc no) * @returns the axios response */ @@ -338,12 +338,12 @@ export default class LegalServices { } /** - * Fetches a digital credentials connection information. + * Fetches a list of wallet connections for a business. * @param businessId the business identifier (aka entity inc no) * @returns the axios response */ - static async fetchCredentialConnection (businessId: string): Promise { - const url = `businesses/${businessId}/digitalCredentials/connection` + static async fetchCredentialConnections (businessId: string): Promise { + const url = `businesses/${businessId}/digitalCredentials/connections` return axios.get(url) .catch(error => { // eslint-disable-next-line no-console @@ -353,13 +353,46 @@ export default class LegalServices { } /** - * Issues a digital credentials offer. + * Removes an active credential wallet connection. + * @param businessId the business identifier (aka entity inc no) + * @returns the axios response + */ + static async removeActiveCredentialConnection (businessId: string): Promise { + const url = `businesses/${businessId}/digitalCredentials/activeConnection` + return axios.delete(url) + .catch(error => { + // eslint-disable-next-line no-console + console.log(error.message) + return null + }) + } + + /** + * Removes a credential wallet connection. + * @param businessId the business identifier (aka entity inc no) + * @param connectionId the connection identifier + * @returns the axios response + */ + static async removeCredentialConnection (businessId: string, connectionId: string): Promise { + const url = `businesses/${businessId}/digitalCredentials/connections/${connectionId}` + return axios.delete(url) + .catch(error => { + // eslint-disable-next-line no-console + console.log(error.message) + return null + }) + } + + /** + * Sends a digital credential offer. * @param businessId The business identifier (aka entity inc no) * @param credentialType The credential offer type * @returns the axios response */ - static async issueCredentialOffer (businessId: string, credentialType: DigitalCredentialTypes) - : Promise { + static async sendCredentialOffer ( + businessId: string, + credentialType: DigitalCredentialTypes) + : Promise { const url = `businesses/${businessId}/digitalCredentials/${credentialType}` return axios.post(url) .catch(error => { @@ -368,4 +401,36 @@ export default class LegalServices { return null }) } + + /** + * Revokes a digital credential. + * @param businessId The business identifier (aka entity inc no) + * @param credentialId The credential identifier + * @returns the axios response + */ + static async revokeCredential (businessId: string, credentialId: string): Promise { + const url = `businesses/${businessId}/digitalCredentials/${credentialId}/revoke` + return axios.post(url) + .catch(error => { + // eslint-disable-next-line no-console + console.log(error.message) + return null + }) + } + + /** + * Removes a digital credential. + * @param businessId The business identifier (aka entity inc no) + * @param credentialId The credential identifier + * @returns the axios response + */ + static async removeCredential (businessId: string, credentialId: string): Promise { + const url = `businesses/${businessId}/digitalCredentials/${credentialId}` + return axios.delete(url) + .catch(error => { + // eslint-disable-next-line no-console + console.log(error.message) + return null + }) + } } diff --git a/src/stores/configurationStore.ts b/src/stores/configurationStore.ts index b109e464c..8e5feac59 100644 --- a/src/stores/configurationStore.ts +++ b/src/stores/configurationStore.ts @@ -91,7 +91,7 @@ export const useConfigurationStore = defineStore('configuration', { }, setSessionVariables (data: any) { - // The following four session variables are used by SBC Header (a common component): + // The following four session variables are used by SBC Header (a common component): sessionStorage.setItem('AUTH_WEB_URL', data.VUE_APP_AUTH_WEB_URL) sessionStorage.setItem('BUSINESSES_URL', data.VUE_APP_BUSINESSES_URL) sessionStorage.setItem('REGISTRY_HOME_URL', data.VUE_APP_REGISTRY_HOME_URL) diff --git a/src/views/DigitalCredentials.vue b/src/views/DigitalCredentials.vue index c5076beb9..5b1f28637 100644 --- a/src/views/DigitalCredentials.vue +++ b/src/views/DigitalCredentials.vue @@ -1,213 +1,19 @@ diff --git a/src/components/common/VcardTemplate.vue b/src/components/common/VcardTemplate.vue index b248936ad..ec165f180 100644 --- a/src/components/common/VcardTemplate.vue +++ b/src/components/common/VcardTemplate.vue @@ -11,7 +11,7 @@
-
+
diff --git a/src/components/dialogs/ConfirmDissolutionDialog.vue b/src/components/dialogs/ConfirmDissolutionDialog.vue index ab88a18b4..959a130ae 100644 --- a/src/components/dialogs/ConfirmDissolutionDialog.vue +++ b/src/components/dialogs/ConfirmDissolutionDialog.vue @@ -83,7 +83,6 @@ + + diff --git a/src/components/dialogs/index.ts b/src/components/dialogs/index.ts index b7c38efab..5eb10af05 100644 --- a/src/components/dialogs/index.ts +++ b/src/components/dialogs/index.ts @@ -13,6 +13,7 @@ import FileCorrectionDialog from './FileCorrectionDialog.vue' import LoadCorrectionDialog from './LoadCorrectionDialog.vue' import NameRequestAuthErrorDialog from './NameRequestAuthErrorDialog.vue' import NameRequestInvalidDialog from './NameRequestInvalidDialog.vue' +import NotEligibleExtensionDialog from './NotEligibleExtensionDialog.vue' import NotInGoodStandingDialog from '@/components/dialogs/NotInGoodStandingDialog.vue' import PaymentErrorDialog from './PaymentErrorDialog.vue' import ResumeErrorDialog from './ResumeErrorDialog.vue' @@ -35,6 +36,7 @@ export { LoadCorrectionDialog, NameRequestAuthErrorDialog, NameRequestInvalidDialog, + NotEligibleExtensionDialog, NotInGoodStandingDialog, PaymentErrorDialog, ResumeErrorDialog, diff --git a/src/main.ts b/src/main.ts index 9becacb00..51333ac44 100644 --- a/src/main.ts +++ b/src/main.ts @@ -123,16 +123,11 @@ async function start () { // execution and error handling start().catch(error => { - // log any error after configuring sentry. - // it helps to identify configuration issues specific to the environment. - // note that it won't log anything related to `fetchConfig()` since sentry is depending on a config value. + // Log any error after configuring sentry. + // It helps to identify configuration issues specific to the environment. + // Note that it won't log anything related to `fetchConfig()` since sentry is depending on a config value. Sentry.captureException(error) - console.log(error) // eslint-disable-line no-console - // bypass alert if this specific error - if (!error?.message?.startsWith('Missing or invalid')) { - alert('There was an error starting this page. (See console for details.)\n' + - 'Please try again later.') - } + alert(error) // try to navigate to Business Registry home page navigate(sessionStorage.getItem('BUSINESSES_URL')) }) diff --git a/src/mixins/allowable-actions-mixin.ts b/src/mixins/allowable-actions-mixin.ts index e36f8bda4..fc8cf41f7 100644 --- a/src/mixins/allowable-actions-mixin.ts +++ b/src/mixins/allowable-actions-mixin.ts @@ -40,8 +40,7 @@ export default class AllowableActionsMixin extends Vue { } case AllowableActions.AGM_EXTENSION: { - return true // *** FOR DEBUGGING ONLY - // return this.isAllowedFiling(FilingTypes.AGM_EXTENSION) + return this.isAllowedFiling(FilingTypes.AGM_EXTENSION) } case AllowableActions.AGM_LOCATION_CHANGE: { diff --git a/src/utils/set-base-route-and-business-id.ts b/src/utils/set-base-route-and-business-id.ts index 8fca95578..e6b167a74 100644 --- a/src/utils/set-base-route-and-business-id.ts +++ b/src/utils/set-base-route-and-business-id.ts @@ -23,7 +23,7 @@ export function setBaseRouteAndBusinessId (pathname: string, processEnvBaseUrl: // ensure we don't already have a Business ID in scope sessionStorage.removeItem('BUSINESS_ID') } else { - throw new Error('Missing or invalid Business ID or Temp Reg Number.') + throw new Error('Missing or invalid Business ID or Temporary Registration Number.') } // set Base for Vue Router diff --git a/src/views/AgmExtension.vue b/src/views/AgmExtension.vue index 7aa302db5..6d17e66f1 100644 --- a/src/views/AgmExtension.vue +++ b/src/views/AgmExtension.vue @@ -14,25 +14,10 @@ @exit="onPaymentErrorDialogExit()" /> - - - @@ -55,7 +40,7 @@

Extension Detail

- Enter the details about the extension request to evaluate eligibility. + Enter the details about the extension request to evaluate the eligibility.

@@ -68,7 +53,10 @@ @@ -145,7 +133,7 @@ v-on="on" > { + async onClickFilePay (): Promise { // if there is an invalid component, scroll to it if (!this.isPageValid) { this.showErrors = true - // *** TODO: check for section errors here + // + // FUTURE: check for section errors here + // if (!this.extensionRequestValid) { - // Show error message of detail comment text area if invalid - // this.$refs.detailCommentRef.$refs.textarea.error = true + // nothing to do here -- "showErrors" will do it all } if (!this.certifyFormValid) { // Show error message of legal name text field if invalid @@ -340,13 +324,6 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, // prevent double saving if (this.busySaving) return - // if this is a staff user clicking File and Pay (not Submit) - // then detour via Staff Payment dialog - if (this.isRoleStaff && !fromStaffPayment) { - this.staffPaymentDialog = true - return - } - this.filingPaying = true // save final filing (not draft) @@ -433,27 +410,6 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, } } - switch (this.staffPaymentData.option) { - case StaffPaymentOptions.FAS: - header.header['routingSlipNumber'] = this.staffPaymentData.routingSlipNumber - header.header['priority'] = this.staffPaymentData.isPriority - break - - case StaffPaymentOptions.BCOL: - header.header['bcolAccountNumber'] = this.staffPaymentData.bcolAccountNumber - header.header['datNumber'] = this.staffPaymentData.datNumber - header.header['folioNumber'] = this.staffPaymentData.folioNumber - header.header['priority'] = this.staffPaymentData.isPriority - break - - case StaffPaymentOptions.NO_FEE: - header.header['waiveFees'] = true - break - - case StaffPaymentOptions.NONE: // should never happen - break - } - const business: any = { business: { foundingDate: this.dateToApi(this.getFoundingDate), @@ -540,24 +496,6 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, } } - /** Handles Retry events from Save Error dialog. */ - async onSaveErrorDialogRetry (): Promise { - if (this.saveErrorReason === SaveErrorReasons.FILE_PAY) { - // close the dialog and retry file-pay - this.saveErrorReason = null - await this.onClickFilePay(this.isRoleStaff) - } - } - - /** Handles Okay events from Save Error dialog. */ - onSaveErrorDialogOkay (): void { - if (this.saveErrorReason === SaveErrorReasons.FILE_PAY) { - // close the dialog and finish file-pay process - this.saveErrorReason = null - this.onClickFilePayFinish() - } - } - /** Array of valid components. Must match validFlags. */ readonly validComponents = [ 'extension-request-vcard', @@ -579,21 +517,9 @@ export default class AgmExtension extends Mixins(CommonMixin, DateMixin, @Watch('data.isPrevExtension') @Watch('data.prevExpiryDate') @Watch('data.intendedAgmDate') - @Watch('certifiedBy') - @Watch('isCertified') private onHaveChanges (): void { this.haveChanges = true } - - @Watch('staffPaymentData') - private onStaffPaymentDataChanged (val: StaffPaymentIF): void { - const waiveFees = (val.option === StaffPaymentOptions.NO_FEE) - - // add Waive Fees flag to all filing codes - this.updateFilingData('add', FilingCodes.AGM_EXTENSION, val.isPriority, waiveFees) - - this.haveChanges = true - } } @@ -628,21 +554,13 @@ h2 { padding-top: 2rem; border-top: 1px solid $gray5; - .buttons-left { - width: 50%; - } + // .buttons-left { + // width: 50%; + // } .buttons-right { margin-left: auto; } - - .v-btn + .v-btn { - margin-left: 0.5rem; - } - - #consent-cancel-btn { - margin-left: 0.5rem; - } } // Fix font size and color to stay consistent. diff --git a/src/views/AgmLocationChg.vue b/src/views/AgmLocationChg.vue index 603bc1ad5..af1f6a6cf 100644 --- a/src/views/AgmLocationChg.vue +++ b/src/views/AgmLocationChg.vue @@ -330,7 +330,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, reasonValid = false // variables for displaying dialogs - resumeErrorDialog = false saveErrorReason: SaveErrorReasons = null paymentErrorDialog = false @@ -424,13 +423,13 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, } // always include agm location change code - // clear Priority flag and set the Waive Fees flag to true - this.updateFilingData('add', FilingCodes.AGM_LOCATION_CHANGE, undefined, true) + // (no Priority flag and no Waive Fees flag) + this.updateFilingData('add', FilingCodes.AGM_LOCATION_CHANGE, undefined, undefined) } /** * Called when user clicks File and Pay button - * or when user retries from Save Error dialog + * or when user retries from Save Error dialog. */ async onClickFilePay (): Promise { // if there is an invalid component, scroll to it @@ -533,8 +532,6 @@ export default class AgmLocationChg extends Mixins(CommonMixin, DateMixin, } } - header.header['waiveFees'] = true - const business: any = { business: { foundingDate: this.dateToApi(this.getFoundingDate), diff --git a/tests/unit/AboutTheBusiness.spec.ts b/tests/unit/AboutTheBusiness.spec.ts new file mode 100644 index 000000000..3c0ed45ab --- /dev/null +++ b/tests/unit/AboutTheBusiness.spec.ts @@ -0,0 +1,35 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import { mount } from '@vue/test-utils' +import AboutTheBusiness from '@/components/AgmExtension/AboutTheBusiness.vue' + +Vue.use(Vuetify) +const vuetify = new Vuetify({}) + +describe('AboutTheBusiness', () => { + it('displays normally', () => { + const wrapper = mount(AboutTheBusiness, { + propsData: { + data: { + isGoodStanding: true, + incorporationDate: new Date('2023-12-31T08:00:00.000Z') + } + }, + vuetify + }) + + expect(wrapper.find('.v-card').attributes('id')).toBe('about-the-business') + expect(wrapper.find('header i').attributes('class')).toContain('mdi-domain') + expect(wrapper.find('header h2').text()).toBe('About the Business') + + const rows = wrapper.findAll('.content > .row') + + expect(rows.at(0).find('.col-sm-3').text()).toBe('Business in Good Standing') + expect(rows.at(0).find('.col-sm-9').text()).toBe('Yes') + + expect(rows.at(1).find('.col-sm-3').text()).toBe('Date of Incorporation') + expect(rows.at(1).find('.col-sm-9').text()).toBe('December 31, 2023') + + wrapper.destroy() + }) +}) diff --git a/tests/unit/AgmExtension.spec.ts b/tests/unit/AgmExtension.spec.ts index 0fd0837af..4276bba68 100644 --- a/tests/unit/AgmExtension.spec.ts +++ b/tests/unit/AgmExtension.spec.ts @@ -1,19 +1,21 @@ import Vue from 'vue' import Vuetify from 'vuetify' -import { createLocalVue, shallowMount } from '@vue/test-utils' +import { createLocalVue, mount } from '@vue/test-utils' import { createPinia, setActivePinia } from 'pinia' import { useBusinessStore, useRootStore } from '@/stores' import AgmExtension from '@/views/AgmExtension.vue' -import { ConfirmDialog, ResumeErrorDialog, SaveErrorDialog } - from '@/components/dialogs' -import { BusinessNameForeign, EffectiveDate, Certify, DetailComment, ForeignJurisdiction } from '@/components/common' -import { CourtOrderPoa } from '@bcrs-shared-components/court-order-poa' -import { DocumentDelivery } from '@bcrs-shared-components/document-delivery' +import { ConfirmDialog, NotEligibleExtensionDialog, PaymentErrorDialog } from '@/components/dialogs' +import { Certify } from '@/components/common' +import { ExpandableHelp } from '@bcrs-shared-components/expandable-help' +import AgmExtensionHelp from '@/components/AgmExtension/AgmExtensionHelp.vue' +import AboutTheBusiness from '@/components/AgmExtension/AboutTheBusiness.vue' +import AgmExtensionEvaluation from '@/components/AgmExtension/AgmExtensionEvaluation.vue' +import ExtensionRequest from '@/components/AgmExtension/ExtensionRequest.vue' import { LegalServices } from '@/services' import flushPromises from 'flush-promises' import mockRouter from './mockRouter' import VueRouter from 'vue-router' -import { CorpTypeCd } from '@bcrs-shared-components/corp-type-module' +import { CorpTypeCd, FilingCodes } from '@/enums' // suppress various warnings: // - "Unknown custom element " warnings @@ -23,6 +25,7 @@ import { CorpTypeCd } from '@bcrs-shared-components/corp-type-module' Vue.config.silent = true Vue.use(Vuetify) +const vuetify = new Vuetify({}) const localVue = createLocalVue() localVue.use(VueRouter) @@ -30,19 +33,20 @@ setActivePinia(createPinia()) const businessStore = useBusinessStore() const rootStore = useRootStore() -describe.skip('AGM Extension view', () => { - beforeEach(() => { +describe('AGM Extension view', () => { + let wrapper: any + + beforeAll(() => { // init store - rootStore.currentDate = '2020-03-04' - businessStore.setLegalType(CorpTypeCd.COOP) - businessStore.setLegalName('My Test Entity') - businessStore.setIdentifier('CP1234567') - businessStore.setFoundingDate('1971-05-12T00:00:00-00:00') + rootStore.currentDate = '2023-11-06' + businessStore.setLegalType(CorpTypeCd.BENEFIT_COMPANY) + businessStore.setLegalName('My Benefit Company') + businessStore.setIdentifier('BC1234567') + businessStore.setFoundingDate('2000-01-01T08:00:00-00:00') rootStore.filingData = [] - rootStore.keycloakRoles = ['staff'] // continuation outs currently apply to staff only }) - it('mounts the sub-components properly', async () => { + beforeEach(() => { const $route = { params: { filingId: '0' } } // create local Vue and mock router @@ -50,276 +54,78 @@ describe.skip('AGM Extension view', () => { localVue.use(VueRouter) const $router = mockRouter.mock() - const wrapper = shallowMount(AgmExtension, { mocks: { $route, $router } }) - wrapper.vm.$data.dataLoaded = true - await Vue.nextTick() - - // verify sub-components - expect(wrapper.findComponent(BusinessNameForeign).exists()).toBe(true) - expect(wrapper.findComponent(Certify).exists()).toBe(true) - expect(wrapper.findComponent(ConfirmDialog).exists()).toBe(true) - expect(wrapper.findComponent(CourtOrderPoa).exists()).toBe(true) - expect(wrapper.findComponent(DetailComment).exists()).toBe(true) - expect(wrapper.findComponent(DocumentDelivery).exists()).toBe(true) - expect(wrapper.findComponent(EffectiveDate).exists()).toBe(true) - expect(wrapper.findComponent(ForeignJurisdiction).exists()).toBe(true) - expect(wrapper.findComponent(ResumeErrorDialog).exists()).toBe(true) - expect(wrapper.findComponent(SaveErrorDialog).exists()).toBe(true) - - wrapper.destroy() + wrapper = mount(AgmExtension, { + mocks: { $route, $router }, + stubs: { + ConfirmDialog: true, + PaymentErrorDialog: true, + NotEligibleExtensionDialog: true, + AboutTheBusiness: true, + ExtensionRequest: true, + AgmExtensionEvaluation: true + }, + vuetify + }) }) - it('sets filing data properly', async () => { - const $route = { params: { filingId: '0' } } - - // create local Vue and mock router - const localVue = createLocalVue() - localVue.use(VueRouter) - const $router = mockRouter.mock() - - const wrapper = shallowMount(AgmExtension, { mocks: { $route, $router } }) - wrapper.vm.$data.dataLoaded = true - await Vue.nextTick() - - const vm: any = wrapper.vm - - // verify initial Filing Data - expect(vm.filingData).not.toBeUndefined() - expect(vm.filingData).not.toBeNull() - expect(vm.filingData.length).toBe(1) - expect(vm.filingData[0].filingTypeCode).toBe('COUTI') - expect(vm.filingData[0].entityType).toBe('CP') - + afterEach(() => { wrapper.destroy() }) - it('sets computed states properly', () => { - // mock $route - const $route = { params: { filingId: '0' } } - - // create local Vue and mock router - const localVue = createLocalVue() - localVue.use(VueRouter) - const $router = mockRouter.mock() - - const wrapper = shallowMount(AgmExtension, { mocks: { $route, $router } }) - const vm: any = wrapper.vm - - // verify "isPayRequired" with no fee - vm.totalFee = 0 - expect(!!vm.isPayRequired).toBe(false) - - // verify "isPayRequired" with a fee - vm.totalFee = 350 - expect(!!vm.isPayRequired).toBe(true) - - // verify "validated" - all true - vm.businessNameValid = true - vm.certifyFormValid = true - vm.courtOrderValid = true - vm.detailCommentValid = true - vm.documentDeliveryValid = true - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = true - expect(!!vm.isPageValid).toBe(true) - - // verify "validated" - invalid Detail Comment form - vm.businessNameValid = true - vm.certifyFormValid = true - vm.courtOrderValid = true - vm.detailCommentValid = false - vm.documentDeliveryValid = true - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = true - expect(!!vm.isPageValid).toBe(false) - - // verify "validated" - invalid Certify form - vm.businessNameValid = true - vm.certifyFormValid = false - vm.courtOrderValid = true - vm.detailCommentValid = true - vm.documentDeliveryValid = true - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = true - expect(!!vm.isPageValid).toBe(false) - - // verify "validated" - invalid Court Order form - vm.businessNameValid = true - vm.certifyFormValid = true - vm.courtOrderValid = false - vm.detailCommentValid = true - vm.documentDeliveryValid = true - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = true - expect(!!vm.isPageValid).toBe(false) - - // verify "validated" - invalid Document Delivery form - vm.businessNameValid = true - vm.certifyFormValid = true - vm.courtOrderValid = true - vm.detailCommentValid = true - vm.documentDeliveryValid = false - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = true - expect(!!vm.isPageValid).toBe(false) - - // verify "validated" - invalid Foreign Jurisdiction form - vm.businessNameValid = true - vm.certifyFormValid = true - vm.courtOrderValid = true - vm.detailCommentValid = true - vm.documentDeliveryValid = true - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = false - expect(vm.isPageValid).toBe(false) - wrapper.destroy() - - // verify "validated" - invalid Effective Date form - vm.businessNameValid = true - vm.certifyFormValid = true - vm.courtOrderValid = true - vm.detailCommentValid = true - vm.documentDeliveryValid = true - vm.effectiveDateValid = false - vm.foreignJurisdictionValid = true - expect(vm.isPageValid).toBe(false) - wrapper.destroy() + it('displays the view properly', async () => { + // verify dialogs and sub-components + expect(wrapper.findComponent(ConfirmDialog).exists()).toBe(true) + expect(wrapper.findComponent(PaymentErrorDialog).exists()).toBe(true) + expect(wrapper.findComponent(NotEligibleExtensionDialog).exists()).toBe(true) + expect(wrapper.findComponent(ExpandableHelp).exists()).toBe(true) + expect(wrapper.findComponent(AgmExtensionHelp).exists()).toBe(true) + expect(wrapper.findComponent(AboutTheBusiness).exists()).toBe(true) + expect(wrapper.findComponent(ExtensionRequest).exists()).toBe(true) + expect(wrapper.findComponent(AgmExtensionEvaluation).exists()).toBe(true) + expect(wrapper.findComponent(Certify).exists()).toBe(true) - // verify "validated" - invalid Business Name Foreign form - vm.businessNameValid = false - vm.certifyFormValid = true - vm.courtOrderValid = true - vm.detailCommentValid = true - vm.documentDeliveryValid = true - vm.effectiveDateValid = true - vm.foreignJurisdictionValid = true - expect(vm.isPageValid).toBe(false) - wrapper.destroy() + // verify titles + expect(wrapper.find('article > h1').text()).toBe('AGM Extension') + expect(wrapper.find('article > header > h2').text()).toBe('Extension Detail') + expect(wrapper.find('article > header > p').text()).toContain('Enter the details about') + expect(wrapper.find('article > section > header > h2').text()).toBe('Certify') + expect(wrapper.find('article > section > header > p').text()).toContain('Enter the legal name') }) - it('saves draft continuation out properly', async () => { - // mock "has pending tasks" legal service - vi.spyOn(LegalServices, 'hasPendingTasks').mockImplementation((): any => { - return Promise.resolve(false) - }) - - // mock "create filing" legal service - // (garbage response data - we aren't testing that) - vi.spyOn(LegalServices, 'createFiling').mockImplementation((): any => { - return Promise.resolve({ - business: {}, - header: { filingId: 456 }, - agmExtension: { - continuationOutDate: '2023-06-10', - details: 'test', - foreignJurisdiction: { - country: 'LB' - }, - legalName: 'North Shore Toys LTD.' - }, - annualReport: {} - }) - }) - - // mock $route - const $route = { params: { filingId: '0' } } - - // create local Vue and mock router - createLocalVue().use(VueRouter) - const router = mockRouter.mock() - router.push({ name: 'continuation-out' }) - - const wrapper = shallowMount(AgmExtension, { - router, - stubs: { - BusinessNameForeign: true, - CourtOrderPoa: true, - DetailComment: true, - DocumentDelivery: true, - Certify: true, - EffectiveDate: true, - ForeignJurisdiction: true, - SbcFeeSummary: true - }, - mocks: { $route } - }) - const vm: any = wrapper.vm - - // wait for fetch to complete + it('displays expandable help properly', async () => { + expect(wrapper.find('.help-label').text()).toContain('Help with') + expect(wrapper.find('.help-section').isVisible()).toBe(false) + await wrapper.find('.help-btn').trigger('click') await flushPromises() - - // call the save action (since clicking button doesn't work) - await vm.onClickSave() - - // verify new Filing ID - expect(vm.filingId).toBe(456) - - wrapper.destroy() + expect(wrapper.find('.help-section').isVisible()).toBe(true) + expect(wrapper.find('.agm-extension-help > h3').text()).toBe('AGM Extension Help') + expect(wrapper.find('.agm-extension-help > div').text()).toContain('A company must have') + expect(wrapper.find('.agm-extension-help > div').text()).toContain('Shareholders entitled') + expect(wrapper.find('.agm-extension-help > div').text()).toContain('If a company does not') }) - it('resumes draft continuation out properly', async () => { - // mock "fetch filing" legal service - vi.spyOn(LegalServices, 'fetchFiling').mockImplementation((): any => { - return Promise.resolve({ - business: { - identifier: 'CP1234567', - legalName: 'My Test Entity' - }, - header: { - name: 'agmExtension', - status: 'DRAFT', - certifiedBy: 'Johnny Certifier', - routingSlipNumber: '123456789', - priority: true - }, - agmExtension: { - continuationOutDate: '2023-06-10', - details: 'Line 1\nLine 2\nLine 3', - foreignJurisdiction: { - country: 'CA', - region: 'AB' - }, - legalName: 'North Shore Toys LTD.' - }, - annualReport: {} - }) + it('show validation errors when Extension Request is incomplete', async () => { + wrapper.setData({ + extensionRequestValid: false, + certifyFormValid: true }) + console.log('>>> HTML =', wrapper.html()) + await wrapper.find('#file-pay-btn').trigger('click') + expect(wrapper.vm.isPageValid).toBe(false) + }) - // mock $route - const $route = { params: { filingId: '456' } } - - // create local Vue and mock router - createLocalVue().use(VueRouter) - const router = mockRouter.mock() - router.push({ name: 'continuation-out' }) - - const wrapper = shallowMount(AgmExtension, { - router, - stubs: { - BusinessNameForeign: true, - CourtOrderPoa: true, - DetailComment: true, - DocumentDelivery: true, - Certify: true, - EffectiveDate: true, - ForeignJurisdiction: true, - SbcFeeSummary: true - }, - mocks: { $route } + it('show validation errors when Certify is incomplete', async () => { + wrapper.setData({ + extensionRequestValid: true, + certifyFormValid: false }) - const vm: any = wrapper.vm - - // wait for fetches to complete - await flushPromises() + await wrapper.find('#file-pay-btn').trigger('click') + expect(wrapper.vm.isPageValid).toBe(false) + }) - expect(vm.certifiedBy).toBe('Johnny Certifier') - // NB: line 1 (default comment) should be removed - expect(vm.detailComment).toBe('Line 2\nLine 3') - expect(vm.initialEffectiveDate).toBe('2023-06-10') - expect(vm.initialBusinessName).toBe('North Shore Toys LTD.') - expect(vm.initialCountry).toBe('CA') - expect(vm.initialRegion).toBe('AB') + it.skip('doesn\'t file and displays dialog when not eligible', () => { + }) - wrapper.destroy() + it.skip('files and set data properly when eligible', async () => { }) }) diff --git a/tests/unit/AgmExtensionEvaluation.spec.ts b/tests/unit/AgmExtensionEvaluation.spec.ts new file mode 100644 index 000000000..09b88dcb9 --- /dev/null +++ b/tests/unit/AgmExtensionEvaluation.spec.ts @@ -0,0 +1,46 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import { mount } from '@vue/test-utils' +import { createPinia, setActivePinia } from 'pinia' +import { useRootStore } from '@/stores' +import AgmExtensionEvaluation from '@/components/AgmExtension/AgmExtensionEvaluation.vue' + +Vue.use(Vuetify) + +const vuetify = new Vuetify({}) +setActivePinia(createPinia()) +const rootStore = useRootStore() + +describe('ExtensionRequest', () => { + it('displays normally', () => { + // init store + rootStore.keycloakRoles = [''] + + const wrapper = mount(AgmExtensionEvaluation, { + propsData: { + data: { + agmYear: 2023 + } + }, + vuetify + }) + + expect(wrapper.find('.v-card').attributes('id')).toBe('agm-extension-evaluation') + expect(wrapper.find('header i').attributes('class')).toContain('mdi-calendar-range') + expect(wrapper.find('header h2').text()).toBe('AGM Extension Evaluation') + expect(wrapper.find('.content .message-box').text()).toContain('Based on the information') + + const rows = wrapper.findAll('.content .row') + + expect(rows.at(0).find('.col-sm-3').text()).toBe('AGM Year') + expect(rows.at(0).find('.col-sm-9').text()).toBe('2023') + + expect(rows.at(1).find('.col-sm-3').text()).toBe('Duration of Extension') + expect(rows.at(1).find('.col-sm-9').text()).toBe('Unknown') + + expect(rows.at(2).find('.col-sm-3').text()).toBe('Due date for this AGM') + expect(rows.at(2).find('.col-sm-9').text()).toBe('Unknown') + + wrapper.destroy() + }) +}) diff --git a/tests/unit/AgmExtensionHelp.spec.ts b/tests/unit/AgmExtensionHelp.spec.ts new file mode 100644 index 000000000..44fac4274 --- /dev/null +++ b/tests/unit/AgmExtensionHelp.spec.ts @@ -0,0 +1,23 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import { shallowMount } from '@vue/test-utils' +import AgmExtensionHelp from '@/components/AgmExtension/AgmExtensionHelp.vue' + +Vue.use(Vuetify) +const vuetify = new Vuetify({}) + +describe('AgmExtensionHelp', () => { + it('displays normally', () => { + const wrapper = shallowMount(AgmExtensionHelp, { vuetify }) + + expect(wrapper.find('.agm-extension-help').exists()).toBe(true) + expect(wrapper.find('h3').text()).toBe('AGM Extension Help') + + const paragraphs = wrapper.findAll('p') + expect(paragraphs.at(0).text()).toContain('A company must have an') + expect(paragraphs.at(1).text()).toContain('Shareholders entitled to') + expect(paragraphs.at(2).text()).toContain('If a company does not') + + wrapper.destroy() + }) +}) diff --git a/tests/unit/ConfigurationActions.spec.ts b/tests/unit/ConfigurationActions.spec.ts index eca45527c..8b4b392b3 100644 --- a/tests/unit/ConfigurationActions.spec.ts +++ b/tests/unit/ConfigurationActions.spec.ts @@ -128,7 +128,7 @@ describe('Configuration Actions', () => { // call method expect(() => { setBaseRouteAndBusinessId('ZZ1234567', '/business/', window.location.origin) - }).toThrow('Missing or invalid Business ID or Temp Reg Number.') + }).toThrow('Missing or invalid Business ID or Temporary Registration Number.') }) it('sessions variables correctly set for the SBC header', async () => { diff --git a/tests/unit/ExtensionRequest.spec.ts b/tests/unit/ExtensionRequest.spec.ts new file mode 100644 index 000000000..17227944e --- /dev/null +++ b/tests/unit/ExtensionRequest.spec.ts @@ -0,0 +1,50 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import { mount } from '@vue/test-utils' +import { createPinia, setActivePinia } from 'pinia' +import { useRootStore } from '@/stores' +import ExtensionRequest from '@/components/AgmExtension/ExtensionRequest.vue' +import { DatePicker } from '@bcrs-shared-components/date-picker' + +Vue.use(Vuetify) + +const vuetify = new Vuetify({}) +setActivePinia(createPinia()) +const rootStore = useRootStore() + +describe('ExtensionRequest', () => { + it('displays normally', () => { + // init store + rootStore.keycloakRoles = [''] + + const wrapper = mount(ExtensionRequest, { + propsData: { + data: {} + }, + vuetify + }) + + expect(wrapper.find('.v-card').attributes('id')).toBe('extension-request') + expect(wrapper.find('header i').attributes('class')).toContain('mdi-calendar-range') + expect(wrapper.find('header h2').text()).toBe('Extension Request') + + const rows = wrapper.findAll('.content .row') + + expect(rows.at(0).find('.col-sm-3').text()).toBe('Is this the first AGM?') + expect(rows.at(0).find('.col-sm-9 .v-input--radio-group').exists()).toBe(true) + + expect(rows.at(1).find('.col-sm-3').text()).toBe('AGM Year') + expect(rows.at(1).find('.col-sm-9 .v-text-field').exists()).toBe(true) + + expect(rows.at(2).find('.col-sm-3').text()).toBe('Previous AGM date or a reference date') + expect(rows.at(2).find('.col-sm-9').findComponent(DatePicker).exists()).toBe(true) + + expect(rows.at(3).find('.col-sm-3').text()).toBe('Has an extension been requested for this AGM year already?') + expect(rows.at(3).find('.col-sm-9').text()).toBe('(future)') + + expect(rows.at(4).find('.col-sm-3').text()).toBe('Intended date this AGM will be held') + expect(rows.at(4).find('.col-sm-9').findComponent(DatePicker).exists()).toBe(true) + + wrapper.destroy() + }) +}) diff --git a/tests/unit/NotEligibleExtensionDialog.spec.ts b/tests/unit/NotEligibleExtensionDialog.spec.ts new file mode 100644 index 000000000..22210389f --- /dev/null +++ b/tests/unit/NotEligibleExtensionDialog.spec.ts @@ -0,0 +1,41 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import { mount } from '@vue/test-utils' +import { createPinia, setActivePinia } from 'pinia' +import { useRootStore } from '@/stores' +import { NotEligibleExtensionDialog } from '@/components/dialogs' +import { ContactInfo } from '@/components/common' + +Vue.use(Vuetify) + +const vuetify = new Vuetify({}) +setActivePinia(createPinia()) +const rootStore = useRootStore() + +describe('NotEligibleExtensionDialog', () => { + it('displays everything for normal users', () => { + // init store + rootStore.keycloakRoles = [''] + + const wrapper = mount(NotEligibleExtensionDialog, { propsData: { dialog: true }, vuetify }) + + expect(wrapper.find('#dialog-title').text()).toBe('Not Eligible for Extension') + expect(wrapper.find('.v-card__text').text()).toContain('Based on the information provided') + expect(wrapper.find('.v-card__text').text()).toContain('If you have any questions about') + expect(wrapper.findComponent(ContactInfo).exists()).toBe(true) + expect(wrapper.find('#dialog-ok-btn').text()).toBe('OK') + + wrapper.destroy() + }) + + it('does not display contact info for staff users', () => { + // init store + rootStore.keycloakRoles = ['staff'] + + const wrapper = mount(NotEligibleExtensionDialog, { propsData: { dialog: true }, vuetify }) + + expect(wrapper.findComponent(ContactInfo).exists()).toBe(false) + + wrapper.destroy() + }) +}) From c47cce4f94699aab4cec63c5cacd7c8ad2a634fa Mon Sep 17 00:00:00 2001 From: leodube-aot <122323255+leodube-aot@users.noreply.github.com> Date: Tue, 7 Nov 2023 16:22:49 -0800 Subject: [PATCH 15/55] 18272 Add unit test for AboutTheBusiness component (#570) * Add unit test for AboutTheBusiness * Update AboutTheBusiness tests * Incorporate Sev's test for AboutTheBusiness * Check long string date in test --- .../AgmExtension/AboutTheBusiness.vue | 2 ++ tests/unit/AboutTheBusiness.spec.ts | 30 ++++++++++++++----- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/components/AgmExtension/AboutTheBusiness.vue b/src/components/AgmExtension/AboutTheBusiness.vue index bf3363e9c..e9121d4fc 100644 --- a/src/components/AgmExtension/AboutTheBusiness.vue +++ b/src/components/AgmExtension/AboutTheBusiness.vue @@ -20,6 +20,7 @@ Business in Good Standing @@ -40,6 +41,7 @@ Date of Incorporation diff --git a/tests/unit/AboutTheBusiness.spec.ts b/tests/unit/AboutTheBusiness.spec.ts index 3c0ed45ab..21a9f31fe 100644 --- a/tests/unit/AboutTheBusiness.spec.ts +++ b/tests/unit/AboutTheBusiness.spec.ts @@ -2,33 +2,49 @@ import Vue from 'vue' import Vuetify from 'vuetify' import { mount } from '@vue/test-utils' import AboutTheBusiness from '@/components/AgmExtension/AboutTheBusiness.vue' +import { AgmExtEvalIF, EmptyAgmExtEval } from '@/interfaces' +import { DateUtilities } from '@/services' Vue.use(Vuetify) const vuetify = new Vuetify({}) -describe('AboutTheBusiness', () => { - it('displays normally', () => { +describe('About The Business component', () => { + it('handles empty data', () => { + const wrapper = mount(AboutTheBusiness, { + propsData: { data: EmptyAgmExtEval }, + vuetify + }) + + expect(wrapper.find('#entity-in-good-standing').text()).toBe('No') + expect(wrapper.find('#entity-date-of-incorporation').text()).toBe('') + + wrapper.destroy() + }) + + it('displays business info properly', () => { const wrapper = mount(AboutTheBusiness, { propsData: { data: { + ...EmptyAgmExtEval, isGoodStanding: true, incorporationDate: new Date('2023-12-31T08:00:00.000Z') - } + } as AgmExtEvalIF }, vuetify }) + // verify component displays properly expect(wrapper.find('.v-card').attributes('id')).toBe('about-the-business') expect(wrapper.find('header i').attributes('class')).toContain('mdi-domain') expect(wrapper.find('header h2').text()).toBe('About the Business') const rows = wrapper.findAll('.content > .row') - expect(rows.at(0).find('.col-sm-3').text()).toBe('Business in Good Standing') - expect(rows.at(0).find('.col-sm-9').text()).toBe('Yes') - expect(rows.at(1).find('.col-sm-3').text()).toBe('Date of Incorporation') - expect(rows.at(1).find('.col-sm-9').text()).toBe('December 31, 2023') + + // verify displayed text + expect(wrapper.find('#entity-in-good-standing').text()).toBe('Yes') + expect(wrapper.find('#entity-date-of-incorporation').text()).toBe('December 31, 2023') wrapper.destroy() }) From 3fee14a53fb0aa2e0673bf7dbe8ddd7863e91006 Mon Sep 17 00:00:00 2001 From: jamespaologarcia Date: Wed, 8 Nov 2023 08:59:00 -0800 Subject: [PATCH 16/55] 17917 Added placeholder for null values (#572) Updated Version --- src/components/common/NameRequestInfo.vue | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/common/NameRequestInfo.vue b/src/components/common/NameRequestInfo.vue index 7c3483d06..a8185c212 100644 --- a/src/components/common/NameRequestInfo.vue +++ b/src/components/common/NameRequestInfo.vue @@ -167,11 +167,9 @@ export default class NameRequestInfo extends Mixins(DateMixin, EnumMixin, NameRe /** The applicant's name. */ get applicantName (): string { let name: string - if (this.applicant?.middleName) { - name = `${this.applicant?.firstName} ${this.applicant?.middleName} ${this.applicant?.lastName}` - } else { - name = `${this.applicant?.firstName} ${this.applicant?.lastName}` - } + const firstName = this.applicant?.firstName ? this.applicant.firstName + ' ' : '' + const middleName = this.applicant?.middleName ? this.applicant.middleName + ' ' : '' + name = `${firstName}${middleName}${this.applicant?.lastName}` return name } From 2cb369dd69d7d88c45cf565ab45fb4d63e555476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9verin=20Beauvais?= Date: Wed, 8 Nov 2023 16:32:43 -0800 Subject: [PATCH 17/55] 18024 Incremental AGM Extension changes (#571) * - app version = 7.0.6 - updated ExtensionRequest validation styling - misc small fixes - updated unit tests - added isEligible to interface - show dialog if not eligible - expanded unit tests * wip --- .../AgmExtension/ExtensionRequest.vue | 20 ++- src/interfaces/agm-ext-eval-interface.ts | 4 +- src/views/AgmExtension.vue | 15 +- tests/unit/AgmExtension.spec.ts | 157 ++++++++++++++---- tests/unit/AgmLocationChg.spec.ts | 82 ++++----- 5 files changed, 185 insertions(+), 93 deletions(-) diff --git a/src/components/AgmExtension/ExtensionRequest.vue b/src/components/AgmExtension/ExtensionRequest.vue index f05539f4a..b8c1abd9f 100644 --- a/src/components/AgmExtension/ExtensionRequest.vue +++ b/src/components/AgmExtension/ExtensionRequest.vue @@ -9,7 +9,10 @@