@perses-dev/prometheus-plugin 0.57.0-beta.0 → 0.57.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/__mf/js/{Prometheus.2bb892ab.js → Prometheus.3cac2d10.js} +3 -3
  2. package/__mf/js/async/1728.46efbfb8.js +1 -0
  3. package/__mf/js/async/3499.bef2e2e5.js +1 -0
  4. package/__mf/js/async/3652.fc1e5f95.js +7 -0
  5. package/__mf/js/async/425.1ec8867f.js +1 -0
  6. package/__mf/js/async/4657.e3d53a21.js +2 -0
  7. package/__mf/js/async/54.f6f480ef.js +22 -0
  8. package/__mf/js/async/5440.8ced5513.js +2 -0
  9. package/__mf/js/async/{5440.c13c3533.js.LICENSE.txt → 5440.8ced5513.js.LICENSE.txt} +3 -3
  10. package/__mf/js/async/9010.15208552.js +2 -0
  11. package/__mf/js/async/{9020.c19782f1.js → 9020.662dc353.js} +1 -1
  12. package/__mf/js/async/{__federation_expose_PrometheusDatasource.6f63e147.js → __federation_expose_PrometheusDatasource.caac7bfc.js} +1 -1
  13. package/__mf/js/async/__federation_expose_PrometheusExplorer.22434cd0.js +1 -0
  14. package/__mf/js/async/{__federation_expose_PrometheusLabelNamesVariable.40984a4d.js → __federation_expose_PrometheusLabelNamesVariable.087a9360.js} +1 -1
  15. package/__mf/js/async/{__federation_expose_PrometheusLabelValuesVariable.bd3eb00c.js → __federation_expose_PrometheusLabelValuesVariable.f9135d9a.js} +1 -1
  16. package/__mf/js/async/{__federation_expose_PrometheusPromQLVariable.5cca8417.js → __federation_expose_PrometheusPromQLVariable.d3f9f4b7.js} +1 -1
  17. package/__mf/js/async/{__federation_expose_PrometheusTimeSeriesQuery.f59141f4.js → __federation_expose_PrometheusTimeSeriesQuery.95a9abcc.js} +1 -1
  18. package/__mf/js/{main.9617b605.js → main.8eeb4292.js} +3 -3
  19. package/lib/bootstrap.js +1 -1
  20. package/lib/bootstrap.js.map +1 -1
  21. package/lib/cjs/bootstrap.js +1 -1
  22. package/lib/cjs/components/PromQLEditor.js +1 -1
  23. package/lib/cjs/components/TreeNode.js +1 -1
  24. package/lib/cjs/components/index.js +1 -1
  25. package/lib/cjs/components/promql/ast.js +1 -1
  26. package/lib/cjs/components/promql/format.js +1 -1
  27. package/lib/cjs/components/promql/functionSignatures.js +1 -1
  28. package/lib/cjs/components/promql/serialize.js +1 -1
  29. package/lib/cjs/components/promql/utils.js +1 -1
  30. package/lib/cjs/components/query.js +1 -1
  31. package/lib/cjs/env.d.js +1 -1
  32. package/lib/cjs/explore/PrometheusExplorer.js +1 -1
  33. package/lib/cjs/explore/PrometheusMetricsFinder/PrometheusMetricsFinder.js +1 -1
  34. package/lib/cjs/explore/PrometheusMetricsFinder/display/MetricChip.js +1 -1
  35. package/lib/cjs/explore/PrometheusMetricsFinder/display/list/MetricList.js +1 -1
  36. package/lib/cjs/explore/PrometheusMetricsFinder/filter/FilterInputs.js +1 -1
  37. package/lib/cjs/explore/PrometheusMetricsFinder/filter/FinderFilters.js +1 -1
  38. package/lib/cjs/explore/PrometheusMetricsFinder/index.js +1 -1
  39. package/lib/cjs/explore/PrometheusMetricsFinder/overview/MetricOverview.js +1 -1
  40. package/lib/cjs/explore/PrometheusMetricsFinder/overview/tabs/JobTab.js +1 -1
  41. package/lib/cjs/explore/PrometheusMetricsFinder/overview/tabs/OverviewTab.js +1 -1
  42. package/lib/cjs/explore/PrometheusMetricsFinder/overview/tabs/SimilarTab.js +1 -1
  43. package/lib/cjs/explore/PrometheusMetricsFinder/types.js +1 -1
  44. package/lib/cjs/explore/PrometheusMetricsFinder/utils.js +1 -1
  45. package/lib/cjs/explore/index.js +12 -0
  46. package/lib/cjs/getPluginModule.js +12 -0
  47. package/lib/cjs/index-federation.js +1 -1
  48. package/lib/cjs/index.js +12 -0
  49. package/lib/cjs/model/api-types.js +1 -1
  50. package/lib/cjs/model/index.js +1 -1
  51. package/lib/cjs/model/parse-sample-values.js +1 -1
  52. package/lib/cjs/model/prometheus-client.js +1 -1
  53. package/lib/cjs/model/prometheus-selectors.js +1 -1
  54. package/lib/cjs/model/time.js +1 -1
  55. package/lib/cjs/plugins/MatcherEditor.js +1 -1
  56. package/lib/cjs/plugins/PrometheusDatasourceEditor.js +1 -1
  57. package/lib/cjs/plugins/PrometheusLabelNamesVariable.js +12 -0
  58. package/lib/cjs/plugins/PrometheusLabelValuesVariable.js +12 -0
  59. package/lib/cjs/plugins/PrometheusPromQLVariable.js +12 -0
  60. package/lib/cjs/plugins/index.js +12 -0
  61. package/lib/cjs/plugins/prometheus-datasource.js +1 -1
  62. package/lib/cjs/plugins/prometheus-time-series-query/PrometheusTimeSeriesQuery.js +1 -1
  63. package/lib/cjs/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.js +1 -1
  64. package/lib/cjs/plugins/prometheus-time-series-query/get-time-series-data.js +1 -1
  65. package/lib/cjs/plugins/prometheus-time-series-query/index.js +1 -1
  66. package/lib/cjs/plugins/prometheus-time-series-query/query-editor-model.js +1 -1
  67. package/lib/cjs/plugins/prometheus-time-series-query/replace-prom-builtin-variables.js +1 -1
  68. package/lib/cjs/plugins/prometheus-time-series-query/time-series-query-model.js +1 -1
  69. package/lib/cjs/plugins/prometheus-variables.js +1 -1
  70. package/lib/cjs/plugins/test/setup-tests.js +1 -1
  71. package/lib/cjs/plugins/types.js +1 -1
  72. package/lib/cjs/plugins/variable.js +1 -1
  73. package/lib/cjs/setup-tests.js +1 -1
  74. package/lib/cjs/utils/index.js +1 -1
  75. package/lib/cjs/utils/utils.js +1 -1
  76. package/lib/components/PromQLEditor.js +1 -1
  77. package/lib/components/PromQLEditor.js.map +1 -1
  78. package/lib/components/TreeNode.js +1 -1
  79. package/lib/components/TreeNode.js.map +1 -1
  80. package/lib/components/index.js +1 -1
  81. package/lib/components/index.js.map +1 -1
  82. package/lib/components/promql/ast.js +1 -1
  83. package/lib/components/promql/ast.js.map +1 -1
  84. package/lib/components/promql/format.js +1 -1
  85. package/lib/components/promql/format.js.map +1 -1
  86. package/lib/components/promql/functionSignatures.js +1 -1
  87. package/lib/components/promql/functionSignatures.js.map +1 -1
  88. package/lib/components/promql/serialize.js +1 -1
  89. package/lib/components/promql/serialize.js.map +1 -1
  90. package/lib/components/promql/utils.js +1 -1
  91. package/lib/components/promql/utils.js.map +1 -1
  92. package/lib/components/query.js +1 -1
  93. package/lib/components/query.js.map +1 -1
  94. package/lib/env.d.js +1 -1
  95. package/lib/env.d.js.map +1 -1
  96. package/lib/explore/PrometheusExplorer.js +1 -1
  97. package/lib/explore/PrometheusExplorer.js.map +1 -1
  98. package/lib/explore/PrometheusMetricsFinder/PrometheusMetricsFinder.js +1 -1
  99. package/lib/explore/PrometheusMetricsFinder/PrometheusMetricsFinder.js.map +1 -1
  100. package/lib/explore/PrometheusMetricsFinder/display/MetricChip.js +1 -1
  101. package/lib/explore/PrometheusMetricsFinder/display/MetricChip.js.map +1 -1
  102. package/lib/explore/PrometheusMetricsFinder/display/list/MetricList.js +1 -1
  103. package/lib/explore/PrometheusMetricsFinder/display/list/MetricList.js.map +1 -1
  104. package/lib/explore/PrometheusMetricsFinder/filter/FilterInputs.js +1 -1
  105. package/lib/explore/PrometheusMetricsFinder/filter/FilterInputs.js.map +1 -1
  106. package/lib/explore/PrometheusMetricsFinder/filter/FinderFilters.js +1 -1
  107. package/lib/explore/PrometheusMetricsFinder/filter/FinderFilters.js.map +1 -1
  108. package/lib/explore/PrometheusMetricsFinder/index.js +1 -1
  109. package/lib/explore/PrometheusMetricsFinder/index.js.map +1 -1
  110. package/lib/explore/PrometheusMetricsFinder/overview/MetricOverview.js +1 -1
  111. package/lib/explore/PrometheusMetricsFinder/overview/MetricOverview.js.map +1 -1
  112. package/lib/explore/PrometheusMetricsFinder/overview/tabs/JobTab.js +1 -1
  113. package/lib/explore/PrometheusMetricsFinder/overview/tabs/JobTab.js.map +1 -1
  114. package/lib/explore/PrometheusMetricsFinder/overview/tabs/OverviewTab.js +1 -1
  115. package/lib/explore/PrometheusMetricsFinder/overview/tabs/OverviewTab.js.map +1 -1
  116. package/lib/explore/PrometheusMetricsFinder/overview/tabs/SimilarTab.js +1 -1
  117. package/lib/explore/PrometheusMetricsFinder/overview/tabs/SimilarTab.js.map +1 -1
  118. package/lib/explore/PrometheusMetricsFinder/types.js +1 -1
  119. package/lib/explore/PrometheusMetricsFinder/types.js.map +1 -1
  120. package/lib/explore/PrometheusMetricsFinder/utils.js +1 -1
  121. package/lib/explore/PrometheusMetricsFinder/utils.js.map +1 -1
  122. package/lib/explore/index.d.ts.map +1 -1
  123. package/lib/explore/index.js +12 -0
  124. package/lib/explore/index.js.map +1 -1
  125. package/lib/getPluginModule.d.ts.map +1 -1
  126. package/lib/getPluginModule.js +12 -0
  127. package/lib/getPluginModule.js.map +1 -1
  128. package/lib/index-federation.js +1 -1
  129. package/lib/index-federation.js.map +1 -1
  130. package/lib/index.d.ts.map +1 -1
  131. package/lib/index.js +12 -0
  132. package/lib/index.js.map +1 -1
  133. package/lib/model/api-types.js +1 -1
  134. package/lib/model/api-types.js.map +1 -1
  135. package/lib/model/index.js +1 -1
  136. package/lib/model/index.js.map +1 -1
  137. package/lib/model/parse-sample-values.js +1 -1
  138. package/lib/model/parse-sample-values.js.map +1 -1
  139. package/lib/model/prometheus-client.js +1 -1
  140. package/lib/model/prometheus-client.js.map +1 -1
  141. package/lib/model/prometheus-selectors.js +1 -1
  142. package/lib/model/prometheus-selectors.js.map +1 -1
  143. package/lib/model/time.js +1 -1
  144. package/lib/model/time.js.map +1 -1
  145. package/lib/plugins/MatcherEditor.js +1 -1
  146. package/lib/plugins/MatcherEditor.js.map +1 -1
  147. package/lib/plugins/PrometheusDatasourceEditor.js +1 -1
  148. package/lib/plugins/PrometheusDatasourceEditor.js.map +1 -1
  149. package/lib/plugins/PrometheusLabelNamesVariable.d.ts.map +1 -1
  150. package/lib/plugins/PrometheusLabelNamesVariable.js +12 -0
  151. package/lib/plugins/PrometheusLabelNamesVariable.js.map +1 -1
  152. package/lib/plugins/PrometheusLabelValuesVariable.d.ts.map +1 -1
  153. package/lib/plugins/PrometheusLabelValuesVariable.js +12 -0
  154. package/lib/plugins/PrometheusLabelValuesVariable.js.map +1 -1
  155. package/lib/plugins/PrometheusPromQLVariable.d.ts.map +1 -1
  156. package/lib/plugins/PrometheusPromQLVariable.js +12 -0
  157. package/lib/plugins/PrometheusPromQLVariable.js.map +1 -1
  158. package/lib/plugins/index.d.ts.map +1 -1
  159. package/lib/plugins/index.js +12 -0
  160. package/lib/plugins/index.js.map +1 -1
  161. package/lib/plugins/prometheus-datasource.js +1 -1
  162. package/lib/plugins/prometheus-datasource.js.map +1 -1
  163. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQuery.js +1 -1
  164. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQuery.js.map +1 -1
  165. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.js +1 -1
  166. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.js.map +1 -1
  167. package/lib/plugins/prometheus-time-series-query/get-time-series-data.js +1 -1
  168. package/lib/plugins/prometheus-time-series-query/get-time-series-data.js.map +1 -1
  169. package/lib/plugins/prometheus-time-series-query/index.js +1 -1
  170. package/lib/plugins/prometheus-time-series-query/index.js.map +1 -1
  171. package/lib/plugins/prometheus-time-series-query/query-editor-model.js +1 -1
  172. package/lib/plugins/prometheus-time-series-query/query-editor-model.js.map +1 -1
  173. package/lib/plugins/prometheus-time-series-query/replace-prom-builtin-variables.js +1 -1
  174. package/lib/plugins/prometheus-time-series-query/replace-prom-builtin-variables.js.map +1 -1
  175. package/lib/plugins/prometheus-time-series-query/time-series-query-model.js +1 -1
  176. package/lib/plugins/prometheus-time-series-query/time-series-query-model.js.map +1 -1
  177. package/lib/plugins/prometheus-variables.js +1 -1
  178. package/lib/plugins/prometheus-variables.js.map +1 -1
  179. package/lib/plugins/test/setup-tests.js +1 -1
  180. package/lib/plugins/test/setup-tests.js.map +1 -1
  181. package/lib/plugins/types.js +1 -1
  182. package/lib/plugins/types.js.map +1 -1
  183. package/lib/plugins/variable.js +1 -1
  184. package/lib/plugins/variable.js.map +1 -1
  185. package/lib/setup-tests.js +1 -1
  186. package/lib/setup-tests.js.map +1 -1
  187. package/lib/utils/index.js +1 -1
  188. package/lib/utils/index.js.map +1 -1
  189. package/lib/utils/utils.js +1 -1
  190. package/lib/utils/utils.js.map +1 -1
  191. package/mf-manifest.json +70 -70
  192. package/mf-stats.json +73 -73
  193. package/package.json +6 -6
  194. package/__mf/js/async/1490.7e5068f1.js +0 -22
  195. package/__mf/js/async/1728.af16c4ec.js +0 -1
  196. package/__mf/js/async/2984.7182c2f5.js +0 -1
  197. package/__mf/js/async/2999.1d8347df.js +0 -1
  198. package/__mf/js/async/3664.ba8b26b6.js +0 -2
  199. package/__mf/js/async/5440.c13c3533.js +0 -2
  200. package/__mf/js/async/5501.6166367c.js +0 -2
  201. package/__mf/js/async/6149.19799c37.js +0 -7
  202. package/__mf/js/async/__federation_expose_PrometheusExplorer.584a073d.js +0 -1
  203. /package/__mf/js/async/{6149.19799c37.js.LICENSE.txt → 3652.fc1e5f95.js.LICENSE.txt} +0 -0
  204. /package/__mf/js/async/{3664.ba8b26b6.js.LICENSE.txt → 4657.e3d53a21.js.LICENSE.txt} +0 -0
  205. /package/__mf/js/async/{1490.7e5068f1.js.LICENSE.txt → 54.f6f480ef.js.LICENSE.txt} +0 -0
  206. /package/__mf/js/async/{5501.6166367c.js.LICENSE.txt → 9010.15208552.js.LICENSE.txt} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/index.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PromQLEditor';\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,iBAAiB"}
