{ "author": "Grafana Labs", "license": "AGPL-3.0-only", "private": true, "name": "grafana", "version": "11.4.0-pre", "repository": "github:grafana/grafana", "scripts": { "build": "NODE_ENV=production nx exec --verbose -- webpack --config scripts/webpack/webpack.prod.js --progress", "build:nominify": "yarn run build -- --env noMinify=1", "dev": "NODE_ENV=dev nx exec -- webpack --config scripts/webpack/webpack.dev.js", "e2e": "./e2e/start-and-run-suite", "e2e:scenes": "./e2e/start-and-run-suite scenes", "e2e:debug": "./e2e/start-and-run-suite debug", "e2e:dev": "./e2e/start-and-run-suite dev", "e2e:benchmark:live": "./e2e/start-and-run-suite benchmark live", "e2e:enterprise": "./e2e/start-and-run-suite enterprise", "e2e:enterprise:dev": "./e2e/start-and-run-suite enterprise dev", "e2e:enterprise:debug": "./e2e/start-and-run-suite enterprise debug", "e2e:playwright": "yarn playwright test", "e2e:playwright:server": "yarn e2e:plugin:build && ./e2e/plugin-e2e/start-and-run-suite", "e2e:storybook": "PORT=9001 ./e2e/run-suite storybook true", "e2e:plugin:build": "nx run-many -t build --projects='@test-plugins/*'", "e2e:plugin:build:dev": "nx run-many -t dev --projects='@test-plugins/*' --maxParallel=100", "test": "jest --notify --watch", "test:coverage": "jest --coverage", "test:coverage:changes": "jest --coverage --changedSince=origin/main", "test:accessibility-report": "./scripts/generate-a11y-report.sh", "lint": "yarn run lint:ts && yarn run lint:sass", "lint:ts": "eslint . --ext .js,.tsx,.ts --cache", "lint:sass": "yarn stylelint '{public/sass,packages}/**/*.scss' --cache", "test:ci": "mkdir -p reports/junit && JEST_JUNIT_OUTPUT_DIR=reports/junit jest --ci --reporters=default --reporters=jest-junit -w ${TEST_MAX_WORKERS:-100%}", "lint:fix": "yarn lint:ts --fix", "packages:build": "nx run-many -t build --projects='tag:scope:package'", "packages:clean": "rimraf ./npm-artifacts && nx run-many -t clean --projects='tag:scope:package' --maxParallel=100", "packages:prepare": "lerna version --no-push --no-git-tag-version --force-publish --exact", "packages:pack": "mkdir -p ./npm-artifacts && lerna exec --no-private -- yarn pack --out \"../../npm-artifacts/%s-%v.tgz\"", "packages:typecheck": "nx run-many -t typecheck --projects='tag:scope:package'", "prettier:check": "prettier --check --list-different=false --log-level=warn \"**/*.{ts,tsx,scss,md,mdx,json}\"", "prettier:checkDocs": "prettier --check --list-different=false --log-level=warn \"docs/**/*.md\" \"*.md\" \"packages/**/*.{ts,tsx,scss,md,mdx,json}\"", "prettier:write": "prettier --list-different \"**/*.{js,ts,tsx,scss,md,mdx,json}\" --write", "start": "NODE_ENV=dev nx exec -- webpack --config scripts/webpack/webpack.dev.js --watch", "start:noTsCheck": "yarn start -- --env noTsCheck=1", "start:noLint": "yarn start -- --env noTsCheck=1 --env noLint=1", "stats": "webpack --mode production --config scripts/webpack/webpack.prod.js --profile --json > compilation-stats.json", "storybook": "yarn workspace @grafana/ui storybook --ci", "storybook:build": "yarn workspace @grafana/ui storybook:build", "themes-generate": "esbuild --target=es6 ./scripts/cli/generateSassVariableFiles.ts --bundle --platform=node --tsconfig=./scripts/cli/tsconfig.json | node", "themes:usage": "eslint . --ext .tsx,.ts --ignore-pattern '*.test.ts*' --ignore-pattern '*.spec.ts*' --cache --rule '{ @grafana/theme-token-usage: \"error\" }'", "typecheck": "tsc --noEmit && yarn run packages:typecheck", "plugins:build-bundled": "find plugins-bundled -name package.json -not -path '*/node_modules/*' -execdir yarn build \\;", "watch": "yarn start -d watch,start core:start --watchTheme", "ci:test-frontend": "yarn run test:ci", "i18n:stats": "node ./scripts/cli/reportI18nStats.mjs", "betterer": "betterer", "betterer:json": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/bettererResultsToJson.ts", "betterer:merge": "betterer merge", "betterer:stats": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/reportBettererStats.ts", "betterer:issues": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/generateBettererIssues.ts", "generate-icons-bundle-cache-file": "node ./scripts/generate-icon-bundle.js", "plugin:build": "nx run-many -t build --projects='tag:scope:plugin'", "plugin:build:commit": "nx run-many -t build:commit --projects='tag:scope:plugin'", "plugin:build:dev": "nx run-many -t dev --projects='tag:scope:plugin' --maxParallel=100", "generate-icons": "nx run grafana-icons:generate", "generate-apis": "rtk-query-codegen-openapi ./scripts/generate-rtk-apis.ts" }, "grafana": { "whatsNewUrl": "https://grafana.com/docs/grafana/next/whatsnew/whats-new-in-v11-4/", "releaseNotesUrl": "https://grafana.com/docs/grafana/next/release-notes/" }, "devDependencies": { "@babel/core": "7.25.9", "@babel/preset-env": "7.25.9", "@babel/runtime": "7.25.9", "@betterer/betterer": "5.4.0", "@betterer/cli": "5.4.0", "@betterer/eslint": "5.4.0", "@cypress/webpack-preprocessor": "6.0.2", "@emotion/eslint-plugin": "11.12.0", "@grafana/eslint-config": "7.0.0", "@grafana/eslint-plugin": "link:./packages/grafana-eslint-rules", "@grafana/plugin-e2e": "^1.8.3", "@grafana/tsconfig": "^2.0.0", "@manypkg/get-packages": "^2.2.0", "@playwright/test": "1.48.2", "@pmmmwh/react-refresh-webpack-plugin": "0.5.15", "@react-types/button": "3.10.0", "@react-types/menu": "3.9.12", "@react-types/overlays": "3.8.10", "@react-types/shared": "3.25.0", "@rtk-query/codegen-openapi": "^1.2.0", "@rtsao/plugin-proposal-class-properties": "7.0.1-patch.1", "@swc/core": "1.4.2", "@swc/helpers": "0.5.13", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/react": "16.0.1", "@testing-library/user-event": "14.5.2", "@types/angular": "1.8.9", "@types/angular-route": "1.7.6", "@types/babel__core": "^7", "@types/babel__preset-env": "^7", "@types/chance": "^1.1.3", "@types/common-tags": "^1.8.0", "@types/d3": "7.4.3", "@types/d3-force": "^3.0.0", "@types/d3-scale-chromatic": "3.0.3", "@types/debounce-promise": "3.1.9", "@types/diff": "^5", "@types/eslint": "9.6.1", "@types/eslint-scope": "^3.7.7", "@types/file-saver": "2.0.7", "@types/glob": "^8.0.0", "@types/google.analytics": "^0.0.46", "@types/gtag.js": "^0.0.20", "@types/history": "4.7.11", "@types/ini": "^4", "@types/jest": "29.5.14", "@types/jquery": "3.5.32", "@types/js-yaml": "^4.0.5", "@types/jsurl": "^1.2.28", "@types/lodash": "4.17.12", "@types/logfmt": "^1.2.3", "@types/lucene": "^2", "@types/node": "20.16.15", "@types/node-forge": "^1", "@types/ol-ext": "npm:@siedlerchr/types-ol-ext@3.2.4", "@types/pluralize": "^0.0.33", "@types/prismjs": "1.26.5", "@types/react": "18.3.3", "@types/react-dom": "18.2.25", "@types/react-grid-layout": "1.3.5", "@types/react-highlight-words": "0.20.0", "@types/react-resizable": "3.0.8", "@types/react-router": "5.1.20", "@types/react-router-dom": "5.3.3", "@types/react-table": "7.7.20", "@types/react-test-renderer": "18.3.0", "@types/react-transition-group": "4.4.11", "@types/react-virtualized-auto-sizer": "1.0.4", "@types/react-window": "1.8.8", "@types/react-window-infinite-loader": "^1", "@types/redux-mock-store": "1.0.6", "@types/semver": "7.5.8", "@types/slate": "0.47.11", "@types/slate-plain-serializer": "0.7.5", "@types/slate-react": "0.22.9", "@types/swagger-ui-react": "4.18.3", "@types/systemjs": "6.15.1", "@types/tinycolor2": "1.4.6", "@types/uuid": "9.0.8", "@types/webpack-assets-manifest": "^5", "@types/webpack-env": "^1.18.4", "@types/yargs": "17.0.33", "@typescript-eslint/eslint-plugin": "6.21.0", "@typescript-eslint/parser": "6.21.0", "autoprefixer": "10.4.20", "babel-loader": "9.2.1", "blob-polyfill": "9.0.20240710", "browserslist": "^4.21.4", "chance": "^1.0.10", "chrome-remote-interface": "0.33.2", "codeowners": "^5.1.1", "copy-webpack-plugin": "12.0.2", "core-js": "3.38.1", "css-loader": "7.1.2", "css-minimizer-webpack-plugin": "6.0.0", "cypress": "13.10.0", "cypress-file-upload": "5.0.8", "cypress-recurse": "^1.35.3", "esbuild": "0.24.0", "esbuild-loader": "4.2.2", "esbuild-plugin-browserslist": "^0.15.0", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "28.8.3", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jsdoc": "48.11.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-lodash": "7.4.0", "eslint-plugin-no-barrel-files": "^1.1.0", "eslint-plugin-react": "7.37.2", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-testing-library": "^6.2.2", "eslint-scope": "^8.0.0", "eslint-webpack-plugin": "4.2.0", "expose-loader": "5.0.0", "fork-ts-checker-webpack-plugin": "9.0.2", "glob": "11.0.0", "html-loader": "5.1.0", "html-webpack-plugin": "5.6.3", "http-server": "14.1.1", "i18next-parser": "9.0.2", "ini": "^4.1.3", "jest": "29.7.0", "jest-canvas-mock": "2.5.2", "jest-date-mock": "1.0.10", "jest-environment-jsdom": "29.7.0", "jest-fail-on-console": "3.3.1", "jest-junit": "16.0.0", "jest-matcher-utils": "29.7.0", "jest-watch-typeahead": "^2.2.2", "knip": "^5.10.0", "lerna": "8.1.8", "mini-css-extract-plugin": "2.9.1", "msw": "2.4.13", "mutationobserver-shim": "0.3.7", "ngtemplate-loader": "2.1.0", "node-notifier": "10.0.1", "nx": "19.8.2", "postcss": "8.4.47", "postcss-loader": "8.1.1", "postcss-reporter": "7.1.0", "postcss-scss": "4.0.9", "prettier": "3.3.3", "pseudoizer": "^0.1.0", "react-refresh": "0.14.0", "react-select-event": "5.5.1", "react-test-renderer": "18.2.0", "redux-mock-store": "1.5.5", "rimraf": "6.0.1", "rudder-sdk-js": "2.48.22", "sass": "1.79.5", "sass-loader": "16.0.2", "smtp-tester": "^2.1.0", "style-loader": "4.0.0", "stylelint": "16.9.0", "stylelint-config-sass-guidelines": "11.1.0", "terser-webpack-plugin": "5.3.10", "testing-library-selector": "0.3.1", "tracelib": "1.0.1", "ts-jest": "29.2.5", "ts-node": "10.9.2", "typescript": "5.5.4", "webpack": "5.95.0", "webpack-assets-manifest": "^5.1.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.1.0", "webpack-manifest-plugin": "5.0.0", "webpack-merge": "5.10.0", "webpackbar": "^6.0.0", "yaml": "^2.0.0", "yargs": "^17.5.1" }, "dependencies": { "@emotion/css": "11.13.4", "@emotion/react": "11.13.3", "@fingerprintjs/fingerprintjs": "^3.4.2", "@floating-ui/react": "0.26.25", "@formatjs/intl-durationformat": "^0.5.0", "@glideapps/glide-data-grid": "^6.0.0", "@grafana/aws-sdk": "0.5.0", "@grafana/azure-sdk": "0.0.4", "@grafana/data": "workspace:*", "@grafana/e2e-selectors": "workspace:*", "@grafana/experimental": "2.1.2", "@grafana/faro-core": "^1.3.6", "@grafana/faro-web-sdk": "^1.3.6", "@grafana/faro-web-tracing": "^1.8.2", "@grafana/flamegraph": "workspace:*", "@grafana/google-sdk": "0.1.2", "@grafana/lezer-logql": "0.2.6", "@grafana/monaco-logql": "^0.0.7", "@grafana/o11y-ds-frontend": "workspace:*", "@grafana/prometheus": "workspace:*", "@grafana/runtime": "workspace:*", "@grafana/saga-icons": "workspace:*", "@grafana/scenes": "5.20.4", "@grafana/scenes-react": "5.20.4", "@grafana/schema": "workspace:*", "@grafana/sql": "workspace:*", "@grafana/ui": "workspace:*", "@hello-pangea/dnd": "17.0.0", "@kusto/monaco-kusto": "^10.0.0", "@leeoniya/ufuzzy": "1.0.14", "@lezer/common": "1.2.3", "@lezer/highlight": "1.2.1", "@lezer/lr": "1.3.3", "@locker/near-membrane-dom": "0.13.6", "@locker/near-membrane-shared": "0.13.6", "@locker/near-membrane-shared-dom": "0.13.6", "@msagl/core": "^1.1.19", "@msagl/parser": "^1.1.19", "@opentelemetry/api": "1.9.0", "@opentelemetry/exporter-collector": "0.25.0", "@opentelemetry/semantic-conventions": "1.27.0", "@popperjs/core": "2.11.8", "@react-aria/dialog": "3.5.19", "@react-aria/focus": "3.18.4", "@react-aria/overlays": "3.23.4", "@react-aria/utils": "3.25.3", "@react-awesome-query-builder/ui": "6.6.3", "@reduxjs/toolkit": "2.2.8", "@testing-library/react-hooks": "^8.0.1", "@visx/event": "3.3.0", "@visx/gradient": "3.3.0", "@visx/group": "3.3.0", "@visx/shape": "3.5.0", "@visx/tooltip": "3.3.0", "@welldone-software/why-did-you-render": "8.0.3", "angular": "1.8.3", "angular-bindonce": "0.3.1", "angular-route": "1.8.3", "angular-sanitize": "1.8.3", "ansicolor": "1.1.100", "baron": "3.0.3", "brace": "0.11.1", "centrifuge": "5.2.2", "classnames": "2.5.1", "combokeys": "^3.0.0", "comlink": "4.4.1", "common-tags": "1.8.2", "d3": "7.9.0", "d3-force": "3.0.0", "d3-scale-chromatic": "3.1.0", "dangerously-set-html-content": "1.1.0", "date-fns": "3.6.0", "debounce-promise": "3.1.2", "diff": "^5.1.0", "fast-deep-equal": "^3.1.3", "fast-json-patch": "3.1.1", "file-saver": "2.0.5", "history": "4.10.1", "i18next": "^23.0.0", "i18next-browser-languagedetector": "^7.0.2", "immer": "10.1.1", "immutable": "4.3.7", "jquery": "3.7.1", "js-yaml": "^4.1.0", "json-markup": "^1.1.0", "json-source-map": "0.6.1", "jsurl": "^0.1.5", "kbar": "0.1.0-beta.45", "leven": "^4.0.0", "lodash": "4.17.21", "logfmt": "^1.3.2", "lru-cache": "10.2.2", "lru-memoize": "^1.1.0", "lucene": "^2.1.1", "marked": "12.0.2", "memoize-one": "6.0.0", "micro-memoize": "^4.1.2", "ml-regression-polynomial": "^3.0.0", "ml-regression-simple-linear": "^3.0.0", "moment": "2.30.1", "moment-timezone": "0.5.46", "monaco-editor": "0.34.1", "moveable": "0.53.0", "nanoid": "^5.0.4", "node-forge": "^1.3.1", "ol": "7.4.0", "ol-ext": "4.0.24", "pluralize": "^8.0.0", "prismjs": "1.29.0", "rc-slider": "11.1.7", "rc-time-picker": "3.7.3", "rc-tree": "5.9.0", "re-resizable": "6.10.0", "react": "18.2.0", "react-diff-viewer": "^3.1.1", "react-dom": "18.2.0", "react-draggable": "4.4.6", "react-dropzone": "^14.2.3", "react-grid-layout": "patch:react-grid-layout@npm%3A1.4.4#~/.yarn/patches/react-grid-layout-npm-1.4.4-4024c5395b.patch", "react-highlight-words": "0.20.0", "react-hook-form": "^7.49.2", "react-i18next": "^14.0.0", "react-inlinesvg": "3.0.2", "react-loading-skeleton": "3.5.0", "react-moveable": "0.56.0", "react-redux": "9.1.2", "react-resizable": "3.0.5", "react-responsive-carousel": "^3.2.23", "react-router": "5.3.3", "react-router-dom": "5.3.3", "react-router-dom-v5-compat": "^6.26.1", "react-select": "5.8.1", "react-split-pane": "0.1.92", "react-table": "7.8.0", "react-transition-group": "4.4.5", "react-use": "17.5.1", "react-virtual": "2.10.4", "react-virtualized-auto-sizer": "1.0.24", "react-window": "1.8.10", "react-window-infinite-loader": "1.0.9", "react-zoom-pan-pinch": "^3.3.0", "reduce-reducers": "^1.0.4", "redux": "5.0.1", "redux-thunk": "3.1.0", "regenerator-runtime": "0.14.1", "reselect": "5.1.1", "rxjs": "7.8.1", "selecto": "1.26.3", "semver": "7.6.3", "slate": "0.47.9", "slate-plain-serializer": "0.7.13", "slate-react": "0.22.10", "swagger-ui-react": "5.17.14", "symbol-observable": "4.0.0", "systemjs": "6.15.1", "systemjs-cjs-extra": "0.2.1", "tether-drop": "https://github.com/torkelo/drop", "tinycolor2": "1.6.0", "tslib": "2.7.0", "tween-functions": "^1.2.0", "type-fest": "^4.18.2", "uplot": "1.6.31", "uuid": "9.0.1", "visjs-network": "4.25.0", "whatwg-fetch": "3.6.20", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz" }, "resolutions": { "underscore": "1.13.7", "@types/slate": "0.47.11", "ngtemplate-loader/loader-utils": "^2.0.0", "semver@~7.0.0": "7.5.4", "semver@7.3.4": "7.5.4", "debug@npm:^0.7.2": "2.6.9", "debug@npm:^0.7.4": "2.6.9", "slate-dev-environment@^0.2.2": "patch:slate-dev-environment@npm:0.2.5#.yarn/patches/slate-dev-environment-npm-0.2.5-9aeb7da7b5.patch", "react-split-pane@0.1.92": "patch:react-split-pane@npm:0.1.92#.yarn/patches/react-split-pane-npm-0.1.92-93dbf51dff.patch", "history@4.10.1": "patch:history@npm%3A4.10.1#./.yarn/patches/history-npm-4.10.1-ee217563ae.patch", "history@^4.9.0": "patch:history@npm%3A4.10.1#./.yarn/patches/history-npm-4.10.1-ee217563ae.patch", "redux": "^5.0.0", "@storybook/blocks@npm:8.1.6": "patch:@storybook/blocks@npm%3A8.1.6#~/.yarn/patches/@storybook-blocks-npm-8.1.6-892f57a6d7.patch", "react-grid-layout": "patch:react-grid-layout@npm%3A1.4.4#~/.yarn/patches/react-grid-layout-npm-1.4.4-4024c5395b.patch", "@grafana/scenes/@grafana/e2e-selectors": "workspace:*", "@grafana/scenes-react/@grafana/e2e-selectors": "workspace:*" }, "workspaces": { "packages": [ "packages/*", "packages/!(grafana-icons)/**", "plugins-bundled/internal/*", "public/app/plugins/*/*", "e2e/test-plugins/*" ] }, "engines": { "node": ">= 20" }, "packageManager": "yarn@4.5.1", "dependenciesMeta": { "prettier@3.3.3": { "unplugged": true } }, "msw": { "workerDirectory": [ "public" ] } }