From 640535ee189fdf5449a87c70c956a9059864a9cb Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:11:54 -0700 Subject: [PATCH 1/6] Moved enrichment of server features to server side (#181) (#194) * moved enrichment of server features to server side * simplified code --------- (cherry picked from commit 1fc2abe548017647b2e624ab9f4854e96e3d724d) Signed-off-by: Amardeepsingh Siglani Signed-off-by: github-actions[bot] Co-authored-by: github-actions[bot] --- public/services/NotificationService.ts | 19 ++----------------- server/routes/configRoutes.ts | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/public/services/NotificationService.ts b/public/services/NotificationService.ts index f9e166da..5acd1dba 100644 --- a/public/services/NotificationService.ts +++ b/public/services/NotificationService.ts @@ -4,7 +4,6 @@ */ import { SortDirection } from '@elastic/eui'; -import _ from 'lodash'; import { HttpFetchQuery, HttpSetup } from '../../../../src/core/public'; import { NODE_API } from '../../common'; import { @@ -14,7 +13,6 @@ import { SenderType, SESSenderItemType, } from '../../models/interfaces'; -import { CHANNEL_TYPE } from '../utils/constants'; import { configListToChannels, configListToRecipientGroups, @@ -215,21 +213,8 @@ export default class NotificationService { const response = await this.httpClient.get( NODE_API.GET_AVAILABLE_FEATURES ); - const config_type_list = response.allowed_config_type_list as Array< - keyof typeof CHANNEL_TYPE - >; - const channelTypes: Partial = {}; - for (let i = 0; i < config_type_list.length; i++) { - const channel = config_type_list[i]; - if (!CHANNEL_TYPE[channel]) continue; - channelTypes[channel] = CHANNEL_TYPE[channel]; - } - return { - availableChannels: channelTypes, - availableConfigTypes: config_type_list as string[], - tooltipSupport: - _.get(response, ['plugin_features', 'tooltip_support']) === 'true', - }; + + return response; } catch (error) { console.error('error fetching available features', error); return null; diff --git a/server/routes/configRoutes.ts b/server/routes/configRoutes.ts index 5942399c..8da26cf2 100644 --- a/server/routes/configRoutes.ts +++ b/server/routes/configRoutes.ts @@ -10,6 +10,8 @@ import { } from '../../../../src/core/server'; import { NODE_API } from '../../common'; import { joinRequestParams } from '../utils/helper'; +import _ from 'lodash'; +import { CHANNEL_TYPE } from '../../public/utils/constants'; export function configRoutes(router: IRouter) { router.get( @@ -210,7 +212,24 @@ export function configRoutes(router: IRouter) { const resp = await client.callAsCurrentUser( 'notifications.getServerFeatures' ); - return response.ok({ body: resp }); + const config_type_list = resp.allowed_config_type_list as Array< + keyof typeof CHANNEL_TYPE + >; + const channelTypes: Partial = {}; + + for (let channel of config_type_list) { + if (CHANNEL_TYPE[channel]) { + channelTypes[channel] = CHANNEL_TYPE[channel] + } + } + + const availableFeature = { + availableChannels: channelTypes, + availableConfigTypes: config_type_list as string[], + tooltipSupport: + _.get(response, ['plugin_features', 'tooltip_support']) === 'true', + }; + return response.ok({ body: availableFeature }); } catch (error) { return response.custom({ statusCode: error.statusCode || 500, From d1a3c8d59f989fb7326d31cba3485162846872db Mon Sep 17 00:00:00 2001 From: Riya <69919272+riysaxen-amzn@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:14:12 -0700 Subject: [PATCH 2/6] Backport/backport 165 to 2.x (#196) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bumping up the opensearch dashboards versions Signed-off-by: Riya Saxena * Add workflow to verify installation of the plugin zip and dashboards … (#165) * Add workflow to verify installation of the plugin zip and dashboards comes up healthy Signed-off-by: Derek Ho * Add loose Signed-off-by: Derek Ho --------- Signed-off-by: Derek Ho (cherry picked from commit 0405502f8f47e48ae7561c560da56b36215dbc09) --------- Signed-off-by: Riya Saxena Co-authored-by: Derek Ho --- ...t-and-build-workflow-prod-docker-linux.yml | 2 +- ...-notifications-test-and-build-workflow.yml | 4 +- .../workflows/verify-binary-installation.yml | 54 +++++++++++++++++++ opensearch_dashboards.json | 2 +- 4 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/verify-binary-installation.yml diff --git a/.github/workflows/dashboards-notifications-test-and-build-workflow-prod-docker-linux.yml b/.github/workflows/dashboards-notifications-test-and-build-workflow-prod-docker-linux.yml index 3022999d..00fca0c6 100644 --- a/.github/workflows/dashboards-notifications-test-and-build-workflow-prod-docker-linux.yml +++ b/.github/workflows/dashboards-notifications-test-and-build-workflow-prod-docker-linux.yml @@ -92,7 +92,7 @@ jobs: cd ./OpenSearch-Dashboards/ su `id -un 1000` -c "source $NVM_DIR/nvm.sh && nvm use && node -v && yarn -v && cd ./plugins/dashboards-notifications && - whoami && yarn osd bootstrap && yarn build" + whoami && yarn osd bootstrap --single-version=loose && yarn build" - name: Run unit tests uses: nick-fields/retry@v2 diff --git a/.github/workflows/dashboards-notifications-test-and-build-workflow.yml b/.github/workflows/dashboards-notifications-test-and-build-workflow.yml index 585624f7..8763a7f6 100644 --- a/.github/workflows/dashboards-notifications-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-notifications-test-and-build-workflow.yml @@ -126,8 +126,8 @@ jobs: - name: OpenSearch Dashboards Plugin Bootstrap run: | - cd OpenSearch-Dashboards/plugins/dashboards-notifications - yarn osd bootstrap + cd ./OpenSearch-Dashboards/plugins/dashboards-notifications + yarn osd bootstrap --single-version=loose - name: Build Artifact run: | diff --git a/.github/workflows/verify-binary-installation.yml b/.github/workflows/verify-binary-installation.yml new file mode 100644 index 00000000..fd5eebc9 --- /dev/null +++ b/.github/workflows/verify-binary-installation.yml @@ -0,0 +1,54 @@ +name: 'Install Dashboards with Plugin via Binary' + +on: [push, pull_request] +env: + OPENSEARCH_VERSION: '3.0.0' + CI: 1 + # avoid warnings like "tput: No value for $TERM and no -T specified" + TERM: xterm + +jobs: + verify-binary-installation: + name: Run binary installation + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + # TODO: add windows support when OSD core is stable on windows + runs-on: ${{ matrix.os }} + steps: + - name: Checkout Branch + uses: actions/checkout@v3 + + - name: Set env + run: | + opensearch_version=$(node -p "require('./opensearch_dashboards.json').opensearchDashboardsVersion") + plugin_version=$(node -p "require('./opensearch_dashboards.json').version") + echo "OPENSEARCH_VERSION=$opensearch_version" >> $GITHUB_ENV + echo "PLUGIN_VERSION=$plugin_version" >> $GITHUB_ENV + shell: bash + + - name: Run Opensearch + uses: derek-ho/start-opensearch@v2 + with: + opensearch-version: ${{ env.OPENSEARCH_VERSION }} + security-enabled: false + + - name: Run Dashboard + id: setup-dashboards + uses: derek-ho/setup-opensearch-dashboards@v1 + with: + plugin_name: dashboards-notifications + built_plugin_name: notifications-dashboards + install_zip: true + + - name: Start the binary + run: | + nohup ./bin/opensearch-dashboards & + working-directory: ${{ steps.setup-dashboards.outputs.dashboards-binary-directory }} + shell: bash + + - name: Health check + run: | + timeout 300 bash -c 'while [[ "$(curl http://localhost:5601/api/status | jq -r '.status.overall.state')" != "green" ]]; do sleep 5; done' + shell: bash diff --git a/opensearch_dashboards.json b/opensearch_dashboards.json index 2937c30d..3ce75554 100644 --- a/opensearch_dashboards.json +++ b/opensearch_dashboards.json @@ -12,4 +12,4 @@ ], "server": true, "ui": true -} \ No newline at end of file +} From 1994dbb77233470caefd46355c7cc46c9f5a8257 Mon Sep 17 00:00:00 2001 From: Riya <69919272+riysaxen-amzn@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:14:29 -0700 Subject: [PATCH 3/6] Backport/backport 177 to 2.x (#195) * bumping up the opensearch dashboards versions Signed-off-by: Riya Saxena * Add AWSHurneyt as maintainer (#177) Signed-off-by: Hailong Cui (cherry picked from commit 7ed9bacd0192a530dc4844c3315d8cbe16955ebc) --------- Signed-off-by: Riya Saxena Co-authored-by: Hailong Cui --- .github/CODEOWNERS | 3 ++- MAINTAINERS.md | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 MAINTAINERS.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ced27b55..559c2d99 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,3 @@ # This should match the owning team set up in https://github.com/orgs/opensearch-project/teams -* @opensearch-project/notifications \ No newline at end of file +* @opensearch-project/notifications +* @xluo-aws @gaobinlong @Hailong-am @SuZhou-Joe @zhichao-aws @yuye-aws @getsaurabh02 @sbcd90 @praveensameneni @amsiglan @AWSHurneyt diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 00000000..e6668723 --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,20 @@ +## Overview + +This document contains a list of maintainers in this repo. See [opensearch-project/.github/RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#maintainer-responsibilities) that explains what the role of maintainer means, what maintainers do in this and other repos, and how they should be doing it. If you're interested in contributing, and becoming a maintainer, see [CONTRIBUTING](CONTRIBUTING.md). + +## Current Maintainers +| Maintainer | GitHub ID | Affiliation | +|-----------------------|----------------------------------------------------------| ----------- | +| Saurabh Singh | [getsaurabh02](https://github.com/getsaurabh02) | Amazon | +| Subhobrata Dey | [sbcd90](https://github.com/sbcd90) | Amazon | +| Praveen Sameneni | [praveensameneni](https://github.com/praveensameneni) | Amazon | +| Amardeepsingh Siglani | [amsiglan](https://github.com/amsiglan) | Amazon | +| Xuesong Luo | [xluo-aws](https://github.com/xluo-aws) | Amazon | +| Hailong Cui | [Hailong-am](https://github.com/Hailong-am) | Amazon | +| Binlong Gao | [gaobinlong](https://github.com/gaobinlong) | Amazon | +| Zhou Su | [SuZhou-Joe](https://github.com/SuZhou-Joe) | Amazon | +| Yuye Zhu | [yuye-aws](https://github.com/yuye-aws) | Amazon | +| Zhichao Geng | [zhichao-aws](https://github.com/zhichao-aws) | Amazon | +| Thomas Hurney | [AWSHurneyt](https://github.com/AWSHurneyt) | Amazon | + +[This document](https://github.com/opensearch-project/.github/blob/main/MAINTAINERS.md) explains what maintainers do in this repo, and how they should be doing it. If you're interested in contributing, see [CONTRIBUTING](CONTRIBUTING.md). From dada2bfdf41512ee21cf70a52e3c1ece7d53a4b5 Mon Sep 17 00:00:00 2001 From: Riya <69919272+riysaxen-amzn@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:44:10 -0700 Subject: [PATCH 4/6] [Backport 2.x] Fix broken osd functional test repo (#189) (#190) * Fix broken osd functional test repo (#189) * moved constants to common folder Signed-off-by: Riya Saxena * fix broken osd functionaltest Repo Signed-off-by: Riya Saxena * fixing the UT's Signed-off-by: Riya Saxena * fixing the UT's Signed-off-by: Riya Saxena --------- Signed-off-by: Riya Saxena Signed-off-by: Riya <69919272+riysaxen-amzn@users.noreply.github.com> (cherry picked from commit e59708146ddb77b350a9b79a465af3bd5725892b) * fix merge conflict Signed-off-by: Riya Saxena * revert configRoutes changes Signed-off-by: Riya Saxena * revert configRoutes changes Signed-off-by: Riya Saxena --------- Signed-off-by: Riya Saxena Signed-off-by: Riya <69919272+riysaxen-amzn@users.noreply.github.com> Co-authored-by: Hailong Cui --- common/constants.ts | 23 +++++++++++++++++ models/interfaces.ts | 4 ++- public/pages/Channels/Channels.tsx | 4 ++- .../Channels/components/ChannelControls.tsx | 2 +- .../details/ChannelSettingsDetails.tsx | 2 +- public/pages/CreateChannel/CreateChannel.tsx | 3 +-- public/pages/Main/Main.tsx | 5 ++-- public/services/NotificationService.ts | 1 + public/utils/constants.ts | 25 ------------------- server/routes/configRoutes.ts | 3 ++- test/mocks/serviceMock.ts | 2 +- 11 files changed, 39 insertions(+), 35 deletions(-) create mode 100644 common/constants.ts diff --git a/common/constants.ts b/common/constants.ts new file mode 100644 index 00000000..f9bb6cd4 --- /dev/null +++ b/common/constants.ts @@ -0,0 +1,23 @@ +export const BACKEND_CHANNEL_TYPE = Object.freeze({ + SLACK: 'slack', + EMAIL: 'email', + CHIME: 'chime', + MICROSOFT_TEAMS: 'microsoft_teams', + CUSTOM_WEBHOOK: 'webhook', + SNS: 'sns', +}); +export const CHANNEL_TYPE = Object.freeze({ + [BACKEND_CHANNEL_TYPE.SLACK]: 'Slack', + [BACKEND_CHANNEL_TYPE.EMAIL]: 'Email', + [BACKEND_CHANNEL_TYPE.CHIME]: 'Chime', + [BACKEND_CHANNEL_TYPE.MICROSOFT_TEAMS]: 'Microsoft Teams', + [BACKEND_CHANNEL_TYPE.CUSTOM_WEBHOOK]: 'Custom webhook', + [BACKEND_CHANNEL_TYPE.SNS]: 'Amazon SNS', +}) as { + slack: string; + email: string; + chime: string; + microsoft_teams: string; + webhook: string; + sns: string; +}; diff --git a/models/interfaces.ts b/models/interfaces.ts index dbe196f1..0860f46e 100644 --- a/models/interfaces.ts +++ b/models/interfaces.ts @@ -6,9 +6,11 @@ import { Direction } from '@elastic/eui'; import { WebhookMethodType } from '../public/pages/Channels/types'; import { - CHANNEL_TYPE, ENCRYPTION_TYPE, } from '../public/utils/constants'; +import { + CHANNEL_TYPE, +} from '../common/constants'; export interface ChannelStatus { config_id: string; diff --git a/public/pages/Channels/Channels.tsx b/public/pages/Channels/Channels.tsx index 1e3ca6bd..ff679122 100644 --- a/public/pages/Channels/Channels.tsx +++ b/public/pages/Channels/Channels.tsx @@ -28,9 +28,11 @@ import { CoreServicesContext } from '../../components/coreServices'; import { NotificationService } from '../../services'; import { BREADCRUMBS, - CHANNEL_TYPE, ROUTES, } from '../../utils/constants'; +import { + CHANNEL_TYPE, +} from '../../../common/constants'; import { getErrorMessage } from '../../utils/helpers'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../Notifications/utils/constants'; import { ChannelActions } from './components/ChannelActions'; diff --git a/public/pages/Channels/components/ChannelControls.tsx b/public/pages/Channels/components/ChannelControls.tsx index 7537ca55..1405a3a6 100644 --- a/public/pages/Channels/components/ChannelControls.tsx +++ b/public/pages/Channels/components/ChannelControls.tsx @@ -16,7 +16,7 @@ import _ from 'lodash'; import React, { useContext, useEffect, useState } from 'react'; import { CHANNEL_TYPE, -} from '../../../../public/utils/constants'; +} from '../../../../common/constants'; import { MainContext } from '../../Main/Main'; import { ChannelFiltersType } from '../types'; diff --git a/public/pages/Channels/components/details/ChannelSettingsDetails.tsx b/public/pages/Channels/components/details/ChannelSettingsDetails.tsx index 2444b116..69df4f57 100644 --- a/public/pages/Channels/components/details/ChannelSettingsDetails.tsx +++ b/public/pages/Channels/components/details/ChannelSettingsDetails.tsx @@ -7,7 +7,7 @@ import { EuiLink } from '@elastic/eui'; import React from 'react'; import { ChannelItemType } from '../../../../../models/interfaces'; import { ModalConsumer } from '../../../../components/Modal'; -import { BACKEND_CHANNEL_TYPE, CHANNEL_TYPE } from '../../../../utils/constants'; +import { BACKEND_CHANNEL_TYPE, CHANNEL_TYPE } from '../../../../../common/constants'; import { deconstructEmailObject, deconstructWebhookObject, diff --git a/public/pages/CreateChannel/CreateChannel.tsx b/public/pages/CreateChannel/CreateChannel.tsx index e2686c89..69595a8d 100644 --- a/public/pages/CreateChannel/CreateChannel.tsx +++ b/public/pages/CreateChannel/CreateChannel.tsx @@ -25,12 +25,11 @@ import { ContentPanel } from '../../components/ContentPanel'; import { CoreServicesContext } from '../../components/coreServices'; import { ServicesContext } from '../../services'; import { - BACKEND_CHANNEL_TYPE, BREADCRUMBS, - CHANNEL_TYPE, CUSTOM_WEBHOOK_ENDPOINT_TYPE, ROUTES, } from '../../utils/constants'; +import {BACKEND_CHANNEL_TYPE,CHANNEL_TYPE } from '../../../common/constants' import { getErrorMessage } from '../../utils/helpers'; import { HeaderItemType, WebhookHttpType, WebhookMethodType } from '../Channels/types'; import { MainContext } from '../Main/Main'; diff --git a/public/pages/Main/Main.tsx b/public/pages/Main/Main.tsx index e6a8b7cd..6e9b4925 100644 --- a/public/pages/Main/Main.tsx +++ b/public/pages/Main/Main.tsx @@ -11,7 +11,8 @@ import { CoreServicesConsumer } from '../../components/coreServices'; import { ModalProvider, ModalRoot } from '../../components/Modal'; import { BrowserServices } from '../../models/interfaces'; import { ServicesConsumer, ServicesContext } from '../../services/services'; -import { CHANNEL_TYPE, ROUTES } from '../../utils/constants'; +import { ROUTES } from '../../utils/constants'; +import { CHANNEL_TYPE } from '../../../common/constants'; import { Channels } from '../Channels/Channels'; import { ChannelDetails } from '../Channels/components/details/ChannelDetails'; import { CreateChannel } from '../CreateChannel/CreateChannel'; @@ -78,7 +79,7 @@ export default class Main extends Component { 'ses_account', 'email_group', ], - tooltipSupport: serverFeatures.tooltipSupport, + tooltipSupport: false, }); } } diff --git a/public/services/NotificationService.ts b/public/services/NotificationService.ts index 5acd1dba..02a679ea 100644 --- a/public/services/NotificationService.ts +++ b/public/services/NotificationService.ts @@ -13,6 +13,7 @@ import { SenderType, SESSenderItemType, } from '../../models/interfaces'; +import { CHANNEL_TYPE } from '../../common/constants'; import { configListToChannels, configListToRecipientGroups, diff --git a/public/utils/constants.ts b/public/utils/constants.ts index 81691978..c130f423 100644 --- a/public/utils/constants.ts +++ b/public/utils/constants.ts @@ -48,31 +48,6 @@ export const BREADCRUMBS = Object.freeze({ EDIT_RECIPIENT_GROUP: { text: 'Edit recipient group' }, }); -export const BACKEND_CHANNEL_TYPE = Object.freeze({ - SLACK: 'slack', - EMAIL: 'email', - CHIME: 'chime', - MICROSOFT_TEAMS: 'microsoft_teams', - CUSTOM_WEBHOOK: 'webhook', - SNS: 'sns', -}); - -export const CHANNEL_TYPE = Object.freeze({ - [BACKEND_CHANNEL_TYPE.SLACK]: 'Slack', - [BACKEND_CHANNEL_TYPE.EMAIL]: 'Email', - [BACKEND_CHANNEL_TYPE.CHIME]: 'Chime', - [BACKEND_CHANNEL_TYPE.MICROSOFT_TEAMS]: 'Microsoft Teams', - [BACKEND_CHANNEL_TYPE.CUSTOM_WEBHOOK]: 'Custom webhook', - [BACKEND_CHANNEL_TYPE.SNS]: 'Amazon SNS', -}) as { - slack: string; - email: string; - chime: string; - microsoft_teams: string; - webhook: string; - sns: string; -}; - export const ENCRYPTION_TYPE = Object.freeze({ ssl: 'SSL/TLS', start_tls: 'STARTTLS', diff --git a/server/routes/configRoutes.ts b/server/routes/configRoutes.ts index 8da26cf2..bbc7653c 100644 --- a/server/routes/configRoutes.ts +++ b/server/routes/configRoutes.ts @@ -11,7 +11,8 @@ import { import { NODE_API } from '../../common'; import { joinRequestParams } from '../utils/helper'; import _ from 'lodash'; -import { CHANNEL_TYPE } from '../../public/utils/constants'; +import { CHANNEL_TYPE } from '../../common/constants'; + export function configRoutes(router: IRouter) { router.get( diff --git a/test/mocks/serviceMock.ts b/test/mocks/serviceMock.ts index 24972dc1..21b937e6 100644 --- a/test/mocks/serviceMock.ts +++ b/test/mocks/serviceMock.ts @@ -6,7 +6,7 @@ import { CoreStart } from 'opensearch-dashboards/public'; import { MainState } from '../../public/pages/Main/Main'; import { NotificationService } from '../../public/services'; -import { CHANNEL_TYPE } from '../../public/utils/constants'; +import { CHANNEL_TYPE } from '../../common/constants'; import httpClientMock from './httpClientMock'; const coreServicesMock = ({ From 0954519924eaeb4910275baa80d193fde50be3ea Mon Sep 17 00:00:00 2001 From: Riya <69919272+riysaxen-amzn@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:14:05 -0700 Subject: [PATCH 5/6] Backport/backport 186 to 2.x (#197) * bumping up the opensearch dashboards versions Signed-off-by: Riya Saxena * manual backport MDS support Signed-off-by: Riya Saxena * fixed email tests due to a merge conflict in backport Signed-off-by: Riya Saxena * fixed email tests due to a merge conflict in backport Signed-off-by: Riya Saxena --------- Signed-off-by: Riya Saxena Signed-off-by: Riya <69919272+riysaxen-amzn@users.noreply.github.com> --- common/MDSEnabledClientService.ts | 15 + opensearch_dashboards.json | 4 +- package.json | 2 +- public/application.tsx | 21 +- .../MDSEnabledComponent.tsx | 34 + public/pages/Channels/Channels.tsx | 27 +- .../__tests__/DetailsListModal.test.tsx | 2 - .../__tests__/DetailsTableModal.test.tsx | 3 - .../DetailsListModal.test.tsx.snap | 24 - .../DetailsTableModal.test.tsx.snap | 48 - public/pages/CreateChannel/CreateChannel.tsx | 1 + public/pages/Emails/EmailGroups.tsx | 8 +- public/pages/Emails/EmailSenders.tsx | 11 +- .../Emails/__tests__/EmailGroups.test.tsx | 7 +- .../Emails/__tests__/EmailSenders.test.tsx | 64 +- .../__tests__/RecipientGroupsTable.test.tsx | 2 +- .../__snapshots__/EmailSenders.test.tsx.snap | 10 +- .../tables/RecipientGroupsTable.tsx | 7 +- .../components/tables/SESSendersTable.tsx | 8 +- .../Emails/components/tables/SendersTable.tsx | 7 +- public/pages/Main/Main.tsx | 290 ++++- public/pages/Main/__tests__/Main.test.tsx | 10 +- public/plugin.ts | 5 +- public/services/DataSourceMenuContext.ts | 17 + public/services/NotificationService.ts | 92 +- public/types.ts | 4 + server/plugin.ts | 15 +- server/routes/configRoutes.ts | 182 +-- server/routes/eventRoutes.ts | 38 +- server/routes/index.ts | 6 +- test/mocks/serviceMock.ts | 13 +- yarn.lock | 1083 ++++++++++------- 32 files changed, 1304 insertions(+), 756 deletions(-) create mode 100644 common/MDSEnabledClientService.ts create mode 100644 public/components/MDSEnabledComponent/MDSEnabledComponent.tsx create mode 100644 public/services/DataSourceMenuContext.ts diff --git a/common/MDSEnabledClientService.ts b/common/MDSEnabledClientService.ts new file mode 100644 index 00000000..9806f24f --- /dev/null +++ b/common/MDSEnabledClientService.ts @@ -0,0 +1,15 @@ + +export class MDSEnabledClientService { + static getClient(request, context, dataSourceEnabled) { + const { dataSourceId = "" } = (request.query || {}) as { dataSourceId?: string }; + if (dataSourceEnabled && dataSourceId && dataSourceId.trim().length != 0) { + return context.dataSource.opensearch.legacy.getClient(dataSourceId.toString()).callAPI; + } else { + // fall back to default local cluster + return context.notificationsContext.notificationsClient.asScoped( + request, + ).callAsCurrentUser; + } + } +} + diff --git a/opensearch_dashboards.json b/opensearch_dashboards.json index 3ce75554..7f36666f 100644 --- a/opensearch_dashboards.json +++ b/opensearch_dashboards.json @@ -8,7 +8,9 @@ ], "optionalPlugins": [ "share", - "managementOverview" + "managementOverview", + "dataSource", + "dataSourceManagement" ], "server": true, "ui": true diff --git a/package.json b/package.json index 1d95959c..532926db 100644 --- a/package.json +++ b/package.json @@ -34,4 +34,4 @@ "tough-cookie": "^4.1.3", "@cypress/request": "^3.0.0" } -} \ No newline at end of file +} diff --git a/public/application.tsx b/public/application.tsx index 7ce2fc75..5f005891 100644 --- a/public/application.tsx +++ b/public/application.tsx @@ -11,21 +11,28 @@ import { CoreServicesContext } from './components/coreServices'; import Main from './pages/Main'; import { NotificationService } from './services'; import { ServicesContext } from './services/services'; +import { DataSourceManagementPluginSetup } from '../../../src/plugins/data_source_management/public'; +import { AppPluginStartDependencies } from "./types"; -export const renderApp = (coreStart: CoreStart, params: AppMountParameters) => { - const http = coreStart.http; - const notificationService = new NotificationService(http); - const services = { notificationService }; +export const renderApp = ( + coreStart: CoreStart, + params: AppMountParameters, + dataSourceManagement: DataSourceManagementPluginSetup, + pluginStartDependencies: AppPluginStartDependencies, +) => { ReactDOM.render( ( - -
+
- )} /> , diff --git a/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx b/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx new file mode 100644 index 00000000..75d0b9a7 --- /dev/null +++ b/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx @@ -0,0 +1,34 @@ +import React, { useContext, useEffect } from "react"; +import { DataSourceMenuContext, DataSourceMenuProperties } from "../../services/DataSourceMenuContext"; +import { useHistory } from "react-router"; +import queryString from "query-string"; +import { MainContext } from '../../pages/Main/Main'; + +export default class MDSEnabledComponent< + Props extends DataSourceMenuProperties, + State extends DataSourceMenuProperties +> extends React.Component { + constructor(props: Props) { + super(props); + this.state = { + dataSourceId: props.dataSourceId, + multiDataSourceEnabled: props.multiDataSourceEnabled, + } as State; + } +} + +export function isDataSourceChanged(prevProps, currentProps) { + if ( + prevProps.notificationService?.multiDataSourceEnabled && + currentProps.notificationService?.multiDataSourceEnabled + ) { + const prevDataSourceId = prevProps.notificationService.dataSourceId; + const currDataSourceId = currentProps.notificationService.dataSourceId; + if (!_.isEqual(prevDataSourceId, currDataSourceId)) { + return true; + } + } + return false; +} + + diff --git a/public/pages/Channels/Channels.tsx b/public/pages/Channels/Channels.tsx index ff679122..df6afc58 100644 --- a/public/pages/Channels/Channels.tsx +++ b/public/pages/Channels/Channels.tsx @@ -17,7 +17,7 @@ import { import { Criteria } from '@elastic/eui/src/components/basic_table/basic_table'; import { Pagination } from '@elastic/eui/src/components/basic_table/pagination_bar'; import _ from 'lodash'; -import React, { Component } from 'react'; +import React, { Component, useContext } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { ChannelItemType, TableState } from '../../../models/interfaces'; import { @@ -38,23 +38,24 @@ import { DEFAULT_PAGE_SIZE_OPTIONS } from '../Notifications/utils/constants'; import { ChannelActions } from './components/ChannelActions'; import { ChannelControls } from './components/ChannelControls'; import { ChannelFiltersType } from './types'; +import { DataSourceMenuProperties } from '../../services/DataSourceMenuContext'; +import MDSEnabledComponent, { isDataSourceChanged } from '../../components/MDSEnabledComponent/MDSEnabledComponent'; -interface ChannelsProps extends RouteComponentProps { +interface ChannelsProps extends RouteComponentProps, DataSourceMenuProperties { notificationService: NotificationService; } -interface ChannelsState extends TableState { +interface ChannelsState extends TableState, DataSourceMenuProperties { filters: ChannelFiltersType; } -export class Channels extends Component { +export class Channels extends MDSEnabledComponent { static contextType = CoreServicesContext; columns: EuiTableFieldDataColumnType[]; constructor(props: ChannelsProps) { super(props); - - this.state = { + const state: ChannelsState = { total: 0, from: 0, size: 10, @@ -67,6 +68,8 @@ export class Channels extends Component { loading: true, }; + this.state = state; + this.columns = [ { field: 'name', @@ -118,14 +121,18 @@ export class Channels extends Component { } async componentDidUpdate(prevProps: ChannelsProps, prevState: ChannelsState) { - const prevQuery = Channels.getQueryObjectFromState(prevState); - const currQuery = Channels.getQueryObjectFromState(this.state); + const prevQuery = this.getQueryObjectFromState(prevState); + const currQuery = this.getQueryObjectFromState(this.state); + if (!_.isEqual(prevQuery, currQuery)) { await this.refresh(); } + if (isDataSourceChanged(this.props, prevProps)) { + await this.refresh(); + } } - static getQueryObjectFromState(state: ChannelsState) { + getQueryObjectFromState(state: ChannelsState) { const config_type = _.isEmpty(state.filters.type) ? Object.keys(CHANNEL_TYPE) // by default get all channels but not email senders/groups : state.filters.type; @@ -145,7 +152,7 @@ export class Channels extends Component { async refresh() { this.setState({ loading: true }); try { - const queryObject = Channels.getQueryObjectFromState(this.state); + const queryObject = this.getQueryObjectFromState(this.state); const channels = await this.props.notificationService.getChannels( queryObject ); diff --git a/public/pages/Channels/__tests__/DetailsListModal.test.tsx b/public/pages/Channels/__tests__/DetailsListModal.test.tsx index 0e97ffb5..b61bef73 100644 --- a/public/pages/Channels/__tests__/DetailsListModal.test.tsx +++ b/public/pages/Channels/__tests__/DetailsListModal.test.tsx @@ -7,7 +7,6 @@ import { render } from '@testing-library/react'; import { configure, mount } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; import React from 'react'; -import { notificationServiceMock } from '../../../../test/mocks/serviceMock'; import { DetailsListModal } from '../components/modals/DetailsListModal'; describe(' spec', () => { @@ -31,7 +30,6 @@ describe(' spec', () => { title="Email addresses" items={items} onClose={onClose} - services={notificationServiceMock} /> ); expect(wrap).toMatchSnapshot(); diff --git a/public/pages/Channels/__tests__/DetailsTableModal.test.tsx b/public/pages/Channels/__tests__/DetailsTableModal.test.tsx index 5a455a10..5ab55d0c 100644 --- a/public/pages/Channels/__tests__/DetailsTableModal.test.tsx +++ b/public/pages/Channels/__tests__/DetailsTableModal.test.tsx @@ -6,7 +6,6 @@ import { configure, mount } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; import React from 'react'; -import { notificationServiceMock } from '../../../../test/mocks/serviceMock'; import { DetailsTableModal } from '../components/modals/DetailsTableModal'; describe(' spec', () => { @@ -24,7 +23,6 @@ describe(' spec', () => { isParameters={true} items={items} onClose={onClose} - services={notificationServiceMock} /> ); expect(wrap).toMatchSnapshot(); @@ -42,7 +40,6 @@ describe(' spec', () => { isParameters={false} items={items} onClose={onClose} - services={notificationServiceMock} /> ); expect(wrap).toMatchSnapshot(); diff --git a/public/pages/Channels/__tests__/__snapshots__/DetailsListModal.test.tsx.snap b/public/pages/Channels/__tests__/__snapshots__/DetailsListModal.test.tsx.snap index 421ad374..902a09ac 100644 --- a/public/pages/Channels/__tests__/__snapshots__/DetailsListModal.test.tsx.snap +++ b/public/pages/Channels/__tests__/__snapshots__/DetailsListModal.test.tsx.snap @@ -16,30 +16,6 @@ exports[` spec renders the component 1`] = ` ] } onClose={[MockFunction]} - services={ - Object { - "notificationService": NotificationService { - "createConfig": [Function], - "deleteConfigs": [Function], - "getChannel": [Function], - "getChannels": [Function], - "getConfig": [Function], - "getConfigs": [Function], - "getEmailConfigDetails": [Function], - "getNotification": [Function], - "getRecipientGroup": [Function], - "getRecipientGroups": [Function], - "getSESSender": [Function], - "getSESSenders": [Function], - "getSender": [Function], - "getSenders": [Function], - "getServerFeatures": [Function], - "httpClient": [MockFunction], - "sendTestMessage": [Function], - "updateConfig": [Function], - }, - } - } title="Email addresses" > diff --git a/public/pages/Channels/__tests__/__snapshots__/DetailsTableModal.test.tsx.snap b/public/pages/Channels/__tests__/__snapshots__/DetailsTableModal.test.tsx.snap index fe53372f..e5773bb0 100644 --- a/public/pages/Channels/__tests__/__snapshots__/DetailsTableModal.test.tsx.snap +++ b/public/pages/Channels/__tests__/__snapshots__/DetailsTableModal.test.tsx.snap @@ -17,30 +17,6 @@ exports[` spec renders headers 1`] = ` ] } onClose={[MockFunction]} - services={ - Object { - "notificationService": NotificationService { - "createConfig": [Function], - "deleteConfigs": [Function], - "getChannel": [Function], - "getChannels": [Function], - "getConfig": [Function], - "getConfigs": [Function], - "getEmailConfigDetails": [Function], - "getNotification": [Function], - "getRecipientGroup": [Function], - "getRecipientGroups": [Function], - "getSESSender": [Function], - "getSESSenders": [Function], - "getSender": [Function], - "getSenders": [Function], - "getServerFeatures": [Function], - "httpClient": [MockFunction], - "sendTestMessage": [Function], - "updateConfig": [Function], - }, - } - } > spec renders parameters 1`] = ` ] } onClose={[MockFunction]} - services={ - Object { - "notificationService": NotificationService { - "createConfig": [Function], - "deleteConfigs": [Function], - "getChannel": [Function], - "getChannels": [Function], - "getConfig": [Function], - "getConfigs": [Function], - "getEmailConfigDetails": [Function], - "getNotification": [Function], - "getRecipientGroup": [Function], - "getRecipientGroups": [Function], - "getSESSender": [Function], - "getSESSenders": [Function], - "getSender": [Function], - "getSenders": [Function], - "getServerFeatures": [Function], - "httpClient": [MockFunction], - "sendTestMessage": [Function], - "updateConfig": [Function], - }, - } - } > ); } + diff --git a/public/pages/Emails/EmailGroups.tsx b/public/pages/Emails/EmailGroups.tsx index 551bede3..8664e797 100644 --- a/public/pages/Emails/EmailGroups.tsx +++ b/public/pages/Emails/EmailGroups.tsx @@ -9,8 +9,12 @@ import { RouteComponentProps } from 'react-router-dom'; import { CoreServicesContext } from '../../components/coreServices'; import { BREADCRUMBS } from '../../utils/constants'; import { RecipientGroupsTable } from './components/tables/RecipientGroupsTable'; +import { MainContext } from '../Main/Main'; +import { NotificationService } from '../../services'; -interface EmailGroupsProps extends RouteComponentProps {} +interface EmailGroupsProps extends RouteComponentProps { + notificationService: NotificationService; +} export function EmailGroups(props: EmailGroupsProps) { const coreContext = useContext(CoreServicesContext)!; @@ -29,7 +33,7 @@ export function EmailGroups(props: EmailGroupsProps) { - + ); } diff --git a/public/pages/Emails/EmailSenders.tsx b/public/pages/Emails/EmailSenders.tsx index a452859d..a93803b8 100644 --- a/public/pages/Emails/EmailSenders.tsx +++ b/public/pages/Emails/EmailSenders.tsx @@ -11,13 +11,17 @@ import { BREADCRUMBS } from '../../utils/constants'; import { MainContext } from '../Main/Main'; import { SendersTable } from './components/tables/SendersTable'; import { SESSendersTable } from './components/tables/SESSendersTable'; +import { NotificationService } from '../../services'; -interface EmailSendersProps extends RouteComponentProps {} +interface EmailSendersProps extends RouteComponentProps { + notificationService: NotificationService; +} export function EmailSenders(props: EmailSendersProps) { const coreContext = useContext(CoreServicesContext)!; const mainStateContext = useContext(MainContext)!; + useEffect(() => { coreContext.chrome.setBreadcrumbs([ BREADCRUMBS.NOTIFICATIONS, @@ -31,11 +35,10 @@ export function EmailSenders(props: EmailSendersProps) {

Email senders

- {mainStateContext.availableConfigTypes.includes('smtp_account') && ( <> - + )} @@ -43,7 +46,7 @@ export function EmailSenders(props: EmailSendersProps) { {mainStateContext.availableConfigTypes.includes('ses_account') && ( <> - + )} diff --git a/public/pages/Emails/__tests__/EmailGroups.test.tsx b/public/pages/Emails/__tests__/EmailGroups.test.tsx index f6e5449e..25437456 100644 --- a/public/pages/Emails/__tests__/EmailGroups.test.tsx +++ b/public/pages/Emails/__tests__/EmailGroups.test.tsx @@ -16,12 +16,15 @@ import { EmailGroups } from '../EmailGroups'; describe(' spec', () => { it('renders the component', () => { + const routerComponentPropsMock = { + // Mock other props as needed + notificationService: notificationServiceMock, + }; + const utils = render( - - ); expect(utils.container.firstChild).toMatchSnapshot(); }); diff --git a/public/pages/Emails/__tests__/EmailSenders.test.tsx b/public/pages/Emails/__tests__/EmailSenders.test.tsx index b4f01b59..646f155d 100644 --- a/public/pages/Emails/__tests__/EmailSenders.test.tsx +++ b/public/pages/Emails/__tests__/EmailSenders.test.tsx @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { render } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import React from 'react'; import { routerComponentPropsMock } from '../../../../test/mocks/routerPropsMock'; import { @@ -17,16 +17,62 @@ import { MainContext } from '../../Main/Main'; import { EmailSenders } from '../EmailSenders'; describe(' spec', () => { - it('renders the component', () => { + it('renders the component with SMTP config type', () => { + const mainState = { ...mainStateMock, + availableConfigTypes: [ + 'slack', + 'chime', + 'microsoft_teams', + 'webhook', + 'email', + 'sns', + 'smtp_account', + 'ses_account', + 'email_group', + ], + }; + const routerComponentPropsMock = { + // Mock other props as needed + notificationService: notificationServiceMock, + }; const utils = render( - - - - - - - + + + + + ); expect(utils.container.firstChild).toMatchSnapshot(); + expect(screen.queryByText('SMTP senders')).not.toBeNull(); + expect(screen.queryByText('SES senders')).not.toBeNull(); + }); + + it('renders the component without SMTP config type', async () => { + const mainState = { ...mainStateMock, + availableConfigTypes: [ + 'slack', + 'chime', + 'microsoft_teams', + 'webhook', + 'email', + 'sns', + 'ses_account', + 'email_group', + ], + }; + const routerComponentPropsMock = { + // Mock other props as needed + notificationService: notificationServiceMock, + }; + const utils = render( + + + + + + ); + expect(utils.container.firstChild).toMatchSnapshot(); + expect(screen.queryByText('SMTP senders')).toBeNull(); + expect(screen.queryByText('SES senders')).not.toBeNull(); }); }); diff --git a/public/pages/Emails/__tests__/RecipientGroupsTable.test.tsx b/public/pages/Emails/__tests__/RecipientGroupsTable.test.tsx index a69755c0..a63f6d70 100644 --- a/public/pages/Emails/__tests__/RecipientGroupsTable.test.tsx +++ b/public/pages/Emails/__tests__/RecipientGroupsTable.test.tsx @@ -40,7 +40,7 @@ describe(' spec', () => { const utils = render( - + ); diff --git a/public/pages/Emails/__tests__/__snapshots__/EmailSenders.test.tsx.snap b/public/pages/Emails/__tests__/__snapshots__/EmailSenders.test.tsx.snap index 90fbd51e..1483fdaa 100644 --- a/public/pages/Emails/__tests__/__snapshots__/EmailSenders.test.tsx.snap +++ b/public/pages/Emails/__tests__/__snapshots__/EmailSenders.test.tsx.snap @@ -1,6 +1,14 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[` spec renders the component 1`] = ` +exports[` spec renders the component with SMTP config type 1`] = ` +

+ Email senders +

+`; + +exports[` spec renders the component without SMTP config type 1`] = `

diff --git a/public/pages/Emails/components/tables/RecipientGroupsTable.tsx b/public/pages/Emails/components/tables/RecipientGroupsTable.tsx index 36bc8081..b23b7c7c 100644 --- a/public/pages/Emails/components/tables/RecipientGroupsTable.tsx +++ b/public/pages/Emails/components/tables/RecipientGroupsTable.tsx @@ -28,15 +28,17 @@ import { ContentPanelActions, } from '../../../../components/ContentPanel'; import { ModalConsumer } from '../../../../components/Modal'; -import { ServicesContext } from '../../../../services'; +import { NotificationService, ServicesContext } from '../../../../services'; import { ROUTES } from '../../../../utils/constants'; import { getErrorMessage } from '../../../../utils/helpers'; import { DetailsListModal } from '../../../Channels/components/modals/DetailsListModal'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../../../Notifications/utils/constants'; import { DeleteRecipientGroupModal } from '../modals/DeleteRecipientGroupModal'; +import { isDataSourceChanged } from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; interface RecipientGroupsTableProps { coreContext: CoreStart; + notificationService: NotificationService; } interface RecipientGroupsTableState @@ -134,6 +136,9 @@ export class RecipientGroupsTable extends Component< if (!_.isEqual(prevQuery, currQuery)) { await this.refresh(); } + if (isDataSourceChanged(this.props, prevProps)) { + await this.refresh(); + } } static getQueryObjectFromState(state: RecipientGroupsTableState) { diff --git a/public/pages/Emails/components/tables/SESSendersTable.tsx b/public/pages/Emails/components/tables/SESSendersTable.tsx index e7a5bd9d..7500d2e4 100644 --- a/public/pages/Emails/components/tables/SESSendersTable.tsx +++ b/public/pages/Emails/components/tables/SESSendersTable.tsx @@ -27,14 +27,16 @@ import { ContentPanelActions, } from '../../../../components/ContentPanel'; import { ModalConsumer } from '../../../../components/Modal'; -import { ServicesContext } from '../../../../services'; +import { NotificationService, ServicesContext } from '../../../../services'; import { ROUTES } from '../../../../utils/constants'; import { getErrorMessage } from '../../../../utils/helpers'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../../../Notifications/utils/constants'; import { DeleteSenderModal } from '../modals/DeleteSenderModal'; +import { isDataSourceChanged } from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; interface SESSendersTableProps { coreContext: CoreStart; + notificationService: NotificationService; } interface SESSendersTableState extends TableState {} @@ -48,7 +50,6 @@ export class SESSendersTable extends Component< constructor(props: SESSendersTableProps) { super(props); - this.state = { total: 0, from: 0, @@ -104,6 +105,9 @@ export class SESSendersTable extends Component< if (!_.isEqual(prevQuery, currQuery)) { await this.refresh(); } + if (isDataSourceChanged(this.props, prevProps)) { + await this.refresh(); + } } static getQueryObjectFromState(state: SESSendersTableState) { diff --git a/public/pages/Emails/components/tables/SendersTable.tsx b/public/pages/Emails/components/tables/SendersTable.tsx index fb715645..32f38c57 100644 --- a/public/pages/Emails/components/tables/SendersTable.tsx +++ b/public/pages/Emails/components/tables/SendersTable.tsx @@ -23,7 +23,7 @@ import { ContentPanelActions, } from '../../../../components/ContentPanel'; import { ModalConsumer } from '../../../../components/Modal'; -import { ServicesContext } from '../../../../services'; +import { NotificationService, ServicesContext } from '../../../../services'; import { ENCRYPTION_TYPE, ROUTES } from '../../../../utils/constants'; import { getErrorMessage } from '../../../../utils/helpers'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../../../Notifications/utils/constants'; @@ -32,9 +32,11 @@ import { SendersTableControls, SendersTableControlsFilterType, } from './SendersTableControls'; +import { isDataSourceChanged } from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; interface SendersTableProps { coreContext: CoreStart; + notificationService: NotificationService; } interface SendersTableState extends TableState { @@ -120,6 +122,9 @@ export class SendersTable extends Component< if (!_.isEqual(prevQuery, currQuery)) { await this.refresh(); } + if (isDataSourceChanged(this.props, prevProps)) { + await this.refresh(); + } } static getQueryObjectFromState(state: SendersTableState) { diff --git a/public/pages/Main/Main.tsx b/public/pages/Main/Main.tsx index 6e9b4925..dff7c78f 100644 --- a/public/pages/Main/Main.tsx +++ b/public/pages/Main/Main.tsx @@ -4,10 +4,10 @@ */ import { EuiPage, EuiPageBody, EuiPageSideBar, EuiSideNav } from '@elastic/eui'; -import React, { Component, createContext } from 'react'; +import React, { Component, createContext, useContext } from 'react'; import { Redirect, Route, RouteComponentProps, Switch } from 'react-router-dom'; import { CoreStart } from '../../../../../src/core/public'; -import { CoreServicesConsumer } from '../../components/coreServices'; +import { CoreServicesConsumer, CoreServicesContext } from '../../components/coreServices'; import { ModalProvider, ModalRoot } from '../../components/Modal'; import { BrowserServices } from '../../models/interfaces'; import { ServicesConsumer, ServicesContext } from '../../services/services'; @@ -21,6 +21,18 @@ import { CreateSender } from '../Emails/CreateSender'; import { CreateSESSender } from '../Emails/CreateSESSender'; import { EmailGroups } from '../Emails/EmailGroups'; import { EmailSenders } from '../Emails/EmailSenders'; +import { DataSourceMenuContext, DataSourceMenuProperties } from "../../services/DataSourceMenuContext"; +import queryString from "query-string"; +import { + DataSourceManagementPluginSetup, + DataSourceSelectableConfig, + DataSourceViewConfig, +} from "../../../../../src/plugins/data_source_management/public"; +import { DataSourceOption } from "../../../../../src/plugins/data_source_management/public/components/data_source_menu/types"; +import _ from "lodash"; +import { NotificationService } from '../../services'; +import { HttpSetup } from '../../../../../src/core/public'; +import * as http from 'http'; enum Navigation { Notifications = 'Notifications', @@ -33,62 +45,152 @@ enum Pathname { Channels = '/channels', } -interface MainProps extends RouteComponentProps {} +interface MainProps extends RouteComponentProps { + setActionMenu: (menuMount: MountPoint | undefined) => void; + multiDataSourceEnabled: boolean; + dataSourceManagement: DataSourceManagementPluginSetup; +} -export interface MainState { +export interface MainState extends Pick { availableChannels: Partial; availableConfigTypes: string[]; // available backend config types tooltipSupport: boolean; // if true, IAM role for SNS is optional and helper text should be available + dataSourceReadOnly: boolean; + dataSourceLoading: boolean; + dataSourceLabel: string; } export const MainContext = createContext(null); export default class Main extends Component { static contextType = ServicesContext; - constructor(props: MainProps) { super(props); - this.state = { + const initialState = { availableChannels: CHANNEL_TYPE, availableConfigTypes: [], tooltipSupport: false, }; + + if (props.multiDataSourceEnabled) { + const { + dataSourceId = "", + dataSourceLabel = "" + } = queryString.parse(this.props.location.search) as { + dataSourceId?: string; + dataSourceLabel?: string; + }; + + this.state = { + ...initialState, + dataSourceId: dataSourceId, + dataSourceLabel: dataSourceLabel, + dataSourceReadOnly: false, + dataSourceLoading: props.multiDataSourceEnabled, + }; + } else { + this.state = initialState; + } } async componentDidMount() { - const serverFeatures = await this.context.notificationService.getServerFeatures(); + + const services = this.getServices(this.props.http) // Assuming this.context holds the value provided by ServicesContext + const serverFeatures = await services.notificationService.getServerFeatures(); + if (serverFeatures != null) { + const { availableChannels, availableConfigTypes, tooltipSupport } = serverFeatures; + const { dataSourceId = "", dataSourceLabel = "" } = this.state; + const dataSourceReadOnly = false; + const dataSourceLoading = this.props.multiDataSourceEnabled; + this.setState({ - availableChannels: serverFeatures.availableChannels, - availableConfigTypes: serverFeatures.availableConfigTypes, - tooltipSupport: serverFeatures.tooltipSupport, + dataSourceId, + dataSourceLabel, + dataSourceReadOnly, + dataSourceLoading, + availableChannels, + availableConfigTypes, + tooltipSupport }); } else { - // Feature API call failed, allow all configs to avoid UI breaking. - // User requests will still be validated by backend. + const { dataSourceId = "", dataSourceLabel = "" } = this.state; + const dataSourceReadOnly = false; + const dataSourceLoading = this.props.multiDataSourceEnabled; + const defaultConfigTypes = [ + 'slack', + 'chime', + 'microsoft_teams', + 'webhook', + 'email', + 'sns', + 'smtp_account', + 'ses_account', + 'email_group', + ]; + this.setState({ - availableChannels: CHANNEL_TYPE, - availableConfigTypes: [ - 'slack', - 'chime', - 'microsoft_teams', - 'webhook', - 'email', - 'sns', - 'smtp_account', - 'ses_account', - 'email_group', - ], - tooltipSupport: false, + dataSourceId, + dataSourceLabel, + dataSourceReadOnly, + dataSourceLoading, + availableChannels: this.props.multiDataSourceEnabled ? CHANNEL_TYPE : defaultConfigTypes, + availableConfigTypes: defaultConfigTypes, + tooltipSupport: false }); } } - render() { + onSelectedDataSources = (dataSources: DataSourceOption[]) => { + const { id = "", label = "" } = dataSources[0] || {}; + if (this.state.dataSourceId !== id || this.state.dataSourceLabel !==label) { + this.setState({ + dataSourceId: id, + dataSourceLabel: label, + }); + } + if (this.state.dataSourceLoading) { + this.setState({ + dataSourceLoading: false, + }); + } + }; + + getServices(http: HttpSetup) { const { location: { pathname }, } = this.props; + let notificationService; + if (this.props.multiDataSourceEnabled) { + notificationService = new NotificationService(http, this.state.dataSourceId, this.props.multiDataSourceEnabled); + } + else { + notificationService = new NotificationService(http); + } + const services = { + notificationService, + }; + return services; + } + render() { + const { + location: { pathname }, + } = this.props; + let DataSourceMenuSelectable, DataSourceMenuView; + let activeOption: DataSourceOption[] | undefined; + if (this.props.multiDataSourceEnabled) { + DataSourceMenuSelectable = this.props.dataSourceManagement?.ui?.getDataSourceMenu(); + DataSourceMenuView = this.props.dataSourceManagement?.ui?.getDataSourceMenu(); + activeOption = this.state.dataSourceLoading + ? undefined + : [ + { + label: this.state.dataSourceLabel, + id: this.state.dataSourceId, + }, + ]; + } const sideNav = [ { name: Navigation.Notifications, @@ -120,13 +222,98 @@ export default class Main extends Component { {(core: CoreStart | null) => core && ( - - {(services: BrowserServices | null) => - services && ( - + + + {(services: BrowserServices | null) => + services && ( + - + + {this.props.multiDataSourceEnabled && DataSourceMenuView && DataSourceMenuSelectable && ( + + ( + + )} + /> + ( + + )} + /> + + this.state.dataSourceReadOnly ? ( + + ) : ( + + ) + } + /> + + )} + {!this.state.dataSourceLoading && ( + <> + {pathname !== ROUTES.CREATE_CHANNEL && !pathname.startsWith(ROUTES.EDIT_CHANNEL) && !pathname.startsWith(ROUTES.CHANNEL_DETAILS) && @@ -169,7 +356,7 @@ export default class Main extends Component { )} @@ -177,19 +364,31 @@ export default class Main extends Component { ( - + // send dataSourceId as props or externally )} /> ( - + )} /> ( - + )} /> { ( - + )} /> { ( - + )} /> { /> - + + )} + - - ) - } - + + ) + } + + ) } diff --git a/public/pages/Main/__tests__/Main.test.tsx b/public/pages/Main/__tests__/Main.test.tsx index 3b5772aa..6991045b 100644 --- a/public/pages/Main/__tests__/Main.test.tsx +++ b/public/pages/Main/__tests__/Main.test.tsx @@ -20,6 +20,7 @@ import { import { CoreServicesContext } from '../../../components/coreServices'; import { ServicesContext } from '../../../services'; import { ROUTES } from '../../../utils/constants'; +import httpClientMock from '../../../../test/mocks/httpClientMock'; describe('
spec', () => { configure({ adapter: new Adapter() }); @@ -28,16 +29,15 @@ describe('
spec', () => { const mockProps = { location: { search: '', pathname: ROUTES.NOTIFICATIONS }, match: { params: { id: 'test' } }, + http: httpClientMock, // Add the http prop here }; const utils = render( ( - - -
)} /> - - + +
)} /> + )} /> diff --git a/public/plugin.ts b/public/plugin.ts index baf9bee2..420d2a22 100644 --- a/public/plugin.ts +++ b/public/plugin.ts @@ -17,6 +17,7 @@ import { NotificationsDashboardsSetupDeps, } from './types'; import { PLUGIN_NAME } from '../common'; +import { AppPluginStartDependencies } from './types'; export class notificationsDashboardsPlugin implements @@ -30,7 +31,7 @@ export class notificationsDashboardsPlugin public setup( core: CoreSetup, - { managementOverview }: NotificationsDashboardsSetupDeps + { managementOverview, dataSourceManagement }: NotificationsDashboardsSetupDeps, ): notificationsDashboardsPluginSetup { // Register an application into the side navigation menu core.application.register({ @@ -44,7 +45,7 @@ export class notificationsDashboardsPlugin // Get start services as specified in opensearch_dashboards.json const [coreStart, depsStart] = await core.getStartServices(); // Render the application - return renderApp(coreStart, params); + return renderApp(coreStart, params, dataSourceManagement, depsStart); }, }); diff --git a/public/services/DataSourceMenuContext.ts b/public/services/DataSourceMenuContext.ts new file mode 100644 index 00000000..3770b110 --- /dev/null +++ b/public/services/DataSourceMenuContext.ts @@ -0,0 +1,17 @@ +import { createContext } from "react"; + +export interface DataSourceMenuProperties { + dataSourceId: string; + dataSourceLabel: string; + multiDataSourceEnabled: boolean; +} + +const DataSourceMenuContext = createContext({ + dataSourceId: "", + dataSourceLabel: "", + multiDataSourceEnabled: false, +}); + +const DataSourceMenuConsumer = DataSourceMenuContext.Consumer; + +export { DataSourceMenuContext, DataSourceMenuConsumer }; diff --git a/public/services/NotificationService.ts b/public/services/NotificationService.ts index 02a679ea..aa3c317d 100644 --- a/public/services/NotificationService.ts +++ b/public/services/NotificationService.ts @@ -38,45 +38,82 @@ interface EventsResponse { export default class NotificationService { httpClient: HttpSetup; + dataSourceId?: string; + multiDataSourceEnabled?: boolean; - constructor(httpClient: HttpSetup) { + constructor(httpClient, dataSourceId?: string, multiDataSourceEnabled?: boolean) { this.httpClient = httpClient; + this.dataSourceId = dataSourceId; + this.multiDataSourceEnabled = multiDataSourceEnabled; } createConfig = async (config: any) => { - const response = await this.httpClient.post(NODE_API.CREATE_CONFIG, { - body: JSON.stringify({ config: config }), - }); + let queryObj; + if(this.multiDataSourceEnabled) { + queryObj = { + body: JSON.stringify({ config: config }), + query: { dataSourceId: this.dataSourceId }, + }; + } + else { + queryObj = { + body: JSON.stringify({ config: config }), + }; + } + const response = await this.httpClient.post(NODE_API.CREATE_CONFIG, queryObj); return response; }; updateConfig = async (id: string, config: any) => { + let queryObj; + if(this.multiDataSourceEnabled) { + queryObj = { + body: JSON.stringify({ config: config }), + query: { dataSourceId: this.dataSourceId }, + }; + } + else { + queryObj = { + body: JSON.stringify({ config: config }), + }; + } const response = await this.httpClient.put( - `${NODE_API.UPDATE_CONFIG}/${id}`, - { - body: JSON.stringify({ config }), - } + `${NODE_API.UPDATE_CONFIG}/${id}`, queryObj ); return response; }; deleteConfigs = async (ids: string[]) => { + let queryObject: any = { + config_id_list: ids, + }; + if (this.multiDataSourceEnabled) { + queryObject = { ...queryObject, dataSourceId: this.dataSourceId }; + } const response = await this.httpClient.delete(NODE_API.DELETE_CONFIGS, { - query: { - config_id_list: ids, - }, + query: queryObject, }); return response; }; - getConfigs = async (queryObject: HttpFetchQuery) => { + getConfigs = async (queryObject: any) => { + if (this.multiDataSourceEnabled) { + queryObject = { ...queryObject, dataSourceId: this.dataSourceId }; + } return this.httpClient.get(NODE_API.GET_CONFIGS, { query: queryObject, }); }; getConfig = async (id: string) => { - return this.httpClient.get(`${NODE_API.GET_CONFIG}/${id}`); + if (this.multiDataSourceEnabled) { + return this.httpClient.get(`${NODE_API.GET_CONFIG}/${id}`,{ + query: { dataSourceId: this.dataSourceId }, + }); + } + else { + return this.httpClient.get(`${NODE_API.GET_CONFIG}/${id}`); + } }; getChannels = async ( @@ -214,7 +251,6 @@ export default class NotificationService { const response = await this.httpClient.get( NODE_API.GET_AVAILABLE_FEATURES ); - return response; } catch (error) { console.error('error fetching available features', error); @@ -223,18 +259,36 @@ export default class NotificationService { }; getNotification = async (id: string) => { - const response = await this.httpClient.get( + let response; + if (this.multiDataSourceEnabled) { + response = await this.httpClient.get( + `${NODE_API.GET_EVENT}/${id}`, { + query: { dataSourceId: this.dataSourceId }, + } + ); + } + else { + response = await this.httpClient.get( `${NODE_API.GET_EVENT}/${id}` - ); + ); + } return eventToNotification(response.event_list[0]); }; sendTestMessage = async ( configId: string ) => { - const response = await this.httpClient.post( - `${NODE_API.SEND_TEST_MESSAGE}/${configId}` - ); + let response; + if (this.multiDataSourceEnabled) { + response = await this.httpClient.post( + `${NODE_API.SEND_TEST_MESSAGE}/${configId}`,{ + query: { dataSourceId: this.dataSourceId }, + }); + } + else { + response = await this.httpClient.post( + `${NODE_API.SEND_TEST_MESSAGE}/${configId}`); + } if (response.status_list[0].delivery_status.status_code != 200) { console.error(response); const error = new Error('Failed to send the test message.'); diff --git a/public/types.ts b/public/types.ts index 94dcd332..5cf3e58d 100644 --- a/public/types.ts +++ b/public/types.ts @@ -5,6 +5,8 @@ import { NavigationPublicPluginStart } from '../../../src/plugins/navigation/public'; import { ManagementOverViewPluginSetup } from "../../../src/plugins/management_overview/public"; +import { DataSourcePluginStart } from "../../../src/plugins/data_source/public/types"; +import { DataSourceManagementPluginSetup } from '../../../src/plugins/data_source_management/public'; export interface notificationsDashboardsPluginSetup {} // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -12,8 +14,10 @@ export interface notificationsDashboardsPluginStart {} export interface AppPluginStartDependencies { navigation: NavigationPublicPluginStart; + dataSource?: DataSourcePluginStart; } export interface NotificationsDashboardsSetupDeps { managementOverview?: ManagementOverViewPluginSetup; + dataSourceManagement?: DataSourceManagementPluginSetup; } diff --git a/server/plugin.ts b/server/plugin.ts index 4b968bc3..3d0a4630 100644 --- a/server/plugin.ts +++ b/server/plugin.ts @@ -13,6 +13,11 @@ import { } from "./types"; import { defineRoutes } from "./routes"; import { NotificationsPlugin } from "./clusters/notificationsPlugin"; +import { DataSourcePluginSetup } from "../../../src/plugins/data_source/server"; + +export interface NotificationsDashboardsPluginDependencies { + dataSource: DataSourcePluginSetup; +} export class notificationsDashboardsPlugin implements @@ -26,7 +31,7 @@ export class notificationsDashboardsPlugin this.logger = initializerContext.logger.get(); } - public setup(core: CoreSetup) { + public setup(core: CoreSetup, { dataSource }: NotificationsDashboardsPluginDependencies) { this.logger.debug("notificationsDashboards: Setup"); const router = core.http.createRouter(); @@ -37,6 +42,12 @@ export class notificationsDashboardsPlugin } ); + const dataSourceEnabled = !!dataSource; + + if (dataSourceEnabled) { + dataSource.registerCustomApiSchema(NotificationsPlugin); + } + core.http.registerRouteHandlerContext('notificationsContext', (context, request) => { return { logger: this.logger, @@ -45,7 +56,7 @@ export class notificationsDashboardsPlugin }); // Register server side APIs - defineRoutes(router); + defineRoutes(router, dataSourceEnabled); return {}; } diff --git a/server/routes/configRoutes.ts b/server/routes/configRoutes.ts index bbc7653c..eb3a8b71 100644 --- a/server/routes/configRoutes.ts +++ b/server/routes/configRoutes.ts @@ -12,31 +12,102 @@ import { NODE_API } from '../../common'; import { joinRequestParams } from '../utils/helper'; import _ from 'lodash'; import { CHANNEL_TYPE } from '../../common/constants'; +import { MDSEnabledClientService } from '../../common/MDSEnabledClientService'; +interface Schema { + [key: string]: any; +} + +interface GenericQueryAndBody { + body: any; + query?: any; +} + +interface UpdateQuerySchema { + body: any; + params: { configId: string }; + query?: { dataSourceId: string }; +} + +interface DeleteQuerySchema { + config_id_list: string | string[]; + dataSourceId?: string; +} + +export function configRoutes(router: IRouter, dataSourceEnabled: boolean) { + + const getConfigsQuerySchema: Schema = { + from_index: schema.number(), + max_items: schema.number(), + query: schema.maybe(schema.string()), + config_type: schema.oneOf([ + schema.arrayOf(schema.string()), + schema.string(), + ]), + is_enabled: schema.maybe(schema.boolean()), + sort_field: schema.string(), + sort_order: schema.string(), + config_id_list: schema.maybe( + schema.oneOf([schema.arrayOf(schema.string()), schema.string()]) + ), + 'smtp_account.method': schema.maybe( + schema.oneOf([schema.arrayOf(schema.string()), schema.string()]) + ), + }; + + if (dataSourceEnabled) { + getConfigsQuerySchema.dataSourceId = schema.string(); + } + + const genericBodyAndDataSourceIdQuery: GenericQueryAndBody = { + body: schema.any(), + }; + + if (dataSourceEnabled) { + genericBodyAndDataSourceIdQuery.query = schema.object({ + dataSourceId: schema.string(), + }); + } + + const genericParamsAndDataSourceIdQuery: GenericQueryAndBody = { + params: schema.any(), + }; + + if (dataSourceEnabled) { + genericParamsAndDataSourceIdQuery.query = schema.object({ + dataSourceId: schema.string(), + }); + } + + const updateQuerySchema: UpdateQuerySchema = { + body: schema.any(), + params: schema.object({ + configId: schema.string(), + }), + }; + + if (dataSourceEnabled) { + updateQuerySchema.query = schema.object({ + dataSourceId: schema.string(), + }); + } + + const deleteQuerySchema: DeleteQuerySchema = { + config_id_list: schema.oneOf([ + schema.arrayOf(schema.string()), + schema.string(), + ]), + }; + + if (dataSourceEnabled) { + deleteQuerySchema.dataSourceId = schema.string(); + } -export function configRoutes(router: IRouter) { router.get( { path: NODE_API.GET_CONFIGS, validate: { - query: schema.object({ - from_index: schema.number(), - max_items: schema.number(), - query: schema.maybe(schema.string()), - config_type: schema.oneOf([ - schema.arrayOf(schema.string()), - schema.string(), - ]), - is_enabled: schema.maybe(schema.boolean()), - sort_field: schema.string(), - sort_order: schema.string(), - config_id_list: schema.maybe( - schema.oneOf([schema.arrayOf(schema.string()), schema.string()]) - ), - 'smtp_account.method': schema.maybe( - schema.oneOf([schema.arrayOf(schema.string()), schema.string()]) - ), - }), + query: schema.object(getConfigsQuerySchema), }, }, async (context, request, response) => { @@ -46,12 +117,10 @@ export function configRoutes(router: IRouter) { request.query['smtp_account.method'] ); const query = request.query.query; - // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.getConfigs', { from_index: request.query.from_index, @@ -80,19 +149,12 @@ export function configRoutes(router: IRouter) { router.get( { path: `${NODE_API.GET_CONFIG}/{configId}`, - validate: { - params: schema.object({ - configId: schema.string(), - }), - }, + validate: genericParamsAndDataSourceIdQuery, }, async (context, request, response) => { - // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.getConfigById', { configId: request.params.configId } ); @@ -109,19 +171,14 @@ export function configRoutes(router: IRouter) { router.post( { path: NODE_API.CREATE_CONFIG, - validate: { - body: schema.any(), - }, + validate: genericBodyAndDataSourceIdQuery, }, async (context, request, response) => { - // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.createConfig', - { body: request.body } + { body: request.body }, ); return response.ok({ body: resp }); } catch (error) { @@ -133,23 +190,16 @@ export function configRoutes(router: IRouter) { } ); + router.put( { path: `${NODE_API.UPDATE_CONFIG}/{configId}`, - validate: { - body: schema.any(), - params: schema.object({ - configId: schema.string(), - }), - }, + validate: updateQuerySchema, }, async (context, request, response) => { - // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.updateConfigById', { configId: request.params.configId, @@ -170,22 +220,14 @@ export function configRoutes(router: IRouter) { { path: NODE_API.DELETE_CONFIGS, validate: { - query: schema.object({ - config_id_list: schema.oneOf([ - schema.arrayOf(schema.string()), - schema.string(), - ]), - }), - }, + query: schema.object(deleteQuerySchema) + } }, async (context, request, response) => { - // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled) const config_id_list = joinRequestParams(request.query.config_id_list); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.deleteConfigs', { config_id_list } ); @@ -205,12 +247,10 @@ export function configRoutes(router: IRouter) { validate: false, }, async (context, request, response) => { - // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); + try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.getServerFeatures' ); const config_type_list = resp.allowed_config_type_list as Array< diff --git a/server/routes/eventRoutes.ts b/server/routes/eventRoutes.ts index fd7400f2..a35125b5 100644 --- a/server/routes/eventRoutes.ts +++ b/server/routes/eventRoutes.ts @@ -9,24 +9,30 @@ import { IRouter, } from '../../../../src/core/server'; import { NODE_API } from '../../common'; +import { MDSEnabledClientService } from '../../common/MDSEnabledClientService'; -export function eventRoutes(router: IRouter) { +export function eventRoutes(router: IRouter, dataSourceEnabled: boolean) { + let genericParamsAndDataSourceIdQuery: { params: any; query?: any } = { + params: schema.any(), + }; + if (dataSourceEnabled) { + genericParamsAndDataSourceIdQuery = { + ...genericParamsAndDataSourceIdQuery, + query: schema.object({ + dataSourceId: schema.string(), + }), + }; + } router.get( { path: `${NODE_API.GET_EVENT}/{eventId}`, - validate: { - params: schema.object({ - eventId: schema.string(), - }), - }, + validate: genericParamsAndDataSourceIdQuery, }, async (context, request, response) => { // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.getEventById', { eventId: request.params.eventId } ); @@ -43,19 +49,13 @@ export function eventRoutes(router: IRouter) { router.post( { path: `${NODE_API.SEND_TEST_MESSAGE}/{configId}`, - validate: { - params: schema.object({ - configId: schema.string(), - }), - }, + validate: genericParamsAndDataSourceIdQuery, }, async (context, request, response) => { // @ts-ignore - const client: ILegacyScopedClusterClient = context.notificationsContext.notificationsClient.asScoped( - request - ); + const client = MDSEnabledClientService.getClient(request, context, dataSourceEnabled); try { - const resp = await client.callAsCurrentUser( + const resp = await client( 'notifications.sendTestMessage', { configId: request.params.configId, diff --git a/server/routes/index.ts b/server/routes/index.ts index c1db4f9f..cc0e00b1 100644 --- a/server/routes/index.ts +++ b/server/routes/index.ts @@ -7,7 +7,7 @@ import { IRouter } from '../../../../src/core/server'; import { configRoutes } from './configRoutes'; import { eventRoutes } from './eventRoutes'; -export function defineRoutes(router: IRouter) { - configRoutes(router); - eventRoutes(router); +export function defineRoutes(router: IRouter, dataSourceEnabled: boolean) { + configRoutes(router, dataSourceEnabled); + eventRoutes(router, dataSourceEnabled); } diff --git a/test/mocks/serviceMock.ts b/test/mocks/serviceMock.ts index 21b937e6..0a2ae519 100644 --- a/test/mocks/serviceMock.ts +++ b/test/mocks/serviceMock.ts @@ -25,11 +25,20 @@ const coreServicesMock = ({ }, } as unknown) as CoreStart; -const browserServicesMock = new NotificationService(httpClientMock); +const dataSourceIdMock = 'mockDataSourceId'; // Provide a mock dataSourceId +const multiDataSourceEnabledMock = true; // Provide a mock value for multiDataSourceEnabled + +const browserServicesMock = new NotificationService(httpClientMock, dataSourceIdMock, multiDataSourceEnabledMock); +const browserServicesMockWithNoDataSource = new NotificationService(httpClientMock); + const notificationServiceMock = { notificationService: browserServicesMock, }; +const notificationServiceMockWithoutMDSMock = { + notificationService: browserServicesMockWithNoDataSource, +}; + const mainStateMock: MainState = { availableChannels: CHANNEL_TYPE, availableConfigTypes: [ @@ -45,4 +54,4 @@ const mainStateMock: MainState = { tooltipSupport: true, }; -export { notificationServiceMock, coreServicesMock, mainStateMock }; +export { notificationServiceMock, coreServicesMock, mainStateMock, notificationServiceMockWithoutMDSMock}; diff --git a/yarn.lock b/yarn.lock index f1ee9014..72e0b934 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,13 +4,13 @@ "@colors/colors@1.5.0": version "1.5.0" - resolved "https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cypress/request@^2.88.10", "@cypress/request@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.0.tgz#7f58dfda087615ed4e6aab1b25fffe7630d6dd85" - integrity sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960" + integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -25,7 +25,7 @@ json-stringify-safe "~5.0.1" mime-types "~2.1.19" performance-now "^2.1.0" - qs "~6.10.3" + qs "6.10.4" safe-buffer "^5.1.2" tough-cookie "^4.1.3" tunnel-agent "^0.6.0" @@ -33,38 +33,40 @@ "@cypress/xvfb@^1.2.4": version "1.2.4" - resolved "https://registry.npmmirror.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" + resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== dependencies: debug "^3.1.0" lodash.once "^4.1.1" "@types/cheerio@*": - version "0.22.31" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.31.tgz#b8538100653d6bb1b08a1e46dec75b4f2a5d5eb6" - integrity sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw== + version "0.22.35" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.35.tgz#0d16dc1f24d426231c181b9c31847f673867595f" + integrity sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA== dependencies: "@types/node" "*" "@types/enzyme-adapter-react-16@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz#8aca7ae2fd6c7137d869b6616e696d21bb8b0cec" - integrity sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.9.tgz#337d85f0e91be2654b246ec11701dcf75af30afc" + integrity sha512-z24MMxGtUL8HhXdye3tWzjp+19QTsABqLaX2oOZpxMPHRJgLfahQmOeTTrEBQd9ogW20+UmPBXD9j+XOasFHvw== dependencies: "@types/enzyme" "*" "@types/enzyme@*": - version "3.10.12" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.12.tgz#ac4494801b38188935580642f772ad18f72c132f" - integrity sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA== + version "3.10.18" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.18.tgz#86010e7cb56cf1450dd391b8cc3a788f6a6fadef" + integrity sha512-RaO/TyyHZvXkpzinbMTZmd/S5biU4zxkvDsn22ujC29t9FMSzq8tnn8f2MxQ2P8GVhFRG5jTAL05DXKyTtpEQQ== dependencies: "@types/cheerio" "*" - "@types/react" "*" + "@types/react" "^16" "@types/node@*": - version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== + version "20.12.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" + integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== + dependencies: + undici-types "~5.26.4" "@types/node@^14.14.31": version "14.18.63" @@ -72,23 +74,23 @@ integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== "@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + version "15.7.12" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/react@*": - version "18.0.27" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.27.tgz#d9425abe187a00f8a5ec182b010d4fd9da703b71" - integrity sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA== +"@types/react@^16": + version "16.14.60" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.60.tgz#f7ab62a329b82826f12d02bc8031d4ef4b5e0d81" + integrity sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg== dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" + "@types/scheduler" "^0.16" csstype "^3.0.2" -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/scheduler@^0.16": + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== "@types/showdown@^1.9.3": version "1.9.4" @@ -101,9 +103,9 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.npmmirror.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + version "2.3.8" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" + integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== "@types/yauzl@^2.9.1": version "2.10.3" @@ -149,12 +151,12 @@ ansi-escapes@^4.3.0: ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" @@ -164,26 +166,49 @@ arch@^2.2.0: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array.prototype.find@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.1.tgz#769b8182a0b535c3d76ac025abab98ba1e12467b" - integrity sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w== + version "2.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.3.tgz#675a233dbcd9b65ecf1fb3f915741aebc45461e6" + integrity sha512-fO/ORdOELvjbbeIfZfzrXFMhYHGofRGqd+am9zm3tZ4GlJINj/pA2eITyfd65Vg6+ZbHd/Cys7stpoRSWtQFdA== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" asn1@~0.2.3: version "0.2.6" - resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== astral-regex@^2.0.0: @@ -192,40 +217,37 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async@^3.2.0, async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.12.0" - resolved "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -233,7 +255,7 @@ base64-js@^1.3.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -245,20 +267,12 @@ blob-util@^2.0.2: bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer@^5.6.0: @@ -270,26 +284,29 @@ buffer@^5.6.0: ieee754 "^1.1.13" cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" + integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" caseless@~0.12.0: version "0.12.0" - resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== chalk@^4.1.0: version "4.1.2" - resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -297,7 +314,7 @@ chalk@^4.1.0: check-more-types@^2.24.0: version "2.24.0" - resolved "https://registry.npmmirror.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" + resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== ci-info@^3.2.0: @@ -318,9 +335,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-table3@~0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" - integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + version "0.6.4" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.4.tgz#d1c536b8a3f2e7bec58f67ac9e5769b1b30088b0" + integrity sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw== dependencies: string-width "^4.2.0" optionalDependencies: @@ -336,14 +353,14 @@ cli-truncate@^2.1.0: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.16: @@ -353,34 +370,29 @@ colorette@^2.0.16: combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^5.1.0: version "5.1.0" - resolved "https://registry.npmmirror.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== common-tags@^1.8.0: version "1.8.2" - resolved "https://registry.npmmirror.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== cross-spawn@^7.0.0: version "7.0.3" - resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -388,9 +400,9 @@ cross-spawn@^7.0.0: which "^2.0.1" csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== cypress@9.5.4: version "9.5.4" @@ -442,11 +454,38 @@ cypress@9.5.4: dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dayjs@^1.10.4: version "1.11.10" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" @@ -454,7 +493,7 @@ dayjs@^1.10.4: debug@^3.1.0: version "3.2.7" - resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" @@ -466,22 +505,32 @@ debug@^4.1.1, debug@^4.3.2: dependencies: ms "2.1.2" -define-properties@^1.1.3, define-properties@^1.1.4: +define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" @@ -489,12 +538,12 @@ ecc-jsbn@~0.1.1: emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -508,95 +557,127 @@ enquirer@^2.3.6: strip-ansi "^6.0.1" enzyme-adapter-react-16@^1.15.5: - version "1.15.7" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz#a737e6d8e2c147e9da5acf957755be7634f76201" - integrity sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw== - dependencies: - enzyme-adapter-utils "^1.14.1" - enzyme-shallow-equal "^1.0.5" - has "^1.0.3" - object.assign "^4.1.4" - object.values "^1.1.5" + version "1.15.8" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.8.tgz#1aecb5daadaae33d32c5b8b78566d7cf45dc49d8" + integrity sha512-uYGC31eGZBp5nGsr4nKhZKvxGQjyHGjS06BJsUlWgE29/hvnpgCsT1BJvnnyny7N3GIIVyxZ4O9GChr6hy2WQA== + dependencies: + enzyme-adapter-utils "^1.14.2" + enzyme-shallow-equal "^1.0.7" + hasown "^2.0.0" + object.assign "^4.1.5" + object.values "^1.1.7" prop-types "^15.8.1" react-is "^16.13.1" react-test-renderer "^16.0.0-0" - semver "^5.7.0" + semver "^5.7.2" -enzyme-adapter-utils@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz#f30db15dafc22e0ccd44f5acc8d93be29218cdcf" - integrity sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ== +enzyme-adapter-utils@^1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.2.tgz#1d012e6261accbe7d406db098bb4d8dfdce8c003" + integrity sha512-1ZC++RlsYRaiOWE5NRaF5OgsMt7F5rn/VuaJIgc7eW/fmgg8eS1/Ut7EugSPPi7VMdWMLcymRnMF+mJUJ4B8KA== dependencies: airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.5" - has "^1.0.3" - object.assign "^4.1.4" - object.fromentries "^2.0.5" + function.prototype.name "^1.1.6" + hasown "^2.0.0" + object.assign "^4.1.5" + object.fromentries "^2.0.7" prop-types "^15.8.1" - semver "^5.7.1" + semver "^6.3.1" -enzyme-shallow-equal@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz#5528a897a6ad2bdc417c7221a7db682cd01711ba" - integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== +enzyme-shallow-equal@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz#4e3aa678022387a68e6c47aff200587851885b5e" + integrity sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg== dependencies: - has "^1.0.3" + hasown "^2.0.0" object-is "^1.1.5" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" is-callable "^1.2.7" - is-negative-zero "^2.0.2" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" + is-shared-array-buffer "^1.0.3" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.13" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-length "^1.0.4" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" + which-typed-array "^1.1.15" -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" + get-intrinsic "^1.2.4" -es-shim-unscopables@^1.0.0: +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== dependencies: - has "^1.0.3" + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -609,7 +690,7 @@ es-to-primitive@^1.2.1: escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== eventemitter2@^6.4.3: @@ -634,14 +715,14 @@ execa@4.1.0: executable@^4.1.1: version "4.1.1" - resolved "https://registry.npmmirror.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== dependencies: pify "^2.2.0" extend@~3.0.2: version "3.0.2" - resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extract-zip@2.0.1: @@ -657,17 +738,17 @@ extract-zip@2.0.1: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" @@ -688,12 +769,12 @@ for-each@^0.3.3: forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@~2.3.2: version "2.3.3" - resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -710,81 +791,67 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.2, function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.2, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" getos@^3.2.1: version "3.2.1" - resolved "https://registry.npmmirror.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== dependencies: async "^3.2.0" getpass@^0.1.1: version "0.1.7" - resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" @@ -808,7 +875,7 @@ gopd@^1.0.1: graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" - resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-bigints@^1.0.1, has-bigints@^1.0.2: @@ -818,43 +885,48 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.1.1" + es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" http-signature@~1.3.6: version "1.3.6" - resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== dependencies: assert-plus "^1.0.0" @@ -863,7 +935,7 @@ http-signature@~1.3.6: human-signals@^1.1.1: version "1.1.1" - resolved "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== ieee754@^1.1.13: @@ -876,41 +948,27 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - ini@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -internal-slot@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" - integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + es-errors "^1.3.0" + hasown "^2.0.0" side-channel "^1.0.4" -is-array-buffer@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" - integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-bigint@^1.0.1: version "1.0.4" @@ -939,6 +997,13 @@ is-ci@^3.0.0: dependencies: ci-info "^3.2.0" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -948,7 +1013,7 @@ is-date-object@^1.0.1: is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-installed-globally@~0.4.0: @@ -959,10 +1024,10 @@ is-installed-globally@~0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== is-number-object@^1.0.4: version "1.0.7" @@ -984,16 +1049,16 @@ is-regex@^1.1.0, is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: @@ -1010,25 +1075,21 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.14" is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-weakref@^1.0.2: @@ -1038,14 +1099,19 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isstream@~0.1.2: version "0.1.2" - resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== jest-dom@^4.0.0: @@ -1060,22 +1126,22 @@ jest-dom@^4.0.0: jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -1084,7 +1150,7 @@ jsonfile@^6.0.1: jsprim@^2.0.2: version "2.0.2" - resolved "https://registry.npmmirror.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== dependencies: assert-plus "1.0.0" @@ -1094,7 +1160,7 @@ jsprim@^2.0.2: lazy-ass@^1.6.0: version "1.6.0" - resolved "https://registry.npmmirror.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" + resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== listr2@^3.8.3: @@ -1113,7 +1179,7 @@ listr2@^3.8.3: lodash.once@^4.1.1: version "4.1.1" - resolved "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash@^4.17.21: @@ -1123,7 +1189,7 @@ lodash@^4.17.21: log-symbols@^4.0.0: version "4.1.0" - resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -1155,132 +1221,126 @@ lru-cache@^6.0.0: merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== mime-db@1.52.0: version "1.52.0" - resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.35" - resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== ms@2.1.2: version "2.1.2" - resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.1.1: version "2.1.3" - resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== npm-run-path@^4.0.0: version "4.0.1" - resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.1.2, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +object.assign@^4.1.0, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" + call-bind "^1.0.5" + define-properties "^1.2.1" has-symbols "^1.0.3" object-keys "^1.1.1" object.entries@^1.1.2: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" -object.fromentries@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== +object.fromentries@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" -object.values@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== +object.values@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0: version "5.1.2" - resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" ospath@^1.2.2: version "1.2.2" - resolved "https://registry.npmmirror.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" + resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== p-map@^4.0.0: @@ -1290,31 +1350,31 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== pend@~1.2.0: version "1.2.0" - resolved "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== pify@^2.2.0: version "2.3.0" - resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -1345,32 +1405,32 @@ proxy-from-env@1.0.0: psl@^1.1.33: version "1.9.0" - resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qs@~6.10.3: - version "6.10.5" - resolved "https://registry.npmmirror.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== +qs@6.10.4: + version "6.10.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.4.tgz#6a3003755add91c0ec9eacdc5f878b034e73f9e7" + integrity sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g== dependencies: side-channel "^1.0.4" querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== react-is@^16.13.1, react-is@^16.8.6: @@ -1393,25 +1453,26 @@ reflect.ownkeys@^0.2.0: resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg== -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" request-progress@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== dependencies: throttleit "^1.0.0" requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== restore-cursor@^3.1.0: @@ -1427,13 +1488,6 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rxjs@^7.5.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" @@ -1441,23 +1495,33 @@ rxjs@^7.5.1: dependencies: tslib "^2.1.0" +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.1" - resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" + call-bind "^1.0.6" + es-errors "^1.3.0" is-regex "^1.1.4" safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== scheduler@^0.19.1: @@ -1468,11 +1532,16 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -semver@^5.7.0, semver@^5.7.1: +semver@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.3.2: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" @@ -1480,30 +1549,53 @@ semver@^7.3.2: dependencies: lru-cache "^6.0.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" signal-exit@^3.0.2: version "3.0.7" - resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== slice-ansi@^3.0.0: @@ -1525,9 +1617,9 @@ slice-ansi@^4.0.0: is-fullwidth-code-point "^3.0.0" sshpk@^1.14.1: - version "1.17.0" - resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -1541,46 +1633,56 @@ sshpk@^1.14.1: string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" - resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -1593,9 +1695,9 @@ supports-color@^8.1.1: has-flag "^4.0.0" throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== + version "1.0.1" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5" + integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ== through@^2.3.8: version "2.3.8" @@ -1603,15 +1705,13 @@ through@^2.3.8: integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== tough-cookie@^4.1.3: version "4.1.3" - resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: psl "^1.1.33" @@ -1626,14 +1726,14 @@ tslib@^2.1.0: tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-fest@^0.21.3: @@ -1641,14 +1741,49 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" for-each "^0.3.3" - is-typed-array "^1.1.9" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" unbox-primitive@^1.0.2: version "1.0.2" @@ -1660,24 +1795,29 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + universalify@^0.2.0: version "0.2.0" - resolved "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== untildify@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -1685,12 +1825,12 @@ url-parse@^1.5.3: uuid@^8.3.2: version "8.3.2" - resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== verror@1.10.0: version "1.10.0" - resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" @@ -1708,21 +1848,20 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" + has-tostringtag "^1.0.2" which@^2.0.1: version "2.0.2" - resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" @@ -1747,7 +1886,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== yallist@^4.0.0: @@ -1757,7 +1896,7 @@ yallist@^4.0.0: yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" From 51b55ea3ee710188fae718795a21759fe0a7e8e6 Mon Sep 17 00:00:00 2001 From: Riya <69919272+riysaxen-amzn@users.noreply.github.com> Date: Fri, 26 Apr 2024 18:53:49 -0700 Subject: [PATCH 6/6] Backport/backport 192 to 2.x (#199) Signed-off-by: Riya Saxena --- .../MDSEnabledComponent/MDSEnabledComponent.tsx | 4 ++++ public/pages/Channels/Channels.tsx | 8 +++++++- .../Emails/components/tables/RecipientGroupsTable.tsx | 8 +++++++- public/pages/Emails/components/tables/SESSendersTable.tsx | 8 +++++++- public/pages/Emails/components/tables/SendersTable.tsx | 8 +++++++- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx b/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx index 75d0b9a7..79522bc1 100644 --- a/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx +++ b/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx @@ -31,4 +31,8 @@ export function isDataSourceChanged(prevProps, currentProps) { return false; } +export function isDataSourceError(error) { + return (error.body && error.body.message && error.body.message.includes("Data Source Error")); +} + diff --git a/public/pages/Channels/Channels.tsx b/public/pages/Channels/Channels.tsx index df6afc58..f472761a 100644 --- a/public/pages/Channels/Channels.tsx +++ b/public/pages/Channels/Channels.tsx @@ -39,7 +39,10 @@ import { ChannelActions } from './components/ChannelActions'; import { ChannelControls } from './components/ChannelControls'; import { ChannelFiltersType } from './types'; import { DataSourceMenuProperties } from '../../services/DataSourceMenuContext'; -import MDSEnabledComponent, { isDataSourceChanged } from '../../components/MDSEnabledComponent/MDSEnabledComponent'; +import MDSEnabledComponent, { + isDataSourceChanged, + isDataSourceError, +} from '../../components/MDSEnabledComponent/MDSEnabledComponent'; interface ChannelsProps extends RouteComponentProps, DataSourceMenuProperties { notificationService: NotificationService; @@ -158,6 +161,9 @@ export class Channels extends MDSEnabledComponent ); this.setState({ items: channels.items, total: channels.total }); } catch (error) { + if (isDataSourceError(error)) { + this.setState({ items: [], total: 0 }); + } this.context.notifications.toasts.addDanger( getErrorMessage(error, 'There was a problem loading channels.') ); diff --git a/public/pages/Emails/components/tables/RecipientGroupsTable.tsx b/public/pages/Emails/components/tables/RecipientGroupsTable.tsx index b23b7c7c..50205e04 100644 --- a/public/pages/Emails/components/tables/RecipientGroupsTable.tsx +++ b/public/pages/Emails/components/tables/RecipientGroupsTable.tsx @@ -34,7 +34,10 @@ import { getErrorMessage } from '../../../../utils/helpers'; import { DetailsListModal } from '../../../Channels/components/modals/DetailsListModal'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../../../Notifications/utils/constants'; import { DeleteRecipientGroupModal } from '../modals/DeleteRecipientGroupModal'; -import { isDataSourceChanged } from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; +import { + isDataSourceError, + isDataSourceChanged, +} from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; interface RecipientGroupsTableProps { coreContext: CoreStart; @@ -166,6 +169,9 @@ export class RecipientGroupsTable extends Component< total: recipientGroups.total, }); } catch (error) { + if (isDataSourceError(error)) { + this.setState({ items: [], total: 0 }); + } this.props.coreContext.notifications.toasts.addDanger( getErrorMessage(error, 'There was a problem loading recipient groups.') ); diff --git a/public/pages/Emails/components/tables/SESSendersTable.tsx b/public/pages/Emails/components/tables/SESSendersTable.tsx index 7500d2e4..bf749009 100644 --- a/public/pages/Emails/components/tables/SESSendersTable.tsx +++ b/public/pages/Emails/components/tables/SESSendersTable.tsx @@ -32,7 +32,10 @@ import { ROUTES } from '../../../../utils/constants'; import { getErrorMessage } from '../../../../utils/helpers'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../../../Notifications/utils/constants'; import { DeleteSenderModal } from '../modals/DeleteSenderModal'; -import { isDataSourceChanged } from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; +import { + isDataSourceError, + isDataSourceChanged, +} from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; interface SESSendersTableProps { coreContext: CoreStart; @@ -130,6 +133,9 @@ export class SESSendersTable extends Component< ); this.setState({ items: senders.items, total: senders.total }); } catch (error) { + if (isDataSourceError(error)) { + this.setState({ items: [], total: 0 }); + } this.props.coreContext.notifications.toasts.addDanger( getErrorMessage(error, 'There was a problem loading SES senders.') ); diff --git a/public/pages/Emails/components/tables/SendersTable.tsx b/public/pages/Emails/components/tables/SendersTable.tsx index 32f38c57..ebbf5d9d 100644 --- a/public/pages/Emails/components/tables/SendersTable.tsx +++ b/public/pages/Emails/components/tables/SendersTable.tsx @@ -32,7 +32,10 @@ import { SendersTableControls, SendersTableControlsFilterType, } from './SendersTableControls'; -import { isDataSourceChanged } from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; +import { + isDataSourceError, + isDataSourceChanged, +} from '../../../../components/MDSEnabledComponent/MDSEnabledComponent'; interface SendersTableProps { coreContext: CoreStart; @@ -151,6 +154,9 @@ export class SendersTable extends Component< ); this.setState({ items: senders.items, total: senders.total }); } catch (error) { + if (isDataSourceError(error)) { + this.setState({ items: [], total: 0 }); + } this.props.coreContext.notifications.toasts.addDanger( getErrorMessage(error, 'There was a problem loading SMTP senders.') );