mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Cloudwatch: Restructure languages in plugin root (#61490)
Co-authored-by: Isabella Siu <isabella.siu@grafana.com>
This commit is contained in:
parent
da7bf56c03
commit
78184f37c4
@ -5321,8 +5321,7 @@ exports[`better eslint`] = {
|
||||
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||
],
|
||||
"public/app/plugins/datasource/cloudwatch/components/LogsQueryField.tsx:5381": [
|
||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||
[0, 0, 0, "Do not use any type assertions.", "1"]
|
||||
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||
],
|
||||
"public/app/plugins/datasource/cloudwatch/components/MetricsQueryEditor/Alias.tsx:5381": [
|
||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||
@ -5343,16 +5342,7 @@ exports[`better eslint`] = {
|
||||
"public/app/plugins/datasource/cloudwatch/guards.ts:5381": [
|
||||
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||
],
|
||||
"public/app/plugins/datasource/cloudwatch/language_provider.test.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.", "2"],
|
||||
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
||||
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
||||
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
||||
[0, 0, 0, "Unexpected any. Specify a different type.", "6"]
|
||||
],
|
||||
"public/app/plugins/datasource/cloudwatch/language_provider.ts:5381": [
|
||||
"public/app/plugins/datasource/cloudwatch/language/cloudwatch-logs/CloudWatchLogsLanguageProvider.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.", "2"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { Monaco } from '../../monarch/types';
|
||||
import { Monaco } from '../../language/monarch/types';
|
||||
import * as SQLTestData from '../cloudwatch-sql-test-data';
|
||||
import * as DynamicLabelTestData from '../dynamic-label-test-data';
|
||||
import * as MetricMathTestData from '../metric-math-test-data';
|
||||
|
@ -4,10 +4,10 @@ import React, { useCallback, useRef } from 'react';
|
||||
|
||||
import { CodeEditor, getInputStyles, Monaco, useTheme2 } from '@grafana/ui';
|
||||
|
||||
import { DynamicLabelsCompletionItemProvider } from '../dynamic-labels/CompletionItemProvider';
|
||||
import language from '../dynamic-labels/definition';
|
||||
import { TRIGGER_SUGGEST } from '../monarch/commands';
|
||||
import { registerLanguage } from '../monarch/register';
|
||||
import { DynamicLabelsCompletionItemProvider } from '../language/dynamic-labels/CompletionItemProvider';
|
||||
import language from '../language/dynamic-labels/definition';
|
||||
import { TRIGGER_SUGGEST } from '../language/monarch/commands';
|
||||
import { registerLanguage } from '../language/monarch/register';
|
||||
|
||||
const dynamicLabelsCompletionItemProvider = new DynamicLabelsCompletionItemProvider();
|
||||
|
||||
|
@ -6,7 +6,7 @@ import React, { PureComponent } from 'react';
|
||||
import { QueryEditorHelpProps } from '@grafana/data';
|
||||
import { flattenTokens } from '@grafana/ui/src/slate-plugins/slate-prism';
|
||||
|
||||
import tokenizer from '../syntax';
|
||||
import tokenizer from '../language/cloudwatch-logs/syntax';
|
||||
import { CloudWatchQuery } from '../types';
|
||||
|
||||
interface QueryExample {
|
||||
|
@ -18,8 +18,7 @@ import { ExploreId } from 'app/types';
|
||||
// Utils & Services
|
||||
// dom also includes Element polyfills
|
||||
import { CloudWatchDatasource } from '../datasource';
|
||||
import { CloudWatchLanguageProvider } from '../language_provider';
|
||||
import syntax from '../syntax';
|
||||
import syntax from '../language/cloudwatch-logs/syntax';
|
||||
import { CloudWatchJsonData, CloudWatchLogsQuery, CloudWatchQuery } from '../types';
|
||||
import { getStatsGroups } from '../utils/query/getStatsGroups';
|
||||
|
||||
@ -68,11 +67,10 @@ export const CloudWatchLogsQueryField = (props: CloudWatchLogsQueryFieldProps) =
|
||||
return { suggestions: [] };
|
||||
}
|
||||
|
||||
const cloudwatchLanguageProvider = datasource.languageProvider as CloudWatchLanguageProvider;
|
||||
const { history, absoluteRange } = props;
|
||||
const { prefix, text, value, wrapperClasses, labelKey, editor } = typeahead;
|
||||
|
||||
return await cloudwatchLanguageProvider.provideCompletionItems(
|
||||
return await datasource.languageProvider.provideCompletionItems(
|
||||
{ text, value, prefix, wrapperClasses, labelKey, editor },
|
||||
{
|
||||
history,
|
||||
|
@ -4,9 +4,9 @@ import React, { useCallback, useRef } from 'react';
|
||||
import { CodeEditor, Monaco } from '@grafana/ui';
|
||||
|
||||
import { CloudWatchDatasource } from '../datasource';
|
||||
import language from '../metric-math/definition';
|
||||
import { TRIGGER_SUGGEST } from '../monarch/commands';
|
||||
import { registerLanguage } from '../monarch/register';
|
||||
import language from '../language/metric-math/definition';
|
||||
import { TRIGGER_SUGGEST } from '../language/monarch/commands';
|
||||
import { registerLanguage } from '../language/monarch/register';
|
||||
|
||||
export interface Props {
|
||||
onChange: (query: string) => void;
|
||||
|
@ -3,8 +3,8 @@ import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { EditorField, EditorRow, EditorRows } from '@grafana/experimental';
|
||||
import { Input } from '@grafana/ui';
|
||||
|
||||
import SQLGenerator from '../../cloudwatch-sql/SQLGenerator';
|
||||
import { CloudWatchDatasource } from '../../datasource';
|
||||
import SQLGenerator from '../../language/cloudwatch-sql/SQLGenerator';
|
||||
import { CloudWatchMetricsQuery } from '../../types';
|
||||
|
||||
import SQLBuilderSelectRow from './SQLBuilderSelectRow';
|
||||
|
@ -4,9 +4,9 @@ import { SelectableValue, toOption } from '@grafana/data';
|
||||
import { EditorField, EditorFieldGroup, EditorSwitch } from '@grafana/experimental';
|
||||
import { Select } from '@grafana/ui';
|
||||
|
||||
import { STATISTICS } from '../../cloudwatch-sql/language';
|
||||
import { CloudWatchDatasource } from '../../datasource';
|
||||
import { useDimensionKeys, useMetrics, useNamespaces } from '../../hooks';
|
||||
import { STATISTICS } from '../../language/cloudwatch-sql/language';
|
||||
import { CloudWatchMetricsQuery } from '../../types';
|
||||
import { appendTemplateVariables } from '../../utils/utils';
|
||||
|
||||
|
@ -5,10 +5,10 @@ import { SelectableValue, toOption } from '@grafana/data';
|
||||
import { AccessoryButton, EditorList, InputGroup } from '@grafana/experimental';
|
||||
import { Select } from '@grafana/ui';
|
||||
|
||||
import { COMPARISON_OPERATORS, EQUALS } from '../../cloudwatch-sql/language';
|
||||
import { CloudWatchDatasource } from '../../datasource';
|
||||
import { QueryEditorExpressionType, QueryEditorOperatorExpression, QueryEditorPropertyType } from '../../expressions';
|
||||
import { useDimensionKeys } from '../../hooks';
|
||||
import { COMPARISON_OPERATORS, EQUALS } from '../../language/cloudwatch-sql/language';
|
||||
import { CloudWatchMetricsQuery } from '../../types';
|
||||
import { appendTemplateVariables } from '../../utils/utils';
|
||||
|
||||
|
@ -4,8 +4,8 @@ import { SelectableValue, toOption } from '@grafana/data';
|
||||
import { AccessoryButton, EditorField, EditorFieldGroup, InputGroup } from '@grafana/experimental';
|
||||
import { Select } from '@grafana/ui';
|
||||
|
||||
import { ASC, DESC, STATISTICS } from '../../cloudwatch-sql/language';
|
||||
import { CloudWatchDatasource } from '../../datasource';
|
||||
import { ASC, DESC, STATISTICS } from '../../language/cloudwatch-sql/language';
|
||||
import { CloudWatchMetricsQuery } from '../../types';
|
||||
import { appendTemplateVariables } from '../../utils/utils';
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { SelectableValue } from '@grafana/data';
|
||||
|
||||
import { SCHEMA } from '../../cloudwatch-sql/language';
|
||||
import {
|
||||
QueryEditorExpressionType,
|
||||
QueryEditorPropertyType,
|
||||
@ -9,6 +8,7 @@ import {
|
||||
QueryEditorOperatorExpression,
|
||||
QueryEditorGroupByExpression,
|
||||
} from '../../expressions';
|
||||
import { SCHEMA } from '../../language/cloudwatch-sql/language';
|
||||
import { SQLExpression, CloudWatchMetricsQuery, Dimensions } from '../../types';
|
||||
|
||||
export function getMetricNameFromExpression(selectExpression: SQLExpression['select']): string | undefined {
|
||||
|
@ -3,10 +3,10 @@ import React, { FunctionComponent, useCallback, useEffect } from 'react';
|
||||
|
||||
import { CodeEditor, Monaco } from '@grafana/ui';
|
||||
|
||||
import language from '../cloudwatch-sql/definition';
|
||||
import { CloudWatchDatasource } from '../datasource';
|
||||
import { TRIGGER_SUGGEST } from '../monarch/commands';
|
||||
import { registerLanguage } from '../monarch/register';
|
||||
import language from '../language/cloudwatch-sql/definition';
|
||||
import { TRIGGER_SUGGEST } from '../language/monarch/commands';
|
||||
import { registerLanguage } from '../language/monarch/register';
|
||||
|
||||
export interface Props {
|
||||
region: string;
|
||||
|
@ -19,11 +19,11 @@ import { getTemplateSrv, TemplateSrv } from 'app/features/templating/template_sr
|
||||
import { RowContextOptions } from '../../../features/logs/components/LogRowContextProvider';
|
||||
|
||||
import { CloudWatchAnnotationSupport } from './annotationSupport';
|
||||
import { SQLCompletionItemProvider } from './cloudwatch-sql/completion/CompletionItemProvider';
|
||||
import { DEFAULT_METRICS_QUERY, getDefaultLogsQuery } from './defaultQueries';
|
||||
import { isCloudWatchAnnotationQuery, isCloudWatchLogsQuery, isCloudWatchMetricsQuery } from './guards';
|
||||
import { CloudWatchLanguageProvider } from './language_provider';
|
||||
import { MetricMathCompletionItemProvider } from './metric-math/completion/CompletionItemProvider';
|
||||
import { CloudWatchLogsLanguageProvider } from './language/cloudwatch-logs/CloudWatchLogsLanguageProvider';
|
||||
import { SQLCompletionItemProvider } from './language/cloudwatch-sql/completion/CompletionItemProvider';
|
||||
import { MetricMathCompletionItemProvider } from './language/metric-math/completion/CompletionItemProvider';
|
||||
import { CloudWatchAnnotationQueryRunner } from './query-runner/CloudWatchAnnotationQueryRunner';
|
||||
import { CloudWatchLogsQueryRunner } from './query-runner/CloudWatchLogsQueryRunner';
|
||||
import { CloudWatchMetricsQueryRunner } from './query-runner/CloudWatchMetricsQueryRunner';
|
||||
@ -42,7 +42,7 @@ export class CloudWatchDatasource
|
||||
implements DataSourceWithLogsContextSupport<CloudWatchLogsQuery>
|
||||
{
|
||||
defaultRegion?: string;
|
||||
languageProvider: CloudWatchLanguageProvider;
|
||||
languageProvider: CloudWatchLogsLanguageProvider;
|
||||
sqlCompletionItemProvider: SQLCompletionItemProvider;
|
||||
metricMathCompletionItemProvider: MetricMathCompletionItemProvider;
|
||||
defaultLogGroups?: string[];
|
||||
@ -62,7 +62,7 @@ export class CloudWatchDatasource
|
||||
super(instanceSettings);
|
||||
this.defaultRegion = instanceSettings.jsonData.defaultRegion;
|
||||
this.resources = new ResourcesAPI(instanceSettings, templateSrv);
|
||||
this.languageProvider = new CloudWatchLanguageProvider(this);
|
||||
this.languageProvider = new CloudWatchLogsLanguageProvider(this);
|
||||
this.sqlCompletionItemProvider = new SQLCompletionItemProvider(this.resources, this.templateSrv);
|
||||
this.metricMathCompletionItemProvider = new MetricMathCompletionItemProvider(this.resources, this.templateSrv);
|
||||
this.metricsQueryRunner = new CloudWatchMetricsQueryRunner(instanceSettings, templateSrv);
|
||||
|
@ -3,9 +3,11 @@ import { Value } from 'slate';
|
||||
|
||||
import { TypeaheadOutput } from '@grafana/ui';
|
||||
|
||||
import { CloudWatchDatasource } from './datasource';
|
||||
import { CloudWatchLanguageProvider } from './language_provider';
|
||||
import { ResourceResponse } from './resources/types';
|
||||
import { CloudWatchDatasource } from '../../datasource';
|
||||
import { ResourceResponse } from '../../resources/types';
|
||||
import { LogGroupField } from '../../types';
|
||||
|
||||
import { CloudWatchLogsLanguageProvider } from './CloudWatchLogsLanguageProvider';
|
||||
import {
|
||||
AGGREGATION_FUNCTIONS_STATS,
|
||||
BOOLEAN_FUNCTIONS,
|
||||
@ -16,88 +18,87 @@ import {
|
||||
STRING_FUNCTIONS,
|
||||
FIELD_AND_FILTER_FUNCTIONS,
|
||||
} from './syntax';
|
||||
import { LogGroupField } from './types';
|
||||
|
||||
const fields = ['field1', '@message'];
|
||||
|
||||
describe('CloudWatchLanguageProvider', () => {
|
||||
describe('CloudWatchLogsLanguageProvider', () => {
|
||||
it('should suggest ', async () => {
|
||||
await runSuggestionTest('stats count(\\)', [fields]);
|
||||
await runSuggestionTest('stats count(^)', [fields]);
|
||||
// Make sure having a field prefix does not brake anything
|
||||
await runSuggestionTest('stats count(@mess\\)', [fields]);
|
||||
await runSuggestionTest('stats count(@mess^)', [fields]);
|
||||
});
|
||||
|
||||
it('should suggest query commands on start of query', async () => {
|
||||
await runSuggestionTest('\\', [QUERY_COMMANDS.map((v) => v.label)]);
|
||||
await runSuggestionTest('^', [QUERY_COMMANDS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest query commands after pipe', async () => {
|
||||
await runSuggestionTest('fields f | \\', [QUERY_COMMANDS.map((v) => v.label)]);
|
||||
await runSuggestionTest('fields f | ^', [QUERY_COMMANDS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest fields and functions after field command', async () => {
|
||||
await runSuggestionTest('fields \\', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
await runSuggestionTest('fields ^', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest fields and functions after comma', async () => {
|
||||
await runSuggestionTest('fields field1, \\', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
await runSuggestionTest('fields field1, ^', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest fields and functions after comma with prefix', async () => {
|
||||
await runSuggestionTest('fields field1, @mess\\', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
await runSuggestionTest('fields field1, @mess^', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest fields and functions after display command', async () => {
|
||||
await runSuggestionTest('display \\', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
await runSuggestionTest('display ^', [fields, FIELD_AND_FILTER_FUNCTIONS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest functions after stats command', async () => {
|
||||
await runSuggestionTest('stats \\', [AGGREGATION_FUNCTIONS_STATS.map((v) => v.label)]);
|
||||
await runSuggestionTest('stats ^', [AGGREGATION_FUNCTIONS_STATS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest fields and some functions after `by` command', async () => {
|
||||
await runSuggestionTest('stats count(something) by \\', [
|
||||
await runSuggestionTest('stats count(something) by ^', [
|
||||
fields,
|
||||
STRING_FUNCTIONS.concat(DATETIME_FUNCTIONS, IP_FUNCTIONS).map((v) => v.label),
|
||||
]);
|
||||
});
|
||||
|
||||
it('should suggest fields and some functions after comparison operator', async () => {
|
||||
await runSuggestionTest('filter field1 >= \\', [
|
||||
await runSuggestionTest('filter field1 >= ^', [
|
||||
fields,
|
||||
[...NUMERIC_OPERATORS.map((v) => v.label), ...BOOLEAN_FUNCTIONS.map((v) => v.label)],
|
||||
]);
|
||||
});
|
||||
|
||||
it('should suggest fields directly after sort', async () => {
|
||||
await runSuggestionTest('sort \\', [fields]);
|
||||
await runSuggestionTest('sort ^', [fields]);
|
||||
});
|
||||
|
||||
it('should suggest fields directly after sort after a pipe', async () => {
|
||||
await runSuggestionTest('fields field1 | sort \\', [fields]);
|
||||
await runSuggestionTest('fields field1 | sort ^', [fields]);
|
||||
});
|
||||
|
||||
it('should suggest sort order after sort command and field', async () => {
|
||||
await runSuggestionTest('sort field1 \\', [['asc', 'desc']]);
|
||||
await runSuggestionTest('sort field1 ^', [['asc', 'desc']]);
|
||||
});
|
||||
|
||||
it('should suggest fields directly after parse', async () => {
|
||||
await runSuggestionTest('parse \\', [fields]);
|
||||
await runSuggestionTest('parse ^', [fields]);
|
||||
});
|
||||
|
||||
it('should suggest fields and bool functions after filter', async () => {
|
||||
await runSuggestionTest('filter \\', [fields, BOOLEAN_FUNCTIONS.map((v) => v.label)]);
|
||||
await runSuggestionTest('filter ^', [fields, BOOLEAN_FUNCTIONS.map((v) => v.label)]);
|
||||
});
|
||||
|
||||
it('should suggest fields and functions after filter bin() function', async () => {
|
||||
await runSuggestionTest('stats count(@message) by bin(30m), \\', [
|
||||
await runSuggestionTest('stats count(@message) by bin(30m), ^', [
|
||||
fields,
|
||||
STRING_FUNCTIONS.concat(DATETIME_FUNCTIONS, IP_FUNCTIONS).map((v) => v.label),
|
||||
]);
|
||||
});
|
||||
|
||||
it('should not suggest anything if not after comma in by expression', async () => {
|
||||
await runSuggestionTest('stats count(@message) by bin(30m) \\', []);
|
||||
await runSuggestionTest('stats count(@message) by bin(30m) ^', []);
|
||||
});
|
||||
});
|
||||
|
||||
@ -115,22 +116,24 @@ function makeDatasource(): CloudWatchDatasource {
|
||||
return Promise.resolve([{ value: { name: 'field1' } }, { value: { name: '@message' } }]);
|
||||
},
|
||||
},
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
} as any;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get suggestion items based on query. Use `\\` to mark position of the cursor.
|
||||
* Get suggestion items based on query. Use `^` to mark position of the cursor.
|
||||
*/
|
||||
function getProvideCompletionItems(query: string): Promise<TypeaheadOutput> {
|
||||
const provider = new CloudWatchLanguageProvider(makeDatasource());
|
||||
const cursorOffset = query.indexOf('\\');
|
||||
const queryWithoutCursor = query.replace('\\', '');
|
||||
const provider = new CloudWatchLogsLanguageProvider(makeDatasource());
|
||||
const cursorOffset = query.indexOf('^');
|
||||
const queryWithoutCursor = query.replace('^', '');
|
||||
let tokens: Token[] = Prism.tokenize(queryWithoutCursor, provider.getSyntax()) as any;
|
||||
tokens = addTokenMetadata(tokens);
|
||||
const value = new ValueMock(tokens, cursorOffset);
|
||||
return provider.provideCompletionItems(
|
||||
{
|
||||
value,
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
} as any,
|
||||
{ logGroups: [{ name: 'logGroup1', arn: 'logGroup1' }], region: 'custom' }
|
||||
);
|
||||
@ -145,12 +148,14 @@ class ValueMock {
|
||||
start: {
|
||||
offset: cursorOffset,
|
||||
},
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
} as any;
|
||||
|
||||
this.data = {
|
||||
get() {
|
||||
return tokens;
|
||||
},
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
} as any;
|
||||
}
|
||||
}
|
||||
@ -160,9 +165,11 @@ class ValueMock {
|
||||
* @param tokens
|
||||
*/
|
||||
function addTokenMetadata(tokens: Array<string | Token>): Token[] {
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
let prev = undefined as any;
|
||||
let offset = 0;
|
||||
return tokens.reduce((acc, token) => {
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
let newToken: any;
|
||||
if (typeof token === 'string') {
|
||||
newToken = {
|
@ -5,7 +5,10 @@ import { AbsoluteTimeRange, HistoryItem, LanguageProvider } from '@grafana/data'
|
||||
import { CompletionItemGroup, SearchFunctionType, Token, TypeaheadInput, TypeaheadOutput } from '@grafana/ui';
|
||||
import { getTemplateSrv } from 'app/features/templating/template_srv';
|
||||
|
||||
import { CloudWatchDatasource } from './datasource';
|
||||
import { CloudWatchDatasource } from '../../datasource';
|
||||
import { CloudWatchQuery, LogGroup, TSDBResponse } from '../../types';
|
||||
import { interpolateStringArrayUsingSingleOrMultiValuedVariable } from '../../utils/templateVariableUtils';
|
||||
|
||||
import syntax, {
|
||||
AGGREGATION_FUNCTIONS_STATS,
|
||||
BOOLEAN_FUNCTIONS,
|
||||
@ -16,8 +19,6 @@ import syntax, {
|
||||
QUERY_COMMANDS,
|
||||
STRING_FUNCTIONS,
|
||||
} from './syntax';
|
||||
import { CloudWatchQuery, LogGroup, TSDBResponse } from './types';
|
||||
import { interpolateStringArrayUsingSingleOrMultiValuedVariable } from './utils/templateVariableUtils';
|
||||
|
||||
export type CloudWatchHistoryItem = HistoryItem<CloudWatchQuery>;
|
||||
|
||||
@ -28,7 +29,7 @@ type TypeaheadContext = {
|
||||
region: string;
|
||||
};
|
||||
|
||||
export class CloudWatchLanguageProvider extends LanguageProvider {
|
||||
export class CloudWatchLogsLanguageProvider extends LanguageProvider {
|
||||
started = false;
|
||||
declare initialRange: AbsoluteTimeRange;
|
||||
datasource: CloudWatchDatasource;
|
@ -5,7 +5,7 @@ import {
|
||||
labelsVariable,
|
||||
metricVariable,
|
||||
namespaceVariable,
|
||||
} from '../__mocks__/CloudWatchDataSource';
|
||||
} from '../../__mocks__/CloudWatchDataSource';
|
||||
import {
|
||||
createFunctionWithParameter,
|
||||
createArray,
|
||||
@ -13,9 +13,9 @@ import {
|
||||
createGroupBy,
|
||||
createFunction,
|
||||
createProperty,
|
||||
} from '../__mocks__/sqlUtils';
|
||||
import { QueryEditorExpressionType } from '../expressions';
|
||||
import { SQLExpression } from '../types';
|
||||
} from '../../__mocks__/sqlUtils';
|
||||
import { QueryEditorExpressionType } from '../../expressions';
|
||||
import { SQLExpression } from '../../types';
|
||||
|
||||
import SQLGenerator from './SQLGenerator';
|
||||
|
@ -7,8 +7,8 @@ import {
|
||||
QueryEditorFunctionExpression,
|
||||
QueryEditorOperatorExpression,
|
||||
QueryEditorPropertyExpression,
|
||||
} from '../expressions';
|
||||
import { SQLExpression } from '../types';
|
||||
} from '../../expressions';
|
||||
import { SQLExpression } from '../../types';
|
||||
|
||||
export default class SQLGenerator {
|
||||
constructor(private templateSrv: TemplateSrv = getTemplateSrv()) {}
|
@ -3,11 +3,11 @@ import { uniq } from 'lodash';
|
||||
import { getTemplateSrv, TemplateSrv } from '@grafana/runtime';
|
||||
import type { Monaco, monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { ResourcesAPI } from '../../../resources/ResourcesAPI';
|
||||
import { CompletionItemProvider } from '../../monarch/CompletionItemProvider';
|
||||
import { LinkedToken } from '../../monarch/LinkedToken';
|
||||
import { TRIGGER_SUGGEST } from '../../monarch/commands';
|
||||
import { SuggestionKind, CompletionItemPriority, StatementPosition } from '../../monarch/types';
|
||||
import { ResourcesAPI } from '../../resources/ResourcesAPI';
|
||||
import {
|
||||
BY,
|
||||
FROM,
|
@ -5,9 +5,9 @@ import {
|
||||
singleLineFullQuery,
|
||||
singleLineEmptyQuery,
|
||||
singleLineTwoQueries,
|
||||
} from '../../__mocks__/cloudwatch-sql-test-data';
|
||||
import MonacoMock from '../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../__mocks__/monarch/TextModel';
|
||||
} from '../../../__mocks__/cloudwatch-sql-test-data';
|
||||
import MonacoMock from '../../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../../__mocks__/monarch/TextModel';
|
||||
import { linkedTokenBuilder } from '../../monarch/linkedTokenBuilder';
|
||||
import { StatementPosition } from '../../monarch/types';
|
||||
import cloudWatchSqlLanguageDefinition from '../definition';
|
@ -5,9 +5,9 @@ import {
|
||||
singleLineFullQuery,
|
||||
singleLineTwoQueries,
|
||||
multiLineIncompleteQueryWithoutNamespace,
|
||||
} from '../../__mocks__/cloudwatch-sql-test-data';
|
||||
import MonacoMock from '../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../__mocks__/monarch/TextModel';
|
||||
} from '../../../__mocks__/cloudwatch-sql-test-data';
|
||||
import MonacoMock from '../../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../../__mocks__/monarch/TextModel';
|
||||
import { LinkedToken } from '../../monarch/LinkedToken';
|
||||
import { linkedTokenBuilder } from '../../monarch/linkedTokenBuilder';
|
||||
import cloudWatchSqlLanguageDefinition from '../definition';
|
@ -1,9 +1,9 @@
|
||||
import { CompletionItemPriority } from '@grafana/experimental';
|
||||
import { Monaco, monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { afterLabelValue, insideLabelValue } from '../__mocks__/dynamic-label-test-data';
|
||||
import MonacoMock from '../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../__mocks__/monarch/TextModel';
|
||||
import { afterLabelValue, insideLabelValue } from '../../__mocks__/dynamic-label-test-data';
|
||||
import MonacoMock from '../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../__mocks__/monarch/TextModel';
|
||||
|
||||
import { DynamicLabelsCompletionItemProvider } from './CompletionItemProvider';
|
||||
import cloudWatchDynamicLabelsLanguageDefinition from './definition';
|
@ -1,10 +1,10 @@
|
||||
import { Monaco, monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { setupMockedTemplateService } from '../../__mocks__/CloudWatchDataSource';
|
||||
import * as MetricMathTestData from '../../__mocks__/metric-math-test-data';
|
||||
import MonacoMock from '../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../__mocks__/monarch/TextModel';
|
||||
import { ResourcesAPI } from '../../resources/ResourcesAPI';
|
||||
import { setupMockedTemplateService } from '../../../__mocks__/CloudWatchDataSource';
|
||||
import * as MetricMathTestData from '../../../__mocks__/metric-math-test-data';
|
||||
import MonacoMock from '../../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../../__mocks__/monarch/TextModel';
|
||||
import { ResourcesAPI } from '../../../resources/ResourcesAPI';
|
||||
import cloudWatchMetricMathLanguageDefinition from '../definition';
|
||||
import {
|
||||
METRIC_MATH_FNS,
|
@ -1,11 +1,11 @@
|
||||
import { getTemplateSrv, TemplateSrv } from '@grafana/runtime';
|
||||
import type { Monaco, monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { ResourcesAPI } from '../../../resources/ResourcesAPI';
|
||||
import { CompletionItemProvider } from '../../monarch/CompletionItemProvider';
|
||||
import { LinkedToken } from '../../monarch/LinkedToken';
|
||||
import { TRIGGER_SUGGEST } from '../../monarch/commands';
|
||||
import { SuggestionKind, CompletionItemPriority, StatementPosition } from '../../monarch/types';
|
||||
import { ResourcesAPI } from '../../resources/ResourcesAPI';
|
||||
import {
|
||||
METRIC_MATH_FNS,
|
||||
METRIC_MATH_KEYWORDS,
|
@ -1,8 +1,8 @@
|
||||
import { monacoTypes } from '@grafana/ui';
|
||||
|
||||
import * as MetricMathTestQueries from '../../__mocks__/metric-math-test-data';
|
||||
import MonacoMock from '../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../__mocks__/monarch/TextModel';
|
||||
import * as MetricMathTestQueries from '../../../__mocks__/metric-math-test-data';
|
||||
import MonacoMock from '../../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../../__mocks__/monarch/TextModel';
|
||||
import { linkedTokenBuilder } from '../../monarch/linkedTokenBuilder';
|
||||
import { StatementPosition } from '../../monarch/types';
|
||||
import cloudWatchSqlLanguageDefinition from '../definition';
|
@ -1,7 +1,7 @@
|
||||
import { getTemplateSrv, TemplateSrv } from '@grafana/runtime';
|
||||
import type { Monaco, monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { ResourcesAPI } from '../resources/ResourcesAPI';
|
||||
import { ResourcesAPI } from '../../resources/ResourcesAPI';
|
||||
|
||||
import { LinkedToken } from './LinkedToken';
|
||||
import { linkedTokenBuilder } from './linkedTokenBuilder';
|
@ -1,8 +1,8 @@
|
||||
import { monacoTypes } from '@grafana/ui';
|
||||
|
||||
import { multiLineFullQuery, singleLineFullQuery } from '../__mocks__/cloudwatch-sql-test-data';
|
||||
import MonacoMock from '../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../__mocks__/monarch/TextModel';
|
||||
import { multiLineFullQuery, singleLineFullQuery } from '../../__mocks__/cloudwatch-sql-test-data';
|
||||
import MonacoMock from '../../__mocks__/monarch/Monaco';
|
||||
import TextModel from '../../__mocks__/monarch/TextModel';
|
||||
import { SQLTokenTypes } from '../cloudwatch-sql/completion/types';
|
||||
import cloudWatchSqlLanguageDefinition from '../cloudwatch-sql/definition';
|
||||
import { DESC, SELECT } from '../cloudwatch-sql/language';
|
Loading…
Reference in New Issue
Block a user