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/.github/workflows/verify-binary-installation.yml b/.github/workflows/verify-binary-installation.yml
index d0d6967b..daaf3252 100644
--- a/.github/workflows/verify-binary-installation.yml
+++ b/.github/workflows/verify-binary-installation.yml
@@ -51,4 +51,5 @@ jobs:
- 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
\ No newline at end of file
+ shell: bash
+
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).
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/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/opensearch_dashboards.json b/opensearch_dashboards.json
index 2937c30d..7f36666f 100644
--- a/opensearch_dashboards.json
+++ b/opensearch_dashboards.json
@@ -8,8 +8,10 @@
],
"optionalPlugins": [
"share",
- "managementOverview"
+ "managementOverview",
+ "dataSource",
+ "dataSourceManagement"
],
"server": true,
"ui": true
-}
\ No newline at end of file
+}
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..79522bc1
--- /dev/null
+++ b/public/components/MDSEnabledComponent/MDSEnabledComponent.tsx
@@ -0,0 +1,38 @@
+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;
+}
+
+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 1e3ca6bd..f472761a 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 {
@@ -28,31 +28,37 @@ 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';
import { ChannelControls } from './components/ChannelControls';
import { ChannelFiltersType } from './types';
+import { DataSourceMenuProperties } from '../../services/DataSourceMenuContext';
+import MDSEnabledComponent, {
+ isDataSourceChanged,
+ isDataSourceError,
+} 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,
@@ -65,6 +71,8 @@ export class Channels extends Component {
loading: true,
};
+ this.state = state;
+
this.columns = [
{
field: 'name',
@@ -116,14 +124,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;
@@ -143,12 +155,15 @@ 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
);
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/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..50205e04 100644
--- a/public/pages/Emails/components/tables/RecipientGroupsTable.tsx
+++ b/public/pages/Emails/components/tables/RecipientGroupsTable.tsx
@@ -28,15 +28,20 @@ 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 {
+ isDataSourceError,
+ isDataSourceChanged,
+} from '../../../../components/MDSEnabledComponent/MDSEnabledComponent';
interface RecipientGroupsTableProps {
coreContext: CoreStart;
+ notificationService: NotificationService;
}
interface RecipientGroupsTableState
@@ -134,6 +139,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) {
@@ -161,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 e7a5bd9d..bf749009 100644
--- a/public/pages/Emails/components/tables/SESSendersTable.tsx
+++ b/public/pages/Emails/components/tables/SESSendersTable.tsx
@@ -27,14 +27,19 @@ 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 {
+ isDataSourceError,
+ isDataSourceChanged,
+} from '../../../../components/MDSEnabledComponent/MDSEnabledComponent';
interface SESSendersTableProps {
coreContext: CoreStart;
+ notificationService: NotificationService;
}
interface SESSendersTableState extends TableState {}
@@ -48,7 +53,6 @@ export class SESSendersTable extends Component<
constructor(props: SESSendersTableProps) {
super(props);
-
this.state = {
total: 0,
from: 0,
@@ -104,6 +108,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) {
@@ -126,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 fb715645..ebbf5d9d 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,14 @@ import {
SendersTableControls,
SendersTableControlsFilterType,
} from './SendersTableControls';
+import {
+ isDataSourceError,
+ isDataSourceChanged,
+} from '../../../../components/MDSEnabledComponent/MDSEnabledComponent';
interface SendersTableProps {
coreContext: CoreStart;
+ notificationService: NotificationService;
}
interface SendersTableState extends TableState {
@@ -120,6 +125,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) {
@@ -146,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.')
);
diff --git a/public/pages/Main/Main.tsx b/public/pages/Main/Main.tsx
index e6a8b7cd..dff7c78f 100644
--- a/public/pages/Main/Main.tsx
+++ b/public/pages/Main/Main.tsx
@@ -4,14 +4,15 @@
*/
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';
-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';
@@ -20,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',
@@ -32,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: serverFeatures.tooltipSupport,
+ 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,
@@ -119,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) &&
@@ -168,7 +356,7 @@ export default class Main extends Component {
)}
@@ -176,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 f9e166da..aa3c317d 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,7 @@ import {
SenderType,
SESSenderItemType,
} from '../../models/interfaces';
-import { CHANNEL_TYPE } from '../utils/constants';
+import { CHANNEL_TYPE } from '../../common/constants';
import {
configListToChannels,
configListToRecipientGroups,
@@ -39,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 (
@@ -215,21 +251,7 @@ 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;
@@ -237,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/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/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 5942399c..eb3a8b71 100644
--- a/server/routes/configRoutes.ts
+++ b/server/routes/configRoutes.ts
@@ -10,30 +10,104 @@ import {
} from '../../../../src/core/server';
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) => {
@@ -43,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,
@@ -77,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 }
);
@@ -106,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) {
@@ -130,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,
@@ -167,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 }
);
@@ -202,15 +247,30 @@ 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'
);
- 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,
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 24972dc1..0a2ae519 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 = ({
@@ -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"