Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 15f94d84d0 | |||
| ff20b06681 | |||
| 0adb869188 | |||
| 80658a73c5 | |||
| 27c734d4ca |
@@ -1,3 +1,12 @@
|
||||
<!-- 12.0.1+security-01 START -->
|
||||
|
||||
# 12.0.1+security-01 (2025-06-13)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- **Security:** Fixed CVE-2025-3415
|
||||
|
||||
<!-- 12.0.1+security-01 END -->
|
||||
<!-- 11.6.0 START -->
|
||||
|
||||
# 11.6.0 (2025-03-25)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@test-plugins/extensions-test-app",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "webpack -c ./webpack.config.ts --env production",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@test-plugins/grafana-e2etest-datasource",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "webpack -c ./webpack.config.ts --env production",
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||
"npmClient": "yarn",
|
||||
"version": "12.0.1"
|
||||
"version": "12.0.2"
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
"license": "AGPL-3.0-only",
|
||||
"private": true,
|
||||
"name": "grafana",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"repository": "github:grafana/grafana",
|
||||
"scripts": {
|
||||
"build": "NODE_ENV=production nx exec --verbose -- webpack --config scripts/webpack/webpack.prod.js --progress",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/data",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana Data Library",
|
||||
"keywords": [
|
||||
"typescript"
|
||||
@@ -56,7 +56,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@braintree/sanitize-url": "7.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@types/d3-interpolate": "^3.0.0",
|
||||
"@types/string-hash": "1.1.3",
|
||||
"@types/systemjs": "6.15.1",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/e2e-selectors",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana End-to-End Test Selectors Library",
|
||||
"keywords": [
|
||||
"cli",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@grafana/eslint-plugin",
|
||||
"description": "ESLint rules for use within the Grafana repo. Not suitable (or supported) for external use.",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"main": "./index.cjs",
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/flamegraph",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana flamegraph visualization component",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
@@ -44,8 +44,8 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"@leeoniya/ufuzzy": "1.0.18",
|
||||
"d3": "^7.8.5",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@grafana/saga-icons",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"private": true,
|
||||
"description": "Icons for Grafana",
|
||||
"author": "Grafana Labs",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"license": "AGPL-3.0-only",
|
||||
"name": "@grafana/o11y-ds-frontend",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Library to manage traces in Grafana.",
|
||||
"sideEffects": false,
|
||||
"repository": {
|
||||
@@ -18,12 +18,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"react-select": "5.10.0",
|
||||
"react-use": "17.6.0",
|
||||
"rxjs": "7.8.1",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana/plugin-configs",
|
||||
"description": "Shared dependencies and files for core plugins",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "AGPL-3.0-only",
|
||||
"name": "@grafana/prometheus",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana Prometheus Library",
|
||||
"keywords": [
|
||||
"typescript"
|
||||
@@ -38,12 +38,12 @@
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@floating-ui/react": "0.27.7",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"@hello-pangea/dnd": "17.0.0",
|
||||
"@leeoniya/ufuzzy": "1.0.18",
|
||||
"@lezer/common": "1.2.3",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/runtime",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana Runtime Library",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
@@ -53,11 +53,11 @@
|
||||
"postpack": "mv package.json.bak package.json && rimraf ./unstable"
|
||||
},
|
||||
"dependencies": {
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/faro-web-sdk": "^1.13.2",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"@types/systemjs": "6.15.1",
|
||||
"history": "4.10.1",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/schema",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana Schema Library",
|
||||
"keywords": [
|
||||
"typescript"
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
limit: number;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip, common.OptionsWithTextFormatting {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends common.OptionsWithLegend, common.SingleStatBaseOptions {
|
||||
displayMode: common.BarGaugeDisplayMode;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export enum VizDisplayMode {
|
||||
Candles = 'candles',
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export enum HorizontalConstraint {
|
||||
Center = 'center',
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface MetricStat {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
selectedSeries: number;
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export type UpdateConfig = {
|
||||
render: boolean,
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export type BucketAggregation = (DateHistogram | Histogram | Terms | Filters | GeoHashGrid | Nested);
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends common.SingleStatBaseOptions {
|
||||
minVizHeight: number;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
basemap: ui.MapLayerOptions;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
/**
|
||||
* Controls the color mode of the heatmap
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
dedupStrategy: common.LogsDedupStrategy;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
dedupStrategy: common.LogsDedupStrategy;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export enum QueryEditorMode {
|
||||
Builder = 'builder',
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface ArcOption {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
/**
|
||||
* Select the pie chart display style.
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends common.SingleStatBaseOptions {
|
||||
colorMode: common.BigValueColorMode;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as ui from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options {
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export enum TextMode {
|
||||
Code = 'code',
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export interface Options extends common.OptionsWithTimezones {
|
||||
legend: common.VizLegendOptions;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
/**
|
||||
* Identical to timeseries... except it does not have timezone settings
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const pluginVersion = "12.0.1";
|
||||
export const pluginVersion = "12.0.2";
|
||||
|
||||
export enum PointShape {
|
||||
Circle = 'circle',
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"license": "AGPL-3.0-only",
|
||||
"private": true,
|
||||
"name": "@grafana/sql",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "http://github.com/grafana/grafana.git",
|
||||
@@ -15,11 +15,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"@react-awesome-query-builder/ui": "6.6.14",
|
||||
"immutable": "5.0.3",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"author": "Grafana Labs",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@grafana/ui",
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"description": "Grafana Components Library",
|
||||
"keywords": [
|
||||
"grafana",
|
||||
@@ -66,10 +66,10 @@
|
||||
"@emotion/react": "11.14.0",
|
||||
"@emotion/serialize": "1.3.3",
|
||||
"@floating-ui/react": "0.27.7",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/faro-web-sdk": "^1.13.2",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@hello-pangea/dnd": "17.0.0",
|
||||
"@leeoniya/ufuzzy": "1.0.18",
|
||||
"@monaco-editor/react": "4.6.0",
|
||||
|
||||
@@ -159,16 +159,17 @@ func staticHandler(ctx *web.Context, log log.Logger, opt StaticOptions) bool {
|
||||
if fi.IsDir() {
|
||||
// Redirect if missing trailing slash.
|
||||
if !strings.HasSuffix(ctx.Req.URL.Path, "/") {
|
||||
path := fmt.Sprintf("%s/", ctx.Req.URL.Path)
|
||||
if !strings.HasPrefix(path, "/") {
|
||||
redirectPath := path.Clean(ctx.Req.URL.Path)
|
||||
redirectPath = fmt.Sprintf("%s/", redirectPath)
|
||||
if !strings.HasPrefix(redirectPath, "/") {
|
||||
// Disambiguate that it's a path relative to this server
|
||||
path = fmt.Sprintf("/%s", path)
|
||||
redirectPath = fmt.Sprintf("/%s", redirectPath)
|
||||
} else {
|
||||
// A string starting with // or /\ is interpreted by browsers as a URL, and not a server relative path
|
||||
rePrefix := regexp.MustCompile(`^(?:/\\|/+)`)
|
||||
path = rePrefix.ReplaceAllString(path, "/")
|
||||
redirectPath = rePrefix.ReplaceAllString(redirectPath, "/")
|
||||
}
|
||||
http.Redirect(ctx.Resp, ctx.Req, path, http.StatusFound)
|
||||
http.Redirect(ctx.Resp, ctx.Req, redirectPath, http.StatusFound)
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
package httpstatic
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
claims "github.com/grafana/authlib/types"
|
||||
"github.com/grafana/grafana/pkg/models/usertoken"
|
||||
"github.com/grafana/grafana/pkg/services/authn"
|
||||
"github.com/grafana/grafana/pkg/services/authn/authntest"
|
||||
"github.com/grafana/grafana/pkg/services/contexthandler"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/grafana/grafana/pkg/web"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestStatic(t *testing.T) {
|
||||
// Create a temporary directory for test files
|
||||
tmpDir, err := os.MkdirTemp("", "static-test")
|
||||
require.NoError(t, err)
|
||||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
// Create test files
|
||||
testFiles := map[string]string{
|
||||
"test.txt": "Test content",
|
||||
"subdir/test.txt": "Subdir content",
|
||||
}
|
||||
|
||||
for path, content := range testFiles {
|
||||
fullPath := filepath.Join(tmpDir, path)
|
||||
err := os.MkdirAll(filepath.Dir(fullPath), 0o755)
|
||||
require.NoError(t, err)
|
||||
err = os.WriteFile(fullPath, []byte(content), 0o644)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
dir string
|
||||
name string
|
||||
path string
|
||||
options StaticOptions
|
||||
expectedStatus int
|
||||
expectedBody string
|
||||
expectedLocation string
|
||||
}{
|
||||
{
|
||||
name: "should serve existing file",
|
||||
path: "/test.txt",
|
||||
expectedStatus: http.StatusOK,
|
||||
expectedBody: "Test content",
|
||||
dir: tmpDir,
|
||||
},
|
||||
{
|
||||
name: "should serve file from subdirectory",
|
||||
path: "/subdir/test.txt",
|
||||
expectedStatus: http.StatusOK,
|
||||
expectedBody: "Subdir content",
|
||||
dir: tmpDir,
|
||||
},
|
||||
|
||||
{
|
||||
name: "should redirect directory without trailing slash",
|
||||
path: "/subdir",
|
||||
expectedStatus: http.StatusFound,
|
||||
expectedLocation: "/subdir/",
|
||||
dir: tmpDir,
|
||||
},
|
||||
{
|
||||
name: "should handle prefix",
|
||||
path: "/static/test.txt",
|
||||
options: StaticOptions{Prefix: "/static"},
|
||||
expectedStatus: http.StatusOK,
|
||||
expectedBody: "Test content",
|
||||
dir: tmpDir,
|
||||
},
|
||||
{
|
||||
name: "should handle excluded path",
|
||||
path: "/test.txt",
|
||||
options: StaticOptions{Exclude: []string{"/test.txt"}},
|
||||
expectedStatus: http.StatusNotFound,
|
||||
dir: tmpDir,
|
||||
},
|
||||
{
|
||||
name: "should add custom headers",
|
||||
path: "/test.txt",
|
||||
options: StaticOptions{AddHeaders: func(ctx *web.Context) { ctx.Resp.Header().Set("X-Test", "test") }},
|
||||
expectedStatus: http.StatusOK,
|
||||
expectedBody: "Test content",
|
||||
dir: tmpDir,
|
||||
},
|
||||
{
|
||||
name: "should clean up path before redirecting",
|
||||
path: "/subdir/..%2F%5C127.0.0.1:80%2F%3F%2F..%2F..",
|
||||
options: StaticOptions{Prefix: "subdir"},
|
||||
expectedStatus: http.StatusFound,
|
||||
expectedLocation: "/",
|
||||
dir: tmpDir,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
sc := setupScenarioContext(t, "")
|
||||
sc.m.Use(Static(tt.dir, tt.options))
|
||||
|
||||
// Create a test request
|
||||
req := httptest.NewRequest("GET", tt.path, nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
// Execute the handler
|
||||
sc.m.ServeHTTP(w, req)
|
||||
|
||||
// Verify the response
|
||||
resp := w.Result()
|
||||
require.Equal(t, tt.expectedStatus, resp.StatusCode)
|
||||
|
||||
if tt.expectedBody != "" {
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, tt.expectedBody, string(body))
|
||||
}
|
||||
|
||||
if tt.options.AddHeaders != nil {
|
||||
assert.Equal(t, "test", resp.Header.Get("X-Test"))
|
||||
}
|
||||
|
||||
if tt.expectedLocation != "" {
|
||||
assert.Equal(t, tt.expectedLocation, resp.Header.Get("Location"))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
type scenarioContext struct {
|
||||
t *testing.T
|
||||
cfg *setting.Cfg
|
||||
m *web.Mux
|
||||
ctxHdlr *contexthandler.ContextHandler
|
||||
}
|
||||
|
||||
func getContextHandler(t *testing.T, cfg *setting.Cfg) *contexthandler.ContextHandler {
|
||||
t.Helper()
|
||||
|
||||
if cfg == nil {
|
||||
cfg = setting.NewCfg()
|
||||
}
|
||||
|
||||
return contexthandler.ProvideService(
|
||||
cfg,
|
||||
&authntest.FakeService{ExpectedIdentity: &authn.Identity{ID: "0", Type: claims.TypeAnonymous, SessionToken: &usertoken.UserToken{}}},
|
||||
featuremgmt.WithFeatures(),
|
||||
)
|
||||
}
|
||||
|
||||
func setupScenarioContext(t *testing.T, url string) *scenarioContext {
|
||||
cfg := setting.NewCfg()
|
||||
ctxHdlr := getContextHandler(t, cfg)
|
||||
sc := &scenarioContext{
|
||||
t: t,
|
||||
cfg: cfg,
|
||||
ctxHdlr: ctxHdlr,
|
||||
}
|
||||
|
||||
sc.m = web.New()
|
||||
sc.m.Use(ctxHdlr.Middleware)
|
||||
|
||||
return sc
|
||||
}
|
||||
@@ -387,6 +387,10 @@ func (am *alertmanager) AppURL() string {
|
||||
|
||||
// buildReceiverIntegrations builds a list of integration notifiers off of a receiver config.
|
||||
func (am *alertmanager) buildReceiverIntegrations(receiver *alertingNotify.APIReceiver, tmpl *alertingTemplates.Template) ([]*alertingNotify.Integration, error) {
|
||||
err := patchNewSecureFields(context.Background(), receiver, alertingNotify.DecodeSecretsFromBase64, am.decryptFn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
receiverCfg, err := alertingNotify.BuildReceiverConfiguration(context.Background(), receiver, alertingNotify.DecodeSecretsFromBase64, am.decryptFn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -414,6 +418,50 @@ func (am *alertmanager) buildReceiverIntegrations(receiver *alertingNotify.APIRe
|
||||
return integrations, nil
|
||||
}
|
||||
|
||||
func patchNewSecureFields(ctx context.Context, api *alertingNotify.APIReceiver, decode alertingNotify.DecodeSecretsFn, decrypt alertingNotify.GetDecryptedValueFn) error {
|
||||
for _, integration := range api.Integrations {
|
||||
switch integration.Type {
|
||||
case "dingding":
|
||||
err := patchSettingsFromSecureSettings(ctx, integration, "url", decode, decrypt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func patchSettingsFromSecureSettings(ctx context.Context, integration *alertingNotify.GrafanaIntegrationConfig, key string, decode alertingNotify.DecodeSecretsFn, decrypt alertingNotify.GetDecryptedValueFn) error {
|
||||
if _, ok := integration.SecureSettings[key]; !ok {
|
||||
return nil
|
||||
}
|
||||
decoded, err := decode(integration.SecureSettings)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
settings := map[string]any{}
|
||||
err = json.Unmarshal(integration.Settings, &settings)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
currentValue, ok := settings[key]
|
||||
currentString := ""
|
||||
if ok {
|
||||
currentString, _ = currentValue.(string)
|
||||
}
|
||||
secretValue := decrypt(ctx, decoded, key, currentString)
|
||||
if secretValue == currentString {
|
||||
return nil
|
||||
}
|
||||
settings[key] = secretValue
|
||||
data, err := json.Marshal(settings)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
integration.Settings = data
|
||||
return nil
|
||||
}
|
||||
|
||||
// PutAlerts receives the alerts and then sends them through the corresponding route based on whenever the alert has a receiver embedded or not
|
||||
func (am *alertmanager) PutAlerts(_ context.Context, postableAlerts apimodels.PostableAlerts) error {
|
||||
alerts := make(alertingNotify.PostableAlerts, 0, len(postableAlerts.PostableAlerts))
|
||||
|
||||
@@ -127,6 +127,7 @@ func GetAvailableNotifiers() []*NotifierPlugin {
|
||||
Placeholder: "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx",
|
||||
PropertyName: "url",
|
||||
Required: true,
|
||||
Secure: true,
|
||||
},
|
||||
{
|
||||
Label: "Message Type",
|
||||
|
||||
@@ -11,7 +11,7 @@ func TestGetSecretKeysForContactPointType(t *testing.T) {
|
||||
receiverType string
|
||||
expectedSecretFields []string
|
||||
}{
|
||||
{receiverType: "dingding", expectedSecretFields: []string{}},
|
||||
{receiverType: "dingding", expectedSecretFields: []string{"url"}},
|
||||
{receiverType: "kafka", expectedSecretFields: []string{"password"}},
|
||||
{receiverType: "email", expectedSecretFields: []string{}},
|
||||
{receiverType: "pagerduty", expectedSecretFields: []string{"integrationKey"}},
|
||||
|
||||
@@ -24,12 +24,17 @@ func (am *alertmanager) TestReceivers(ctx context.Context, c apimodels.TestRecei
|
||||
SecureSettings: gr.SecureSettings,
|
||||
})
|
||||
}
|
||||
receivers = append(receivers, &alertingNotify.APIReceiver{
|
||||
recv := &alertingNotify.APIReceiver{
|
||||
ConfigReceiver: r.Receiver,
|
||||
GrafanaIntegrations: alertingNotify.GrafanaIntegrations{
|
||||
Integrations: integrations,
|
||||
},
|
||||
})
|
||||
}
|
||||
err := patchNewSecureFields(ctx, recv, alertingNotify.DecodeSecretsFromBase64, am.decryptFn)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
receivers = append(receivers, recv)
|
||||
}
|
||||
a := &alertingNotify.PostableAlert{}
|
||||
if c.Alert != nil {
|
||||
|
||||
@@ -684,6 +684,15 @@ func (ss *sqlStore) RemoveOrgUser(ctx context.Context, cmd *org.RemoveOrgUserCom
|
||||
return user.ErrUserNotFound
|
||||
}
|
||||
|
||||
// check if user belongs to org
|
||||
var orgUser org.OrgUser
|
||||
if exists, err := sess.Where("org_id=? AND user_id=?", cmd.OrgID, cmd.UserID).Get(&orgUser); err != nil {
|
||||
return err
|
||||
} else if !exists {
|
||||
ss.log.Debug("User not in org, nothing to do", "user_id", cmd.UserID, "org_id", cmd.OrgID)
|
||||
return nil
|
||||
}
|
||||
|
||||
deletes := []string{
|
||||
"DELETE FROM org_user WHERE org_id=? and user_id=?",
|
||||
"DELETE FROM dashboard_acl WHERE org_id=? and user_id = ?",
|
||||
@@ -730,7 +739,7 @@ func (ss *sqlStore) RemoveOrgUser(ctx context.Context, cmd *org.RemoveOrgUserCom
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if cmd.ShouldDeleteOrphanedUser {
|
||||
} else if cmd.ShouldDeleteOrphanedUser && !usr.IsAdmin {
|
||||
// no other orgs, delete the full user
|
||||
if err := ss.deleteUserInTransaction(sess, &user.DeleteUserCommand{UserID: usr.ID}); err != nil {
|
||||
return err
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/grafana/grafana/pkg/services/org"
|
||||
@@ -40,6 +41,7 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
|
||||
orgStore := sqlStore{
|
||||
db: ss,
|
||||
dialect: ss.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
|
||||
t.Run("org not found", func(t *testing.T) {
|
||||
@@ -281,6 +283,7 @@ func TestIntegrationOrgUserDataAccess(t *testing.T) {
|
||||
orgUserStore := sqlStore{
|
||||
db: ss,
|
||||
dialect: ss.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
|
||||
t.Run("org user inserted", func(t *testing.T) {
|
||||
@@ -356,7 +359,7 @@ func TestIntegrationOrgUserDataAccess(t *testing.T) {
|
||||
ss, cfg := db.InitTestDBWithCfg(t)
|
||||
_, usrSvc := createOrgAndUserSvc(t, ss, cfg)
|
||||
ac1cmd := &user.CreateUserCommand{Login: "ac1", Email: "ac1@test.com", Name: "ac1 name"}
|
||||
ac2cmd := &user.CreateUserCommand{Login: "ac2", Email: "ac2@test.com", Name: "ac2 name", IsAdmin: true}
|
||||
ac2cmd := &user.CreateUserCommand{Login: "ac2", Email: "ac2@test.com", Name: "ac2 name"}
|
||||
ac1, err := usrSvc.Create(context.Background(), ac1cmd)
|
||||
require.NoError(t, err)
|
||||
ac2, err := usrSvc.Create(context.Background(), ac2cmd)
|
||||
@@ -483,6 +486,15 @@ func TestIntegrationOrgUserDataAccess(t *testing.T) {
|
||||
err := orgUserStore.Delete(context.Background(), &org.DeleteOrgCommand{ID: ac2.OrgID})
|
||||
require.NoError(t, err)
|
||||
|
||||
// make sure ac2 is in ac1 org
|
||||
cmd := org.AddOrgUserCommand{
|
||||
OrgID: ac1.OrgID,
|
||||
UserID: ac2.ID,
|
||||
Role: org.RoleViewer,
|
||||
}
|
||||
err = orgUserStore.AddOrgUser(context.Background(), &cmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
// remove ac2 user from ac1 org
|
||||
remCmd := org.RemoveOrgUserCommand{OrgID: ac1.OrgID, UserID: ac2.ID, ShouldDeleteOrphanedUser: true}
|
||||
err = orgUserStore.RemoveOrgUser(context.Background(), &remCmd)
|
||||
@@ -568,6 +580,7 @@ func TestIntegrationSQLStore_AddOrgUser(t *testing.T) {
|
||||
orgUserStore := sqlStore{
|
||||
db: store,
|
||||
dialect: store.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
orgSvc, usrSvc := createOrgAndUserSvc(t, store, cfg)
|
||||
|
||||
@@ -633,6 +646,7 @@ func TestIntegration_SQLStore_GetOrgUsers(t *testing.T) {
|
||||
orgUserStore := sqlStore{
|
||||
db: store,
|
||||
dialect: store.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
cfg.IsEnterprise = true
|
||||
defer func() {
|
||||
@@ -751,6 +765,7 @@ func TestIntegration_SQLStore_GetOrgUsers_PopulatesCorrectly(t *testing.T) {
|
||||
orgUserStore := sqlStore{
|
||||
db: store,
|
||||
dialect: store.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
_, usrSvc := createOrgAndUserSvc(t, store, cfg)
|
||||
|
||||
@@ -812,6 +827,7 @@ func TestIntegration_SQLStore_SearchOrgUsers(t *testing.T) {
|
||||
orgUserStore := sqlStore{
|
||||
db: store,
|
||||
dialect: store.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
// orgUserStore.cfg.Skip
|
||||
orgSvc, userSvc := createOrgAndUserSvc(t, store, cfg)
|
||||
@@ -888,12 +904,18 @@ func TestIntegration_SQLStore_RemoveOrgUser(t *testing.T) {
|
||||
orgUserStore := sqlStore{
|
||||
db: store,
|
||||
dialect: store.GetDialect(),
|
||||
log: log.NewNopLogger(),
|
||||
}
|
||||
|
||||
orgSvc, usrSvc := createOrgAndUserSvc(t, store, cfg)
|
||||
|
||||
o, err := orgSvc.CreateWithMember(context.Background(), &org.CreateOrgCommand{Name: MainOrgName})
|
||||
require.NoError(t, err)
|
||||
|
||||
// create 2nd org
|
||||
o2, err := orgSvc.CreateWithMember(context.Background(), &org.CreateOrgCommand{Name: "test org 2"})
|
||||
require.NoError(t, err)
|
||||
|
||||
// create org and admin
|
||||
_, err = usrSvc.Create(context.Background(), &user.CreateUserCommand{
|
||||
Login: "admin",
|
||||
@@ -902,28 +924,116 @@ func TestIntegration_SQLStore_RemoveOrgUser(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// create a user with no org
|
||||
_, err = usrSvc.Create(context.Background(), &user.CreateUserCommand{
|
||||
Login: "user",
|
||||
OrgID: 1,
|
||||
viewer, err := usrSvc.Create(context.Background(), &user.CreateUserCommand{
|
||||
Login: "viewer",
|
||||
SkipOrgSetup: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// create a user with no org
|
||||
viewer2, err := usrSvc.Create(context.Background(), &user.CreateUserCommand{
|
||||
Login: "viewer2",
|
||||
SkipOrgSetup: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// create a user with no org
|
||||
viewer3, err := usrSvc.Create(context.Background(), &user.CreateUserCommand{
|
||||
Login: "viewer3",
|
||||
SkipOrgSetup: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// create an admin user with no org
|
||||
admin, err := usrSvc.Create(context.Background(), &user.CreateUserCommand{
|
||||
Login: "serverAdmin",
|
||||
SkipOrgSetup: true,
|
||||
IsAdmin: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// assign the user to the org
|
||||
err = orgUserStore.AddOrgUser(context.Background(), &org.AddOrgUserCommand{
|
||||
Role: "Viewer",
|
||||
OrgID: 1,
|
||||
UserID: 2,
|
||||
OrgID: o.ID,
|
||||
UserID: viewer.ID,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// assign the admin user to the org
|
||||
err = orgUserStore.AddOrgUser(context.Background(), &org.AddOrgUserCommand{
|
||||
Role: "Admin",
|
||||
OrgID: o.ID,
|
||||
UserID: admin.ID,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// assign the viewer3 user to the 2nd org
|
||||
err = orgUserStore.AddOrgUser(context.Background(), &org.AddOrgUserCommand{
|
||||
Role: "Viewer",
|
||||
OrgID: o2.ID,
|
||||
UserID: viewer3.ID,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// remove the user org
|
||||
err = orgUserStore.RemoveOrgUser(context.Background(), &org.RemoveOrgUserCommand{
|
||||
UserID: 2,
|
||||
OrgID: 1,
|
||||
ShouldDeleteOrphanedUser: false,
|
||||
UserID: viewer.ID,
|
||||
OrgID: o.ID,
|
||||
ShouldDeleteOrphanedUser: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// remove the admin user
|
||||
err = orgUserStore.RemoveOrgUser(context.Background(), &org.RemoveOrgUserCommand{
|
||||
UserID: admin.ID,
|
||||
OrgID: o.ID,
|
||||
ShouldDeleteOrphanedUser: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// remove the viewer3 user from first org they don't belong to
|
||||
err = orgUserStore.RemoveOrgUser(context.Background(), &org.RemoveOrgUserCommand{
|
||||
UserID: viewer3.ID,
|
||||
OrgID: o.ID,
|
||||
ShouldDeleteOrphanedUser: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// remove the viewer2 user from first org they don't belong to
|
||||
err = orgUserStore.RemoveOrgUser(context.Background(), &org.RemoveOrgUserCommand{
|
||||
UserID: viewer2.ID,
|
||||
OrgID: o.ID,
|
||||
ShouldDeleteOrphanedUser: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// verify the user is deleted
|
||||
_, err = usrSvc.GetByID(context.Background(), &user.GetUserByIDQuery{
|
||||
ID: viewer.ID,
|
||||
})
|
||||
require.ErrorIs(t, err, user.ErrUserNotFound)
|
||||
|
||||
// verify the admin user is not deleted
|
||||
usr, err := usrSvc.GetByID(context.Background(), &user.GetUserByIDQuery{
|
||||
ID: admin.ID,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, usr)
|
||||
|
||||
// verify the viewer2 user is not deleted
|
||||
_, err = usrSvc.GetByID(context.Background(), &user.GetUserByIDQuery{
|
||||
ID: viewer2.ID,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, usr)
|
||||
|
||||
// verify the viewer3 user is not deleted
|
||||
_, err = usrSvc.GetByID(context.Background(), &user.GetUserByIDQuery{
|
||||
ID: viewer3.ID,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, usr)
|
||||
}
|
||||
|
||||
func createOrgAndUserSvc(t *testing.T, store db.DB, cfg *setting.Cfg) (org.Service, user.Service) {
|
||||
|
||||
@@ -2088,10 +2088,8 @@ var expAlertmanagerConfigFromAPI = `
|
||||
"name": "dingding_test",
|
||||
"type": "dingding",
|
||||
"disableResolveMessage": false,
|
||||
"settings": {
|
||||
"url": "http://CHANNEL_ADDR/dingding_recv/dingding_test"
|
||||
},
|
||||
"secureFields": {}
|
||||
"settings": {},
|
||||
"secureFields": {"url": true}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
"name": "@grafana-plugins/grafana-azure-monitor-datasource",
|
||||
"description": "Grafana data source for Azure Monitor",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"@kusto/monaco-kusto": "^10.0.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"i18next": "^24.0.0",
|
||||
@@ -25,8 +25,8 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/jest-dom": "6.6.3",
|
||||
"@testing-library/react": "16.2.0",
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
"name": "@grafana-plugins/stackdriver",
|
||||
"description": "Grafana data source for Google Cloud Monitoring",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/google-sdk": "0.1.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"debounce-promise": "3.1.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"i18next": "^24.0.0",
|
||||
@@ -26,8 +26,8 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/jest-dom": "6.6.3",
|
||||
"@testing-library/react": "16.2.0",
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
"name": "@grafana-plugins/grafana-postgresql-datasource",
|
||||
"description": "PostgreSQL data source plugin",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/sql": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/sql": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"lodash": "4.17.21",
|
||||
"react": "18.3.1",
|
||||
"rxjs": "7.8.1",
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/react": "16.2.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"name": "@grafana-plugins/grafana-pyroscope-datasource",
|
||||
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash": "4.17.21",
|
||||
"monaco-editor": "0.34.1",
|
||||
@@ -20,7 +20,7 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/jest-dom": "6.6.3",
|
||||
"@testing-library/react": "16.2.0",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"name": "@grafana-plugins/grafana-testdata-datasource",
|
||||
"description": "Generates test data in different forms",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"d3-random": "^3.0.1",
|
||||
"lodash": "4.17.21",
|
||||
"micro-memoize": "^4.1.2",
|
||||
@@ -21,8 +21,8 @@
|
||||
"uuid": "11.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/react": "16.2.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana-plugins/jaeger",
|
||||
"description": "Jaeger plugin for Grafana",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "workspace:*",
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
"name": "@grafana-plugins/mssql",
|
||||
"description": "MSSQL data source plugin",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/sql": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/sql": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"lodash": "4.17.21",
|
||||
"react": "18.3.1",
|
||||
"rxjs": "7.8.1",
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/react": "16.2.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
"name": "@grafana-plugins/mysql",
|
||||
"description": "MySQL data source plugin",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/plugin-ui": "0.10.5",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/sql": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/sql": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"lodash": "4.17.21",
|
||||
"react": "18.3.1",
|
||||
"rxjs": "7.8.1",
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/e2e-selectors": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/e2e-selectors": "12.0.2",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/react": "16.2.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"name": "@grafana-plugins/parca",
|
||||
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "12.0.1",
|
||||
"@grafana/runtime": "12.0.1",
|
||||
"@grafana/schema": "12.0.1",
|
||||
"@grafana/ui": "12.0.1",
|
||||
"@grafana/data": "12.0.2",
|
||||
"@grafana/runtime": "12.0.2",
|
||||
"@grafana/schema": "12.0.2",
|
||||
"@grafana/ui": "12.0.2",
|
||||
"lodash": "4.17.21",
|
||||
"monaco-editor": "0.34.1",
|
||||
"react": "18.3.1",
|
||||
@@ -18,7 +18,7 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/react": "16.2.0",
|
||||
"@testing-library/user-event": "14.6.1",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana-plugins/tempo",
|
||||
"description": "Grafana plugin for the Tempo data source.",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "workspace:*",
|
||||
@@ -39,7 +39,7 @@
|
||||
"uuid": "11.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@grafana/plugin-configs": "12.0.1",
|
||||
"@grafana/plugin-configs": "12.0.2",
|
||||
"@testing-library/dom": "10.4.0",
|
||||
"@testing-library/jest-dom": "6.6.3",
|
||||
"@testing-library/react": "16.2.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@grafana-plugins/zipkin",
|
||||
"description": "Zipkin plugin for Grafana",
|
||||
"private": true,
|
||||
"version": "12.0.1",
|
||||
"version": "12.0.2",
|
||||
"dependencies": {
|
||||
"@emotion/css": "11.13.5",
|
||||
"@grafana/data": "workspace:*",
|
||||
|
||||
@@ -2476,13 +2476,13 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-azure-monitor-datasource@workspace:public/app/plugins/datasource/azuremonitor"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@kusto/monaco-kusto": "npm:^10.0.0"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/jest-dom": "npm:6.6.3"
|
||||
@@ -2520,13 +2520,13 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-postgresql-datasource@workspace:public/app/plugins/datasource/grafana-postgresql-datasource"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/sql": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/sql": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2551,11 +2551,11 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-pyroscope-datasource@workspace:public/app/plugins/datasource/grafana-pyroscope-datasource"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/jest-dom": "npm:6.6.3"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
@@ -2591,12 +2591,12 @@ __metadata:
|
||||
resolution: "@grafana-plugins/grafana-testdata-datasource@workspace:public/app/plugins/datasource/grafana-testdata-datasource"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2672,13 +2672,13 @@ __metadata:
|
||||
resolution: "@grafana-plugins/mssql@workspace:public/app/plugins/datasource/mssql"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/sql": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/sql": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2703,13 +2703,13 @@ __metadata:
|
||||
resolution: "@grafana-plugins/mysql@workspace:public/app/plugins/datasource/mysql"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/sql": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/sql": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2734,11 +2734,11 @@ __metadata:
|
||||
resolution: "@grafana-plugins/parca@workspace:public/app/plugins/datasource/parca"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
"@testing-library/user-event": "npm:14.6.1"
|
||||
@@ -2766,14 +2766,14 @@ __metadata:
|
||||
resolution: "@grafana-plugins/stackdriver@workspace:public/app/plugins/datasource/cloud-monitoring"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/google-sdk": "npm:0.1.2"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/jest-dom": "npm:6.6.3"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
@@ -2818,7 +2818,7 @@ __metadata:
|
||||
"@grafana/lezer-traceql": "npm:0.0.21"
|
||||
"@grafana/monaco-logql": "npm:^0.0.8"
|
||||
"@grafana/o11y-ds-frontend": "workspace:*"
|
||||
"@grafana/plugin-configs": "npm:12.0.1"
|
||||
"@grafana/plugin-configs": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "workspace:*"
|
||||
"@grafana/schema": "workspace:*"
|
||||
@@ -2931,12 +2931,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/data@npm:12.0.1, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
|
||||
"@grafana/data@npm:12.0.2, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/data@workspace:packages/grafana-data"
|
||||
dependencies:
|
||||
"@braintree/sanitize-url": "npm:7.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@rollup/plugin-node-resolve": "npm:16.0.0"
|
||||
"@types/d3-interpolate": "npm:^3.0.0"
|
||||
@@ -2984,7 +2984,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/e2e-selectors@npm:12.0.1, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
|
||||
"@grafana/e2e-selectors@npm:12.0.2, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors"
|
||||
dependencies:
|
||||
@@ -3087,9 +3087,9 @@ __metadata:
|
||||
"@babel/preset-env": "npm:7.26.9"
|
||||
"@babel/preset-react": "npm:7.26.3"
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@leeoniya/ufuzzy": "npm:1.0.18"
|
||||
"@rollup/plugin-node-resolve": "npm:16.0.0"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
@@ -3196,13 +3196,13 @@ __metadata:
|
||||
resolution: "@grafana/o11y-ds-frontend@workspace:packages/grafana-o11y-ds-frontend"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/jest-dom": "npm:^6.1.2"
|
||||
"@testing-library/react": "npm:16.2.0"
|
||||
@@ -3226,7 +3226,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/plugin-configs@npm:12.0.1, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
|
||||
"@grafana/plugin-configs@npm:12.0.2, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/plugin-configs@workspace:packages/grafana-plugin-configs"
|
||||
dependencies:
|
||||
@@ -3326,13 +3326,13 @@ __metadata:
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@floating-ui/react": "npm:0.27.7"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@hello-pangea/dnd": "npm:17.0.0"
|
||||
"@leeoniya/ufuzzy": "npm:1.0.18"
|
||||
"@lezer/common": "npm:1.2.3"
|
||||
@@ -3388,16 +3388,16 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/runtime@npm:12.0.1, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
|
||||
"@grafana/runtime@npm:12.0.2, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/runtime@workspace:packages/grafana-runtime"
|
||||
dependencies:
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/faro-web-sdk": "npm:^1.13.2"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@rollup/plugin-node-resolve": "npm:16.0.0"
|
||||
"@rollup/plugin-terser": "npm:0.4.4"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
@@ -3510,7 +3510,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/schema@npm:12.0.1, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
|
||||
"@grafana/schema@npm:12.0.2, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/schema@workspace:packages/grafana-schema"
|
||||
dependencies:
|
||||
@@ -3528,17 +3528,17 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@grafana/sql@npm:12.0.1, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
|
||||
"@grafana/sql@npm:12.0.2, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/sql@workspace:packages/grafana-sql"
|
||||
dependencies:
|
||||
"@emotion/css": "npm:11.13.5"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/plugin-ui": "npm:0.10.5"
|
||||
"@grafana/runtime": "npm:12.0.1"
|
||||
"@grafana/runtime": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@grafana/ui": "npm:12.0.1"
|
||||
"@grafana/ui": "npm:12.0.2"
|
||||
"@react-awesome-query-builder/ui": "npm:6.6.14"
|
||||
"@testing-library/dom": "npm:10.4.0"
|
||||
"@testing-library/jest-dom": "npm:^6.1.2"
|
||||
@@ -3579,7 +3579,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/ui@npm:12.0.1, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
|
||||
"@grafana/ui@npm:12.0.2, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@grafana/ui@workspace:packages/grafana-ui"
|
||||
dependencies:
|
||||
@@ -3589,10 +3589,10 @@ __metadata:
|
||||
"@emotion/serialize": "npm:1.3.3"
|
||||
"@faker-js/faker": "npm:^9.0.0"
|
||||
"@floating-ui/react": "npm:0.27.7"
|
||||
"@grafana/data": "npm:12.0.1"
|
||||
"@grafana/e2e-selectors": "npm:12.0.1"
|
||||
"@grafana/data": "npm:12.0.2"
|
||||
"@grafana/e2e-selectors": "npm:12.0.2"
|
||||
"@grafana/faro-web-sdk": "npm:^1.13.2"
|
||||
"@grafana/schema": "npm:12.0.1"
|
||||
"@grafana/schema": "npm:12.0.2"
|
||||
"@grafana/tsconfig": "npm:^2.0.0"
|
||||
"@hello-pangea/dnd": "npm:17.0.0"
|
||||
"@leeoniya/ufuzzy": "npm:1.0.18"
|
||||
|
||||
Reference in New Issue
Block a user