From d602e79e9aeb9c2b455351a7b4653cb9b7799146 Mon Sep 17 00:00:00 2001 From: ismail simsek Date: Tue, 15 Jul 2025 16:20:09 +0200 Subject: [PATCH] Chore: Remove unnecessary exports (#108124) * no unnecessary exports * needs exports * put query builder types back * put types back * betterer --- .betterer.results | 3 +- .../src/components/VariableQueryEditor.tsx | 2 +- .../src/components/cancelable-promise.ts | 2 +- .../data_provider.ts | 2 +- .../monaco-completion-provider/validation.ts | 2 +- .../src/configuration/ConfigEditor.tsx | 2 +- .../DataSourceHttpSettingsOverhaul.tsx | 2 +- .../src/language_provider.ts | 4 +- .../grafana-prometheus/src/language_utils.ts | 16 ++-- .../components/LabelFilterItem.tsx | 2 +- .../components/LabelParamEditor.tsx | 2 +- .../components/MetricsLabelsSection.tsx | 4 +- .../querybuilder/components/NestedQuery.tsx | 2 +- .../components/NestedQueryList.tsx | 2 +- .../components/PromQueryBuilder.tsx | 2 +- .../components/PromQueryBuilderContainer.tsx | 4 +- .../components/PromQueryBuilderExplained.tsx | 2 +- .../components/PromQueryBuilderOptions.tsx | 11 +-- .../components/PromQueryLegendEditor.tsx | 2 +- .../querybuilder/components/QueryPreview.tsx | 2 +- .../components/metrics-modal/FeedbackLink.tsx | 2 +- .../components/metrics-modal/MetricsModal.tsx | 32 ++++---- .../components/metrics-modal/shared/types.ts | 2 +- .../components/metrics-modal/state/helpers.ts | 39 ++-------- .../components/metrics-modal/types.ts | 14 ---- .../components/metrics-modal/uFuzzy.ts | 2 +- .../src/querybuilder/hooks/useFlag.ts | 2 +- .../src/querybuilder/operations.ts | 6 +- .../src/querybuilder/parsing.ts | 2 +- .../src/querybuilder/parsingUtils.ts | 2 +- .../querybuilder/shared/OperationEditor.tsx | 2 +- .../shared/OperationExplainedBox.tsx | 2 +- .../querybuilder/shared/OperationHeader.tsx | 2 +- .../shared/OperationInfoButton.tsx | 2 +- .../src/querybuilder/shared/OperationList.tsx | 2 +- .../shared/OperationListExplained.tsx | 2 +- .../querybuilder/shared/QueryBuilderHints.tsx | 2 +- .../shared/QueryEditorModeToggle.tsx | 2 +- .../querybuilder/shared/QueryHeaderSwitch.tsx | 2 +- .../querybuilder/shared/QueryOptionGroup.tsx | 2 +- .../src/querybuilder/shared/RawQuery.tsx | 2 +- .../querybuilder/shared/rendering/query.ts | 2 +- .../src/querybuilder/shared/types.ts | 22 +----- .../src/querybuilder/types.ts | 7 ++ .../src/querycache/QueryCache.ts | 2 +- .../src/querycache/QueryCacheTestData.ts | 4 +- .../src/test/helpers/selectOptionInTest.ts | 11 --- .../src/test/mocks/datasource.ts | 78 +------------------ 48 files changed, 83 insertions(+), 238 deletions(-) diff --git a/.betterer.results b/.betterer.results index db0480152ab..bacb77a2253 100644 --- a/.betterer.results +++ b/.betterer.results @@ -476,8 +476,7 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "2"] ], "packages/grafana-prometheus/src/querybuilder/shared/types.ts:5381": [ - [0, 0, 0, "Unexpected any. Specify a different type.", "0"], - [0, 0, 0, "Unexpected any. Specify a different type.", "1"] + [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], "packages/grafana-prometheus/src/resource_clients.test.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], diff --git a/packages/grafana-prometheus/src/components/VariableQueryEditor.tsx b/packages/grafana-prometheus/src/components/VariableQueryEditor.tsx index c0e64fa2356..d8f99a7bc48 100644 --- a/packages/grafana-prometheus/src/components/VariableQueryEditor.tsx +++ b/packages/grafana-prometheus/src/components/VariableQueryEditor.tsx @@ -25,7 +25,7 @@ import { StandardPromVariableQuery, } from '../types'; -export const variableOptions = [ +const variableOptions = [ { label: 'Label names', value: QueryType.LabelNames }, { label: 'Label values', value: QueryType.LabelValues }, { label: 'Metrics', value: QueryType.MetricNames }, diff --git a/packages/grafana-prometheus/src/components/cancelable-promise.ts b/packages/grafana-prometheus/src/components/cancelable-promise.ts index 0256922cbbb..673d619b253 100644 --- a/packages/grafana-prometheus/src/components/cancelable-promise.ts +++ b/packages/grafana-prometheus/src/components/cancelable-promise.ts @@ -6,7 +6,7 @@ export interface CancelablePromise { cancel: () => void; } -export interface CancelablePromiseRejection { +interface CancelablePromiseRejection { isCanceled: boolean; } diff --git a/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/data_provider.ts b/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/data_provider.ts index a651f761292..b5772fa45cd 100644 --- a/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/data_provider.ts +++ b/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/data_provider.ts @@ -7,7 +7,7 @@ import { isValidLegacyName } from '../../../utf8_support'; export const CODE_MODE_SUGGESTIONS_INCOMPLETE_EVENT = 'codeModeSuggestionsIncomplete'; -export type SuggestionsIncompleteEvent = CustomEvent<{ +type SuggestionsIncompleteEvent = CustomEvent<{ limit: number; datasourceUid: string; }>; diff --git a/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/validation.ts b/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/validation.ts index 64b96aa8c57..6bdd7172f63 100644 --- a/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/validation.ts +++ b/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/validation.ts @@ -3,7 +3,7 @@ import { SyntaxNode } from '@lezer/common'; import { LRParser } from '@lezer/lr'; // Although 0 isn't explicitly provided in the @grafana/lezer-logql library as the error node ID, it does appear to be the ID of error nodes within lezer. -export const ErrorId = 0; +const ErrorId = 0; export const warningTypes: Record = { SubqueryExpr: diff --git a/packages/grafana-prometheus/src/configuration/ConfigEditor.tsx b/packages/grafana-prometheus/src/configuration/ConfigEditor.tsx index 0dad0be5447..48c136895a3 100644 --- a/packages/grafana-prometheus/src/configuration/ConfigEditor.tsx +++ b/packages/grafana-prometheus/src/configuration/ConfigEditor.tsx @@ -12,7 +12,7 @@ import { AlertingSettingsOverhaul } from './AlertingSettingsOverhaul'; import { DataSourceHttpSettingsOverhaul } from './DataSourceHttpSettingsOverhaul'; import { PromSettings } from './PromSettings'; import { overhaulStyles } from './shared/utils'; -export type PrometheusConfigProps = DataSourcePluginOptionsEditorProps; +type PrometheusConfigProps = DataSourcePluginOptionsEditorProps; export const ConfigEditor = (props: PrometheusConfigProps) => { const { options, onOptionsChange } = props; diff --git a/packages/grafana-prometheus/src/configuration/DataSourceHttpSettingsOverhaul.tsx b/packages/grafana-prometheus/src/configuration/DataSourceHttpSettingsOverhaul.tsx index ff9a8ee7208..7905dd1e530 100644 --- a/packages/grafana-prometheus/src/configuration/DataSourceHttpSettingsOverhaul.tsx +++ b/packages/grafana-prometheus/src/configuration/DataSourceHttpSettingsOverhaul.tsx @@ -8,7 +8,7 @@ import { PromOptions } from '../types'; import { docsTip, overhaulStyles } from './shared/utils'; -export type DataSourceHttpSettingsProps = { +type DataSourceHttpSettingsProps = { options: DataSourceSettings; onOptionsChange: (options: DataSourceSettings) => void; secureSocksDSProxyEnabled: boolean; diff --git a/packages/grafana-prometheus/src/language_provider.ts b/packages/grafana-prometheus/src/language_provider.ts index 2030eefab69..9a64613cf3f 100644 --- a/packages/grafana-prometheus/src/language_provider.ts +++ b/packages/grafana-prometheus/src/language_provider.ts @@ -45,7 +45,7 @@ const API_V1 = { LABELS_VALUES: (labelKey: string) => `/api/v1/label/${labelKey}/values`, }; -export interface PrometheusBaseLanguageProvider { +interface PrometheusBaseLanguageProvider { datasource: PrometheusDatasource; /** @@ -70,7 +70,7 @@ export interface PrometheusBaseLanguageProvider { /** * @deprecated This interface is deprecated and will be removed. */ -export interface PrometheusLegacyLanguageProvider { +interface PrometheusLegacyLanguageProvider { /** * @deprecated Use retrieveHistogramMetrics() method instead */ diff --git a/packages/grafana-prometheus/src/language_utils.ts b/packages/grafana-prometheus/src/language_utils.ts index 44eb516447e..62d7fb2dfa3 100644 --- a/packages/grafana-prometheus/src/language_utils.ts +++ b/packages/grafana-prometheus/src/language_utils.ts @@ -70,7 +70,7 @@ export function processLabels(labels: Array<{ [key: string]: string }>, withName // 4. comma: if there is a comma it will give , // 5. space: if there is a space after comma it will give the whole space // comma and space is useful for addLabelsToExpression function -export const labelRegexp = /\b(\w+)(!?=~?)("[^"\n]*?")(,)?(\s*)?/g; +const labelRegexp = /\b(\w+)(!?=~?)("[^"\n]*?")(,)?(\s*)?/g; export function expandRecordingRules(query: string, mapping: { [name: string]: RecordingRuleIdentifier }): string { const getRuleRegex = (ruleName: string) => new RegExp(`(\\s|\\(|^)(${ruleName})(\\s|$|\\(|\\[|\\{)`, 'ig'); @@ -267,23 +267,19 @@ export function roundMsToMin(milliseconds: number): number { return roundSecToMin(milliseconds / 1000); } -export function roundSecToMin(seconds: number): number { +function roundSecToMin(seconds: number): number { return Math.floor(seconds / 60); } // Returns number of minutes rounded up to the nearest nth minute -export function roundSecToNextMin(seconds: number, secondsToRound = 1): number { +function roundSecToNextMin(seconds: number, secondsToRound = 1): number { return Math.ceil(seconds / 60) - (Math.ceil(seconds / 60) % secondsToRound); } -export function limitSuggestions(items: string[]) { +function limitSuggestions(items: string[]) { return items.slice(0, SUGGESTIONS_LIMIT); } -export function addLimitInfo(items: unknown[] | undefined): string { - return items && items.length >= SUGGESTIONS_LIMIT ? `, limited to the first ${SUGGESTIONS_LIMIT} received items` : ''; -} - const FromPromLikeMap: Record = { '=': AbstractLabelOperator.Equal, '!=': AbstractLabelOperator.NotEqual, @@ -296,7 +292,7 @@ const ToPromLikeMap: Record = invert(FromPromLike string >; -export function toPromLikeExpr(labelBasedQuery: AbstractQuery): string { +function toPromLikeExpr(labelBasedQuery: AbstractQuery): string { const expr = labelBasedQuery.labelMatchers .map((selector: AbstractLabelMatcher) => { const operator = ToPromLikeMap[selector.operator]; @@ -320,7 +316,7 @@ export function toPromLikeQuery(labelBasedQuery: AbstractQuery): PromLikeQuery { }; } -export interface PromLikeQuery extends DataQuery { +interface PromLikeQuery extends DataQuery { expr: string; range: boolean; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/LabelFilterItem.tsx b/packages/grafana-prometheus/src/querybuilder/components/LabelFilterItem.tsx index 0ffa50ce3e1..d8d76ae21b3 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/LabelFilterItem.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/LabelFilterItem.tsx @@ -11,7 +11,7 @@ import { AsyncSelect, Select } from '@grafana/ui'; import { truncateResult } from '../../language_utils'; import { QueryBuilderLabelFilter } from '../shared/types'; -export interface LabelFilterItemProps { +interface LabelFilterItemProps { defaultOp: string; item: Partial; onChange: (value: QueryBuilderLabelFilter) => void; diff --git a/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx b/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx index c51940fb3d6..0fc93905f4d 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx @@ -13,7 +13,7 @@ import { PromVisualQuery, PromQueryModellerInterface } from '../types'; * Props for the LabelParamEditor component. * This editor specifically requires a Prometheus query modeller instance. */ -export interface LabelParamEditorProps extends Omit { +interface LabelParamEditorProps extends Omit { queryModeller: PromQueryModellerInterface; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/MetricsLabelsSection.tsx b/packages/grafana-prometheus/src/querybuilder/components/MetricsLabelsSection.tsx index a19ee523c45..321cf89a792 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/MetricsLabelsSection.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/MetricsLabelsSection.tsx @@ -15,7 +15,7 @@ import { PromVisualQuery } from '../types'; import { LabelFilters } from './LabelFilters'; import { MetricCombobox } from './MetricCombobox'; -export interface MetricsLabelsSectionProps { +interface MetricsLabelsSectionProps { query: PromVisualQuery; datasource: PrometheusDatasource; onChange: (update: PromVisualQuery) => void; @@ -194,7 +194,7 @@ async function getMetrics( })); } -export function getMetadataString(metric: string, metadata: PromMetricsMetadata): string | undefined { +function getMetadataString(metric: string, metadata: PromMetricsMetadata): string | undefined { if (!metadata[metric]) { return; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/NestedQuery.tsx b/packages/grafana-prometheus/src/querybuilder/components/NestedQuery.tsx index 5d9569fa5c9..8ac17b1b854 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/NestedQuery.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/NestedQuery.tsx @@ -13,7 +13,7 @@ import { PromVisualQueryBinary } from '../types'; import { QueryBuilderContent } from './shared/QueryBuilderContent'; -export interface NestedQueryProps { +interface NestedQueryProps { nestedQuery: PromVisualQueryBinary; datasource: PrometheusDatasource; index: number; diff --git a/packages/grafana-prometheus/src/querybuilder/components/NestedQueryList.tsx b/packages/grafana-prometheus/src/querybuilder/components/NestedQueryList.tsx index f0aca4ae1fd..ba0d62d5f2a 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/NestedQueryList.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/NestedQueryList.tsx @@ -6,7 +6,7 @@ import { PromVisualQuery, PromVisualQueryBinary } from '../types'; import { NestedQuery } from './NestedQuery'; -export interface NestedQueryListProps { +interface NestedQueryListProps { query: PromVisualQuery; datasource: PrometheusDatasource; onChange: (query: PromVisualQuery) => void; diff --git a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx index befa0b530d3..03bf97718bc 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx @@ -8,7 +8,7 @@ import { PromVisualQuery } from '../types'; import { BaseQueryBuilder } from './shared/BaseQueryBuilder'; -export interface PromQueryBuilderProps { +interface PromQueryBuilderProps { query: PromVisualQuery; datasource: PrometheusDatasource; onChange: (update: PromVisualQuery) => void; diff --git a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderContainer.tsx b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderContainer.tsx index f2cd9d1f798..318d4a71213 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderContainer.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderContainer.tsx @@ -14,7 +14,7 @@ import { PromQueryBuilder } from './PromQueryBuilder'; import { QueryPreview } from './QueryPreview'; import { getSettings, MetricsModalSettings } from './metrics-modal/state/state'; -export interface PromQueryBuilderContainerProps { +interface PromQueryBuilderContainerProps { query: PromQuery; datasource: PrometheusDatasource; onChange: (update: PromQuery) => void; @@ -23,7 +23,7 @@ export interface PromQueryBuilderContainerProps { showExplain: boolean; } -export interface State { +interface State { visQuery?: PromVisualQuery; expr: string; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderExplained.tsx b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderExplained.tsx index eaef385d1ad..a89a2a25c83 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderExplained.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderExplained.tsx @@ -13,7 +13,7 @@ import { PromVisualQuery } from '../types'; export const EXPLAIN_LABEL_FILTER_CONTENT = 'Fetch all series matching metric name and label filters.'; -export interface PromQueryBuilderExplainedProps { +interface PromQueryBuilderExplainedProps { query: string; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderOptions.tsx b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderOptions.tsx index 67cd36830e1..8d1d76351c1 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderOptions.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilderOptions.tsx @@ -16,16 +16,7 @@ import { QueryOptionGroup } from '../shared/QueryOptionGroup'; import { getLegendModeLabel, PromQueryLegendEditor } from './PromQueryLegendEditor'; -export interface UIOptions { - exemplars: boolean; - type: boolean; - format: boolean; - minStep: boolean; - legend: boolean; - resolution: boolean; -} - -export interface PromQueryBuilderOptionsProps { +interface PromQueryBuilderOptionsProps { query: PromQuery; app?: CoreApp; onChange: (update: PromQuery) => void; diff --git a/packages/grafana-prometheus/src/querybuilder/components/PromQueryLegendEditor.tsx b/packages/grafana-prometheus/src/querybuilder/components/PromQueryLegendEditor.tsx index da6edf4d2c4..2d9cf038bc2 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/PromQueryLegendEditor.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/PromQueryLegendEditor.tsx @@ -10,7 +10,7 @@ import { AutoSizeInput, Select } from '@grafana/ui'; import { LegendFormatMode } from '../../types'; -export interface PromQueryLegendEditorProps { +interface PromQueryLegendEditorProps { legendFormat: string | undefined; onChange: (legendFormat: string) => void; onRunQuery: () => void; diff --git a/packages/grafana-prometheus/src/querybuilder/components/QueryPreview.tsx b/packages/grafana-prometheus/src/querybuilder/components/QueryPreview.tsx index c8a1fc14afa..1c9d9fa0151 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/QueryPreview.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/QueryPreview.tsx @@ -4,7 +4,7 @@ import { EditorFieldGroup, EditorRow } from '@grafana/plugin-ui'; import { promqlGrammar } from '../../promql'; import { RawQuery } from '../shared/RawQuery'; -export interface QueryPreviewProps { +interface QueryPreviewProps { query: string; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/FeedbackLink.tsx b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/FeedbackLink.tsx index de5ec8a57d1..e62e4ce73e8 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/FeedbackLink.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/FeedbackLink.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Icon, useStyles2, Stack } from '@grafana/ui'; -export interface Props { +interface Props { feedbackUrl?: string; } diff --git a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/MetricsModal.tsx b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/MetricsModal.tsx index f598cf0951d..f38935ea4ea 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/MetricsModal.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/MetricsModal.tsx @@ -38,10 +38,24 @@ import { tracking, } from './state/helpers'; import { + buildMetrics, DEFAULT_RESULTS_PER_PAGE, + filterMetricsBackend, initialState, MAXIMUM_RESULTS_PER_PAGE, MetricsModalMetadata, + setDisableTextWrap, + setFullMetaSearch, + setFuzzySearchQuery, + setIncludeNullMetadata, + setIsLoading, + setMetaHaystack, + setNameHaystack, + setPageNum, + setResultsPerPage, + setSelectedTypes, + setUseBackend, + showAdditionalSettings, stateSlice, } from './state/state'; import { getStyles } from './styles'; @@ -354,21 +368,3 @@ export const metricsModaltestIds = { setUseBackend: 'set-use-backend', showAdditionalSettings: 'show-additional-settings', }; -// actions to update the state -export const { - setIsLoading, - buildMetrics, - filterMetricsBackend, - setResultsPerPage, - setPageNum, - setFuzzySearchQuery, - setNameHaystack, - setMetaHaystack, - setFullMetaSearch, - setIncludeNullMetadata, - setSelectedTypes, - setUseBackend, - setDisableTextWrap, - showAdditionalSettings, - setFilteredMetricCount, -} = stateSlice.actions; diff --git a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/shared/types.ts b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/shared/types.ts index 255131670a7..76ee015c1e9 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/shared/types.ts +++ b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/shared/types.ts @@ -3,7 +3,7 @@ import { TimeRange } from '@grafana/data'; import { PrometheusDatasource } from '../../../../datasource'; import { PromVisualQuery } from '../../../types'; -export interface MetricsModalState { +interface MetricsModalState { useBackend: boolean; disableTextWrap: boolean; includeNullMetadata: boolean; diff --git a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/state/helpers.ts b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/state/helpers.ts index 88d5f9e27bf..79d41287197 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/state/helpers.ts +++ b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/state/helpers.ts @@ -6,12 +6,11 @@ import { reportInteraction } from '@grafana/runtime'; import { PrometheusDatasource } from '../../../../datasource'; import { PromMetricsMetadata } from '../../../../types'; -import { regexifyLabelValuesQueryString } from '../../../parsingUtils'; -import { QueryBuilderLabelFilter } from '../../../shared/types'; import { PromVisualQuery } from '../../../types'; import { HaystackDictionary, MetricData, MetricsData, PromFilterOption } from '../types'; import { MetricsModalMetadata, MetricsModalState, setFilteredMetricCount } from './state'; + export async function setMetrics( datasource: PrometheusDatasource, query: PromVisualQuery, @@ -86,11 +85,11 @@ function buildMetricData(metric: string, datasource: PrometheusDatasource): Metr return metricData; } -export function getMetadataHelp(metric: string, metadata: PromMetricsMetadata): string | undefined { +function getMetadataHelp(metric: string, metadata: PromMetricsMetadata): string | undefined { return metadata[metric]?.help; } -export function getMetadataType(metric: string, metadata: PromMetricsMetadata): string | undefined { +function getMetadataType(metric: string, metadata: PromMetricsMetadata): string | undefined { return metadata[metric]?.type; } @@ -110,7 +109,7 @@ export function displayedMetrics(state: MetricsModalState, dispatch: React.Dispa /** * Filter the metrics with all the options, fuzzy, type, null metadata */ -export function filterMetrics(state: MetricsModalState): MetricsData { +function filterMetrics(state: MetricsModalState): MetricsData { let filteredMetrics: MetricsData = state.metrics; if (state.fuzzySearchQuery && !state.useBackend) { @@ -162,7 +161,7 @@ export function calculatePageList(state: MetricsModalState) { return [...Array(pages).keys()].map((i) => i + 1); } -export function sliceMetrics(metrics: MetricsData, pageNum: number, resultsPerPage: number) { +function sliceMetrics(metrics: MetricsData, pageNum: number, resultsPerPage: number) { const calcResultsPerPage: number = resultsPerPage === 0 ? 1 : resultsPerPage; const start: number = pageNum === 1 ? 0 : (pageNum - 1) * calcResultsPerPage; const end: number = start + calcResultsPerPage; @@ -181,34 +180,6 @@ export const calculateResultsPerPage = (results: number, defaultResults: number, return results ?? defaultResults; }; -/** - * The backend query that replaces the uFuzzy search when the option 'useBackend' has been selected - * this is a regex search either to the series or labels Prometheus endpoint - * depending on which the Prometheus type or version supports - * @param metricText - * @param labels - * @param datasource - */ -export async function getBackendSearchMetrics( - metricText: string, - labels: QueryBuilderLabelFilter[], - datasource: PrometheusDatasource -): Promise> { - const queryString = regexifyLabelValuesQueryString(metricText); - - const labelsParams = labels.map((label) => { - return `,${label.label}="${label.value}"`; - }); - - const params = `label_values({__name__=~".*${queryString}"${labels ? labelsParams.join() : ''}},__name__)`; - - const results = datasource.metricFindQuery(params); - - return await results.then((results) => { - return results.map((result) => buildMetricData(result.text, datasource)); - }); -} - export function tracking(event: string, state?: MetricsModalState | null, metric?: string, query?: PromVisualQuery) { switch (event) { case 'grafana_prom_metric_encycopedia_tracking': diff --git a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/types.ts b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/types.ts index 88d39441eb3..2bdb85a276b 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/types.ts +++ b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/types.ts @@ -16,17 +16,3 @@ export type PromFilterOption = { export interface HaystackDictionary { [needle: string]: MetricData; } - -export type UFuzzyInfo = { - idx: number[]; - start: number[]; - chars: number[]; - terms: number[]; - interIns: number[]; - intraIns: number[]; - interLft2: number[]; - interRgt2: number[]; - interLft1: number[]; - interRgt1: number[]; - ranges: number[][]; -}; diff --git a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/uFuzzy.ts b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/uFuzzy.ts index 7b070b9ab58..297e216b560 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/uFuzzy.ts +++ b/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/uFuzzy.ts @@ -10,7 +10,7 @@ const uf = new uFuzzy({ intraDel: 1, }); -export function fuzzySearch(haystack: string[], query: string, dispatcher: (data: string[][]) => void) { +function fuzzySearch(haystack: string[], query: string, dispatcher: (data: string[][]) => void) { const [idxs, info, order] = uf.search(haystack, query, 0, 1e5); let haystackOrder: string[] = []; diff --git a/packages/grafana-prometheus/src/querybuilder/hooks/useFlag.ts b/packages/grafana-prometheus/src/querybuilder/hooks/useFlag.ts index f0df6046d58..9b6028ec0b0 100644 --- a/packages/grafana-prometheus/src/querybuilder/hooks/useFlag.ts +++ b/packages/grafana-prometheus/src/querybuilder/hooks/useFlag.ts @@ -5,7 +5,7 @@ import { store } from '@grafana/data'; export const promQueryEditorExplainKey = 'PrometheusQueryEditorExplainDefault'; -export type QueryEditorFlags = typeof promQueryEditorExplainKey; +type QueryEditorFlags = typeof promQueryEditorExplainKey; function getFlagValue(key: QueryEditorFlags, defaultValue = false): boolean { const val = store.get(key); diff --git a/packages/grafana-prometheus/src/querybuilder/operations.ts b/packages/grafana-prometheus/src/querybuilder/operations.ts index dba2bd17699..3f9e3ac21d4 100644 --- a/packages/grafana-prometheus/src/querybuilder/operations.ts +++ b/packages/grafana-prometheus/src/querybuilder/operations.ts @@ -284,7 +284,7 @@ export function getOperationDefinitions(): QueryBuilderOperationDef[] { return list; } -export function createFunction(definition: Partial): QueryBuilderOperationDef { +function createFunction(definition: Partial): QueryBuilderOperationDef { return { ...definition, id: definition.id!, @@ -297,7 +297,7 @@ export function createFunction(definition: Partial): Q }; } -export function createRangeFunction(name: string, withRateInterval = false): QueryBuilderOperationDef { +function createRangeFunction(name: string, withRateInterval = false): QueryBuilderOperationDef { return { id: name, name: getPromOperationDisplayName(name), @@ -325,7 +325,7 @@ function operationTypeChangedHandlerForRangeFunction( return operation; } -export function operationWithRangeVectorRenderer( +function operationWithRangeVectorRenderer( model: QueryBuilderOperation, def: QueryBuilderOperationDef, innerExpr: string diff --git a/packages/grafana-prometheus/src/querybuilder/parsing.ts b/packages/grafana-prometheus/src/querybuilder/parsing.ts index e18c6071bab..9a517b53bd2 100644 --- a/packages/grafana-prometheus/src/querybuilder/parsing.ts +++ b/packages/grafana-prometheus/src/querybuilder/parsing.ts @@ -110,7 +110,7 @@ interface Context { * @param node * @param context */ -export function handleExpression(expr: string, node: SyntaxNode, context: Context) { +function handleExpression(expr: string, node: SyntaxNode, context: Context) { const visQuery = context.query; switch (node.type.id) { diff --git a/packages/grafana-prometheus/src/querybuilder/parsingUtils.ts b/packages/grafana-prometheus/src/querybuilder/parsingUtils.ts index 0346042ca02..3017bc33526 100644 --- a/packages/grafana-prometheus/src/querybuilder/parsingUtils.ts +++ b/packages/grafana-prometheus/src/querybuilder/parsingUtils.ts @@ -70,7 +70,7 @@ const varTypeFunc = [ * Get back the text with variables in their original format. * @param expr */ -export function returnVariables(expr: string) { +function returnVariables(expr: string) { return expr.replace(/__V_(\d)__(.+?)__V__(?:__F__(\w+)__F__)?/g, (match, type, v, f) => { return varTypeFunc[parseInt(type, 10)](v, f); }); diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx index 08178120a33..79ab7cd2219 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx @@ -19,7 +19,7 @@ import { VisualQueryModeller, } from './types'; -export interface Props { +interface Props { operation: QueryBuilderOperation; index: number; query: any; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationExplainedBox.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationExplainedBox.tsx index 4546f3cd427..23c8ca822f2 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationExplainedBox.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationExplainedBox.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import { GrafanaTheme2, renderMarkdown } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; -export interface Props { +interface Props { title?: React.ReactNode; children?: React.ReactNode; markdown?: string; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationHeader.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationHeader.tsx index 69a16649a12..d26f6f8f55f 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationHeader.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationHeader.tsx @@ -11,7 +11,7 @@ import { Button, Select, useStyles2 } from '@grafana/ui'; import { OperationInfoButton } from './OperationInfoButton'; import { QueryBuilderOperation, QueryBuilderOperationDef, VisualQueryModeller } from './types'; -export interface Props { +interface Props { operation: QueryBuilderOperation; def: QueryBuilderOperationDef; index: number; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationInfoButton.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationInfoButton.tsx index 03b00cc1e4d..3669ece9146 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationInfoButton.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationInfoButton.tsx @@ -19,7 +19,7 @@ import { Button, Portal, useStyles2 } from '@grafana/ui'; import { QueryBuilderOperation, QueryBuilderOperationDef } from './types'; -export interface Props { +interface Props { operation: QueryBuilderOperation; def: QueryBuilderOperationDef; } diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx index a3a6a92090e..a02ca396c3f 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx @@ -11,7 +11,7 @@ import { Button, Cascader, CascaderOption, useStyles2, Stack } from '@grafana/ui import { OperationEditor } from './OperationEditor'; import { QueryBuilderOperation, QueryWithOperations, VisualQueryModeller } from './types'; -export interface Props { +interface Props { query: T; datasource: DataSourceApi; onChange: (query: T) => void; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationListExplained.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationListExplained.tsx index 92afe395aaf..e53f93435b5 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationListExplained.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationListExplained.tsx @@ -5,7 +5,7 @@ import { OperationExplainedBox } from './OperationExplainedBox'; import { RawQuery } from './RawQuery'; import { QueryBuilderOperation, QueryWithOperations, VisualQueryModeller } from './types'; -export interface Props { +interface Props { query: T; queryModeller: VisualQueryModeller; explainMode?: boolean; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/QueryBuilderHints.tsx b/packages/grafana-prometheus/src/querybuilder/shared/QueryBuilderHints.tsx index c581c85cea8..8ffba3bb291 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/QueryBuilderHints.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/QueryBuilderHints.tsx @@ -10,7 +10,7 @@ import { Button, Tooltip, useStyles2 } from '@grafana/ui'; import { PrometheusDatasource } from '../../datasource'; import { PromQueryModellerInterface, PromVisualQuery } from '../types'; -export interface Props { +interface Props { query: PromVisualQuery; datasource: PrometheusDatasource; queryModeller: PromQueryModellerInterface; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/QueryEditorModeToggle.tsx b/packages/grafana-prometheus/src/querybuilder/shared/QueryEditorModeToggle.tsx index d57c654f13b..4fdfe90931b 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/QueryEditorModeToggle.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/QueryEditorModeToggle.tsx @@ -4,7 +4,7 @@ import { RadioButtonGroup } from '@grafana/ui'; import { QueryEditorMode } from './types'; -export interface Props { +interface Props { mode: QueryEditorMode; onChange: (mode: QueryEditorMode) => void; } diff --git a/packages/grafana-prometheus/src/querybuilder/shared/QueryHeaderSwitch.tsx b/packages/grafana-prometheus/src/querybuilder/shared/QueryHeaderSwitch.tsx index a5b484dd01e..39a0cc2ef71 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/QueryHeaderSwitch.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/QueryHeaderSwitch.tsx @@ -6,7 +6,7 @@ import { HTMLProps, useRef } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Switch, useStyles2, Stack } from '@grafana/ui'; -export interface Props extends Omit, 'value' | 'ref'> { +interface Props extends Omit, 'value' | 'ref'> { value?: boolean; label: string; } diff --git a/packages/grafana-prometheus/src/querybuilder/shared/QueryOptionGroup.tsx b/packages/grafana-prometheus/src/querybuilder/shared/QueryOptionGroup.tsx index 066e0f805ed..554201a820d 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/QueryOptionGroup.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/QueryOptionGroup.tsx @@ -6,7 +6,7 @@ import { useToggle } from 'react-use'; import { GrafanaTheme2 } from '@grafana/data'; import { Collapse, useStyles2, Stack } from '@grafana/ui'; -export interface Props { +interface Props { title: string; collapsedInfo: string[]; children: React.ReactNode; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/RawQuery.tsx b/packages/grafana-prometheus/src/querybuilder/shared/RawQuery.tsx index 42bfa0842b9..a08c5109810 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/RawQuery.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/RawQuery.tsx @@ -6,7 +6,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { t } from '@grafana/i18n'; import { useTheme2 } from '@grafana/ui'; -export interface Props { +interface Props { query: string; lang: { grammar: Grammar; diff --git a/packages/grafana-prometheus/src/querybuilder/shared/rendering/query.ts b/packages/grafana-prometheus/src/querybuilder/shared/rendering/query.ts index 0835de82020..936ce22dc9a 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/rendering/query.ts +++ b/packages/grafana-prometheus/src/querybuilder/shared/rendering/query.ts @@ -23,7 +23,7 @@ export function renderBinaryQueries( /** * Renders a binary query */ -export function renderBinaryQuery(leftOperand: string, binaryQuery: VisualQueryBinary): string { +function renderBinaryQuery(leftOperand: string, binaryQuery: VisualQueryBinary): string { let result = leftOperand + ` ${binaryQuery.operator} `; if (binaryQuery.vectorMatches) { diff --git a/packages/grafana-prometheus/src/querybuilder/shared/types.ts b/packages/grafana-prometheus/src/querybuilder/shared/types.ts index 35934943428..a06b0823c80 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/types.ts +++ b/packages/grafana-prometheus/src/querybuilder/shared/types.ts @@ -39,21 +39,17 @@ export interface QueryBuilderOperationDef extends RegistryItem { changeTypeHandler?: (op: QueryBuilderOperation, newDef: QueryBuilderOperationDef) => QueryBuilderOperation; } -export type QueryBuilderAddOperationHandler = ( - def: QueryBuilderOperationDef, - query: T, - modeller: VisualQueryModeller -) => T; +type QueryBuilderAddOperationHandler = (def: QueryBuilderOperationDef, query: T, modeller: VisualQueryModeller) => T; -export type QueryBuilderExplainOperationHandler = (op: QueryBuilderOperation, def?: QueryBuilderOperationDef) => string; +type QueryBuilderExplainOperationHandler = (op: QueryBuilderOperation, def?: QueryBuilderOperationDef) => string; -export type QueryBuilderOnParamChangedHandler = ( +type QueryBuilderOnParamChangedHandler = ( index: number, operation: QueryBuilderOperation, operationDef: QueryBuilderOperationDef ) => QueryBuilderOperation; -export type QueryBuilderOperationRenderer = ( +type QueryBuilderOperationRenderer = ( model: QueryBuilderOperation, def: QueryBuilderOperationDef, innerExpr: string @@ -75,16 +71,6 @@ export interface QueryBuilderOperationParamDef { runQueryOnEnter?: boolean; } -export interface QueryBuilderOperationEditorProps { - operation: QueryBuilderOperation; - index: number; - query: any; - datasource: DataSourceApi; - queryModeller: VisualQueryModeller; - onChange: (index: number, update: QueryBuilderOperation) => void; - onRemove: (index: number) => void; -} - export interface QueryBuilderOperationParamEditorProps { onChange: (index: number, value: QueryBuilderOperationParamValue) => void; onRunQuery: () => void; diff --git a/packages/grafana-prometheus/src/querybuilder/types.ts b/packages/grafana-prometheus/src/querybuilder/types.ts index e4a5781194d..39042a9b975 100644 --- a/packages/grafana-prometheus/src/querybuilder/types.ts +++ b/packages/grafana-prometheus/src/querybuilder/types.ts @@ -19,12 +19,19 @@ export interface PromVisualQuery { export interface PromQueryModellerInterface { renderLabels(labels: QueryBuilderLabelFilter[]): string; + renderQuery(query: PromVisualQuery, nested?: boolean): string; + hasBinaryOp(query: PromVisualQuery): boolean; + getQueryPatterns(): PromQueryPattern[]; + getOperationsForCategory(category: string): QueryBuilderOperationDef[]; + getOperationDef(id: string): QueryBuilderOperationDef | undefined; + getAlternativeOperations(key: string): QueryBuilderOperationDef[]; + getCategories(): string[]; } diff --git a/packages/grafana-prometheus/src/querycache/QueryCache.ts b/packages/grafana-prometheus/src/querycache/QueryCache.ts index 419e59c6c01..bb3dca14d4f 100644 --- a/packages/grafana-prometheus/src/querycache/QueryCache.ts +++ b/packages/grafana-prometheus/src/querycache/QueryCache.ts @@ -48,7 +48,7 @@ export interface CacheRequestInfo { * This is the string used to uniquely identify a field within a "target" * @param field */ -export const getFieldIdentity = (field: Field) => `${field.type}|${field.name}|${JSON.stringify(field.labels ?? '')}`; +const getFieldIdentity = (field: Field) => `${field.type}|${field.name}|${JSON.stringify(field.labels ?? '')}`; /** * NOMENCLATURE diff --git a/packages/grafana-prometheus/src/querycache/QueryCacheTestData.ts b/packages/grafana-prometheus/src/querycache/QueryCacheTestData.ts index ae283225f1b..2f9b8b9d490 100644 --- a/packages/grafana-prometheus/src/querycache/QueryCacheTestData.ts +++ b/packages/grafana-prometheus/src/querycache/QueryCacheTestData.ts @@ -7,7 +7,7 @@ import { clone } from 'lodash'; * @param start - First timestamp (ms) * @param step - step duration (ms) */ -export const getMockTimeFrameArray = (length: number, start: number, step: number) => { +const getMockTimeFrameArray = (length: number, start: number, step: number) => { let timeValues: number[] = []; for (let i = 0; i < length; i++) { timeValues.push(start + i * step); @@ -21,7 +21,7 @@ export const getMockTimeFrameArray = (length: number, start: number, step: numbe * @param values * @param high */ -export const getMockValueFrameArray = (length: number, values = 0): number[] => { +const getMockValueFrameArray = (length: number, values = 0): number[] => { return Array(length).fill(values); }; diff --git a/packages/grafana-prometheus/src/test/helpers/selectOptionInTest.ts b/packages/grafana-prometheus/src/test/helpers/selectOptionInTest.ts index 90b14190b56..e902abf315a 100644 --- a/packages/grafana-prometheus/src/test/helpers/selectOptionInTest.ts +++ b/packages/grafana-prometheus/src/test/helpers/selectOptionInTest.ts @@ -1,20 +1,9 @@ // Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/packages/grafana-ui/src/components/Select/SelectBase.tsx import { waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; import { select } from 'react-select-event'; -import { byRole } from 'testing-library-selector'; // Used to select an option or options from a Select in unit tests export const selectOptionInTest = async ( input: HTMLElement, optionOrOptions: string | RegExp | Array ) => await waitFor(() => select(input, optionOrOptions, { container: document.body })); - -// Finds the parent of the Select so you can assert if it has a value -export const getSelectParent = (input: HTMLElement) => - input.parentElement?.parentElement?.parentElement?.parentElement?.parentElement; - -export const clickSelectOption = async (selectElement: HTMLElement, optionText: string): Promise => { - await userEvent.click(byRole('combobox').get(selectElement)); - await selectOptionInTest(selectElement, optionText); -}; diff --git a/packages/grafana-prometheus/src/test/mocks/datasource.ts b/packages/grafana-prometheus/src/test/mocks/datasource.ts index 6befc818c38..f61535e3071 100644 --- a/packages/grafana-prometheus/src/test/mocks/datasource.ts +++ b/packages/grafana-prometheus/src/test/mocks/datasource.ts @@ -12,7 +12,7 @@ import { import { PromOptions, PromQuery } from '../../types'; -export const getMockDataSource = ( +const getMockDataSource = ( overrides?: Partial> ): DataSourceSettings => merge( @@ -98,82 +98,6 @@ export function createDefaultPromResponse() { }; } -export function createAnnotationResponse() { - const response = { - data: { - results: { - X: { - frames: [ - { - schema: { - name: 'bar', - refId: 'X', - meta: { - typeVersion: [0, 0], - executedQueryString: 'Expr: ALERTS{}\nStep: 1m0s', - }, - fields: [ - { - name: 'Time', - type: 'time', - typeInfo: { - frame: 'time.Time', - }, - }, - { - name: 'Value', - type: 'number', - typeInfo: { - frame: 'float64', - }, - labels: { - __name__: 'ALERTS', - alertname: 'InstanceDown', - alertstate: 'firing', - instance: 'testinstance', - job: 'testjob', - }, - }, - ], - }, - data: { - values: [[123], [456]], - }, - }, - ], - }, - }, - }, - }; - - return { ...response }; -} - -export function createEmptyAnnotationResponse() { - const response = { - data: { - results: { - X: { - frames: [ - { - schema: { - name: 'bar', - refId: 'X', - fields: [], - }, - data: { - values: [], - }, - }, - ], - }, - }, - }, - }; - - return { ...response }; -} - export function getMockTimeRange(range = '6h'): TimeRange { return rangeUtil.convertRawToRange({ from: `now-${range}`,