1
+ {"version":3,"sources":["../../../src/components/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PromQLEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,iBAAiB"}
@@ -1,4 +1,4 @@
1
- // Copyright 2024 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/promql/ast.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/ast.ts\n\nexport enum nodeType {\n aggregation = 'aggregation',\n binaryExpr = 'binaryExpr',\n call = 'call',\n matrixSelector = 'matrixSelector',\n subquery = 'subquery',\n numberLiteral = 'numberLiteral',\n parenExpr = 'parenExpr',\n stringLiteral = 'stringLiteral',\n unaryExpr = 'unaryExpr',\n vectorSelector = 'vectorSelector',\n placeholder = 'placeholder',\n}\n\nexport enum aggregationType {\n sum = 'sum',\n min = 'min',\n max = 'max',\n avg = 'avg',\n stddev = 'stddev',\n stdvar = 'stdvar',\n count = 'count',\n group = 'group',\n countValues = 'count_values',\n bottomk = 'bottomk',\n topk = 'topk',\n quantile = 'quantile',\n limitK = 'limitk',\n limitRatio = 'limit_ratio',\n}\n\nexport enum binaryOperatorType {\n add = '+',\n sub = '-',\n mul = '*',\n div = '/',\n mod = '%',\n pow = '^',\n eql = '==',\n neq = '!=',\n gtr = '>',\n lss = '<',\n gte = '>=',\n lte = '<=',\n and = 'and',\n or = 'or',\n unless = 'unless',\n atan2 = 'atan2',\n}\n\nexport const compOperatorTypes: binaryOperatorType[] = [\n binaryOperatorType.eql,\n binaryOperatorType.neq,\n binaryOperatorType.gtr,\n binaryOperatorType.lss,\n binaryOperatorType.gte,\n binaryOperatorType.lte,\n];\n\nexport const setOperatorTypes: binaryOperatorType[] = [\n binaryOperatorType.and,\n binaryOperatorType.or,\n binaryOperatorType.unless,\n];\n\nexport enum unaryOperatorType {\n plus = '+',\n minus = '-',\n}\n\nexport enum vectorMatchCardinality {\n oneToOne = 'one-to-one',\n manyToOne = 'many-to-one',\n oneToMany = 'one-to-many',\n manyToMany = 'many-to-many',\n}\n\nexport enum valueType {\n // TODO: 'none' should never make it out of Prometheus. Do we need this here?\n none = 'none',\n vector = 'vector',\n scalar = 'scalar',\n matrix = 'matrix',\n string = 'string',\n}\n\nexport enum matchType {\n equal = '=',\n notEqual = '!=',\n matchRegexp = '=~',\n matchNotRegexp = '!~',\n}\n\nexport interface Func {\n name: string;\n argTypes: valueType[];\n variadic: number;\n returnType: valueType;\n}\n\nexport interface LabelMatcher {\n type: matchType;\n name: string;\n value: string;\n}\n\nexport interface VectorMatching {\n card: vectorMatchCardinality;\n labels: string[];\n on: boolean;\n include: string[];\n}\n\nexport type StartOrEnd = 'start' | 'end' | null;\n\n// AST Node Types.\n\nexport interface Aggregation {\n type: nodeType.aggregation;\n expr: ASTNode;\n op: aggregationType;\n param: ASTNode | null;\n grouping: string[];\n without: boolean;\n}\n\nexport interface BinaryExpr {\n type: nodeType.binaryExpr;\n op: binaryOperatorType;\n lhs: ASTNode;\n rhs: ASTNode;\n matching: VectorMatching | null;\n bool: boolean;\n}\n\nexport interface Call {\n type: nodeType.call;\n func: Func;\n args: ASTNode[];\n}\n\nexport interface MatrixSelector {\n type: nodeType.matrixSelector;\n name: string;\n matchers: LabelMatcher[];\n range: number;\n offset: number;\n timestamp: number | null;\n startOrEnd: StartOrEnd;\n}\n\nexport interface Subquery {\n type: nodeType.subquery;\n expr: ASTNode;\n range: number;\n offset: number;\n step: number;\n timestamp: number | null;\n startOrEnd: StartOrEnd;\n}\n\nexport interface NumberLiteral {\n type: nodeType.numberLiteral;\n val: string; // Can't be 'number' because JS doesn't support NaN/Inf/-Inf etc.\n}\n\nexport interface ParenExpr {\n type: nodeType.parenExpr;\n expr: ASTNode;\n}\n\nexport interface StringLiteral {\n type: nodeType.stringLiteral;\n val: string;\n}\n\nexport interface UnaryExpr {\n type: nodeType.unaryExpr;\n op: unaryOperatorType;\n expr: ASTNode;\n}\n\nexport interface VectorSelector {\n type: nodeType.vectorSelector;\n name: string;\n matchers: LabelMatcher[];\n offset: number;\n timestamp: number | null;\n startOrEnd: StartOrEnd;\n}\n\nexport interface Placeholder {\n type: nodeType.placeholder;\n children: ASTNode[];\n}\n\n// NB: AST stands for Abstract Syntax Tree\ntype ASTNode =\n | Aggregation\n | BinaryExpr\n | Call\n | MatrixSelector\n | Subquery\n | NumberLiteral\n | ParenExpr\n | StringLiteral\n | UnaryExpr\n | VectorSelector\n | Placeholder;\n\nexport default ASTNode;\n"],"names":["nodeType","aggregationType","binaryOperatorType","compOperatorTypes","setOperatorTypes","unaryOperatorType","vectorMatchCardinality","valueType","matchType"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,yIAAyI;AAEzI,OAAO,IAAA,AAAKA,kCAAAA;;;;;;;;;;;;WAAAA;MAYX;AAED,OAAO,IAAA,AAAKC,yCAAAA;;;;;;;;;;;;;;;WAAAA;MAeX;AAED,OAAO,IAAA,AAAKC,4CAAAA;;;;;;;;;;;;;;;;;WAAAA;MAiBX;AAED,OAAO,MAAMC,oBAA0C;;;;;;;CAOtD,CAAC;AAEF,OAAO,MAAMC,mBAAyC;;;;CAIrD,CAAC;AAEF,OAAO,IAAA,AAAKC,2CAAAA;;;WAAAA;MAGX;AAED,OAAO,IAAA,AAAKC,gDAAAA;;;;;WAAAA;MAKX;AAED,OAAO,IAAA,AAAKC,mCAAAA;IACV,6EAA6E;;;;;;WADnEA;MAOX;AAED,OAAO,IAAA,AAAKC,mCAAAA;;;;;WAAAA;MAKX"}
1
+ {"version":3,"sources":["../../../../src/components/promql/ast.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/ast.ts\n\nexport enum nodeType {\n aggregation = 'aggregation',\n binaryExpr = 'binaryExpr',\n call = 'call',\n matrixSelector = 'matrixSelector',\n subquery = 'subquery',\n numberLiteral = 'numberLiteral',\n parenExpr = 'parenExpr',\n stringLiteral = 'stringLiteral',\n unaryExpr = 'unaryExpr',\n vectorSelector = 'vectorSelector',\n placeholder = 'placeholder',\n}\n\nexport enum aggregationType {\n sum = 'sum',\n min = 'min',\n max = 'max',\n avg = 'avg',\n stddev = 'stddev',\n stdvar = 'stdvar',\n count = 'count',\n group = 'group',\n countValues = 'count_values',\n bottomk = 'bottomk',\n topk = 'topk',\n quantile = 'quantile',\n limitK = 'limitk',\n limitRatio = 'limit_ratio',\n}\n\nexport enum binaryOperatorType {\n add = '+',\n sub = '-',\n mul = '*',\n div = '/',\n mod = '%',\n pow = '^',\n eql = '==',\n neq = '!=',\n gtr = '>',\n lss = '<',\n gte = '>=',\n lte = '<=',\n and = 'and',\n or = 'or',\n unless = 'unless',\n atan2 = 'atan2',\n}\n\nexport const compOperatorTypes: binaryOperatorType[] = [\n binaryOperatorType.eql,\n binaryOperatorType.neq,\n binaryOperatorType.gtr,\n binaryOperatorType.lss,\n binaryOperatorType.gte,\n binaryOperatorType.lte,\n];\n\nexport const setOperatorTypes: binaryOperatorType[] = [\n binaryOperatorType.and,\n binaryOperatorType.or,\n binaryOperatorType.unless,\n];\n\nexport enum unaryOperatorType {\n plus = '+',\n minus = '-',\n}\n\nexport enum vectorMatchCardinality {\n oneToOne = 'one-to-one',\n manyToOne = 'many-to-one',\n oneToMany = 'one-to-many',\n manyToMany = 'many-to-many',\n}\n\nexport enum valueType {\n // TODO: 'none' should never make it out of Prometheus. Do we need this here?\n none = 'none',\n vector = 'vector',\n scalar = 'scalar',\n matrix = 'matrix',\n string = 'string',\n}\n\nexport enum matchType {\n equal = '=',\n notEqual = '!=',\n matchRegexp = '=~',\n matchNotRegexp = '!~',\n}\n\nexport interface Func {\n name: string;\n argTypes: valueType[];\n variadic: number;\n returnType: valueType;\n}\n\nexport interface LabelMatcher {\n type: matchType;\n name: string;\n value: string;\n}\n\nexport interface VectorMatching {\n card: vectorMatchCardinality;\n labels: string[];\n on: boolean;\n include: string[];\n}\n\nexport type StartOrEnd = 'start' | 'end' | null;\n\n// AST Node Types.\n\nexport interface Aggregation {\n type: nodeType.aggregation;\n expr: ASTNode;\n op: aggregationType;\n param: ASTNode | null;\n grouping: string[];\n without: boolean;\n}\n\nexport interface BinaryExpr {\n type: nodeType.binaryExpr;\n op: binaryOperatorType;\n lhs: ASTNode;\n rhs: ASTNode;\n matching: VectorMatching | null;\n bool: boolean;\n}\n\nexport interface Call {\n type: nodeType.call;\n func: Func;\n args: ASTNode[];\n}\n\nexport interface MatrixSelector {\n type: nodeType.matrixSelector;\n name: string;\n matchers: LabelMatcher[];\n range: number;\n offset: number;\n timestamp: number | null;\n startOrEnd: StartOrEnd;\n}\n\nexport interface Subquery {\n type: nodeType.subquery;\n expr: ASTNode;\n range: number;\n offset: number;\n step: number;\n timestamp: number | null;\n startOrEnd: StartOrEnd;\n}\n\nexport interface NumberLiteral {\n type: nodeType.numberLiteral;\n val: string; // Can't be 'number' because JS doesn't support NaN/Inf/-Inf etc.\n}\n\nexport interface ParenExpr {\n type: nodeType.parenExpr;\n expr: ASTNode;\n}\n\nexport interface StringLiteral {\n type: nodeType.stringLiteral;\n val: string;\n}\n\nexport interface UnaryExpr {\n type: nodeType.unaryExpr;\n op: unaryOperatorType;\n expr: ASTNode;\n}\n\nexport interface VectorSelector {\n type: nodeType.vectorSelector;\n name: string;\n matchers: LabelMatcher[];\n offset: number;\n timestamp: number | null;\n startOrEnd: StartOrEnd;\n}\n\nexport interface Placeholder {\n type: nodeType.placeholder;\n children: ASTNode[];\n}\n\n// NB: AST stands for Abstract Syntax Tree\ntype ASTNode =\n | Aggregation\n | BinaryExpr\n | Call\n | MatrixSelector\n | Subquery\n | NumberLiteral\n | ParenExpr\n | StringLiteral\n | UnaryExpr\n | VectorSelector\n | Placeholder;\n\nexport default ASTNode;\n"],"names":["nodeType","aggregationType","binaryOperatorType","compOperatorTypes","setOperatorTypes","unaryOperatorType","vectorMatchCardinality","valueType","matchType"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,yIAAyI;AAEzI,OAAO,IAAA,AAAKA,kCAAAA;;;;;;;;;;;;WAAAA;MAYX;AAED,OAAO,IAAA,AAAKC,yCAAAA;;;;;;;;;;;;;;;WAAAA;MAeX;AAED,OAAO,IAAA,AAAKC,4CAAAA;;;;;;;;;;;;;;;;;WAAAA;MAiBX;AAED,OAAO,MAAMC,oBAA0C;;;;;;;CAOtD,CAAC;AAEF,OAAO,MAAMC,mBAAyC;;;;CAIrD,CAAC;AAEF,OAAO,IAAA,AAAKC,2CAAAA;;;WAAAA;MAGX;AAED,OAAO,IAAA,AAAKC,gDAAAA;;;;;WAAAA;MAKX;AAED,OAAO,IAAA,AAAKC,mCAAAA;IACV,6EAA6E;;;;;;WADnEA;MAOX;AAED,OAAO,IAAA,AAAKC,mCAAAA;;;;;WAAAA;MAKX"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- // Copyright 2024 The Perses Authors
2
+ // Copyright The Perses Authors
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
5
5
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/promql/format.tsx"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/format.tsx\n\nimport React, { ReactElement, ReactNode } from 'react';\nimport { styled } from '@mui/material';\nimport { formatDuration, msToPrometheusDuration } from '@perses-dev/core';\nimport ASTNode, {\n VectorSelector,\n matchType,\n vectorMatchCardinality,\n nodeType,\n StartOrEnd,\n MatrixSelector,\n} from './ast';\nimport { maybeParenthesizeBinopChild, escapeString } from './utils';\n\n// Styled components that reproduce the theming of CodeMirror:\n\nconst PromQLCode = styled('span')(() => ({\n fontFamily: '\"DejaVu Sans Mono\", monospace',\n}));\n\nconst PromQLKeyword = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e5c07b' : '#708',\n}));\n\nconst PromQLFunction = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#61afef' : '#2a2e42',\n}));\n\nconst PromQLMetricName = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e06c75' : '#2a2e42',\n}));\n\nconst PromQLLabelName = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#61afef' : '#219',\n}));\n\nconst PromQLString = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#98c379' : '#a31515',\n}));\n\nconst PromQLEllipsis = styled('span')(() => ({\n color: '#aaaaaa', // Same color for both modes as in the original CSS\n}));\n\nconst PromQLDuration = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e5c07b' : '#09885a',\n}));\n\nconst PromQLNumber = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e5c07b' : '#164',\n}));\n\nconst PromQLOperator = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#56b6c2' : '#708',\n}));\n\nexport const labelNameList = (labels: string[]): React.ReactNode[] => {\n return labels.map((l, i) => {\n return (\n <span key={i}>\n {i !== 0 && ', '}\n <PromQLLabelName>{l}</PromQLLabelName>\n </span>\n );\n });\n};\n\nconst formatAtAndOffset = (timestamp: number | null, startOrEnd: StartOrEnd, offset: number): ReactNode => (\n <>\n {timestamp !== null ? (\n <>\n {' '}\n <PromQLOperator>@</PromQLOperator> <PromQLNumber>{(timestamp / 1000).toFixed(3)}</PromQLNumber>\n </>\n ) : startOrEnd !== null ? (\n <>\n {' '}\n <PromQLOperator>@</PromQLOperator> <PromQLKeyword>{startOrEnd}</PromQLKeyword>\n <span>(</span>\n <span>)</span>\n </>\n ) : (\n <></>\n )}\n {offset === 0 ? (\n <></>\n ) : offset > 0 ? (\n <>\n {' '}\n <PromQLKeyword>offset</PromQLKeyword>{' '}\n <PromQLDuration>{formatDuration(msToPrometheusDuration(offset))}</PromQLDuration>\n </>\n ) : (\n <>\n {' '}\n <PromQLKeyword>offset</PromQLKeyword>{' '}\n <PromQLDuration>-{formatDuration(msToPrometheusDuration(-offset))}</PromQLDuration>\n </>\n )}\n </>\n);\n\nconst formatSelector = (node: VectorSelector | MatrixSelector): ReactElement => {\n const matchLabels = node.matchers\n .filter((m) => !(m.name === '__name__' && m.type === matchType.equal && m.value === node.name))\n .map((m, i) => (\n <span key={i}>\n {i !== 0 && ','}\n <PromQLLabelName>{m.name}</PromQLLabelName>\n {m.type}\n <PromQLString>&quot;{escapeString(m.value)}&quot;</PromQLString>\n </span>\n ));\n\n return (\n <>\n <PromQLMetricName>{node.name}</PromQLMetricName>\n {matchLabels.length > 0 && (\n <>\n {'{'}\n <span>{matchLabels}</span>\n {'}'}\n </>\n )}\n {node.type === nodeType.matrixSelector && (\n <>\n [<PromQLDuration>{formatDuration(msToPrometheusDuration(node.range))}</PromQLDuration>]\n </>\n )}\n {formatAtAndOffset(node.timestamp, node.startOrEnd, node.offset)}\n </>\n );\n};\n\nconst ellipsis = <PromQLEllipsis>…</PromQLEllipsis>;\n\nconst formatNodeInternal = (node: ASTNode, showChildren: boolean, maxDepth?: number): React.ReactNode => {\n if (maxDepth === 0) {\n return ellipsis;\n }\n\n const childMaxDepth = maxDepth === undefined ? undefined : maxDepth - 1;\n\n switch (node.type) {\n case nodeType.aggregation:\n return (\n <>\n <PromQLOperator>{node.op}</PromQLOperator>\n {node.without ? (\n <>\n {' '}\n <PromQLKeyword>without</PromQLKeyword>\n <span>(</span>\n {labelNameList(node.grouping)}\n <span>)</span>{' '}\n </>\n ) : (\n node.grouping.length > 0 && (\n <>\n {' '}\n <PromQLKeyword>by</PromQLKeyword>\n <span>(</span>\n {labelNameList(node.grouping)}\n <span>)</span>{' '}\n </>\n )\n )}\n {showChildren && (\n <>\n <span>(</span>\n {node.param !== null && <>{formatNode(node.param, showChildren, childMaxDepth)}, </>}\n {formatNode(node.expr, showChildren, childMaxDepth)}\n <span>)</span>\n </>\n )}\n </>\n );\n case nodeType.subquery:\n return (\n <>\n {showChildren && formatNode(node.expr, showChildren, childMaxDepth)}[\n <PromQLDuration>{formatDuration(msToPrometheusDuration(node.range))}</PromQLDuration>:\n {node.step !== 0 && <PromQLDuration>{formatDuration(msToPrometheusDuration(node.step))}</PromQLDuration>}]\n {formatAtAndOffset(node.timestamp, node.startOrEnd, node.offset)}\n </>\n );\n case nodeType.parenExpr:\n return (\n <>\n <span>(</span>\n {showChildren && formatNode(node.expr, showChildren, childMaxDepth)}\n <span>)</span>\n </>\n );\n case nodeType.call: {\n const children =\n childMaxDepth === undefined || childMaxDepth > 0\n ? node.args.map((arg, i) => (\n <span key={i}>\n {i !== 0 && ', '}\n {formatNode(arg, showChildren)}\n </span>\n ))\n : node.args.length > 0\n ? ellipsis\n : '';\n\n return (\n <>\n <PromQLFunction>{node.func.name}</PromQLFunction>\n {showChildren && (\n <>\n <span>(</span>\n {children}\n <span>)</span>\n </>\n )}\n </>\n );\n }\n case nodeType.matrixSelector:\n return formatSelector(node);\n case nodeType.vectorSelector:\n return formatSelector(node);\n case nodeType.numberLiteral:\n return <PromQLNumber>{node.val}</PromQLNumber>;\n case nodeType.stringLiteral:\n return <PromQLString>&quot;{escapeString(node.val)}&quot;</PromQLString>;\n case nodeType.unaryExpr:\n return (\n <>\n <PromQLOperator>{node.op}</PromQLOperator>\n {showChildren && formatNode(node.expr, showChildren, childMaxDepth)}\n </>\n );\n case nodeType.binaryExpr: {\n let matching = <></>;\n let grouping = <></>;\n const vm = node.matching;\n if (vm !== null && (vm.labels.length > 0 || vm.on)) {\n if (vm.on) {\n matching = (\n <>\n {' '}\n <PromQLKeyword>on</PromQLKeyword>\n <span>(</span>\n {labelNameList(vm.labels)}\n <span>)</span>\n </>\n );\n } else {\n matching = (\n <>\n {' '}\n <PromQLKeyword>ignoring</PromQLKeyword>\n <span>(</span>\n {labelNameList(vm.labels)}\n <span>)</span>\n </>\n );\n }\n\n if (vm.card === vectorMatchCardinality.manyToOne || vm.card === vectorMatchCardinality.oneToMany) {\n grouping = (\n <>\n <PromQLKeyword>\n {' '}\n group_\n {vm.card === vectorMatchCardinality.manyToOne ? 'left' : 'right'}\n </PromQLKeyword>\n <span>(</span>\n {labelNameList(vm.include)}\n <span>)</span>\n </>\n );\n }\n }\n\n return (\n <>\n {showChildren && formatNode(maybeParenthesizeBinopChild(node.op, node.lhs), showChildren, childMaxDepth)}{' '}\n {['atan2', 'and', 'or', 'unless'].includes(node.op) ? (\n <PromQLOperator>{node.op}</PromQLOperator>\n ) : (\n <PromQLOperator>{node.op}</PromQLOperator>\n )}\n {node.bool && (\n <>\n {' '}\n <PromQLKeyword>bool</PromQLKeyword>\n </>\n )}\n {matching}\n {grouping}{' '}\n {showChildren && formatNode(maybeParenthesizeBinopChild(node.op, node.rhs), showChildren, childMaxDepth)}\n </>\n );\n }\n case nodeType.placeholder:\n // TODO: Include possible children of placeholders somehow?\n return ellipsis;\n default:\n throw new Error('unsupported node type');\n }\n};\n\nexport const formatNode = (node: ASTNode, showChildren: boolean, maxDepth?: number): React.ReactElement => (\n <PromQLCode>{formatNodeInternal(node, showChildren, maxDepth)}</PromQLCode>\n);\n"],"names":["React","styled","formatDuration","msToPrometheusDuration","matchType","vectorMatchCardinality","nodeType","maybeParenthesizeBinopChild","escapeString","PromQLCode","fontFamily","PromQLKeyword","theme","color","palette","mode","PromQLFunction","PromQLMetricName","PromQLLabelName","PromQLString","PromQLEllipsis","PromQLDuration","PromQLNumber","PromQLOperator","labelNameList","labels","map","l","i","span","formatAtAndOffset","timestamp","startOrEnd","offset","toFixed","formatSelector","node","matchLabels","matchers","filter","m","name","type","equal","value","length","matrixSelector","range","ellipsis","formatNodeInternal","showChildren","maxDepth","childMaxDepth","undefined","aggregation","op","without","grouping","param","formatNode","expr","subquery","step","parenExpr","call","children","args","arg","func","vectorSelector","numberLiteral","val","stringLiteral","unaryExpr","binaryExpr","matching","vm","on","card","manyToOne","oneToMany","include","lhs","includes","bool","rhs","placeholder","Error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/promql/format.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/format.tsx\n\nimport React, { ReactElement, ReactNode } from 'react';\nimport { styled } from '@mui/material';\nimport { formatDuration, msToPrometheusDuration } from '@perses-dev/core';\nimport ASTNode, {\n VectorSelector,\n matchType,\n vectorMatchCardinality,\n nodeType,\n StartOrEnd,\n MatrixSelector,\n} from './ast';\nimport { maybeParenthesizeBinopChild, escapeString } from './utils';\n\n// Styled components that reproduce the theming of CodeMirror:\n\nconst PromQLCode = styled('span')(() => ({\n fontFamily: '\"DejaVu Sans Mono\", monospace',\n}));\n\nconst PromQLKeyword = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e5c07b' : '#708',\n}));\n\nconst PromQLFunction = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#61afef' : '#2a2e42',\n}));\n\nconst PromQLMetricName = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e06c75' : '#2a2e42',\n}));\n\nconst PromQLLabelName = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#61afef' : '#219',\n}));\n\nconst PromQLString = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#98c379' : '#a31515',\n}));\n\nconst PromQLEllipsis = styled('span')(() => ({\n color: '#aaaaaa', // Same color for both modes as in the original CSS\n}));\n\nconst PromQLDuration = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e5c07b' : '#09885a',\n}));\n\nconst PromQLNumber = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#e5c07b' : '#164',\n}));\n\nconst PromQLOperator = styled('span')(({ theme }) => ({\n color: theme.palette.mode === 'dark' ? '#56b6c2' : '#708',\n}));\n\nexport const labelNameList = (labels: string[]): React.ReactNode[] => {\n return labels.map((l, i) => {\n return (\n <span key={i}>\n {i !== 0 && ', '}\n <PromQLLabelName>{l}</PromQLLabelName>\n </span>\n );\n });\n};\n\nconst formatAtAndOffset = (timestamp: number | null, startOrEnd: StartOrEnd, offset: number): ReactNode => (\n <>\n {timestamp !== null ? (\n <>\n {' '}\n <PromQLOperator>@</PromQLOperator> <PromQLNumber>{(timestamp / 1000).toFixed(3)}</PromQLNumber>\n </>\n ) : startOrEnd !== null ? (\n <>\n {' '}\n <PromQLOperator>@</PromQLOperator> <PromQLKeyword>{startOrEnd}</PromQLKeyword>\n <span>(</span>\n <span>)</span>\n </>\n ) : (\n <></>\n )}\n {offset === 0 ? (\n <></>\n ) : offset > 0 ? (\n <>\n {' '}\n <PromQLKeyword>offset</PromQLKeyword>{' '}\n <PromQLDuration>{formatDuration(msToPrometheusDuration(offset))}</PromQLDuration>\n </>\n ) : (\n <>\n {' '}\n <PromQLKeyword>offset</PromQLKeyword>{' '}\n <PromQLDuration>-{formatDuration(msToPrometheusDuration(-offset))}</PromQLDuration>\n </>\n )}\n </>\n);\n\nconst formatSelector = (node: VectorSelector | MatrixSelector): ReactElement => {\n const matchLabels = node.matchers\n .filter((m) => !(m.name === '__name__' && m.type === matchType.equal && m.value === node.name))\n .map((m, i) => (\n <span key={i}>\n {i !== 0 && ','}\n <PromQLLabelName>{m.name}</PromQLLabelName>\n {m.type}\n <PromQLString>&quot;{escapeString(m.value)}&quot;</PromQLString>\n </span>\n ));\n\n return (\n <>\n <PromQLMetricName>{node.name}</PromQLMetricName>\n {matchLabels.length > 0 && (\n <>\n {'{'}\n <span>{matchLabels}</span>\n {'}'}\n </>\n )}\n {node.type === nodeType.matrixSelector && (\n <>\n [<PromQLDuration>{formatDuration(msToPrometheusDuration(node.range))}</PromQLDuration>]\n </>\n )}\n {formatAtAndOffset(node.timestamp, node.startOrEnd, node.offset)}\n </>\n );\n};\n\nconst ellipsis = <PromQLEllipsis>…</PromQLEllipsis>;\n\nconst formatNodeInternal = (node: ASTNode, showChildren: boolean, maxDepth?: number): React.ReactNode => {\n if (maxDepth === 0) {\n return ellipsis;\n }\n\n const childMaxDepth = maxDepth === undefined ? undefined : maxDepth - 1;\n\n switch (node.type) {\n case nodeType.aggregation:\n return (\n <>\n <PromQLOperator>{node.op}</PromQLOperator>\n {node.without ? (\n <>\n {' '}\n <PromQLKeyword>without</PromQLKeyword>\n <span>(</span>\n {labelNameList(node.grouping)}\n <span>)</span>{' '}\n </>\n ) : (\n node.grouping.length > 0 && (\n <>\n {' '}\n <PromQLKeyword>by</PromQLKeyword>\n <span>(</span>\n {labelNameList(node.grouping)}\n <span>)</span>{' '}\n </>\n )\n )}\n {showChildren && (\n <>\n <span>(</span>\n {node.param !== null && <>{formatNode(node.param, showChildren, childMaxDepth)}, </>}\n {formatNode(node.expr, showChildren, childMaxDepth)}\n <span>)</span>\n </>\n )}\n </>\n );\n case nodeType.subquery:\n return (\n <>\n {showChildren && formatNode(node.expr, showChildren, childMaxDepth)}[\n <PromQLDuration>{formatDuration(msToPrometheusDuration(node.range))}</PromQLDuration>:\n {node.step !== 0 && <PromQLDuration>{formatDuration(msToPrometheusDuration(node.step))}</PromQLDuration>}]\n {formatAtAndOffset(node.timestamp, node.startOrEnd, node.offset)}\n </>\n );\n case nodeType.parenExpr:\n return (\n <>\n <span>(</span>\n {showChildren && formatNode(node.expr, showChildren, childMaxDepth)}\n <span>)</span>\n </>\n );\n case nodeType.call: {\n const children =\n childMaxDepth === undefined || childMaxDepth > 0\n ? node.args.map((arg, i) => (\n <span key={i}>\n {i !== 0 && ', '}\n {formatNode(arg, showChildren)}\n </span>\n ))\n : node.args.length > 0\n ? ellipsis\n : '';\n\n return (\n <>\n <PromQLFunction>{node.func.name}</PromQLFunction>\n {showChildren && (\n <>\n <span>(</span>\n {children}\n <span>)</span>\n </>\n )}\n </>\n );\n }\n case nodeType.matrixSelector:\n return formatSelector(node);\n case nodeType.vectorSelector:\n return formatSelector(node);\n case nodeType.numberLiteral:\n return <PromQLNumber>{node.val}</PromQLNumber>;\n case nodeType.stringLiteral:\n return <PromQLString>&quot;{escapeString(node.val)}&quot;</PromQLString>;\n case nodeType.unaryExpr:\n return (\n <>\n <PromQLOperator>{node.op}</PromQLOperator>\n {showChildren && formatNode(node.expr, showChildren, childMaxDepth)}\n </>\n );\n case nodeType.binaryExpr: {\n let matching = <></>;\n let grouping = <></>;\n const vm = node.matching;\n if (vm !== null && (vm.labels.length > 0 || vm.on)) {\n if (vm.on) {\n matching = (\n <>\n {' '}\n <PromQLKeyword>on</PromQLKeyword>\n <span>(</span>\n {labelNameList(vm.labels)}\n <span>)</span>\n </>\n );\n } else {\n matching = (\n <>\n {' '}\n <PromQLKeyword>ignoring</PromQLKeyword>\n <span>(</span>\n {labelNameList(vm.labels)}\n <span>)</span>\n </>\n );\n }\n\n if (vm.card === vectorMatchCardinality.manyToOne || vm.card === vectorMatchCardinality.oneToMany) {\n grouping = (\n <>\n <PromQLKeyword>\n {' '}\n group_\n {vm.card === vectorMatchCardinality.manyToOne ? 'left' : 'right'}\n </PromQLKeyword>\n <span>(</span>\n {labelNameList(vm.include)}\n <span>)</span>\n </>\n );\n }\n }\n\n return (\n <>\n {showChildren && formatNode(maybeParenthesizeBinopChild(node.op, node.lhs), showChildren, childMaxDepth)}{' '}\n {['atan2', 'and', 'or', 'unless'].includes(node.op) ? (\n <PromQLOperator>{node.op}</PromQLOperator>\n ) : (\n <PromQLOperator>{node.op}</PromQLOperator>\n )}\n {node.bool && (\n <>\n {' '}\n <PromQLKeyword>bool</PromQLKeyword>\n </>\n )}\n {matching}\n {grouping}{' '}\n {showChildren && formatNode(maybeParenthesizeBinopChild(node.op, node.rhs), showChildren, childMaxDepth)}\n </>\n );\n }\n case nodeType.placeholder:\n // TODO: Include possible children of placeholders somehow?\n return ellipsis;\n default:\n throw new Error('unsupported node type');\n }\n};\n\nexport const formatNode = (node: ASTNode, showChildren: boolean, maxDepth?: number): React.ReactElement => (\n <PromQLCode>{formatNodeInternal(node, showChildren, maxDepth)}</PromQLCode>\n);\n"],"names":["React","styled","formatDuration","msToPrometheusDuration","matchType","vectorMatchCardinality","nodeType","maybeParenthesizeBinopChild","escapeString","PromQLCode","fontFamily","PromQLKeyword","theme","color","palette","mode","PromQLFunction","PromQLMetricName","PromQLLabelName","PromQLString","PromQLEllipsis","PromQLDuration","PromQLNumber","PromQLOperator","labelNameList","labels","map","l","i","span","formatAtAndOffset","timestamp","startOrEnd","offset","toFixed","formatSelector","node","matchLabels","matchers","filter","m","name","type","equal","value","length","matrixSelector","range","ellipsis","formatNodeInternal","showChildren","maxDepth","childMaxDepth","undefined","aggregation","op","without","grouping","param","formatNode","expr","subquery","step","parenExpr","call","children","args","arg","func","vectorSelector","numberLiteral","val","stringLiteral","unaryExpr","binaryExpr","matching","vm","on","card","manyToOne","oneToMany","include","lhs","includes","bool","rhs","placeholder","Error"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // Copyright 2025 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/promql/functionSignatures.ts"],"sourcesContent":["// Copyright 2025 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/functionSignatures.ts\n\nimport { valueType, Func } from './ast';\n\nexport const functionSignatures: Record<string, Func> = {\n abs: { name: 'abs', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n absent: { name: 'absent', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n absent_over_time: {\n name: 'absent_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n acos: { name: 'acos', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n acosh: { name: 'acosh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n asin: { name: 'asin', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n asinh: { name: 'asinh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n atan: { name: 'atan', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n atanh: { name: 'atanh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n avg_over_time: { name: 'avg_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n ceil: { name: 'ceil', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n changes: { name: 'changes', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n clamp: {\n name: 'clamp',\n argTypes: [valueType.vector, valueType.scalar, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n clamp_max: {\n name: 'clamp_max',\n argTypes: [valueType.vector, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n clamp_min: {\n name: 'clamp_min',\n argTypes: [valueType.vector, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n cos: { name: 'cos', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n cosh: { name: 'cosh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n count_over_time: { name: 'count_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n day_of_month: { name: 'day_of_month', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n day_of_week: { name: 'day_of_week', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n day_of_year: { name: 'day_of_year', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n days_in_month: { name: 'days_in_month', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n deg: { name: 'deg', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n delta: { name: 'delta', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n deriv: { name: 'deriv', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n exp: { name: 'exp', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n floor: { name: 'floor', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n histogram_avg: { name: 'histogram_avg', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n histogram_count: { name: 'histogram_count', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n histogram_fraction: {\n name: 'histogram_fraction',\n argTypes: [valueType.scalar, valueType.scalar, valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_quantile: {\n name: 'histogram_quantile',\n argTypes: [valueType.scalar, valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_stddev: {\n name: 'histogram_stddev',\n argTypes: [valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_stdvar: {\n name: 'histogram_stdvar',\n argTypes: [valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_sum: { name: 'histogram_sum', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n double_exponential_smoothing: {\n name: 'double_exponential_smoothing',\n argTypes: [valueType.matrix, valueType.scalar, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n hour: { name: 'hour', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n idelta: { name: 'idelta', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n increase: { name: 'increase', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n irate: { name: 'irate', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n label_join: {\n name: 'label_join',\n argTypes: [valueType.vector, valueType.string, valueType.string, valueType.string],\n variadic: -1,\n returnType: valueType.vector,\n },\n label_replace: {\n name: 'label_replace',\n argTypes: [valueType.vector, valueType.string, valueType.string, valueType.string, valueType.string],\n variadic: 0,\n returnType: valueType.vector,\n },\n last_over_time: { name: 'last_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n ln: { name: 'ln', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n log10: { name: 'log10', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n log2: { name: 'log2', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n mad_over_time: { name: 'mad_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n max_over_time: { name: 'max_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n min_over_time: { name: 'min_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n minute: { name: 'minute', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n month: { name: 'month', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n pi: { name: 'pi', argTypes: [], variadic: 0, returnType: valueType.scalar },\n predict_linear: {\n name: 'predict_linear',\n argTypes: [valueType.matrix, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n present_over_time: {\n name: 'present_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n quantile_over_time: {\n name: 'quantile_over_time',\n argTypes: [valueType.scalar, valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n rad: { name: 'rad', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n rate: { name: 'rate', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n resets: { name: 'resets', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n round: { name: 'round', argTypes: [valueType.vector, valueType.scalar], variadic: 1, returnType: valueType.vector },\n scalar: { name: 'scalar', argTypes: [valueType.vector], variadic: 0, returnType: valueType.scalar },\n sgn: { name: 'sgn', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sin: { name: 'sin', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sinh: { name: 'sinh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sort: { name: 'sort', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sort_by_label: {\n name: 'sort_by_label',\n argTypes: [valueType.vector, valueType.string],\n variadic: -1,\n returnType: valueType.vector,\n },\n sort_by_label_desc: {\n name: 'sort_by_label_desc',\n argTypes: [valueType.vector, valueType.string],\n variadic: -1,\n returnType: valueType.vector,\n },\n sort_desc: { name: 'sort_desc', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sqrt: { name: 'sqrt', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n stddev_over_time: {\n name: 'stddev_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n stdvar_over_time: {\n name: 'stdvar_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n sum_over_time: { name: 'sum_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n tan: { name: 'tan', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n tanh: { name: 'tanh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n time: { name: 'time', argTypes: [], variadic: 0, returnType: valueType.scalar },\n timestamp: { name: 'timestamp', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n vector: { name: 'vector', argTypes: [valueType.scalar], variadic: 0, returnType: valueType.vector },\n year: { name: 'year', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n};\n"],"names":["valueType","functionSignatures","abs","name","argTypes","vector","variadic","returnType","absent","absent_over_time","matrix","acos","acosh","asin","asinh","atan","atanh","avg_over_time","ceil","changes","clamp","scalar","clamp_max","clamp_min","cos","cosh","count_over_time","day_of_month","day_of_week","day_of_year","days_in_month","deg","delta","deriv","exp","floor","histogram_avg","histogram_count","histogram_fraction","histogram_quantile","histogram_stddev","histogram_stdvar","histogram_sum","double_exponential_smoothing","hour","idelta","increase","irate","label_join","string","label_replace","last_over_time","ln","log10","log2","mad_over_time","max_over_time","min_over_time","minute","month","pi","predict_linear","present_over_time","quantile_over_time","rad","rate","resets","round","sgn","sin","sinh","sort","sort_by_label","sort_by_label_desc","sort_desc","sqrt","stddev_over_time","stdvar_over_time","sum_over_time","tan","tanh","time","timestamp","year"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/promql/functionSignatures.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/functionSignatures.ts\n\nimport { valueType, Func } from './ast';\n\nexport const functionSignatures: Record<string, Func> = {\n abs: { name: 'abs', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n absent: { name: 'absent', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n absent_over_time: {\n name: 'absent_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n acos: { name: 'acos', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n acosh: { name: 'acosh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n asin: { name: 'asin', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n asinh: { name: 'asinh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n atan: { name: 'atan', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n atanh: { name: 'atanh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n avg_over_time: { name: 'avg_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n ceil: { name: 'ceil', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n changes: { name: 'changes', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n clamp: {\n name: 'clamp',\n argTypes: [valueType.vector, valueType.scalar, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n clamp_max: {\n name: 'clamp_max',\n argTypes: [valueType.vector, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n clamp_min: {\n name: 'clamp_min',\n argTypes: [valueType.vector, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n cos: { name: 'cos', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n cosh: { name: 'cosh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n count_over_time: { name: 'count_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n day_of_month: { name: 'day_of_month', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n day_of_week: { name: 'day_of_week', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n day_of_year: { name: 'day_of_year', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n days_in_month: { name: 'days_in_month', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n deg: { name: 'deg', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n delta: { name: 'delta', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n deriv: { name: 'deriv', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n exp: { name: 'exp', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n floor: { name: 'floor', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n histogram_avg: { name: 'histogram_avg', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n histogram_count: { name: 'histogram_count', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n histogram_fraction: {\n name: 'histogram_fraction',\n argTypes: [valueType.scalar, valueType.scalar, valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_quantile: {\n name: 'histogram_quantile',\n argTypes: [valueType.scalar, valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_stddev: {\n name: 'histogram_stddev',\n argTypes: [valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_stdvar: {\n name: 'histogram_stdvar',\n argTypes: [valueType.vector],\n variadic: 0,\n returnType: valueType.vector,\n },\n histogram_sum: { name: 'histogram_sum', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n double_exponential_smoothing: {\n name: 'double_exponential_smoothing',\n argTypes: [valueType.matrix, valueType.scalar, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n hour: { name: 'hour', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n idelta: { name: 'idelta', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n increase: { name: 'increase', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n irate: { name: 'irate', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n label_join: {\n name: 'label_join',\n argTypes: [valueType.vector, valueType.string, valueType.string, valueType.string],\n variadic: -1,\n returnType: valueType.vector,\n },\n label_replace: {\n name: 'label_replace',\n argTypes: [valueType.vector, valueType.string, valueType.string, valueType.string, valueType.string],\n variadic: 0,\n returnType: valueType.vector,\n },\n last_over_time: { name: 'last_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n ln: { name: 'ln', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n log10: { name: 'log10', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n log2: { name: 'log2', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n mad_over_time: { name: 'mad_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n max_over_time: { name: 'max_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n min_over_time: { name: 'min_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n minute: { name: 'minute', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n month: { name: 'month', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n pi: { name: 'pi', argTypes: [], variadic: 0, returnType: valueType.scalar },\n predict_linear: {\n name: 'predict_linear',\n argTypes: [valueType.matrix, valueType.scalar],\n variadic: 0,\n returnType: valueType.vector,\n },\n present_over_time: {\n name: 'present_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n quantile_over_time: {\n name: 'quantile_over_time',\n argTypes: [valueType.scalar, valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n rad: { name: 'rad', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n rate: { name: 'rate', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n resets: { name: 'resets', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n round: { name: 'round', argTypes: [valueType.vector, valueType.scalar], variadic: 1, returnType: valueType.vector },\n scalar: { name: 'scalar', argTypes: [valueType.vector], variadic: 0, returnType: valueType.scalar },\n sgn: { name: 'sgn', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sin: { name: 'sin', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sinh: { name: 'sinh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sort: { name: 'sort', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sort_by_label: {\n name: 'sort_by_label',\n argTypes: [valueType.vector, valueType.string],\n variadic: -1,\n returnType: valueType.vector,\n },\n sort_by_label_desc: {\n name: 'sort_by_label_desc',\n argTypes: [valueType.vector, valueType.string],\n variadic: -1,\n returnType: valueType.vector,\n },\n sort_desc: { name: 'sort_desc', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n sqrt: { name: 'sqrt', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n stddev_over_time: {\n name: 'stddev_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n stdvar_over_time: {\n name: 'stdvar_over_time',\n argTypes: [valueType.matrix],\n variadic: 0,\n returnType: valueType.vector,\n },\n sum_over_time: { name: 'sum_over_time', argTypes: [valueType.matrix], variadic: 0, returnType: valueType.vector },\n tan: { name: 'tan', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n tanh: { name: 'tanh', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n time: { name: 'time', argTypes: [], variadic: 0, returnType: valueType.scalar },\n timestamp: { name: 'timestamp', argTypes: [valueType.vector], variadic: 0, returnType: valueType.vector },\n vector: { name: 'vector', argTypes: [valueType.scalar], variadic: 0, returnType: valueType.vector },\n year: { name: 'year', argTypes: [valueType.vector], variadic: 1, returnType: valueType.vector },\n};\n"],"names":["valueType","functionSignatures","abs","name","argTypes","vector","variadic","returnType","absent","absent_over_time","matrix","acos","acosh","asin","asinh","atan","atanh","avg_over_time","ceil","changes","clamp","scalar","clamp_max","clamp_min","cos","cosh","count_over_time","day_of_month","day_of_week","day_of_year","days_in_month","deg","delta","deriv","exp","floor","histogram_avg","histogram_count","histogram_fraction","histogram_quantile","histogram_stddev","histogram_stdvar","histogram_sum","double_exponential_smoothing","hour","idelta","increase","irate","label_join","string","label_replace","last_over_time","ln","log10","log2","mad_over_time","max_over_time","min_over_time","minute","month","pi","predict_linear","present_over_time","quantile_over_time","rad","rate","resets","round","sgn","sin","sinh","sort","sort_by_label","sort_by_label_desc","sort_desc","sqrt","stddev_over_time","stdvar_over_time","sum_over_time","tan","tanh","time","timestamp","year"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // Copyright 2025 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/promql/serialize.ts"],"sourcesContent":["// Copyright 2025 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/serialize.ts\n\nimport { formatDuration, msToPrometheusDuration } from '@perses-dev/core';\nimport ASTNode, {\n VectorSelector,\n matchType,\n vectorMatchCardinality,\n nodeType,\n StartOrEnd,\n MatrixSelector,\n} from './ast';\nimport { aggregatorsWithParam, maybeParenthesizeBinopChild, escapeString } from './utils';\n\nconst serializeAtAndOffset = (timestamp: number | null, startOrEnd: StartOrEnd, offset: number): string =>\n `${timestamp !== null ? ` @ ${(timestamp / 1000).toFixed(3)}` : startOrEnd !== null ? ` @ ${startOrEnd}()` : ''}${\n offset === 0\n ? ''\n : offset > 0\n ? ` offset ${formatDuration(msToPrometheusDuration(offset))}`\n : ` offset -${formatDuration(msToPrometheusDuration(-offset))}`\n }`;\n\nconst serializeSelector = (node: VectorSelector | MatrixSelector): string => {\n const matchers = node.matchers\n .filter((m) => !(m.name === '__name__' && m.type === matchType.equal && m.value === node.name))\n .map((m) => `${m.name}${m.type}\"${escapeString(m.value)}\"`);\n\n const range = node.type === nodeType.matrixSelector ? `[${formatDuration(msToPrometheusDuration(node.range))}]` : '';\n const atAndOffset = serializeAtAndOffset(node.timestamp, node.startOrEnd, node.offset);\n\n return `${node.name}${matchers.length > 0 ? `{${matchers.join(',')}}` : ''}${range}${atAndOffset}`;\n};\n\nconst serializeNode = (node: ASTNode, indent = 0, pretty = false, initialIndent = true): string => {\n const childListSeparator = pretty ? '\\n' : '';\n const childSeparator = pretty ? '\\n' : ' ';\n const childIndent = indent + 2;\n const ind = pretty ? ' '.repeat(indent) : '';\n // Needed for unary operators.\n const initialInd = initialIndent ? ind : '';\n\n switch (node.type) {\n case nodeType.aggregation:\n return `${initialInd}${node.op}${\n node.without\n ? ` without(${node.grouping.join(', ')}) `\n : node.grouping.length > 0\n ? ` by(${node.grouping.join(', ')}) `\n : ''\n }(${childListSeparator}${\n aggregatorsWithParam.includes(node.op) && node.param !== null\n ? `${serializeNode(node.param, childIndent, pretty)},${childSeparator}`\n : ''\n }${serializeNode(node.expr, childIndent, pretty)}${childListSeparator}${ind})`;\n\n case nodeType.subquery:\n return `${initialInd}${serializeNode(node.expr, indent, pretty)}[${formatDuration(msToPrometheusDuration(node.range))}:${\n node.step !== 0 ? formatDuration(msToPrometheusDuration(node.step)) : ''\n }]${serializeAtAndOffset(node.timestamp, node.startOrEnd, node.offset)}`;\n\n case nodeType.parenExpr:\n return `${initialInd}(${childListSeparator}${serializeNode(\n node.expr,\n childIndent,\n pretty\n )}${childListSeparator}${ind})`;\n\n case nodeType.call: {\n const sep = node.args.length > 0 ? childListSeparator : '';\n\n return `${initialInd}${node.func.name}(${sep}${node.args\n .map((arg) => serializeNode(arg, childIndent, pretty))\n .join(',' + childSeparator)}${sep}${node.args.length > 0 ? ind : ''})`;\n }\n\n case nodeType.matrixSelector:\n return `${initialInd}${serializeSelector(node)}`;\n\n case nodeType.vectorSelector:\n return `${initialInd}${serializeSelector(node)}`;\n\n case nodeType.numberLiteral:\n return `${initialInd}${node.val}`;\n\n case nodeType.stringLiteral:\n return `${initialInd}\"${escapeString(node.val)}\"`;\n\n case nodeType.unaryExpr:\n return `${initialInd}${node.op}${serializeNode(node.expr, indent, pretty, false)}`;\n\n case nodeType.binaryExpr: {\n let matching = '';\n let grouping = '';\n const vm = node.matching;\n if (vm !== null && (vm.labels.length > 0 || vm.on)) {\n if (vm.on) {\n matching = ` on(${vm.labels.join(', ')})`;\n } else {\n matching = ` ignoring(${vm.labels.join(', ')})`;\n }\n\n if (vm.card === vectorMatchCardinality.manyToOne || vm.card === vectorMatchCardinality.oneToMany) {\n grouping = ` group_${vm.card === vectorMatchCardinality.manyToOne ? 'left' : 'right'}(${vm.include.join(',')})`;\n }\n }\n\n return `${serializeNode(maybeParenthesizeBinopChild(node.op, node.lhs), childIndent, pretty)}${childSeparator}${ind}${\n node.op\n }${node.bool ? ' bool' : ''}${matching}${grouping}${childSeparator}${serializeNode(\n maybeParenthesizeBinopChild(node.op, node.rhs),\n childIndent,\n pretty\n )}`;\n }\n\n case nodeType.placeholder:\n // TODO: Should we just throw an error when trying to serialize an AST containing a placeholder node?\n // (that would currently break editing-as-text of ASTs that contain placeholders)\n return `${initialInd}…${\n node.children.length > 0\n ? `(${childListSeparator}${node.children\n .map((child) => serializeNode(child, childIndent, pretty))\n .join(',' + childSeparator)}${childListSeparator}${ind})`\n : ''\n }`;\n\n default:\n throw new Error('unsupported node type');\n }\n};\n\nexport default serializeNode;\n"],"names":["formatDuration","msToPrometheusDuration","matchType","vectorMatchCardinality","nodeType","aggregatorsWithParam","maybeParenthesizeBinopChild","escapeString","serializeAtAndOffset","timestamp","startOrEnd","offset","toFixed","serializeSelector","node","matchers","filter","m","name","type","equal","value","map","range","matrixSelector","atAndOffset","length","join","serializeNode","indent","pretty","initialIndent","childListSeparator","childSeparator","childIndent","ind","repeat","initialInd","aggregation","op","without","grouping","includes","param","expr","subquery","step","parenExpr","call","sep","args","func","arg","vectorSelector","numberLiteral","val","stringLiteral","unaryExpr","binaryExpr","matching","vm","labels","on","card","manyToOne","oneToMany","include","lhs","bool","rhs","placeholder","children","child","Error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/promql/serialize.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/serialize.ts\n\nimport { formatDuration, msToPrometheusDuration } from '@perses-dev/core';\nimport ASTNode, {\n VectorSelector,\n matchType,\n vectorMatchCardinality,\n nodeType,\n StartOrEnd,\n MatrixSelector,\n} from './ast';\nimport { aggregatorsWithParam, maybeParenthesizeBinopChild, escapeString } from './utils';\n\nconst serializeAtAndOffset = (timestamp: number | null, startOrEnd: StartOrEnd, offset: number): string =>\n `${timestamp !== null ? ` @ ${(timestamp / 1000).toFixed(3)}` : startOrEnd !== null ? ` @ ${startOrEnd}()` : ''}${\n offset === 0\n ? ''\n : offset > 0\n ? ` offset ${formatDuration(msToPrometheusDuration(offset))}`\n : ` offset -${formatDuration(msToPrometheusDuration(-offset))}`\n }`;\n\nconst serializeSelector = (node: VectorSelector | MatrixSelector): string => {\n const matchers = node.matchers\n .filter((m) => !(m.name === '__name__' && m.type === matchType.equal && m.value === node.name))\n .map((m) => `${m.name}${m.type}\"${escapeString(m.value)}\"`);\n\n const range = node.type === nodeType.matrixSelector ? `[${formatDuration(msToPrometheusDuration(node.range))}]` : '';\n const atAndOffset = serializeAtAndOffset(node.timestamp, node.startOrEnd, node.offset);\n\n return `${node.name}${matchers.length > 0 ? `{${matchers.join(',')}}` : ''}${range}${atAndOffset}`;\n};\n\nconst serializeNode = (node: ASTNode, indent = 0, pretty = false, initialIndent = true): string => {\n const childListSeparator = pretty ? '\\n' : '';\n const childSeparator = pretty ? '\\n' : ' ';\n const childIndent = indent + 2;\n const ind = pretty ? ' '.repeat(indent) : '';\n // Needed for unary operators.\n const initialInd = initialIndent ? ind : '';\n\n switch (node.type) {\n case nodeType.aggregation:\n return `${initialInd}${node.op}${\n node.without\n ? ` without(${node.grouping.join(', ')}) `\n : node.grouping.length > 0\n ? ` by(${node.grouping.join(', ')}) `\n : ''\n }(${childListSeparator}${\n aggregatorsWithParam.includes(node.op) && node.param !== null\n ? `${serializeNode(node.param, childIndent, pretty)},${childSeparator}`\n : ''\n }${serializeNode(node.expr, childIndent, pretty)}${childListSeparator}${ind})`;\n\n case nodeType.subquery:\n return `${initialInd}${serializeNode(node.expr, indent, pretty)}[${formatDuration(msToPrometheusDuration(node.range))}:${\n node.step !== 0 ? formatDuration(msToPrometheusDuration(node.step)) : ''\n }]${serializeAtAndOffset(node.timestamp, node.startOrEnd, node.offset)}`;\n\n case nodeType.parenExpr:\n return `${initialInd}(${childListSeparator}${serializeNode(\n node.expr,\n childIndent,\n pretty\n )}${childListSeparator}${ind})`;\n\n case nodeType.call: {\n const sep = node.args.length > 0 ? childListSeparator : '';\n\n return `${initialInd}${node.func.name}(${sep}${node.args\n .map((arg) => serializeNode(arg, childIndent, pretty))\n .join(',' + childSeparator)}${sep}${node.args.length > 0 ? ind : ''})`;\n }\n\n case nodeType.matrixSelector:\n return `${initialInd}${serializeSelector(node)}`;\n\n case nodeType.vectorSelector:\n return `${initialInd}${serializeSelector(node)}`;\n\n case nodeType.numberLiteral:\n return `${initialInd}${node.val}`;\n\n case nodeType.stringLiteral:\n return `${initialInd}\"${escapeString(node.val)}\"`;\n\n case nodeType.unaryExpr:\n return `${initialInd}${node.op}${serializeNode(node.expr, indent, pretty, false)}`;\n\n case nodeType.binaryExpr: {\n let matching = '';\n let grouping = '';\n const vm = node.matching;\n if (vm !== null && (vm.labels.length > 0 || vm.on)) {\n if (vm.on) {\n matching = ` on(${vm.labels.join(', ')})`;\n } else {\n matching = ` ignoring(${vm.labels.join(', ')})`;\n }\n\n if (vm.card === vectorMatchCardinality.manyToOne || vm.card === vectorMatchCardinality.oneToMany) {\n grouping = ` group_${vm.card === vectorMatchCardinality.manyToOne ? 'left' : 'right'}(${vm.include.join(',')})`;\n }\n }\n\n return `${serializeNode(maybeParenthesizeBinopChild(node.op, node.lhs), childIndent, pretty)}${childSeparator}${ind}${\n node.op\n }${node.bool ? ' bool' : ''}${matching}${grouping}${childSeparator}${serializeNode(\n maybeParenthesizeBinopChild(node.op, node.rhs),\n childIndent,\n pretty\n )}`;\n }\n\n case nodeType.placeholder:\n // TODO: Should we just throw an error when trying to serialize an AST containing a placeholder node?\n // (that would currently break editing-as-text of ASTs that contain placeholders)\n return `${initialInd}…${\n node.children.length > 0\n ? `(${childListSeparator}${node.children\n .map((child) => serializeNode(child, childIndent, pretty))\n .join(',' + childSeparator)}${childListSeparator}${ind})`\n : ''\n }`;\n\n default:\n throw new Error('unsupported node type');\n }\n};\n\nexport default serializeNode;\n"],"names":["formatDuration","msToPrometheusDuration","matchType","vectorMatchCardinality","nodeType","aggregatorsWithParam","maybeParenthesizeBinopChild","escapeString","serializeAtAndOffset","timestamp","startOrEnd","offset","toFixed","serializeSelector","node","matchers","filter","m","name","type","equal","value","map","range","matrixSelector","atAndOffset","length","join","serializeNode","indent","pretty","initialIndent","childListSeparator","childSeparator","childIndent","ind","repeat","initialInd","aggregation","op","without","grouping","includes","param","expr","subquery","step","parenExpr","call","sep","args","func","arg","vectorSelector","numberLiteral","val","stringLiteral","unaryExpr","binaryExpr","matching","vm","labels","on","card","manyToOne","oneToMany","include","lhs","bool","rhs","placeholder","children","child","Error"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // Copyright 2025 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/promql/utils.ts"],"sourcesContent":["// Copyright 2025 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/utils.ts\n\nimport ASTNode, { binaryOperatorType, nodeType } from './ast';\n\nconst binOpPrecedence = {\n [binaryOperatorType.add]: 3,\n [binaryOperatorType.sub]: 3,\n [binaryOperatorType.mul]: 2,\n [binaryOperatorType.div]: 2,\n [binaryOperatorType.mod]: 2,\n [binaryOperatorType.pow]: 1,\n [binaryOperatorType.eql]: 4,\n [binaryOperatorType.neq]: 4,\n [binaryOperatorType.gtr]: 4,\n [binaryOperatorType.lss]: 4,\n [binaryOperatorType.gte]: 4,\n [binaryOperatorType.lte]: 4,\n [binaryOperatorType.and]: 5,\n [binaryOperatorType.or]: 6,\n [binaryOperatorType.unless]: 5,\n [binaryOperatorType.atan2]: 2,\n};\n\nexport const maybeParenthesizeBinopChild = (op: binaryOperatorType, child: ASTNode): ASTNode => {\n if (child.type !== nodeType.binaryExpr) {\n return child;\n }\n\n if (binOpPrecedence[op] > binOpPrecedence[child.op]) {\n return child;\n }\n\n // TODO: Parens aren't necessary for left-associativity within same precedence,\n // or right-associativity between two power operators.\n return {\n type: nodeType.parenExpr,\n expr: child,\n };\n};\n\nexport const getNodeChildren = (node: ASTNode): ASTNode[] => {\n switch (node.type) {\n case nodeType.aggregation:\n return node.param === null ? [node.expr] : [node.param, node.expr];\n case nodeType.subquery:\n return [node.expr];\n case nodeType.parenExpr:\n return [node.expr];\n case nodeType.call:\n return node.args;\n case nodeType.matrixSelector:\n case nodeType.vectorSelector:\n case nodeType.numberLiteral:\n case nodeType.stringLiteral:\n return [];\n case nodeType.placeholder:\n return node.children;\n case nodeType.unaryExpr:\n return [node.expr];\n case nodeType.binaryExpr:\n return [node.lhs, node.rhs];\n default:\n throw new Error('unsupported node type');\n }\n};\n\nexport const aggregatorsWithParam = ['topk', 'bottomk', 'quantile', 'count_values', 'limitk', 'limit_ratio'];\n\nexport const escapeString = (str: string): string => {\n return str.replace(/([\\\\\"])/g, '\\\\$1');\n};\n"],"names":["binaryOperatorType","nodeType","binOpPrecedence","add","sub","mul","div","mod","pow","eql","neq","gtr","lss","gte","lte","and","or","unless","atan2","maybeParenthesizeBinopChild","op","child","type","binaryExpr","parenExpr","expr","getNodeChildren","node","aggregation","param","subquery","call","args","matrixSelector","vectorSelector","numberLiteral","stringLiteral","placeholder","children","unaryExpr","lhs","rhs","Error","aggregatorsWithParam","escapeString","str","replace"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,2IAA2I;AAE3I,SAAkBA,kBAAkB,EAAEC,QAAQ,QAAQ,QAAQ;AAE9D,MAAMC,kBAAkB;IACtB,CAACF,mBAAmBG,GAAG,CAAC,EAAE;IAC1B,CAACH,mBAAmBI,GAAG,CAAC,EAAE;IAC1B,CAACJ,mBAAmBK,GAAG,CAAC,EAAE;IAC1B,CAACL,mBAAmBM,GAAG,CAAC,EAAE;IAC1B,CAACN,mBAAmBO,GAAG,CAAC,EAAE;IAC1B,CAACP,mBAAmBQ,GAAG,CAAC,EAAE;IAC1B,CAACR,mBAAmBS,GAAG,CAAC,EAAE;IAC1B,CAACT,mBAAmBU,GAAG,CAAC,EAAE;IAC1B,CAACV,mBAAmBW,GAAG,CAAC,EAAE;IAC1B,CAACX,mBAAmBY,GAAG,CAAC,EAAE;IAC1B,CAACZ,mBAAmBa,GAAG,CAAC,EAAE;IAC1B,CAACb,mBAAmBc,GAAG,CAAC,EAAE;IAC1B,CAACd,mBAAmBe,GAAG,CAAC,EAAE;IAC1B,CAACf,mBAAmBgB,EAAE,CAAC,EAAE;IACzB,CAAChB,mBAAmBiB,MAAM,CAAC,EAAE;IAC7B,CAACjB,mBAAmBkB,KAAK,CAAC,EAAE;AAC9B;AAEA,OAAO,MAAMC,8BAA8B,CAACC,IAAwBC;IAClE,IAAIA,MAAMC,IAAI,KAAKrB,SAASsB,UAAU,EAAE;QACtC,OAAOF;IACT;IAEA,IAAInB,eAAe,CAACkB,GAAG,GAAGlB,eAAe,CAACmB,MAAMD,EAAE,CAAC,EAAE;QACnD,OAAOC;IACT;IAEA,+EAA+E;IAC/E,sDAAsD;IACtD,OAAO;QACLC,MAAMrB,SAASuB,SAAS;QACxBC,MAAMJ;IACR;AACF,EAAE;AAEF,OAAO,MAAMK,kBAAkB,CAACC;IAC9B,OAAQA,KAAKL,IAAI;QACf,KAAKrB,SAAS2B,WAAW;YACvB,OAAOD,KAAKE,KAAK,KAAK,OAAO;gBAACF,KAAKF,IAAI;aAAC,GAAG;gBAACE,KAAKE,KAAK;gBAAEF,KAAKF,IAAI;aAAC;QACpE,KAAKxB,SAAS6B,QAAQ;YACpB,OAAO;gBAACH,KAAKF,IAAI;aAAC;QACpB,KAAKxB,SAASuB,SAAS;YACrB,OAAO;gBAACG,KAAKF,IAAI;aAAC;QACpB,KAAKxB,SAAS8B,IAAI;YAChB,OAAOJ,KAAKK,IAAI;QAClB,KAAK/B,SAASgC,cAAc;QAC5B,KAAKhC,SAASiC,cAAc;QAC5B,KAAKjC,SAASkC,aAAa;QAC3B,KAAKlC,SAASmC,aAAa;YACzB,OAAO,EAAE;QACX,KAAKnC,SAASoC,WAAW;YACvB,OAAOV,KAAKW,QAAQ;QACtB,KAAKrC,SAASsC,SAAS;YACrB,OAAO;gBAACZ,KAAKF,IAAI;aAAC;QACpB,KAAKxB,SAASsB,UAAU;YACtB,OAAO;gBAACI,KAAKa,GAAG;gBAAEb,KAAKc,GAAG;aAAC;QAC7B;YACE,MAAM,IAAIC,MAAM;IACpB;AACF,EAAE;AAEF,OAAO,MAAMC,uBAAuB;IAAC;IAAQ;IAAW;IAAY;IAAgB;IAAU;CAAc,CAAC;AAE7G,OAAO,MAAMC,eAAe,CAACC;IAC3B,OAAOA,IAAIC,OAAO,CAAC,YAAY;AACjC,EAAE"}
1
+ {"version":3,"sources":["../../../../src/components/promql/utils.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Forked from https://github.com/prometheus/prometheus/blob/65f610353919b1c7b42d3776c3a95b68046a6bba/web/ui/mantine-ui/src/promql/utils.ts\n\nimport ASTNode, { binaryOperatorType, nodeType } from './ast';\n\nconst binOpPrecedence = {\n [binaryOperatorType.add]: 3,\n [binaryOperatorType.sub]: 3,\n [binaryOperatorType.mul]: 2,\n [binaryOperatorType.div]: 2,\n [binaryOperatorType.mod]: 2,\n [binaryOperatorType.pow]: 1,\n [binaryOperatorType.eql]: 4,\n [binaryOperatorType.neq]: 4,\n [binaryOperatorType.gtr]: 4,\n [binaryOperatorType.lss]: 4,\n [binaryOperatorType.gte]: 4,\n [binaryOperatorType.lte]: 4,\n [binaryOperatorType.and]: 5,\n [binaryOperatorType.or]: 6,\n [binaryOperatorType.unless]: 5,\n [binaryOperatorType.atan2]: 2,\n};\n\nexport const maybeParenthesizeBinopChild = (op: binaryOperatorType, child: ASTNode): ASTNode => {\n if (child.type !== nodeType.binaryExpr) {\n return child;\n }\n\n if (binOpPrecedence[op] > binOpPrecedence[child.op]) {\n return child;\n }\n\n // TODO: Parens aren't necessary for left-associativity within same precedence,\n // or right-associativity between two power operators.\n return {\n type: nodeType.parenExpr,\n expr: child,\n };\n};\n\nexport const getNodeChildren = (node: ASTNode): ASTNode[] => {\n switch (node.type) {\n case nodeType.aggregation:\n return node.param === null ? [node.expr] : [node.param, node.expr];\n case nodeType.subquery:\n return [node.expr];\n case nodeType.parenExpr:\n return [node.expr];\n case nodeType.call:\n return node.args;\n case nodeType.matrixSelector:\n case nodeType.vectorSelector:\n case nodeType.numberLiteral:\n case nodeType.stringLiteral:\n return [];\n case nodeType.placeholder:\n return node.children;\n case nodeType.unaryExpr:\n return [node.expr];\n case nodeType.binaryExpr:\n return [node.lhs, node.rhs];\n default:\n throw new Error('unsupported node type');\n }\n};\n\nexport const aggregatorsWithParam = ['topk', 'bottomk', 'quantile', 'count_values', 'limitk', 'limit_ratio'];\n\nexport const escapeString = (str: string): string => {\n return str.replace(/([\\\\\"])/g, '\\\\$1');\n};\n"],"names":["binaryOperatorType","nodeType","binOpPrecedence","add","sub","mul","div","mod","pow","eql","neq","gtr","lss","gte","lte","and","or","unless","atan2","maybeParenthesizeBinopChild","op","child","type","binaryExpr","parenExpr","expr","getNodeChildren","node","aggregation","param","subquery","call","args","matrixSelector","vectorSelector","numberLiteral","stringLiteral","placeholder","children","unaryExpr","lhs","rhs","Error","aggregatorsWithParam","escapeString","str","replace"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,2IAA2I;AAE3I,SAAkBA,kBAAkB,EAAEC,QAAQ,QAAQ,QAAQ;AAE9D,MAAMC,kBAAkB;IACtB,CAACF,mBAAmBG,GAAG,CAAC,EAAE;IAC1B,CAACH,mBAAmBI,GAAG,CAAC,EAAE;IAC1B,CAACJ,mBAAmBK,GAAG,CAAC,EAAE;IAC1B,CAACL,mBAAmBM,GAAG,CAAC,EAAE;IAC1B,CAACN,mBAAmBO,GAAG,CAAC,EAAE;IAC1B,CAACP,mBAAmBQ,GAAG,CAAC,EAAE;IAC1B,CAACR,mBAAmBS,GAAG,CAAC,EAAE;IAC1B,CAACT,mBAAmBU,GAAG,CAAC,EAAE;IAC1B,CAACV,mBAAmBW,GAAG,CAAC,EAAE;IAC1B,CAACX,mBAAmBY,GAAG,CAAC,EAAE;IAC1B,CAACZ,mBAAmBa,GAAG,CAAC,EAAE;IAC1B,CAACb,mBAAmBc,GAAG,CAAC,EAAE;IAC1B,CAACd,mBAAmBe,GAAG,CAAC,EAAE;IAC1B,CAACf,mBAAmBgB,EAAE,CAAC,EAAE;IACzB,CAAChB,mBAAmBiB,MAAM,CAAC,EAAE;IAC7B,CAACjB,mBAAmBkB,KAAK,CAAC,EAAE;AAC9B;AAEA,OAAO,MAAMC,8BAA8B,CAACC,IAAwBC;IAClE,IAAIA,MAAMC,IAAI,KAAKrB,SAASsB,UAAU,EAAE;QACtC,OAAOF;IACT;IAEA,IAAInB,eAAe,CAACkB,GAAG,GAAGlB,eAAe,CAACmB,MAAMD,EAAE,CAAC,EAAE;QACnD,OAAOC;IACT;IAEA,+EAA+E;IAC/E,sDAAsD;IACtD,OAAO;QACLC,MAAMrB,SAASuB,SAAS;QACxBC,MAAMJ;IACR;AACF,EAAE;AAEF,OAAO,MAAMK,kBAAkB,CAACC;IAC9B,OAAQA,KAAKL,IAAI;QACf,KAAKrB,SAAS2B,WAAW;YACvB,OAAOD,KAAKE,KAAK,KAAK,OAAO;gBAACF,KAAKF,IAAI;aAAC,GAAG;gBAACE,KAAKE,KAAK;gBAAEF,KAAKF,IAAI;aAAC;QACpE,KAAKxB,SAAS6B,QAAQ;YACpB,OAAO;gBAACH,KAAKF,IAAI;aAAC;QACpB,KAAKxB,SAASuB,SAAS;YACrB,OAAO;gBAACG,KAAKF,IAAI;aAAC;QACpB,KAAKxB,SAAS8B,IAAI;YAChB,OAAOJ,KAAKK,IAAI;QAClB,KAAK/B,SAASgC,cAAc;QAC5B,KAAKhC,SAASiC,cAAc;QAC5B,KAAKjC,SAASkC,aAAa;QAC3B,KAAKlC,SAASmC,aAAa;YACzB,OAAO,EAAE;QACX,KAAKnC,SAASoC,WAAW;YACvB,OAAOV,KAAKW,QAAQ;QACtB,KAAKrC,SAASsC,SAAS;YACrB,OAAO;gBAACZ,KAAKF,IAAI;aAAC;QACpB,KAAKxB,SAASsB,UAAU;YACtB,OAAO;gBAACI,KAAKa,GAAG;gBAAEb,KAAKc,GAAG;aAAC;QAC7B;YACE,MAAM,IAAIC,MAAM;IACpB;AACF,EAAE;AAEF,OAAO,MAAMC,uBAAuB;IAAC;IAAQ;IAAW;IAAY;IAAgB;IAAU;CAAc,CAAC;AAE7G,OAAO,MAAMC,eAAe,CAACC;IAC3B,OAAOA,IAAIC,OAAO,CAAC,YAAY;AACjC,EAAE"}
@@ -1,4 +1,4 @@
1
- // Copyright 2025 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/query.ts"],"sourcesContent":["// Copyright 2025 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useDatasourceClient } from '@perses-dev/plugin-system';\nimport { DatasourceSelector, StatusError } from '@perses-dev/core';\nimport { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport {\n InstantQueryRequestParameters,\n MonitoredInstantQueryResponse,\n ParseQueryRequestParameters,\n ParseQueryResponse,\n PrometheusClient,\n} from '../model';\n\nexport function useParseQuery(\n content: string,\n datasource: DatasourceSelector,\n enabled?: boolean\n): UseQueryResult<ParseQueryResponse, StatusError> {\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n return useQuery<ParseQueryResponse, StatusError>({\n enabled: !!client && enabled,\n queryKey: ['parseQuery', content, 'datasource', datasource],\n queryFn: async () => {\n const params: ParseQueryRequestParameters = { query: content };\n\n return await client!.parseQuery(params);\n },\n });\n}\n\nexport function useInstantQuery(\n content: string,\n datasource: DatasourceSelector,\n enabled?: boolean\n): UseQueryResult<MonitoredInstantQueryResponse, StatusError> {\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n return useQuery<MonitoredInstantQueryResponse, StatusError>({\n enabled: !!client && enabled,\n // TODO: for some reason the caching is not working: identical nodes still fire their requests after each change made to the promQL\n queryKey: ['instantQuery', content, 'datasource', datasource.kind],\n queryFn: async () => {\n const params: InstantQueryRequestParameters = { query: content };\n const startTime = performance.now();\n const response = await client!.instantQuery(params);\n const responseTime = performance.now() - startTime;\n\n return { ...response, responseTime };\n },\n });\n}\n"],"names":["useDatasourceClient","useQuery","useParseQuery","content","datasource","enabled","data","client","queryKey","queryFn","params","query","parseQuery","useInstantQuery","kind","startTime","performance","now","response","instantQuery","responseTime"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,mBAAmB,QAAQ,4BAA4B;AAEhE,SAASC,QAAQ,QAAwB,wBAAwB;AASjE,OAAO,SAASC,cACdC,OAAe,EACfC,UAA8B,EAC9BC,OAAiB;IAEjB,MAAM,EAAEC,MAAMC,MAAM,EAAE,GAAGP,oBAAsCI;IAE/D,OAAOH,SAA0C;QAC/CI,SAAS,CAAC,CAACE,UAAUF;QACrBG,UAAU;YAAC;YAAcL;YAAS;YAAcC;SAAW;QAC3DK,SAAS;YACP,MAAMC,SAAsC;gBAAEC,OAAOR;YAAQ;YAE7D,OAAO,MAAMI,OAAQK,UAAU,CAACF;QAClC;IACF;AACF;AAEA,OAAO,SAASG,gBACdV,OAAe,EACfC,UAA8B,EAC9BC,OAAiB;IAEjB,MAAM,EAAEC,MAAMC,MAAM,EAAE,GAAGP,oBAAsCI;IAE/D,OAAOH,SAAqD;QAC1DI,SAAS,CAAC,CAACE,UAAUF;QACrB,mIAAmI;QACnIG,UAAU;YAAC;YAAgBL;YAAS;YAAcC,WAAWU,IAAI;SAAC;QAClEL,SAAS;YACP,MAAMC,SAAwC;gBAAEC,OAAOR;YAAQ;YAC/D,MAAMY,YAAYC,YAAYC,GAAG;YACjC,MAAMC,WAAW,MAAMX,OAAQY,YAAY,CAACT;YAC5C,MAAMU,eAAeJ,YAAYC,GAAG,KAAKF;YAEzC,OAAO;gBAAE,GAAGG,QAAQ;gBAAEE;YAAa;QACrC;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/components/query.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useDatasourceClient } from '@perses-dev/plugin-system';\nimport { DatasourceSelector, StatusError } from '@perses-dev/core';\nimport { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport {\n InstantQueryRequestParameters,\n MonitoredInstantQueryResponse,\n ParseQueryRequestParameters,\n ParseQueryResponse,\n PrometheusClient,\n} from '../model';\n\nexport function useParseQuery(\n content: string,\n datasource: DatasourceSelector,\n enabled?: boolean\n): UseQueryResult<ParseQueryResponse, StatusError> {\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n return useQuery<ParseQueryResponse, StatusError>({\n enabled: !!client && enabled,\n queryKey: ['parseQuery', content, 'datasource', datasource],\n queryFn: async () => {\n const params: ParseQueryRequestParameters = { query: content };\n\n return await client!.parseQuery(params);\n },\n });\n}\n\nexport function useInstantQuery(\n content: string,\n datasource: DatasourceSelector,\n enabled?: boolean\n): UseQueryResult<MonitoredInstantQueryResponse, StatusError> {\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n return useQuery<MonitoredInstantQueryResponse, StatusError>({\n enabled: !!client && enabled,\n // TODO: for some reason the caching is not working: identical nodes still fire their requests after each change made to the promQL\n queryKey: ['instantQuery', content, 'datasource', datasource.kind],\n queryFn: async () => {\n const params: InstantQueryRequestParameters = { query: content };\n const startTime = performance.now();\n const response = await client!.instantQuery(params);\n const responseTime = performance.now() - startTime;\n\n return { ...response, responseTime };\n },\n });\n}\n"],"names":["useDatasourceClient","useQuery","useParseQuery","content","datasource","enabled","data","client","queryKey","queryFn","params","query","parseQuery","useInstantQuery","kind","startTime","performance","now","response","instantQuery","responseTime"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,mBAAmB,QAAQ,4BAA4B;AAEhE,SAASC,QAAQ,QAAwB,wBAAwB;AASjE,OAAO,SAASC,cACdC,OAAe,EACfC,UAA8B,EAC9BC,OAAiB;IAEjB,MAAM,EAAEC,MAAMC,MAAM,EAAE,GAAGP,oBAAsCI;IAE/D,OAAOH,SAA0C;QAC/CI,SAAS,CAAC,CAACE,UAAUF;QACrBG,UAAU;YAAC;YAAcL;YAAS;YAAcC;SAAW;QAC3DK,SAAS;YACP,MAAMC,SAAsC;gBAAEC,OAAOR;YAAQ;YAE7D,OAAO,MAAMI,OAAQK,UAAU,CAACF;QAClC;IACF;AACF;AAEA,OAAO,SAASG,gBACdV,OAAe,EACfC,UAA8B,EAC9BC,OAAiB;IAEjB,MAAM,EAAEC,MAAMC,MAAM,EAAE,GAAGP,oBAAsCI;IAE/D,OAAOH,SAAqD;QAC1DI,SAAS,CAAC,CAACE,UAAUF;QACrB,mIAAmI;QACnIG,UAAU;YAAC;YAAgBL;YAAS;YAAcC,WAAWU,IAAI;SAAC;QAClEL,SAAS;YACP,MAAMC,SAAwC;gBAAEC,OAAOR;YAAQ;YAC/D,MAAMY,YAAYC,YAAYC,GAAG;YACjC,MAAMC,WAAW,MAAMX,OAAQY,YAAY,CAACT;YAC5C,MAAMU,eAAeJ,YAAYC,GAAG,KAAKF;YAEzC,OAAO;gBAAE,GAAGG,QAAQ;gBAAEE;YAAa;QACrC;IACF;AACF"}
package/lib/env.d.js CHANGED
@@ -1,4 +1,4 @@
1
- // Copyright 2024 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
package/lib/env.d.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/env.d.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/// <reference types=\"@rsbuild/core/types\" />\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,6CAA6C"}
1
+ {"version":3,"sources":["../../src/env.d.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/// <reference types=\"@rsbuild/core/types\" />\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,6CAA6C"}
@@ -1,4 +1,4 @@
1
- // Copyright 2024 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/explore/PrometheusExplorer.tsx"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { QueryDefinition } from '@perses-dev/core';\nimport { Box, Stack, Tab, Tabs } from '@mui/material';\nimport { DataQueriesProvider, MultiQueryEditor, useSuggestedStepMs } from '@perses-dev/plugin-system';\nimport { useExplorerManagerContext } from '@perses-dev/explore';\nimport useResizeObserver from 'use-resize-observer';\nimport { Panel } from '@perses-dev/dashboards';\nimport { ReactElement, useState } from 'react';\nimport { DEFAULT_PROM } from '../model/prometheus-selectors';\nimport { FinderQueryParams } from './PrometheusMetricsFinder/types';\nimport { PrometheusMetricsFinder } from './PrometheusMetricsFinder';\n\ninterface MetricsExplorerQueryParams extends FinderQueryParams {\n tab?: string;\n queries?: QueryDefinition[];\n}\n\nconst PANEL_PREVIEW_HEIGHT = 700;\nconst FILTERED_QUERY_PLUGINS = ['PrometheusTimeSeriesQuery'];\n\nfunction TimeSeriesPanel({ queries }: { queries: QueryDefinition[] }): ReactElement {\n const { width, ref: boxRef } = useResizeObserver();\n const height = PANEL_PREVIEW_HEIGHT;\n\n const suggestedStepMs = useSuggestedStepMs(width);\n\n // map TimeSeriesQueryDefinition to Definition<UnknownSpec>\n const definitions = queries.length\n ? queries.map((query) => {\n return {\n kind: query.spec.plugin.kind,\n spec: query.spec.plugin.spec,\n };\n })\n : [];\n\n return (\n <Box ref={boxRef} height={height}>\n <DataQueriesProvider definitions={definitions} options={{ suggestedStepMs, mode: 'range' }}>\n <Panel\n panelOptions={{\n hideHeader: true,\n }}\n definition={{\n kind: 'Panel',\n spec: { queries: queries, display: { name: '' }, plugin: { kind: 'TimeSeriesChart', spec: {} } },\n }}\n />\n </DataQueriesProvider>\n </Box>\n );\n}\n\nfunction MetricDataTable({ queries }: { queries: QueryDefinition[] }): ReactElement {\n const height = PANEL_PREVIEW_HEIGHT;\n\n // map TimeSeriesQueryDefinition to Definition<UnknownSpec>\n const definitions = queries.map((query) => {\n return {\n kind: query.spec.plugin.kind,\n spec: query.spec.plugin.spec,\n };\n });\n\n return (\n <Box height={height}>\n <DataQueriesProvider definitions={definitions} options={{ mode: 'instant' }}>\n <Panel\n panelOptions={{\n hideHeader: true,\n }}\n definition={{\n kind: 'Panel',\n spec: { queries: queries, display: { name: '' }, plugin: { kind: 'TimeSeriesTable', spec: {} } },\n }}\n />\n </DataQueriesProvider>\n </Box>\n );\n}\n\nexport function PrometheusExplorer(): ReactElement {\n const {\n data: { tab = 'table', queries = [], datasource = DEFAULT_PROM, filters = [], exploredMetric = undefined },\n setData,\n } = useExplorerManagerContext<MetricsExplorerQueryParams>();\n\n const [queryDefinitions, setQueryDefinitions] = useState<QueryDefinition[]>(queries);\n\n return (\n <Stack gap={2} sx={{ width: '100%' }}>\n <Tabs\n value={tab}\n onChange={(_, state) => setData({ tab: state, queries })}\n variant=\"scrollable\"\n sx={{ borderBottom: 1, borderColor: 'divider' }}\n >\n <Tab value=\"table\" label=\"Table\" />\n <Tab value=\"graph\" label=\"Graph\" />\n <Tab value=\"finder\" label=\"Finder\" />\n </Tabs>\n <Stack gap={1}>\n {tab === 'table' && (\n <Stack>\n <MultiQueryEditor\n queryTypes={['TimeSeriesQuery']}\n onChange={(state) => setQueryDefinitions(state)}\n queries={queryDefinitions}\n onQueryRun={() => setData({ tab, queries: queryDefinitions })}\n filteredQueryPlugins={FILTERED_QUERY_PLUGINS}\n />\n <MetricDataTable queries={queries} />\n </Stack>\n )}\n {tab === 'graph' && (\n <Stack>\n <MultiQueryEditor\n queryTypes={['TimeSeriesQuery']}\n onChange={(state) => setQueryDefinitions(state)}\n queries={queryDefinitions}\n onQueryRun={() => setData({ tab, queries: queryDefinitions })}\n filteredQueryPlugins={FILTERED_QUERY_PLUGINS}\n />\n <TimeSeriesPanel queries={queries} />\n </Stack>\n )}\n {tab === 'finder' && (\n <Stack>\n <PrometheusMetricsFinder\n onChange={(state) => setData({ tab, ...state })}\n value={{ datasource, filters, exploredMetric }}\n />\n </Stack>\n )}\n </Stack>\n </Stack>\n );\n}\n"],"names":["Box","Stack","Tab","Tabs","DataQueriesProvider","MultiQueryEditor","useSuggestedStepMs","useExplorerManagerContext","useResizeObserver","Panel","useState","DEFAULT_PROM","PrometheusMetricsFinder","PANEL_PREVIEW_HEIGHT","FILTERED_QUERY_PLUGINS","TimeSeriesPanel","queries","width","ref","boxRef","height","suggestedStepMs","definitions","length","map","query","kind","spec","plugin","options","mode","panelOptions","hideHeader","definition","display","name","MetricDataTable","PrometheusExplorer","data","tab","datasource","filters","exploredMetric","undefined","setData","queryDefinitions","setQueryDefinitions","gap","sx","value","onChange","_","state","variant","borderBottom","borderColor","label","queryTypes","onQueryRun","filteredQueryPlugins"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/explore/PrometheusExplorer.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { QueryDefinition } from '@perses-dev/core';\nimport { Box, Stack, Tab, Tabs } from '@mui/material';\nimport { DataQueriesProvider, MultiQueryEditor, useSuggestedStepMs } from '@perses-dev/plugin-system';\nimport { useExplorerManagerContext } from '@perses-dev/explore';\nimport useResizeObserver from 'use-resize-observer';\nimport { Panel } from '@perses-dev/dashboards';\nimport { ReactElement, useState } from 'react';\nimport { DEFAULT_PROM } from '../model/prometheus-selectors';\nimport { FinderQueryParams } from './PrometheusMetricsFinder/types';\nimport { PrometheusMetricsFinder } from './PrometheusMetricsFinder';\n\ninterface MetricsExplorerQueryParams extends FinderQueryParams {\n tab?: string;\n queries?: QueryDefinition[];\n}\n\nconst PANEL_PREVIEW_HEIGHT = 700;\nconst FILTERED_QUERY_PLUGINS = ['PrometheusTimeSeriesQuery'];\n\nfunction TimeSeriesPanel({ queries }: { queries: QueryDefinition[] }): ReactElement {\n const { width, ref: boxRef } = useResizeObserver();\n const height = PANEL_PREVIEW_HEIGHT;\n\n const suggestedStepMs = useSuggestedStepMs(width);\n\n // map TimeSeriesQueryDefinition to Definition<UnknownSpec>\n const definitions = queries.length\n ? queries.map((query) => {\n return {\n kind: query.spec.plugin.kind,\n spec: query.spec.plugin.spec,\n };\n })\n : [];\n\n return (\n <Box ref={boxRef} height={height}>\n <DataQueriesProvider definitions={definitions} options={{ suggestedStepMs, mode: 'range' }}>\n <Panel\n panelOptions={{\n hideHeader: true,\n }}\n definition={{\n kind: 'Panel',\n spec: { queries: queries, display: { name: '' }, plugin: { kind: 'TimeSeriesChart', spec: {} } },\n }}\n />\n </DataQueriesProvider>\n </Box>\n );\n}\n\nfunction MetricDataTable({ queries }: { queries: QueryDefinition[] }): ReactElement {\n const height = PANEL_PREVIEW_HEIGHT;\n\n // map TimeSeriesQueryDefinition to Definition<UnknownSpec>\n const definitions = queries.map((query) => {\n return {\n kind: query.spec.plugin.kind,\n spec: query.spec.plugin.spec,\n };\n });\n\n return (\n <Box height={height}>\n <DataQueriesProvider definitions={definitions} options={{ mode: 'instant' }}>\n <Panel\n panelOptions={{\n hideHeader: true,\n }}\n definition={{\n kind: 'Panel',\n spec: { queries: queries, display: { name: '' }, plugin: { kind: 'TimeSeriesTable', spec: {} } },\n }}\n />\n </DataQueriesProvider>\n </Box>\n );\n}\n\nexport function PrometheusExplorer(): ReactElement {\n const {\n data: { tab = 'table', queries = [], datasource = DEFAULT_PROM, filters = [], exploredMetric = undefined },\n setData,\n } = useExplorerManagerContext<MetricsExplorerQueryParams>();\n\n const [queryDefinitions, setQueryDefinitions] = useState<QueryDefinition[]>(queries);\n\n return (\n <Stack gap={2} sx={{ width: '100%' }}>\n <Tabs\n value={tab}\n onChange={(_, state) => setData({ tab: state, queries })}\n variant=\"scrollable\"\n sx={{ borderBottom: 1, borderColor: 'divider' }}\n >\n <Tab value=\"table\" label=\"Table\" />\n <Tab value=\"graph\" label=\"Graph\" />\n <Tab value=\"finder\" label=\"Finder\" />\n </Tabs>\n <Stack gap={1}>\n {tab === 'table' && (\n <Stack>\n <MultiQueryEditor\n queryTypes={['TimeSeriesQuery']}\n onChange={(state) => setQueryDefinitions(state)}\n queries={queryDefinitions}\n onQueryRun={() => setData({ tab, queries: queryDefinitions })}\n filteredQueryPlugins={FILTERED_QUERY_PLUGINS}\n />\n <MetricDataTable queries={queries} />\n </Stack>\n )}\n {tab === 'graph' && (\n <Stack>\n <MultiQueryEditor\n queryTypes={['TimeSeriesQuery']}\n onChange={(state) => setQueryDefinitions(state)}\n queries={queryDefinitions}\n onQueryRun={() => setData({ tab, queries: queryDefinitions })}\n filteredQueryPlugins={FILTERED_QUERY_PLUGINS}\n />\n <TimeSeriesPanel queries={queries} />\n </Stack>\n )}\n {tab === 'finder' && (\n <Stack>\n <PrometheusMetricsFinder\n onChange={(state) => setData({ tab, ...state })}\n value={{ datasource, filters, exploredMetric }}\n />\n </Stack>\n )}\n </Stack>\n </Stack>\n );\n}\n"],"names":["Box","Stack","Tab","Tabs","DataQueriesProvider","MultiQueryEditor","useSuggestedStepMs","useExplorerManagerContext","useResizeObserver","Panel","useState","DEFAULT_PROM","PrometheusMetricsFinder","PANEL_PREVIEW_HEIGHT","FILTERED_QUERY_PLUGINS","TimeSeriesPanel","queries","width","ref","boxRef","height","suggestedStepMs","definitions","length","map","query","kind","spec","plugin","options","mode","panelOptions","hideHeader","definition","display","name","MetricDataTable","PrometheusExplorer","data","tab","datasource","filters","exploredMetric","undefined","setData","queryDefinitions","setQueryDefinitions","gap","sx","value","onChange","_","state","variant","borderBottom","borderColor","label","queryTypes","onQueryRun","filteredQueryPlugins"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- // Copyright 2024 The Perses Authors
2
+ // Copyright The Perses Authors
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
5
5
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/explore/PrometheusMetricsFinder/PrometheusMetricsFinder.tsx"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n Button,\n Checkbox,\n CircularProgress,\n FormControlLabel,\n IconButton,\n InputAdornment,\n Menu,\n MenuItem,\n Stack,\n StackProps,\n TextField,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\nimport { Fuzzy, FuzzyMatchingInterval } from '@nexucis/fuzzy';\nimport { DatasourceSelector } from '@perses-dev/core';\nimport { useExplorerQueryParams } from '@perses-dev/explore';\nimport ArrowLeftIcon from 'mdi-material-ui/ArrowLeft';\nimport CogIcon from 'mdi-material-ui/Cog';\nimport Magnify from 'mdi-material-ui/Magnify';\nimport { MouseEvent, ReactElement, useMemo, useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { DEFAULT_PROM } from '../../model';\nimport { MetricList } from './display/list/MetricList';\nimport { FinderFilters } from './filter/FinderFilters';\nimport { MetricOverview } from './overview/MetricOverview';\nimport { LabelFilter, Settings } from './types';\nimport { useLabelValues } from './utils';\n\nconst PERSES_METRICS_FINDER_SETTINGS = 'PERSES_METRICS_FINDER_SETTINGS';\n\nexport interface SettingsMenuProps {\n value: Settings;\n onChange: (value: Settings) => void;\n}\n\nexport function SettingsMenu({ value, onChange }: SettingsMenuProps): ReactElement {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: MouseEvent<HTMLButtonElement>): void => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (): void => {\n setAnchorEl(null);\n };\n\n return (\n <>\n <IconButton aria-label=\"settings\" size=\"large\" onClick={handleClick}>\n <CogIcon />\n </IconButton>\n <Menu id=\"finder-settings-menu\" anchorEl={anchorEl} open={open} onClose={handleClose}>\n <MenuItem onClick={(e) => e.preventDefault()}>\n <FormControlLabel\n control={<Checkbox />}\n label=\"Enable Metadata\"\n checked={value.isMetadataEnabled}\n onClick={() => onChange({ ...value, isMetadataEnabled: !value.isMetadataEnabled })}\n />\n </MenuItem>\n <MenuItem onClick={(e) => e.preventDefault()}>\n <FormControlLabel\n control={<Checkbox />}\n label=\"Enable Time Series Chart\"\n checked={value.isPanelEnabled}\n onClick={() => onChange({ ...value, isPanelEnabled: !value.isPanelEnabled })}\n />\n </MenuItem>\n </Menu>\n </>\n );\n}\n\nexport interface MetricNameExplorerProps extends StackProps {\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n isMetadataEnabled?: boolean;\n onExplore?: (metricName: string) => void;\n}\n\nexport function MetricNameExplorer({\n datasource,\n filters,\n isMetadataEnabled,\n onExplore,\n ...props\n}: MetricNameExplorerProps): ReactElement {\n const { data, isLoading, error } = useLabelValues('__name__', filters, datasource);\n const [search, setSearch] = useState('');\n const fuzzy = useMemo(() => new Fuzzy({ includeMatches: true, excludedChars: [' '] }), []);\n\n const filteredResults: Array<{ original: string; intervals?: FuzzyMatchingInterval[] }> | undefined = useMemo(() => {\n if (search && data?.data) {\n return fuzzy.filter(search, data.data).sort((a, b) => b.score - a.score);\n }\n return undefined;\n }, [data, fuzzy, search]);\n\n if (error) {\n return <Stack width=\"100%\">Error: {error.message}</Stack>;\n }\n\n if (isLoading) {\n return (\n <Stack width=\"100%\" sx={{ alignItems: 'center', justifyContent: 'center' }}>\n <CircularProgress />\n </Stack>\n );\n }\n\n return (\n <Stack {...props}>\n <TextField\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search metric name...\"\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <Magnify />\n </InputAdornment>\n ),\n },\n }}\n />\n <MetricList\n metricNames={data?.data ?? []}\n filteredResults={filteredResults}\n datasource={datasource}\n filters={filters}\n isMetadataEnabled={isMetadataEnabled}\n onExplore={onExplore}\n />\n </Stack>\n );\n}\n\nexport interface PrometheusMetricsFinderProps extends Omit<StackProps, 'onChange'> {\n value: {\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n exploredMetric?: string;\n };\n onChange: ({\n datasource,\n filters,\n exploredMetric,\n }: {\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n exploredMetric?: string;\n }) => void;\n onExplore?: (metricName: string) => void;\n}\n\nexport function PrometheusMetricsFinder({\n value: { datasource = DEFAULT_PROM, filters = [], exploredMetric },\n onChange,\n onExplore,\n ...props\n}: PrometheusMetricsFinderProps): ReactElement {\n const settingsStored = localStorage.getItem(PERSES_METRICS_FINDER_SETTINGS);\n const [settings, setSettings] = useState<Settings>(\n settingsStored ? JSON.parse(settingsStored) : { isMetadataEnabled: true }\n );\n\n function handleSettingsUpdate(value: Settings): void {\n setSettings(value);\n localStorage.setItem(PERSES_METRICS_FINDER_SETTINGS, JSON.stringify(value));\n }\n\n const isMobileSize = useMediaQuery(useTheme().breakpoints.down('md'));\n\n // Remove duplicated filters and filters without label or labelValues\n const filteredFilters: LabelFilter[] = useMemo(() => {\n return filters.filter(({ label, labelValues }) => label && labelValues?.[0]);\n }, [filters]);\n\n const searchParams = useExplorerQueryParams({\n data: { tab: 'finder', datasource, filters, exploredMetric: undefined },\n });\n\n function setDatasource(value: DatasourceSelector): void {\n onChange({ datasource: value, filters, exploredMetric });\n }\n\n function setFilters(value: LabelFilter[]): void {\n onChange({ datasource, filters: value, exploredMetric });\n }\n\n return (\n <Stack {...props} gap={1}>\n <Stack direction={isMobileSize ? 'column' : 'row'} gap={2} justifyContent=\"space-between\">\n <FinderFilters\n datasource={datasource ?? DEFAULT_PROM}\n filters={filters ?? []}\n filteredFilters={filteredFilters}\n onDatasourceChange={setDatasource}\n onFiltersChange={setFilters}\n />\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n {exploredMetric && (\n <Button\n variant=\"contained\"\n aria-label=\"back to metric explorer\"\n startIcon={<ArrowLeftIcon />}\n component={RouterLink}\n to={`?${searchParams}`}\n >\n Back\n </Button>\n )}\n <Stack\n direction=\"row\"\n sx={{ width: isMobileSize ? '100%' : 'unset' }}\n justifyContent={isMobileSize ? 'end' : 'unset'}\n alignItems=\"center\"\n >\n <SettingsMenu value={settings} onChange={handleSettingsUpdate} />\n </Stack>\n </Stack>\n </Stack>\n {exploredMetric ? (\n <MetricOverview\n metricName={exploredMetric}\n datasource={datasource ?? DEFAULT_PROM}\n filters={filteredFilters}\n isMetadataEnabled={settings.isMetadataEnabled}\n isPanelEnabled={settings.isPanelEnabled}\n onFiltersChange={setFilters}\n onExplore={onExplore}\n />\n ) : (\n <MetricNameExplorer\n datasource={datasource ?? DEFAULT_PROM}\n filters={filteredFilters}\n isMetadataEnabled={settings.isMetadataEnabled}\n onExplore={onExplore}\n />\n )}\n </Stack>\n );\n}\n"],"names":["Button","Checkbox","CircularProgress","FormControlLabel","IconButton","InputAdornment","Menu","MenuItem","Stack","TextField","useMediaQuery","useTheme","Fuzzy","useExplorerQueryParams","ArrowLeftIcon","CogIcon","Magnify","useMemo","useState","Link","RouterLink","DEFAULT_PROM","MetricList","FinderFilters","MetricOverview","useLabelValues","PERSES_METRICS_FINDER_SETTINGS","SettingsMenu","value","onChange","anchorEl","setAnchorEl","open","Boolean","handleClick","event","currentTarget","handleClose","aria-label","size","onClick","id","onClose","e","preventDefault","control","label","checked","isMetadataEnabled","isPanelEnabled","MetricNameExplorer","datasource","filters","onExplore","props","data","isLoading","error","search","setSearch","fuzzy","includeMatches","excludedChars","filteredResults","filter","sort","a","b","score","undefined","width","message","sx","alignItems","justifyContent","target","placeholder","slotProps","input","startAdornment","position","metricNames","PrometheusMetricsFinder","exploredMetric","settingsStored","localStorage","getItem","settings","setSettings","JSON","parse","handleSettingsUpdate","setItem","stringify","isMobileSize","breakpoints","down","filteredFilters","labelValues","searchParams","tab","setDatasource","setFilters","gap","direction","onDatasourceChange","onFiltersChange","variant","startIcon","component","to","metricName"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/explore/PrometheusMetricsFinder/PrometheusMetricsFinder.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n Button,\n Checkbox,\n CircularProgress,\n FormControlLabel,\n IconButton,\n InputAdornment,\n Menu,\n MenuItem,\n Stack,\n StackProps,\n TextField,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\nimport { Fuzzy, FuzzyMatchingInterval } from '@nexucis/fuzzy';\nimport { DatasourceSelector } from '@perses-dev/core';\nimport { useExplorerQueryParams } from '@perses-dev/explore';\nimport ArrowLeftIcon from 'mdi-material-ui/ArrowLeft';\nimport CogIcon from 'mdi-material-ui/Cog';\nimport Magnify from 'mdi-material-ui/Magnify';\nimport { MouseEvent, ReactElement, useMemo, useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { DEFAULT_PROM } from '../../model';\nimport { MetricList } from './display/list/MetricList';\nimport { FinderFilters } from './filter/FinderFilters';\nimport { MetricOverview } from './overview/MetricOverview';\nimport { LabelFilter, Settings } from './types';\nimport { useLabelValues } from './utils';\n\nconst PERSES_METRICS_FINDER_SETTINGS = 'PERSES_METRICS_FINDER_SETTINGS';\n\nexport interface SettingsMenuProps {\n value: Settings;\n onChange: (value: Settings) => void;\n}\n\nexport function SettingsMenu({ value, onChange }: SettingsMenuProps): ReactElement {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: MouseEvent<HTMLButtonElement>): void => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (): void => {\n setAnchorEl(null);\n };\n\n return (\n <>\n <IconButton aria-label=\"settings\" size=\"large\" onClick={handleClick}>\n <CogIcon />\n </IconButton>\n <Menu id=\"finder-settings-menu\" anchorEl={anchorEl} open={open} onClose={handleClose}>\n <MenuItem onClick={(e) => e.preventDefault()}>\n <FormControlLabel\n control={<Checkbox />}\n label=\"Enable Metadata\"\n checked={value.isMetadataEnabled}\n onClick={() => onChange({ ...value, isMetadataEnabled: !value.isMetadataEnabled })}\n />\n </MenuItem>\n <MenuItem onClick={(e) => e.preventDefault()}>\n <FormControlLabel\n control={<Checkbox />}\n label=\"Enable Time Series Chart\"\n checked={value.isPanelEnabled}\n onClick={() => onChange({ ...value, isPanelEnabled: !value.isPanelEnabled })}\n />\n </MenuItem>\n </Menu>\n </>\n );\n}\n\nexport interface MetricNameExplorerProps extends StackProps {\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n isMetadataEnabled?: boolean;\n onExplore?: (metricName: string) => void;\n}\n\nexport function MetricNameExplorer({\n datasource,\n filters,\n isMetadataEnabled,\n onExplore,\n ...props\n}: MetricNameExplorerProps): ReactElement {\n const { data, isLoading, error } = useLabelValues('__name__', filters, datasource);\n const [search, setSearch] = useState('');\n const fuzzy = useMemo(() => new Fuzzy({ includeMatches: true, excludedChars: [' '] }), []);\n\n const filteredResults: Array<{ original: string; intervals?: FuzzyMatchingInterval[] }> | undefined = useMemo(() => {\n if (search && data?.data) {\n return fuzzy.filter(search, data.data).sort((a, b) => b.score - a.score);\n }\n return undefined;\n }, [data, fuzzy, search]);\n\n if (error) {\n return <Stack width=\"100%\">Error: {error.message}</Stack>;\n }\n\n if (isLoading) {\n return (\n <Stack width=\"100%\" sx={{ alignItems: 'center', justifyContent: 'center' }}>\n <CircularProgress />\n </Stack>\n );\n }\n\n return (\n <Stack {...props}>\n <TextField\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search metric name...\"\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <Magnify />\n </InputAdornment>\n ),\n },\n }}\n />\n <MetricList\n metricNames={data?.data ?? []}\n filteredResults={filteredResults}\n datasource={datasource}\n filters={filters}\n isMetadataEnabled={isMetadataEnabled}\n onExplore={onExplore}\n />\n </Stack>\n );\n}\n\nexport interface PrometheusMetricsFinderProps extends Omit<StackProps, 'onChange'> {\n value: {\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n exploredMetric?: string;\n };\n onChange: ({\n datasource,\n filters,\n exploredMetric,\n }: {\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n exploredMetric?: string;\n }) => void;\n onExplore?: (metricName: string) => void;\n}\n\nexport function PrometheusMetricsFinder({\n value: { datasource = DEFAULT_PROM, filters = [], exploredMetric },\n onChange,\n onExplore,\n ...props\n}: PrometheusMetricsFinderProps): ReactElement {\n const settingsStored = localStorage.getItem(PERSES_METRICS_FINDER_SETTINGS);\n const [settings, setSettings] = useState<Settings>(\n settingsStored ? JSON.parse(settingsStored) : { isMetadataEnabled: true }\n );\n\n function handleSettingsUpdate(value: Settings): void {\n setSettings(value);\n localStorage.setItem(PERSES_METRICS_FINDER_SETTINGS, JSON.stringify(value));\n }\n\n const isMobileSize = useMediaQuery(useTheme().breakpoints.down('md'));\n\n // Remove duplicated filters and filters without label or labelValues\n const filteredFilters: LabelFilter[] = useMemo(() => {\n return filters.filter(({ label, labelValues }) => label && labelValues?.[0]);\n }, [filters]);\n\n const searchParams = useExplorerQueryParams({\n data: { tab: 'finder', datasource, filters, exploredMetric: undefined },\n });\n\n function setDatasource(value: DatasourceSelector): void {\n onChange({ datasource: value, filters, exploredMetric });\n }\n\n function setFilters(value: LabelFilter[]): void {\n onChange({ datasource, filters: value, exploredMetric });\n }\n\n return (\n <Stack {...props} gap={1}>\n <Stack direction={isMobileSize ? 'column' : 'row'} gap={2} justifyContent=\"space-between\">\n <FinderFilters\n datasource={datasource ?? DEFAULT_PROM}\n filters={filters ?? []}\n filteredFilters={filteredFilters}\n onDatasourceChange={setDatasource}\n onFiltersChange={setFilters}\n />\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n {exploredMetric && (\n <Button\n variant=\"contained\"\n aria-label=\"back to metric explorer\"\n startIcon={<ArrowLeftIcon />}\n component={RouterLink}\n to={`?${searchParams}`}\n >\n Back\n </Button>\n )}\n <Stack\n direction=\"row\"\n sx={{ width: isMobileSize ? '100%' : 'unset' }}\n justifyContent={isMobileSize ? 'end' : 'unset'}\n alignItems=\"center\"\n >\n <SettingsMenu value={settings} onChange={handleSettingsUpdate} />\n </Stack>\n </Stack>\n </Stack>\n {exploredMetric ? (\n <MetricOverview\n metricName={exploredMetric}\n datasource={datasource ?? DEFAULT_PROM}\n filters={filteredFilters}\n isMetadataEnabled={settings.isMetadataEnabled}\n isPanelEnabled={settings.isPanelEnabled}\n onFiltersChange={setFilters}\n onExplore={onExplore}\n />\n ) : (\n <MetricNameExplorer\n datasource={datasource ?? DEFAULT_PROM}\n filters={filteredFilters}\n isMetadataEnabled={settings.isMetadataEnabled}\n onExplore={onExplore}\n />\n )}\n </Stack>\n );\n}\n"],"names":["Button","Checkbox","CircularProgress","FormControlLabel","IconButton","InputAdornment","Menu","MenuItem","Stack","TextField","useMediaQuery","useTheme","Fuzzy","useExplorerQueryParams","ArrowLeftIcon","CogIcon","Magnify","useMemo","useState","Link","RouterLink","DEFAULT_PROM","MetricList","FinderFilters","MetricOverview","useLabelValues","PERSES_METRICS_FINDER_SETTINGS","SettingsMenu","value","onChange","anchorEl","setAnchorEl","open","Boolean","handleClick","event","currentTarget","handleClose","aria-label","size","onClick","id","onClose","e","preventDefault","control","label","checked","isMetadataEnabled","isPanelEnabled","MetricNameExplorer","datasource","filters","onExplore","props","data","isLoading","error","search","setSearch","fuzzy","includeMatches","excludedChars","filteredResults","filter","sort","a","b","score","undefined","width","message","sx","alignItems","justifyContent","target","placeholder","slotProps","input","startAdornment","position","metricNames","PrometheusMetricsFinder","exploredMetric","settingsStored","localStorage","getItem","settings","setSettings","JSON","parse","handleSettingsUpdate","setItem","stringify","isMobileSize","breakpoints","down","filteredFilters","labelValues","searchParams","tab","setDatasource","setFilters","gap","direction","onDatasourceChange","onFiltersChange","variant","startIcon","component","to","metricName"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- // Copyright 2024 The Perses Authors
2
+ // Copyright The Perses Authors
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
5
5
  // You may obtain a copy of the License at