{"version":3,"file":"promql.mjs","sources":["../../../../src/components/monaco-query-field/promql.ts"],"sourcesContent":["// The MIT License (MIT)\n//\n// Copyright (c) Celian Garcia and Augustin Husson @ Amadeus IT Group\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n'use strict';\n// import { languages } from \"monaco-editor\";\n// noinspection JSUnusedGlobalSymbols\nexport const languageConfiguration = {\n  // the default separators except `@$`\n  wordPattern: /(-?\\d*\\.\\d\\w*)|([^`~!#%^&*()\\-=+\\[{\\]}\\\\|;:'\",.<>\\/?\\s]+)/g,\n  // Not possible to make comments in PromQL syntax\n  comments: {\n    lineComment: '#',\n  },\n  brackets: [\n    ['{', '}'],\n    ['[', ']'],\n    ['(', ')'],\n  ],\n  autoClosingPairs: [\n    { open: '{', close: '}' },\n    { open: '[', close: ']' },\n    { open: '(', close: ')' },\n    { open: '\"', close: '\"' },\n    { open: \"'\", close: \"'\" },\n  ],\n  surroundingPairs: [\n    { open: '{', close: '}' },\n    { open: '[', close: ']' },\n    { open: '(', close: ')' },\n    { open: '\"', close: '\"' },\n    { open: \"'\", close: \"'\" },\n    { open: '<', close: '>' },\n  ],\n  folding: {},\n};\n// PromQL Aggregation Operators\n// (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)\nconst aggregations = [\n  'sum',\n  'min',\n  'max',\n  'avg',\n  'group',\n  'stddev',\n  'stdvar',\n  'count',\n  'count_values',\n  'bottomk',\n  'topk',\n  'quantile',\n];\n// PromQL functions\n// (https://prometheus.io/docs/prometheus/latest/querying/functions/)\nconst functions = [\n  'abs',\n  'absent',\n  'ceil',\n  'changes',\n  'clamp',\n  'clamp_max',\n  'clamp_min',\n  'day_of_month',\n  'day_of_week',\n  'days_in_month',\n  'delta',\n  'deriv',\n  'double_exponential_smoothing',\n  'exp',\n  'floor',\n  'histogram_quantile',\n  'histogram_avg',\n  'histogram_count',\n  'histogram_sum',\n  'histogram_fraction',\n  'histogram_stddev',\n  'histogram_stdvar',\n  // Renamed as DoubleExponentialSmoothing with Prometheus v3.x\n  // https://github.com/prometheus/prometheus/pull/14930\n  'holt_winters',\n  'hour',\n  'idelta',\n  'increase',\n  'info',\n  'irate',\n  'label_join',\n  'label_replace',\n  'ln',\n  'log2',\n  'log10',\n  'minute',\n  'month',\n  'predict_linear',\n  'rate',\n  'resets',\n  'round',\n  'scalar',\n  'sort',\n  'sort_desc',\n  'sqrt',\n  'time',\n  'timestamp',\n  'vector',\n  'year',\n];\n// PromQL specific functions: Aggregations over time\n// (https://prometheus.io/docs/prometheus/latest/querying/functions/#aggregation_over_time)\nconst aggregationsOverTime = [];\nfor (let _i = 0, aggregations_1 = aggregations; _i < aggregations_1.length; _i++) {\n  let agg = aggregations_1[_i];\n  aggregationsOverTime.push(agg + '_over_time');\n}\n// PromQL vector matching + the by and without clauses\n// (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)\nconst vectorMatching = ['on', 'ignoring', 'group_right', 'group_left', 'by', 'without'];\n// Produce a regex matching elements : (elt1|elt2|...)\nconst vectorMatchingRegex =\n  '(' +\n  vectorMatching.reduce(function (prev, curr) {\n    return prev + '|' + curr;\n  }) +\n  ')';\n// PromQL Operators\n// (https://prometheus.io/docs/prometheus/latest/querying/operators/)\nconst operators = ['+', '-', '*', '/', '%', '^', '==', '!=', '>', '<', '>=', '<=', 'and', 'or', 'unless'];\n// PromQL offset modifier\n// (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)\nconst offsetModifier = ['offset'];\n// Merging all the keywords in one list\nconst keywords = aggregations\n  .concat(functions)\n  .concat(aggregationsOverTime)\n  .concat(vectorMatching)\n  .concat(offsetModifier);\n// noinspection JSUnusedGlobalSymbols\nexport const language = {\n  ignoreCase: false,\n  defaultToken: '',\n  tokenPostfix: '.promql',\n  keywords: keywords,\n  operators: operators,\n  vectorMatching: vectorMatchingRegex,\n  // we include these common regular expressions\n  symbols: /[=><!~?:&|+\\-*\\/^%]+/,\n  escapes: /\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n  digits: /\\d+(_+\\d+)*/,\n  octaldigits: /[0-7]+(_+[0-7]+)*/,\n  binarydigits: /[0-1]+(_+[0-1]+)*/,\n  hexdigits: /[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,\n  integersuffix: /(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,\n  floatsuffix: /[fFlL]?/,\n  // The main tokenizer for our languages\n  tokenizer: {\n    root: [\n      // 'by', 'without' and vector matching\n      [/@vectorMatching\\s*(?=\\()/, 'type', '@clauses'],\n      // labels\n      [/[a-z_]\\w*(?=\\s*(=|!=|=~|!~))/, 'tag'],\n      // comments\n      [/(^#.*$)/, 'comment'],\n      // all keywords have the same color\n      [\n        /[a-zA-Z_]\\w*/,\n        {\n          cases: {\n            '@keywords': 'type',\n            '@default': 'identifier',\n          },\n        },\n      ],\n      // strings\n      [/\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n      [/'([^'\\\\]|\\\\.)*$/, 'string.invalid'],\n      [/\"/, 'string', '@string_double'],\n      [/'/, 'string', '@string_single'],\n      [/`/, 'string', '@string_backtick'],\n      // whitespace\n      { include: '@whitespace' },\n      // delimiters and operators\n      [/[{}()\\[\\]]/, '@brackets'],\n      [/[<>](?!@symbols)/, '@brackets'],\n      [\n        /@symbols/,\n        {\n          cases: {\n            '@operators': 'delimiter',\n            '@default': '',\n          },\n        },\n      ],\n      // numbers\n      [/\\d+[smhdwy]/, 'number'],\n      [/\\d*\\d+[eE]([\\-+]?\\d+)?(@floatsuffix)/, 'number.float'],\n      [/\\d*\\.\\d+([eE][\\-+]?\\d+)?(@floatsuffix)/, 'number.float'],\n      [/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/, 'number.hex'],\n      [/0[0-7']*[0-7](@integersuffix)/, 'number.octal'],\n      [/0[bB][0-1']*[0-1](@integersuffix)/, 'number.binary'],\n      [/\\d[\\d']*\\d(@integersuffix)/, 'number'],\n      [/\\d(@integersuffix)/, 'number'],\n    ],\n    string_double: [\n      [/[^\\\\\"]+/, 'string'],\n      [/@escapes/, 'string.escape'],\n      [/\\\\./, 'string.escape.invalid'],\n      [/\"/, 'string', '@pop'],\n    ],\n    string_single: [\n      [/[^\\\\']+/, 'string'],\n      [/@escapes/, 'string.escape'],\n      [/\\\\./, 'string.escape.invalid'],\n      [/'/, 'string', '@pop'],\n    ],\n    string_backtick: [\n      [/[^\\\\`$]+/, 'string'],\n      [/@escapes/, 'string.escape'],\n      [/\\\\./, 'string.escape.invalid'],\n      [/`/, 'string', '@pop'],\n    ],\n    clauses: [\n      [/[^(,)]/, 'tag'],\n      [/\\)/, 'identifier', '@pop'],\n    ],\n    whitespace: [[/[ \\t\\r\\n]+/, 'white']],\n  },\n};\n// noinspection JSUnusedGlobalSymbols\n// export const completionItemProvider = {\n//     provideCompletionItems: function () {\n//         // To simplify, we made the choice to never create automatically the parenthesis behind keywords\n//         // It is because in PromQL, some keywords need parenthesis behind, some don't, some can have but it's optional.\n//         const suggestions = keywords.map(function (value) {\n//             return {\n//                 label: value,\n//                 kind: languages.CompletionItemKind.Keyword,\n//                 insertText: value,\n//                 insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet\n//             };\n//         });\n//         return { suggestions: suggestions };\n//     }\n// };\n"],"names":[],"mappings":"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"}