diff --git a/CHANGELOG.md b/CHANGELOG.md index dfea4045..9629dcbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Do not retry `firebase.messaging.UnregisteredError` exceptions for FCM relay tasks by @joeyorlando ([#3637](https://github.com/grafana/oncall/pull/3637)) - Decrease outgoing webhook timeouts from 10secs to 4secs by @joeyorlando ([#3639](https://github.com/grafana/oncall/pull/3639)) +- Moved Mobile Connection Tab to separate user profile in Grafana ([#3296](https://github.com/grafana/oncall/pull/3296) ### Fixed diff --git a/grafana-plugin/e2e-tests/globalSetup.ts b/grafana-plugin/e2e-tests/globalSetup.ts index 41752b78..cd60e39a 100644 --- a/grafana-plugin/e2e-tests/globalSetup.ts +++ b/grafana-plugin/e2e-tests/globalSetup.ts @@ -1,5 +1,12 @@ -import { OrgRole } from '@grafana/data'; -import { test as setup, chromium, expect, Page, BrowserContext, FullConfig, APIRequestContext } from '@playwright/test'; +import { + test as setup, + chromium, + expect, + type Page, + type BrowserContext, + type FullConfig, + type APIRequestContext, +} from '@playwright/test'; import { getOnCallApiUrl } from 'utils/consts'; @@ -21,6 +28,13 @@ import { goToGrafanaPage } from './utils/navigation'; const grafanaApiClient = new GrafanaAPIClient(GRAFANA_ADMIN_USERNAME, GRAFANA_ADMIN_PASSWORD); +enum OrgRole { + None = 'None', + Viewer = 'Viewer', + Editor = 'Editor', + Admin = 'Admin', +} + type UserCreationSettings = { adminAuthedRequest: APIRequestContext; role: OrgRole; diff --git a/grafana-plugin/package.json b/grafana-plugin/package.json index 24b7386a..6e326526 100644 --- a/grafana-plugin/package.json +++ b/grafana-plugin/package.json @@ -119,11 +119,11 @@ "@dnd-kit/core": "^6.0.8", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", - "@grafana/data": "^9.2.4", + "@grafana/data": "^10.2.3", "@grafana/faro-web-sdk": "^1.0.0-beta4", "@grafana/faro-web-tracing": "^1.0.0-beta4", "@grafana/labels": "~1.4.4", - "@grafana/runtime": "9.3.0-beta1", + "@grafana/runtime": "^10.2.2", "@grafana/scenes": "^1.28.0", "@grafana/schema": "^10.2.2", "@grafana/ui": "^10.2.0", diff --git a/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkDropdown.tsx b/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkDropdown.tsx index 5d1b9b44..b88831fa 100644 --- a/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkDropdown.tsx +++ b/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkDropdown.tsx @@ -1,9 +1,6 @@ import React, { ReactElement, useMemo, useState } from 'react'; -// Note: these imports are available in Grafana>=10.0. -// @ts-expect-error import { PluginExtensionLink } from '@grafana/data'; -// @ts-expect-error import { getPluginLinkExtensions } from '@grafana/runtime'; import { Dropdown, ToolbarButton } from '@grafana/ui'; import { OnCallPluginExtensionPoints } from 'types'; @@ -54,7 +51,10 @@ function useExtensionPointContext(incident: Alert): PluginExtensionOnCallAlertGr return { alertGroup: incident }; } -function useExtensionLinks(context: T, extensionPointId: OnCallPluginExtensionPoints): PluginExtensionLink[] { +function useExtensionLinks( + context: T, + extensionPointId: OnCallPluginExtensionPoints +): PluginExtensionLink[] { return useMemo(() => { // getPluginLinkExtensions is available in Grafana>=10.0, // so will be undefined in earlier versions. Just return an diff --git a/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkMenu.tsx b/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkMenu.tsx index a16fad43..ebe89582 100644 --- a/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkMenu.tsx +++ b/grafana-plugin/src/components/ExtensionLinkMenu/ExtensionLinkMenu.tsx @@ -1,9 +1,7 @@ import React, { ReactElement, useMemo } from 'react'; -// Note: `PluginExtensionLink` is available in Grafana>=10.0. -// @ts-expect-error -import { locationUtil, PluginExtensionLink } from '@grafana/data'; -import { Menu } from '@grafana/ui'; +import { locationUtil, PluginExtensionLink, PluginExtensionTypes } from '@grafana/data'; +import { IconName, Menu } from '@grafana/ui'; import { PluginBridge, SupportedPlugin } from 'components/PluginBridge/PluginBridge'; import { truncateTitle } from 'utils/string'; @@ -48,6 +46,7 @@ function DeclareIncidentMenuItem({ extensions, declareIncidentLink, grafanaIncid const declareIncidentExtensionLink = extensions.find( (extension) => extension.pluginId === 'grafana-incident-app' && extension.title === 'Declare incident' ); + if ( // Don't show a custom Declare incident button if the Grafana Incident plugin already configured one. declareIncidentExtensionLink || @@ -58,29 +57,30 @@ function DeclareIncidentMenuItem({ extensions, declareIncidentLink, grafanaIncid ) { return null; } + return ( {renderItems([ { - type: 'link', + type: PluginExtensionTypes.link, path: declareIncidentLink, icon: 'fire', category: 'Incident', title: 'Declare incident', pluginId: 'grafana-oncall-app', - }, + } as Partial, ])} ); } -function renderItems(extensions: PluginExtensionLink[]): JSX.Element[] { +function renderItems(extensions: Array>): JSX.Element[] { return extensions.map((extension) => ( { diff --git a/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx b/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx index 8f5155bc..0a541950 100644 --- a/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx +++ b/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx @@ -30,7 +30,7 @@ const DefaultPageLayout: FC = observer((props) => { function renderTopNavbar(): JSX.Element { return ( - +
{children}
); diff --git a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.module.scss b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.module.scss index 43853412..565c6c6b 100644 --- a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.module.scss +++ b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.module.scss @@ -1,6 +1,7 @@ .container { display: flex; flex-direction: row; + min-width: 100%; &__box { flex-basis: 50%; diff --git a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.test.tsx b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.test.tsx index bd5c5461..28982c5b 100644 --- a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.test.tsx +++ b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.test.tsx @@ -4,24 +4,30 @@ import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; -import { CloudStore } from 'models/cloud/cloud'; -import { UserStore } from 'models/user/user'; import { User } from 'models/user/user.types'; -import { RootStore } from 'state'; -import { useStore as useStoreOriginal } from 'state/useStore'; +import { rootStore } from 'state'; -import MobileAppConnection from './MobileAppConnection'; +import { MobileAppConnection } from './MobileAppConnection'; jest.mock('plugin/GrafanaPluginRootPage.helpers', () => ({ isTopNavbar: () => false, })); jest.mock('@grafana/runtime', () => ({ + __esModule: true, + config: { featureToggles: { topNav: false, }, }, + + getBackendSrv: jest.fn().mockImplementation(() => ({ + get: jest.fn(), + post: jest.fn(), + })), + + getLocationSrv: jest.fn(), })); jest.mock('utils/authorization', () => ({ @@ -29,49 +35,50 @@ jest.mock('utils/authorization', () => ({ isUserActionAllowed: jest.fn().mockReturnValue(true), })); -jest.mock('@grafana/runtime', () => ({ - getLocationSrv: jest.fn(), -})); - -jest.mock('state/useStore'); - -const useStore = useStoreOriginal as jest.Mock>; const loadUserMock = jest.fn().mockReturnValue(undefined); -const mockUseStore = (rest?: any, connected = false, cloud_connected = true) => { - const store = { - userStore: { - loadUser: loadUserMock, - currentUser: { - messaging_backends: { - MOBILE_APP: { connected }, - }, - } as unknown as User, - ...(rest ? rest : {}), - } as unknown as UserStore, - cloudStore: { - getCloudConnectionStatus: jest.fn().mockReturnValue({ cloud_connection_status: cloud_connected }), - cloudConnectionStatus: { cloud_connection_status: cloud_connected }, - } as unknown as CloudStore, - hasFeature: jest.fn().mockReturnValue(true), - isOpenSource: true, - } as unknown as RootStore; +jest.mock('state', () => ({ + rootStore: jest.fn(), +})); - useStore.mockReturnValue(store); +const mockRootStore = (rest?: any, connected = false, cloud_connected = true) => { + rootStore.userStore = { + loadUser: loadUserMock, + currentUser: { + messaging_backends: { + MOBILE_APP: { connected }, + }, + } as unknown as User, + ...(rest ? rest : {}), + }; - return store; + rootStore.cloudStore = { + getCloudConnectionStatus: jest.fn().mockReturnValue({ cloud_connection_status: cloud_connected }), + cloudConnectionStatus: { cloud_connection_status: cloud_connected }, + } as any; + + // @ts-ignore + rootStore.isOpenSource = jest.fn().mockReturnValue(true); + rootStore.hasFeature = jest.fn().mockReturnValue(true); }; const USER_PK = '8585'; const BACKEND = 'MOBILE_APP'; +describe('MobileAppConnection', () => { + test('', () => { + expect(true).toBe(true); + }); +}); + describe('MobileAppConnection', () => { beforeEach(() => { loadUserMock.mockClear(); + (rootStore as any).mockClear(); }); test('it shows a loading message if it is currently fetching the QR code', async () => { - const { userStore } = mockUseStore({ + mockRootStore({ sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), }); @@ -79,29 +86,13 @@ describe('MobileAppConnection', () => { expect(component.container).toMatchSnapshot(); await waitFor(() => { - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); - }); - }); - - test('it shows a message when the mobile app is already connected', async () => { - const { userStore } = mockUseStore( - { - sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), - }, - true - ); - - const component = render(); - expect(component.container).toMatchSnapshot(); - - await waitFor(() => { - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(0); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); }); }); test('it shows an error message if there was an error fetching the QR code', async () => { - const { userStore } = mockUseStore({ + mockRootStore({ sendBackendConfirmationCode: jest.fn().mockRejectedValueOnce('dfd'), }); @@ -111,13 +102,13 @@ describe('MobileAppConnection', () => { await waitFor(() => { expect(component.container).toMatchSnapshot(); - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); }); }); test("it shows a QR code if the app isn't already connected", async () => { - const { userStore } = mockUseStore({ + mockRootStore({ sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), }); @@ -125,13 +116,13 @@ describe('MobileAppConnection', () => { expect(component.container).toMatchSnapshot(); await waitFor(() => { - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); }); }); test('if we disconnect the app, it disconnects and fetches a new QR code', async () => { - const { userStore } = mockUseStore( + mockRootStore( { sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), unlinkBackend: jest.fn().mockResolvedValueOnce('asdfadsfafds'), @@ -150,16 +141,16 @@ describe('MobileAppConnection', () => { expect(component.container).toMatchSnapshot(); await waitFor(() => { - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); - expect(userStore.unlinkBackend).toHaveBeenCalledTimes(1); - expect(userStore.unlinkBackend).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.unlinkBackend).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.unlinkBackend).toHaveBeenCalledWith(USER_PK, BACKEND); }); }); test('it shows a loading message if it is currently disconnecting', async () => { - const { userStore } = mockUseStore( + mockRootStore( { sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), unlinkBackend: jest.fn().mockResolvedValueOnce(new Promise((resolve) => setTimeout(resolve, 500))), @@ -181,16 +172,16 @@ describe('MobileAppConnection', () => { expect(component.container).toMatchSnapshot(); await waitFor(() => { - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledWith(USER_PK, BACKEND); - expect(userStore.unlinkBackend).toHaveBeenCalledTimes(1); - expect(userStore.unlinkBackend).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.unlinkBackend).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.unlinkBackend).toHaveBeenCalledWith(USER_PK, BACKEND); }); }); test('it shows an error message if there was an error disconnecting the mobile app', async () => { - const { userStore } = mockUseStore( + mockRootStore( { sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), unlinkBackend: jest.fn().mockRejectedValueOnce('asdfadsfafds'), @@ -211,15 +202,15 @@ describe('MobileAppConnection', () => { expect(component.container).toMatchSnapshot(); await waitFor(() => { - expect(userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(0); + expect(rootStore.userStore.sendBackendConfirmationCode).toHaveBeenCalledTimes(0); - expect(userStore.unlinkBackend).toHaveBeenCalledTimes(1); - expect(userStore.unlinkBackend).toHaveBeenCalledWith(USER_PK, BACKEND); + expect(rootStore.userStore.unlinkBackend).toHaveBeenCalledTimes(1); + expect(rootStore.userStore.unlinkBackend).toHaveBeenCalledWith(USER_PK, BACKEND); }); }); test('it polls loadUser on first render if not connected', async () => { - mockUseStore( + mockRootStore( { sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dfd'), unlinkBackend: jest.fn().mockRejectedValueOnce('asdfadsfafds'), @@ -238,7 +229,7 @@ describe('MobileAppConnection', () => { }); test('it polls loadUser after disconnect', async () => { - mockUseStore( + mockRootStore( { sendBackendConfirmationCode: jest.fn().mockResolvedValueOnce('dff'), unlinkBackend: jest.fn().mockRejectedValueOnce('asdff'), @@ -263,7 +254,7 @@ describe('MobileAppConnection', () => { }); test('it shows a warning when cloud is not connected', async () => { - mockUseStore({}, true, false); + mockRootStore({}, true, false); // Using MemoryRouter to avoid "Invariant failed: You should not use outside a " const component = render( diff --git a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.tsx b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.tsx index 82ec2674..f3f0170d 100644 --- a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.tsx +++ b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnection.tsx @@ -10,8 +10,8 @@ import PluginLink from 'components/PluginLink/PluginLink'; import Text from 'components/Text/Text'; import { WithPermissionControlDisplay } from 'containers/WithPermissionControl/WithPermissionControlDisplay'; import { User } from 'models/user/user.types'; +import { RootStore, rootStore as store } from 'state'; import { AppFeature } from 'state/features'; -import { useStore } from 'state/useStore'; import { openErrorNotification, openNotification, openWarningNotification } from 'utils'; import { UserActions } from 'utils/authorization'; @@ -23,7 +23,8 @@ import QRCode from './parts/QRCode/QRCode'; const cx = cn.bind(styles); type Props = { - userPk: User['pk']; + userPk?: User['pk']; + store?: RootStore; }; const INTERVAL_MIN_THROTTLING = 500; @@ -36,31 +37,10 @@ const INTERVAL_QUEUE_QR = 290_000; const INTERVAL_POLLING = 5000; const BACKEND = 'MOBILE_APP'; -const MobileAppConnection = observer(({ userPk }: Props) => { - const store = useStore(); +export const MobileAppConnection = observer(({ userPk }: Props) => { const { userStore, cloudStore } = store; - // Show link to cloud page for OSS instances with no cloud connection - if (store.hasFeature(AppFeature.CloudConnection) && !cloudStore.cloudConnectionStatus.cloud_connection_status) { - return ( - - - Please connect Grafana Cloud OnCall to use the mobile app - - - - - - - - ); - } + const [basicDataLoaded, setBasicDataLoaded] = useState(false); const isMounted = useRef(false); const [mobileAppIsCurrentlyConnected, setMobileAppIsCurrentlyConnected] = useState(isUserConnected()); @@ -75,10 +55,34 @@ const MobileAppConnection = observer(({ userPk }: Props) => { const [refreshTimeoutId, setRefreshTimeoutId] = useState(undefined); const [isQRBlurry, setIsQRBlurry] = useState(false); const [isAttemptingTestNotification, setIsAttemptingTestNotification] = useState(false); - const isCurrentUser = userStore.currentUserPk === userPk; + const isCurrentUser = userPk === undefined || userStore.currentUserPk === userPk; + + useEffect(() => { + isMounted.current = true; + + (async () => { + if (!isUserConnected()) { + triggerTimeouts(); + } else { + setMobileAppIsCurrentlyConnected(true); + } + + setBasicDataLoaded(true); + })(); + + // clear on unmount + return () => { + isMounted.current = false; + clearTimeouts(); + }; + }, []); const fetchQRCode = useCallback( async (showLoader = true) => { + if (!userPk) { + return; + } + if (showLoader) { setFetchingQRCode(true); } @@ -105,6 +109,9 @@ const MobileAppConnection = observer(({ userPk }: Props) => { }, []); const disconnectMobileApp = useCallback(async () => { + if (!userPk) { + return; + } setDisconnectingMobileApp(true); try { @@ -119,29 +126,24 @@ const MobileAppConnection = observer(({ userPk }: Props) => { triggerTimeouts(); }, [userPk, resetState]); - useEffect(() => { - isMounted.current = true; - - if (!isUserConnected()) { - triggerTimeouts(); - } - - // clear on unmount - return () => { - isMounted.current = false; - clearTimeouts(); - }; - }, []); - useEffect(() => { if (!mobileAppIsCurrentlyConnected) { fetchQRCode(); } - }, [mobileAppIsCurrentlyConnected]); + }, [mobileAppIsCurrentlyConnected, userPk]); + + // Show link to cloud page for OSS instances with no cloud connection + if ( + store.isOpenSource && + store.hasFeature(AppFeature.CloudConnection) && + !cloudStore.cloudConnectionStatus.cloud_connection_status + ) { + return renderConnectToCloud(); + } let content: React.ReactNode = null; - if (fetchingQRCode || disconnectingMobileApp) { + if (fetchingQRCode || disconnectingMobileApp || !userPk || !basicDataLoaded) { content = ; } else if (errorFetchingQRCode || errorDisconnectingMobileApp) { content = {errorFetchingQRCode || errorDisconnectingMobileApp}; @@ -199,7 +201,7 @@ const MobileAppConnection = observer(({ userPk }: Props) => { {content} - {mobileAppIsCurrentlyConnected && isCurrentUser && ( + {mobileAppIsCurrentlyConnected && isCurrentUser && !disconnectingMobileApp && (
+ + + + + ); + } + async function onSendTestNotification(isCritical = false) { + if (!userPk) { + return; + } setIsAttemptingTestNotification(true); try { @@ -258,11 +284,11 @@ const MobileAppConnection = observer(({ userPk }: Props) => { } function isUserConnected(user?: User): boolean { - return !!(user || userStore.currentUser).messaging_backends[BACKEND]?.connected; + return !!(user || userStore.currentUser)?.messaging_backends[BACKEND]?.connected; } async function queueRefreshQR(): Promise { - if (!isMounted.current) { + if (!isMounted.current || !userPk) { return; } @@ -300,7 +326,7 @@ const MobileAppConnection = observer(({ userPk }: Props) => { } async function pollUserProfile(): Promise { - if (!isMounted.current) { + if (!isMounted.current || !userPk) { return; } @@ -327,4 +353,26 @@ function QRLoading() { ); } -export default MobileAppConnection; +export const MobileAppConnectionWrapper: React.FC<{}> = observer(() => { + const { userStore } = store; + + useEffect(() => { + loadData(); + }, []); + + const loadData = async () => { + if (!store.isBasicDataLoaded) { + await store.loadBasicData(); + } + + if (!userStore.currentUserPk) { + await userStore.loadCurrentUser(); + } + }; + + if (store.isBasicDataLoaded && userStore.currentUserPk) { + return ; + } + + return ; +}); diff --git a/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnectionTab.tsx b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnectionTab.tsx new file mode 100644 index 00000000..1370b954 --- /dev/null +++ b/grafana-plugin/src/containers/MobileAppConnection/MobileAppConnectionTab.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +import { observer } from 'mobx-react'; + +import Text from 'components/Text/Text'; + +const MobileAppConnectionTab: React.FC<{ userPk?: string }> = observer(() => { + return ( + + Mobile settings have been moved to{' '} + + user's profile + + + ); +}); + +export { MobileAppConnectionTab }; diff --git a/grafana-plugin/src/containers/MobileAppConnection/__snapshots__/MobileAppConnection.test.tsx.snap b/grafana-plugin/src/containers/MobileAppConnection/__snapshots__/MobileAppConnection.test.tsx.snap index 48123fcb..6db131b9 100644 --- a/grafana-plugin/src/containers/MobileAppConnection/__snapshots__/MobileAppConnection.test.tsx.snap +++ b/grafana-plugin/src/containers/MobileAppConnection/__snapshots__/MobileAppConnection.test.tsx.snap @@ -528,163 +528,6 @@ exports[`MobileAppConnection it shows a loading message if it is currently fetch
`; -exports[`MobileAppConnection it shows a message when the mobile app is already connected 1`] = ` -
-
-
-
-
-
-
- - Download - -
-
- - The Grafana OnCall app is available on both the App Store and Google Play Store. - -
- -
-
-
-
-
- - App connected -
- -
-
- - You can only sync one application to your account. To setup a new device, please disconnect the currently connected device first. - -
-
-
- - -
-
-
-
-
-
-
-
-`; - exports[`MobileAppConnection it shows a warning when cloud is not connected 1`] = `
void; +} + +export const Connectors: FC = (props) => { + const store = useStore(); + return ( + <> + + + + {store.hasFeature(AppFeature.Telegram) && } + Calendar export + + + ); +}; diff --git a/grafana-plugin/src/containers/UserSettings/parts/index.tsx b/grafana-plugin/src/containers/UserSettings/parts/index.tsx index 0517470d..afdf4ed4 100644 --- a/grafana-plugin/src/containers/UserSettings/parts/index.tsx +++ b/grafana-plugin/src/containers/UserSettings/parts/index.tsx @@ -5,7 +5,8 @@ import cn from 'classnames/bind'; import { observer } from 'mobx-react'; import Block from 'components/GBlock/Block'; -import MobileAppConnection from 'containers/MobileAppConnection/MobileAppConnection'; +import { MobileAppConnection } from 'containers/MobileAppConnection/MobileAppConnection'; +import { MobileAppConnectionTab } from 'containers/MobileAppConnection/MobileAppConnectionTab'; import { UserSettingsTab } from 'containers/UserSettings/UserSettings.types'; import { SlackTab } from 'containers/UserSettings/parts/tabs//SlackTab/SlackTab'; import CloudPhoneSettings from 'containers/UserSettings/parts/tabs/CloudPhoneSettings/CloudPhoneSettings'; @@ -17,6 +18,7 @@ import { UserInfoTab } from 'containers/UserSettings/parts/tabs/UserInfoTab/User import { User } from 'models/user/user.types'; import { AppFeature } from 'state/features'; import { useStore } from 'state/useStore'; +import { isUseProfileExtensionPointEnabled } from 'utils'; import styles from 'containers/UserSettings/parts/index.module.css'; @@ -151,10 +153,18 @@ export const TabsContent = observer(({ id, activeTab, onTabChange, isDesktopOrLa ) : ( ))} - {activeTab === UserSettingsTab.MobileAppConnection && } + {activeTab === UserSettingsTab.MobileAppConnection && renderMobileTab()} {activeTab === UserSettingsTab.SlackInfo && } {activeTab === UserSettingsTab.TelegramInfo && } {activeTab === UserSettingsTab.MSTeamsInfo && } ); + + function renderMobileTab() { + if (!isUseProfileExtensionPointEnabled()) { + return ; + } + + return ; + } }); diff --git a/grafana-plugin/src/containers/UserSettings/parts/tabs/UserInfoTab/UserInfoTab.tsx b/grafana-plugin/src/containers/UserSettings/parts/tabs/UserInfoTab/UserInfoTab.tsx index 6334b0d1..3a4dedba 100644 --- a/grafana-plugin/src/containers/UserSettings/parts/tabs/UserInfoTab/UserInfoTab.tsx +++ b/grafana-plugin/src/containers/UserSettings/parts/tabs/UserInfoTab/UserInfoTab.tsx @@ -4,7 +4,7 @@ import { InlineField, Input, Legend } from '@grafana/ui'; import GrafanaTeamSelect from 'containers/GrafanaTeamSelect/GrafanaTeamSelect'; import { UserSettingsTab } from 'containers/UserSettings/UserSettings.types'; -import { Connectors } from 'containers/UserSettings/parts/connectors'; +import { Connectors } from 'containers/UserSettings/parts/connectors/Connectors'; import { User } from 'models/user/user.types'; import { useStore } from 'state/useStore'; diff --git a/grafana-plugin/src/module.ts b/grafana-plugin/src/module.ts index 068b4df2..5e52ce5e 100644 --- a/grafana-plugin/src/module.ts +++ b/grafana-plugin/src/module.ts @@ -1,15 +1,47 @@ import { ComponentClass } from 'react'; -import { AppPlugin } from '@grafana/data'; +import { AppPlugin, PluginExtensionPoints } from '@grafana/data'; +import { MobileAppConnectionWrapper } from 'containers/MobileAppConnection/MobileAppConnection'; import PluginConfigPage from 'containers/PluginConfigPage/PluginConfigPage'; import { GrafanaPluginRootPage } from 'plugin/GrafanaPluginRootPage'; +import { getGrafanaVersion } from 'plugin/GrafanaPluginRootPage.helpers'; +import { IRM_TAB } from 'utils/consts'; import { OnCallPluginConfigPageProps, OnCallPluginMetaJSONData } from './types'; -export const plugin = new AppPlugin().setRootPage(GrafanaPluginRootPage).addConfigPage({ +const plugin = new AppPlugin().setRootPage(GrafanaPluginRootPage).addConfigPage({ title: 'Configuration', icon: 'cog', body: PluginConfigPage as unknown as ComponentClass, id: 'configuration', }); + +if (isUseProfileExtensionPointEnabled()) { + const extensionPointId = PluginExtensionPoints.UserProfileTab; + + plugin.configureExtensionComponent({ + title: IRM_TAB, + description: 'IRM settings', + extensionPointId, + /** + * typing MobileAppConnectionWrapper as any until 10.2.0 is released + * https://github.com/grafana/grafana/pull/75019#issuecomment-1724997540 + */ + component: MobileAppConnectionWrapper, + }); +} + +function isUseProfileExtensionPointEnabled(): boolean { + const { major, minor } = getGrafanaVersion(); + const isRequiredGrafanaVersion = major > 10 || (major === 10 && minor >= 3); // >= 10.3.0 + + return ( + isRequiredGrafanaVersion && + 'configureExtensionComponent' in plugin && + PluginExtensionPoints != null && + 'UserProfileTab' in PluginExtensionPoints + ); +} + +export { plugin }; diff --git a/grafana-plugin/src/navbar/LegacyNavTabsBar.tsx b/grafana-plugin/src/navbar/LegacyNavTabsBar.tsx index 408ce6e2..2a395714 100644 --- a/grafana-plugin/src/navbar/LegacyNavTabsBar.tsx +++ b/grafana-plugin/src/navbar/LegacyNavTabsBar.tsx @@ -1,7 +1,6 @@ import React from 'react'; -import { IconName } from '@grafana/data'; -import { Tab, TabsBar } from '@grafana/ui'; +import { IconName, Tab, TabsBar } from '@grafana/ui'; import cn from 'classnames/bind'; import { pages } from 'pages'; diff --git a/grafana-plugin/src/pages/schedule/Schedule.helpers.ts b/grafana-plugin/src/pages/schedule/Schedule.helpers.ts index 50a085b0..e8ddbd7a 100644 --- a/grafana-plugin/src/pages/schedule/Schedule.helpers.ts +++ b/grafana-plugin/src/pages/schedule/Schedule.helpers.ts @@ -8,13 +8,6 @@ import { Timezone } from 'models/timezone/timezone.types'; import { RootStore } from 'state'; import { SelectOption } from 'state/types'; -const mondayDayOffset = { - saturday: -2, - sunday: -1, - monday: 0, - browser: 0, -}; - export const getWeekStartString = () => { const weekStart = (config?.bootData?.user?.weekStart || '').toLowerCase(); @@ -35,15 +28,11 @@ export const getStartOfDay = (tz: Timezone) => { }; export const getStartOfWeek = (tz: Timezone) => { - return getNow(tz) - .startOf('isoWeek') // it's Monday always - .add(mondayDayOffset[getWeekStartString()], 'day'); + return getNow(tz).startOf('isoWeek'); // it's Monday always }; export const getStartOfWeekBasedOnCurrentDate = (date: dayjs.Dayjs) => { - return date - .startOf('isoWeek') // it's Monday always - .add(mondayDayOffset[getWeekStartString()], 'day'); + return date.startOf('isoWeek'); // it's Monday always }; export const getUTCString = (moment: dayjs.Dayjs) => { diff --git a/grafana-plugin/src/plugin.json b/grafana-plugin/src/plugin.json index 2d516699..46d9921c 100644 --- a/grafana-plugin/src/plugin.json +++ b/grafana-plugin/src/plugin.json @@ -3,6 +3,7 @@ "type": "app", "name": "Grafana OnCall", "id": "grafana-oncall-app", + "preload": true, "info": { "description": "Collect and analyze alerts, escalate based on schedules and deliver them to Slack, Phone Calls, SMS and others.", "author": { diff --git a/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.test.tsx b/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.test.tsx new file mode 100644 index 00000000..afccfd51 --- /dev/null +++ b/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.test.tsx @@ -0,0 +1,45 @@ +import * as runtime from '@grafana/runtime'; + +import { getGrafanaVersion } from './GrafanaPluginRootPage.helpers'; + +jest.mock('@grafana/runtime', () => ({ + config: jest.fn(), +})); + +describe('GrafanaPluginRootPage.helpers', () => { + function setGrafanaVersion(version: string) { + runtime.config.buildInfo = { + version, + } as any; + } + + test('It figures out grafana version from string', () => { + setGrafanaVersion('10.13.95-9.0.1.1test'); + + const { major, minor, patch } = getGrafanaVersion(); + + expect(major).toBe(10); + expect(minor).toBe(13); + expect(patch).toBe(95); + }); + + test('It figures out grafana version for v9', () => { + setGrafanaVersion('9.04.3105-rctest100'); + + const { major, minor, patch } = getGrafanaVersion(); + + expect(major).toBe(9); + expect(minor).toBe(4); + expect(patch).toBe(3105); + }); + + test('It figures out grafana version for 1.0.0', () => { + setGrafanaVersion('1.0.0-any-asd-value'); + + const { major, minor, patch } = getGrafanaVersion(); + + expect(major).toBe(1); + expect(minor).toBe(0); + expect(patch).toBe(0); + }); +}); diff --git a/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.tsx b/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.tsx index 63b461be..a167a716 100644 --- a/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.tsx +++ b/grafana-plugin/src/plugin/GrafanaPluginRootPage.helpers.tsx @@ -4,6 +4,21 @@ export function isTopNavbar(): boolean { return !!config.featureToggles.topnav; } +export function getGrafanaVersion(): { major?: number; minor?: number; patch?: number } { + const regex = /^([1-9]?[0-9]*)\.([1-9]?[0-9]*)\.([1-9]?[0-9]*)/; + const match = config.buildInfo.version.match(regex); + + if (match) { + return { + major: Number(match[1]), + minor: Number(match[2]), + patch: Number(match[3]), + }; + } + + return {}; +} + export function getQueryParams(): any { const searchParams = new URLSearchParams(window.location.search); const result = {}; diff --git a/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx b/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx index 5e2602a0..7adf88c7 100644 --- a/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx +++ b/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx @@ -1,7 +1,5 @@ import React, { useEffect } from 'react'; -import './dayjs'; - import { LoadingPlaceholder } from '@grafana/ui'; import classnames from 'classnames'; import { observer, Provider } from 'mobx-react'; diff --git a/grafana-plugin/src/state/index.ts b/grafana-plugin/src/state/index.ts index 8d7f7154..e9d4d52f 100644 --- a/grafana-plugin/src/state/index.ts +++ b/grafana-plugin/src/state/index.ts @@ -1,3 +1,11 @@ +/* + * Important! + Make sure import of plugin/dayjs is placed in a proper location + Otherwise the dayjs extenders won't be called and the dayjs functionality will be altered, thus leading to all sort of bugs + */ + +import 'plugin/dayjs'; + import { RootBaseStore } from './rootBaseStore'; export class RootStore extends RootBaseStore {} diff --git a/grafana-plugin/src/utils/authorization/index.ts b/grafana-plugin/src/utils/authorization/index.ts index a0ed6fb8..d04afb77 100644 --- a/grafana-plugin/src/utils/authorization/index.ts +++ b/grafana-plugin/src/utils/authorization/index.ts @@ -72,6 +72,7 @@ const roleMapping: Record = { [OrgRole.Admin]: 0, [OrgRole.Editor]: 1, [OrgRole.Viewer]: 2, + [OrgRole.None]: 3, }; /** diff --git a/grafana-plugin/src/utils/consts.ts b/grafana-plugin/src/utils/consts.ts index 37e421f3..e5e02d86 100644 --- a/grafana-plugin/src/utils/consts.ts +++ b/grafana-plugin/src/utils/consts.ts @@ -66,3 +66,4 @@ export enum PAGE { export const TEXT_ELLIPSIS_CLASS = 'overflow-child'; export const INCIDENT_HORIZONTAL_SCROLLING_STORAGE = 'isIncidentalTableHorizontalScrolling'; +export const IRM_TAB = 'IRM'; diff --git a/grafana-plugin/src/utils/index.ts b/grafana-plugin/src/utils/index.ts index 27e477ae..5501c9c3 100644 --- a/grafana-plugin/src/utils/index.ts +++ b/grafana-plugin/src/utils/index.ts @@ -6,6 +6,7 @@ import appEvents from 'grafana/app/core/app_events'; import { isArray, concat, isPlainObject, flatMap, map, keys } from 'lodash-es'; import { isNetworkError } from 'network'; +import { getGrafanaVersion } from 'plugin/GrafanaPluginRootPage.helpers'; export class KeyValuePair { key: T; @@ -95,3 +96,10 @@ export function getPaths(obj?: any, parentKey?: string): string[] { export function pluralize(word: string, count: number): string { return count === 1 ? word : `${word}s`; } + +export function isUseProfileExtensionPointEnabled(): boolean { + const { major, minor } = getGrafanaVersion(); + const isRequiredGrafanaVersion = major > 10 || (major === 10 && minor >= 3); + + return isRequiredGrafanaVersion; +} diff --git a/grafana-plugin/yarn.lock b/grafana-plugin/yarn.lock index cf43c4fd..90a59f2a 100644 --- a/grafana-plugin/yarn.lock +++ b/grafana-plugin/yarn.lock @@ -1295,16 +1295,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@braintree/sanitize-url@6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f" - integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w== - -"@braintree/sanitize-url@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.1.tgz#45ff061b9ded1c6e4474b33b336ebb1b986b825a" - integrity sha512-zr9Qs9KFQiEvMWdZesjcmRJlUck5NR+eKGS1uyKk+oYTWwlYrsoPEi6VmG6/TzBD1hKCGEimrhTgGS6hvn/xIQ== - "@braintree/sanitize-url@6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" @@ -1470,17 +1460,6 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" -"@emotion/css@11.10.5": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.10.5.tgz#ca01bb83ce60517bc3a5c01d27ccf552fed84d9d" - integrity sha512-maJy0wG82hWsiwfJpc3WrYsyVwUbdu+sdIseKUB+/OLjB8zgc3tqkT6eO0Yt0AhIkJwGGnmMY/xmQwEAgQ4JHA== - dependencies: - "@emotion/babel-plugin" "^11.10.5" - "@emotion/cache" "^11.10.5" - "@emotion/serialize" "^1.1.1" - "@emotion/sheet" "^1.2.1" - "@emotion/utils" "^1.2.0" - "@emotion/css@11.10.6": version "11.10.6" resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.10.6.tgz#5d226fdd8ef2a46d28e4eb09f66dc01a3bda5a04" @@ -1523,20 +1502,6 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@11.10.5", "@emotion/react@^11.8.1": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" - integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.5" - "@emotion/cache" "^11.10.5" - "@emotion/serialize" "^1.1.1" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - hoist-non-react-statics "^3.3.1" - "@emotion/react@11.10.6": version "11.10.6" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11" @@ -1565,6 +1530,20 @@ "@emotion/weak-memoize" "^0.3.1" hoist-non-react-statics "^3.3.1" +"@emotion/react@^11.8.1": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" + integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + hoist-non-react-statics "^3.3.1" + "@emotion/serialize@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" @@ -1783,31 +1762,36 @@ uplot "1.6.26" xss "^1.0.14" -"@grafana/data@9.3.0-beta1": - version "9.3.0-beta1" - resolved "https://registry.yarnpkg.com/@grafana/data/-/data-9.3.0-beta1.tgz#0c1d8da18b8f9a5c7e77312a1b36daf394bfc596" - integrity sha512-36ozpmsPjSW+yA/QFIX5j63aRV2sxQwros73YStV7x3aGM2P/vaxKm/Zux84uJxihwA9Ao8bf6RXTP3GBKcvSg== +"@grafana/data@10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-10.2.2.tgz#fca2c0029acf41e79f2e84e837758faa7519567b" + integrity sha512-ofiUOQw8E9qG9FKIERWSSHdAU2p+w1jzuqy49giDJfxDaskcin5We5VWamSONqYPYP/tCjZcGkvnsVa/uwU37A== dependencies: - "@braintree/sanitize-url" "6.0.1" - "@grafana/schema" "9.3.0-beta1" - "@types/d3-interpolate" "^1.4.0" - d3-interpolate "1.4.0" - date-fns "2.29.3" - eventemitter3 "4.0.7" + "@braintree/sanitize-url" "6.0.2" + "@grafana/schema" "10.2.2" + "@types/d3-interpolate" "^3.0.0" + "@types/string-hash" "1.1.1" + d3-interpolate "3.0.1" + date-fns "2.30.0" + dompurify "^2.4.3" + eventemitter3 "5.0.1" fast_array_intersect "1.1.0" history "4.10.1" lodash "4.17.21" - marked "4.2.0" + marked "5.1.1" + marked-mangle "1.1.0" moment "2.29.4" - moment-timezone "0.5.38" - ol "7.1.0" - papaparse "5.3.2" - regenerator-runtime "0.13.10" - rxjs "7.5.7" - tinycolor2 "1.4.2" - tslib "2.4.1" - uplot "1.6.22" - xss "1.0.14" + moment-timezone "0.5.43" + ol "7.4.0" + papaparse "5.4.1" + react-use "17.4.0" + regenerator-runtime "0.13.11" + rxjs "7.8.1" + string-hash "^1.1.3" + tinycolor2 "1.6.0" + tslib "2.6.0" + uplot "1.6.27" + xss "^1.0.14" "@grafana/data@9.5.2": version "9.5.2" @@ -1837,31 +1821,36 @@ uplot "1.6.24" xss "^1.0.14" -"@grafana/data@^9.2.4": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@grafana/data/-/data-9.2.4.tgz#38067f207006c07754c3ed5a8835dc1909df7e2d" - integrity sha512-ukrvtQ0CzijpRZhBriv3LX935BKXRX4jf9l+jgK2uZJSYFAMbgz/Fvfagfr7sYmIPe8Ms4r3hslu2hbynWHzTw== +"@grafana/data@^10.2.3": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-10.2.3.tgz#1e454ef319aaecfe1318d57abb3966bbf3a5f0ba" + integrity sha512-AmPPSVvgnUP26ZbItPrlmwdMq5CV5qOPokPnH4XWKWjCRJPRK/OMkDI1L6NxYFyq89dKEzElFdRhRRI2TIk29g== dependencies: - "@braintree/sanitize-url" "6.0.0" - "@grafana/schema" "9.2.4" - "@types/d3-interpolate" "^1.4.0" - d3-interpolate "1.4.0" - date-fns "2.29.1" - eventemitter3 "4.0.7" + "@braintree/sanitize-url" "6.0.2" + "@grafana/schema" "10.2.3" + "@types/d3-interpolate" "^3.0.0" + "@types/string-hash" "1.1.1" + d3-interpolate "3.0.1" + date-fns "2.30.0" + dompurify "^2.4.3" + eventemitter3 "5.0.1" fast_array_intersect "1.1.0" history "4.10.1" lodash "4.17.21" - marked "4.1.0" + marked "5.1.1" + marked-mangle "1.1.0" moment "2.29.4" - moment-timezone "0.5.35" - ol "6.15.1" - papaparse "5.3.2" - regenerator-runtime "0.13.9" - rxjs "7.5.6" - tinycolor2 "1.4.2" - tslib "2.4.0" - uplot "1.6.22" - xss "1.0.13" + moment-timezone "0.5.43" + ol "7.4.0" + papaparse "5.4.1" + react-use "17.4.0" + regenerator-runtime "0.14.0" + rxjs "7.8.1" + string-hash "^1.1.3" + tinycolor2 "1.6.0" + tslib "2.6.0" + uplot "1.6.27" + xss "^1.0.14" "@grafana/e2e-selectors@10.0.2": version "10.0.2" @@ -1890,13 +1879,13 @@ tslib "2.6.0" typescript "4.8.4" -"@grafana/e2e-selectors@9.3.0-beta1": - version "9.3.0-beta1" - resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-9.3.0-beta1.tgz#49ca6a4957763a8fee8560a5cd7f546a3f4853d3" - integrity sha512-0uG9eltmh/FPLk32+pfpw4Vz8WQNuVOy/E4pnIh2Wv9BlqHWxrABX7o6YlXzlCQMv8mxhCcey/OxJHC4AZxPzA== +"@grafana/e2e-selectors@10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-10.2.2.tgz#6707e3c6d501cb5e971daf052d6c17d99cbffd32" + integrity sha512-Ee/+AfjHSoEshdlm7WeLzWpTSLGuhsarx9Q3K9ar8NxfQmDYFHyp1dW3YGyWsxiDHdnEYt9jLw8wbvr5kM6iOA== dependencies: "@grafana/tsconfig" "^1.2.0-rc1" - tslib "2.4.1" + tslib "2.6.0" typescript "4.8.4" "@grafana/e2e-selectors@9.5.2": @@ -1922,16 +1911,6 @@ eslint-plugin-react-hooks "4.6.0" typescript "4.8.4" -"@grafana/faro-core@^1.0.0-beta2": - version "1.0.0-beta2" - resolved "https://registry.yarnpkg.com/@grafana/faro-core/-/faro-core-1.0.0-beta2.tgz#97636677c1d687b0b238642a3978334652f263a5" - integrity sha512-htw6qrl4EsjxUrIugd+85H8voIxm+Vs8uOl4gGhsscb1/nUJoqTZmegUTXR+sYGyWZdHztoGV+rm5yerWrKCbQ== - dependencies: - "@opentelemetry/api" "^1.1.0" - "@opentelemetry/api-metrics" "^0.33.0" - "@opentelemetry/otlp-transformer" "^0.33.0" - fast-deep-equal "^3.1.3" - "@grafana/faro-core@^1.0.0-beta4": version "1.0.0-beta4" resolved "https://registry.yarnpkg.com/@grafana/faro-core/-/faro-core-1.0.0-beta4.tgz#2f38e18764c0a3c3f1af889d510a2896bcb742ab" @@ -1970,15 +1949,6 @@ "@opentelemetry/otlp-transformer" "^0.41.2" murmurhash-js "^1.0.0" -"@grafana/faro-web-sdk@1.0.0-beta2": - version "1.0.0-beta2" - resolved "https://registry.yarnpkg.com/@grafana/faro-web-sdk/-/faro-web-sdk-1.0.0-beta2.tgz#d096a350d6366a108428a205753c797802eb480d" - integrity sha512-Z/ZbMpBG4/+ZHuPntVTANvStBP1pkDT3+oqKDYW3O4iP4wBhIUyXk7Pmr9LJZIjcStBizEFMH/N/F/gyD5DHjQ== - dependencies: - "@grafana/faro-core" "^1.0.0-beta2" - ua-parser-js "^1.0.32" - web-vitals "^3.0.4" - "@grafana/faro-web-sdk@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@grafana/faro-web-sdk/-/faro-web-sdk-1.0.2.tgz#24e305a5d91fccc9c57577606f0adb12ad7f4a93" @@ -2048,21 +2018,21 @@ react-dom "^18.0.0" tinycolor2 "1.6.0" -"@grafana/runtime@9.3.0-beta1": - version "9.3.0-beta1" - resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-9.3.0-beta1.tgz#4bcd5d8c24c1e810b254f113598cbb1cb759ee16" - integrity sha512-Fd87OXQbf9IqGeOitwF8KBuyvw9Yv9VDmC30UKCvpQVtKTYoHngEYXMD1ZLUgmb4G18PYDsBqYfth4InfPAlSQ== +"@grafana/runtime@^10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-10.2.2.tgz#18cdd4f00798dccfa22c34d8685651eb4c1022a7" + integrity sha512-AYpGujmqFfB58oAQITI1o6P2+zSWWUSoWaXout8N+ZhcES9CSh5Tbr/LXFqu/gAC4oOsOIEM/N2Nje5wSRB8Iw== dependencies: - "@grafana/data" "9.3.0-beta1" - "@grafana/e2e-selectors" "9.3.0-beta1" - "@grafana/faro-web-sdk" "1.0.0-beta2" - "@grafana/ui" "9.3.0-beta1" - "@sentry/browser" "6.19.7" + "@grafana/data" "10.2.2" + "@grafana/e2e-selectors" "10.2.2" + "@grafana/faro-web-sdk" "1.2.1" + "@grafana/ui" "10.2.2" history "4.10.1" lodash "4.17.21" - rxjs "7.5.7" - systemjs "0.20.19" - tslib "2.4.1" + rxjs "7.8.1" + systemjs "6.14.2" + systemjs-cjs-extra "0.2.0" + tslib "2.6.0" "@grafana/scenes@^1.28.0": version "1.28.0" @@ -2089,19 +2059,19 @@ dependencies: tslib "2.6.0" -"@grafana/schema@9.2.4": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-9.2.4.tgz#d96bfa80ef0f5e59d83002544d4570c19d79b934" - integrity sha512-O5lZrT2AdVNisGhqaEjat0MgHlnKN1M3vbdaEcvrXwyXOaZU6V/A3LjR+pNAcplYgw+9BjBdm/83vQFgQZ2s2g== +"@grafana/schema@10.2.2", "@grafana/schema@^10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-10.2.2.tgz#7bcb44ffccd72c2a30f99c85bcc188dd4bddfd19" + integrity sha512-VDMO2Ev/mSsQxOkwo2u3uQocoyfxJGaGTfAMRGgeejmYJVQsK3Ka6/ImGmqvCViE5uade5/rx7kKfLnj6Yc0Yg== dependencies: - tslib "2.4.0" + tslib "2.6.0" -"@grafana/schema@9.3.0-beta1": - version "9.3.0-beta1" - resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-9.3.0-beta1.tgz#0554d8a6c9de51e3f55f00da614d8c8f091980ab" - integrity sha512-/12NkJXGfbo3bWPUMsSGJXZiLOil3TX2xoiL86ssnziSdzN9b7uJ6xhdEUfZ3sdm4pXuiBq4tlJ9FUP6n6he8Q== +"@grafana/schema@10.2.3": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-10.2.3.tgz#a33db1c890da6d7d4cbb9d749ee3a070a1ba7d2b" + integrity sha512-D/fcdvRy58uBlw6JljItgzzh+ZCazxRgZm61RZ6wQjuk810sW+P9D9J5aDy8z5qWAzDrnroB5/+uMiNwdk4CBA== dependencies: - tslib "2.4.1" + tslib "2.6.0" "@grafana/schema@9.5.2": version "9.5.2" @@ -2110,13 +2080,6 @@ dependencies: tslib "2.5.0" -"@grafana/schema@^10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-10.2.2.tgz#7bcb44ffccd72c2a30f99c85bcc188dd4bddfd19" - integrity sha512-VDMO2Ev/mSsQxOkwo2u3uQocoyfxJGaGTfAMRGgeejmYJVQsK3Ka6/ImGmqvCViE5uade5/rx7kKfLnj6Yc0Yg== - dependencies: - tslib "2.6.0" - "@grafana/toolkit@^9.5.2": version "9.5.2" resolved "https://registry.yarnpkg.com/@grafana/toolkit/-/toolkit-9.5.2.tgz#39f58b32050bbc7ca6860e1ebfe7378f68a0abca" @@ -2212,74 +2175,76 @@ resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-1.2.0-rc1.tgz#10973c978ec95b0ea637511254b5f478bce04de7" integrity sha512-+SgQeBQ1pT6D/E3/dEdADqTrlgdIGuexUZ8EU+8KxQFKUeFeU7/3z/ayI2q/wpJ/Kr6WxBBNlrST6aOKia19Ag== -"@grafana/ui@9.3.0-beta1": - version "9.3.0-beta1" - resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-9.3.0-beta1.tgz#941db8fab3f570e1639257311c514cd6708fb297" - integrity sha512-40bQV7gHqONb18G7MmhueuvJcX+DGJYeKTiexZ+wLEW46/74iBIhRI5RyDQsqFntnZpOeVZuQQODWPlZZ7lYpw== +"@grafana/ui@10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-10.2.2.tgz#3f3f2f20c29c301aa492398892081fcaa123c48f" + integrity sha512-45aZ9PL0lQeTSRfW916VWyTAm2u3a5bKihgiT8GX5a5Dm9+++xGwcOXVOwlIRIuLpWMJXqgg9MIrslZwfzCzhQ== dependencies: - "@emotion/css" "11.10.5" - "@emotion/react" "11.10.5" - "@grafana/data" "9.3.0-beta1" - "@grafana/e2e-selectors" "9.3.0-beta1" - "@grafana/schema" "9.3.0-beta1" - "@leeoniya/ufuzzy" "0.8.0" - "@monaco-editor/react" "4.4.6" - "@popperjs/core" "2.11.6" - "@react-aria/button" "3.6.1" - "@react-aria/dialog" "3.3.1" - "@react-aria/focus" "3.8.0" - "@react-aria/menu" "3.6.1" - "@react-aria/overlays" "3.10.1" - "@react-aria/utils" "3.13.1" - "@react-stately/menu" "3.4.1" - "@sentry/browser" "6.19.7" + "@emotion/css" "11.11.2" + "@emotion/react" "11.11.1" + "@grafana/data" "10.2.2" + "@grafana/e2e-selectors" "10.2.2" + "@grafana/faro-web-sdk" "1.2.1" + "@grafana/schema" "10.2.2" + "@leeoniya/ufuzzy" "1.0.8" + "@monaco-editor/react" "4.6.0" + "@popperjs/core" "2.11.8" + "@react-aria/button" "3.8.0" + "@react-aria/dialog" "3.5.3" + "@react-aria/focus" "3.13.0" + "@react-aria/menu" "3.10.0" + "@react-aria/overlays" "3.15.0" + "@react-aria/utils" "3.18.0" + "@react-stately/menu" "3.5.3" ansicolor "1.1.100" calculate-size "1.1.1" classnames "2.3.2" - core-js "3.26.0" - d3 "5.15.0" - date-fns "2.29.3" + core-js "3.33.0" + d3 "7.8.5" + date-fns "2.30.0" hoist-non-react-statics "3.3.2" i18next "^22.0.0" - immutable "4.1.0" + i18next-browser-languagedetector "^7.0.2" + immutable "4.3.1" is-hotkey "0.2.0" - jquery "3.6.1" + jquery "3.7.0" lodash "4.17.21" - memoize-one "6.0.0" + micro-memoize "^4.1.2" moment "2.29.4" monaco-editor "0.34.0" - ol "7.1.0" + ol "7.4.0" prismjs "1.29.0" - rc-cascader "3.7.0" - rc-drawer "4.4.3" - rc-slider "10.0.1" + rc-cascader "3.18.1" + rc-drawer "6.5.2" + rc-slider "10.3.1" rc-time-picker "^3.7.3" - rc-tooltip "5.2.2" + rc-tooltip "6.0.1" react-beautiful-dnd "13.1.1" - react-calendar "3.9.0" + react-calendar "4.3.0" react-colorful "5.6.1" react-custom-scrollbars-2 "4.5.0" react-dropzone "14.2.3" - react-highlight-words "0.18.0" + react-highlight-words "0.20.0" react-hook-form "7.5.3" react-i18next "^12.0.0" - react-inlinesvg "3.0.1" + react-inlinesvg "3.0.2" + react-loading-skeleton "3.3.1" react-popper "2.3.0" - react-popper-tooltip "^4.3.1" - react-router-dom "^5.2.0" - react-select "5.6.0" + react-popper-tooltip "4.4.2" + react-router-dom "5.3.3" + react-select "5.7.4" react-select-event "^5.1.0" react-table "7.8.0" react-transition-group "4.4.5" react-use "17.4.0" - react-window "1.8.8" - rxjs "7.5.7" + react-window "1.8.9" + rxjs "7.8.1" slate "0.47.9" slate-plain-serializer "0.7.13" slate-react "0.22.10" - tinycolor2 "1.4.2" - tslib "2.4.1" - uplot "1.6.22" + tinycolor2 "1.6.0" + tslib "2.6.0" + uplot "1.6.27" uuid "9.0.0" "@grafana/ui@9.5.2": @@ -2875,11 +2840,6 @@ resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== -"@leeoniya/ufuzzy@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@leeoniya/ufuzzy/-/ufuzzy-0.8.0.tgz#2ccfc29453e168ce5866bf6dee89771db404a7f7" - integrity sha512-EOc0fEsIqe6CDZxC14efhybnPcXyJi7VaZby40mWASZD0CI78ONoF+4+LGlcT58jsAIwEims5ARbRqo+BVHEAQ== - "@leeoniya/ufuzzy@1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@leeoniya/ufuzzy/-/ufuzzy-1.0.6.tgz#cbafcff1529d9592b92bd735f1e8b18f23eda983" @@ -2988,14 +2948,14 @@ dependencies: "@opentelemetry/api" "^1.0.0" -"@opentelemetry/api-metrics@0.33.0", "@opentelemetry/api-metrics@^0.33.0": +"@opentelemetry/api-metrics@^0.33.0": version "0.33.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api-metrics/-/api-metrics-0.33.0.tgz#753d355289b7811ad254d6e5b0193bd1b9f23ab0" integrity sha512-78evfPRRRnJA6uZ3xuBuS3VZlXTO/LRs+Ff1iv3O/7DgibCtq9k27T6Zlj8yRdJDFmcjcbQrvC0/CpDpWHaZYA== dependencies: "@opentelemetry/api" "^1.0.0" -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.1.0", "@opentelemetry/api@^1.3.0": +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.3.0.tgz#27c6f776ac3c1c616651e506a89f438a0ed6a055" integrity sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ== @@ -3032,13 +2992,6 @@ dependencies: "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/core@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.7.0.tgz#83bdd1b7a4ceafcdffd6590420657caec5f7b34c" - integrity sha512-AVqAi5uc8DrKJBimCTFUT4iFI+5eXpo4sYmGbQ0CypG0piOTHE2g9c5aSoTGYXu3CzOmJZf7pT6Xh+nwm5d6yQ== - dependencies: - "@opentelemetry/semantic-conventions" "1.7.0" - "@opentelemetry/core@1.8.0", "@opentelemetry/core@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.8.0.tgz#cca18594dd48ded6dc0d08c7e789c79af0315934" @@ -3123,17 +3076,6 @@ "@opentelemetry/sdk-metrics" "1.8.0" "@opentelemetry/sdk-trace-base" "1.8.0" -"@opentelemetry/otlp-transformer@^0.33.0": - version "0.33.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.33.0.tgz#6fd3ddc944f017da08d445f142cad1779770e0e0" - integrity sha512-L4OpsUaki9/Fib17t44YkDvAz3RpMZTtl6hYBhcTqAnqY0wVBpQf0ra25GyHQTKj+oiA//ZxvOlmmM/dXCYxoQ== - dependencies: - "@opentelemetry/api-metrics" "0.33.0" - "@opentelemetry/core" "1.7.0" - "@opentelemetry/resources" "1.7.0" - "@opentelemetry/sdk-metrics" "0.33.0" - "@opentelemetry/sdk-trace-base" "1.7.0" - "@opentelemetry/otlp-transformer@^0.37.0": version "0.37.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.37.0.tgz#5de4bf39da9a14841ca0ebd7ac220801d616de64" @@ -3172,14 +3114,6 @@ "@opentelemetry/core" "1.15.2" "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/resources@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.7.0.tgz#90ccd3a6a86b4dfba4e833e73944bd64958d78c5" - integrity sha512-u1M0yZotkjyKx8dj+46Sg5thwtOTBmtRieNXqdCRiWUp6SfFiIP0bI+1XK3LhuXqXkBXA1awJZaTqKduNMStRg== - dependencies: - "@opentelemetry/core" "1.7.0" - "@opentelemetry/semantic-conventions" "1.7.0" - "@opentelemetry/resources@1.8.0", "@opentelemetry/resources@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.8.0.tgz#260be9742cf7bceccc0db928d8ca8d64391acfe3" @@ -3196,16 +3130,6 @@ "@opentelemetry/core" "1.15.2" "@opentelemetry/resources" "1.15.2" -"@opentelemetry/sdk-metrics@0.33.0": - version "0.33.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-0.33.0.tgz#c4e51decc6e3bb0e1e97c7b081955d357e46c2fe" - integrity sha512-ZXPixOlTd/FHLwpkmm5nTpJE7bZOPfmbSz8hBVFCEHkXE1aKEKaM38UFnZ+2xzOY1tDsDwyxEiiBiDX8y3039A== - dependencies: - "@opentelemetry/api-metrics" "0.33.0" - "@opentelemetry/core" "1.7.0" - "@opentelemetry/resources" "1.7.0" - lodash.merge "4.6.2" - "@opentelemetry/sdk-metrics@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.11.0.tgz#0fe347fb39a802ec270315cba0eba2e3ce64c4a2" @@ -3251,15 +3175,6 @@ "@opentelemetry/resources" "1.15.2" "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/sdk-trace-base@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.7.0.tgz#b498424e0c6340a9d80de63fd408c5c2130a60a5" - integrity sha512-Iz84C+FVOskmauh9FNnj4+VrA+hG5o+tkMzXuoesvSfunVSioXib0syVFeNXwOm4+M5GdWCuW632LVjqEXStIg== - dependencies: - "@opentelemetry/core" "1.7.0" - "@opentelemetry/resources" "1.7.0" - "@opentelemetry/semantic-conventions" "1.7.0" - "@opentelemetry/sdk-trace-base@1.8.0", "@opentelemetry/sdk-trace-base@^1.0.0", "@opentelemetry/sdk-trace-base@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.8.0.tgz#70713aab90978a16dea188c8335209f857be7384" @@ -3288,11 +3203,6 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241" integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw== -"@opentelemetry/semantic-conventions@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.7.0.tgz#af80a1ef7cf110ea3a68242acd95648991bcd763" - integrity sha512-FGBx/Qd09lMaqQcogCHyYrFEpTx4cAjeS+48lMIR12z7LdH+zofGDVQSubN59nL6IpubfKqTeIDu9rNO28iHVA== - "@opentelemetry/semantic-conventions@1.8.0", "@opentelemetry/semantic-conventions@^1.0.0", "@opentelemetry/semantic-conventions@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.8.0.tgz#fe2aa90e6df050a11cd57f5c0f47b0641fd2cad3" @@ -4219,18 +4129,6 @@ resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4" integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA== -"@types/d3-color@^1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.2.tgz#944f281d04a0f06e134ea96adbb68303515b2784" - integrity sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA== - -"@types/d3-interpolate@^1.4.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz#88902a205f682773a517612299a44699285eed7b" - integrity sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg== - dependencies: - "@types/d3-color" "^1" - "@types/d3-interpolate@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc" @@ -6239,16 +6137,16 @@ command-exists@^1.2.9: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@2, commander@^2.20.0, commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@7, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^2.20.0, commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" @@ -6380,11 +6278,6 @@ core-js-pure@^3.25.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.0.tgz#7ad8a5dd7d910756f3124374b50026e23265ca9a" integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA== -core-js@3.26.0: - version "3.26.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.0.tgz#a516db0ed0811be10eac5d94f3b8463d03faccfe" - integrity sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw== - core-js@3.28.0: version "3.28.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" @@ -6669,11 +6562,6 @@ csstype@^3.0.2, csstype@^3.0.6: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== -d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" - integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== - "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: version "3.2.3" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.3.tgz#39f1f4954e4a09ff69ac597c2d61906b04e84740" @@ -6681,27 +6569,11 @@ d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: dependencies: internmap "1 - 2" -d3-axis@1: - version "1.0.12" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" - integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== - d3-axis@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== -d3-brush@1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.6.tgz#b0a22c7372cabec128bdddf9bddc058592f89e9b" - integrity sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - d3-brush@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" @@ -6713,14 +6585,6 @@ d3-brush@3: d3-selection "3" d3-transition "3" -d3-chord@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" - integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== - dependencies: - d3-array "1" - d3-path "1" - d3-chord@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" @@ -6728,28 +6592,11 @@ d3-chord@3: dependencies: d3-path "1 - 3" -d3-collection@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" - integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== - -d3-color@1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" - integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== - "d3-color@1 - 3", d3-color@3: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== -d3-contour@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" - integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== - dependencies: - d3-array "^1.1.1" - d3-contour@4: version "4.0.2" resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" @@ -6764,24 +6611,11 @@ d3-delaunay@6: dependencies: delaunator "5" -d3-dispatch@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" - integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== - "d3-dispatch@1 - 3", d3-dispatch@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -d3-drag@1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" - integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== - dependencies: - d3-dispatch "1" - d3-selection "1" - "d3-drag@2 - 3", d3-drag@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" @@ -6790,15 +6624,6 @@ d3-drag@1: d3-dispatch "1 - 3" d3-selection "3" -d3-dsv@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" - integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - "d3-dsv@1 - 3", d3-dsv@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" @@ -6808,23 +6633,11 @@ d3-dsv@1: iconv-lite "0.6" rw "1" -d3-ease@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.7.tgz#9a834890ef8b8ae8c558b2fe55bd57f5993b85e2" - integrity sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ== - "d3-ease@1 - 3", d3-ease@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== -d3-fetch@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.2.0.tgz#15ce2ecfc41b092b1db50abd2c552c2316cf7fc7" - integrity sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA== - dependencies: - d3-dsv "1" - d3-fetch@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" @@ -6832,16 +6645,6 @@ d3-fetch@3: dependencies: d3-dsv "1 - 3" -d3-force@1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" - integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" - d3-force@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" @@ -6851,23 +6654,11 @@ d3-force@3: d3-quadtree "1 - 3" d3-timer "1 - 3" -d3-format@1: - version "1.4.5" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" - integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== - "d3-format@1 - 3", d3-format@3: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== -d3-geo@1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.1.tgz#7fc2ab7414b72e59fbcbd603e80d9adc029b035f" - integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg== - dependencies: - d3-array "1" - d3-geo@3: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.0.tgz#74fd54e1f4cebd5185ac2039217a98d39b0a4c0e" @@ -6875,23 +6666,11 @@ d3-geo@3: dependencies: d3-array "2.5.0 - 3" -d3-hierarchy@1: - version "1.1.9" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" - integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== - d3-hierarchy@3: version "3.1.2" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -d3-interpolate@1, d3-interpolate@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" - integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== - dependencies: - d3-color "1" - "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" @@ -6899,54 +6678,26 @@ d3-interpolate@1, d3-interpolate@1.4.0: dependencies: d3-color "1 - 3" -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - "d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== -d3-polygon@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" - integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== - d3-polygon@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== -d3-quadtree@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== - "d3-quadtree@1 - 3", d3-quadtree@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== -d3-random@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" - integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== - d3-random@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== -d3-scale-chromatic@1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" - integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== - dependencies: - d3-color "1" - d3-interpolate "1" - d3-scale-chromatic@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a" @@ -6955,18 +6706,6 @@ d3-scale-chromatic@3: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" - integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== - dependencies: - d3-array "^1.2.0" - d3-collection "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - d3-scale@4: version "4.0.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" @@ -6978,23 +6717,11 @@ d3-scale@4: d3-time "2.1.1 - 3" d3-time-format "2 - 4" -d3-selection@1, d3-selection@^1.1.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.2.tgz#dcaa49522c0dbf32d6c1858afc26b6094555bc5c" - integrity sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg== - "d3-selection@2 - 3", d3-selection@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== -d3-shape@1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - d3-shape@3: version "3.2.0" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" @@ -7002,13 +6729,6 @@ d3-shape@3: dependencies: d3-path "^3.1.0" -d3-time-format@2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850" - integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ== - dependencies: - d3-time "1" - "d3-time-format@2 - 4", d3-time-format@4: version "4.1.0" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" @@ -7016,11 +6736,6 @@ d3-time-format@2: dependencies: d3-time "1 - 3" -d3-time@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" - integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== - "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" @@ -7028,28 +6743,11 @@ d3-time@1: dependencies: d3-array "2 - 3" -d3-timer@1: - version "1.0.10" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" - integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== - "d3-timer@1 - 3", d3-timer@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -d3-transition@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" - integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - "d3-transition@2 - 3", d3-transition@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" @@ -7061,22 +6759,6 @@ d3-transition@1: d3-interpolate "1 - 3" d3-timer "1 - 3" -d3-voronoi@1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" - integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== - -d3-zoom@1: - version "1.8.3" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" - integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - d3-zoom@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" @@ -7088,43 +6770,6 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -d3@5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz#ffd44958e6a3cb8a59a84429c45429b8bca5677a" - integrity sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg== - dependencies: - d3-array "1" - d3-axis "1" - d3-brush "1" - d3-chord "1" - d3-collection "1" - d3-color "1" - d3-contour "1" - d3-dispatch "1" - d3-drag "1" - d3-dsv "1" - d3-ease "1" - d3-fetch "1" - d3-force "1" - d3-format "1" - d3-geo "1" - d3-hierarchy "1" - d3-interpolate "1" - d3-path "1" - d3-polygon "1" - d3-quadtree "1" - d3-random "1" - d3-scale "2" - d3-scale-chromatic "1" - d3-selection "1" - d3-shape "1" - d3-time "1" - d3-time-format "2" - d3-timer "1" - d3-transition "1" - d3-voronoi "1" - d3-zoom "1" - d3@7.8.2: version "7.8.2" resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.2.tgz#2bdb3c178d095ae03b107a18837ae049838e372d" @@ -7206,11 +6851,6 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.1.tgz#9667c2615525e552b5135a3116b95b1961456e60" - integrity sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw== - date-fns@2.29.3: version "2.29.3" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" @@ -8097,11 +7737,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@4.0.7, eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - eventemitter3@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.0.tgz#084eb7f5b5388df1451e63f4c2aafd71b217ccb3" @@ -8112,6 +7747,11 @@ eventemitter3@5.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -8583,19 +8223,6 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -geotiff@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/geotiff/-/geotiff-2.0.4.tgz#d6f231fdd76186aba21c61823ed759fcbf5d4f86" - integrity sha512-aG8h9bJccGusioPsEWsEqx8qdXpZN71A20WCvRKGxcnHSOWLKmC5ZmsAmodfxb9TRQvs+89KikGuPzxchhA+Uw== - dependencies: - "@petamoriken/float16" "^3.4.7" - lerc "^3.0.0" - lru-cache "^6.0.0" - pako "^2.0.4" - parse-headers "^2.0.2" - web-worker "^1.2.0" - xml-utils "^1.0.2" - geotiff@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/geotiff/-/geotiff-2.0.7.tgz#358e578233af70bfb0b4dee62d599ad78fc5cfca" @@ -9146,7 +8773,7 @@ i18next@^22.0.0: dependencies: "@babel/runtime" "^7.17.2" -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -9190,11 +8817,6 @@ immutability-helper@^3.1.1: resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-3.1.1.tgz#2b86b2286ed3b1241c9e23b7b21e0444f52f77b7" integrity sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ== -immutable@4.1.0, immutable@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== - immutable@4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a" @@ -9210,6 +8832,11 @@ immutable@4.3.1: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A== +immutable@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -10324,11 +9951,6 @@ jest@27.5.1: import-local "^3.0.2" jest-cli "^27.5.1" -jquery@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16" - integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== - jquery@3.6.3: version "3.6.3" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.3.tgz#23ed2ffed8a19e048814f13391a19afcdba160e6" @@ -10868,16 +10490,6 @@ marked-mangle@1.1.0: resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.0.tgz#f9f0adfbb841079d7342368bc5c7592ba93e3527" integrity sha512-ed2W2gMB2HIBaYasBZveMFJfDRTL2OFycr0GgUSPcBSNl5dX+1r6lHG6u1eFXw7kej2hBTWa1m6YZqcfn4Coxw== -marked@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.0.tgz#3fc6e7485f21c1ca5d6ec4a39de820e146954796" - integrity sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA== - -marked@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.0.tgz#f1683b077626a6c53e28926b798a18184aa13a91" - integrity sha512-1qWHjHlBKwjnDfrkxd0L3Yx4LTad/WO7+d13YsXAC/ZfKj7p0xkLV3sDXJzfWgL7GfW4IBZwMAYWaz+ifyQouQ== - marked@4.2.12: version "4.2.12" resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5" @@ -10978,11 +10590,6 @@ meow@^9.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -merge-class-names@^1.1.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/merge-class-names/-/merge-class-names-1.4.2.tgz#78d6d95ab259e7e647252a7988fd25a27d5a8835" - integrity sha512-bOl98VzwCGi25Gcn3xKxnR5p/WrhWFQB59MS/aGENcmUc6iSm96yrFDF0XSNurX9qN4LbJm0R9kfvsQ17i8zCw== - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -11152,20 +10759,6 @@ module-details-from-path@^1.0.3: resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== -moment-timezone@0.5.35: - version "0.5.35" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.35.tgz#6fa2631bdbe8ff04f6b8753f7199516be6dc9839" - integrity sha512-cY/pBOEXepQvlgli06ttCTKcIf8cD1nmNwOKQQAdHBqYApQSpAqotBMX0RJZNgMp6i0PlZuf1mFtnlyEkwyvFw== - dependencies: - moment ">= 2.9.0" - -moment-timezone@0.5.38, moment-timezone@^0.5.35: - version "0.5.38" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.38.tgz#9674a5397b8be7c13de820fd387d8afa0f725aad" - integrity sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q== - dependencies: - moment ">= 2.9.0" - moment-timezone@0.5.41: version "0.5.41" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.41.tgz#a7ad3285fd24aaf5f93b8119a9d749c8039c64c5" @@ -11180,6 +10773,13 @@ moment-timezone@0.5.43: dependencies: moment "^2.29.4" +moment-timezone@^0.5.35: + version "0.5.38" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.38.tgz#9674a5397b8be7c13de820fd387d8afa0f725aad" + integrity sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q== + dependencies: + moment ">= 2.9.0" + moment@2.29.4, moment@2.x, "moment@>= 2.9.0", moment@^2.29.4: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" @@ -11526,14 +11126,6 @@ object.values@^1.1.5: define-properties "^1.1.4" es-abstract "^1.20.4" -ol-mapbox-style@9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-9.1.0.tgz#1504b1a2c3cc23482c3c95cd55a1cf1d2ac8a451" - integrity sha512-R/XE6FdviaXNdnSw6ItHSEreMtQU68cwQCGv4Kl8yG0V1dZhnI5JWr8IOphJwffPVxfWTCnJb5aALGSB89MvhA== - dependencies: - "@mapbox/mapbox-gl-style-spec" "^13.23.1" - mapbox-to-css-font "^2.4.1" - ol-mapbox-style@^10.1.0: version "10.7.0" resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-10.7.0.tgz#8837912da2a16fbd22992d76cbc4f491c838b973" @@ -11543,14 +11135,6 @@ ol-mapbox-style@^10.1.0: mapbox-to-css-font "^2.4.1" ol "^7.3.0" -ol-mapbox-style@^8.0.5: - version "8.2.1" - resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz#0f0c252b6495853a137d7e4dd3f915fab664b356" - integrity sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw== - dependencies: - "@mapbox/mapbox-gl-style-spec" "^13.23.1" - mapbox-to-css-font "^2.4.1" - ol-mapbox-style@^9.2.0: version "9.7.0" resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-9.7.0.tgz#38a4f7abc8f0a94f378dcdb7cefdcc69ca3f6287" @@ -11559,27 +11143,6 @@ ol-mapbox-style@^9.2.0: "@mapbox/mapbox-gl-style-spec" "^13.23.1" mapbox-to-css-font "^2.4.1" -ol@6.15.1: - version "6.15.1" - resolved "https://registry.yarnpkg.com/ol/-/ol-6.15.1.tgz#364f459939ef71f970b2376a821a896529f65e3a" - integrity sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w== - dependencies: - geotiff "2.0.4" - ol-mapbox-style "^8.0.5" - pbf "3.2.1" - rbush "^3.0.1" - -ol@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ol/-/ol-7.1.0.tgz#aab69a0539e59d6a4361cbc0f69f8b00c7298c9c" - integrity sha512-mAeV5Ca4mFhYaJoGWNZnIMN5VNnFTf63FgZjBiYu/DjQDGKNsD5QyvvqVziioVdOOgl6b8rPB/ypj2XNBinPwA== - dependencies: - earcut "^2.2.3" - geotiff "2.0.4" - ol-mapbox-style "9.1.0" - pbf "3.2.1" - rbush "^3.0.1" - ol@7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/ol/-/ol-7.2.2.tgz#d675a1525fd995a29a70a9a9fa9c3a9bc827aa39" @@ -12883,18 +12446,6 @@ rc-cascader@3.18.1: rc-tree "~5.7.0" rc-util "^5.35.0" -rc-cascader@3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.7.0.tgz#98134df578ce1cca22be8fb4319b04df4f3dca36" - integrity sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A== - dependencies: - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - classnames "^2.3.1" - rc-select "~14.1.0" - rc-tree "~5.7.0" - rc-util "^5.6.1" - rc-cascader@3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.8.0.tgz#5eaca8998b2e3f5692d13f16bfe2346eccc87c6a" @@ -12907,15 +12458,6 @@ rc-cascader@3.8.0: rc-tree "~5.7.0" rc-util "^5.6.1" -rc-drawer@4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.4.3.tgz#2094937a844e55dc9644236a2d9fba79c344e321" - integrity sha512-FYztwRs3uXnFOIf1hLvFxIQP9MiZJA+0w+Os8dfDh/90X7z/HqP/Yg+noLCIeHEbKln1Tqelv8ymCAN24zPcfQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-util "^5.7.0" - rc-drawer@6.1.3: version "6.1.3" resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.1.3.tgz#4b2277db09f059be7144dc82d5afede9c2ab2191" @@ -13007,19 +12549,6 @@ rc-resize-observer@^1.3.1: rc-util "^5.27.0" resize-observer-polyfill "^1.5.1" -rc-select@~14.1.0: - version "14.1.13" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.1.13.tgz#7eb53d00be82fb8e5050de3094e72edcf27ce6f6" - integrity sha512-WMEsC3gTwA1dbzWOdVIXDmWyidYNLq68AwvvUlRROw790uGUly0/vmqDozXrIr0QvN/A3CEULx12o+WtLCAefg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-overflow "^1.0.0" - rc-trigger "^5.0.4" - rc-util "^5.16.1" - rc-virtual-list "^3.2.0" - rc-select@~14.2.0: version "14.2.2" resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.2.2.tgz#03558848b190d24fc9010a3bf1104c6dbea9b122" @@ -13059,16 +12588,6 @@ rc-select@~14.9.0: rc-util "^5.16.1" rc-virtual-list "^3.5.2" -rc-slider@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.0.1.tgz#7058c68ff1e1aa4e7c3536e5e10128bdbccb87f9" - integrity sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.18.1" - shallowequal "^1.1.0" - rc-slider@10.1.1: version "10.1.1" resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.1.1.tgz#5e82036e60b61021aba3ea0e353744dd7c74e104" @@ -13119,15 +12638,6 @@ rc-time-picker@^3.7.3: rc-trigger "^2.2.0" react-lifecycles-compat "^3.0.4" -rc-tooltip@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.2.2.tgz#e5cafa8ecebf78108936a0bcb93c150fa81ac93b" - integrity sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.3.1" - rc-trigger "^5.0.0" - rc-tooltip@5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.3.1.tgz#3dde4e1865f79cd23f202bba4e585c2a1173024b" @@ -13170,7 +12680,7 @@ rc-trigger@^2.2.0: rc-util "^4.4.0" react-lifecycles-compat "^3.0.4" -rc-trigger@^5.0.0, rc-trigger@^5.0.4: +rc-trigger@^5.0.4: version "5.3.3" resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.3.3.tgz#166013df79e6a4ce64515391bd6d4f8386839761" integrity sha512-IC4nuTSAME7RJSgwvHCNDQrIzhvGMKf6NDu5veX+zk1MG7i1UnwTWWthcP9WHw3+FZfP3oZGvkrHFPu/EGkFKw== @@ -13203,7 +12713,7 @@ rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0: react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" -rc-util@^5.15.0, rc-util@^5.16.1, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.21.0, rc-util@^5.22.5, rc-util@^5.3.0, rc-util@^5.6.1, rc-util@^5.7.0: +rc-util@^5.15.0, rc-util@^5.16.1, rc-util@^5.19.2, rc-util@^5.21.0, rc-util@^5.22.5, rc-util@^5.3.0, rc-util@^5.6.1: version "5.24.4" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.24.4.tgz#a4126f01358c86f17c1bf380a1d83d6c9155ae65" integrity sha512-2a4RQnycV9eV7lVZPEJ7QwJRPlZNc06J7CwcwZo4vIHr3PfUqtYgl1EkUV9ETAc6VRRi8XZOMFhYG63whlIC9Q== @@ -13244,20 +12754,20 @@ rc-util@^5.35.0, rc-util@^5.37.0: "@babel/runtime" "^7.18.3" react-is "^18.2.0" -rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.8: - version "3.4.11" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.11.tgz#97f5e947380d546a2ca8ad229d8e41e9b33b20c6" - integrity sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA== +rc-virtual-list@^3.4.13: + version "3.4.13" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.13.tgz#20acc934b263abcf7b7c161f50ef82281b2f7e8d" + integrity sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w== dependencies: "@babel/runtime" "^7.20.0" classnames "^2.2.6" rc-resize-observer "^1.0.0" rc-util "^5.15.0" -rc-virtual-list@^3.4.13: - version "3.4.13" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.13.tgz#20acc934b263abcf7b7c161f50ef82281b2f7e8d" - integrity sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w== +rc-virtual-list@^3.4.8: + version "3.4.11" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.11.tgz#97f5e947380d546a2ca8ad229d8e41e9b33b20c6" + integrity sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA== dependencies: "@babel/runtime" "^7.20.0" classnames "^2.2.6" @@ -13287,16 +12797,6 @@ react-beautiful-dnd@13.1.1: redux "^4.0.4" use-memo-one "^1.1.1" -react-calendar@3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-3.9.0.tgz#4dfe342ef61574c0e819e49847981076c7af58ea" - integrity sha512-g6RJCEaPovHTiV2bMhBUfm0a1YoMj4bOUpL8hQSLmR1Glhc7lgRLtZBd4mcC4jkoGsb+hv9uA/QH4pZcm5l9lQ== - dependencies: - "@wojtekmaj/date-utils" "^1.0.2" - get-user-locale "^1.2.0" - merge-class-names "^1.1.1" - prop-types "^15.6.0" - react-calendar@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.0.0.tgz#99ad73dd0c7c5b25aa535a5fdeee3d71bfe45faa" @@ -13440,15 +12940,6 @@ react-grid-layout@1.3.4: react-draggable "^4.0.0" react-resizable "^3.0.4" -react-highlight-words@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.18.0.tgz#ff3b3ef7cb497fa2e8fa4d54c1a1a98ac6390d0e" - integrity sha512-5z+46eLPjB4JWgOhuQ0E+6iUPTD1U3amiy5KKjzZmeJ5zyvHr91hnzBT3UHya/KlySm5KRTKpYpba9vs67oO2A== - dependencies: - highlight-words-core "^1.2.0" - memoize-one "^4.0.0" - prop-types "^15.5.8" - react-highlight-words@0.20.0: version "0.20.0" resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.20.0.tgz#c60bfff5d14678c8f0e8fbe4bdcf083e6c70d507" @@ -13478,14 +12969,6 @@ react-immutable-proptypes@^2.1.0: dependencies: invariant "^2.2.2" -react-inlinesvg@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/react-inlinesvg/-/react-inlinesvg-3.0.1.tgz#2133f5d2c770ac405060db2ce1c13eed30e7e83b" - integrity sha512-cBfoyfseNI2PkDA7ZKIlDoHq0eMfpoC3DhKBQNC+/X1M4ZQB+aXW+YiNPUDDDKXUsGDUIZWWiZWNFeauDIVdoA== - dependencies: - exenv "^1.2.2" - react-from-dom "^0.6.2" - react-inlinesvg@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/react-inlinesvg/-/react-inlinesvg-3.0.2.tgz#5c59799966ae7926057091b2ac230ddcee01bea0" @@ -13529,7 +13012,7 @@ react-modal@^3.15.1: react-lifecycles-compat "^3.0.0" warning "^4.0.3" -react-popper-tooltip@4.4.2, react-popper-tooltip@^4.3.1: +react-popper-tooltip@4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-4.4.2.tgz#0dc4894b8e00ba731f89bd2d30584f6032ec6163" integrity sha512-y48r0mpzysRTZAIh8m2kpZ8S1YPNqGtQPDrlXYSGvDS1c1GpG/NUXbsbIdfbhXfmSaRJuTcaT6N1q3CKuHRVbg== @@ -13640,21 +13123,6 @@ react-select-event@^5.1.0: dependencies: "@testing-library/dom" ">=7" -react-select@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.6.0.tgz#d987f4c86b3dcd32307a0104e503e4e8a9777a34" - integrity sha512-uUvP/72rA8NGhOL16RVBaeC12Wa4NUE0iXIa6hz0YRno9ZgxTmpuMeKzjR7vHcwmigpVCoe0prP+3NVb6Obq8Q== - dependencies: - "@babel/runtime" "^7.12.0" - "@emotion/cache" "^11.4.0" - "@emotion/react" "^11.8.1" - "@floating-ui/dom" "^1.0.1" - "@types/react-transition-group" "^4.4.0" - memoize-one "^6.0.0" - prop-types "^15.6.0" - react-transition-group "^4.3.0" - use-isomorphic-layout-effect "^1.1.2" - react-select@5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.0.tgz#82921b38f1fcf1471a0b62304da01f2896cd8ce6" @@ -13862,30 +13330,25 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@0.13.10, regenerator-runtime@^0.13.10: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== - regenerator-runtime@0.13.11, regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@0.13.9: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@0.14.0, regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== +regenerator-runtime@^0.13.10: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== regenerator-transform@^0.15.0: version "0.15.0" @@ -14155,20 +13618,6 @@ rw@1, rw@^1.3.3: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -rxjs@7.5.6: - version "7.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== - dependencies: - tslib "^2.1.0" - -rxjs@7.5.7, rxjs@^7.5.1, rxjs@^7.5.5: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - rxjs@7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" @@ -14190,6 +13639,13 @@ rxjs@^6.4.0, rxjs@^6.6.0: dependencies: tslib "^1.9.0" +rxjs@^7.5.1, rxjs@^7.5.5: + version "7.5.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== + dependencies: + tslib "^2.1.0" + safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -15103,10 +14559,15 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -systemjs@0.20.19: - version "0.20.19" - resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.20.19.tgz#c2b9e79c19f4bea53a19b1ed3f974ffb463be949" - integrity sha512-H/rKwNEEyej/+IhkmFNmKFyJul8tbH/muiPq5TyNoVTwsGhUjRsN3NlFnFQUvFXA3+GQmsXkCNXU6QKPl779aw== +systemjs-cjs-extra@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/systemjs-cjs-extra/-/systemjs-cjs-extra-0.2.0.tgz#e7b209ebd3ad8dafacef2afcae5481bf9c56621c" + integrity sha512-0dB6UkUNgXJ+GKt3OMONQmQV+stZPuy+0o5Bj4nP1YRtbCNtLg01sca3mSyOiBKAnqs5cjx7mTxwzomzsOFJnA== + +systemjs@6.14.2: + version "6.14.2" + resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.14.2.tgz#e289f959f8c8b407403bd39c6abaa16f2c13f316" + integrity sha512-1TlOwvKWdXxAY9vba+huLu99zrQURDWA8pUTYsRIYDZYQbGyK+pyEP4h4dlySsqo7ozyJBmYD20F+iUHhAltEg== table@^6.6.0: version "6.8.1" @@ -15228,11 +14689,6 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -tinycolor2@1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - tinycolor2@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" @@ -15445,11 +14901,6 @@ tslib@2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@2.4.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== - tslib@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" @@ -15470,6 +14921,11 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -15668,11 +15124,6 @@ update-browserslist-db@^1.0.9: escalade "^3.1.1" picocolors "^1.0.0" -uplot@1.6.22: - version "1.6.22" - resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.22.tgz#28a136c7c5fce92ce5e25f38f19314a029bec390" - integrity sha512-2jtSb/YHUgtmIUn0+QJjf7ggcJicb5PKe7ijBiRDTPsG/f8F/MFayZ+g6/0kATNkDyF/qQsHJDmCp6cxncg1EQ== - uplot@1.6.24: version "1.6.24" resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.24.tgz#dfa213fa7da92763261920ea972ed1a5f9f6af12" @@ -15683,6 +15134,11 @@ uplot@1.6.26: resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.26.tgz#a6012fd141ad4a71741c75af0c71283d0ade45a7" integrity sha512-qN0mveL6UsP40TnHzHAJkUQvpfA3y8zSLXtXKVlJo/sLfj2+vjan/Z3g81MCZjy/hEDUFNtnLftPmETDA4s7Rg== +uplot@1.6.27: + version "1.6.27" + resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.27.tgz#d282b98ea17f8980eadb2b7d634a8b11dd4521aa" + integrity sha512-78U4ss5YeU65kQkOC/QAKiyII+4uo+TYUJJKvuxRzeSpk/s5sjpY1TL0agkmhHBBShpvLtmbHIEiM7+C5lBULg== + upper-case-first@^1.1.0, upper-case-first@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" @@ -15892,7 +15348,7 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -web-vitals@^3.0.4, web-vitals@^3.1.0: +web-vitals@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.1.0.tgz#a6f5156cb6c7fee562da46078540265ac2cd2d16" integrity sha512-zCeQ+bOjWjJbXv5ZL0r8Py3XP2doCQMZXNKlBGfUjPAVZWokApdeF/kFlK1peuKlCt8sL9TFkKzyXE9/cmNJQA== @@ -16116,15 +15572,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xss@1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.13.tgz#6e48f616128b39f366dfadc57411e1eb5b341c6c" - integrity sha512-clu7dxTm1e8Mo5fz3n/oW3UCXBfV89xZ72jM8yzo1vR/pIS0w3sgB3XV2H8Vm6zfGnHL0FzvLJPJEBhd86/z4Q== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - -xss@1.0.14, xss@^1.0.14: +xss@^1.0.14: version "1.0.14" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==