* refactor(frontend): rename all @grafana/data/src imports to @grafana/data
* feat(grafana-data): introduce internal entrypoint for sharing code only with grafana
* feat(grafana-data): add test entrypoint for data test utils usage in core
* refactor(frontend): update import paths to use grafana/data exports entrypoints
* docs(grafana-data): update comment in internal/index.ts
* refactor(frontend): prefer public namespaced exports over re-exporting via internal
* chore(frontend): fix a couple more weird paths that typescript complains about
* Live: allow publishing over Centrifuge subscription
Currently when publishing over a Grafana Live channel,
the data is sent over the HTTP API. This works fine when
there is only a single Grafana instance running, but
when there are multiple instances, the data will only hit
one instance, which is often not desired: sometimes you need
to guarantee that the data appears on the same instance that
the frontend is connected to.
An example of this is in the Grafana LLM app when running the
MCP server. The MCP protocol is stateful; users subscribe to
a channel to get a long-lived stream of server-sent events,
then send subsequent requests to the server to get further
results. If there are multiple Grafana instances running then
the requests are likely to land on an instance other than the
one that the user is connected to.
This commit adds a new option to the `GrafanaLiveSrv` interface
that allows the user to publish data over the Centrifuge
subscription instead of the HTTP API. This is not the default and
should rarely be used, but is required to fulfil certain use cases.
* Address nits from code review
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
---------
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
* refactor(frontend): rename all @grafana/data/src imports to @grafana/data
* feat(grafana-data): introduce internal entrypoint for sharing code only with grafana
* feat(grafana-data): add test entrypoint for data test utils usage in core
* refactor(frontend): update import paths to use grafana/data exports entrypoints
* docs(grafana-data): update comment in internal/index.ts
* refactor(frontend): prefer public namespaced exports over re-exporting via internal
* initial attempt at body scrolling
* fix login layout
* minor fixes
* "fix" some fixed position stuff
* remember scroll position in dashboard page
* fix unit tests
* expose chrome header height in runtime and fix connections sticky header
* fix panel edit in scenes
* fix unit tests
* make useChromeHeaderHeight backwards compatible, fix plugin details double scrollbar
* fix sticky behaviour in explore metrics
* handle when undefined
* deprecate scrollRef/scrollTop
* fix extra overflow on firefox
* update eslint, tsconfig + esbuild to handle new jsx transform
* remove thing that breaks the new jsx transform
* remove react imports
* adjust grafana-icons build
* is this the correct syntax?
* try this
* well this was much easier than expected...
* change grafana-plugin-configs webpack config
* fixes
* fix lockfile
* fix 2 more violations
* use path.resolve instead of require.resolve
* remove react import
* fix react imports
* more fixes
* remove React import
* remove import React from docs
* remove another react import
* fix some types
* more type updates
* some more fixes
* more changes
* string instead of unknown
* more like original logic
* remove outdated comment
* update betterer
* fix some event.target as stuff
* segment async story
* segmentinput story
* SegmentSelect
* fixing some tests
* more test fixes
* undo change to SilencesFilter
Provide new feature in Prometheus dashboards to cache queried time series data, modify requests to not include previously cached data in order to improve dashboard refresh performance.
Co-authored-by: Galen <galen.kistler@grafana.com>
Co-authored-by: Leon <leon.sorokin@grafana.com>
* fix any's in tests
* fix more any's in tests
* more test type fixes
* fixing any's in tests part 3
* more test type fixes
* fixing test any's p5
* some tidy up
* fix template_srv
* Update dependency comlink to v4.4.0
* explicitly mark the error as unknown
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Update jest monorepo to v29
* update snapshots + wrap test in act
* fix linting errors: jest.mocked now defaults to deep mocking
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Revert "Chore: Bump terser to fix security vulnerability (#53052)"
This reverts commit 7ae74d2a18f961dfc868bcab4c380ef910e36884.
* feat: use tsc and rollup directly with esbuild and publishConfig, files props
* refactor(grafana-data): fix isolatedModules re-export type error
* refactor(grafana-data): import paths from src not package name
* refactor(rollup): fix dts output.file
* chore(grafana-schema): delete dashboard_experimental.gen.ts - cannot work with isolatedModules
* refactor(grafana-e2e-selectors): fix export types isolatedModules error
* refactor(grafana-runtime): fix isolatedModules re-export type error
* refactor(grafana-ui): fix isolatedModules re-export type error
* feat(grafana-ui): use named imports for treeshaking
* refactor(grafana-ui): use named imports for treeshaking
* feat: react and react-dom as peerDeps for packages
* feat(grafana-ui): emotion packages as peerDeps
* feat(grafana-e2e): use tsc, rollup, esbuild for bundling
* chore(packages): clean up redundant dependencies
* chore(toolkit): deprecate unused package:build task
* chore(schema): put back dashboard_experimental and exclude to prevent isolatedModules error
* docs(packages): update readme
* chore(storybook): disable isolatedModules for builds
* chore: relax peerDeps for emotion and react
* revert(grafana-ui): put @emotion dependencies back
* refactor: replace relative package imports with package name
* build(packages): set emitDeclaration false for typecheck scripts to work
* test(publicdashboarddatasource): move test next to implementation. try to appease the betterer gods
* chore(storybook): override ts-node config for storybook compilation
* refactor(grafana-data): use ternary so babel doesnt complain about expecting flow types
* chore(toolkit): prefer files and publishConfig package.json props over copying
* build(npm): remove --contents dist arg from publishing commands
* chore(packages): introduce sideEffects prop to package.json to hint package can be treeshaken
* chore(packages): remove redundant index.js files
* feat(packages): set publishConfig.access to public
* feat(packages): use yarn berry and npm for packaging and publishing
* refactor(packages): simplify rollup configs
* chore(schema): add comment explaining need to exclude dashboard_experimental
* revert(toolkit): put back clean to prevent cli failures
* ci(packages): run packages:pack before a canary publish
* chore(gitignore): add npm-artifacts directory to ignore list
* test(publicdashboarddatasource): fix module mocking
* chore(packages): delete package.tgz when running clean
* chore(grafana-data): move dependencies from devDeps to prevent build resolution errors
* Auth: check of auth_token in url and resolve user if present
* check if auth_token is passed in url
* Auth: Pass auth_token for request if present in path
* no need to decode token in index
* temp
* use loadURLToken and set authorization header
* cache token in memory and strip it from url
* Use loadURLToken
* Keep token in url
* strip sensitive query strings from url used by context logger
* adapt login by url to jwt token
* add jwt iframe devenv
* add jwt iframe devenv instructions
* add access note
* add test for cleaning request
* ensure jwt token is not carried into handlers
* do not reshuffle queries, might be important
* add correct db dump location
* prefer set token instead of cached token
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>