diff --git a/.config/webpack/webpack.config.ts b/.config/webpack/webpack.config.ts index a8045370..a06ff70c 100644 --- a/.config/webpack/webpack.config.ts +++ b/.config/webpack/webpack.config.ts @@ -51,7 +51,6 @@ const config = async (env): Promise => ({ 'react-router', 'react-router-dom', 'd3', - 'angular', '@grafana/ui', '@grafana/runtime', '@grafana/data', diff --git a/.github/workflows/buind_n_test.yml b/.github/workflows/buind_n_test.yml index 8ec1418a..7019b9c5 100644 --- a/.github/workflows/buind_n_test.yml +++ b/.github/workflows/buind_n_test.yml @@ -15,7 +15,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' cache: 'yarn' - name: Install dependencies run: yarn install --immutable --prefer-offline diff --git a/.github/workflows/is-compatible.yml b/.github/workflows/is-compatible.yml index 289489ab..37241324 100644 --- a/.github/workflows/is-compatible.yml +++ b/.github/workflows/is-compatible.yml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' cache: 'yarn' - name: Install dependencies run: yarn install --immutable --prefer-offline diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index df0a48f1..f7dbbcc5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' cache: 'yarn' - name: Setup Go environment diff --git a/docker-compose.yaml b/docker-compose.yaml index 98b1cd03..6fb31879 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,9 +6,9 @@ services: build: context: ./.config args: - grafana_version: ${GRAFANA_VERSION:-9.3.8} + grafana_version: ${GRAFANA_VERSION:-10.1.1} ports: - - 3000:3000/tcp + - 2999:3000/tcp volumes: - ./dist:/var/lib/grafana/plugins/cognitedata-datasource - ./provisioning:/etc/grafana/provisioning diff --git a/instructions.md b/instructions.md index 9cb76152..9a98bd83 100644 --- a/instructions.md +++ b/instructions.md @@ -36,7 +36,7 @@ Once logged in you can see that CDF is installed. 5. To set up CDF, do the following: -Go to "Configuration" click Data Sources, then Add data source, and choose Cognite Data Fusion as "Type". Give the data source a name, provide the name of the project and your API key. +Go to "Configuration" click Data Sources, then Add data source, and choose Cognite Data Fusion as "Type". Give the data source a name, provide the name of the project and your OAuth credentials. ![Configuration](./images/image9.png) diff --git a/package.json b/package.json index 1c034a79..2cd8c099 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cognite/cognite-grafana-datasource", - "version": "3.1.0", + "version": "4.0.0", "description": "Cognite Data Fusion datasource", "repository": "https://github.com/cognitedata/cognite-grafana-datasource", "author": "Cognite AS", @@ -38,7 +38,6 @@ "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.4", "@types/glob": "^8.0.0", - "@types/grafana": "https://git@github.com/CorpGlory/types-grafana.git", "@types/jest": "^29.2.2", "@types/lodash": "^4.14.188", "@types/ms": "^0.7.31", @@ -100,9 +99,10 @@ }, "dependencies": { "@emotion/css": "^11.1.3", - "@grafana/data": "^9.4.7", - "@grafana/runtime": "^9.4.7", - "@grafana/ui": "^9.4.7", + "@grafana/data": "^10.1.2", + "@grafana/runtime": "^10.1.2", + "@grafana/schema": "^10.1.2", + "@grafana/ui": "^10.1.2", "deepdash": "^4.5.4", "eslint-plugin-jsdoc": "^40.1.1", "graphql": "^16.6.0", diff --git a/src/__tests__/__snapshots__/annotations.test.ts.snap b/src/__tests__/__snapshots__/annotations.test.ts.snap deleted file mode 100644 index 5894f0eb..00000000 --- a/src/__tests__/__snapshots__/annotations.test.ts.snap +++ /dev/null @@ -1,154 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Annotations Query Given an annotation query should generate the correct request 1`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - "assetIds": [ - 123, - ], - "type": "type 1", - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; - -exports[`Annotations Query Given an annotation query where nothing is returned should generate the correct request 1`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - "type": "non-existant type", - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; - -exports[`Annotations Query Given an annotation query with a metadata request should generate the correct request 1`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - "metadata": { - "key1": "value1", - "key2": "value2", - }, - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; - -exports[`Annotations Query Given an annotation query with additional time filters should generate the correct request 1`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - "endTime": { - "isNull": false, - }, - "startTime": { - "min": 123, - }, - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; - -exports[`Annotations Query Given an annotation query with an incomplete event expression should throw a parse error 1`] = ` -"Parser: Unexpected end of input: -events{ - ^" -`; - -exports[`Annotations Query Given an annotation query with an incorrect event expression should throw a parse error 1`] = ` -"Parser: Syntax error: -events{ name=~event, foo} - ^" -`; - -exports[`Annotations Query Given an annotation query with filters should generate the correct request 1`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; - -exports[`Annotations Query Given an annotation query with variables should generate the correct request 1`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - "assetIds": [ - 123, - ], - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; - -exports[`Annotations Query Given an annotation query with variables should generate the correct request 2`] = ` -{ - "data": { - "filter": { - "activeAtTime": { - "max": 1549338475000, - "min": 1549336675000, - }, - "assetIds": [ - 123, - 456, - ], - }, - "limit": 1000, - }, - "headers": undefined, - "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/events/list", -} -`; diff --git a/src/__tests__/__snapshots__/datasource.test.ts.snap b/src/__tests__/__snapshots__/datasource.test.ts.snap index e1fddd0b..3f378174 100644 --- a/src/__tests__/__snapshots__/datasource.test.ts.snap +++ b/src/__tests__/__snapshots__/datasource.test.ts.snap @@ -12,7 +12,7 @@ exports[`Datasource Query Give "Select Timeseries of Relationships target from A }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -25,7 +25,7 @@ exports[`Datasource Query Give "Select Timeseries of Relationships target from A }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/relationships/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/relationships/list", } `; @@ -40,7 +40,7 @@ exports[`Datasource Query Give "Select Timeseries of Relationships target from A }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -63,7 +63,7 @@ exports[`Datasource Query Give "Select Timeseries of Relationships target from A "headers": undefined, "method": "POST", "requestId": "1_11_A", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/data/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/data/list", } `; @@ -79,7 +79,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -95,7 +95,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -111,7 +111,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -127,7 +127,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -148,7 +148,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -163,7 +163,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -192,7 +192,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge "headers": undefined, "method": "POST", "requestId": "1_7_C", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/data/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/data/list", } `; @@ -215,7 +215,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge "headers": undefined, "method": "POST", "requestId": "1_7_D", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/data/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/data/list", } `; @@ -321,7 +321,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -340,7 +340,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the "headers": undefined, "method": "POST", "requestId": "1_3_A", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/data/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/data/list", } `; @@ -363,7 +363,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the "headers": undefined, "method": "POST", "requestId": "1_3_B", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/data/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/data/list", } `; @@ -386,7 +386,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the "headers": undefined, "method": "POST", "requestId": "1_3_C", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/data/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/data/list", } `; @@ -402,7 +402,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -417,7 +417,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -432,7 +432,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -451,7 +451,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte "headers": undefined, "method": "POST", "requestId": "1_12_B", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/synthetic/query", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/synthetic/query", } `; @@ -470,7 +470,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte "headers": undefined, "method": "POST", "requestId": "1_12_D", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/synthetic/query", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/synthetic/query", } `; @@ -497,7 +497,7 @@ exports[`Datasource Query Given custom queries with functions should generate th }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/list", } `; @@ -518,7 +518,7 @@ exports[`Datasource Query Given custom queries with functions should generate th }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -542,7 +542,7 @@ exports[`Datasource Query Given custom queries with functions should generate th }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/byids", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/byids", } `; @@ -573,7 +573,7 @@ exports[`Datasource Query Given custom queries with functions should generate th "headers": undefined, "method": "POST", "requestId": "1_15_A", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/synthetic/query", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/synthetic/query", } `; @@ -604,7 +604,7 @@ exports[`Datasource Query Given custom queries with functions should generate th "headers": undefined, "method": "POST", "requestId": "1_15_D", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/synthetic/query", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/synthetic/query", } `; diff --git a/src/__tests__/__snapshots__/dropdown.test.ts.snap b/src/__tests__/__snapshots__/dropdown.test.ts.snap index 55087dc8..69648c6b 100644 --- a/src/__tests__/__snapshots__/dropdown.test.ts.snap +++ b/src/__tests__/__snapshots__/dropdown.test.ts.snap @@ -9,7 +9,7 @@ exports[`Dropdown Options Query Given a request for asset options should generat }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/search", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/search", } `; @@ -48,7 +48,7 @@ exports[`Dropdown Options Query Given a request for asset options with additiona }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/search?metadata=%7B%22key1%22%3A%22value1%22%7D", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/search?metadata=%7B%22key1%22%3A%22value1%22%7D", } `; @@ -73,7 +73,7 @@ exports[`Dropdown Options Query Given a request for timeseries options should ge }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/search", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/search", } `; @@ -122,7 +122,7 @@ exports[`Dropdown Options Query Given an empty request for asset options should "data": {}, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/search", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/search", } `; @@ -164,7 +164,7 @@ exports[`Dropdown Options Query Given an empty request for timeseries options sh "data": {}, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/timeseries/search", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/timeseries/search", } `; diff --git a/src/__tests__/__snapshots__/login.test.ts.snap b/src/__tests__/__snapshots__/login.test.ts.snap index b3a655b5..ea9ab6d7 100644 --- a/src/__tests__/__snapshots__/login.test.ts.snap +++ b/src/__tests__/__snapshots__/login.test.ts.snap @@ -1,50 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Login with API key When given invalid login info should display an error message 1`] = ` -{ - "method": "GET", - "url": "/api/datasources/proxy/6/cdf-api-key/login/status", -} -`; - -exports[`Login with API key When given invalid login info should display an error message 2`] = ` -{ - "message": "Your Cognite credentials are invalid", - "status": "error", - "title": "Error", -} -`; - -exports[`Login with API key When given valid login info and correct project should log the user in 1`] = ` -{ - "method": "GET", - "url": "/api/datasources/proxy/6/cdf-api-key/login/status", -} -`; - -exports[`Login with API key When given valid login info and correct project should log the user in 2`] = ` -{ - "message": "Your Cognite credentials are valid", - "status": "success", - "title": "Success", -} -`; - -exports[`Login with API key When given valid login info but incorrect project should display an error message 1`] = ` -{ - "method": "GET", - "url": "/api/datasources/proxy/6/cdf-api-key/login/status", -} -`; - -exports[`Login with API key When given valid login info but incorrect project should display an error message 2`] = ` -{ - "message": "Cannot access 'TestProject' project", - "status": "warning", - "title": "Warning", -} -`; - exports[`Login with OAuth2 When given invalid login info should display an error message 1`] = ` { "message": "Cannot access 'TestProject' project", diff --git a/src/__tests__/__snapshots__/metrics.test.ts.snap b/src/__tests__/__snapshots__/metrics.test.ts.snap index fedef482..0bd3c166 100644 --- a/src/__tests__/__snapshots__/metrics.test.ts.snap +++ b/src/__tests__/__snapshots__/metrics.test.ts.snap @@ -8,7 +8,7 @@ exports[`Metrics Query Given a metrics query with filters should generate the co }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/list", } `; @@ -20,7 +20,7 @@ exports[`Metrics Query Given a metrics query with no options should generate the }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/list", } `; @@ -32,7 +32,7 @@ exports[`Metrics Query Given a metrics query with unmatched filters should gener }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/list", } `; @@ -48,7 +48,7 @@ exports[`Metrics Query Given a nested variable query should generate the correct }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/list", } `; @@ -62,7 +62,7 @@ exports[`Metrics Query Given a simple metrics query should generate the correct }, "headers": undefined, "method": "POST", - "url": "/api/datasources/proxy/6/cdf-api-key/api/v1/projects/TestProject/assets/list", + "url": "/api/datasources/proxy/6/cdf-oauth/api/v1/projects/TestProject/assets/list", } `; diff --git a/src/__tests__/annotations.test.ts b/src/__tests__/annotations.test.ts deleted file mode 100644 index 538a1c2a..00000000 --- a/src/__tests__/annotations.test.ts +++ /dev/null @@ -1,361 +0,0 @@ -import * as _ from 'lodash'; -import { getDataSourceWithMocks } from '../test_utils'; - -jest.mock('@grafana/runtime'); -type Mock = jest.Mock; - -const testRange = { - from: 1549336675000, - to: 1549338475000, -}; - -describe('Annotations Query', () => { - const annotationResponse = { - data: { - items: [ - { - id: 1, - assetIds: [123, 456, 789], - description: 'event 1', - startTime: 1549336675000, - endTime: 1549336775000, - type: 'type 1', - subtype: 'subtype 1', - }, - { - id: 2, - assetIds: [123], - description: 'event 2', - startTime: 1549336775000, - endTime: 1549336875000, - type: 'type 2', - subtype: 'subtype 2', - }, - { - id: 3, - assetIds: [456], - description: 'event 3', - startTime: 1549336875000, - endTime: 1549336975000, - type: 'type 3', - subtype: 'subtype 3', - }, - { - id: 4, - assetIds: [789], - description: 'event 4', - startTime: 1549336975000, - endTime: 1549337075000, - type: 'type 4', - subtype: 'subtype 4', - }, - { - id: 5, - assetIds: [123, 456, 789], - description: 'time out of bounds', - startTime: 1549336600000, - endTime: 1549338500000, - type: 'type 1', - subtype: 'subtype 2', - metadata: { key1: 'value1', key2: 'value2' }, - }, - ], - }, - }; - - beforeEach(() => { - jest.useFakeTimers(); - }); - - afterEach(() => { - jest.runAllTimers(); - jest.clearAllMocks(); - }); - - describe('Given an empty annotation query', () => { - const { ds, backendSrv } = getDataSourceWithMocks(); - let result; - const annotationOption: any = { - range: testRange, - annotation: { - query: '', - }, - }; - - beforeAll(async () => { - result = await ds.annotationQuery(annotationOption); - }); - - it('should return nothing', () => { - expect(backendSrv.datasourceRequest).not.toBeCalled(); - expect(result).toEqual([]); - }); - }); - - describe('Given an annotation query without any filters', () => { - let result; - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: 'events{}', - }, - }; - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(annotationResponse)); - result = await ds.annotationQuery(annotationOption); - }); - - it('should return all events', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect(result.length).toEqual(annotationResponse.data.items.length); - }); - }); - - describe('Given an annotation query where no events are returned', () => { - let result; - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: "events{type='type 5'}", - }, - }; - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve({ data: { items: [] } })); - result = await ds.annotationQuery(annotationOption); - }); - - it('should return empty array', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect(result).toEqual([]); - }); - }); - - describe('Given an annotation query', () => { - let result; - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: "events{assetIds=[123], type='type 1'}", - }, - }; - const response = _.cloneDeep(annotationResponse); - response.data.items = annotationResponse.data.items.filter( - (item) => item.assetIds.some((id) => id === 123) && item.type === 'type 1' - ); - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(response)); - result = await ds.annotationQuery(annotationOption); - }); - - it('should generate the correct request', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - }); - - it('should return the correct events', () => { - const resultIds = result.map(({ text }) => text); - const expectedEvents = ['event 1', 'time out of bounds']; - - expect(result.length).toEqual(2); - expect(expectedEvents.every((text) => resultIds.includes(text))).toBeTruthy(); - }); - }); - - describe('Given an annotation query with a metadata request', () => { - let result; - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: "events{metadata={key1='value1', key2='value2'}}", - }, - }; - const response = _.cloneDeep(annotationResponse); - response.data.items = annotationResponse.data.items.filter((item) => item.metadata); - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(response)); - result = await ds.annotationQuery(annotationOption); - }); - - it('should generate the correct request', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - }); - - it('should return the correct event', () => { - const resultIds = result.map(({ text }) => text); - - expect(result.length).toEqual(1); - expect(resultIds.includes('time out of bounds')).toBeTruthy(); - }); - }); - - describe('Given an annotation query where nothing is returned', () => { - let result; - const annotationOption: any = { - range: testRange, - annotation: { - query: "events{type='non-existant type'}", - }, - }; - const { ds, backendSrv } = getDataSourceWithMocks(); - const response = _.cloneDeep(annotationResponse); - response.data.items = []; - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(response)); - result = await ds.annotationQuery(annotationOption); - }); - - it('should generate the correct request', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - }); - - it('should return the correct events', () => { - expect(result).toEqual([]); - }); - }); - - describe('Given an annotation query with filters', () => { - let result; - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: "events{description=~'event.*', type!='type 1'}", - }, - }; - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(annotationResponse)); - result = await ds.annotationQuery(annotationOption); - }); - - it('should generate the correct request', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - }); - - it('should return the correct events', () => { - const resultIds = result.map(({ text }) => text); - const expectedEvents = ['event 2', 'event 3', 'event 4']; - - expect(result.length).toEqual(3); - expect(expectedEvents.every((text) => resultIds.includes(text))).toBeTruthy(); - }); - }); - - describe('Given an annotation query with additional time filters', () => { - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: 'events{startTime={min=123}, endTime={isNull=false}}', - }, - }; - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementationOnce(() => Promise.resolve(annotationResponse)); - await ds.annotationQuery(annotationOption); - }); - - it('should generate the correct request', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - }); - }); - - describe('Given an annotation query with variables', () => { - let result1; - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption1: any = { - range: testRange, - annotation: { - query: "events{assetIds=[$AssetVariable], description!~'event.*'}", - }, - }; - const annotationOption2: any = { - ...annotationOption1, - annotation: { - // eslint-disable-next-line no-template-curly-in-string - query: 'events{assetIds=[${MultiValue:csv}]}', - }, - }; - - beforeAll(async () => { - backendSrv.datasourceRequest = jest - .fn() - .mockImplementation(() => Promise.resolve(annotationResponse)); - - result1 = await ds.annotationQuery(annotationOption1); - await ds.annotationQuery(annotationOption2); - }); - - it('should generate the correct request', () => { - expect(backendSrv.datasourceRequest).toBeCalledTimes(2); - (backendSrv.datasourceRequest as Mock).mock.calls.forEach(([request]) => { - expect(request).toMatchSnapshot(); - }); - }); - - it('should return the correct events', () => { - const resultIds = result1.map(({ text }) => text); - - expect(result1.length).toEqual(1); - expect(resultIds.includes('time out of bounds')).toBeTruthy(); - }); - }); - - describe('Given an annotation query with an incomplete event expression', () => { - const annotationOption: any = { - range: testRange, - annotation: { - query: 'events{ ', - }, - }; - const { ds, backendSrv } = getDataSourceWithMocks(); - beforeAll(async () => { - (backendSrv.datasourceRequest as Mock).mockReset(); - }); - it('should throw a parse error', () => { - expect(ds.annotationQuery(annotationOption)).rejects.toThrowErrorMatchingSnapshot(); - expect(backendSrv.datasourceRequest).not.toBeCalled(); - }); - }); - - describe('Given an annotation query with an incorrect event expression', () => { - const { ds, backendSrv } = getDataSourceWithMocks(); - const annotationOption: any = { - range: testRange, - annotation: { - query: 'events{ name=~event, foo}', - }, - }; - it('should throw a parse error', () => { - expect(ds.annotationQuery(annotationOption)).rejects.toThrowErrorMatchingSnapshot(); - expect(backendSrv.datasourceRequest).not.toBeCalled(); - }); - }); -}); diff --git a/src/__tests__/connector.test.ts b/src/__tests__/connector.test.ts index 4f02f9c1..25a337e9 100644 --- a/src/__tests__/connector.test.ts +++ b/src/__tests__/connector.test.ts @@ -20,7 +20,7 @@ describe('connector', () => { const data = { items }; const method = HttpMethod.POST; const path = '/ΓΈ'; - const url = `${protocol}/cdf-api-key/${API_V1}/${project}${path}`; + const url = `${protocol}/cdf-oauth/${API_V1}/${project}${path}`; const reqBase = { url, method }; beforeEach(() => { diff --git a/src/__tests__/datasource.events.unit.test.ts b/src/__tests__/datasource.events.unit.test.ts index ca2024c6..47af3052 100644 --- a/src/__tests__/datasource.events.unit.test.ts +++ b/src/__tests__/datasource.events.unit.test.ts @@ -78,14 +78,10 @@ describe('events datasource test', () => { expect(res).toEqual([ { - columns: [ - { - text: "externalId", - }, - ], - name: "events", - rows: [], - type: "table", + fields: [], + length: 0, + name: "Events", + refId: undefined, }, ]); }); @@ -131,14 +127,10 @@ describe('events datasource test', () => { expect(res).toEqual([ { - columns: [ - { - text: "externalId", - }, - ], - name: "events", - rows: [], - type: "table", + fields: [], + length: 0, + name: "Events", + refId: undefined, }, ]); }); diff --git a/src/__tests__/datasource.test.ts b/src/__tests__/datasource.test.ts index 3520b3ba..5c38aaf5 100644 --- a/src/__tests__/datasource.test.ts +++ b/src/__tests__/datasource.test.ts @@ -41,7 +41,7 @@ const options: any = { maxDataPoints: 760, format: 'json', panelId: 1, - dashboardId: 1, + dashboardUID: 1, }; const tsResponseWithId = (id, externalId = `Timeseries${id}`, description = 'test timeseries') => getItemsResponseObject([{ id, externalId, description }]); diff --git a/src/__tests__/login.test.ts b/src/__tests__/login.test.ts index e6eaf9fa..ab837c6a 100644 --- a/src/__tests__/login.test.ts +++ b/src/__tests__/login.test.ts @@ -3,59 +3,6 @@ import { getMockedDataSource } from '../test_utils'; jest.mock('@grafana/runtime'); type Mock = jest.Mock; -describe('Login with API key', () => { - const ds = getMockedDataSource(); - const { backendSrv } = ds; - - function makeLoginResponse(loggedIn: boolean, project: string) { - return Promise.resolve({ - data: { - data: { loggedIn, project }, - }, - status: 200, - }); - } - - describe('When given valid login info and correct project', () => { - const response = makeLoginResponse(true, 'TestProject'); - - it('should log the user in', async () => { - backendSrv.datasourceRequest = jest.fn().mockReturnValue(response); - const result = await ds.testDatasource(); - - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - expect(result).toMatchSnapshot(); - }); - }); - - describe('When given valid login info but incorrect project', () => { - const response = makeLoginResponse(true, 'WrongProject'); - - it('should display an error message', async () => { - backendSrv.datasourceRequest = jest.fn().mockReturnValue(response); - const result = await ds.testDatasource(); - - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - expect(result).toMatchSnapshot(); - }); - }); - - describe('When given invalid login info', () => { - const response = makeLoginResponse(false, 'string'); - - it('should display an error message', async () => { - backendSrv.datasourceRequest = jest.fn().mockReturnValue(response); - const result = await ds.testDatasource(); - - expect(backendSrv.datasourceRequest).toBeCalledTimes(1); - expect((backendSrv.datasourceRequest as Mock).mock.calls[0][0]).toMatchSnapshot(); - expect(result).toMatchSnapshot(); - }); - }); -}); - describe('Login with OAuth2', () => { const ds = getMockedDataSource({ oauthPassThru: true }); const { backendSrv } = ds; diff --git a/src/annotationCtrl.ts b/src/annotationCtrl.ts deleted file mode 100644 index 1508dfc3..00000000 --- a/src/annotationCtrl.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { CogniteAnnotationQuery } from './types'; -import CogniteDatasource from './datasource'; -import { parse } from './parser/events-assets'; - -export class CogniteAnnotationsQueryCtrl { - public static templateUrl = 'partials/annotations.editor.html'; - - annotation: CogniteAnnotationQuery; - datasource: CogniteDatasource; - - onBlur() { - this.annotation.error = ''; - - try { - const withReplacedVariable = this.datasource.replaceVariable(this.annotation.query); - parse(withReplacedVariable); - } catch ({ message }) { - this.annotation.error = message; - } - } -} diff --git a/src/cdf/client.ts b/src/cdf/client.ts index 8c61a4c6..c10ec72e 100644 --- a/src/cdf/client.ts +++ b/src/cdf/client.ts @@ -1,5 +1,5 @@ import { get, cloneDeep } from 'lodash'; -import { TableData, TimeSeries } from '@grafana/data'; +import { DataFrame, Field, TableData, TimeSeries, guessFieldTypeFromNameAndValue } from '@grafana/data'; import { TimeSeriesDatapoint, Timestamp, @@ -334,6 +334,34 @@ export const convertItemsToTable = ( }; }; +export const convertItemsToDataFrame = ( + items: Resource[], + columns: string[], + name: string, + refId: string +): DataFrame => { + + const firstItem = items[0] ?? {} + const entries = Object.entries(firstItem) + const filteredProps = columns.length ? + entries.filter(([key]) => columns.includes(key)) : + entries + + const fields: Field[] = filteredProps.map(([key, _value]) => ({ + name: key, + type: guessFieldTypeFromNameAndValue(key, _value), + values: items.map((item) => item[key]), + config: { } + })) + + return { + fields, + refId, + name, + length: items.length, + } +} + export function fetchRelationships( { labels = { containsAny: [] }, diff --git a/src/components/annotationsQueryEditor.tsx b/src/components/annotationsQueryEditor.tsx new file mode 100644 index 00000000..4352a823 --- /dev/null +++ b/src/components/annotationsQueryEditor.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { AnnotationQuery, QueryEditorProps ,} from '@grafana/data'; +import { DataQuery } from '@grafana/schema'; +import { AnnotationQueryData, CogniteQuery, Tab } from 'types'; +import { parse } from '../parser/events-assets'; + + +type AnnotationQueryEditorProps = QueryEditorProps & { + annotation?: AnnotationQuery; + onAnnotationChange?: (annotation: AnnotationQuery) => void; +}; + +export class AnnotationsQueryEditor extends React.PureComponent, AnnotationQueryData> { + + defaults = { + expr: '', + error: '', + refId: '', + }; + + constructor(props: AnnotationQueryEditorProps) { + super(props); + const expr = props.annotation?.target?.query || ''; + this.state = Object.assign(this.defaults, { expr: expr }); + } + + handleQueryChange = (event) => { + this.setState({ expr: event.target.value, error: '' }); + }; + + handleBlur = () => { + const { datasource, onChange } = this.props; + + try { + const evaluatedQuery = datasource.replaceVariable(this.state.expr); + parse(evaluatedQuery); + onChange({ + ...this.props.query, + query: this.state.expr, + }); + } catch ({ message }) { + this.setState({ error: message }); + } + }; + + render () { + return
+
+ Query + +
+
+ {this.state.error ?
{this.state.error}
: null} +
+
+ + } +}; + +export default AnnotationsQueryEditor; diff --git a/src/components/configEditor.tsx b/src/components/configEditor.tsx index 4110f6bb..1b235ff1 100644 --- a/src/components/configEditor.tsx +++ b/src/components/configEditor.tsx @@ -42,7 +42,7 @@ export function ConfigEditor(props: ConfigEditorProps) { const [showHelp, setShowHelp] = useState(false); const { onOptionsChange, options } = props; const { secureJsonData = {}, jsonData, secureJsonFields } = options; - const { cogniteDataPlatformApiKey = '', oauthClientSecret = '' } = secureJsonData; + const { oauthClientSecret = '' } = secureJsonData; const { cogniteProject = '', defaultProject, @@ -210,23 +210,6 @@ export function ConfigEditor(props: ConfigEditorProps) { )} - {!(oauthPassThru || oauthClientCreds) && ( -
-
- -
-
- )}
diff --git a/src/connector.ts b/src/connector.ts index a462fac5..166adf67 100644 --- a/src/connector.ts +++ b/src/connector.ts @@ -129,15 +129,11 @@ export class Connector { auth = AuthType.OAuth; break; default: - auth = AuthType.ApiKey; + auth = AuthType.OAuth; } return `${this.apiUrl}/${auth}`; } - isUsingOAuth() { - return this.oauthPassThru || this.oauthClientCredentials; - } - isTemplatesEnabled() { return this.enableTemplates; } diff --git a/src/constants.ts b/src/constants.ts index 22b3aa77..5b718ca3 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -26,7 +26,6 @@ export const CacheTime = { export const AuthType = { OAuthClientCredentials: 'cdf-cc-oauth', OAuth: 'cdf-oauth', - ApiKey: 'cdf-api-key', }; export const DateFields = [ diff --git a/src/datasource.ts b/src/datasource.ts index 17dfb570..436e609d 100644 --- a/src/datasource.ts +++ b/src/datasource.ts @@ -1,6 +1,4 @@ import { - AnnotationEvent, - AnnotationQueryRequest, DataQueryRequest, DataSourceApi, DataSourceInstanceSettings, @@ -10,6 +8,7 @@ import { TimeSeries, DataQueryResponse, MutableDataFrame, + AnnotationQuery, } from '@grafana/data'; import { BackendSrv, getBackendSrv, getTemplateSrv, TemplateSrv } from '@grafana/runtime'; import _ from 'lodash'; @@ -26,7 +25,6 @@ import { CacheTime } from './constants'; import { parse as parseQuery } from './parser/events-assets'; import { ParsedFilter, QueryCondition } from './parser/types'; import { - CogniteAnnotationQuery, CogniteDataSourceOptions, HttpMethod, CogniteQuery, @@ -35,7 +33,7 @@ import { Tab, VariableQueryData, } from './types'; -import { applyFilters, getRange } from './utils'; +import { applyFilters, getRange, isAnnotationTarget } from './utils'; import { FlexibleDataModellingDatasource, RelationshipsDatasource, @@ -44,10 +42,12 @@ import { EventsDatasource, ExtractionPipelinesDatasource, } from './datasources'; +import AnnotationsQueryEditor from 'components/annotationsQueryEditor'; export default class CogniteDatasource extends DataSourceApi< CogniteQuery, - CogniteDataSourceOptions + CogniteDataSourceOptions, + AnnotationQuery > { /** * Parameters that are needed by grafana @@ -106,6 +106,10 @@ export default class CogniteDatasource extends DataSourceApi< ); } + annotations = { + QueryEditor: AnnotationsQueryEditor, + } + /** * used by panels to get timeseries data */ @@ -169,12 +173,13 @@ export default class CogniteDatasource extends DataSourceApi< return { data: responseData }; } private replaceVariablesInTarget(target: QueryTarget, scopedVars: ScopedVars): QueryTarget { - const { expr, assetQuery, label, eventQuery, flexibleDataModellingQuery, templateQuery } = + const { expr, query, assetQuery, label, eventQuery, flexibleDataModellingQuery, templateQuery } = target; const [ exprTemplated, labelTemplated, + queryTemplated, assetTargetTemplated, eventExprTemplated, templategraphQlQueryTemplated, @@ -183,6 +188,7 @@ export default class CogniteDatasource extends DataSourceApi< [ expr, label, + query, assetQuery?.target, eventQuery?.expr, templateQuery?.graphQlQuery, @@ -222,6 +228,7 @@ export default class CogniteDatasource extends DataSourceApi< ...templatedEventQuery, ...templatedTemplateQuery, ...templatedflexibleDataModellingQuery, + query: queryTemplated, expr: exprTemplated, label: labelTemplated, }; @@ -233,40 +240,7 @@ export default class CogniteDatasource extends DataSourceApi< replaceVariablesArr(arr: Array, scopedVars: ScopedVars) { return arr.map((str) => str && this.replaceVariable(str, scopedVars)); } - /** - * used by dashboards to get annotations (events) - */ - async annotationQuery( - options: AnnotationQueryRequest - ): Promise { - const { range, annotation } = options; - const { query, error } = annotation; - if (error || !query) { - return []; - } - - const [rangeStart, rangeEnd] = getRange(range); - const timeRange = { - activeAtTime: { min: rangeStart, max: rangeEnd }, - }; - const evaluatedQuery = this.replaceVariable(query); - const { items } = await this.eventsDatasource.fetchEvents( - { - expr: evaluatedQuery, - advancedFilter: '', - }, - timeRange - ); - return items.map(({ description, startTime, endTime, type }) => ({ - annotation, - isRegion: true, - text: description, - time: startTime, - timeEnd: endTime || rangeEnd, - title: type, - })); - } /** * used by query editor to search for assets/timeseries */ @@ -336,20 +310,6 @@ export default class CogniteDatasource extends DataSourceApi< return fetchSingleAsset(id, this.connector); }; - async checkLoginStatusApiKey() { - let hasAccessToProject = false; - let isLoggedIn = false; - const { status, data } = await this.connector.request({ path: 'login/status' }); - - if (status === 200) { - const { project, loggedIn } = data?.data || {}; - hasAccessToProject = project === this.project; - isLoggedIn = loggedIn; - } - - return [hasAccessToProject, isLoggedIn]; - } - async checkLoginStatusOAuth() { let hasAccessToProject = false; let isLoggedIn = false; @@ -372,11 +332,7 @@ export default class CogniteDatasource extends DataSourceApi< let hasAccessToProject = false; let isLoggedIn = false; - if (this.connector.isUsingOAuth()) { - [hasAccessToProject, isLoggedIn] = await this.checkLoginStatusOAuth(); - } else { - [hasAccessToProject, isLoggedIn] = await this.checkLoginStatusApiKey(); - } + [hasAccessToProject, isLoggedIn] = await this.checkLoginStatusOAuth(); switch (true) { case isLoggedIn && hasAccessToProject: @@ -441,7 +397,7 @@ export function filterEmptyQueryTargets(targets: CogniteQuery[]): QueryTarget[] return true; case Tab.Timeseries: default: - return target.target; + return target.target || isAnnotationTarget(target); } } return false; @@ -462,7 +418,7 @@ export function resource2DropdownOption(resource: Resource): SelectableValue tab || Tab.Timeseries); + const groupedByTab = _.groupBy(targets, (target) => target.tab ?? (isAnnotationTarget(target) ? Tab.Event : Tab.Timeseries)); return { eventTargets: groupedByTab[Tab.Event] ?? [], templatesTargets: groupedByTab[Tab.Templates] ?? [], diff --git a/src/datasources/EventsDatasource.ts b/src/datasources/EventsDatasource.ts index 7ff716b7..b26535b0 100644 --- a/src/datasources/EventsDatasource.ts +++ b/src/datasources/EventsDatasource.ts @@ -2,7 +2,7 @@ import { DataQueryRequest, DataQueryResponse } from '@grafana/data'; import jsonlint from 'jsonlint-mod'; import { CogniteQuery, EventQuery, EventQueryAggregate, EventQuerySortProp, HttpMethod, Tuple } from '../types'; import { Connector } from '../connector'; -import { applyFilters, getRange } from '../utils'; +import { applyFilters, getRange, isAnnotationTarget } from '../utils'; import { parse as parseQuery } from '../parser/events-assets'; import { AggregateRequest, @@ -12,10 +12,21 @@ import { EventsFilterTimeParams, FilterRequest, } from '../cdf/types'; -import { convertItemsToTable } from '../cdf/client'; +import { convertItemsToDataFrame } from '../cdf/client'; import { EVENTS_LIMIT_WARNING, EVENTS_PAGE_LIMIT, responseWarningEvent } from '../constants'; import { emitEvent, handleError } from '../appEventHandler'; +const convertEventsToAnnotations = (events: CogniteEvent[], timeRangeEnd: number) => { + return events.map(({ description, startTime, endTime, type, id }) => ({ + id, + isRegion: true, + text: description, + time: new Date(startTime), + timeEnd: new Date(endTime || timeRangeEnd), + title: type, + })) +} + export class EventsDatasource { constructor(private connector: Connector) { } async query(options: DataQueryRequest): Promise { @@ -23,13 +34,19 @@ export class EventsDatasource { const eventResults = await this.fetchEventTargets(options.targets, timeRange); return { data: eventResults }; } + async fetchEventsForTarget( - { eventQuery, refId }: CogniteQuery, - timeFrame: EventsFilterTimeParams + { refId, eventQuery, query }: CogniteQuery, + [rangeStart, rangeEnd]: Tuple ) { - const timeRange = eventQuery.activeAtTimeRange ? timeFrame : {}; + const timeFrame = { + activeAtTime: { min: rangeStart, max: rangeEnd }, + }; + const finalEventQuery = eventQuery || { + expr: query, + } try { - const { items, hasMore } = await this.fetchEvents(eventQuery, timeRange); + const { items, hasMore } = await this.fetchEvents(finalEventQuery, timeFrame); if (hasMore) { emitEvent(responseWarningEvent, { refId, warning: EVENTS_LIMIT_WARNING }); } @@ -40,14 +57,14 @@ export class EventsDatasource { return []; } - async fetchEventTargets(targets: CogniteQuery[], [start, end]: Tuple) { - const timeFrame = { - activeAtTime: { min: start, max: end }, - }; + + async fetchEventTargets(targets: CogniteQuery[], timeRange: Tuple) { return Promise.all( targets.map(async (target) => { - const events = await this.fetchEventsForTarget(target, timeFrame); - return convertItemsToTable(events, target.eventQuery.columns, "events"); + const resEvents = await this.fetchEventsForTarget(target, timeRange); + const items = isAnnotationTarget(target) ? convertEventsToAnnotations(resEvents, timeRange[1]) : resEvents; + const df = convertItemsToDataFrame(items, target.eventQuery?.columns ?? [], "Events", target.refId); + return df }) ); } diff --git a/src/module.ts b/src/module.ts index a2852849..c3c35b7b 100644 --- a/src/module.ts +++ b/src/module.ts @@ -4,7 +4,7 @@ import CogniteDatasource from './datasource'; import { ConfigEditor } from './components/configEditor'; import { QueryEditor } from './components/queryEditor'; -import { CogniteAnnotationsQueryCtrl } from './annotationCtrl'; + import { CogniteVariableQueryEditor } from './components/variableQueryEditor'; import { CogniteQuery, CogniteDataSourceOptions } from './types'; @@ -16,4 +16,3 @@ export const plugin = new DataSourcePlugin< .setConfigEditor(ConfigEditor) .setVariableQueryEditor(CogniteVariableQueryEditor) .setQueryEditor(QueryEditor) - .setAnnotationQueryCtrl(CogniteAnnotationsQueryCtrl); diff --git a/src/partials/annotations.editor.html b/src/partials/annotations.editor.html deleted file mode 100644 index ff7de1bd..00000000 --- a/src/partials/annotations.editor.html +++ /dev/null @@ -1,46 +0,0 @@ -
-
-
- - - Click for help -
-
-
{{ ctrl.annotation.error }}
-
-
-
-  Annotation query uses the events/list endpoint to fetch data. Use '=' operator to provide parameters for the request.
-  Format: events{param=number, ...}
-  Example: events{externalIdPrefix='PT', type='WORKORDER', assetSubtreeIds=[{id=12}, {externalId='external'}]}
-  
-  By default, the query displays all events that are active in the time range.
-  You can customize this with the additional time filters startTime, endTime.
-  This example shows how to display all finished events that started in the current time range:
-  events{startTime={min=$__from}, endTime={isNull=false}}
-
-  You can specify additional client-side filtering with the '=~', '!~' and '!=' operators. Comma between multiple filters acts as logic AND.
-  Format:
-    '=~' – regex equality, returns results satisfying the regular expression.
-    '!~' – regex inequality, excludes results satisfying the regular expression.
-    '!=' – strict inequality, returns items where a property doesn't equal a given value.
-  Example: events{type='WORKORDER', subtype=~'SUB.*'}
-  Templating is available by using the $variable syntax.
-  Example: events{type='WORKORDER', subtype=$variable}.
-  To learn more about the querying capabilities of Cognite Data Source for Grafana, please visit our documentation.
-      
-
-
-
diff --git a/src/plugin.json b/src/plugin.json index 35af19cb..bad92938 100644 --- a/src/plugin.json +++ b/src/plugin.json @@ -35,7 +35,7 @@ }, "dependencies": { - "grafanaDependency": ">=8.0.0", + "grafanaDependency": ">=10.0.0", "plugins": [] }, @@ -76,24 +76,6 @@ "scope": "{{ .JsonData.oauthScope }}" } } - }, - { - "path": "cdf-api-key", - "url": "https://{{if .JsonData.cogniteApiUrl}}{{.JsonData.cogniteApiUrl}}{{else}}{{if .JsonData.clusterUrl}}{{.JsonData.clusterUrl}}{{else}}api.cognitedata.com{{end}}{{end}}", - "headers": [ - { - "name": "api-key", - "content": "{{.SecureJsonData.cogniteDataPlatformApiKey}}" - }, - { - "name": "x-cdp-sdk", - "content": "CogniteGrafanaDatasource:%VERSION%" - }, - { - "name": "x-cdp-app", - "content": "Cognite Grafana Datasource" - } - ] } ], diff --git a/src/types.ts b/src/types.ts index ce13dd35..201ab8ef 100644 --- a/src/types.ts +++ b/src/types.ts @@ -2,13 +2,13 @@ import { DataQueryRequest, TimeSeries, - DataQuery, DataSourceJsonData, TableData, MutableDataFrame, QueryEditorProps, SelectableValue, } from '@grafana/data'; +import { DataQuery } from '@grafana/schema'; import { Datapoints, Items, IdEither, Limit } from './cdf/types'; import CogniteDatasource from './datasource'; @@ -175,7 +175,6 @@ export interface CogniteDataSourceOptions extends DataSourceJsonData { } export interface CogniteSecureJsonData { - cogniteDataPlatformApiKey?: string; oauthClientSecret?: string; } @@ -259,6 +258,7 @@ export interface CogniteQueryBase extends DataQuery { error: string; label: string; tab: Tab; + query?: string; // annotation events query assetQuery: AssetQuery; eventQuery: EventQuery; templateQuery: TemplateQuery; @@ -430,11 +430,6 @@ export interface CDFDataQueryRequest { granularity?: string; } -export interface CogniteAnnotationQuery extends DataQuery { - query?: string; - error?: string; -} - export interface DataResponse { data: T; } @@ -464,6 +459,11 @@ export interface VariableQueryData { }; } +export interface AnnotationQueryData extends DataQuery { + expr: string; + error?: string; +} + export interface VariableQueryProps { query: string; onChange: (query: VariableQueryData, description: string) => void; diff --git a/src/utils.ts b/src/utils.ts index c04ac295..de98af49 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -4,7 +4,7 @@ import { stringify } from 'query-string'; import ms from 'ms'; import { ExecutableDefinitionNode } from 'graphql'; import gql from 'graphql-tag'; -import { QueryOptions, QueryTarget, Tuple } from './types'; +import { CogniteQuery, QueryOptions, QueryTarget, Tuple } from './types'; import { FilterTypes, ParsedFilter } from './parser/types'; import { handleError } from './appEventHandler'; @@ -18,7 +18,7 @@ export function toGranularityWithLowerBound(milliseconds: number, lowerBound = 1 // used for generating the options.requestId export function getRequestId(options: QueryOptions, target: QueryTarget) { - return `${options.dashboardId}_${options.panelId}_${target.refId}`; + return `${options.dashboardUID}_${options.panelId}_${target.refId}`; } export const applyFilters = (objs: T[], filters: ParsedFilter[]): T[] => { @@ -88,6 +88,9 @@ const getNodeSelection = (selection) => { return []; }; + +export const isAnnotationTarget = (target: CogniteQuery) => !target.tab && target.query && target.refId === "Anno"; + export const typeNameList = (selected) => uniq( filter( diff --git a/yarn.lock b/yarn.lock index 520000ff..3d5a35b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -969,21 +969,21 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.8.4": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" - integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== +"@babel/runtime@^7.12.1", "@babel/runtime@^7.19.4", "@babel/runtime@^7.21.0": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.22.5": +"@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -992,7 +992,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/template@^7.3.3": +"@babel/template@^7.22.5", "@babel/template@^7.3.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== @@ -1057,7 +1057,7 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@emotion/babel-plugin@^11.10.6", "@emotion/babel-plugin@^11.11.0": +"@emotion/babel-plugin@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== @@ -1074,7 +1074,7 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@^11.10.5", "@emotion/cache@^11.11.0", "@emotion/cache@^11.4.0": +"@emotion/cache@^11.11.0", "@emotion/cache@^11.4.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== @@ -1085,18 +1085,7 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" -"@emotion/css@11.10.6": - version "11.10.6" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.10.6.tgz#5d226fdd8ef2a46d28e4eb09f66dc01a3bda5a04" - integrity sha512-88Sr+3heKAKpj9PCqq5A1hAmAkoSIvwEq1O2TwDij7fUtsJpdkV4jMTISSTouFeRvsGvXIpuSuDQ4C1YdfNGXw== - dependencies: - "@emotion/babel-plugin" "^11.10.6" - "@emotion/cache" "^11.10.5" - "@emotion/serialize" "^1.1.1" - "@emotion/sheet" "^1.2.1" - "@emotion/utils" "^1.2.0" - -"@emotion/css@^11.1.3": +"@emotion/css@11.11.2", "@emotion/css@^11.1.3": version "11.11.2" resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.11.2.tgz#e5fa081d0c6e335352e1bc2b05953b61832dca5a" integrity sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew== @@ -1117,21 +1106,7 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@11.10.6": - version "11.10.6" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11" - integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.6" - "@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.8.1": +"@emotion/react@11.11.1", "@emotion/react@^11.8.1": version "11.11.1" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== @@ -1145,7 +1120,7 @@ "@emotion/weak-memoize" "^0.3.1" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.1.1", "@emotion/serialize@^1.1.2": +"@emotion/serialize@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51" integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== @@ -1156,7 +1131,7 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" -"@emotion/sheet@^1.2.1", "@emotion/sheet@^1.2.2": +"@emotion/sheet@^1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== @@ -1166,17 +1141,17 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0", "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@emotion/utils@^1.2.0", "@emotion/utils@^1.2.1": +"@emotion/utils@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== -"@emotion/weak-memoize@^0.3.0", "@emotion/weak-memoize@^0.3.1": +"@emotion/weak-memoize@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== @@ -1288,34 +1263,46 @@ dependencies: tslib "^2.4.0" -"@grafana/data@9.5.7", "@grafana/data@^9.4.7": - version "9.5.7" - resolved "https://registry.yarnpkg.com/@grafana/data/-/data-9.5.7.tgz#99df8c3917caf1f12a7f42258579b73b99f1aaa9" - integrity sha512-TrbQBU41pS1ir9GCkf3kayKlUCyzCvh0Sk7xbVNh6mHyDFLVDyfqsH9iXEL6V62u/n4tiApvUweHtfuRmfGQsg== +"@grafana/data@10.1.2", "@grafana/data@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-10.1.2.tgz#f0f4122d054934bc7d972bafa9a7bc2a53f767e1" + integrity sha512-ue/OEciIlWxE9wJnyBlNRwt78VgnH8SIubs+Q8W2W5pMerPXMHXRctTFbh/qY93xLNkePy273Chd5TEQZPpYLg== dependencies: "@braintree/sanitize-url" "6.0.2" - "@grafana/schema" "9.5.7" + "@grafana/schema" "10.1.2" "@types/d3-interpolate" "^3.0.0" + "@types/string-hash" "1.1.1" d3-interpolate "3.0.1" - date-fns "2.29.3" + date-fns "2.30.0" dompurify "^2.4.3" eventemitter3 "5.0.0" fast_array_intersect "1.1.0" history "4.10.1" lodash "4.17.21" - marked "4.2.12" + marked "5.1.1" + marked-mangle "1.1.0" moment "2.29.4" moment-timezone "0.5.41" - ol "7.2.2" - papaparse "5.3.2" + ol "7.4.0" + papaparse "5.4.1" react-use "17.4.0" regenerator-runtime "0.13.11" rxjs "7.8.0" + string-hash "^1.1.3" tinycolor2 "1.6.0" - tslib "2.5.0" + tslib "2.6.0" uplot "1.6.24" xss "^1.0.14" +"@grafana/e2e-selectors@10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-10.1.2.tgz#6b87835dca3cbd0c8868c5259fd95630b4e08f3f" + integrity sha512-jPgUh8656zVUif4Z07lh7HUc4CarVQrNCvKq5sJAAMpgL/WkLaqsOXKTkCtIkGGa6wCwvdDTDiKcrtwGhBz9Gw== + dependencies: + "@grafana/tsconfig" "^1.2.0-rc1" + tslib "2.6.0" + typescript "4.8.4" + "@grafana/e2e-selectors@9.5.7": version "9.5.7" resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-9.5.7.tgz#4b773469b36ede497ab85ddea2d261026f4e4994" @@ -1339,99 +1326,98 @@ eslint-plugin-react-hooks "4.6.0" typescript "4.8.4" -"@grafana/faro-core@^1.0.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@grafana/faro-core/-/faro-core-1.1.2.tgz#016aebdb429325c1e26d1952e750a81f3ff5af8f" - integrity sha512-bkDRivNUEjk2oOzsC+xJEr2hhFZDsHBoXqGbZiR2rQ4BT3qN5Mm4Eb3GOaHrRBLXp82HeV6ZXP0Gfsv3+YMEQA== +"@grafana/faro-core@^1.1.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@grafana/faro-core/-/faro-core-1.2.1.tgz#a95fd1376a928917f855068f101d356db067a0f4" + integrity sha512-gI8CpyhAKRsMbPHom3sAa0qCgiQAXZrlv43Tv2q30PgMgNsV4iWI6UKHN/7NPJyvUFd+h0B/plukYDGZxO1kew== dependencies: "@opentelemetry/api" "^1.4.1" "@opentelemetry/api-metrics" "^0.33.0" - "@opentelemetry/otlp-transformer" "^0.37.0" + "@opentelemetry/otlp-transformer" "^0.41.2" murmurhash-js "^1.0.0" -"@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" - integrity sha512-C5Cx1owlhdpa+CSu4s5cBN9jmFGfhdoUilWc9bP0gK5LW/MIPlysYNgE/1jCyYYQekOnQPNAxwBUOx1c0kbDqg== +"@grafana/faro-web-sdk@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@grafana/faro-web-sdk/-/faro-web-sdk-1.1.0.tgz#19428ee513521f1fd9d23ca021956f97aa6dde16" + integrity sha512-MJ9E1f/FaOdwvI/63PIW6ClkF3b/sCfXhubl4/ulAEwsljLRZ6rP/AyTkm2iq7h9eVehz/fHhV9ojYcLsrbFJg== dependencies: - "@grafana/faro-core" "^1.0.2" + "@grafana/faro-core" "^1.1.0" ua-parser-js "^1.0.32" web-vitals "^3.1.1" -"@grafana/runtime@^9.4.7": - version "9.5.7" - resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-9.5.7.tgz#7049d5e38b7bab9b8cce719d179224fb6b1c332f" - integrity sha512-crIFs4VTR0YV6xdSY7iLoD3uOWWv49GKnNdNfQA4YoSpXCJyIUGxwtsqxEPVZtSUDQ+WDqccAESqbRAnmZFGSA== - dependencies: - "@grafana/data" "9.5.7" - "@grafana/e2e-selectors" "9.5.7" - "@grafana/faro-web-sdk" "1.0.2" - "@grafana/ui" "9.5.7" - "@sentry/browser" "6.19.7" +"@grafana/runtime@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-10.1.2.tgz#ef9f240ed23908006eb7adcfa6c550ba0705914d" + integrity sha512-Ra8LE4KCSaHxLf/Xzm4JwRfDEkUojKYCWiir1oYOrKWGI7NrQyxqPTR6fPbuu/hRH3ab3gNs3uKtNGbXYuuwfQ== + dependencies: + "@grafana/data" "10.1.2" + "@grafana/e2e-selectors" "10.1.2" + "@grafana/faro-web-sdk" "1.1.0" + "@grafana/ui" "10.1.2" history "4.10.1" lodash "4.17.21" rxjs "7.8.0" systemjs "0.20.19" - tslib "2.5.0" + tslib "2.6.0" -"@grafana/schema@9.5.7": - version "9.5.7" - resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-9.5.7.tgz#be62b02df456e016ceaf1f14863a96dc4d0606ee" - integrity sha512-x8GNCnTOXcGOFDqvetc5VPNXh5fsoEomDjrleEgflLqu1jo1zE1mUq0swafkjjOC57rOM4XXbXQc950wkKo7jw== +"@grafana/schema@10.1.2", "@grafana/schema@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-10.1.2.tgz#1dbf97ac9577f38db3564cd228791c02f81ae176" + integrity sha512-k1fZ6ot4LWYNFGOlXJy/W6xEl9FJ3wo0tsCUmJhjq2/+MCLDHerQV5vVJ7m7jyLrb6n+eQZft/P5WcnXI4uwxA== dependencies: - tslib "2.5.0" + tslib "2.6.0" "@grafana/tsconfig@^1.2.0-rc1": version "1.2.0-rc1" 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.5.7", "@grafana/ui@^9.4.7": - version "9.5.7" - resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-9.5.7.tgz#3a05c9f4b2ef6ccbf59c45fa0f6583643dab303d" - integrity sha512-lgB++dJRmnP6dj+NyHOAUtQ99mJbEHNNkUvdb1nk16eDWQ4Xy8KbVMNLVugzKMuxEM6wGw4X7osCxpe/h0JJXQ== - dependencies: - "@emotion/css" "11.10.6" - "@emotion/react" "11.10.6" - "@grafana/data" "9.5.7" - "@grafana/e2e-selectors" "9.5.7" - "@grafana/faro-web-sdk" "1.0.2" - "@grafana/schema" "9.5.7" - "@leeoniya/ufuzzy" "1.0.6" - "@monaco-editor/react" "4.4.6" +"@grafana/ui@10.1.2", "@grafana/ui@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-10.1.2.tgz#69c10bc16e618f86fbfca6572679aabcb07b3cf5" + integrity sha512-mWlmXl09ovdzNczwo+i+ZNqjfgaA3JNuF7DsWBdyeQfWYT9OqGvcoiIZPHB7/Ex0xwvV2Xnrl7WsqpkFlnWZdA== + dependencies: + "@emotion/css" "11.11.2" + "@emotion/react" "11.11.1" + "@grafana/data" "10.1.2" + "@grafana/e2e-selectors" "10.1.2" + "@grafana/faro-web-sdk" "1.1.0" + "@grafana/schema" "10.1.2" + "@leeoniya/ufuzzy" "1.0.8" + "@monaco-editor/react" "4.5.1" "@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" + "@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.28.0" - d3 "7.8.2" - date-fns "2.29.3" + core-js "3.31.0" + d3 "7.8.5" + date-fns "2.30.0" hoist-non-react-statics "3.3.2" i18next "^22.0.0" - immutable "4.2.4" + i18next-browser-languagedetector "^7.0.2" + immutable "4.3.0" is-hotkey "0.2.0" - jquery "3.6.3" + jquery "3.7.0" lodash "4.17.21" memoize-one "6.0.0" moment "2.29.4" monaco-editor "0.34.0" - ol "7.2.2" + ol "7.4.0" prismjs "1.29.0" - rc-cascader "3.8.0" - rc-drawer "6.1.3" - rc-slider "10.1.1" + rc-cascader "3.12.1" + rc-drawer "6.3.0" + rc-slider "10.2.1" rc-time-picker "^3.7.3" - rc-tooltip "5.3.1" + rc-tooltip "6.0.1" react-beautiful-dnd "13.1.1" - react-calendar "4.0.0" + react-calendar "4.3.0" react-colorful "5.6.1" react-custom-scrollbars-2 "4.5.0" react-dropzone "14.2.3" @@ -1439,9 +1425,10 @@ react-hook-form "7.5.3" react-i18next "^12.0.0" react-inlinesvg "3.0.2" + react-loading-skeleton "3.3.1" react-popper "2.3.0" react-popper-tooltip "4.4.2" - react-router-dom "^5.2.0" + react-router-dom "5.3.3" react-select "5.7.0" react-select-event "^5.1.0" react-table "7.8.0" @@ -1453,7 +1440,7 @@ slate-plain-serializer "0.7.13" slate-react "0.22.10" tinycolor2 "1.6.0" - tslib "2.5.0" + tslib "2.6.0" uplot "1.6.24" uuid "9.0.0" @@ -1492,6 +1479,13 @@ dependencies: "@swc/helpers" "^0.5.0" +"@internationalized/date@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.5.0.tgz#67f1dd62355f05140cc80e324842e9bfb4553abe" + integrity sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ== + dependencies: + "@swc/helpers" "^0.5.0" + "@internationalized/message@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.1.tgz#0f29c5a239b5dcd457b55f21dcd38d1a44a1236a" @@ -1806,10 +1800,10 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@leeoniya/ufuzzy@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@leeoniya/ufuzzy/-/ufuzzy-1.0.6.tgz#cbafcff1529d9592b92bd735f1e8b18f23eda983" - integrity sha512-7co2giTKNKESSEqW+nijF2cGG92WtlGkxFFq7dnwQTemS209JzTLODsnF1pS4KMr3S9xa7WheeCKfGVo5U7s6g== +"@leeoniya/ufuzzy@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@leeoniya/ufuzzy/-/ufuzzy-1.0.8.tgz#6a01b561749df84ff28637051865fdde3cbfc3a9" + integrity sha512-HQ6aJlYpWLq1f9AiApJl0aOIXlJUtuhBOYfSfv5rt3XNYkCBveojtnL6FvOVpJ2gEJ2wqgMW8xOHkLVYAbXghg== "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" @@ -1840,20 +1834,19 @@ resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== -"@monaco-editor/loader@^1.3.2": +"@monaco-editor/loader@^1.3.3": version "1.3.3" resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.3.tgz#7f1742bd3cc21c0362a46a4056317f6e5215cfca" integrity sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q== dependencies: state-local "^1.0.6" -"@monaco-editor/react@4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.4.6.tgz#8ae500b0edf85276d860ed702e7056c316548218" - integrity sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA== +"@monaco-editor/react@4.5.1": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.5.1.tgz#fbc76c692aee9a33b9ab24ae0c5f219b8f002fdb" + integrity sha512-NNDFdP+2HojtNhCkRfE6/D6ro6pBNihaOzMbGK84lNWzRu+CfBjwzGt4jmnqimLuqp5yE5viHS2vi+QOAnD5FQ== dependencies: - "@monaco-editor/loader" "^1.3.2" - prop-types "^15.7.2" + "@monaco-editor/loader" "^1.3.3" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1876,6 +1869,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@opentelemetry/api-logs@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.41.2.tgz#600c9b3d79018e7421d2ff7189f41b6d2c987d6a" + integrity sha512-JEV2RAqijAFdWeT6HddYymfnkiRu2ASxoTBr4WsnGJhOjWZkEy6vp+Sx9ozr1NaIODOa2HUyckExIqQjn6qywQ== + dependencies: + "@opentelemetry/api" "^1.0.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" @@ -1888,53 +1888,63 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== -"@opentelemetry/core@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.11.0.tgz#3141a0e96a9ade6ee2dcdd794fd0b014e1013dde" - integrity sha512-aP1wHSb+YfU0pM63UAkizYPuS4lZxzavHHw5KJfFNN2oWQ79HSm6JR3CzwFKHwKhSzHN8RE9fgP1IdVJ8zmo1w== +"@opentelemetry/core@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.15.2.tgz#5b170bf223a2333884bbc2d29d95812cdbda7c9f" + integrity sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw== + dependencies: + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/otlp-transformer@^0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz#cd3a7185ef77fe9b7b4c2d2f9e001fa1d2fa6cf8" + integrity sha512-jJbPwB0tNu2v+Xi0c/v/R3YBLJKLonw1p+v3RVjT2VfzeUyzSp/tBeVdY7RZtL6dzZpA9XSmp8UEfWIFQo33yA== dependencies: - "@opentelemetry/semantic-conventions" "1.11.0" + "@opentelemetry/api-logs" "0.41.2" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-logs" "0.41.2" + "@opentelemetry/sdk-metrics" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" -"@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" - integrity sha512-cIzV9x2DhJ5gN0mld8OqN+XM95sDiuAJJvXsRjVuz9vu8TSNbbao/QCKNfJLOXqe8l3Ge05nKzQ6Q2gDDEN36w== +"@opentelemetry/resources@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.15.2.tgz#0c9e26cb65652a1402834a3c030cce6028d6dd9d" + integrity sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw== dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/resources" "1.11.0" - "@opentelemetry/sdk-metrics" "1.11.0" - "@opentelemetry/sdk-trace-base" "1.11.0" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/resources@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.11.0.tgz#68e3ca399e63246a6b87bc495f819c5bd9f2c112" - integrity sha512-y0z2YJTqk0ag+hGT4EXbxH/qPhDe8PfwltYb4tXIEsozgEFfut/bqW7H7pDvylmCjBRMG4NjtLp57V1Ev++brA== +"@opentelemetry/sdk-logs@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.41.2.tgz#c3eeb6793bdfa52351d66e2e66637e433abed672" + integrity sha512-smqKIw0tTW15waj7BAPHFomii5c3aHnSE4LQYTszGoK5P9nZs8tEAIpu15UBxi3aG31ZfsLmm4EUQkjckdlFrw== dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/semantic-conventions" "1.11.0" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.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" - integrity sha512-knuq3pwU0+46FEMdw9Ses+alXL9cbcLUUTdYBBBsaKkqKwoVMHfhBufW7u6YCu4i+47Wg6ZZTN/eGc4LbTbK5Q== +"@opentelemetry/sdk-metrics@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz#eadd0a049de9cd860e1e0d49eea01156469c4b60" + integrity sha512-9aIlcX8GnhcsAHW/Wl8bzk4ZnWTpNlLtud+fxUfBtFATu6OZ6TrGrF4JkT9EVrnoxwtPIDtjHdEsSjOqisY/iA== dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/resources" "1.11.0" - lodash.merge "4.6.2" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + lodash.merge "^4.6.2" -"@opentelemetry/sdk-trace-base@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.11.0.tgz#a962dbe74ae28442501ce804d4a270892e70d862" - integrity sha512-DV8e5/Qo42V8FMBlQ0Y0Liv6Hl/Pp5bAZ73s7r1euX8w4bpRes1B7ACiA4yujADbWMJxBgSo4fGbi4yjmTMG2A== +"@opentelemetry/sdk-trace-base@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz#4821f94033c55a6c8bbd35ae387b715b6108517a" + integrity sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ== dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/resources" "1.11.0" - "@opentelemetry/semantic-conventions" "1.11.0" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/semantic-conventions@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.11.0.tgz#b7ed9a601acb6e0aef67564b37e4f9abad449170" - integrity sha512-fG4D0AktoHyHwGhFGv+PzKrZjxbKJfckJauTJdq2A+ej5cTazmNYjJVAODXXkYyrsI10muMl+B1iO2q1R6Lp+w== +"@opentelemetry/semantic-conventions@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241" + integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw== "@petamoriken/float16@^3.4.7": version "3.8.2" @@ -1951,7 +1961,7 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@rc-component/portal@^1.0.0-6": +"@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@rc-component/portal/-/portal-1.1.2.tgz#55db1e51d784e034442e9700536faaa6ab63fc71" integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg== @@ -1960,43 +1970,46 @@ classnames "^2.3.2" rc-util "^5.24.4" -"@react-aria/button@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.6.1.tgz#111e296df8e171e4eb227c306f087337490bc896" - integrity sha512-g10dk0eIQ71F1QefUymbff0yceQFHEKzOwK7J5QAFB5w/FUSmCTsMkBrrra4AogRxYHIAr5adPic5F2g7VzQFw== +"@rc-component/trigger@^1.0.4", "@rc-component/trigger@^1.5.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.17.0.tgz#4d9522ae3ceb482dc4c35cbb1f84021bd94d7414" + integrity sha512-KN+lKHCi7L4kjuA9DU2PnwZxtIyes6R1wsexp0/Rnjr/ITELsPuC9kpzDK1+7AZMarDXUAHUdDGS2zUNEx2P0g== dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/focus" "^3.8.0" - "@react-aria/interactions" "^3.11.0" - "@react-aria/utils" "^3.13.3" - "@react-stately/toggle" "^3.4.1" - "@react-types/button" "^3.6.1" - "@react-types/shared" "^3.14.1" + "@babel/runtime" "^7.18.3" + "@rc-component/portal" "^1.1.0" + classnames "^2.3.2" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-resize-observer "^1.3.1" + rc-util "^5.33.0" -"@react-aria/dialog@3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.3.1.tgz#16e250ecc25ddd5da140a4b3dccb4af0d2bfacb8" - integrity sha512-Sz7XdzX3rRhmfIp1rYS5D90T1tqiDsAkONsbPBRqUJx7NrjKiHhx3wvG4shiK66cPhAZwBk7wuQmMugDeIDFSA== +"@react-aria/button@3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.8.0.tgz#24ccdee450f588d1edeaea3045b0755ae54cc2ce" + integrity sha512-QdvXTQgn+QEWOHoMbUIPXSBIN5P2r1zthRvqDJMTCzuT0I6LbNAq7RoojEbRrcn0DbTa/nZPzOOYsZXjgteRdw== dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/focus" "^3.8.0" - "@react-aria/utils" "^3.13.3" - "@react-stately/overlays" "^3.4.1" - "@react-types/dialog" "^3.4.3" - "@react-types/shared" "^3.14.1" + "@react-aria/focus" "^3.13.0" + "@react-aria/interactions" "^3.16.0" + "@react-aria/utils" "^3.18.0" + "@react-stately/toggle" "^3.6.0" + "@react-types/button" "^3.7.3" + "@react-types/shared" "^3.18.1" + "@swc/helpers" "^0.5.0" -"@react-aria/focus@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.8.0.tgz#b292df7e35ed1b57af43f98df8135b00c4667d17" - integrity sha512-XuaLFdqf/6OyILifkVJo++5k2O+wlpNvXgsJkRWn/wSmB77pZKURm2MMGiSg2u911NqY+829UrSlpmhCZrc8RA== +"@react-aria/dialog@3.5.3": + version "3.5.3" + resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.5.3.tgz#50c3b49906706e366cb5feae1089e6b7bf51fef9" + integrity sha512-wXpAqnt6TtR4X/5Xk5HCTBM0qyPcF2bXFQ5z2gSwl1olgoQ5znZEgMqMLbMmwb4dsWGGtAueULs6fVZk766ygA== dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/interactions" "^3.11.0" - "@react-aria/utils" "^3.13.3" - "@react-types/shared" "^3.14.1" - clsx "^1.1.1" + "@react-aria/focus" "^3.13.0" + "@react-aria/overlays" "^3.15.0" + "@react-aria/utils" "^3.18.0" + "@react-stately/overlays" "^3.6.0" + "@react-types/dialog" "^3.5.3" + "@react-types/shared" "^3.18.1" + "@swc/helpers" "^0.5.0" -"@react-aria/focus@^3.13.0", "@react-aria/focus@^3.8.0": +"@react-aria/focus@3.13.0", "@react-aria/focus@^3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.13.0.tgz#0134112d52a83a53f15b5f7e7435833c6a69d913" integrity sha512-9DW7RqgbFWiImZmkmTIJGe9LrQBqEeLYwlKY+F1FTVXerIPiCCQ3JO3ESEa4lFMmkaHoueFLUrq2jkYjRNqoTw== @@ -2007,7 +2020,18 @@ "@swc/helpers" "^0.5.0" clsx "^1.1.1" -"@react-aria/i18n@^3.6.0", "@react-aria/i18n@^3.8.0": +"@react-aria/focus@^3.14.1": + version "3.14.1" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.14.1.tgz#f91733e158eed0fda4dd495511c8e4a7a7bcd998" + integrity sha512-2oVJgn86Rt7xgbtLzVlrYb7MZHNMpyBVLMMGjWyvjH5Ier2bgZ6czJJmm18Xe4kjlDHN0dnFzBvoRoTCWkmivA== + dependencies: + "@react-aria/interactions" "^3.18.0" + "@react-aria/utils" "^3.20.0" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + clsx "^1.1.1" + +"@react-aria/i18n@^3.8.0": version "3.8.0" resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.8.0.tgz#fe0c6b9ad9fe1e8a139c4d514d4240164c699bf8" integrity sha512-zeohg7d66zPLnGQl1rJuVJJ/gP7GmUMxEKIFRwE+rg2u02ldKxJMSb8QKGo605QpFWqo7CuuWYvKJP5Mj+Em/w== @@ -2021,7 +2045,21 @@ "@react-types/shared" "^3.18.1" "@swc/helpers" "^0.5.0" -"@react-aria/interactions@^3.11.0", "@react-aria/interactions@^3.16.0": +"@react-aria/i18n@^3.8.2": + version "3.8.2" + resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.8.2.tgz#7d7e267647271b45ce5095652d9fa9d83459d0ef" + integrity sha512-WsdByq3DmqEhr8sOdooVcDoS0CGGv+7cegZmmpw5VfUu0f0+0y7YBj/lRS9RuEqlgvSH+K3sPW/+0CkjM/LRGQ== + dependencies: + "@internationalized/date" "^3.5.0" + "@internationalized/message" "^3.1.1" + "@internationalized/number" "^3.2.1" + "@internationalized/string" "^3.1.1" + "@react-aria/ssr" "^3.8.0" + "@react-aria/utils" "^3.20.0" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + +"@react-aria/interactions@^3.16.0": version "3.16.0" resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.16.0.tgz#d3ed51df60d68090114322b853bcc3e9f5f51619" integrity sha512-vXANFKVd6ONqNw8U+ZWbSA8lrduCOXw7cWsYosTa5dZ24ZJfRfbhlvRe8CaAKMhB/rOOmvTLaAwdIPia6JtLDg== @@ -2031,41 +2069,36 @@ "@react-types/shared" "^3.18.1" "@swc/helpers" "^0.5.0" -"@react-aria/menu@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.6.1.tgz#91ad540795316623e539b32163a5d6a95f09052c" - integrity sha512-HUJVIOW9TwDS4RpAaw9/JqcOXFCn3leVUumWLfbwwzxON/Sbywr1j1jLuIkfIRAPmp0QVd42f6/9Y0cfH78BQQ== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/i18n" "^3.6.0" - "@react-aria/interactions" "^3.11.0" - "@react-aria/overlays" "^3.10.1" - "@react-aria/selection" "^3.10.1" - "@react-aria/utils" "^3.13.3" - "@react-stately/collections" "^3.4.3" - "@react-stately/menu" "^3.4.1" - "@react-stately/tree" "^3.3.3" - "@react-types/button" "^3.6.1" - "@react-types/menu" "^3.7.1" - "@react-types/shared" "^3.14.1" - -"@react-aria/overlays@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.10.1.tgz#ea7995d818030482987fbcd2f65344daf67175c2" - integrity sha512-6hY+3PQzFXQ2Gf656IiUy2VCwxzNohCHxHTZb7WTlOyNWDN77q8lzuHBlaoEzyh25M8CCO6NPa5DukyK3uCHSQ== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/i18n" "^3.6.0" - "@react-aria/interactions" "^3.11.0" - "@react-aria/ssr" "^3.3.0" - "@react-aria/utils" "^3.13.3" - "@react-aria/visually-hidden" "^3.4.1" - "@react-stately/overlays" "^3.4.1" - "@react-types/button" "^3.6.1" - "@react-types/overlays" "^3.6.3" - "@react-types/shared" "^3.14.1" - -"@react-aria/overlays@^3.10.1": +"@react-aria/interactions@^3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.18.0.tgz#20d242e3d8349533fdc74e88fb9ca7d1ecee91ab" + integrity sha512-V96uRZTVe2KcU5HW+r2cuUcLIfo0KuPOchywk9r48xtJC8u//sv5fAo0LMX6AgsQJ7bV09JO8nDqmZP0gkRElQ== + dependencies: + "@react-aria/ssr" "^3.8.0" + "@react-aria/utils" "^3.20.0" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + +"@react-aria/menu@3.10.0": + version "3.10.0" + resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.10.0.tgz#7f94e84c3ed2e18efa4b537e20e1e4125e9e6f51" + integrity sha512-zOOOXvx21aGSxZsXvLa3NV48hLk0jBC/zu5WZHT0Mo/wAe0+43f8p/U3AT8Gc4WnxYbIestcdLaIwgeagSoLtQ== + dependencies: + "@react-aria/focus" "^3.13.0" + "@react-aria/i18n" "^3.8.0" + "@react-aria/interactions" "^3.16.0" + "@react-aria/overlays" "^3.15.0" + "@react-aria/selection" "^3.16.0" + "@react-aria/utils" "^3.18.0" + "@react-stately/collections" "^3.9.0" + "@react-stately/menu" "^3.5.3" + "@react-stately/tree" "^3.7.0" + "@react-types/button" "^3.7.3" + "@react-types/menu" "^3.9.2" + "@react-types/shared" "^3.18.1" + "@swc/helpers" "^0.5.0" + +"@react-aria/overlays@3.15.0": version "3.15.0" resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.15.0.tgz#9ae71209735b9020921c02a6603bae58f25bcbc9" integrity sha512-MeLn74GvXZfi881NSx5sSd5eTduki/PMk4vPvMNp2Xm+9nGHm0FbGu2GMIGgarYy5JC7l/bOO7H01YrS4AozPg== @@ -2082,39 +2115,52 @@ "@react-types/shared" "^3.18.1" "@swc/helpers" "^0.5.0" -"@react-aria/selection@^3.10.1": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.16.0.tgz#827cf8056b218813dafeca48d10e9d91b475ee12" - integrity sha512-qQ4X0+wtLz0+qjsoj1T0hVehA0CbZdu0Ax+lCzWmj+ZDivtdeNpVQl+K0yj9p95MnzLgIbnY7zU2zDQrYqKDOQ== - dependencies: - "@react-aria/focus" "^3.13.0" - "@react-aria/i18n" "^3.8.0" - "@react-aria/interactions" "^3.16.0" - "@react-aria/utils" "^3.18.0" - "@react-stately/collections" "^3.9.0" - "@react-stately/selection" "^3.13.2" - "@react-types/shared" "^3.18.1" +"@react-aria/overlays@^3.15.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.17.0.tgz#93976917cf094d5e5ee5453659d9cdd5fe730d38" + integrity sha512-wfQ00llAIMLDtIid+0MvNqvbLP6Fqi2/hfvAxhDaRqrkiARwuCAclWNCIdCzF599IpZOMcjjBgIILEXdfA0ziw== + dependencies: + "@react-aria/focus" "^3.14.1" + "@react-aria/i18n" "^3.8.2" + "@react-aria/interactions" "^3.18.0" + "@react-aria/ssr" "^3.8.0" + "@react-aria/utils" "^3.20.0" + "@react-aria/visually-hidden" "^3.8.4" + "@react-stately/overlays" "^3.6.2" + "@react-types/button" "^3.8.0" + "@react-types/overlays" "^3.8.2" + "@react-types/shared" "^3.20.0" "@swc/helpers" "^0.5.0" -"@react-aria/ssr@^3.2.0", "@react-aria/ssr@^3.3.0", "@react-aria/ssr@^3.7.0": +"@react-aria/selection@^3.16.0": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.16.2.tgz#f6dfdbb0e071268111e5dcbd397321802bed00c9" + integrity sha512-C6zS5F1W38pukaMTFDTKbMrEvKkGikrXF94CtyxG1EI6EuZaQg1olaEeMCc3AyIb+4Xq+XCwjZuuSnS03qdVGQ== + dependencies: + "@react-aria/focus" "^3.14.1" + "@react-aria/i18n" "^3.8.2" + "@react-aria/interactions" "^3.18.0" + "@react-aria/utils" "^3.20.0" + "@react-stately/collections" "^3.10.1" + "@react-stately/selection" "^3.13.4" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + +"@react-aria/ssr@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.7.0.tgz#7eda2964ab792dc1c3a1fdacbf5bfb185590e9a5" integrity sha512-bfufjg4ESE5giN+Fxj1XIzS5f/YIhqcGc+Ve+vUUKU8xZ8t/Xtjlv8F3kjqDBQdk//n3mluFY7xG1wQVB9rMLQ== dependencies: "@swc/helpers" "^0.5.0" -"@react-aria/utils@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.13.1.tgz#45557fdc7ae9de057a83014013bf09e54d074c96" - integrity sha512-usW6RoLKil4ylgDbRcaQ5YblNGv5ZihI4I9NB8pdazhw53cSRyLaygLdmHO33xgpPnAhb6Nb/tv8d5p6cAde+A== +"@react-aria/ssr@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.8.0.tgz#e7f467ac42f72504682724304ce221f785d70d49" + integrity sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A== dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/ssr" "^3.2.0" - "@react-stately/utils" "^3.5.0" - "@react-types/shared" "^3.13.1" - clsx "^1.1.1" + "@swc/helpers" "^0.5.0" -"@react-aria/utils@^3.13.3", "@react-aria/utils@^3.18.0": +"@react-aria/utils@3.18.0", "@react-aria/utils@^3.18.0": version "3.18.0" resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.18.0.tgz#50e555ac049f47bff25bc2cef1078352e853d229" integrity sha512-eLs0ExzXx/D3P9qe6ophJ87ZFcI1oRTyRa51M59pCad7grrpk0gWcYrBjMwcR457YWOQQWCeLuq8QJl2QxCW6Q== @@ -2125,7 +2171,18 @@ "@swc/helpers" "^0.5.0" clsx "^1.1.1" -"@react-aria/visually-hidden@^3.4.1", "@react-aria/visually-hidden@^3.8.2": +"@react-aria/utils@^3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.20.0.tgz#46a03b36b790b9acc3338390023daa5f4aa987fc" + integrity sha512-TpvP9fw2/F0E+D05+S1og88dwvmVSLVB4lurVAodN1E6rCZyw+M/SHlCez0I7j1q9ZWAnVjRuHpBIRG5heX1Ug== + dependencies: + "@react-aria/ssr" "^3.8.0" + "@react-stately/utils" "^3.7.0" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + clsx "^1.1.1" + +"@react-aria/visually-hidden@^3.8.2": version "3.8.2" resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.2.tgz#96601a0b8d301348dec4da89789f94723de6b034" integrity sha512-MFTqqSvPfc8u3YlzNfQ3ITX4eVQpZDiSqLPKj3Zyr86CKlba5iG8WGqjiJhD2GNHlvmcF/mITXTsNzm0KxFE7g== @@ -2136,7 +2193,26 @@ "@swc/helpers" "^0.5.0" clsx "^1.1.1" -"@react-stately/collections@^3.4.3", "@react-stately/collections@^3.9.0": +"@react-aria/visually-hidden@^3.8.4": + version "3.8.4" + resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.4.tgz#7812ec32d5a317019acb2639b5e47d3de2886a4c" + integrity sha512-TRDtrndL/TiXjVac7o1vEmrHltSPugH0B6uqc1KRCSspFa1vg9tsgh9/N+qCXrEHynfNyK9FPjI70pAH+PXcqw== + dependencies: + "@react-aria/interactions" "^3.18.0" + "@react-aria/utils" "^3.20.0" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + clsx "^1.1.1" + +"@react-stately/collections@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.10.1.tgz#c936d2f97f5508ead5c22aa0d600cae410bf82ae" + integrity sha512-C9FPqoQUt7NeCmmP8uabQXapcExBOTA3PxlnUw+Nq3+eWH1gOi93XWXL26L8/3OQpkvAbUcyrTXhCybLk4uMAg== + dependencies: + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + +"@react-stately/collections@^3.9.0": version "3.9.0" resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.9.0.tgz#8a9e621fb10e370bd0329f96dd141bc6dcd0e548" integrity sha512-CBpXSKmCpbIFpIToVFlzo2R1/Cj+dcU8gWw2KfPyyJX+2wHKkDIvtK01EAytDLX/vkE8O+fD5a7qMZ3pf8gpeA== @@ -2144,18 +2220,7 @@ "@react-types/shared" "^3.18.1" "@swc/helpers" "^0.5.0" -"@react-stately/menu@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.4.1.tgz#47f23996927ffa605d725e68902e27ef848fe27a" - integrity sha512-DWo87hjKwtQsFiFJYZGcEvzfSYT/I4FoRl3Ose5lA/gPjdg97f42vumj+Kp4mqJwlla4A9Erz2vAh2uMLl4H0w== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-stately/overlays" "^3.4.1" - "@react-stately/utils" "^3.5.1" - "@react-types/menu" "^3.7.1" - "@react-types/shared" "^3.14.1" - -"@react-stately/menu@^3.4.1": +"@react-stately/menu@3.5.3": version "3.5.3" resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.5.3.tgz#c25fc231502cae639f5b557a9e1d8016a7e474cc" integrity sha512-RFgwVD/4BgTtJkexi1WaHpAEkQWZPvpyri0LQUgXWVqBf9PpjB8wigF3XBLMDNkL+YXE0QtzQZBNS1nJECf7rg== @@ -2166,7 +2231,18 @@ "@react-types/shared" "^3.18.1" "@swc/helpers" "^0.5.0" -"@react-stately/overlays@^3.4.1", "@react-stately/overlays@^3.6.0": +"@react-stately/menu@^3.5.3": + version "3.5.5" + resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.5.5.tgz#0c70431726a6f955537f26cc38f11206f2f97820" + integrity sha512-5IW26YURvwCs2a0n6PwlGOZ1K+M5xwfgR/q6mbQPfbZGZG6a14buHTHK8kISHAl2hHFcn0TV6yRYDmw2nxTM0A== + dependencies: + "@react-stately/overlays" "^3.6.2" + "@react-stately/utils" "^3.7.0" + "@react-types/menu" "^3.9.4" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + +"@react-stately/overlays@^3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.0.tgz#d53fedf3fec0e3a4db1c2a3b643b5cad09f9a88c" integrity sha512-0Bgy4xwCXKM+jkHAGJMN19ZFXNgKstf6qJozfH79j3E5erY30ZStwT7gbAnwv112zFUQLHBKo+3wJTGWuHgs8Q== @@ -2175,67 +2251,83 @@ "@react-types/overlays" "^3.8.0" "@swc/helpers" "^0.5.0" -"@react-stately/selection@^3.13.2": - version "3.13.2" - resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.13.2.tgz#9b0b717b0da4c84ec412a0e5068f6798ec37ddbd" - integrity sha512-rVnseneG9XWuS0+JEsa0EhRfTZsupm9JiEuZHZ19YeLewjVdFpjgBMDZb8ZYoyilNXVjyUwaoq94FsOXotsg9w== +"@react-stately/overlays@^3.6.2": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.2.tgz#478e4a9312f763242f4443b7fd1f90c49afcbaed" + integrity sha512-iIU/xtYEzG91abHFHqe8LL53ZrDDo8kblfdA7TTZwrtxZhQHU3AbT0pLc3BNe3sXmJspxuI1nS1cszcRlSuDww== dependencies: - "@react-stately/collections" "^3.9.0" "@react-stately/utils" "^3.7.0" - "@react-types/shared" "^3.18.1" + "@react-types/overlays" "^3.8.2" "@swc/helpers" "^0.5.0" -"@react-stately/toggle@^3.4.1": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.6.0.tgz#d1cd5a316ee1ee23003c2ed950816b8d314239fe" - integrity sha512-w+Aqh78H9MLs0FDUYTjAzYhrHQWaDJ2zWjyg2oYcSvERES0+D0obmPvtJLWsFrJ8fHJrTmxd7ezVFBY9BbPeFQ== +"@react-stately/selection@^3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.13.4.tgz#88d30907d467e2994951ee362a61879cc0182283" + integrity sha512-agxSYVi70zSDSKuAXx4GdD8aG5RWFs1djcrLsQybtkFV2hUMrjipfvPfNYz56ITtz6qj5Dq2eXOZpSEAR6EfOg== dependencies: + "@react-stately/collections" "^3.10.1" "@react-stately/utils" "^3.7.0" - "@react-types/checkbox" "^3.4.4" - "@react-types/shared" "^3.18.1" + "@react-types/shared" "^3.20.0" "@swc/helpers" "^0.5.0" -"@react-stately/tree@^3.3.3": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.7.0.tgz#fe658143cfec2d50921eeb7a9d2fad9c84b94dc8" - integrity sha512-oXOjJwy/o3XSJyBkudiEvnjWzto2jy48kmGjHCJ+B7Hv+WcbN9o7iAaHv11lOqMXRSpuF9gqox4ZZCASG+smIQ== +"@react-stately/toggle@^3.6.0": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.6.2.tgz#6f6e6c3010e45210cd18c147541876857930f570" + integrity sha512-O+0XtIjRX9YgAwNRhSdX2qi49PzY4eGL+F326jJfqc17HU3Qm6+nfqnODuxynpk1gw79sZr7AtROSXACTVueMQ== dependencies: - "@react-stately/collections" "^3.9.0" - "@react-stately/selection" "^3.13.2" "@react-stately/utils" "^3.7.0" - "@react-types/shared" "^3.18.1" + "@react-types/checkbox" "^3.5.1" + "@react-types/shared" "^3.20.0" "@swc/helpers" "^0.5.0" -"@react-stately/utils@^3.5.0", "@react-stately/utils@^3.5.1", "@react-stately/utils@^3.7.0": +"@react-stately/tree@^3.7.0": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.7.2.tgz#a0f13c76cb5d02ef29f4da0665ebaca7c821c372" + integrity sha512-Re18E7Tfu01xjZXEDZlFwibAomD7PHGZ9cFNTkRysA208uhKVrVVfh+8vvar4c9ybTGUWk5tT6zz+hslGBuLVQ== + dependencies: + "@react-stately/collections" "^3.10.1" + "@react-stately/selection" "^3.13.4" + "@react-stately/utils" "^3.7.0" + "@react-types/shared" "^3.20.0" + "@swc/helpers" "^0.5.0" + +"@react-stately/utils@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.7.0.tgz#ea99c2c4b5fba7e5079434a1de1ef53fbb21f6a8" integrity sha512-VbApRiUV2rhozOfk0Qj9xt0qjVbQfLTgAzXLdrfeZSBnyIgo1bFRnjDpnDZKZUUCeGQcJJI03I9niaUtY+kwJQ== dependencies: "@swc/helpers" "^0.5.0" -"@react-types/button@^3.6.1", "@react-types/button@^3.7.3": +"@react-types/button@^3.7.3": version "3.7.3" resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.7.3.tgz#00ad45ff0a304a6f6ef29a5d6adda73cea10942f" integrity sha512-Fz1t/kYinHDunmct3tADD2h3UDBPZUfRE+zCzYiymz0g+v/zYHTAqnkWToTF9ptf8HIB5L2Z2VFYpeUHFfpWzg== dependencies: "@react-types/shared" "^3.18.1" -"@react-types/checkbox@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.4.4.tgz#cf55e9fd0cabef6e4408d03b308c754e1add3bc1" - integrity sha512-rJNhbW4R9HTvdbF2oTZmqGiZ/WVP3/XsU4gae7tfdhSYjG+5T5h9zau1vRhz++zwKn57wfcyNn6a83GDhhgkVw== +"@react-types/button@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.8.0.tgz#e5ced04d718a9aaae6af175e7d2cb38552354cc9" + integrity sha512-hVVK5iWXhDYQZwxOBfN7nQDeFQ4Pp48uYclQbXWz8D74XnuGtiUziGR008ioLXRHf47dbIPLF1QHahsCOhh05g== dependencies: - "@react-types/shared" "^3.18.1" + "@react-types/shared" "^3.20.0" -"@react-types/dialog@^3.4.3": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.3.tgz#049e300372451190698ecf7d6e1ef559ab9fb962" - integrity sha512-iTdg+UZiJpJe7Rnu9eILf8Hcd9li0Kg2eg8ba8dIc1O++ymqPmrdPWj9wj1JB9cl94E2Yg4w3W5YINiLXkdoeA== +"@react-types/checkbox@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.5.1.tgz#ba86d4ec8230781df2aed8bc7d21dfe88f4deb15" + integrity sha512-7iQqBRnpNC/k8ztCC+gNGTKpTWj6yJijXPKJ8UduqPNuJ0mIqWgk7DJDBuIG0cVvnenTNxYuOL6mt3dgdcEj9w== dependencies: - "@react-types/overlays" "^3.8.0" - "@react-types/shared" "^3.18.1" + "@react-types/shared" "^3.20.0" -"@react-types/menu@^3.7.1", "@react-types/menu@^3.9.2": +"@react-types/dialog@^3.5.3": + version "3.5.5" + resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.5.tgz#bcd8d40bedc4c704161496d4c19a417ecc753b6a" + integrity sha512-XidCDLmbagLQZlnV8QVPhS3a63GdwiSa/0MYsHLDeb81+7P2vc3r+wNgnHWZw64mICWYzyyKxpzV3QpUm4f6+g== + dependencies: + "@react-types/overlays" "^3.8.2" + "@react-types/shared" "^3.20.0" + +"@react-types/menu@^3.9.2": version "3.9.2" resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.9.2.tgz#e3a269fd687994495a3f8f104ca133487273874e" integrity sha512-OIuEOGqo8gHaP4k3Ua+RvuPN2/3Sgcl30dNFIGaK7hra4eWxOUu8TTC+/Quy6xozR/SvFhqCLCoMKixy6MblWQ== @@ -2243,69 +2335,37 @@ "@react-types/overlays" "^3.8.0" "@react-types/shared" "^3.18.1" -"@react-types/overlays@^3.6.3", "@react-types/overlays@^3.8.0": +"@react-types/menu@^3.9.4": + version "3.9.4" + resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.9.4.tgz#58256482f63efdda4a0d9cfacd98445ee0c4f327" + integrity sha512-8OnPQHMPZw126TuLi21IuHWMbGOqoWZa+0uJCg2gI+Xpe1F0dRK/DNzCIKkGl1EXgZATJbRC3NcxyZlWti+/EQ== + dependencies: + "@react-types/overlays" "^3.8.2" + "@react-types/shared" "^3.20.0" + +"@react-types/overlays@^3.8.0": version "3.8.0" resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.8.0.tgz#23d74b59be65b5c56e28f30da6ea1e9a83bba05f" integrity sha512-0JxwUW3xwXjsT+nVI5dVE1KUm8QKxnQj9vjqgsazX213+klRd/QdeuFJgcbxzCVFOS/mLkP4o/ATjxt4+1eQsA== dependencies: "@react-types/shared" "^3.18.1" -"@react-types/shared@^3.13.1", "@react-types/shared@^3.14.1", "@react-types/shared@^3.18.1": +"@react-types/overlays@^3.8.2": + version "3.8.2" + resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.8.2.tgz#1411e0a1626f4140de0ce67835f24a6a18f8d5de" + integrity sha512-HpLYzkNvuvC6nKd06vF9XbcLLv3u55+e7YUFNVpgWq8yVxcnduOcJdRJhPaAqHUl6iVii04mu1GKnCFF8jROyQ== + dependencies: + "@react-types/shared" "^3.20.0" + +"@react-types/shared@^3.18.1": version "3.18.1" resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.18.1.tgz#45bac7a1a433916d16535ea583d86a2b4c72ff8c" integrity sha512-OpTYRFS607Ctfd6Tmhyk6t6cbFyDhO5K+etU35X50pMzpypo1b7vF0mkngEeTc0Xwl0e749ONZNPZskMyu5k8w== -"@sentry/browser@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.19.7.tgz#a40b6b72d911b5f1ed70ed3b4e7d4d4e625c0b5f" - integrity sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA== - dependencies: - "@sentry/core" "6.19.7" - "@sentry/types" "6.19.7" - "@sentry/utils" "6.19.7" - tslib "^1.9.3" - -"@sentry/core@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.19.7.tgz#156aaa56dd7fad8c89c145be6ad7a4f7209f9785" - integrity sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw== - dependencies: - "@sentry/hub" "6.19.7" - "@sentry/minimal" "6.19.7" - "@sentry/types" "6.19.7" - "@sentry/utils" "6.19.7" - tslib "^1.9.3" - -"@sentry/hub@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.19.7.tgz#58ad7776bbd31e9596a8ec46365b45cd8b9cfd11" - integrity sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA== - dependencies: - "@sentry/types" "6.19.7" - "@sentry/utils" "6.19.7" - tslib "^1.9.3" - -"@sentry/minimal@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.19.7.tgz#b3ee46d6abef9ef3dd4837ebcb6bdfd01b9aa7b4" - integrity sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ== - dependencies: - "@sentry/hub" "6.19.7" - "@sentry/types" "6.19.7" - tslib "^1.9.3" - -"@sentry/types@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.7.tgz#c6b337912e588083fc2896eb012526cf7cfec7c7" - integrity sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg== - -"@sentry/utils@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.19.7.tgz#6edd739f8185fd71afe49cbe351c1bbf5e7b7c79" - integrity sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA== - dependencies: - "@sentry/types" "6.19.7" - tslib "^1.9.3" +"@react-types/shared@^3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.20.0.tgz#15f0cbe3978831589f083c8e316810669b4fa606" + integrity sha512-lgTO/S/EMIZKU1EKTg8wT0qYP5x/lZTK2Xw6BZZk5c4nn36JYhGCRb/OoR/jBCIeRb2x9yNbwERO6NYVkoQMSw== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -2570,11 +2630,6 @@ dependencies: "@types/node" "*" -"@types/grafana@https://git@github.com/CorpGlory/types-grafana.git": - version "4.6.3" - uid "4beede5fa0e5bdebdb23b09e4e1e214dcc4c267f" - resolved "https://git@github.com/CorpGlory/types-grafana.git#4beede5fa0e5bdebdb23b09e4e1e214dcc4c267f" - "@types/hoist-non-react-statics@^3.3.0": version "3.3.1" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" @@ -2634,6 +2689,18 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/lodash.memoize@^4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/lodash.memoize/-/lodash.memoize-4.1.7.tgz#aff94ab32813c557cbc1104e127030e3d60a3b27" + integrity sha512-lGN7WeO4vO6sICVpf041Q7BX/9k1Y24Zo3FY0aUezr1QlKznpjzsDk3T3wvH8ofYzoK0QupN9TWcFAFZlyPwQQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.198" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.198.tgz#4d27465257011aedc741a809f1269941fa2c5d4c" + integrity sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg== + "@types/lodash@^4.14.188": version "4.14.199" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" @@ -2735,6 +2802,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/string-hash@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/string-hash/-/string-hash-1.1.1.tgz#4c336e61d1e13ce2d3efaaa5910005fd080e106b" + integrity sha512-ijt3zdHi2DmZxQpQTmozXszzDo78V4R3EdvX0jFMfnMH2ZzQSmCbaWOMPGXFUYSzSIdStv78HDjg32m5dxc+tA== + "@types/testing-library__jest-dom@^5.9.1": version "5.14.9" resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" @@ -3100,7 +3172,7 @@ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== -"@wojtekmaj/date-utils@^1.0.2": +"@wojtekmaj/date-utils@^1.1.3": version "1.5.0" resolved "https://registry.yarnpkg.com/@wojtekmaj/date-utils/-/date-utils-1.5.0.tgz#6e8e5be857f3b66d0a99876e4c2295f1009a7560" integrity sha512-0mq88lCND6QiffnSDWp+TbOxzJSwy2V/3XN+HwWZ7S2n19QAgR5dy5hRVhlECXvQIq2r+VcblBu+S9V+yMcxXw== @@ -3916,10 +3988,10 @@ core-js-compat@^3.31.0, core-js-compat@^3.32.2: dependencies: browserslist "^4.21.10" -core-js@3.28.0: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" - integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== +core-js@3.31.0: + version "3.31.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.31.0.tgz#4471dd33e366c79d8c0977ed2d940821719db344" + integrity sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ== core-js@^2.4.0: version "2.6.12" @@ -4245,10 +4317,10 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -d3@7.8.2: - version "7.8.2" - resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.2.tgz#2bdb3c178d095ae03b107a18837ae049838e372d" - integrity sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ== +d3@7.8.5: + version "7.8.5" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.5.tgz#fde4b760d4486cdb6f0cc8e2cbff318af844635c" + integrity sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA== dependencies: d3-array "3" d3-axis "3" @@ -4295,10 +4367,12 @@ data-urls@^3.0.2: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -date-fns@2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== +date-fns@2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" @@ -5415,11 +5489,12 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-user-locale@^1.2.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-1.5.1.tgz#18a9ba2cfeed0e713ea00968efa75d620523a5ea" - integrity sha512-WiNpoFRcHn1qxP9VabQljzGwkAQDrcpqUtaP0rNBEkFxJdh4f3tik6MfZsMYZc+UgQJdGCxWEjL9wnCUlRQXag== +get-user-locale@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-2.3.0.tgz#7656315a963a824048883f7dab4d7dc74773d1e0" + integrity sha512-I3rQvAUwu2nauRD9YyQBSXVFJZixNouwA+eZld51Sn4Pn0N1qFbgcgOi/nPigJPQlNY519mT95fiSPRgflQiTA== dependencies: + "@types/lodash.memoize" "^4.1.7" lodash.memoize "^4.1.1" get-window@^1.1.1: @@ -5681,6 +5756,13 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== +i18next-browser-languagedetector@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" + integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== + dependencies: + "@babel/runtime" "^7.19.4" + i18next@^22.0.0: version "22.5.1" resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" @@ -5722,10 +5804,10 @@ ignore@^5.1.8, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -immutable@4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a" - integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w== +immutable@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== immutable@^4.0.0: version "4.3.2" @@ -6492,10 +6574,10 @@ jest@^29.3.1: import-local "^3.0.2" jest-cli "^29.6.2" -jquery@3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.3.tgz#23ed2ffed8a19e048814f13391a19afcdba160e6" - integrity sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg== +jquery@3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.0.tgz#fe2c01a05da500709006d8790fe21c8a39d75612" + integrity sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ== js-cookie@^2.2.1: version "2.2.1" @@ -6771,7 +6853,7 @@ lodash.memoize@4.x, lodash.memoize@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== -lodash.merge@4.6.2, lodash.merge@^4.6.2: +lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== @@ -6846,10 +6928,15 @@ mapbox-to-css-font@^2.4.1: resolved "https://registry.yarnpkg.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz#a9e31b363ad8ca881cd339ca99f2d2a6b02ea5dd" integrity sha512-f+NBjJJY4T3dHtlEz1wCG7YFlkODEjFIYlxDdLIDMNpkSksqTt+l/d4rjuwItxuzkuMFvPyrjzV2lxRM4ePcIA== -marked@4.2.12: - version "4.2.12" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5" - integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw== +marked-mangle@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.0.tgz#f9f0adfbb841079d7342368bc5c7592ba93e3527" + integrity sha512-ed2W2gMB2HIBaYasBZveMFJfDRTL2OFycr0GgUSPcBSNl5dX+1r6lHG6u1eFXw7kej2hBTWa1m6YZqcfn4Coxw== + +marked@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-5.1.1.tgz#40b3963bb9da225314f746d5012ba7e34942f636" + integrity sha512-bTmmGdEINWmOMDjnPWDxGPQ4qkDLeYorpYbEtFOXzOruTwUE671q4Guiuchn4N8h/v6NGd7916kXsm3Iz4iUSg== mdn-data@2.0.14: version "2.0.14" @@ -6923,6 +7010,14 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -7152,22 +7247,34 @@ object.values@^1.1.5, object.values@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" -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" - integrity sha512-YX3u8FBJHsRHaoGxmd724Mp5WPTuV7wLQW6zZhcihMuInsSdCX1EiZfU+8IAL7jG0pbgl5YgC0aWE/MXJcUXxg== +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" + integrity sha512-S/UdYBuOjrotcR95Iq9AejGYbifKeZE85D9VtH11ryJLQPTZXZSW1J5bIXcr4AlAH6tyjPPHTK34AdkwB32Myw== dependencies: "@mapbox/mapbox-gl-style-spec" "^13.23.1" mapbox-to-css-font "^2.4.1" + ol "^7.3.0" -ol@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/ol/-/ol-7.2.2.tgz#d675a1525fd995a29a70a9a9fa9c3a9bc827aa39" - integrity sha512-eqJ1hhVQQ3Ap4OhYq9DRu5pz9RMpLhmoTauDoIqpn7logVi1AJE+lXjEHrPrTSuZYjtFbMgqr07sxoLNR65nrw== +ol@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/ol/-/ol-7.4.0.tgz#935436c0843d1f939972e076d4fcb130530ce9d7" + integrity sha512-bgBbiah694HhC0jt8ptEFNRXwgO8d6xWH3G97PCg4bmn9Li5nLLbi59oSrvqUI6VPVwonPQF1YcqJymxxyMC6A== dependencies: earcut "^2.2.3" geotiff "^2.0.7" - ol-mapbox-style "^9.2.0" + ol-mapbox-style "^10.1.0" + pbf "3.2.1" + rbush "^3.0.1" + +ol@^7.3.0: + version "7.5.2" + resolved "https://registry.yarnpkg.com/ol/-/ol-7.5.2.tgz#2e40a16b45331dbee86ca86876fcc7846be0dbb7" + integrity sha512-HJbb3CxXrksM6ct367LsP3N+uh+iBBMdP3DeGGipdV9YAYTP0vTJzqGnoqQ6C2IW4qf8krw9yuyQbc9fjOIaOQ== + dependencies: + earcut "^2.2.3" + geotiff "^2.0.7" + ol-mapbox-style "^10.1.0" pbf "3.2.1" rbush "^3.0.1" @@ -7249,10 +7356,10 @@ pako@^2.0.4: resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== -papaparse@5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.2.tgz#d1abed498a0ee299f103130a6109720404fbd467" - integrity sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw== +papaparse@5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.4.1.tgz#f45c0f871853578bd3a30f92d96fdcfb6ebea127" + integrity sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw== parent-module@^1.0.0: version "1.0.1" @@ -7624,25 +7731,25 @@ rc-animate@2.x: rc-util "^4.15.3" react-lifecycles-compat "^3.0.4" -rc-cascader@3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.8.0.tgz#5eaca8998b2e3f5692d13f16bfe2346eccc87c6a" - integrity sha512-zCz/NzsNRQ1TIfiR3rQNxjeRvgRHEkNdo0FjHQZ6Ay6n4tdCmMrM7+81ThNaf21JLQ1gS2AUG2t5uikGV78obA== +rc-cascader@3.12.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.12.1.tgz#35f9db14a2d32a2a413801d4625cb61cdaa3f706" + integrity sha512-g6In2y6eudHXS/Fs9dKFhp9acvHRUPqem/7xReR9ng8M1pNAE137uGBOt9WNpgsKT/cDGudXZQVehaBwAKg6hQ== dependencies: "@babel/runtime" "^7.12.5" array-tree-filter "^2.1.0" classnames "^2.3.1" - rc-select "~14.2.0" + rc-select "~14.5.0" rc-tree "~5.7.0" rc-util "^5.6.1" -rc-drawer@6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.1.3.tgz#4b2277db09f059be7144dc82d5afede9c2ab2191" - integrity sha512-AvHisO90A+xMLMKBw2zs89HxjWxusM2BUABlgK60RhweIHF8W/wk0hSOrxBlUXoA9r1F+10na3g6GZ97y1qDZA== +rc-drawer@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.3.0.tgz#f8af5fafbab19b83722360dcf93e966d8a2875ad" + integrity sha512-uBZVb3xTAR+dBV53d/bUhTctCw3pwcwJoM7g5aX+7vgwt2zzVzoJ6aqFjYJpBlZ9zp0dVYN8fV+hykFE7c4lig== dependencies: "@babel/runtime" "^7.10.1" - "@rc-component/portal" "^1.0.0-6" + "@rc-component/portal" "^1.1.1" classnames "^2.2.6" rc-motion "^2.6.1" rc-util "^5.21.2" @@ -7666,7 +7773,7 @@ rc-overflow@^1.0.0: rc-resize-observer "^1.0.0" rc-util "^5.19.2" -rc-resize-observer@^1.0.0: +rc-resize-observer@^1.0.0, rc-resize-observer@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz#b61b9f27048001243617b81f95e53d7d7d7a6a3d" integrity sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg== @@ -7676,23 +7783,23 @@ rc-resize-observer@^1.0.0: rc-util "^5.27.0" resize-observer-polyfill "^1.5.1" -rc-select@~14.2.0: - version "14.2.2" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.2.2.tgz#03558848b190d24fc9010a3bf1104c6dbea9b122" - integrity sha512-w+LuiYGFWgaV23PuxtdeWtXSsoxt+eCfzxu/CvRuqSRm8tn/pqvAb1xUIDAjoMMWK1FqiOW4jI/iMt7ZRG/BBg== +rc-select@~14.5.0: + version "14.5.2" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.5.2.tgz#1ac1ab58c874696cfa01cb15e1fc9a7bba81b29e" + integrity sha512-Np/lDHvxCnVhVsheQjSV1I/OMJTWJf1n10wq8q1AGy3ytyYLfjNpi6uaz/pmjsbbiSddSWzJnNZCli9LmgBZsA== dependencies: "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.5.0" 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.4.13" + rc-virtual-list "^3.5.2" -rc-slider@10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.1.1.tgz#5e82036e60b61021aba3ea0e353744dd7c74e104" - integrity sha512-gn8oXazZISEhnmRinI89Z/JD/joAaM35jp+gDtIVSTD/JJMCCBqThqLk1SVJmvtfeiEF/kKaFY0+qt4SDHFUDw== +rc-slider@10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.2.1.tgz#9b571d19f740adcacdde271f44901a47717fd8da" + integrity sha512-l355C/65iV4UFp7mXq5xBTNX2/tF2g74VWiTVlTpNp+6vjE/xaHHNiQq5Af+Uu28uUiqCuH/QXs5HfADL9KJ/A== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" @@ -7710,14 +7817,14 @@ rc-time-picker@^3.7.3: rc-trigger "^2.2.0" react-lifecycles-compat "^3.0.4" -rc-tooltip@5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.3.1.tgz#3dde4e1865f79cd23f202bba4e585c2a1173024b" - integrity sha512-e6H0dMD38EPaSPD2XC8dRfct27VvT2TkPdoBSuNl3RRZ5tspiY/c5xYEmGC0IrABvMBgque4Mr2SMZuliCvoiQ== +rc-tooltip@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-6.0.1.tgz#6a5e33bd6c3f6afe8851ea90e7af43e5c26b3cc6" + integrity sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA== dependencies: "@babel/runtime" "^7.11.2" + "@rc-component/trigger" "^1.0.4" classnames "^2.3.1" - rc-trigger "^5.3.1" rc-tree@~5.7.0: version "5.7.9" @@ -7743,17 +7850,6 @@ rc-trigger@^2.2.0: rc-util "^4.4.0" react-lifecycles-compat "^3.0.4" -rc-trigger@^5.0.4, rc-trigger@^5.3.1: - version "5.3.4" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.3.4.tgz#6b4b26e32825677c837d1eb4d7085035eecf9a61" - integrity sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw== - dependencies: - "@babel/runtime" "^7.18.3" - classnames "^2.2.6" - rc-align "^4.0.0" - rc-motion "^2.0.0" - rc-util "^5.19.2" - rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0: version "4.21.1" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" @@ -7773,7 +7869,15 @@ rc-util@^5.15.0, rc-util@^5.16.1, rc-util@^5.19.2, rc-util@^5.21.0, rc-util@^5.2 "@babel/runtime" "^7.18.3" react-is "^16.12.0" -rc-virtual-list@^3.4.13, rc-virtual-list@^3.5.1: +rc-util@^5.33.0, rc-util@^5.36.0: + version "5.37.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.37.0.tgz#6df9a55cb469b41b6995530a45b5f3dd3219a4ea" + integrity sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ== + dependencies: + "@babel/runtime" "^7.18.3" + react-is "^16.12.0" + +rc-virtual-list@^3.5.1: version "3.5.3" resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.5.3.tgz#84f82d3257f6c520106a6285558dfc764c41c076" integrity sha512-rG6IuD4EYM8K6oZ8Shu2BC/CmcTdqng4yBWkc/5fjWhB20bl6QwR2Upyt7+MxvfscoVm8zOQY+tcpEO5cu4GaQ== @@ -7783,6 +7887,16 @@ rc-virtual-list@^3.4.13, rc-virtual-list@^3.5.1: rc-resize-observer "^1.0.0" rc-util "^5.15.0" +rc-virtual-list@^3.5.2: + version "3.11.1" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.1.tgz#31f82967cdc57667fb3c86edaa77215936d8efb2" + integrity sha512-QKhksqvzKw63D8oVxAtnc82sWeyWZd135k67jVbf3cy42gz+r1Znt8ZCziveFWTqEYUVWnvjHTlEbc6lO0mkKg== + dependencies: + "@babel/runtime" "^7.20.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.36.0" + react-beautiful-dnd@13.1.1: version "13.1.1" resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz#b0f3087a5840920abf8bb2325f1ffa46d8c4d0a2" @@ -7796,14 +7910,15 @@ react-beautiful-dnd@13.1.1: redux "^4.0.4" use-memo-one "^1.1.1" -react-calendar@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.0.0.tgz#99ad73dd0c7c5b25aa535a5fdeee3d71bfe45faa" - integrity sha512-y9Q5Oo3Mq869KExbOCP3aJ3hEnRZKZ0TqUa9QU1wJGgDZFrW1qTaWp5v52oZpmxTTrpAMTUcUGaC0QJcO1f8Nw== +react-calendar@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.3.0.tgz#030364faab6d0d1516af14121d18148163ebc9a9" + integrity sha512-TyCv8NbXnqXADyXNtMG0szkGvJNH3NG/WMTEE2q6g3RqAsFNyHwYbQD5Kvb6jRV/CqO0WB+oMCtkxblprdeT5A== dependencies: - "@wojtekmaj/date-utils" "^1.0.2" + "@types/react" "*" + "@wojtekmaj/date-utils" "^1.1.3" clsx "^1.2.1" - get-user-locale "^1.2.0" + get-user-locale "^2.2.1" prop-types "^15.6.0" react-colorful@5.6.1: @@ -7905,6 +8020,11 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-loading-skeleton@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz#cd6e3a626ee86c76a46c14e2379243f2f8834e1b" + integrity sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA== + 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" @@ -7934,28 +8054,29 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" -react-router-dom@^5.2.0: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" - integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== +react-router-dom@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.3.tgz#8779fc28e6691d07afcaf98406d3812fe6f11199" + integrity sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.3.4" + react-router "5.3.3" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" - integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== +react-router@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.3.tgz#8e3841f4089e728cf82a429d92cdcaa5e4a3a288" + integrity sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" path-to-regexp "^1.7.0" prop-types "^15.6.2" react-is "^16.6.0" @@ -8705,6 +8826,11 @@ string-argv@^0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== +string-hash@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -8967,7 +9093,7 @@ tiny-warning@^0.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f" integrity sha512-r0SSA5Y5IWERF9Xh++tFPx0jITBgGggOsRLDWWew6YRw/C2dr4uNO1fw1vanrBmHsICmPyMLNBZboTlxUmUuaA== -tiny-warning@^1.0.0: +tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== @@ -9097,7 +9223,12 @@ tslib@2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^1.8.1, tslib@^1.9.3: +tslib@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==