diff --git a/package.json b/package.json index 80bdf7108c1..a83bd3fbeee 100644 --- a/package.json +++ b/package.json @@ -282,7 +282,6 @@ "@opentelemetry/exporter-collector": "0.25.0", "@opentelemetry/semantic-conventions": "1.25.1", "@popperjs/core": "2.11.8", - "@prometheus-io/lezer-promql": "^0.52.0", "@react-aria/dialog": "3.5.16", "@react-aria/focus": "3.18.1", "@react-aria/overlays": "3.23.1", diff --git a/packages/grafana-prometheus/package.json b/packages/grafana-prometheus/package.json index 5d83a16eac4..849befcdb9c 100644 --- a/packages/grafana-prometheus/package.json +++ b/packages/grafana-prometheus/package.json @@ -48,8 +48,8 @@ "@leeoniya/ufuzzy": "1.0.14", "@lezer/common": "1.2.1", "@lezer/highlight": "1.2.0", - "@lezer/lr": "1.4.0", - "@prometheus-io/lezer-promql": "0.52.1", + "@lezer/lr": "1.4.2", + "@prometheus-io/lezer-promql": "0.53.1", "@reduxjs/toolkit": "2.2.7", "d3": "7.9.0", "date-fns": "3.6.0", diff --git a/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/situation.ts b/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/situation.ts index decb3c2c9ac..0bc0d18cdd5 100644 --- a/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/situation.ts +++ b/packages/grafana-prometheus/src/components/monaco-query-field/monaco-completion-provider/situation.ts @@ -9,7 +9,6 @@ import { FunctionCallBody, GroupingLabels, Identifier, - LabelMatcher, LabelMatchers, LabelName, MatchOp, @@ -19,6 +18,7 @@ import { parser, PromQL, StringLiteral, + UnquotedLabelMatcher, VectorSelector, } from '@prometheus-io/lezer-promql'; @@ -33,7 +33,7 @@ type NodeTypeId = | typeof FunctionCallBody | typeof GroupingLabels | typeof Identifier - | typeof LabelMatcher + | typeof UnquotedLabelMatcher | typeof LabelMatchers | typeof LabelName | typeof PromQL @@ -178,7 +178,7 @@ const RESOLVERS: Resolver[] = [ fun: resolveInFunction, }, { - path: [StringLiteral, LabelMatcher], + path: [StringLiteral, UnquotedLabelMatcher], fun: resolveLabelMatcher, }, { @@ -186,7 +186,7 @@ const RESOLVERS: Resolver[] = [ fun: resolveTopLevel, }, { - path: [ERROR_NODE_NAME, LabelMatcher], + path: [ERROR_NODE_NAME, UnquotedLabelMatcher], fun: resolveLabelMatcher, }, { @@ -216,7 +216,7 @@ function getLabelOp(opNode: SyntaxNode): LabelOperator | null { } function getLabel(labelMatcherNode: SyntaxNode, text: string): Label | null { - if (labelMatcherNode.type.id !== LabelMatcher) { + if (labelMatcherNode.type.id !== UnquotedLabelMatcher) { return null; } @@ -253,7 +253,7 @@ function getLabels(labelMatchersNode: SyntaxNode, text: string): Label[] { return []; } - const labelNodes = labelMatchersNode.getChildren(LabelMatcher); + const labelNodes = labelMatchersNode.getChildren(UnquotedLabelMatcher); return labelNodes.map((ln) => getLabel(ln, text)).filter(notEmpty); } @@ -317,7 +317,7 @@ function resolveLabelMatcher(node: SyntaxNode, text: string, pos: number): Situa // - or an error node (like in `{job=^}`) const inStringNode = !node.type.isError; - const parent = walk(node, [['parent', LabelMatcher]]); + const parent = walk(node, [['parent', UnquotedLabelMatcher]]); if (parent === null) { return null; } @@ -387,7 +387,7 @@ function resolveDurations(node: SyntaxNode, text: string, pos: number): Situatio function resolveLabelKeysWithEquals(node: SyntaxNode, text: string, pos: number): Situation | null { // next false positive: // `something{a="1"^}` - const child = walk(node, [['firstChild', LabelMatcher]]); + const child = walk(node, [['firstChild', UnquotedLabelMatcher]]); if (child !== null) { // means the label-matching part contains at least one label already. // diff --git a/packages/grafana-prometheus/src/querybuilder/parsing.test.ts b/packages/grafana-prometheus/src/querybuilder/parsing.test.ts index 406f9fd8871..ce2aaede3ac 100644 --- a/packages/grafana-prometheus/src/querybuilder/parsing.test.ts +++ b/packages/grafana-prometheus/src/querybuilder/parsing.test.ts @@ -514,7 +514,7 @@ describe('buildVisualQueryFromString', () => { text: 'afe}', from: 14, to: 18, - parentType: 'LabelMatcher', + parentType: 'UnquotedLabelMatcher', }, ], query: { diff --git a/packages/grafana-prometheus/src/querybuilder/parsing.ts b/packages/grafana-prometheus/src/querybuilder/parsing.ts index 95a12032051..ecdf9044d7e 100644 --- a/packages/grafana-prometheus/src/querybuilder/parsing.ts +++ b/packages/grafana-prometheus/src/querybuilder/parsing.ts @@ -11,7 +11,6 @@ import { FunctionIdentifier, GroupingLabels, Identifier, - LabelMatcher, LabelName, MatchingModifierClause, MatchOp, @@ -20,6 +19,7 @@ import { ParenExpr, parser, StringLiteral, + UnquotedLabelMatcher, VectorSelector, Without, } from '@prometheus-io/lezer-promql'; @@ -145,7 +145,7 @@ export function handleExpression(expr: string, node: SyntaxNode, context: Contex break; } - case LabelMatcher: { + case UnquotedLabelMatcher: { // Same as MetricIdentifier should be just one per query. visQuery.labels.push(getLabel(expr, node)); const err = node.getChild(ErrorId); diff --git a/yarn.lock b/yarn.lock index 3e7091f9eb7..1761c4ae9bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3563,8 +3563,8 @@ __metadata: "@leeoniya/ufuzzy": "npm:1.0.14" "@lezer/common": "npm:1.2.1" "@lezer/highlight": "npm:1.2.0" - "@lezer/lr": "npm:1.4.0" - "@prometheus-io/lezer-promql": "npm:0.52.1" + "@lezer/lr": "npm:1.4.2" + "@prometheus-io/lezer-promql": "npm:0.53.1" "@reduxjs/toolkit": "npm:2.2.7" "@rollup/plugin-image": "npm:3.0.3" "@rollup/plugin-node-resolve": "npm:15.2.3" @@ -4622,12 +4622,12 @@ __metadata: languageName: node linkType: hard -"@lezer/lr@npm:1.4.0": - version: 1.4.0 - resolution: "@lezer/lr@npm:1.4.0" +"@lezer/lr@npm:1.4.2": + version: 1.4.2 + resolution: "@lezer/lr@npm:1.4.2" dependencies: "@lezer/common": "npm:^1.0.0" - checksum: 10/7391d0d08e54cd9e4f4d46e6ee6aa81fbaf079b22ed9c13d01fc9928e0ffd16d0c2d21b2cedd55675ad6c687277db28349ea8db81c9c69222cd7e7c40edd026e + checksum: 10/f7b505906c8d8df14c07866553cf3dae1e065b1da8b28fbb4193fd67ab8d187eb45f92759e29a2cfe4283296f0aa864b38a0a91708ecfc3e24b8f662d626e0c6 languageName: node linkType: hard @@ -5841,13 +5841,13 @@ __metadata: languageName: node linkType: hard -"@prometheus-io/lezer-promql@npm:0.52.1, @prometheus-io/lezer-promql@npm:^0.52.0": - version: 0.52.1 - resolution: "@prometheus-io/lezer-promql@npm:0.52.1" +"@prometheus-io/lezer-promql@npm:0.53.1": + version: 0.53.1 + resolution: "@prometheus-io/lezer-promql@npm:0.53.1" peerDependencies: "@lezer/highlight": ^1.1.2 "@lezer/lr": ^1.2.3 - checksum: 10/531164b8ddedbe0e0ba9304ea918f5cb0bb9c14f5e68c835fa02d3dbbe37c90daa8344a54666ba32aea6db8dfc0720cbc5b5ea50e1ed1126e987fcea7394b595 + checksum: 10/ebb506155f6343277e7bafc7342af3b8c0f162eda08c380f680f8c526878211a17be92e75b5d5de69cbf344f50a76221472b50533dde152ea396e148278c2d77 languageName: node linkType: hard @@ -17526,7 +17526,6 @@ __metadata: "@playwright/test": "npm:1.46.0" "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.15" "@popperjs/core": "npm:2.11.8" - "@prometheus-io/lezer-promql": "npm:^0.52.0" "@react-aria/dialog": "npm:3.5.16" "@react-aria/focus": "npm:3.18.1" "@react-aria/overlays": "npm:3.23.1"