From 0a10f2fa17abd8e53e7fc9c970724f233200baa1 Mon Sep 17 00:00:00 2001 From: Tiit Hansen Date: Sun, 19 Jan 2025 12:31:51 +0200 Subject: [PATCH] feat: Add experimental feature to display Logs and Kubernetes events from Loki --- README.md | 170 +- package-lock.json | 1424 +++++++---------- package.json | 12 +- src/common/variableHelpers.ts | 5 +- src/components/AppConfig/AppConfig.tsx | 362 ++++- src/components/CollapsibleSceneSection.tsx | 33 + src/components/Logs/index.tsx | 147 ++ src/components/TabsSceneObject.tsx | 57 + src/pages/Clusters/pages/Node/Node.tsx | 19 +- src/pages/Workloads/Workloads.tsx | 2 +- src/pages/Workloads/pages/DaemonSetPage.tsx | 199 ++- src/pages/Workloads/pages/DeploymentPage.tsx | 174 +- src/pages/Workloads/pages/PodPage.tsx | 25 +- src/pages/Workloads/pages/StatefulSetPage.tsx | 174 +- src/pages/Workloads/tabs/Pods/Pods.tsx | 2 +- 15 files changed, 1668 insertions(+), 1137 deletions(-) create mode 100644 src/components/CollapsibleSceneSection.tsx create mode 100644 src/components/Logs/index.tsx create mode 100644 src/components/TabsSceneObject.tsx diff --git a/README.md b/README.md index 8f404a8..338de37 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,10 @@ Grafana Scenes Kubernetes Application is a Grafana plugin that provides a way to This plugin relies on presence of default kube-state-metrics and node-exporter metrics. -### Current limitations +### Requirements * It expects the presence of `cluster` label on all the metrics. - + ### Metrics used Metrics and required labels used by application can be found in [metrics.ts](src/metrics/metrics.ts). @@ -31,40 +31,6 @@ Metrics and required labels used by application can be found in [metrics.ts](src #### Daemonset -## Planned Features & Improvements - -Following list is not in any particular order. - -* Create page to view Node details. - * Basic node details page is implemented. -* Create page to view Deployment, StatefulSet, DaemonSet, CronJob and Job details. - * Basic detailed pages for different resources is implemented. -* Create page for Cluster overview. - * Basic cluster overview page is implemented. -* Implement sorting by columns. - * Initial sorting for Pods is implemented. -* Display alerts on the resources. - * Alerts are displayed for Pods, DaemonSets and StatefulSets - For alerts to be displayed alert needs to have `cluster` and kind label `pod|daemonset|statefulset` with name as the value. -* Integrate OpenCost metrics to visualize cost of the resources. -* Feature to show stopped resources. - Because a lot of the queries are `instant` then the stopped resources are not shown even if time range is set to show them. - * Partially implemented for pods, its possible to toggle to view which are not running anymore. It lookup pods using `present_over_time` with timerange - specified in the UI time picker. -* Add support for Karpenter metrics. - Optional displaying of Karpenter metrics. - Which could be toggled from the plugin settings. -* Add support for resource relations. - Depends on Kube-State-Metrics to expose relations between resources [Related feature request](https://github.com/kubernetes/kube-state-metrics/issues/2424). -* Add support to see Kubernetes event logs - Display events which have been exported by [kubernetes-event-exporter](https://github.com/resmoio/kubernetes-event-exporter) into Loki. -* Display networking resources and metrics - * Display Ingress metrics - * Display Nginx Ingress Controller metrics (need to figure out how to make the connection between `kube_ingress_info` and if its nginx controlled) - - -If you have any feature requests, improvements or suggestions, please create an issue. - ## Installation ### Grafana deployed with Helm @@ -94,6 +60,138 @@ grafana.ini: # Move the plugin from More Apps to Infrastructure in the menu k8s-app: infrastructure ``` + +### Configuration + +Application can be configured from the plugin settings page in Grafana. +Settings page can be found at: `/plugins/k8s-app?page=configuration`. + +#### Metrics settings + +* Metrics datasource - Allows configuring regex to filter metrics from the prometheus datasources. (default=prometheus) +* Default datasource - Allows configuring default datasource for the metrics. +* Default cluster - Allows configuring default cluster to be used in the queries. +* Cluster filter - Allows customizing the query which is used to get label values for the cluster variable. + +#### Logs & Events settings (EXPERIMENTAL) + +Allows displaying logs and events from Loki. + +* Feature exepects events to be exported by [opentelemetry-collector-contrib k8seventsreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/k8seventsreceiver/README.md). +* Logs must be exported to Loki by `opentelemetry-collector` because it relies on stream labels in format of `k8s_...`. +* Datasource used must support multi-tenant queries where stream label `k8s_cluster_name` is used to select logs from specific tenant. +* It is possible to override the default queries per view (Cluster, Node, Pod, Deployment, Statefulset, Daemonset). + +##### Sample configuration for k8seventsreceiver + +[Opentelemetry-collector helm chart](https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector) is used as a parent chart for the following configuration. + +```yaml +global: + clusterName: "dummy-cluster" + lokiEndpoint: "https://loki.example/otlp" + +opentelemetry-collector: + + mode: deployment + + image: + repository: "otel/opentelemetry-collector-contrib" + + serviceAccount: + create: true + + clusterRole: + create: true + rules: + # Allow the collector to read all resources in the cluster + - apiGroups: + - "*" + resources: + - "*" + verbs: ["get", "watch", "list"] + + ports: + metrics: + enabled: true + otlp: + enabled: false + otlp-http: + enabled: false + jaeger-compact: + enabled: false + jaeger-thrift: + enabled: false + jaeger-grpc: + enabled: false + zipkin: + enabled: false + + resources: + requests: + memory: 128Mi + cpu: 300m + limits: + memory: 512Mi + cpu: 1000m + + config: + receivers: + k8s_events: + auth_type: "serviceAccount" + exporters: + otlphttp/loki: + endpoint: "{{ .Values.global.lokiEndpoint }}" + headers: + "X-Scope-OrgID": "{{ .Values.global.clusterName }}" + processors: + resource: + attributes: + - key: k8s.cluster.name + value: "{{ .Values.global.clusterName }}" + action: insert + - key: service.name + value: "k8sevents" + action: insert + transform: + error_mode: ignore + log_statements: + - context: log + statements: + # Move the namespace name to the resource attributes and remove it from the log attributes + # This way Loki can use the namespace name as a stream label + - set(resource.attributes["k8s.namespace.name"], attributes["k8s.namespace.name"]) where attributes["k8s.namespace.name"] != nil + - delete_key(attributes, "k8s.namespace.name") where attributes["k8s.namespace.name"] != nil + + service: + extensions: + - health_check + pipelines: + logs: + exporters: + - otlphttp/loki + processors: + - memory_limiter + - resource + - transform + - batch + receivers: + - k8s_events + metrics: null + traces: null +``` + +#### Ruler settings (EXPERIMENTAL) + +Allows displaying additional information about the alerts which is not available in `ALERTS` and `ALERTS_FOR_STATE` metrics via labels. + +* Currently rulers which support Prometheus HTTP REST API (Thanos, Mimir, Prometheus). +* This feature displays `annotations` and `query` for each alert. + +#### Analytics settings (EXPERIMENTAL) + +Allows exporting of user views/visits of the application to Grafana analytics service. + ## Contributing ### Local Development diff --git a/package-lock.json b/package-lock.json index 59e35c4..b1d083c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,11 +10,11 @@ "license": "Apache-2.0", "dependencies": { "@emotion/css": "11.13.4", - "@grafana/data": "10.4.5", - "@grafana/runtime": "10.4.11", - "@grafana/scenes": "^5.23.1", - "@grafana/schema": "10.4.6", - "@grafana/ui": "10.4.5", + "@grafana/data": "11.3.1", + "@grafana/runtime": "11.3.1", + "@grafana/scenes": "^5.28.1", + "@grafana/schema": "11.3.1", + "@grafana/ui": "11.3.1", "@tanstack/react-table": "^8.17.3", "mdast-util-find-and-replace": "^3.0.1", "react": "18.3.1", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/core": "^7.21.4", "@grafana/e2e": "11.0.7", - "@grafana/e2e-selectors": "10.3.3", + "@grafana/e2e-selectors": "11.3.1", "@grafana/eslint-config": "^8.0.0", "@grafana/tsconfig": "^1.2.0-rc1", "@swc/core": "^1.6.7", @@ -1607,8 +1607,9 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.24.0", - "license": "MIT", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1667,9 +1668,9 @@ "license": "MIT" }, "node_modules/@braintree/sanitize-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.0.0.tgz", - "integrity": "sha512-GMu2OJiTd1HSe74bbJYQnVvELANpYiGFZELyyTM1CR0sdv5ReQAcJ/c/8pIrPab3lO11+D+EpuGLUxqz+y832g==" + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.0.1.tgz", + "integrity": "sha512-URg8UM6lfC9ZYqFipItRSxYJdgpU5d2Z4KnjsJ+rj6tgAmGme7E+PQNCiud8g0HDaZKMovu2qjfa0f5Ge0Vlsg==" }, "node_modules/@colors/colors": { "version": "1.5.0", @@ -1811,11 +1812,6 @@ "stylis": "4.2.0" } }, - "node_modules/@emotion/cache/node_modules/@emotion/weak-memoize": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" - }, "node_modules/@emotion/css": { "version": "11.13.4", "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.13.4.tgz", @@ -1839,17 +1835,17 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.3.tgz", - "integrity": "sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -1884,9 +1880,9 @@ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } @@ -1897,8 +1893,9 @@ "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "license": "MIT" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@es-joy/jsdoccomment": { "version": "0.40.1", @@ -2036,13 +2033,13 @@ } }, "node_modules/@floating-ui/react": { - "version": "0.26.9", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.9.tgz", - "integrity": "sha512-p86wynZJVEkEq2BBjY/8p2g3biQ6TlgT4o/3KgFKyTWoJLU1GZ8wpctwRqtkEl2tseYA+kw7dBAIDFcednfI5w==", + "version": "0.26.24", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz", + "integrity": "sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==", "dependencies": { - "@floating-ui/react-dom": "^2.0.8", - "@floating-ui/utils": "^0.2.1", - "tabbable": "^6.0.1" + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -2062,102 +2059,94 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", - "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz", + "integrity": "sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==", "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" + "@formatjs/fast-memoize": "2.2.3", + "@formatjs/intl-localematcher": "0.5.8", + "tslib": "2" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz", + "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", "dependencies": { - "tslib": "^2.4.0" + "tslib": "2" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.4.tgz", + "integrity": "sha512-Tbvp5a9IWuxUcpWNIW6GlMQYEc4rwNHR259uUFoKWNN1jM9obf9Ul0e+7r7MvFOBNcN+13K7NuKCKqQiAn1QEg==", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.4", + "@formatjs/icu-skeleton-parser": "1.8.8", + "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.8.tgz", + "integrity": "sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA==", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.4", + "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.8.tgz", + "integrity": "sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==", "dependencies": { - "tslib": "^2.4.0" + "tslib": "2" } }, "node_modules/@grafana/data": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/@grafana/data/-/data-10.4.5.tgz", - "integrity": "sha512-SYyaPTKIO3p4MoS0PvZ+bIW7Q8EHYbu/czQENyk0/rFmodfBzcJA0AVuafFBY0T4oCQENFHfmhM9q7209B3oOw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@grafana/data/-/data-11.3.1.tgz", + "integrity": "sha512-65YHLouah5gId58ov0l5ZxoRSjAFWqv4Be0Apght69Ko1rLPVdfIAlZCwREfEN+OiSJ4d4t8AFtaD8CRbawmrw==", "dependencies": { - "@braintree/sanitize-url": "7.0.0", - "@grafana/schema": "10.4.5", + "@braintree/sanitize-url": "7.0.1", + "@grafana/schema": "11.3.1", "@types/d3-interpolate": "^3.0.0", "@types/string-hash": "1.1.3", "d3-interpolate": "3.0.1", - "date-fns": "3.3.1", + "date-fns": "3.6.0", "dompurify": "^3.0.0", "eventemitter3": "5.0.1", "fast_array_intersect": "1.1.0", "history": "4.10.1", "lodash": "4.17.21", - "marked": "12.0.0", - "marked-mangle": "1.1.7", + "marked": "12.0.2", + "marked-mangle": "1.1.9", "moment": "2.30.1", - "moment-timezone": "0.5.45", + "moment-timezone": "0.5.46", "ol": "7.4.0", "papaparse": "5.4.1", - "react-use": "17.5.0", - "regenerator-runtime": "0.14.1", + "react-use": "17.5.1", "rxjs": "7.8.1", "string-hash": "^1.1.3", "tinycolor2": "1.6.0", - "tslib": "2.6.2", - "uplot": "1.6.30", + "tslib": "2.7.0", + "uplot": "1.6.31", "xss": "^1.0.14" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@grafana/data/node_modules/@grafana/schema": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/@grafana/schema/-/schema-10.4.5.tgz", - "integrity": "sha512-Qi8GuMk5X8J+cIe18JZpU1QpagEeu+BdES97FmHXmBIR69i+sGebjzwH9NN++cjZZvq+x8tvXUxOpLL84VnYsg==", - "dependencies": { - "tslib": "2.6.2" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@grafana/data/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@grafana/e2e": { "version": "11.0.7", @@ -2196,24 +2185,29 @@ } }, "node_modules/@grafana/e2e-selectors": { - "version": "10.3.3", - "dev": true, - "license": "Apache-2.0", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@grafana/e2e-selectors/-/e2e-selectors-11.3.1.tgz", + "integrity": "sha512-197q3gqIJOcpq+pD/5CycwBbbxruqx2p29dkeVwb+QlnjGvmc3Fx6YUf9yCHtvhmETceRYCoLZwQwuwdju/+Mg==", "dependencies": { - "@grafana/tsconfig": "^1.2.0-rc1", - "tslib": "2.6.0", - "typescript": "5.2.2" + "@grafana/tsconfig": "^2.0.0", + "tslib": "2.7.0", + "typescript": "5.5.4" } }, + "node_modules/@grafana/e2e-selectors/node_modules/@grafana/tsconfig": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@grafana/tsconfig/-/tsconfig-2.0.0.tgz", + "integrity": "sha512-cxC3Htv/GidI5FeVGAzj/lYZTMMz/Cfsc8VOQFO3Ichjx3hUjyjeoBUIpVSVMnIjKUdA5ycdxtMYPHIuIrk8+A==" + }, "node_modules/@grafana/e2e-selectors/node_modules/tslib": { - "version": "2.6.0", - "dev": true, - "license": "0BSD" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@grafana/e2e-selectors/node_modules/typescript": { - "version": "5.2.2", - "dev": true, - "license": "Apache-2.0", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2622,261 +2616,46 @@ } }, "node_modules/@grafana/runtime": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/@grafana/runtime/-/runtime-10.4.11.tgz", - "integrity": "sha512-duBJ5kQTdVpHiX/sVFtz5QielMm0don1cmaut7iG9EQDtewlCwnBzUskChU/T1IXOqw/WgyPDT7Okg1vnuuZLQ==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@grafana/runtime/-/runtime-11.3.1.tgz", + "integrity": "sha512-9/WvZL4fnpfKg98O6J4qTT7akF+dycnh4hmX2hzCnM5ZDowTVXXr6rGJUhu7+9c6V0Xw96++puLc8WqIudmj6g==", "dependencies": { - "@grafana/data": "10.4.11", - "@grafana/e2e-selectors": "10.4.11", + "@grafana/data": "11.3.1", + "@grafana/e2e-selectors": "11.3.1", "@grafana/faro-web-sdk": "^1.3.6", - "@grafana/schema": "10.4.11", - "@grafana/ui": "10.4.11", + "@grafana/schema": "11.3.1", + "@grafana/ui": "11.3.1", "history": "4.10.1", "lodash": "4.17.21", "rxjs": "7.8.1", - "systemjs": "6.14.3", - "systemjs-cjs-extra": "0.2.0", - "tslib": "2.6.2" + "tslib": "2.7.0" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@grafana/runtime/node_modules/@emotion/css": { - "version": "11.11.2", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.11.2.tgz", - "integrity": "sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==", - "dependencies": { - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1" - } - }, - "node_modules/@grafana/runtime/node_modules/@grafana/data": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/@grafana/data/-/data-10.4.11.tgz", - "integrity": "sha512-lSCFM4ZNcpLJ69WGL1q7wbJf/f+Km6Q8hTa7+viXx1cPEH7MlY+Kr0bIkq2GsTrEuK4tQoy6Z20cPlFiX/uzqw==", - "dependencies": { - "@braintree/sanitize-url": "7.0.0", - "@grafana/schema": "10.4.11", - "@types/d3-interpolate": "^3.0.0", - "@types/string-hash": "1.1.3", - "d3-interpolate": "3.0.1", - "date-fns": "3.3.1", - "dompurify": "^3.0.0", - "eventemitter3": "5.0.1", - "fast_array_intersect": "1.1.0", - "history": "4.10.1", - "lodash": "4.17.21", - "marked": "12.0.0", - "marked-mangle": "1.1.7", - "moment": "2.30.1", - "moment-timezone": "0.5.45", - "ol": "7.4.0", - "papaparse": "5.4.1", - "react-use": "17.5.0", - "regenerator-runtime": "0.14.1", - "rxjs": "7.8.1", - "string-hash": "^1.1.3", - "tinycolor2": "1.6.0", - "tslib": "2.6.2", - "uplot": "1.6.30", - "xss": "^1.0.14" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@grafana/runtime/node_modules/@grafana/e2e-selectors": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/@grafana/e2e-selectors/-/e2e-selectors-10.4.11.tgz", - "integrity": "sha512-qkjl0Zy43YHSqkM+yVZagKwqphhLDx4eIFDzdApIWnXp1E0k3cBry4qfI8bFhrQ8OBSxdD9fNvB1hPoOjvT+gA==", - "dependencies": { - "@grafana/tsconfig": "^1.2.0-rc1", - "tslib": "2.6.2", - "typescript": "5.3.3" - } - }, - "node_modules/@grafana/runtime/node_modules/@grafana/schema": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/@grafana/schema/-/schema-10.4.11.tgz", - "integrity": "sha512-+k4gwpfn68frfEA2eG8qjr78QQZMkRG3oMEawYOF7qMeRSCINtSfnyFobIqAXz79WW3BiIvRmIk8uFWrzzqgnw==", - "dependencies": { - "tslib": "2.6.2" - } - }, - "node_modules/@grafana/runtime/node_modules/@grafana/ui": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/@grafana/ui/-/ui-10.4.11.tgz", - "integrity": "sha512-d4CuHyMn0GyGQkHCqSYCGcmG2qRar1wdimPrg8QZ5qMJ87C2SK357ETremHZUlVAQ5pJXYI8QR+yoTgM01Loyw==", - "dependencies": { - "@emotion/css": "11.11.2", - "@emotion/react": "11.11.3", - "@floating-ui/react": "0.26.9", - "@grafana/data": "10.4.11", - "@grafana/e2e-selectors": "10.4.11", - "@grafana/faro-web-sdk": "^1.3.6", - "@grafana/schema": "10.4.11", - "@leeoniya/ufuzzy": "1.0.14", - "@monaco-editor/react": "4.6.0", - "@popperjs/core": "2.11.8", - "@react-aria/dialog": "3.5.11", - "@react-aria/focus": "3.16.1", - "@react-aria/overlays": "3.21.0", - "@react-aria/utils": "3.23.1", - "ansicolor": "1.1.100", - "calculate-size": "1.1.1", - "classnames": "2.5.1", - "d3": "7.8.5", - "date-fns": "3.3.1", - "hoist-non-react-statics": "3.3.2", - "i18next": "^23.0.0", - "i18next-browser-languagedetector": "^7.0.2", - "immutable": "4.3.5", - "is-hotkey": "0.2.0", - "jquery": "3.7.1", - "lodash": "4.17.21", - "micro-memoize": "^4.1.2", - "moment": "2.30.1", - "monaco-editor": "0.34.0", - "ol": "7.4.0", - "prismjs": "1.29.0", - "rc-cascader": "3.21.2", - "rc-drawer": "6.5.2", - "rc-slider": "10.5.0", - "rc-time-picker": "^3.7.3", - "rc-tooltip": "6.1.3", - "react-beautiful-dnd": "13.1.1", - "react-calendar": "4.8.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.49.2", - "react-i18next": "^12.0.0", - "react-inlinesvg": "3.0.2", - "react-loading-skeleton": "3.4.0", - "react-popper": "2.3.0", - "react-router-dom": "5.3.3", - "react-select": "5.8.0", - "react-table": "7.8.0", - "react-transition-group": "4.4.5", - "react-use": "17.5.0", - "react-window": "1.8.10", - "rxjs": "7.8.1", - "slate": "0.47.9", - "slate-plain-serializer": "0.7.13", - "slate-react": "0.22.10", - "tinycolor2": "1.6.0", - "tslib": "2.6.2", - "uplot": "1.6.30", - "uuid": "9.0.1" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@grafana/runtime/node_modules/react-router": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.3.tgz", - "integrity": "sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/@grafana/runtime/node_modules/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.3", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/@grafana/runtime/node_modules/react-router/node_modules/mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@grafana/runtime/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@grafana/runtime/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@grafana/runtime/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@grafana/scenes": { - "version": "5.23.1", - "resolved": "https://registry.npmjs.org/@grafana/scenes/-/scenes-5.23.1.tgz", - "integrity": "sha512-kMGXu2A/2uamSnR7My7Zkol5GHhXL3cGxk7Q9j0M97Zf4floAFgK5gkLdHwSVVR37LrdlwM+5KmpIA2nD7sJQA==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@grafana/scenes/-/scenes-5.28.1.tgz", + "integrity": "sha512-wW+EZ08aOeLjterJViKUZtKsPqLfqdUwYmghLCa/8LFIwecBe6Mef6SgDV86ZcsfogcrHshZP5BFEVTN3wFblA==", "dependencies": { - "@floating-ui/react": "0.26.16", - "@grafana/e2e-selectors": "^11.0.0", - "@leeoniya/ufuzzy": "^1.0.14", + "@floating-ui/react": "^0.26.16", + "@leeoniya/ufuzzy": "^1.0.16", "@tanstack/react-virtual": "^3.9.0", - "react-grid-layout": "1.3.4", - "react-use": "17.5.0", - "react-virtualized-auto-sizer": "1.0.24", + "react-grid-layout": "^1.3.4", + "react-use": "^17.5.0", + "react-virtualized-auto-sizer": "^1.0.24", "uuid": "^9.0.0" }, "peerDependencies": { "@grafana/data": ">=10.4", + "@grafana/e2e-selectors": ">=10.4", "@grafana/runtime": ">=10.4", "@grafana/schema": ">=10.4", "@grafana/ui": ">=10.4", @@ -2884,51 +2663,10 @@ "react-dom": "^18.0.0" } }, - "node_modules/@grafana/scenes/node_modules/@floating-ui/react": { - "version": "0.26.16", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.16.tgz", - "integrity": "sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow==", - "dependencies": { - "@floating-ui/react-dom": "^2.1.0", - "@floating-ui/utils": "^0.2.0", - "tabbable": "^6.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@grafana/scenes/node_modules/@grafana/e2e-selectors": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@grafana/e2e-selectors/-/e2e-selectors-11.3.0.tgz", - "integrity": "sha512-M1Ay/qxen7PyqS0YpwIpXRRlp563l22KOzxRAY+oGqjvVQvEIoq5ET10Y7rX5DgHpqdcuH1OyhrijYKV1x5fuA==", - "dependencies": { - "@grafana/tsconfig": "^2.0.0", - "tslib": "2.7.0", - "typescript": "5.5.4" - } - }, - "node_modules/@grafana/scenes/node_modules/@grafana/tsconfig": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@grafana/tsconfig/-/tsconfig-2.0.0.tgz", - "integrity": "sha512-cxC3Htv/GidI5FeVGAzj/lYZTMMz/Cfsc8VOQFO3Ichjx3hUjyjeoBUIpVSVMnIjKUdA5ycdxtMYPHIuIrk8+A==" - }, - "node_modules/@grafana/scenes/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@grafana/scenes/node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } + "node_modules/@grafana/scenes/node_modules/@leeoniya/ufuzzy": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@leeoniya/ufuzzy/-/ufuzzy-1.0.17.tgz", + "integrity": "sha512-bGNsu11VP70ZgN+bP9SOQ9rsX6Tu/RzLJQ5F5TzgM9IaZncZweu7lDwcMfPAQ9RW3TVMfnbMCD/NnowkjyT+dQ==" }, "node_modules/@grafana/scenes/node_modules/uuid": { "version": "9.0.1", @@ -2943,191 +2681,104 @@ } }, "node_modules/@grafana/schema": { - "version": "10.4.6", - "resolved": "https://registry.npmjs.org/@grafana/schema/-/schema-10.4.6.tgz", - "integrity": "sha512-5o7OJ4C0qBsh/8k4iGbnbCrGNq/0I/k5mwJkNjZuNhd2GBwMnVGYbIR4vfoq9uaMKC4e88deMzW3R1bjsk/ESw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@grafana/schema/-/schema-11.3.1.tgz", + "integrity": "sha512-/q8v4u1+/WzTRjz7Qniwfea5rF3EmkSrk5XDhM8o2n+G/z2G1VL7k/oqp151MsulM82g9hE+UvcpmmWEd4mD8Q==", "dependencies": { - "tslib": "2.6.2" + "tslib": "2.7.0" } }, "node_modules/@grafana/schema/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@grafana/tsconfig": { "version": "1.2.0-rc1", + "dev": true, "license": "Apache-2.0" }, "node_modules/@grafana/ui": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/@grafana/ui/-/ui-10.4.5.tgz", - "integrity": "sha512-BO9GTjm8AeXk+rgOYSaQ4XvRJ3otPRtHbQhIJ9D96ZFpYPbbLHno5DBOPazKcp3ukiW7SA72ymgDRbpcdND18Q==", - "dependencies": { - "@emotion/css": "11.11.2", - "@emotion/react": "11.11.3", - "@floating-ui/react": "0.26.9", - "@grafana/data": "10.4.5", - "@grafana/e2e-selectors": "10.4.5", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@grafana/ui/-/ui-11.3.1.tgz", + "integrity": "sha512-Xl15hAmsNFa5rANYPnMjna0nasNiyID6bXNl4Ze1AopIEiiqMZidC3ldAUumXd/ivh84QYbfCuyWrPrg47xYRg==", + "dependencies": { + "@emotion/css": "11.13.4", + "@emotion/react": "11.13.3", + "@emotion/serialize": "1.3.2", + "@floating-ui/react": "0.26.24", + "@grafana/data": "11.3.1", + "@grafana/e2e-selectors": "11.3.1", "@grafana/faro-web-sdk": "^1.3.6", - "@grafana/schema": "10.4.5", + "@grafana/schema": "11.3.1", + "@hello-pangea/dnd": "16.6.0", "@leeoniya/ufuzzy": "1.0.14", "@monaco-editor/react": "4.6.0", "@popperjs/core": "2.11.8", - "@react-aria/dialog": "3.5.11", - "@react-aria/focus": "3.16.1", - "@react-aria/overlays": "3.21.0", - "@react-aria/utils": "3.23.1", + "@react-aria/dialog": "3.5.18", + "@react-aria/focus": "3.18.3", + "@react-aria/overlays": "3.23.3", + "@react-aria/utils": "3.25.3", + "@tanstack/react-virtual": "^3.5.1", + "@types/jquery": "3.5.31", + "@types/lodash": "4.17.10", + "@types/react-table": "7.7.20", "ansicolor": "1.1.100", "calculate-size": "1.1.1", "classnames": "2.5.1", - "d3": "7.8.5", - "date-fns": "3.3.1", + "d3": "7.9.0", + "date-fns": "3.6.0", + "downshift": "^9.0.6", "hoist-non-react-statics": "3.3.2", "i18next": "^23.0.0", "i18next-browser-languagedetector": "^7.0.2", - "immutable": "4.3.5", + "immutable": "4.3.7", "is-hotkey": "0.2.0", "jquery": "3.7.1", "lodash": "4.17.21", "micro-memoize": "^4.1.2", "moment": "2.30.1", - "monaco-editor": "0.34.0", + "monaco-editor": "0.34.1", "ol": "7.4.0", "prismjs": "1.29.0", - "rc-cascader": "3.21.2", - "rc-drawer": "6.5.2", - "rc-slider": "10.5.0", + "rc-cascader": "3.28.1", + "rc-drawer": "7.2.0", + "rc-slider": "11.1.7", "rc-time-picker": "^3.7.3", - "rc-tooltip": "6.1.3", - "react-beautiful-dnd": "13.1.1", - "react-calendar": "4.8.0", + "rc-tooltip": "6.2.1", + "react-calendar": "5.0.0", "react-colorful": "5.6.1", "react-custom-scrollbars-2": "4.5.0", - "react-dropzone": "14.2.3", + "react-dropzone": "14.2.9", "react-highlight-words": "0.20.0", "react-hook-form": "^7.49.2", - "react-i18next": "^12.0.0", + "react-i18next": "^14.0.0", "react-inlinesvg": "3.0.2", - "react-loading-skeleton": "3.4.0", - "react-popper": "2.3.0", - "react-router-dom": "5.3.3", - "react-select": "5.8.0", + "react-loading-skeleton": "3.5.0", + "react-router-dom-v5-compat": "^6.26.1", + "react-select": "5.8.1", "react-table": "7.8.0", "react-transition-group": "4.4.5", - "react-use": "17.5.0", + "react-use": "17.5.1", "react-window": "1.8.10", "rxjs": "7.8.1", "slate": "0.47.9", "slate-plain-serializer": "0.7.13", "slate-react": "0.22.10", "tinycolor2": "1.6.0", - "tslib": "2.6.2", - "uplot": "1.6.30", + "tslib": "2.7.0", + "uplot": "1.6.31", "uuid": "9.0.1" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@grafana/ui/node_modules/@emotion/css": { - "version": "11.11.2", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.11.2.tgz", - "integrity": "sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==", - "dependencies": { - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1" - } - }, - "node_modules/@grafana/ui/node_modules/@grafana/e2e-selectors": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/@grafana/e2e-selectors/-/e2e-selectors-10.4.5.tgz", - "integrity": "sha512-BsFll+sCs8riIVDHzqZswDFmDdt5Mt0yqcDqc3FuQqyv5Lm0PLtoWCzVkadk3AJ74sxlXvC0pb/mtb5e+KaZTA==", - "dependencies": { - "@grafana/tsconfig": "^1.2.0-rc1", - "tslib": "2.6.2", - "typescript": "5.3.3" - } - }, - "node_modules/@grafana/ui/node_modules/@grafana/schema": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/@grafana/schema/-/schema-10.4.5.tgz", - "integrity": "sha512-Qi8GuMk5X8J+cIe18JZpU1QpagEeu+BdES97FmHXmBIR69i+sGebjzwH9NN++cjZZvq+x8tvXUxOpLL84VnYsg==", - "dependencies": { - "tslib": "2.6.2" - } - }, - "node_modules/@grafana/ui/node_modules/react-router": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.3.tgz", - "integrity": "sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/@grafana/ui/node_modules/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.3", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/@grafana/ui/node_modules/react-router/node_modules/mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@grafana/ui/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@grafana/ui/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@grafana/ui/node_modules/uuid": { "version": "9.0.1", @@ -3141,6 +2792,29 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@hello-pangea/dnd": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-16.6.0.tgz", + "integrity": "sha512-vfZ4GydqbtUPXSLfAvKvXQ6xwRzIjUSjVU0Sx+70VOhc2xx6CdmJXJ8YhH70RpbTUGjxctslQTHul9sIOxCfFQ==", + "dependencies": { + "@babel/runtime": "^7.24.1", + "css-box-model": "^1.2.1", + "memoize-one": "^6.0.0", + "raf-schd": "^4.0.3", + "react-redux": "^8.1.3", + "redux": "^4.2.1", + "use-memo-one": "^1.1.3" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@hello-pangea/dnd/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "dev": true, @@ -3197,34 +2871,34 @@ "peer": true }, "node_modules/@internationalized/date": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.3.tgz", - "integrity": "sha512-X9bi8NAEHAjD8yzmPYT2pdJsbe+tYSEBAfowtlxJVJdZR3aK8Vg7ZUT1Fm5M47KLzp/M1p1VwAaeSma3RT7biw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.6.0.tgz", + "integrity": "sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==", "dependencies": { "@swc/helpers": "^0.5.0" } }, "node_modules/@internationalized/message": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.3.tgz", - "integrity": "sha512-jba3kGxnh4hN4zoeJZuMft99Ly1zbmon4fyDz3VAmO39Kb5Aw+usGub7oU/sGoBIcVQ7REEwsvjIWtIO1nitbw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.6.tgz", + "integrity": "sha512-JxbK3iAcTIeNr1p0WIFg/wQJjIzJt9l/2KNY/48vXV7GRGZSv3zMxJsce008fZclk2cDC8y0Ig3odceHO7EfNQ==", "dependencies": { "@swc/helpers": "^0.5.0", "intl-messageformat": "^10.1.0" } }, "node_modules/@internationalized/number": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.2.tgz", - "integrity": "sha512-4FGHTi0rOEX1giSkt5MH4/te0eHBq3cvAYsfLlpguV6pzJAReXymiYpE5wPCqKqjkUO3PIsyvk+tBiIV1pZtbA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.0.tgz", + "integrity": "sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==", "dependencies": { "@swc/helpers": "^0.5.0" } }, "node_modules/@internationalized/string": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.2.tgz", - "integrity": "sha512-5xy2JfSQyGqL9FDIdJXVjoKSBBDJR4lvwoCbqKhc5hQZ/qSLU/OlONCmrJPcSH0zxh88lXJMzbOAk8gJ48JBFw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.5.tgz", + "integrity": "sha512-rKs71Zvl2OKOHM+mzAFMIyqR5hI1d1O6BBkMK2/lkfg3fkmVh9Eeg0awcA8W2WqYqDOv6a86DIOlFpggwLtbuw==", "dependencies": { "@swc/helpers": "^0.5.0" } @@ -4370,9 +4044,9 @@ } }, "node_modules/@rc-component/trigger": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-1.18.3.tgz", - "integrity": "sha512-Ksr25pXreYe1gX6ayZ1jLrOrl9OAUHUqnuhEx6MeHnNa1zVM5Y2Aj3Q35UrER0ns8D2cJYtmJtVli+i+4eKrvA==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.5.tgz", + "integrity": "sha512-F1EJ4KjFpGAHAjuKvOyZB/6IZDkVx0bHl0M4fQM5wXcmm7lgTgVSSnR3bXwdmS6jOJGHOqfDxIJW3WUvwMIXhQ==", "dependencies": { "@babel/runtime": "^7.23.2", "@rc-component/portal": "^1.1.0", @@ -4390,35 +4064,35 @@ } }, "node_modules/@react-aria/dialog": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.11.tgz", - "integrity": "sha512-oT+FBOtPZRWVBxPt1K8F5XaKGYpi+ZV3oFFzub8w+D6m+9WN4pktUx7YBz95Kunw7M1HcAsyQZX0fsAuDPL7Rw==", - "dependencies": { - "@react-aria/focus": "^3.16.1", - "@react-aria/overlays": "^3.21.0", - "@react-aria/utils": "^3.23.1", - "@react-types/dialog": "^3.5.7", - "@react-types/shared": "^3.22.0", + "version": "3.5.18", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.18.tgz", + "integrity": "sha512-j0x0OwDZKyW2GqBZl2Dw/pHl0uSCzhHOg5jNeulkZC8xQa8COuksQf5NFzPmgRPnzqpbgvSzCSs41ymS8spmFg==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/overlays": "^3.23.3", + "@react-aria/utils": "^3.25.3", + "@react-types/dialog": "^3.5.13", + "@react-types/shared": "^3.25.0", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/focus": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.1.tgz", - "integrity": "sha512-3ZEYc+hWqDQX7fA54ZOTkED8OGXs9+K9fYmjD1IdjZJAJS/2/AJ95PgIQ29zBkl9D9TAi4Nb3tJ/3+H/02UzoA==", + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.3.tgz", + "integrity": "sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==", "dependencies": { - "@react-aria/interactions": "^3.21.0", - "@react-aria/utils": "^3.23.1", - "@react-types/shared": "^3.22.0", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/focus/node_modules/clsx": { @@ -4430,36 +4104,36 @@ } }, "node_modules/@react-aria/i18n": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.0.tgz", - "integrity": "sha512-dnopopsYKy2cd2dB2LdnmdJ58evKKcNCtiscWl624XFSbq2laDrYIQ4umrMhBxaKD7nDQkqydVBe6HoQKPzvJw==", - "dependencies": { - "@internationalized/date": "^3.5.3", - "@internationalized/message": "^3.1.3", - "@internationalized/number": "^3.5.2", - "@internationalized/string": "^3.2.2", - "@react-aria/ssr": "^3.9.3", - "@react-aria/utils": "^3.24.0", - "@react-types/shared": "^3.23.0", + "version": "3.12.4", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.4.tgz", + "integrity": "sha512-j9+UL3q0Ls8MhXV9gtnKlyozq4aM95YywXqnmJtzT1rYeBx7w28hooqrWkCYLfqr4OIryv1KUnPiCSLwC2OC7w==", + "dependencies": { + "@internationalized/date": "^3.6.0", + "@internationalized/message": "^3.1.6", + "@internationalized/number": "^3.6.0", + "@internationalized/string": "^3.2.5", + "@react-aria/ssr": "^3.9.7", + "@react-aria/utils": "^3.26.0", + "@react-types/shared": "^3.26.0", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/i18n/node_modules/@react-aria/utils": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.0.tgz", - "integrity": "sha512-JAxkPhK5fCvFVNY2YG3TW3m1nTzwRcbz7iyTSkUzLFat4N4LZ7Kzh7NMHsgeE/oMOxd8zLY+XsUxMu/E/2GujA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.26.0.tgz", + "integrity": "sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==", "dependencies": { - "@react-aria/ssr": "^3.9.3", - "@react-stately/utils": "^3.10.0", - "@react-types/shared": "^3.23.0", + "@react-aria/ssr": "^3.9.7", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.26.0", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/i18n/node_modules/clsx": { @@ -4471,32 +4145,32 @@ } }, "node_modules/@react-aria/interactions": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.2.tgz", - "integrity": "sha512-Ju706DtoEmI/2vsfu9DCEIjDqsRBVLm/wmt2fr0xKbBca7PtmK8daajxFWz+eTq+EJakvYfLr7gWgLau9HyWXg==", + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.5.tgz", + "integrity": "sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ==", "dependencies": { - "@react-aria/ssr": "^3.9.3", - "@react-aria/utils": "^3.24.0", - "@react-types/shared": "^3.23.0", + "@react-aria/ssr": "^3.9.7", + "@react-aria/utils": "^3.26.0", + "@react-types/shared": "^3.26.0", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/interactions/node_modules/@react-aria/utils": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.0.tgz", - "integrity": "sha512-JAxkPhK5fCvFVNY2YG3TW3m1nTzwRcbz7iyTSkUzLFat4N4LZ7Kzh7NMHsgeE/oMOxd8zLY+XsUxMu/E/2GujA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.26.0.tgz", + "integrity": "sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==", "dependencies": { - "@react-aria/ssr": "^3.9.3", - "@react-stately/utils": "^3.10.0", - "@react-types/shared": "^3.23.0", + "@react-aria/ssr": "^3.9.7", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.26.0", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/interactions/node_modules/clsx": { @@ -4508,31 +4182,31 @@ } }, "node_modules/@react-aria/overlays": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.21.0.tgz", - "integrity": "sha512-ulE5RQP3ZUFqY6Zok4L/CCZW5HCPZeuyDEezPw4/4Y/WD6TjGZ1ChbPuGsAl+X+fo/iKTpe7joN4kYrKmTb5WA==", - "dependencies": { - "@react-aria/focus": "^3.16.1", - "@react-aria/i18n": "^3.10.1", - "@react-aria/interactions": "^3.21.0", - "@react-aria/ssr": "^3.9.1", - "@react-aria/utils": "^3.23.1", - "@react-aria/visually-hidden": "^3.8.9", - "@react-stately/overlays": "^3.6.4", - "@react-types/button": "^3.9.1", - "@react-types/overlays": "^3.8.4", - "@react-types/shared": "^3.22.0", + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.23.3.tgz", + "integrity": "sha512-vRW4DL466a27BBIP6dQqmmei4nX/nsur6DyF0Hmd46ygwOdvdA+5MwvXZUz9yUamB79UeS9BMQZuBVwhjoMwBQ==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-aria/visually-hidden": "^3.8.16", + "@react-stately/overlays": "^3.6.11", + "@react-types/button": "^3.10.0", + "@react-types/overlays": "^3.8.10", + "@react-types/shared": "^3.25.0", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/ssr": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.3.tgz", - "integrity": "sha512-5bUZ93dmvHFcmfUcEN7qzYe8yQQ8JY+nHN6m9/iSDCQ/QmCiE0kWXYwhurjw5ch6I8WokQzx66xKIMHBAa4NNA==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", + "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -4540,22 +4214,22 @@ "node": ">= 12" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/utils": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.1.tgz", - "integrity": "sha512-iXibf9ojqdoygbvy/++v5cKLKgjc/5ZmKV8/9u/2Hkpha1cf5Td/Z+Vl42B6giUBAsuDio5kuZYfYC7Uk+t8ag==", + "version": "3.25.3", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.3.tgz", + "integrity": "sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==", "dependencies": { - "@react-aria/ssr": "^3.9.1", - "@react-stately/utils": "^3.9.0", - "@react-types/shared": "^3.22.0", + "@react-aria/ssr": "^3.9.6", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/utils/node_modules/clsx": { @@ -4567,32 +4241,32 @@ } }, "node_modules/@react-aria/visually-hidden": { - "version": "3.8.11", - "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.11.tgz", - "integrity": "sha512-1JFruyAatoKnC18qrix8Q1gyUNlizWZvYdPADgB5btakMy0PEGTWPmFRK5gFsO+N0CZLCFTCip0dkUv6rrp31w==", + "version": "3.8.18", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.18.tgz", + "integrity": "sha512-l/0igp+uub/salP35SsNWq5mGmg3G5F5QMS1gDZ8p28n7CgjvzyiGhJbbca7Oxvaw1HRFzVl9ev+89I7moNnFQ==", "dependencies": { - "@react-aria/interactions": "^3.21.2", - "@react-aria/utils": "^3.24.0", - "@react-types/shared": "^3.23.0", + "@react-aria/interactions": "^3.22.5", + "@react-aria/utils": "^3.26.0", + "@react-types/shared": "^3.26.0", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/visually-hidden/node_modules/@react-aria/utils": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.0.tgz", - "integrity": "sha512-JAxkPhK5fCvFVNY2YG3TW3m1nTzwRcbz7iyTSkUzLFat4N4LZ7Kzh7NMHsgeE/oMOxd8zLY+XsUxMu/E/2GujA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.26.0.tgz", + "integrity": "sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==", "dependencies": { - "@react-aria/ssr": "^3.9.3", - "@react-stately/utils": "^3.10.0", - "@react-types/shared": "^3.23.0", + "@react-aria/ssr": "^3.9.7", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.26.0", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-aria/visually-hidden/node_modules/clsx": { @@ -4604,69 +4278,77 @@ } }, "node_modules/@react-stately/overlays": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.6.tgz", - "integrity": "sha512-NvzQXh4zYGZuUmZH5d3NmEDNr8r1hfub2s5w7WOeIG35xqIzoKGdFZ7LLWrie+4nxPmM+ckdfqOQ9pBZFNJypQ==", + "version": "3.6.12", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.12.tgz", + "integrity": "sha512-QinvZhwZgj8obUyPIcyURSCjTZlqZYRRCS60TF8jH8ZpT0tEAuDb3wvhhSXuYA3Xo9EHLwvLjEf3tQKKdAQArw==", "dependencies": { - "@react-stately/utils": "^3.10.0", - "@react-types/overlays": "^3.8.6", + "@react-stately/utils": "^3.10.5", + "@react-types/overlays": "^3.8.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-stately/utils": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.0.tgz", - "integrity": "sha512-nji2i9fTYg65ZWx/3r11zR1F2tGya+mBubRCbMTwHyRnsSLFZaeq/W6lmrOyIy1uMJKBNKLJpqfmpT4x7rw6pg==", + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", + "integrity": "sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==", "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-types/button": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.3.tgz", - "integrity": "sha512-YHlSeH85FhasJXOmkY4x+6If74ZpUh88C2fMlw0HUA/Bq/KGckUoriV8cnMqSnB1OwPqi8dpBZGfFVj6f6lh9A==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.10.1.tgz", + "integrity": "sha512-XTtap8o04+4QjPNAshFWOOAusUTxQlBjU2ai0BTVLShQEjHhRVDBIWsI2B2FKJ4KXT6AZ25llaxhNrreWGonmA==", "dependencies": { - "@react-types/shared": "^3.23.0" + "@react-types/shared": "^3.26.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-types/dialog": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.9.tgz", - "integrity": "sha512-8r9P1b1gq/cUv2bTPPNL3IFVEj9R5sIPACoSXznXkpXxh5FLU6yUPHDeQjvmM50q7KlEOgrPYhGl5pW525kLww==", + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.14.tgz", + "integrity": "sha512-OXWMjrALwrlgw8aHD8SeRm/s3tbAssdaEh2h73KUSeFau3fU3n5mfKv+WnFqsEaOtN261o48l7hTlS6615H9AA==", "dependencies": { - "@react-types/overlays": "^3.8.6", - "@react-types/shared": "^3.23.0" + "@react-types/overlays": "^3.8.11", + "@react-types/shared": "^3.26.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-types/overlays": { - "version": "3.8.6", - "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.6.tgz", - "integrity": "sha512-7xBuroYqwADppt7IRGfM8lbxVwlZrhMtTzeIdUot595cqFdRlpd/XAo2sRnEeIjYW9OSI8I5v4kt3AG7bdCQlg==", + "version": "3.8.11", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.11.tgz", + "integrity": "sha512-aw7T0rwVI3EuyG5AOaEIk8j7dZJQ9m34XAztXJVZ/W2+4pDDkLDbJ/EAPnuo2xGYRGhowuNDn4tDju01eHYi+w==", "dependencies": { - "@react-types/shared": "^3.23.0" + "@react-types/shared": "^3.26.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@react-types/shared": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.0.tgz", - "integrity": "sha512-GQm/iPiii3ikcaMNR4WdVkJ4w0mKtV3mLqeSfSqzdqbPr6vONkqXbh3RhPlPmAJs1b4QHnexd/wZQP3U9DHOwQ==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.26.0.tgz", + "integrity": "sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@remix-run/router": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", + "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==", + "engines": { + "node": ">=14.0.0" } }, "node_modules/@sinclair/typebox": { @@ -5604,6 +5286,14 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/jquery": { + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.31.tgz", + "integrity": "sha512-rf/iB+cPJ/YZfMwr+FVuQbm7IaWC4y3FVYfVDxRGqmUCFjjPII0HWaP0vTPJGp6m4o13AXySCcMbWfrWtBFAKw==", + "dependencies": { + "@types/sizzle": "*" + } + }, "node_modules/@types/js-cookie": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", @@ -5625,9 +5315,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.0", - "dev": true, - "license": "MIT" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==" }, "node_modules/@types/mdast": { "version": "4.0.4", @@ -5670,23 +5360,12 @@ }, "node_modules/@types/react-dom": { "version": "18.2.22", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/react": "*" } }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, "node_modules/@types/react-router": { "version": "5.1.20", "dev": true, @@ -5710,15 +5389,14 @@ "version": "7.7.20", "resolved": "https://registry.npmjs.org/@types/react-table/-/react-table-7.7.20.tgz", "integrity": "sha512-ahMp4pmjVlnExxNwxyaDrFgmKxSbPwU23sGQw2gJK4EhCvnvmib2s/O/+y1dfV57dXOwpr2plfyBol+vEHbi2w==", - "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "dependencies": { "@types/react": "*" } @@ -5740,7 +5418,6 @@ }, "node_modules/@types/sizzle": { "version": "2.3.8", - "dev": true, "license": "MIT" }, "node_modules/@types/stack-utils": { @@ -5771,6 +5448,11 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "node_modules/@types/uuid": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", @@ -6708,9 +6390,9 @@ } }, "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", "engines": { "node": ">=4" } @@ -7677,6 +7359,11 @@ "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", "integrity": "sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==" }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" + }, "node_modules/concat-map": { "version": "0.0.1", "dev": true, @@ -8312,9 +7999,9 @@ "license": "ISC" }, "node_modules/d3": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", - "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -8763,9 +8450,9 @@ } }, "node_modules/date-fns": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.3.1.tgz", - "integrity": "sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -9059,6 +8746,26 @@ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.3.tgz", "integrity": "sha512-5sOWYSNPaxz6o2MUPvtyxTTqR4D3L77pr5rUQoWgD5ROQtVIZQgJkXbo1DLlK3vj11YGw5+LnF4SYti4gZmwng==" }, + "node_modules/downshift": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-9.0.8.tgz", + "integrity": "sha512-59BWD7+hSUQIM1DeNPLirNNnZIO9qMdIK5GQ/Uo8q34gT4B78RBlb9dhzgnh0HfQTJj4T/JKYD8KoLAlMWnTsA==", + "dependencies": { + "@babel/runtime": "^7.24.5", + "compute-scroll-into-view": "^3.1.0", + "prop-types": "^15.8.1", + "react-is": "18.2.0", + "tslib": "^2.6.2" + }, + "peerDependencies": { + "react": ">=16.12.0" + } + }, + "node_modules/downshift/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/earcut": { "version": "2.2.4", "license": "ISC" @@ -10198,11 +9905,6 @@ "license": "MIT", "peer": true }, - "node_modules/fast-loops": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", - "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" - }, "node_modules/fast-shallow-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", @@ -11248,14 +10950,14 @@ } }, "node_modules/hyphenate-style-name": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.5.tgz", - "integrity": "sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" }, "node_modules/i18next": { - "version": "23.11.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.4.tgz", - "integrity": "sha512-CCUjtd5TfaCl+mLUzAA0uPSN+AVn4fP/kWCYt/hocPUwusTpMVczdrRyOBUwk6N05iH40qiKx6q1DoNJtBIwdg==", + "version": "23.16.8", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", + "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==", "funding": [ { "type": "individual", @@ -11341,9 +11043,9 @@ } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -11480,12 +11182,11 @@ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" }, "node_modules/inline-style-prefixer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.0.tgz", - "integrity": "sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", "dependencies": { - "css-in-js-utils": "^3.1.0", - "fast-loops": "^1.1.3" + "css-in-js-utils": "^3.1.0" } }, "node_modules/internal-slot": { @@ -11518,14 +11219,14 @@ } }, "node_modules/intl-messageformat": { - "version": "10.5.12", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.12.tgz", - "integrity": "sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==", + "version": "10.7.7", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.7.tgz", + "integrity": "sha512-F134jIoeYMro/3I0h08D0Yt4N9o9pjddU/4IIxMMURqbAtI2wu70X8hvG1V48W49zXHXv3RKSF/po+0fDfsGjA==", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.4", + "@formatjs/fast-memoize": "2.2.3", + "@formatjs/icu-messageformat-parser": "2.9.4", + "tslib": "2" } }, "node_modules/invariant": { @@ -14774,9 +14475,9 @@ "license": "BSD-2-Clause" }, "node_modules/marked": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz", - "integrity": "sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "bin": { "marked": "bin/marked.js" }, @@ -14785,11 +14486,11 @@ } }, "node_modules/marked-mangle": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/marked-mangle/-/marked-mangle-1.1.7.tgz", - "integrity": "sha512-bLsXKovJEEs/Dl++TBPmjX8ALFmrH5G0doTs+BdDOloBKWYRf3acyJghce78SnwInDkNPJ6crubr4MnFG7urOA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/marked-mangle/-/marked-mangle-1.1.9.tgz", + "integrity": "sha512-eLTXr1xQzba/WZp/trPS0HkR9W02ifasH6IWPrBv++eO2m8POiwV4muQ6Tof2C5Fhdo3z8ggXs6VGw1f931Vsg==", "peerDependencies": { - "marked": ">=4 <13" + "marked": ">=4 <15" } }, "node_modules/mdast-util-find-and-replace": { @@ -15921,9 +15622,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.45", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", - "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "version": "0.5.46", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz", + "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==", "dependencies": { "moment": "^2.29.4" }, @@ -15932,24 +15633,24 @@ } }, "node_modules/monaco-editor": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.0.tgz", - "integrity": "sha512-VF+S5zG8wxfinLKLrWcl4WUizMx+LeJrG4PM/M78OhcwocpV0jiyhX/pG6Q9jIOhrb/ckYi6nHnaR5OojlOZCQ==" + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==" }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" }, "node_modules/nano-css": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.1.tgz", - "integrity": "sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz", + "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "css-tree": "^1.1.2", "csstype": "^3.1.2", "fastest-stable-stringify": "^2.0.2", - "inline-style-prefixer": "^7.0.0", + "inline-style-prefixer": "^7.0.1", "rtl-css-js": "^1.16.1", "stacktrace-js": "^2.0.2", "stylis": "^4.3.0" @@ -15960,9 +15661,9 @@ } }, "node_modules/nano-css/node_modules/stylis": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", - "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", + "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" }, "node_modules/nanoid": { "version": "3.1.20", @@ -17080,15 +16781,15 @@ } }, "node_modules/rc-cascader": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.21.2.tgz", - "integrity": "sha512-J7GozpgsLaOtzfIHFJFuh4oFY0ePb1w10twqK6is3pAkqHkca/PsokbDr822KIRZ8/CK8CqevxohuPDVZ1RO/A==", + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.28.1.tgz", + "integrity": "sha512-9+8oHIMWVLHxuaapDiqFNmD9KSyKN/P4bo9x/MBuDbyTqP8f2/POmmZxdXWBO3yq/uE3pKyQCXYNUxrNfHRv2A==", "dependencies": { "@babel/runtime": "^7.12.5", "array-tree-filter": "^2.1.0", "classnames": "^2.3.1", - "rc-select": "~14.11.0", - "rc-tree": "~5.8.1", + "rc-select": "~14.15.0", + "rc-tree": "~5.9.0", "rc-util": "^5.37.0" }, "peerDependencies": { @@ -17097,15 +16798,15 @@ } }, "node_modules/rc-drawer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.5.2.tgz", - "integrity": "sha512-QckxAnQNdhh4vtmKN0ZwDf3iakO83W9eZcSKWYYTDv4qcD2fHhRAZJJ/OE6v2ZlQ2kSqCJX5gYssF4HJFvsEPQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz", + "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.23.9", "@rc-component/portal": "^1.1.1", "classnames": "^2.2.6", "rc-motion": "^2.6.1", - "rc-util": "^5.36.0" + "rc-util": "^5.38.1" }, "peerDependencies": { "react": ">=16.9.0", @@ -17113,13 +16814,13 @@ } }, "node_modules/rc-motion": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.1.tgz", - "integrity": "sha512-QD4bUqByjVQs7PhUT1d4bNxvtTcK9ETwtg7psbDfo6TmYalH/1hhjj4r2hbhW7g5OOEqYHhfwfj4noIvuOVRtQ==", + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.3.tgz", + "integrity": "sha512-rkW47ABVkic7WEB0EKJqzySpvDqwl60/tdkY7hWP7dYnh5pm0SzJpo54oW3TDUGXV5wfxXFmMkxrzRRbotQ0+w==", "dependencies": { "@babel/runtime": "^7.11.1", "classnames": "^2.2.1", - "rc-util": "^5.39.3" + "rc-util": "^5.43.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -17157,12 +16858,12 @@ } }, "node_modules/rc-select": { - "version": "14.11.0", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.11.0.tgz", - "integrity": "sha512-8J8G/7duaGjFiTXCBLWfh5P+KDWyA3KTlZDfV3xj/asMPqB2cmxfM+lH50wRiPIRsCQ6EbkCFBccPuaje3DHIg==", + "version": "14.15.2", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.15.2.tgz", + "integrity": "sha512-oNoXlaFmpqXYcQDzcPVLrEqS2J9c+/+oJuGrlXeVVX/gVgrbHa5YcyiRUXRydFjyuA7GP3elRuLF7Y3Tfwltlw==", "dependencies": { "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.5.0", + "@rc-component/trigger": "^2.1.1", "classnames": "2.x", "rc-motion": "^2.0.1", "rc-overflow": "^1.3.1", @@ -17178,13 +16879,13 @@ } }, "node_modules/rc-slider": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.5.0.tgz", - "integrity": "sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==", + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.7.tgz", + "integrity": "sha512-ytYbZei81TX7otdC0QvoYD72XSlxvTihNth5OeZ6PMXyEDq/vHdWFulQmfDGyXK1NwKwSlKgpvINOa88uT5g2A==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.5", - "rc-util": "^5.27.0" + "rc-util": "^5.36.0" }, "engines": { "node": ">=8.x" @@ -17208,12 +16909,12 @@ } }, "node_modules/rc-tooltip": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.1.3.tgz", - "integrity": "sha512-HMSbSs5oieZ7XddtINUddBLSVgsnlaSb3bZrzzGWjXa7/B7nNedmsuz72s7EWFEro9mNa7RyF3gOXKYqvJiTcQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.1.tgz", + "integrity": "sha512-rws0duD/3sHHsD905Nex7FvoUGy2UBQRhTkKxeEvr2FB+r21HsOxcDJI0TzyO8NHhnAA8ILr8pfbSBg5Jj5KBg==", "dependencies": { "@babel/runtime": "^7.11.2", - "@rc-component/trigger": "^1.18.0", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.3.1" }, "peerDependencies": { @@ -17222,9 +16923,9 @@ } }, "node_modules/rc-tree": { - "version": "5.8.7", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.7.tgz", - "integrity": "sha512-cpsIQZ4nNYwpj6cqPRt52e/69URuNdgQF9wZ10InmEf8W3+i0A41OVmZWwHuX9gegQSqj+DPmaDkZFKQZ+ZV1w==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.9.0.tgz", + "integrity": "sha512-CPrgOvm9d/9E+izTONKSngNzQdIEjMox2PBufWjS1wf7vxtvmCWzK1SlpHbRY6IaBfJIeZ+88RkcIevf729cRg==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -17267,9 +16968,9 @@ } }, "node_modules/rc-util": { - "version": "5.39.3", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.39.3.tgz", - "integrity": "sha512-j9wOELkLQ8gC/NkUg3qg9mHZcJf+5mYYv40JrDHqnaf8VSycji4pCf7kJ5fdTXQPDIF0vr5zpb/T2HdrMs9rWA==", + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz", + "integrity": "sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==", "dependencies": { "@babel/runtime": "^7.18.3", "react-is": "^18.2.0" @@ -17285,9 +16986,9 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/rc-virtual-list": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.12.0.tgz", - "integrity": "sha512-43+/lr7bImpvEwTFw1FTYwSg42VHzRgO5PiCEEUROj8D2+M2SCvANqGIa9QyhoFLVQtc+2QXvgTB7VPGG7oOoQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.15.0.tgz", + "integrity": "sha512-dF2YQztqrU3ijAeWOqscTshCEr7vpimzSqAVjO1AyAmaqcHulaXpnGR0ptK5PXfxTUy48VkJOiglMIxlkYGs0w==", "dependencies": { "@babel/runtime": "^7.20.0", "classnames": "^2.2.6", @@ -17313,42 +17014,23 @@ "node": ">=0.10.0" } }, - "node_modules/react-beautiful-dnd": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", - "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", - "dependencies": { - "@babel/runtime": "^7.9.2", - "css-box-model": "^1.2.0", - "memoize-one": "^5.1.1", - "raf-schd": "^4.0.2", - "react-redux": "^7.2.0", - "redux": "^4.0.4", - "use-memo-one": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8.5 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-calendar": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-4.8.0.tgz", - "integrity": "sha512-qFgwo+p58sgv1QYMI1oGNaop90eJVKuHTZ3ZgBfrrpUb+9cAexxsKat0sAszgsizPMVo7vOXedV7Lqa0GQGMvA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-5.0.0.tgz", + "integrity": "sha512-bHcE5e5f+VUKLd4R19BGkcSQLpuwjKBVG0fKz74cwPW5xDfNsReHdDbfd4z3mdjuUuZzVtw4Q920mkwK5/ZOEg==", "dependencies": { "@wojtekmaj/date-utils": "^1.1.3", "clsx": "^2.0.0", "get-user-locale": "^2.2.1", - "prop-types": "^15.6.0", "warning": "^4.0.0" }, "funding": { "url": "https://github.com/wojtekmaj/react-calendar?sponsor=1" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -17411,9 +17093,9 @@ } }, "node_modules/react-dropzone": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", - "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.9.tgz", + "integrity": "sha512-jRZsMC7h48WONsOLHcmhyn3cRWJoIPQjPApvt/sJVfnYaB3Qltn025AoRTTJaj4WdmmgmLl6tUQg1s0wOhpodQ==", "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.6.0", @@ -17426,11 +17108,6 @@ "react": ">= 16.8 || 18.0.0" } }, - "node_modules/react-fast-compare": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" - }, "node_modules/react-from-dom": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/react-from-dom/-/react-from-dom-0.6.2.tgz", @@ -17488,15 +17165,15 @@ } }, "node_modules/react-i18next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz", - "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==", + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.3.tgz", + "integrity": "sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw==", "dependencies": { - "@babel/runtime": "^7.20.6", + "@babel/runtime": "^7.23.9", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { - "i18next": ">= 19.0.0", + "i18next": ">= 23.2.3", "react": ">= 16.8.0" }, "peerDependenciesMeta": { @@ -17541,9 +17218,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-loading-skeleton": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz", - "integrity": "sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.5.0.tgz", + "integrity": "sha512-gxxSyLbrEAdXTKgfbpBEFZCO/P153DnqSCQau2+o6lNy1jgMRr2MmRmOzMmyrwSaSYLRB8g7b0waYPmUjz7IhQ==", "peerDependencies": { "react": ">=16.8.0" } @@ -17573,48 +17250,48 @@ "react": ">=18" } }, - "node_modules/react-popper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", - "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", - "dependencies": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - }, - "peerDependencies": { - "@popperjs/core": "^2.0.0", - "react": "^16.8.0 || ^17 || ^18", - "react-dom": "^16.8.0 || ^17 || ^18" - } - }, "node_modules/react-redux": { - "version": "7.2.9", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", - "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, "react-dom": { "optional": true }, "react-native": { "optional": true + }, + "redux": { + "optional": true } } }, "node_modules/react-redux/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/react-resizable": { "version": "3.0.5", @@ -17661,10 +17338,50 @@ "react": ">=15" } }, + "node_modules/react-router-dom-v5-compat": { + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/react-router-dom-v5-compat/-/react-router-dom-v5-compat-6.28.0.tgz", + "integrity": "sha512-KrTxsn2vibvoTeGstcBMEuchuT+BxXGftfa7njf1vNSlzO8t+4Y5oN2h3WeAq2rK7MyA5mFUXrE/+lMOR0ay9Q==", + "dependencies": { + "@remix-run/router": "1.21.0", + "history": "^5.3.0", + "react-router": "6.28.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8", + "react-router-dom": "4 || 5" + } + }, + "node_modules/react-router-dom-v5-compat/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/react-router-dom-v5-compat/node_modules/react-router": { + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz", + "integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==", + "dependencies": { + "@remix-run/router": "1.21.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/react-select": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", - "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.1.tgz", + "integrity": "sha512-RT1CJmuc+ejqm5MPgzyZujqDskdvB9a9ZqrdnVLsvAHjJ3Tj0hELnLeVPQlmYdVKCdCpxanepl6z7R5KhXhWzg==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -17723,9 +17440,9 @@ } }, "node_modules/react-use": { - "version": "17.5.0", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.0.tgz", - "integrity": "sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz", + "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==", "dependencies": { "@types/js-cookie": "^2.2.6", "@xobotyi/scrollbar-width": "^1.9.5", @@ -17733,7 +17450,7 @@ "fast-deep-equal": "^3.1.3", "fast-shallow-equal": "^1.0.0", "js-cookie": "^2.2.1", - "nano-css": "^5.6.1", + "nano-css": "^5.6.2", "react-universal-interface": "^0.6.2", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.1.0", @@ -19315,15 +19032,6 @@ "dev": true, "license": "MIT" }, - "node_modules/systemjs": { - "version": "6.14.3", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.3.tgz", - "integrity": "sha512-hQv45irdhXudAOr8r6SVSpJSGtogdGZUbJBRKCE5nsIS7tsxxvnIHqT4IOPWj+P+HcSzeWzHlGCGpmhPDIKe+w==" - }, - "node_modules/systemjs-cjs-extra": { - "version": "0.2.0", - "license": "MIT" - }, "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", @@ -20261,9 +19969,9 @@ } }, "node_modules/uplot": { - "version": "1.6.30", - "resolved": "https://registry.npmjs.org/uplot/-/uplot-1.6.30.tgz", - "integrity": "sha512-48oVVRALM/128ttW19F2a2xobc2WfGdJ0VJFX00099CfqbCTuML7L2OrTKxNzeFP34eo1+yJbqFSoFAp2u28/Q==" + "version": "1.6.31", + "resolved": "https://registry.npmjs.org/uplot/-/uplot-1.6.31.tgz", + "integrity": "sha512-sQZqSwVCbJGnFB4IQjQYopzj5CoTZJ4Br1fG/xdONimqgHmsacvCjNesdGDypNKFbrhLGIeshYhy89FxPF+H+w==" }, "node_modules/uri-js": { "version": "4.4.1", @@ -20303,6 +20011,14 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "dev": true, diff --git a/package.json b/package.json index c4938ca..4b3a897 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "devDependencies": { "@babel/core": "^7.21.4", "@grafana/e2e": "11.0.7", - "@grafana/e2e-selectors": "10.3.3", + "@grafana/e2e-selectors": "11.3.1", "@grafana/eslint-config": "^8.0.0", "@grafana/tsconfig": "^1.2.0-rc1", "@swc/core": "^1.6.7", @@ -62,11 +62,11 @@ }, "dependencies": { "@emotion/css": "11.13.4", - "@grafana/data": "10.4.5", - "@grafana/runtime": "10.4.11", - "@grafana/scenes": "^5.23.1", - "@grafana/schema": "10.4.6", - "@grafana/ui": "10.4.5", + "@grafana/data": "11.3.1", + "@grafana/runtime": "11.3.1", + "@grafana/scenes": "^5.28.1", + "@grafana/schema": "11.3.1", + "@grafana/ui": "11.3.1", "@tanstack/react-table": "^8.17.3", "mdast-util-find-and-replace": "^3.0.1", "react": "18.3.1", diff --git a/src/common/variableHelpers.ts b/src/common/variableHelpers.ts index 07cd413..a64b66f 100644 --- a/src/common/variableHelpers.ts +++ b/src/common/variableHelpers.ts @@ -1,4 +1,4 @@ -import { DataSourceVariable, QueryVariable, SceneTimeRange, SceneVariableSet, SceneVariables, sceneGraph } from "@grafana/scenes"; +import { DataSourceVariable, QueryVariable, SceneTimeRange, SceneVariable, SceneVariableSet, SceneVariableState, SceneVariables, sceneGraph } from "@grafana/scenes"; import { JsonData } from "components/AppConfig"; import { Metrics } from "metrics/metrics"; @@ -26,7 +26,7 @@ export interface TopLevelVariableSettings { clusterFilter?: string; } -export function createTopLevelVariables(props: JsonData) { +export function createTopLevelVariables(props: JsonData, additionalVariables?: Array>) { const settings: TopLevelVariableSettings = { datasource: props.datasource || 'prometheus', @@ -45,6 +45,7 @@ export function createTopLevelVariables(props: JsonData) { value: settings.defaultDatasource, }), createClusterVariable(settings.defaultCluster, settings.clusterFilter), + ...additionalVariables || [], ], }) } diff --git a/src/components/AppConfig/AppConfig.tsx b/src/components/AppConfig/AppConfig.tsx index df8cf3a..a32ee6c 100644 --- a/src/components/AppConfig/AppConfig.tsx +++ b/src/components/AppConfig/AppConfig.tsx @@ -1,5 +1,5 @@ import React, { useState, ChangeEvent, useEffect } from 'react'; -import { Button, Field, Input, useStyles2, FieldSet, TagList, Switch, Alert, Link, Select, IconButton } from '@grafana/ui'; +import { Button, Field, Input, useStyles2, FieldSet, TagList, Switch, Alert, Link, Select, IconButton, TabbedContainer } from '@grafana/ui'; import { PluginConfigPageProps, AppPluginMeta, PluginMeta, GrafanaTheme2, DataSourceInstanceSettings, DataSourceJsonData, SelectableValue } from '@grafana/data'; import { getBackendSrv, getDataSourceSrv, locationService } from '@grafana/runtime'; import { css } from '@emotion/css'; @@ -12,6 +12,115 @@ export type RulerClusterMapping = { datasource: string } +export enum PageType { + CLUSTER = 'cluster', + NODE = 'node', + POD = 'pod', + DEPLOYMENT = 'deployment', + STATEFULSET = 'statefulset', + DAEMONSET = 'daemonset', +} + +const COMMON_VARIABLES = [ + '$cluster', +] + +const COMMON_WORKLOAD_VARIABLES = [ + '$namespace' +] + +export const PageTypeDetails = [ + { + pageType: PageType.CLUSTER, + variables: [ + ...COMMON_VARIABLES, + ], + logsExample: '{k8s_cluster_name="$cluster"}', + eventsExample: '{k8s_cluster_name="$cluster", service_name="k8sevents"}', + }, + { + pageType: PageType.NODE, + variables: [ + '$node', + ...COMMON_VARIABLES, + ], + logsExample: '{k8s_cluster_name="$cluster", k8s_node_name="$node"}', + eventsExample: '{k8s_cluster_name="$cluster", service_name="k8sevents"} | k8s_node_name="$node"', + }, + { + pageType: PageType.POD, + variables: [ + '$pod', + ...COMMON_VARIABLES, + ...COMMON_WORKLOAD_VARIABLES, + ], + logsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", k8s_pod_name="$pod"}', + eventsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", service_name="k8sevents"} | k8s_object_name="$pod"', + }, + { + pageType: PageType.DEPLOYMENT, + variables: [ + '$deployment', + ...COMMON_VARIABLES, + ...COMMON_WORKLOAD_VARIABLES, + ], + logsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", k8s_deployment_name="$deployment"}', + eventsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", service_name="k8sevents"} | k8s_object_name="$deployment"', + }, + { + pageType: PageType.STATEFULSET, + variables: [ + '$statefulset', + ...COMMON_VARIABLES, + ...COMMON_WORKLOAD_VARIABLES, + ], + logsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", k8s_statefulset_name="$statefulset"}', + eventsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", service_name="k8sevents"} | k8s_object_name="$statefulset"', + }, + { + pageType: PageType.DAEMONSET, + variables: [ + '$daemonset', + ...COMMON_VARIABLES, + ...COMMON_WORKLOAD_VARIABLES, + ], + logsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", k8s_daemonset_name="$daemonset"}', + eventsExample: '{k8s_cluster_name="$cluster", k8s_namespace_name="$namespace", service_name="k8sevents"} | k8s_object_name="$daemonset"', + }, +] + +function createDefaultLogQueries() { + return PageTypeDetails.map((details) => { + return { + pageType: details.pageType, + query: details.logsExample, + datasource: '', + } + }) +} + +function createDefaultEventQueries() { + return PageTypeDetails.map((details) => { + return { + pageType: details.pageType, + query: details.eventsExample, + datasource: '', + } + }) +} + +export type LogQuery = { + pageType: PageType; + query: string; + datasource: string; +} + +export type EventQuery = { + pageType: PageType; + query: string; + datasource: string; +} + export type JsonData = { datasource?: string; defaultDatasource?: string; @@ -20,6 +129,9 @@ export type JsonData = { analyticsEnabled?: boolean; analytics?: AnalyticsOptions; rulerMappings?: RulerClusterMapping[]; + logQueries?: LogQuery[]; + eventQueries?: EventQuery[]; + logsEnabled?: boolean; }; type State = { @@ -29,10 +141,14 @@ type State = { defaultCluster?: string; clusterFilter?: string; prometheusDatasources?: Array>; + lokiDatasources?: Array>; matchingDatasources?: string[]; analyticsEnabled: boolean; analytics: AnalyticsOptions; rulerMappings?: RulerClusterMapping[]; + logQueries?: LogQuery[]; + eventQueries?: EventQuery[]; + logsEnabled: boolean; }; const DEFAULT_ANALYTIC_OPTIONS: AnalyticsOptions = { @@ -62,6 +178,9 @@ export const AppConfig = ({ plugin }: Props) => { ...jsonData?.analytics, }, rulerMappings: jsonData?.rulerMappings || [], + logQueries: jsonData?.logQueries || createDefaultLogQueries(), + eventQueries: jsonData?.eventQueries || createDefaultEventQueries(), + logsEnabled: jsonData?.logsEnabled || false, }); const onChangeDatasource = (event: ChangeEvent) => { @@ -152,12 +271,62 @@ export const AppConfig = ({ plugin }: Props) => { }); } + const onChangeLogsQuery = (event: ChangeEvent, index: number) => { + const queries = state.logQueries || []; + queries[index].query = event.target.value; + + setState({ + ...state, + logQueries: queries, + }); + } + + const onChangeLogsQueryDatasource = (event: SelectableValue, index: number) => { + const queries = state.logQueries || []; + queries[index].datasource = event.value || ''; + + setState({ + ...state, + logQueries: queries, + }); + } + + const onChangeEventsQuery = (event: ChangeEvent, index: number) => { + const queries = state.eventQueries || []; + queries[index].query = event.target.value; + + setState({ + ...state, + eventQueries: queries, + }); + } + + const onChangeEventsQueryDatasource = (event: SelectableValue, index: number) => { + const queries = state.eventQueries || []; + queries[index].datasource = event.value || ''; + + setState({ + ...state, + eventQueries: queries, + }); + } + + const onToggleLogsAndEvents = (event: ChangeEvent) => { + setState({ + ...state, + logsEnabled: event.target.checked, + }); + } + const onDiscoverDatasources = () => { - const datasources = getDataSourceSrv() + const prometheusDatasources = getDataSourceSrv() .getList({ type: 'prometheus' }); + + const lokiDatasources = getDataSourceSrv() + .getList({ type: 'loki' }); const matchingNames: string[] = [] - datasources.forEach((ds) => { + prometheusDatasources.forEach((ds) => { if (ds.name.match(state.datasource)) { matchingNames.push(ds.name) } @@ -166,7 +335,8 @@ export const AppConfig = ({ plugin }: Props) => { setState({ ...state, matchingDatasources: matchingNames, - prometheusDatasources: datasources, + prometheusDatasources: prometheusDatasources, + lokiDatasources: lokiDatasources, }); } @@ -182,6 +352,9 @@ export const AppConfig = ({ plugin }: Props) => { analyticsEnabled: state.analyticsEnabled, analytics: state.analytics, rulerMappings: state.rulerMappings, + logQueries: state.logQueries, + eventQueries: state.eventQueries, + logsEnabled: state.logsEnabled }, }) } @@ -281,49 +454,143 @@ export const AppConfig = ({ plugin }: Props) => { /> +
+ +

EXPERIMENTAL: Allows configuring Loki queries for pages.

+
+ + + + {}} + tabs={[ + { + label: 'Logs', + value: 'logs', + icon: 'table', + content: ( + <> + { + state.logQueries?.map((details, index) => { + return ( + <> +
+ + ) => onChangeLogsQuery(e, index)} + /> + + + ) => onChangeEventsQuery(e, index)} + /> + + + ) => onChangeRulerCluster(e, index)} - /> - - - ) => onChangeRulerCluster(e, index)} /> -
- ) - }) - } + + +