From 79a6108b4f1d9bf451b72243905ff6ab6b3c4f80 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 27 May 2024 10:43:43 +0200 Subject: [PATCH 1/8] Update plugin keywords --- src/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugin.json b/src/plugin.json index e851224..ae66f52 100644 --- a/src/plugin.json +++ b/src/plugin.json @@ -15,7 +15,7 @@ "author": { "name": "QuestDB" }, - "keywords": ["Simple"], + "keywords": ["questdb", "time series", "time-series"], "logos": { "small": "img/logo.svg", "large": "img/logo.svg" From 470ac8e8ce80a72be2f515464e4caf464a2f4e6d Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 27 May 2024 10:54:13 +0200 Subject: [PATCH 2/8] Phase out `vectorator` --- src/data/QuestDbDatasource.ts | 43 ++++++++++++++++------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/src/data/QuestDbDatasource.ts b/src/data/QuestDbDatasource.ts index e7112dc..4beef94 100644 --- a/src/data/QuestDbDatasource.ts +++ b/src/data/QuestDbDatasource.ts @@ -9,24 +9,16 @@ import { MetricFindValue, ScopedVars, TypedVariableModel, - vectorator, } from '@grafana/data'; import { DataSourceWithBackend, getTemplateSrv } from '@grafana/runtime'; import { Observable } from 'rxjs'; -import { - QuestDBConfig, - QuestDBQuery, - FullField, - QueryType, -} from '../types'; +import { QuestDBConfig, QuestDBQuery, FullField, QueryType } from '../types'; import { AdHocFilter } from './adHocFilter'; import { isString } from 'lodash'; -import {Table} from "../components/questdb-sql/utils"; -import {InformationSchemaColumn} from "../components/questdb-sql/types"; +import { Table } from '../components/questdb-sql/utils'; +import { InformationSchemaColumn } from '../components/questdb-sql/types'; -export class Datasource - extends DataSourceWithBackend -{ +export class Datasource extends DataSourceWithBackend { // This enables default annotation support for 7.2+ annotations = {}; settings: DataSourceInstanceSettings; @@ -55,11 +47,11 @@ export class Datasource return []; } if (frame?.fields?.length === 1) { - return vectorator(frame?.fields[0]?.values).map((text) => ({ text, value: text })); + return frame?.fields[0]?.values.toArray().map((text) => ({ text, value: text })); } // convention - assume the first field is an id field const ids = frame?.fields[0]?.values; - return vectorator(frame?.fields[1]?.values).map((text, i) => ({ text, value: ids.get(i) })); + return frame?.fields[1]?.values.toArray().map((text, i) => ({ text, value: ids.get(i) })); } applyTemplateVariables(query: QuestDBQuery, scoped: ScopedVars): QuestDBQuery { @@ -157,9 +149,9 @@ export class Datasource return view.map((item) => ({ tableName: item[0], partitionBy: item[1], - designatedTimestamp: item[2] === null ? "" : item[2], + designatedTimestamp: item[2] === null ? '' : item[2], walEnabled: item[3], - dedup: item[4] + dedup: item[4], })); } @@ -188,9 +180,9 @@ export class Datasource const view = new DataFrameView(frame); return view.map((item) => ({ tableName: item[0], - ordinalPosition:item[1], + ordinalPosition: item[1], columnName: item[2], - dataType: item[3] + dataType: item[3], })); } @@ -268,7 +260,8 @@ export class Datasource } const field = frame.fields[0]; // Convert to string to avoid https://github.com/grafana/grafana/issues/12209 - return vectorator(field.values) + return field.values + .toArray() .filter((value) => value !== null) .map((value) => { return { text: String(value) }; @@ -280,7 +273,8 @@ export class Datasource const field = frame.fields.find((f) => f.name === key); if (field) { // Convert to string to avoid https://github.com/grafana/grafana/issues/12209 - return vectorator(field.values) + return field.values + .toArray() .filter((value) => value !== null) .map((value) => { return { text: String(value) }; @@ -318,15 +312,18 @@ export class Datasource // @todo https://github.com/grafana/grafana/issues/13109 const ADHOC_VAR = '$questdb_adhoc_query'; let source = getTemplateSrv().replace(ADHOC_VAR); - source = source === ADHOC_VAR ? "" : source; - if ( !source ){ + source = source === ADHOC_VAR ? '' : source; + if (!source) { const sql = 'select column_name, data_type, table_name from information_schema.columns'; return { type: TagType.schema, source: sql, from: source }; } if (source.toLowerCase().startsWith('select')) { return { type: TagType.query, source }; } - const tables = source.split(',').filter((t) => t?.trim()).join(','); + const tables = source + .split(',') + .filter((t) => t?.trim()) + .join(','); const sql = `select column_name, data_type, table_name from information_schema.columns WHERE table_name IN ('${tables}')`; return { type: TagType.schema, source: sql, from: source }; } From 14c60a3d67f942e263b88bdc842172c3efba1fbc Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 27 May 2024 11:03:50 +0200 Subject: [PATCH 3/8] Update copyrights, add `NOTICE` --- LICENSE | 368 ++++++++++++++++++++++++++++---------------------------- NOTICE | 12 ++ 2 files changed, 197 insertions(+), 183 deletions(-) create mode 100644 NOTICE diff --git a/LICENSE b/LICENSE index 27a7e9c..6c9ff3b 100644 --- a/LICENSE +++ b/LICENSE @@ -2,180 +2,180 @@ Version 2.0, January 2004 http://www.apache.org/licenses/ - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" @@ -186,16 +186,18 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2022-2023 Grafana Labs +Original work Copyright 2022-2023 Grafana Labs +Dervied work Copyright 2014-2019 Appsicle +Derived work Copyright 2019-2024 QuestDB - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..b0cfff2 --- /dev/null +++ b/NOTICE @@ -0,0 +1,12 @@ +QuestDB Grafana datasource plugin + +Original work Copyright 2022-2023 Grafana Labs +Dervied work Copyright 2014-2019 Appsicle +Derived work Copyright 2019-2024 QuestDB + +This product includes software developed at +Grafana Labs (https://grafana.com/). + +The Initial Developer of some parts of the plugin, which are copied from, derived from, or +inspired by Official ClickHouse data source for Grafana (https://github.com/grafana/clickhouse-datasource/), is Grafana Labs (https://grafana.com/). +Copyright 2022-2023 Grafana Labs. From 86d1fcac5ebc3f141e2a1b8ba7bc6096f9e3153e Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 27 May 2024 11:26:52 +0200 Subject: [PATCH 4/8] Notice: typo --- NOTICE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NOTICE b/NOTICE index b0cfff2..94da53c 100644 --- a/NOTICE +++ b/NOTICE @@ -1,7 +1,7 @@ QuestDB Grafana datasource plugin Original work Copyright 2022-2023 Grafana Labs -Dervied work Copyright 2014-2019 Appsicle +Derived work Copyright 2014-2019 Appsicle Derived work Copyright 2019-2024 QuestDB This product includes software developed at From 28b451dff1376cea5061af5fb0d6c98713f66d26 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 27 May 2024 11:37:35 +0200 Subject: [PATCH 5/8] Use `@grafana/plugin-ui` instead of `@grafana/experimental` in QueryHeader --- package.json | 7 +- src/components/QueryHeader.tsx | 6 +- yarn.lock | 704 ++++++++++++++++++++++++++++++++- 3 files changed, 697 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index ceecb82..0f3365f 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "identity-obj-proxy": "3.0.0", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", + "murmurhash-js": "^1.0.0", "prettier": "^2.8.7", "replace-in-file-webpack-plugin": "^1.0.6", "sass": "1.63.2", @@ -57,8 +58,7 @@ "typescript": "^4.8.4", "webpack": "^5.86.0", "webpack-cli": "^5.1.4", - "webpack-livereload-plugin": "^3.0.2", - "murmurhash-js": "^1.0.0" + "webpack-livereload-plugin": "^3.0.2" }, "resolutions": { "rxjs": "^7.5.6" @@ -67,10 +67,11 @@ "@emotion/css": "^11.1.3", "@grafana/data": "9.4.3", "@grafana/experimental": "^1.7.0", + "@grafana/plugin-ui": "^0.7.2", "@grafana/runtime": "9.4.3", "@grafana/ui": "10.1.0", - "@questdb/sql-grammar": "1.0.15", "@questdb/sql-ast-parser": "0.1.1", + "@questdb/sql-grammar": "1.0.15", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^5.2.0", diff --git a/src/components/QueryHeader.tsx b/src/components/QueryHeader.tsx index 5b3d04a..41af57d 100644 --- a/src/components/QueryHeader.tsx +++ b/src/components/QueryHeader.tsx @@ -4,8 +4,8 @@ import { QueryTypeSwitcher } from 'components/QueryTypeSwitcher'; import { FormatSelect } from '../components/FormatSelect'; import { Button } from '@grafana/ui'; import { getFormat } from 'components/editor'; -import { EditorHeader, FlexItem } from '@grafana/experimental'; -import {Datasource} from "../data/QuestDbDatasource"; +import { EditorHeader, FlexItem } from '@grafana/plugin-ui'; +import { Datasource } from '../data/QuestDbDatasource'; interface QueryHeaderProps { query: QuestDBQuery; @@ -14,7 +14,7 @@ interface QueryHeaderProps { datasource: Datasource; } -export const QueryHeader = ({ query, onChange, onRunQuery, datasource}: QueryHeaderProps) => { +export const QueryHeader = ({ query, onChange, onRunQuery, datasource }: QueryHeaderProps) => { React.useEffect(() => { if (typeof query.selectedFormat === 'undefined' && query.queryType === QueryType.SQL) { const selectedFormat = Format.AUTO; diff --git a/yarn.lock b/yarn.lock index aeee4de..7d4a851 100644 --- a/yarn.lock +++ b/yarn.lock @@ -827,6 +827,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/polyfill@^7.6.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96" + integrity sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + "@babel/preset-env@7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" @@ -931,6 +939,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.20.1": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" + integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.18.10", "@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" @@ -980,6 +995,76 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== +"@changesets/errors@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@changesets/errors/-/errors-0.1.4.tgz#f79851746c43679a66b383fdff4c012f480f480d" + integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== + dependencies: + extendable-error "^0.1.5" + +"@changesets/git@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@changesets/git/-/git-2.0.0.tgz#8de57649baf13a86eb669a25fa51bcad5cea517f" + integrity sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + is-subdir "^1.1.1" + micromatch "^4.0.2" + spawndamnit "^2.0.0" + +"@changesets/logger@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@changesets/logger/-/logger-0.0.5.tgz#68305dd5a643e336be16a2369cb17cdd8ed37d4c" + integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== + dependencies: + chalk "^2.1.0" + +"@changesets/parse@^0.3.16": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@changesets/parse/-/parse-0.3.16.tgz#f8337b70aeb476dc81745ab3294022909bc4a84a" + integrity sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg== + dependencies: + "@changesets/types" "^5.2.1" + js-yaml "^3.13.1" + +"@changesets/read@^0.5.9": + version "0.5.9" + resolved "https://registry.yarnpkg.com/@changesets/read/-/read-0.5.9.tgz#a1b63a82b8e9409738d7a0f9cc39b6d7c28cbab0" + integrity sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/git" "^2.0.0" + "@changesets/logger" "^0.0.5" + "@changesets/parse" "^0.3.16" + "@changesets/types" "^5.2.1" + chalk "^2.1.0" + fs-extra "^7.0.1" + p-filter "^2.1.0" + +"@changesets/types@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== + +"@changesets/types@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-5.2.1.tgz#a228c48004aa8a93bce4be2d1d31527ef3bf21f6" + integrity sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg== + +"@changesets/write@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@changesets/write/-/write-0.2.3.tgz#baf6be8ada2a67b9aba608e251bfea4fdc40bc63" + integrity sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/types" "^5.2.1" + fs-extra "^7.0.1" + human-id "^1.0.2" + prettier "^2.7.1" + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -1384,12 +1469,24 @@ debug "^3.1.0" lodash.once "^4.1.1" +"@date-io/core@^1.3.13": + version "1.3.13" + resolved "https://registry.yarnpkg.com/@date-io/core/-/core-1.3.13.tgz#90c71da493f20204b7a972929cc5c482d078b3fa" + integrity sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA== + +"@date-io/moment@^1.3.13": + version "1.3.13" + resolved "https://registry.yarnpkg.com/@date-io/moment/-/moment-1.3.13.tgz#56c2772bc4f6675fc6970257e6033e7a7c2960f0" + integrity sha512-3kJYusJtQuOIxq6byZlzAHoW/18iExJer9qfRF5DyyzdAk074seTuJfdofjz4RFfTd/Idk8WylOQpWtERqvFuQ== + dependencies: + "@date-io/core" "^1.3.13" + "@discoveryjs/json-ext@^0.5.0": version "0.5.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.5", "@emotion/babel-plugin@^11.11.0": +"@emotion/babel-plugin@^11.10.5", "@emotion/babel-plugin@^11.10.6", "@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== @@ -1428,6 +1525,17 @@ "@emotion/sheet" "^1.2.1" "@emotion/utils" "^1.2.0" +"@emotion/css@11.10.6": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.10.6.tgz#5d226fdd8ef2a46d28e4eb09f66dc01a3bda5a04" + 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.11.2", "@emotion/css@^11.1.3": version "11.11.2" resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.11.2.tgz#e5fa081d0c6e335352e1bc2b05953b61832dca5a" @@ -1463,6 +1571,20 @@ "@emotion/weak-memoize" "^0.3.0" hoist-non-react-statics "^3.3.1" +"@emotion/react@11.10.6": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11" + 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.11.1": version "11.11.1" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" @@ -1685,6 +1807,34 @@ uplot "1.6.24" xss "1.0.14" +"@grafana/data@9.5.19", "@grafana/data@^9.5.13": + version "9.5.19" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-9.5.19.tgz#353d1689cd6a286d7d00e36911e47b3a68afef64" + integrity sha512-EdvX80Xmnv4uv2eiOidYqXWQT7C4un9GxLjCzG3YEtU7u1dU1DIw9fA4MdVD0LeYY9ZC8lQV/lWB2dkYKW7rMA== + dependencies: + "@braintree/sanitize-url" "6.0.2" + "@grafana/schema" "9.5.19" + "@types/d3-interpolate" "^3.0.0" + d3-interpolate "3.0.1" + date-fns "2.29.3" + 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" + moment "2.29.4" + moment-timezone "0.5.41" + ol "7.2.2" + papaparse "5.3.2" + react-use "17.4.0" + regenerator-runtime "0.13.11" + rxjs "7.8.0" + tinycolor2 "1.6.0" + tslib "2.5.0" + uplot "1.6.24" + xss "^1.0.14" + "@grafana/e2e-selectors@10.1.0": version "10.1.0" resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-10.1.0.tgz#421881e385abae6e355ea38e9e6e4d3451ddb0da" @@ -1703,6 +1853,15 @@ tslib "2.4.1" typescript "4.8.4" +"@grafana/e2e-selectors@9.5.19", "@grafana/e2e-selectors@^9.5.13": + version "9.5.19" + resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-9.5.19.tgz#5d7ca91cc54c561f7da69e180a13c841674a0817" + integrity sha512-9UeobDv7qhOjMVF/X7eZ0x/ShCigFtGS1ChtIUKH2S0JXX0Jc1rM7x4Htx3+dGC/rCoQDjaPglMHUua/myWR/Q== + dependencies: + "@grafana/tsconfig" "^1.2.0-rc1" + tslib "2.5.0" + typescript "4.8.4" + "@grafana/e2e@9.4.3": version "9.4.3" resolved "https://registry.yarnpkg.com/@grafana/e2e/-/e2e-9.4.3.tgz#e9c4f7cfade2820c977db22c0520da1794e3ba0c" @@ -1747,6 +1906,15 @@ eslint-plugin-react-hooks "4.6.0" typescript "4.8.4" +"@grafana/experimental@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@grafana/experimental/-/experimental-1.7.4.tgz#5b5efe89abf38b1d3358251148d42b9111de539e" + integrity sha512-uYkv9HRx+cqJRktsY43ApG0+kgG4fNR8lv+bkaFvGyCg46dcTeNqokujoPnHp6lt9MEn+0Y3jKEQbvCXjcz2bA== + dependencies: + "@types/uuid" "^8.3.3" + semver "^7.5.4" + uuid "^8.3.2" + "@grafana/experimental@^1.7.0": version "1.7.10" resolved "https://registry.yarnpkg.com/@grafana/experimental/-/experimental-1.7.10.tgz#e3903809c263b9e36caf27aa0a37865bcc17d772" @@ -1769,6 +1937,14 @@ "@opentelemetry/api" "^1.7.0" "@opentelemetry/otlp-transformer" "^0.48.0" +"@grafana/faro-core@^1.0.2": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@grafana/faro-core/-/faro-core-1.7.3.tgz#44c46a640e3fc613c7ebb0868d66b2db7c863424" + integrity sha512-SIyYws35nB4XFMBL2BEUopOw98XJ6WFzftK0LFYBqaDC+NjR7xn2XJ8ien79EmOOK+xXMRRR/KJDHdp/CMj1dw== + dependencies: + "@opentelemetry/api" "^1.7.0" + "@opentelemetry/otlp-transformer" "^0.48.0" + "@grafana/faro-web-sdk@1.0.0-beta2": version "1.0.0-beta2" resolved "https://registry.yarnpkg.com/@grafana/faro-web-sdk/-/faro-web-sdk-1.0.0-beta2.tgz#d096a350d6366a108428a205753c797802eb480d" @@ -1778,6 +1954,15 @@ ua-parser-js "^1.0.32" web-vitals "^3.0.4" +"@grafana/faro-web-sdk@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@grafana/faro-web-sdk/-/faro-web-sdk-1.0.2.tgz#24e305a5d91fccc9c57577606f0adb12ad7f4a93" + integrity sha512-C5Cx1owlhdpa+CSu4s5cBN9jmFGfhdoUilWc9bP0gK5LW/MIPlysYNgE/1jCyYYQekOnQPNAxwBUOx1c0kbDqg== + dependencies: + "@grafana/faro-core" "^1.0.2" + ua-parser-js "^1.0.32" + web-vitals "^3.1.1" + "@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" @@ -1787,6 +1972,32 @@ ua-parser-js "^1.0.32" web-vitals "^3.1.1" +"@grafana/plugin-ui@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@grafana/plugin-ui/-/plugin-ui-0.7.2.tgz#77cb08b5d18e36e9c6846633ce7999a1d37e002d" + integrity sha512-VTkwPGTfBUmFgdBeqqKJifd7JCYXGTMcBxjieqqMCw4i0I61xqxSM0q4VGTuJka3b8ApSGCJGw+jM91du+mBOQ== + dependencies: + "@changesets/read" "^0.5.9" + "@changesets/write" "^0.2.3" + "@grafana/data" "^9.5.13" + "@grafana/e2e-selectors" "^9.5.13" + "@grafana/experimental" "1.7.4" + "@grafana/runtime" "^9.5.13" + "@grafana/tsconfig" "1.2.0-rc1" + "@grafana/ui" "^9.5.13" + "@testing-library/user-event" "^12.8.3" + chance "^1.1.7" + fast-glob "^3.3.1" + lodash "^4.17.21" + memoize-one "^5.1.1" + prompts "^2.4.2" + rc-cascader "1.0.1" + react-awesome-query-builder "^5.3.1" + react-use "17.3.1" + react-virtualized-auto-sizer "^1.0.6" + semver "^7.5.4" + sql-formatter-plus "^1.3.6" + "@grafana/runtime@9.4.3": version "9.4.3" resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-9.4.3.tgz#f57fcfd840c217ce6f0a86a01ce40e7060a44404" @@ -1803,6 +2014,22 @@ systemjs "0.20.19" tslib "2.4.1" +"@grafana/runtime@^9.5.13": + version "9.5.19" + resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-9.5.19.tgz#e629fad835cbab5d4f901b195f9c574a4c005b78" + integrity sha512-wYYFT90+H81znIBcud/ViivKhB17EMrI3HCPnjNcKJQeqdOfdGAaxop1Uwv2tfplJOa5Mf7VZ55wDOWeVA7+eg== + dependencies: + "@grafana/data" "9.5.19" + "@grafana/e2e-selectors" "9.5.19" + "@grafana/faro-web-sdk" "1.0.2" + "@grafana/ui" "9.5.19" + "@sentry/browser" "6.19.7" + history "4.10.1" + lodash "4.17.21" + rxjs "7.8.0" + systemjs "0.20.19" + tslib "2.5.0" + "@grafana/schema@10.1.0": version "10.1.0" resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-10.1.0.tgz#a797b6787788fca27d80bf835e2be8c82d90a0b3" @@ -1817,7 +2044,14 @@ dependencies: tslib "2.4.1" -"@grafana/tsconfig@^1.2.0-rc1": +"@grafana/schema@9.5.19": + version "9.5.19" + resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-9.5.19.tgz#0bb638501b9f6f22216d9a4acb89e670a62cf20d" + integrity sha512-T8uTVnixvOE5DzWucBPqxbURNQJO6GNjHwOGt312nxK5EknDWKt9YDq4tWi21DtBSuMgcBejAWYhh93Vldm5ng== + dependencies: + tslib "2.5.0" + +"@grafana/tsconfig@1.2.0-rc1", "@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== @@ -1964,6 +2198,77 @@ uplot "1.6.24" uuid "9.0.0" +"@grafana/ui@9.5.19", "@grafana/ui@^9.5.13": + version "9.5.19" + resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-9.5.19.tgz#bdbbb2deb04d6d423dde804eb3d154cc5312295d" + integrity sha512-fHGaIJPIYRZqxqjc/RhTFT6616EoKK4W5kz07JD1toXXGF+dCdL/T/Xi1oyeGSqwLDS+C/j2m55sOiV+nTQb7Q== + dependencies: + "@emotion/css" "11.10.6" + "@emotion/react" "11.10.6" + "@grafana/data" "9.5.19" + "@grafana/e2e-selectors" "9.5.19" + "@grafana/faro-web-sdk" "1.0.2" + "@grafana/schema" "9.5.19" + "@leeoniya/ufuzzy" "1.0.6" + "@monaco-editor/react" "4.4.6" + "@popperjs/core" "2.11.6" + "@react-aria/button" "3.6.1" + "@react-aria/dialog" "3.3.1" + "@react-aria/focus" "3.8.0" + "@react-aria/menu" "3.6.1" + "@react-aria/overlays" "3.10.1" + "@react-aria/utils" "3.13.1" + "@react-stately/menu" "3.4.1" + "@sentry/browser" "6.19.7" + 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" + hoist-non-react-statics "3.3.2" + i18next "^22.0.0" + immutable "4.2.4" + is-hotkey "0.2.0" + jquery "3.6.3" + lodash "4.17.21" + memoize-one "6.0.0" + moment "2.29.4" + monaco-editor "0.34.0" + ol "7.2.2" + prismjs "1.29.0" + rc-cascader "3.8.0" + rc-drawer "6.1.3" + rc-slider "10.1.1" + rc-time-picker "^3.7.3" + rc-tooltip "5.3.1" + react-beautiful-dnd "13.1.1" + react-calendar "4.0.0" + react-colorful "5.6.1" + react-custom-scrollbars-2 "4.5.0" + react-dropzone "14.2.3" + react-highlight-words "0.20.0" + react-hook-form "7.5.3" + react-i18next "^12.0.0" + react-inlinesvg "3.0.2" + react-popper "2.3.0" + react-popper-tooltip "4.4.2" + react-router-dom "^5.2.0" + react-select "5.7.0" + react-select-event "^5.1.0" + react-table "7.8.0" + react-transition-group "4.4.5" + react-use "17.4.0" + react-window "1.8.8" + rxjs "7.8.0" + slate "0.47.9" + slate-plain-serializer "0.7.13" + slate-react "0.22.10" + tinycolor2 "1.6.0" + tslib "2.5.0" + uplot "1.6.24" + uuid "9.0.0" + "@humanwhocodes/config-array@^0.11.10": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -2292,11 +2597,38 @@ resolved "https://registry.yarnpkg.com/@leeoniya/ufuzzy/-/ufuzzy-0.9.0.tgz#efb8f19f64ef6ff754fc49935c9ad53ab99712c1" integrity sha512-p2zWsX0GwO1x723Yhb3KLAoSwp1geQvzRPHgIoOR/0qn8Ptpsb3b01+W47iAYR/NWo0pX36XQoTU0alVRykMAg== +"@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== +"@manypkg/find-root@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== + dependencies: + "@babel/runtime" "^7.5.5" + "@types/node" "^12.7.1" + find-up "^4.1.0" + fs-extra "^8.1.0" + +"@manypkg/get-packages@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.3.tgz#e184db9bba792fa4693de4658cfb1463ac2c9c47" + integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== + dependencies: + "@babel/runtime" "^7.5.5" + "@changesets/types" "^4.0.1" + "@manypkg/find-root" "^1.1.0" + fs-extra "^8.1.0" + globby "^11.0.0" + read-yaml-file "^1.1.0" + "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" @@ -3080,6 +3412,13 @@ "@testing-library/dom" "^9.0.0" "@types/react-dom" "^18.0.0" +"@testing-library/user-event@^12.8.3": + version "12.8.3" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a" + integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/user-event@^14.5.2": version "14.5.2" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" @@ -3279,6 +3618,11 @@ dependencies: undici-types "~5.26.4" +"@types/node@^12.7.1": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "@types/node@^14.14.31": version "14.18.63" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" @@ -4175,6 +4519,13 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +better-path-resolve@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" + integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== + dependencies: + is-windows "^1.0.0" + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -4241,6 +4592,13 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -4344,7 +4702,7 @@ chalk-template@^1.1.0: dependencies: chalk "^5.2.0" -chalk@^2.4.2: +chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4374,6 +4732,11 @@ chalk@^5.2.0, chalk@^5.3.0: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== +chance@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.11.tgz#78e10e1f9220a5bbc60a83e3f28a5d8558d84d1b" + integrity sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -4516,6 +4879,11 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + clsx@^1.1.1, clsx@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" @@ -4707,12 +5075,17 @@ core-js@3.27.1: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.27.1.tgz#23cc909b315a6bb4e418bf40a52758af2103ba46" integrity sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww== +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: +core-js@^2.4.0, core-js@^2.6.5: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== @@ -4756,6 +5129,15 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -6069,6 +6451,11 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extendable-error@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" + integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== + extract-zip@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -6100,7 +6487,7 @@ fast-equals@^5.0.1: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== -fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -6209,6 +6596,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" @@ -6337,6 +6731,24 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -6594,7 +7006,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^11.1.0: +globby@^11.0.0, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -6624,7 +7036,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -6796,6 +7208,11 @@ https-proxy-agent@^5.0.1: agent-base "6" debug "4" +human-id@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3" + integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -6866,11 +7283,21 @@ immutable@4.2.2: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16" integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== +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@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== + immutable@^4.0.0: version "4.3.5" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" @@ -7181,6 +7608,13 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-subdir@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== + dependencies: + better-path-resolve "1.0.0" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -7230,6 +7664,11 @@ is-window@^1.0.2: resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" integrity sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg== +is-windows@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -7713,6 +8152,11 @@ jquery@3.6.1: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16" integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== +jquery@3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.3.tgz#23ed2ffed8a19e048814f13391a19afcdba160e6" + integrity sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg== + jquery@3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.0.tgz#fe2c01a05da500709006d8790fe21c8a39d75612" @@ -7735,7 +8179,7 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: +js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -7845,6 +8289,13 @@ jsonc-parser@^3.2.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -8040,6 +8491,14 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -8105,6 +8564,11 @@ marked@4.2.0: resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.0.tgz#f1683b077626a6c53e28926b798a18184aa13a91" integrity sha512-1qWHjHlBKwjnDfrkxd0L3Yx4LTad/WO7+d13YsXAC/ZfKj7p0xkLV3sDXJzfWgL7GfW4IBZwMAYWaz+ifyQouQ== +marked@4.2.12: + version "4.2.12" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5" + integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw== + marked@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/marked/-/marked-5.1.1.tgz#40b3963bb9da225314f746d5012ba7e34942f636" @@ -8177,6 +8641,14 @@ micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +micromatch@^4.0.2: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -8502,6 +8974,14 @@ ol-mapbox-style@^10.1.0: mapbox-to-css-font "^2.4.1" ol "^7.3.0" +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== + dependencies: + "@mapbox/mapbox-gl-style-spec" "^13.23.1" + mapbox-to-css-font "^2.4.1" + ol@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/ol/-/ol-7.1.0.tgz#aab69a0539e59d6a4361cbc0f69f8b00c7298c9c" @@ -8513,6 +8993,17 @@ ol@7.1.0: pbf "3.2.1" rbush "^3.0.1" +ol@7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/ol/-/ol-7.2.2.tgz#d675a1525fd995a29a70a9a9fa9c3a9bc827aa39" + integrity sha512-eqJ1hhVQQ3Ap4OhYq9DRu5pz9RMpLhmoTauDoIqpn7logVi1AJE+lXjEHrPrTSuZYjtFbMgqr07sxoLNR65nrw== + dependencies: + earcut "^2.2.3" + geotiff "^2.0.7" + ol-mapbox-style "^9.2.0" + pbf "3.2.1" + rbush "^3.0.1" + ol@7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/ol/-/ol-7.4.0.tgz#935436c0843d1f939972e076d4fcb130530ce9d7" @@ -8566,6 +9057,13 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== + dependencies: + p-map "^2.0.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -8594,6 +9092,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -8740,6 +9243,11 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pirates@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" @@ -8846,7 +9354,7 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^2.8.7: +prettier@^2.7.1, prettier@^2.8.7: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -8891,7 +9399,7 @@ promise@6.0.0: dependencies: asap "~1.0.0" -prompts@^2.0.1: +prompts@^2.0.1, prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -8923,6 +9431,11 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + psl@^1.1.28, psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -9066,6 +9579,16 @@ rc-animate@2.x: rc-util "^4.15.3" react-lifecycles-compat "^3.0.4" +rc-cascader@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.0.1.tgz#770de1e1fa7bd559aabd4d59e525819b8bc809b7" + integrity sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ== + dependencies: + array-tree-filter "^2.1.0" + rc-trigger "^4.0.0" + rc-util "^4.0.4" + warning "^4.0.1" + rc-cascader@3.12.1: version "3.12.1" resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.12.1.tgz#35f9db14a2d32a2a413801d4625cb61cdaa3f706" @@ -9101,6 +9624,17 @@ rc-drawer@6.1.2: rc-motion "^2.6.1" rc-util "^5.21.2" +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== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-6" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.21.2" + rc-drawer@6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.3.0.tgz#f8af5fafbab19b83722360dcf93e966d8a2875ad" @@ -9112,6 +9646,16 @@ rc-drawer@6.3.0: rc-motion "^2.6.1" rc-util "^5.21.2" +rc-motion@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-1.1.2.tgz#07212f1b96c715b8245ec121339146c4a9b0968c" + integrity sha512-YC/E7SSWKBFakYg4PENhSRWD4ZLDqkI7FKmutJcrMewZ91/ZIWfoZSDvPaBdKO0hsFrrzWepFhXQIq0FNnCMWA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + raf "^3.4.1" + rc-util "^5.0.6" + rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.6.1: version "2.9.0" resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710" @@ -9177,6 +9721,15 @@ rc-slider@10.1.0: rc-util "^5.18.1" shallowequal "^1.1.0" +rc-slider@10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.1.1.tgz#5e82036e60b61021aba3ea0e353744dd7c74e104" + integrity sha512-gn8oXazZISEhnmRinI89Z/JD/joAaM35jp+gDtIVSTD/JJMCCBqThqLk1SVJmvtfeiEF/kKaFY0+qt4SDHFUDw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.27.0" + rc-slider@10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.2.1.tgz#9b571d19f740adcacdde271f44901a47717fd8da" @@ -9240,6 +9793,18 @@ rc-trigger@^2.2.0: rc-util "^4.4.0" react-lifecycles-compat "^3.0.4" +rc-trigger@^4.0.0: + version "4.4.3" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.4.3.tgz#ed449cd6cce446555bc57f4394229c5c7154f4b0" + integrity sha512-yq/WyuiPwxd2q6jy+VPyy0GUCRFJ2eFqAaCwPE27AOftXeIupOcJ/2t1wakSq63cfk7qtzev5DKHUAjb8LOJCw== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + raf "^3.4.1" + rc-align "^4.0.0" + rc-motion "^1.0.0" + rc-util "^5.0.1" + 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" @@ -9262,6 +9827,14 @@ rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0: react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" +rc-util@^5.0.1, rc-util@^5.0.6: + version "5.41.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.41.0.tgz#b1ba000d4f3a9e72563370a3243b59f89b40e1bd" + integrity sha512-xtlCim9RpmVv0Ar2Nnc3WfJCxjQkTf3xHPWoFdjp1fSs2NirQwqiQrfqdU9HUe0kdfb168M/T8Dq0IaX50xeKg== + dependencies: + "@babel/runtime" "^7.18.3" + react-is "^18.2.0" + rc-util@^5.16.1, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.21.0, rc-util@^5.21.2, rc-util@^5.24.4, rc-util@^5.26.0, rc-util@^5.27.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.6.1: version "5.38.1" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.38.1.tgz#4915503b89855f5c5cd9afd4c72a7a17568777bb" @@ -9280,6 +9853,23 @@ rc-virtual-list@^3.4.13, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: rc-resize-observer "^1.0.0" rc-util "^5.36.0" +react-awesome-query-builder@^5.3.1: + version "5.4.2" + resolved "https://registry.yarnpkg.com/react-awesome-query-builder/-/react-awesome-query-builder-5.4.2.tgz#c42b1650b7a2d99445e1b416b316c652fa24b082" + integrity sha512-XeM+rFh2L4MiA6G65yqcoRTSU5xIiSoUnnZlOZlMCWZuaVNvb8wVwreMfztCrKBar6+hwHpCbd24zRxdFu7+VQ== + dependencies: + "@date-io/moment" "^1.3.13" + classnames "^2.3.1" + clone "^2.1.2" + immutable "^3.8.2" + lodash "^4.17.21" + moment "^2.29.4" + prop-types "^15.7.2" + react-redux "^7.2.2" + redux "^4.2.0" + spel2js "^0.2.8" + sqlstring "^2.3.3" + react-beautiful-dnd@13.1.1, 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" @@ -9303,6 +9893,16 @@ react-calendar@3.9.0: merge-class-names "^1.1.1" prop-types "^15.6.0" +react-calendar@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.0.0.tgz#99ad73dd0c7c5b25aa535a5fdeee3d71bfe45faa" + integrity sha512-y9Q5Oo3Mq869KExbOCP3aJ3hEnRZKZ0TqUa9QU1wJGgDZFrW1qTaWp5v52oZpmxTTrpAMTUcUGaC0QJcO1f8Nw== + dependencies: + "@wojtekmaj/date-utils" "^1.0.2" + clsx "^1.2.1" + get-user-locale "^1.2.0" + prop-types "^15.6.0" + react-calendar@4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.3.0.tgz#030364faab6d0d1516af14121d18148163ebc9a9" @@ -9442,7 +10042,7 @@ react-popper@2.3.0, react-popper@^2.3.0: react-fast-compare "^3.0.1" warning "^4.0.2" -react-redux@^7.2.0: +react-redux@^7.2.0, react-redux@^7.2.2: version "7.2.9" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== @@ -9568,6 +10168,26 @@ react-universal-interface@^0.6.2: resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== +react-use@17.3.1: + version "17.3.1" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.3.1.tgz#12b248555775519aa2b900b22f1928d029bf99d1" + integrity sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA== + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.3.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + react-use@17.4.0: version "17.4.0" resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d" @@ -9608,6 +10228,11 @@ react-use@^17.4.2: ts-easing "^0.2.0" tslib "^2.1.0" +react-virtualized-auto-sizer@^1.0.6: + version "1.0.24" + resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz#3ebdc92f4b05ad65693b3cc8e7d8dd54924c0227" + integrity sha512-3kCn7N9NEb3FlvJrSHWGQ4iVl+ydQObq2fHMn12i5wbtm74zHOPhz/i64OL3c1S1vi9i2GXtZqNqUJTQ+BnNfg== + react-window@1.8.8: version "1.8.8" resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.8.tgz#1b52919f009ddf91970cbdb2050a6c7be44df243" @@ -9623,6 +10248,16 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +read-yaml-file@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" + integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== + dependencies: + graceful-fs "^4.1.5" + js-yaml "^3.6.1" + pify "^4.0.1" + strip-bom "^3.0.0" + readable-stream@^1.1.7: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -9668,7 +10303,7 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redux@^4.0.0, redux@^4.0.4: +redux@^4.0.0, redux@^4.0.4, redux@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== @@ -9692,7 +10327,7 @@ regenerator-runtime@0.13.10: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== -regenerator-runtime@0.13.11: +regenerator-runtime@0.13.11, regenerator-runtime@^0.13.4: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== @@ -10310,6 +10945,14 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +spawndamnit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" + integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA== + dependencies: + cross-spawn "^5.1.0" + signal-exit "^3.0.2" + spdx-exceptions@^2.1.0: version "2.5.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" @@ -10328,11 +10971,29 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== +spel2js@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/spel2js/-/spel2js-0.2.8.tgz#3ba3b291e5c6bae5c9f703e839294969b61fc691" + integrity sha512-dzYq+v4YV7SPIdNrmvFAUjc0HcgI7b0yoMw7kzOBmlj/GjdOb/+8dVn1I7nLuOS5X2SW+LK3tf2SVkXRjCkWBA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sql-formatter-plus@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sql-formatter-plus/-/sql-formatter-plus-1.3.6.tgz#56e671181ff34c0dc403bac6f950486626f9d406" + integrity sha512-3pelcpLve9GgsXshWL/59zyDkhICkXDURKjXyUN+PJqVGAt+ZmNPB2JY+hgnaQG5X9TQI7Q+WiyLEprHQAWuaQ== + dependencies: + "@babel/polyfill" "^7.6.0" + lodash "^4.17.15" + +sqlstring@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== + sshpk@^1.14.1, sshpk@^1.7.0: version "1.18.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" @@ -10824,6 +11485,11 @@ tslib@2.4.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tslib@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" @@ -11001,6 +11667,11 @@ unique-string@^3.0.0: dependencies: crypto-random-string "^4.0.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -11131,7 +11802,7 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -warning@^4.0.2: +warning@^4.0.1, warning@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== @@ -11422,6 +12093,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" From 97aae736a1a9505d53d5b78bbac32f1aec0a2c17 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 27 May 2024 11:48:45 +0200 Subject: [PATCH 6/8] Further deprecate `@grafana/experimental` --- src/components/FormatSelect.tsx | 4 +- src/components/queryBuilder/Fields.tsx | 2 +- src/components/queryBuilder/Filters.tsx | 153 ++++++++---------- src/components/queryBuilder/GroupBy.tsx | 4 +- src/components/queryBuilder/Limit.tsx | 2 +- src/components/queryBuilder/Metrics.tsx | 54 +++---- src/components/queryBuilder/ModeEditor.tsx | 2 +- src/components/queryBuilder/OrderBy.tsx | 2 +- .../queryBuilder/PartitionByEditor.tsx | 92 +++++------ src/components/queryBuilder/Preview.tsx | 2 +- src/components/queryBuilder/QueryBuilder.tsx | 131 ++++++++------- .../queryBuilder/SampleByAlignment.tsx | 55 ++++--- .../queryBuilder/SampleByFillEditor.tsx | 133 +++++++-------- src/components/queryBuilder/TableSelect.tsx | 16 +- 14 files changed, 328 insertions(+), 324 deletions(-) diff --git a/src/components/FormatSelect.tsx b/src/components/FormatSelect.tsx index 6a83818..96c6634 100644 --- a/src/components/FormatSelect.tsx +++ b/src/components/FormatSelect.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { selectors } from './../selectors'; import { Format } from '../types'; -import { InlineSelect } from '@grafana/experimental'; +import { InlineSelect } from '@grafana/plugin-ui'; export type Props = { format: Format; value?: string; onChange: (format: Format) => void }; @@ -14,7 +14,7 @@ export const FormatSelect = (props: Props) => { options={[ { label: formatLabels.AUTO, value: Format.AUTO }, { label: formatLabels.TABLE, value: Format.TABLE }, - { label: formatLabels.TIME_SERIES, value: Format.TIMESERIES } + { label: formatLabels.TIME_SERIES, value: Format.TIMESERIES }, ]} value={format} onChange={(e) => onChange(e.value!)} diff --git a/src/components/queryBuilder/Fields.tsx b/src/components/queryBuilder/Fields.tsx index 2f1952d..56866a2 100644 --- a/src/components/queryBuilder/Fields.tsx +++ b/src/components/queryBuilder/Fields.tsx @@ -3,7 +3,7 @@ import { MultiSelect } from '@grafana/ui'; import { SelectableValue } from '@grafana/data'; import { FullField } from './../../types'; import { selectors } from './../../selectors'; -import { EditorField } from '@grafana/experimental'; +import { EditorField } from '@grafana/plugin-ui'; interface FieldsEditorProps { fieldsList: FullField[]; diff --git a/src/components/queryBuilder/Filters.tsx b/src/components/queryBuilder/Filters.tsx index 861a604..1cc11e5 100644 --- a/src/components/queryBuilder/Filters.tsx +++ b/src/components/queryBuilder/Filters.tsx @@ -1,11 +1,11 @@ -import React, {useState} from 'react'; -import {SelectableValue} from '@grafana/data'; -import {Button, Input, MultiSelect, RadioButtonGroup, Select} from '@grafana/ui'; -import {Filter, FilterOperator, FullField, NullFilter} from '../../types'; +import React, { useState } from 'react'; +import { SelectableValue } from '@grafana/data'; +import { Button, Input, MultiSelect, RadioButtonGroup, Select } from '@grafana/ui'; +import { Filter, FilterOperator, FullField, NullFilter } from '../../types'; import * as utils from './utils'; -import {selectors} from '../../selectors'; -import {styles} from '../../styles'; -import {EditorField, EditorFieldGroup} from '@grafana/experimental'; +import { selectors } from '../../selectors'; +import { styles } from '../../styles'; +import { EditorField, EditorFieldGroup } from '@grafana/plugin-ui'; const boolValues: Array> = [ { value: true, label: 'True' }, @@ -38,12 +38,12 @@ const filterOperators: Array> = [ { value: FilterOperator.OutsideGrafanaTimeRange, label: 'OUTSIDE DASHBOARD TIME RANGE' }, ]; const standardTimeOptions: Array> = [ - { value: 'date_trunc(\'day\', now())', label: 'TODAY' }, - { value: 'date_trunc(\'day\', dateadd(\'d\', -1, now()))', label: 'YESTERDAY' }, + { value: "date_trunc('day', now())", label: 'TODAY' }, + { value: "date_trunc('day', dateadd('d', -1, now()))", label: 'YESTERDAY' }, { value: 'now()', label: 'NOW' }, - { value: 'date_trunc(\'day\', dateadd(\'w\', -1, now()))', label: 'WEEK AGO' }, - { value: 'date_trunc(\'day\', dateadd(\'M\', -1, now()))', label: 'MONTH AGO' }, - { value: 'date_trunc(\'day\', dateadd(\'y\', -1, now()))', label: 'YEAR AGO' }, + { value: "date_trunc('day', dateadd('w', -1, now()))", label: 'WEEK AGO' }, + { value: "date_trunc('day', dateadd('M', -1, now()))", label: 'MONTH AGO' }, + { value: "date_trunc('day', dateadd('y', -1, now()))", label: 'YEAR AGO' }, { value: 'GRAFANA_START_TIME', label: 'DASHBOARD START TIME' }, { value: 'GRAFANA_END_TIME', label: 'DASHBOARD END TIME' }, ]; @@ -67,7 +67,9 @@ const FilterValueNumberItem = (props: { value: number; onChange: (value: number) type="number" value={value} onChange={(e) => setValue(e.currentTarget.value.replace(/[^0-9 ,-]/, ''))} - onBlur={(e) => { props.onChange(Number(value)); }} + onBlur={(e) => { + props.onChange(Number(value)); + }} /> ); @@ -114,13 +116,13 @@ export const FilterValueEditor = (props: { }; if (filter.type === 'picklist') { return ( -
- onMultiFilterValueChange(e.map((v) => v.value!))} - /> -
+
+ onMultiFilterValueChange(e.map((v) => v.value!))} + /> +
); } return ; @@ -134,18 +136,16 @@ export const FilterValueEditor = (props: { ); } else if (utils.isNumberFilter(filter) /*&& !utils.isSetFilter(filter)*/) { - return onFilterChange({ ...filter, value })} />; + return onFilterChange({ ...filter, value })} />; } else if (utils.isDateFilter(filter)) { const onDateFilterValueChange = (value: string) => { onFilterChange({ ...filter, value }); }; // - return utils.isDateFilterWithOutValue(filter) ? null : - ( + return utils.isDateFilterWithOutValue(filter) ? null : (
onStringFilterValueChange(e.value!)} - options={getOptions()} /> + props.onSampleByAlignToModeChange(e.value)} - value={props.sampleByAlignToMode} - /> - - - props.onSampleByAlignToValueChange(e.currentTarget.value)} /> - - + + + props.onSampleByAlignToValueChange(e.currentTarget.value)} + /> + + ); }; diff --git a/src/components/queryBuilder/SampleByFillEditor.tsx b/src/components/queryBuilder/SampleByFillEditor.tsx index dff10ed..45b4d21 100644 --- a/src/components/queryBuilder/SampleByFillEditor.tsx +++ b/src/components/queryBuilder/SampleByFillEditor.tsx @@ -1,88 +1,91 @@ import React, { useState, useEffect } from 'react'; import { MultiSelect } from '@grafana/ui'; import { SelectableValue } from '@grafana/data'; -import {SampleByFillMode} from './../../types'; +import { SampleByFillMode } from './../../types'; import { selectors } from './../../selectors'; -import { EditorField } from '@grafana/experimental'; -import {GroupBase, OptionsOrGroups} from "react-select"; +import { EditorField } from '@grafana/plugin-ui'; +import { GroupBase, OptionsOrGroups } from 'react-select'; interface FillEditorProps { - fills: string[]; - onFillsChange: (fills: string[]) => void; + fills: string[]; + onFillsChange: (fills: string[]) => void; } const fillModes: SelectableValue[] = []; // work around MultiSelect limitations by multiplicating values with different suffixes that are removed during sql text generation -fillModes.push({ value: SampleByFillMode.None /*+ suffix*/ , label: 'NONE' }); -fillModes.push({ value: SampleByFillMode.Null /*+ suffix*/ , label: 'NULL' }); -fillModes.push({ value: SampleByFillMode.Prev /*+ suffix*/ , label: 'PREV' }); -fillModes.push({ value: SampleByFillMode.Linear /*+ suffix*/ , label: 'LINEAR' }); +fillModes.push({ value: SampleByFillMode.None /*+ suffix*/, label: 'NONE' }); +fillModes.push({ value: SampleByFillMode.Null /*+ suffix*/, label: 'NULL' }); +fillModes.push({ value: SampleByFillMode.Prev /*+ suffix*/, label: 'PREV' }); +fillModes.push({ value: SampleByFillMode.Linear /*+ suffix*/, label: 'LINEAR' }); function getCustomFields(fields: string[]) { - const customFields: Array> = []; - fields.forEach((f, i) => { - // add _index prefix to all values to allow user to use the same constant more than once value - if (!f.match(/.*_[0-9]+$/)) { - let value = f + '_' + i; - fields[i] = value; - customFields.push({label: f, value: value}); - } else { - let label = f.replace(/_[0-9]+$/, ''); - customFields.push({label: label, value: f}); - } - }) - return customFields; + const customFields: Array> = []; + fields.forEach((f, i) => { + // add _index prefix to all values to allow user to use the same constant more than once value + if (!f.match(/.*_[0-9]+$/)) { + let value = f + '_' + i; + fields[i] = value; + customFields.push({ label: f, value: value }); + } else { + let label = f.replace(/_[0-9]+$/, ''); + customFields.push({ label: label, value: f }); + } + }); + return customFields; } export const SampleByFillEditor = (props: FillEditorProps) => { - const [ custom, setCustom] = useState>>([]); - const [ isOpen, setIsOpen] = useState(false); - const [ fills, setFills] = useState(props.fills || []); - const { label, tooltip } = selectors.components.QueryEditor.QueryBuilder.FILL; + const [custom, setCustom] = useState>>([]); + const [isOpen, setIsOpen] = useState(false); + const [fills, setFills] = useState(props.fills || []); + const { label, tooltip } = selectors.components.QueryEditor.QueryBuilder.FILL; - useEffect(() => { - setFills(props.fills); - const customFields = getCustomFields(props.fills); - setCustom(customFields); - }, [props.fills]); + useEffect(() => { + setFills(props.fills); + const customFields = getCustomFields(props.fills); + setCustom(customFields); + }, [props.fills]); - const onFieldsChange = (fields: string[]) => { - const customFields = getCustomFields(fields); - setCustom(customFields); - setFills(fields); - }; + const onFieldsChange = (fields: string[]) => { + const customFields = getCustomFields(fields); + setCustom(customFields); + setFills(fields); + }; - const onUpdateField = () => { - props.onFillsChange(fills); - }; + const onUpdateField = () => { + props.onFillsChange(fills); + }; - const onChange = (e: Array>): void => { - setIsOpen(false); - onFieldsChange(e.map((v) => v.value!)); - }; + const onChange = (e: Array>): void => { + setIsOpen(false); + onFieldsChange(e.map((v) => v.value!)); + }; - const isValidNewOption = (inputValue: string, value: SelectableValue | null, options: OptionsOrGroups, GroupBase>>) => { - return inputValue.trim().length > 0; - } + const isValidNewOption = ( + inputValue: string, + value: SelectableValue | null, + options: OptionsOrGroups, GroupBase>> + ) => { + return inputValue.trim().length > 0; + }; - return ( - - - options={[...fillModes, ...custom]} - value={fills && fills.length > 0 ? fills : []} - isOpen={isOpen} - onOpenMenu={() => setIsOpen(true)} - onCloseMenu={() => setIsOpen(false)} - onChange={onChange} - onBlur={onUpdateField} - allowCustomValue={true} - isValidNewOption={isValidNewOption} - width={50} - isClearable={true} - hideSelectedOptions={true} - /> - - ); + return ( + + + options={[...fillModes, ...custom]} + value={fills && fills.length > 0 ? fills : []} + isOpen={isOpen} + onOpenMenu={() => setIsOpen(true)} + onCloseMenu={() => setIsOpen(false)} + onChange={onChange} + onBlur={onUpdateField} + allowCustomValue={true} + isValidNewOption={isValidNewOption} + width={50} + isClearable={true} + hideSelectedOptions={true} + /> + + ); }; - diff --git a/src/components/queryBuilder/TableSelect.tsx b/src/components/queryBuilder/TableSelect.tsx index 6939999..75bc566 100644 --- a/src/components/queryBuilder/TableSelect.tsx +++ b/src/components/queryBuilder/TableSelect.tsx @@ -3,8 +3,8 @@ import { Select } from '@grafana/ui'; import { SelectableValue } from '@grafana/data'; import { Datasource } from '../../data/QuestDbDatasource'; import { selectors } from './../../selectors'; -import { EditorField } from '@grafana/experimental'; -import {BuilderMode} from "../../types"; +import { EditorField } from '@grafana/plugin-ui'; +import { BuilderMode } from '../../types'; export type Props = { datasource: Datasource; @@ -17,19 +17,21 @@ export const TableSelect = (props: Props) => { const { datasource, onTableChange, table } = props; const [list, setList] = useState>>([]); const { label, tooltip } = selectors.components.QueryEditor.QueryBuilder.FROM; - const [map, setMap] = useState>(new Map()); + const [map, setMap] = useState>(new Map()); useEffect(() => { async function fetchTables() { const tables = await datasource.fetchTables(); const values = tables.map((t) => ({ label: t.tableName, value: t.tableName })); // Add selected value to the list if it does not exist. - if (table && !tables.find((x) => x.tableName === table) && props.mode !== BuilderMode.Trend ) { + if (table && !tables.find((x) => x.tableName === table) && props.mode !== BuilderMode.Trend) { values.push({ label: table!, value: table! }); } - const map = new Map(); - tables.forEach((t) =>{map.set(t.tableName, t.designatedTimestamp)}); + const map = new Map(); + tables.forEach((t) => { + map.set(t.tableName, t.designatedTimestamp); + }); setMap(map); // TODO - can't seem to reset the select to unselected @@ -46,7 +48,7 @@ export const TableSelect = (props: Props) => { return (