mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Tempo: Support special characters in identifiers (#79565)
This commit is contained in:
parent
9fd3c9df55
commit
af8d8f29f3
@ -252,7 +252,7 @@
|
||||
"@grafana/flamegraph": "workspace:*",
|
||||
"@grafana/google-sdk": "0.1.1",
|
||||
"@grafana/lezer-logql": "0.2.2",
|
||||
"@grafana/lezer-traceql": "0.0.11",
|
||||
"@grafana/lezer-traceql": "0.0.12",
|
||||
"@grafana/monaco-logql": "^0.0.7",
|
||||
"@grafana/runtime": "workspace:*",
|
||||
"@grafana/scenes": "1.27.0",
|
||||
|
@ -2,10 +2,10 @@ import { computeErrorMessage, getErrorNodes } from './errorHighlighting';
|
||||
|
||||
describe('Check for syntax errors in query', () => {
|
||||
it.each([
|
||||
['{span.http.status_code = }', 'Invalid value after comparison or aritmetic operator.'],
|
||||
['{span.http.status_code 200}', 'Invalid operator after field expression.'],
|
||||
['{span.http.status_code = }', 'Invalid value after comparison or arithmetic operator.'],
|
||||
['{span.http.status_code 200}', 'Invalid comparison operator after field expression.'],
|
||||
['{span.http.status_code ""}', 'Invalid operator after field expression.'],
|
||||
['{span.http.status_code @ 200}', 'Invalid operator after field expression.'],
|
||||
['{span.http.status_code @ 200}', 'Invalid comparison operator after field expression.'],
|
||||
['{span.http.status_code span.http.status_code}', 'Invalid operator after field expression.'],
|
||||
[
|
||||
'{span.http.status_code = 200} {span.http.status_code = 200}',
|
||||
@ -24,12 +24,12 @@ describe('Check for syntax errors in query', () => {
|
||||
'{span.http.status_code = 200} && {span.http.status_code = 200} | avg() > 3',
|
||||
'Invalid expression for aggregator operator.',
|
||||
],
|
||||
['{ 1 + 1 = 2 + }', 'Invalid value after comparison or aritmetic operator.'],
|
||||
['{ 1 + 1 = 2 + }', 'Invalid value after comparison or arithmetic operator.'],
|
||||
['{ .a && }', 'Invalid value after logical operator.'],
|
||||
['{ .a || }', 'Invalid value after logical operator.'],
|
||||
['{ .a + }', 'Invalid value after comparison or aritmetic operator.'],
|
||||
['{ 200 = 200 200 }', 'Invalid operator after field expression.'],
|
||||
['{.foo 300}', 'Invalid operator after field expression.'],
|
||||
['{ .a + }', 'Invalid value after comparison or arithmetic operator.'],
|
||||
['{ 200 = 200 200 }', 'Invalid comparison operator after field expression.'],
|
||||
['{.foo 300}', 'Invalid comparison operator after field expression.'],
|
||||
['{.foo 300 && .bar = 200}', 'Invalid operator after field expression.'],
|
||||
['{.foo 300 && .bar 200}', 'Invalid operator after field expression.'],
|
||||
['{.foo=1} {.bar=2}', 'Invalid spanset combining operator after spanset expression.'],
|
||||
@ -48,8 +48,8 @@ describe('Check for syntax errors in query', () => {
|
||||
['{.}', 'Invalid expression for spanset.'],
|
||||
['{ resource. }', 'Invalid expression for spanset.'],
|
||||
['{ span. }', 'Invalid expression for spanset.'],
|
||||
['{.foo=}', 'Invalid value after comparison or aritmetic operator.'],
|
||||
['{.foo="}', 'Invalid value after comparison or aritmetic operator.'],
|
||||
['{.foo=}', 'Invalid value after comparison or arithmetic operator.'],
|
||||
['{.foo="}', 'Invalid value after comparison or arithmetic operator.'],
|
||||
['{.foo=300} |', 'Invalid aggregation operator after pipepile operator.'],
|
||||
['{.foo=300} && {.bar=200} |', 'Invalid aggregation operator after pipepile operator.'],
|
||||
['{.foo=300} && {.bar=300} && {.foo=300} |', 'Invalid aggregation operator after pipepile operator.'],
|
||||
|
@ -32,7 +32,7 @@ export const computeErrorMessage = (errorNode: SyntaxNode) => {
|
||||
case Or:
|
||||
return 'Invalid value after logical operator.';
|
||||
case FieldOp:
|
||||
return 'Invalid value after comparison or aritmetic operator.';
|
||||
return 'Invalid value after comparison or arithmetic operator.';
|
||||
default:
|
||||
return 'Invalid operator after field expression.';
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ const keywords = intrinsics.concat(scopes);
|
||||
|
||||
const statusValues = ['ok', 'unset', 'error', 'false', 'true'];
|
||||
|
||||
export const language: languages.IMonarchLanguage = {
|
||||
const language: languages.IMonarchLanguage = {
|
||||
ignoreCase: false,
|
||||
defaultToken: '',
|
||||
tokenPostfix: '.traceql',
|
||||
@ -88,13 +88,9 @@ export const language: languages.IMonarchLanguage = {
|
||||
|
||||
// functions and predefined values
|
||||
[
|
||||
// If not inside quotes, namely outside of open and closed `"`,
|
||||
// allow only word characters (those matching `\w`) and full stop (`.`).
|
||||
//
|
||||
// If inside quotes, e.g. `"here"`, allow for any character, except for `"` and `\` which must be
|
||||
// escaped with a backslash (`\"` and `\\` respectively).
|
||||
// Quotes can be used to support special tag names, such as those with spaces (e.g., `my tag`).
|
||||
/(?:\w|[.]|"(?:\\"|\\\\|[^\\"])*")+/,
|
||||
// Inside (double) quotes, all characters are allowed, with the exception of `\` and `"` that must be escaped (`\\` and `\"`).
|
||||
// Outside quotes, some more characters are prohibited, such as `!` and `=`.
|
||||
/(?:\w|^[^{}()=~!<>&|," ]|"(?:\\"|\\\\|[^\\"])*")+/,
|
||||
{
|
||||
cases: {
|
||||
'@functions': 'predefined',
|
||||
@ -147,6 +143,7 @@ export const language: languages.IMonarchLanguage = {
|
||||
},
|
||||
};
|
||||
|
||||
// For "TraceQL" tab (Monarch editor for TraceQL)
|
||||
export const languageDefinition = {
|
||||
id: 'traceql',
|
||||
extensions: ['.traceql'],
|
||||
@ -158,6 +155,7 @@ export const languageDefinition = {
|
||||
},
|
||||
};
|
||||
|
||||
// For "Search" tab (query builder)
|
||||
export const traceqlGrammar: Grammar = {
|
||||
comment: {
|
||||
pattern: /\/\/.*/,
|
||||
|
10
yarn.lock
10
yarn.lock
@ -3213,12 +3213,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@grafana/lezer-traceql@npm:0.0.11":
|
||||
version: 0.0.11
|
||||
resolution: "@grafana/lezer-traceql@npm:0.0.11"
|
||||
"@grafana/lezer-traceql@npm:0.0.12":
|
||||
version: 0.0.12
|
||||
resolution: "@grafana/lezer-traceql@npm:0.0.12"
|
||||
peerDependencies:
|
||||
"@lezer/lr": ^1.3.0
|
||||
checksum: cb312cf8f0cf70af6eb307aa0b6478cd8bde9233f281d6f4bb385f3c846a1e9fe0caf8addef5cbc0ccadb57b968fbd10e26ad5df6f898fb2b174536dca924926
|
||||
checksum: 615c215a7c2a72b38138a322feed3de8ff85a5828bdd6933adcf54a41e078365d3bd7db2f046cb17ad21b77a59b100b24a8946369c7dc41c15cac1826dde845b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -17317,7 +17317,7 @@ __metadata:
|
||||
"@grafana/flamegraph": "workspace:*"
|
||||
"@grafana/google-sdk": "npm:0.1.1"
|
||||
"@grafana/lezer-logql": "npm:0.2.2"
|
||||
"@grafana/lezer-traceql": "npm:0.0.11"
|
||||
"@grafana/lezer-traceql": "npm:0.0.12"
|
||||
"@grafana/monaco-logql": "npm:^0.0.7"
|
||||
"@grafana/runtime": "workspace:*"
|
||||
"@grafana/scenes": "npm:1.27.0"
|
||||
|
Loading…
Reference in New Issue
Block a user