{"version":3,"file":"PromQueryModeller.cjs","sources":["../../../src/querybuilder/PromQueryModeller.ts"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/PromQueryModeller.ts\nimport { getFunctions } from '../promql';\n\nimport { getAggregationOperations } from './aggregations';\nimport { getOperationDefinitions } from './operations';\nimport { PromQueryModellerBase } from './shared/PromQueryModellerBase';\nimport {\n  type PromQueryPattern,\n  PromQueryPatternType,\n  PromVisualQueryOperationCategory,\n  type PromQueryModellerInterface,\n} from './types';\n\nexport class PromQueryModeller extends PromQueryModellerBase implements PromQueryModellerInterface {\n  constructor() {\n    super(() => {\n      const allOperations = [...getOperationDefinitions(), ...getAggregationOperations()];\n      for (const op of allOperations) {\n        const func = getFunctions().find((x) => x.insertText === op.id);\n        if (func) {\n          op.documentation = func.documentation;\n        }\n      }\n      return allOperations;\n    });\n\n    this.setOperationCategories([\n      PromVisualQueryOperationCategory.Aggregations,\n      PromVisualQueryOperationCategory.RangeFunctions,\n      PromVisualQueryOperationCategory.Functions,\n      PromVisualQueryOperationCategory.BinaryOps,\n      PromVisualQueryOperationCategory.Trigonometric,\n      PromVisualQueryOperationCategory.Time,\n    ]);\n  }\n\n  getQueryPatterns(): PromQueryPattern[] {\n    return [\n      {\n        name: 'Rate then sum',\n        type: PromQueryPatternType.Rate,\n        operations: [\n          { id: 'rate', params: ['$__rate_interval'] },\n          { id: 'sum', params: [] },\n        ],\n      },\n      {\n        name: 'Rate then sum by(label) then avg',\n        type: PromQueryPatternType.Rate,\n        operations: [\n          { id: 'rate', params: ['$__rate_interval'] },\n          { id: '__sum_by', params: [''] },\n          { id: 'avg', params: [] },\n        ],\n      },\n      {\n        name: 'Histogram quantile on rate',\n        type: PromQueryPatternType.Histogram,\n        operations: [\n          { id: 'rate', params: ['$__rate_interval'] },\n          { id: '__sum_by', params: ['le'] },\n          { id: 'histogram_quantile', params: [0.95] },\n        ],\n      },\n      {\n        name: 'Histogram quantile on increase',\n        type: PromQueryPatternType.Histogram,\n        operations: [\n          { id: 'increase', params: ['$__rate_interval'] },\n          { id: '__max_by', params: ['le'] },\n          { id: 'histogram_quantile', params: [0.95] },\n        ],\n      },\n      {\n        name: 'Binary Query',\n        type: PromQueryPatternType.Binary,\n        operations: [\n          { id: 'rate', params: ['$__rate_interval'] },\n          { id: 'sum', params: [] },\n        ],\n        binaryQueries: [\n          {\n            operator: '/',\n            query: {\n              metric: '',\n              labels: [],\n              operations: [\n                { id: 'rate', params: ['$__rate_interval'] },\n                { id: 'sum', params: [] },\n              ],\n            },\n          },\n        ],\n      },\n    ];\n  }\n}\n"],"names":["PromQueryModellerBase","getOperationDefinitions","getAggregationOperations","getFunctions","PromVisualQueryOperationCategory","PromQueryPatternType"],"mappings":"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"}