@perses-dev/prometheus-plugin 0.54.0 → 0.56.0

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 (96) hide show
  1. package/__mf/css/async/1339.d3010b86.css +1 -0
  2. package/__mf/css/async/1576.d3010b86.css +1 -0
  3. package/__mf/css/async/4576.d3010b86.css +1 -0
  4. package/__mf/js/{Prometheus.7a79b403.js → Prometheus.4d0d5812.js} +3 -3
  5. package/__mf/js/async/1339.194207db.js +1 -0
  6. package/__mf/js/async/212.5fcca998.js +1 -0
  7. package/__mf/js/async/3749.3ecd9372.js +1 -0
  8. package/__mf/js/async/{4075.88e3f633.js → 4075.dab1b7b8.js} +1 -1
  9. package/__mf/js/async/{4238.422a1b1c.js → 4238.c48b1950.js} +1 -1
  10. package/__mf/js/async/4421.1fcb466e.js +1 -0
  11. package/__mf/js/async/4557.f3eb9456.js +2 -0
  12. package/__mf/js/async/4576.f42daf99.js +1 -0
  13. package/__mf/js/async/4676.b7a22f90.js +22 -0
  14. package/__mf/js/async/58.1c9a8daa.js +2 -0
  15. package/__mf/js/async/6341.20eccf91.js +7 -0
  16. package/__mf/js/async/684.4495f632.js +1 -0
  17. package/__mf/js/async/8164.bb3d3363.js +1 -0
  18. package/__mf/js/async/8706.89677575.js +1 -0
  19. package/__mf/js/async/{2675.27451820.js → 9010.bdb2ef97.js} +1 -1
  20. package/__mf/js/async/__federation_expose_PrometheusDatasource.45ee94e2.js +1 -0
  21. package/__mf/js/async/__federation_expose_PrometheusExplorer.b8e555e1.js +1 -0
  22. package/__mf/js/async/__federation_expose_PrometheusLabelNamesVariable.00dfb1dd.js +1 -0
  23. package/__mf/js/async/__federation_expose_PrometheusLabelValuesVariable.956ef2d0.js +1 -0
  24. package/__mf/js/async/__federation_expose_PrometheusPromQLVariable.59f2d170.js +1 -0
  25. package/__mf/js/async/__federation_expose_PrometheusTimeSeriesQuery.d7143352.js +1 -0
  26. package/__mf/js/{main.d2018d3d.js → main.afc2ee60.js} +3 -3
  27. package/lib/cjs/explore/PrometheusExplorer.js +7 -2
  28. package/lib/cjs/model/prometheus-client.js +4 -2
  29. package/lib/cjs/plugins/PrometheusLabelNamesVariable.js +8 -2
  30. package/lib/cjs/plugins/PrometheusLabelValuesVariable.js +10 -2
  31. package/lib/cjs/plugins/PrometheusPromQLVariable.js +10 -2
  32. package/lib/cjs/plugins/prometheus-datasource.js +21 -14
  33. package/lib/cjs/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.js +7 -43
  34. package/lib/cjs/plugins/prometheus-time-series-query/get-time-series-data.js +3 -3
  35. package/lib/cjs/plugins/prometheus-variables.js +20 -73
  36. package/lib/explore/PrometheusExplorer.d.ts.map +1 -1
  37. package/lib/explore/PrometheusExplorer.js +7 -2
  38. package/lib/explore/PrometheusExplorer.js.map +1 -1
  39. package/lib/model/prometheus-client.d.ts +8 -7
  40. package/lib/model/prometheus-client.d.ts.map +1 -1
  41. package/lib/model/prometheus-client.js +4 -2
  42. package/lib/model/prometheus-client.js.map +1 -1
  43. package/lib/model/prometheus-selectors.d.ts +2 -2
  44. package/lib/model/prometheus-selectors.d.ts.map +1 -1
  45. package/lib/model/prometheus-selectors.js.map +1 -1
  46. package/lib/plugins/PrometheusLabelNamesVariable.d.ts.map +1 -1
  47. package/lib/plugins/PrometheusLabelNamesVariable.js +10 -4
  48. package/lib/plugins/PrometheusLabelNamesVariable.js.map +1 -1
  49. package/lib/plugins/PrometheusLabelValuesVariable.d.ts.map +1 -1
  50. package/lib/plugins/PrometheusLabelValuesVariable.js +12 -4
  51. package/lib/plugins/PrometheusLabelValuesVariable.js.map +1 -1
  52. package/lib/plugins/PrometheusPromQLVariable.d.ts.map +1 -1
  53. package/lib/plugins/PrometheusPromQLVariable.js +12 -4
  54. package/lib/plugins/PrometheusPromQLVariable.js.map +1 -1
  55. package/lib/plugins/prometheus-datasource.d.ts.map +1 -1
  56. package/lib/plugins/prometheus-datasource.js +21 -14
  57. package/lib/plugins/prometheus-datasource.js.map +1 -1
  58. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.d.ts.map +1 -1
  59. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.js +7 -43
  60. package/lib/plugins/prometheus-time-series-query/PrometheusTimeSeriesQueryEditor.js.map +1 -1
  61. package/lib/plugins/prometheus-time-series-query/get-time-series-data.d.ts.map +1 -1
  62. package/lib/plugins/prometheus-time-series-query/get-time-series-data.js +3 -3
  63. package/lib/plugins/prometheus-time-series-query/get-time-series-data.js.map +1 -1
  64. package/lib/plugins/prometheus-variables.d.ts.map +1 -1
  65. package/lib/plugins/prometheus-variables.js +22 -81
  66. package/lib/plugins/prometheus-variables.js.map +1 -1
  67. package/lib/plugins/types.d.ts +2 -1
  68. package/lib/plugins/types.d.ts.map +1 -1
  69. package/lib/plugins/types.js.map +1 -1
  70. package/mf-manifest.json +103 -97
  71. package/mf-stats.json +106 -100
  72. package/package.json +6 -6
  73. package/__mf/css/async/1576.dacad691.css +0 -1
  74. package/__mf/css/async/2188.dacad691.css +0 -1
  75. package/__mf/css/async/2341.dacad691.css +0 -1
  76. package/__mf/js/async/212.69f85c2b.js +0 -1
  77. package/__mf/js/async/2188.d2c5eadd.js +0 -1
  78. package/__mf/js/async/2275.95fa6219.js +0 -7
  79. package/__mf/js/async/3391.eced295d.js +0 -73
  80. package/__mf/js/async/4323.fdf7d039.js +0 -1
  81. package/__mf/js/async/4368.38ebfc12.js +0 -2
  82. package/__mf/js/async/4421.b5492f46.js +0 -1
  83. package/__mf/js/async/6714.fd02e782.js +0 -2
  84. package/__mf/js/async/684.f7b5c16e.js +0 -1
  85. package/__mf/js/async/7239.2619666a.js +0 -1
  86. package/__mf/js/async/8706.70f829fc.js +0 -1
  87. package/__mf/js/async/__federation_expose_PrometheusDatasource.8b4b16ca.js +0 -1
  88. package/__mf/js/async/__federation_expose_PrometheusExplorer.8faab52f.js +0 -1
  89. package/__mf/js/async/__federation_expose_PrometheusLabelNamesVariable.baed70be.js +0 -1
  90. package/__mf/js/async/__federation_expose_PrometheusLabelValuesVariable.86fed903.js +0 -1
  91. package/__mf/js/async/__federation_expose_PrometheusPromQLVariable.8eb55b7f.js +0 -1
  92. package/__mf/js/async/__federation_expose_PrometheusTimeSeriesQuery.66df70ad.js +0 -1
  93. /package/__mf/js/async/{4368.38ebfc12.js.LICENSE.txt → 4557.f3eb9456.js.LICENSE.txt} +0 -0
  94. /package/__mf/js/async/{3391.eced295d.js.LICENSE.txt → 4676.b7a22f90.js.LICENSE.txt} +0 -0
  95. /package/__mf/js/async/{6714.fd02e782.js.LICENSE.txt → 58.1c9a8daa.js.LICENSE.txt} +0 -0
  96. /package/__mf/js/async/{2275.95fa6219.js.LICENSE.txt → 6341.20eccf91.js.LICENSE.txt} +0 -0
@@ -13,7 +13,8 @@ const _model = require("../model");
13
13
  const _prometheusvariables = require("./prometheus-variables");
14
14
  const PrometheusPromQLVariable = {
15
15
  getVariableOptions: async (spec, ctx)=>{
16
- const client = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? _model.DEFAULT_PROM);
16
+ const datasourceSelector = (0, _pluginsystem.datasourceSelectValueToSelector)(spec.datasource ?? _model.DEFAULT_PROM, ctx.variables, await ctx.datasourceStore.listDatasourceSelectItems(_model.PROM_DATASOURCE_KIND)) ?? _model.DEFAULT_PROM;
17
+ const client = await ctx.datasourceStore.getDatasourceClient(datasourceSelector);
17
18
  // TODO we may want to manage a range query as well.
18
19
  const { data: options } = await client.instantQuery({
19
20
  query: (0, _pluginsystem.replaceVariables)(spec.expr, ctx.variables)
@@ -30,8 +31,15 @@ const PrometheusPromQLVariable = {
30
31
  };
31
32
  },
32
33
  dependsOn: (spec)=>{
34
+ const exprVariables = (0, _pluginsystem.parseVariables)(spec.expr);
35
+ const labelVariables = (0, _pluginsystem.parseVariables)(spec.labelName);
36
+ const datasourceVariables = spec.datasource && (0, _pluginsystem.isVariableDatasource)(spec.datasource) ? (0, _pluginsystem.parseVariables)(spec.datasource) : [];
33
37
  return {
34
- variables: (0, _pluginsystem.parseVariables)(spec.expr).concat((0, _pluginsystem.parseVariables)(spec.labelName))
38
+ variables: [
39
+ ...exprVariables,
40
+ ...labelVariables,
41
+ ...datasourceVariables
42
+ ]
35
43
  };
36
44
  },
37
45
  OptionsEditorComponent: _prometheusvariables.PrometheusPromQLVariableEditor,
@@ -42,33 +42,40 @@ const _PrometheusDatasourceEditor = require("./PrometheusDatasourceEditor");
42
42
  datasourceUrl,
43
43
  headers: specHeaders
44
44
  }),
45
- instantQuery: (params, headers)=>(0, _model.instantQuery)(params, {
45
+ instantQuery: (params, headers, abortSignal)=>(0, _model.instantQuery)(params, {
46
46
  datasourceUrl,
47
- headers: headers ?? specHeaders
47
+ headers: headers ?? specHeaders,
48
+ abortSignal
48
49
  }),
49
- rangeQuery: (params, headers)=>(0, _model.rangeQuery)(params, {
50
+ rangeQuery: (params, headers, abortSignal)=>(0, _model.rangeQuery)(params, {
50
51
  datasourceUrl,
51
- headers: headers ?? specHeaders
52
+ headers: headers ?? specHeaders,
53
+ abortSignal
52
54
  }),
53
- labelNames: (params, headers)=>(0, _model.labelNames)(params, {
55
+ labelNames: (params, headers, abortSignal)=>(0, _model.labelNames)(params, {
54
56
  datasourceUrl,
55
- headers: headers ?? specHeaders
57
+ headers: headers ?? specHeaders,
58
+ abortSignal
56
59
  }),
57
- labelValues: (params, headers)=>(0, _model.labelValues)(params, {
60
+ labelValues: (params, headers, abortSignal)=>(0, _model.labelValues)(params, {
58
61
  datasourceUrl,
59
- headers: headers ?? specHeaders
62
+ headers: headers ?? specHeaders,
63
+ abortSignal
60
64
  }),
61
- metricMetadata: (params, headers)=>(0, _model.metricMetadata)(params, {
65
+ metricMetadata: (params, headers, abortSignal)=>(0, _model.metricMetadata)(params, {
62
66
  datasourceUrl,
63
- headers: headers ?? specHeaders
67
+ headers: headers ?? specHeaders,
68
+ abortSignal
64
69
  }),
65
- series: (params, headers)=>(0, _model.series)(params, {
70
+ series: (params, headers, abortSignal)=>(0, _model.series)(params, {
66
71
  datasourceUrl,
67
- headers: headers ?? specHeaders
72
+ headers: headers ?? specHeaders,
73
+ abortSignal
68
74
  }),
69
- parseQuery: (params, headers)=>(0, _model.parseQuery)(params, {
75
+ parseQuery: (params, headers, abortSignal)=>(0, _model.parseQuery)(params, {
70
76
  datasourceUrl,
71
- headers: headers ?? specHeaders
77
+ headers: headers ?? specHeaders,
78
+ abortSignal
72
79
  })
73
80
  };
74
81
  };
@@ -25,13 +25,12 @@ const _immer = require("immer");
25
25
  const _pluginsystem = require("@perses-dev/plugin-system");
26
26
  const _components = require("@perses-dev/components");
27
27
  const _material = require("@mui/material");
28
- const _react = require("react");
29
28
  const _model = require("../../model");
30
29
  const _types = require("../types");
31
30
  const _components1 = require("../../components");
32
31
  const _queryeditormodel = require("./query-editor-model");
33
32
  function PrometheusTimeSeriesQueryEditor(props) {
34
- const { onChange, value, value: { query, datasource }, queryHandlerSettings, isReadonly } = props;
33
+ const { onChange, value, value: { query, datasource }, isReadonly } = props;
35
34
  const datasourceSelectValue = datasource ?? _model.DEFAULT_PROM;
36
35
  const datasourceSelectLabelID = (0, _components.useId)('prom-datasource-label'); // for panels with multiple queries, this component is rendered multiple times on the same page
37
36
  const selectedDatasource = (0, _pluginsystem.useDatasourceSelectValueToSelector)(datasourceSelectValue, _model.PROM_DATASOURCE_KIND);
@@ -52,45 +51,10 @@ function PrometheusTimeSeriesQueryEditor(props) {
52
51
  const nextDatasource = (0, _model.isDefaultPromSelector)(next) ? undefined : next;
53
52
  draft.datasource = nextDatasource;
54
53
  }));
55
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
56
- ...value,
57
- datasource: next
58
- });
59
54
  return;
60
55
  }
61
56
  throw new Error('Got unexpected non-Prometheus datasource selector');
62
57
  };
63
- const handlePromQlEditorChanges = (0, _react.useCallback)((e)=>{
64
- handleQueryChange(e);
65
- if (queryHandlerSettings?.watchQueryChanges) {
66
- queryHandlerSettings?.watchQueryChanges(e);
67
- }
68
- }, [
69
- queryHandlerSettings,
70
- handleQueryChange
71
- ]);
72
- const handleLegendSpecChange = (0, _react.useCallback)((e)=>{
73
- handleFormatChange(e.target.value);
74
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
75
- ...value,
76
- seriesNameFormat: e.target.value
77
- });
78
- }, [
79
- queryHandlerSettings,
80
- handleFormatChange,
81
- value
82
- ]);
83
- const handleMinStepSpecChange = (0, _react.useCallback)((e)=>{
84
- handleMinStepChange(e.target.value ? e.target.value : undefined);
85
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
86
- ...value,
87
- minStep: e.target.value
88
- });
89
- }, [
90
- queryHandlerSettings,
91
- handleMinStepChange,
92
- value
93
- ]);
94
58
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
95
59
  spacing: 2,
96
60
  children: [
@@ -115,8 +79,8 @@ function PrometheusTimeSeriesQueryEditor(props) {
115
79
  },
116
80
  value: query,
117
81
  datasource: selectedDatasource,
118
- onChange: handlePromQlEditorChanges,
119
- onBlur: queryHandlerSettings?.runWithOnBlur ? handleQueryBlur : undefined,
82
+ onChange: handleQueryChange,
83
+ onBlur: handleQueryBlur,
120
84
  isReadOnly: isReadonly
121
85
  }),
122
86
  /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
@@ -129,8 +93,8 @@ function PrometheusTimeSeriesQueryEditor(props) {
129
93
  placeholder: "Example: '{{instance}}' will generate series names like 'webserver-123', 'webserver-456'...",
130
94
  helperText: "Text to be displayed in the legend and the tooltip. Use {{label_name}} to interpolate label values.",
131
95
  value: format ?? '',
132
- onChange: handleLegendSpecChange,
133
- onBlur: queryHandlerSettings?.runWithOnBlur ? handleFormatBlur : undefined,
96
+ onChange: (e)=>handleFormatChange(e.target.value),
97
+ onBlur: handleFormatBlur,
134
98
  slotProps: {
135
99
  inputLabel: {
136
100
  shrink: isReadonly ? true : undefined
@@ -145,8 +109,8 @@ function PrometheusTimeSeriesQueryEditor(props) {
145
109
  placeholder: minStepPlaceholder,
146
110
  helperText: "Lower bound for the step. If not provided, the scrape interval of the datasource is used.",
147
111
  value: minStep ?? '',
148
- onChange: handleMinStepSpecChange,
149
- onBlur: queryHandlerSettings?.runWithOnBlur ? handleMinStepBlur : undefined,
112
+ onChange: (e)=>handleMinStepChange(e.target.value ? e.target.value : undefined),
113
+ onBlur: handleMinStepBlur,
150
114
  sx: {
151
115
  width: '250px'
152
116
  },
@@ -27,7 +27,7 @@ const _model = require("../../model");
27
27
  const _utils = require("../../utils");
28
28
  const _types = require("../types");
29
29
  const _replaceprombuiltinvariables = require("./replace-prom-builtin-variables");
30
- const getTimeSeriesData = async (spec, context)=>{
30
+ const getTimeSeriesData = async (spec, context, abortSignal)=>{
31
31
  if (spec.query === undefined || spec.query === null || spec.query === '') {
32
32
  // Do not make a request to the backend, instead return an empty TimeSeriesData
33
33
  return {
@@ -79,7 +79,7 @@ const getTimeSeriesData = async (spec, context)=>{
79
79
  response = await client.instantQuery({
80
80
  query,
81
81
  time: end
82
- });
82
+ }, undefined, abortSignal);
83
83
  break;
84
84
  case 'range':
85
85
  default:
@@ -88,7 +88,7 @@ const getTimeSeriesData = async (spec, context)=>{
88
88
  start,
89
89
  end,
90
90
  step
91
- });
91
+ }, undefined, abortSignal);
92
92
  break;
93
93
  }
94
94
  // TODO: What about error responses from Prom that have a response body?
@@ -49,48 +49,29 @@ const _components = require("../components");
49
49
  const _model = require("../model");
50
50
  const _MatcherEditor = require("./MatcherEditor");
51
51
  function PrometheusLabelValuesVariableEditor(props) {
52
- const { onChange, value, value: { datasource }, queryHandlerSettings } = props;
52
+ const { onChange, value, value: { datasource } } = props;
53
53
  const selectedDatasource = datasource ?? _model.DEFAULT_PROM;
54
54
  const [labelValue, setLabelValue] = (0, _react.useState)(props.value.labelName);
55
55
  const [matchersValues, setMatchersValues] = (0, _react.useState)(props.value.matchers ?? []);
56
56
  const handleDatasourceChange = (0, _react.useCallback)((next)=>{
57
- if ((0, _model.isPrometheusDatasourceSelector)(next)) {
57
+ if ((0, _pluginsystem.isVariableDatasource)(next) || (0, _model.isPrometheusDatasourceSelector)(next)) {
58
58
  onChange((0, _immer.produce)(value, (draft)=>{
59
59
  // If they're using the default, just omit the datasource prop (i.e. set to undefined)
60
- draft.datasource = (0, _model.isDefaultPromSelector)(next) ? undefined : next;
60
+ draft.datasource = !(0, _pluginsystem.isVariableDatasource)(next) && (0, _model.isDefaultPromSelector)(next) ? undefined : next;
61
61
  }));
62
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
63
- ...value,
64
- datasource: next
65
- });
66
62
  return;
67
63
  }
68
64
  throw new Error('Got unexpected non-Prometheus datasource selector');
69
65
  }, [
70
66
  onChange,
71
- queryHandlerSettings,
72
67
  value
73
68
  ]);
74
69
  const handleLabelChange = (0, _react.useCallback)((e)=>{
75
70
  setLabelValue(e.target.value);
76
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
77
- ...value,
78
- labelName: e.target.value
79
- });
80
- }, [
81
- value,
82
- queryHandlerSettings
83
- ]);
71
+ }, []);
84
72
  const handleMatchEditorsChange = (0, _react.useCallback)((e)=>{
85
73
  setMatchersValues(e);
86
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
87
- ...value,
88
- matchers: e
89
- });
90
- }, [
91
- value,
92
- queryHandlerSettings
93
- ]);
74
+ }, []);
94
75
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
95
76
  spacing: 2,
96
77
  children: [
@@ -123,39 +104,25 @@ function PrometheusLabelValuesVariableEditor(props) {
123
104
  });
124
105
  }
125
106
  function PrometheusLabelNamesVariableEditor(props) {
126
- const { onChange, value, value: { datasource }, queryHandlerSettings } = props;
107
+ const { onChange, value, value: { datasource } } = props;
127
108
  const selectedDatasource = datasource ?? _model.DEFAULT_PROM;
128
109
  const [matchersValues, setMatchersValues] = (0, _react.useState)(props.value.matchers ?? []);
129
110
  const handleDatasourceChange = (0, _react.useCallback)((next)=>{
130
- if ((0, _model.isPrometheusDatasourceSelector)(next)) {
111
+ if ((0, _pluginsystem.isVariableDatasource)(next) || (0, _model.isPrometheusDatasourceSelector)(next)) {
131
112
  onChange((0, _immer.produce)(value, (draft)=>{
132
113
  // If they're using the default, just omit the datasource prop (i.e. set to undefined)
133
- draft.datasource = (0, _model.isDefaultPromSelector)(next) ? undefined : next;
114
+ draft.datasource = !(0, _pluginsystem.isVariableDatasource)(next) && (0, _model.isDefaultPromSelector)(next) ? undefined : next;
134
115
  }));
135
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings.setWatchOtherSpecs({
136
- ...value,
137
- datasource: next
138
- });
139
116
  return;
140
117
  }
141
118
  throw new Error('Got unexpected non-Prometheus datasource selector');
142
119
  }, [
143
120
  onChange,
144
- queryHandlerSettings,
145
121
  value
146
122
  ]);
147
123
  const handleMatchEditorChange = (0, _react.useCallback)((e)=>{
148
124
  setMatchersValues(e);
149
- if (queryHandlerSettings?.setWatchOtherSpecs) {
150
- queryHandlerSettings.setWatchOtherSpecs({
151
- ...value,
152
- matchers: e
153
- });
154
- }
155
- }, [
156
- value,
157
- queryHandlerSettings
158
- ]);
125
+ }, []);
159
126
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
160
127
  spacing: 2,
161
128
  children: [
@@ -179,28 +146,24 @@ function PrometheusLabelNamesVariableEditor(props) {
179
146
  });
180
147
  }
181
148
  function PrometheusPromQLVariableEditor(props) {
182
- const { onChange, value, value: { datasource }, queryHandlerSettings } = props;
183
- const selectedDatasource = datasource ?? _model.DEFAULT_PROM;
149
+ const { onChange, value, value: { datasource } } = props;
150
+ const datasourceSelectValue = datasource ?? _model.DEFAULT_PROM;
151
+ const selectedDatasource = (0, _pluginsystem.useDatasourceSelectValueToSelector)(datasourceSelectValue, _model.PROM_DATASOURCE_KIND);
184
152
  const { data: client } = (0, _pluginsystem.useDatasourceClient)(selectedDatasource);
185
153
  const promURL = client?.options.datasourceUrl;
186
- const [labelValue, setLableValue] = (0, _react.useState)(props.value.labelName);
154
+ const [labelValue, setLabelValue] = (0, _react.useState)(props.value.labelName);
187
155
  const handleDatasourceChange = (0, _react.useCallback)((next)=>{
188
- if ((0, _model.isPrometheusDatasourceSelector)(next)) {
156
+ if ((0, _pluginsystem.isVariableDatasource)(next) || (0, _model.isPrometheusDatasourceSelector)(next)) {
189
157
  onChange((0, _immer.produce)(value, (draft)=>{
190
158
  // If they're using the default, just omit the datasource prop (i.e. set to undefined)
191
- draft.datasource = (0, _model.isDefaultPromSelector)(next) ? undefined : next;
159
+ draft.datasource = !(0, _pluginsystem.isVariableDatasource)(next) && (0, _model.isDefaultPromSelector)(next) ? undefined : next;
192
160
  }));
193
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings?.setWatchOtherSpecs({
194
- ...value,
195
- datasource: next
196
- });
197
161
  return;
198
162
  }
199
163
  throw new Error('Got unexpected non-Prometheus datasource selector');
200
164
  }, [
201
165
  value,
202
- onChange,
203
- queryHandlerSettings
166
+ onChange
204
167
  ]);
205
168
  const handleOnBlurPromQlChange = (0, _react.useCallback)((e)=>{
206
169
  onChange({
@@ -211,25 +174,9 @@ function PrometheusPromQLVariableEditor(props) {
211
174
  onChange,
212
175
  value
213
176
  ]);
214
- const trackPromQlChanges = (0, _react.useCallback)((e)=>{
215
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings?.setWatchOtherSpecs({
216
- ...value,
217
- expr: e.target.textContent ?? ''
218
- });
219
- }, [
220
- queryHandlerSettings,
221
- value
222
- ]);
223
177
  const handleLabelNameChange = (0, _react.useCallback)((e)=>{
224
- setLableValue(e.target.value);
225
- if (queryHandlerSettings?.setWatchOtherSpecs) queryHandlerSettings?.setWatchOtherSpecs({
226
- ...value,
227
- labelName: e.target.value
228
- });
229
- }, [
230
- queryHandlerSettings,
231
- value
232
- ]);
178
+ setLabelValue(e.target.value);
179
+ }, []);
233
180
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
234
181
  spacing: 2,
235
182
  children: [
@@ -237,7 +184,7 @@ function PrometheusPromQLVariableEditor(props) {
237
184
  margin: "dense",
238
185
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_pluginsystem.DatasourceSelect, {
239
186
  datasourcePluginKind: _model.PROM_DATASOURCE_KIND,
240
- value: selectedDatasource,
187
+ value: datasourceSelectValue,
241
188
  onChange: handleDatasourceChange,
242
189
  labelId: "prom-datasource-label",
243
190
  label: "Prometheus Datasource",
@@ -252,7 +199,7 @@ function PrometheusPromQLVariableEditor(props) {
252
199
  },
253
200
  value: value.expr,
254
201
  datasource: selectedDatasource,
255
- onBlur: queryHandlerSettings?.runWithOnBlur ? handleOnBlurPromQlChange : trackPromQlChanges,
202
+ onBlur: handleOnBlurPromQlChange,
256
203
  readOnly: props.isReadonly,
257
204
  width: "100%"
258
205
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"PrometheusExplorer.d.ts","sourceRoot":"","sources":["../../../src/explore/PrometheusExplorer.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAyErC,wBAAgB,kBAAkB,IAAI,YAAY,CAkDjD"}
1
+ {"version":3,"file":"PrometheusExplorer.d.ts","sourceRoot":"","sources":["../../../src/explore/PrometheusExplorer.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AA0ErC,wBAAgB,kBAAkB,IAAI,YAAY,CAoDjD"}
@@ -19,6 +19,9 @@ import { Panel } from '@perses-dev/dashboards';
19
19
  import { DEFAULT_PROM } from '../model/prometheus-selectors';
20
20
  import { PrometheusMetricsFinder } from './PrometheusMetricsFinder';
21
21
  const PANEL_PREVIEW_HEIGHT = 700;
22
+ const FILTERED_QUERY_PLUGINS = [
23
+ 'PrometheusTimeSeriesQuery'
24
+ ];
22
25
  function TimeSeriesPanel({ queries }) {
23
26
  const { width, ref: boxRef } = useResizeObserver();
24
27
  const height = PANEL_PREVIEW_HEIGHT;
@@ -144,7 +147,8 @@ export function PrometheusExplorer() {
144
147
  tab,
145
148
  queries: state
146
149
  }),
147
- queries: queries
150
+ queries: queries,
151
+ filteredQueryPlugins: FILTERED_QUERY_PLUGINS
148
152
  }),
149
153
  /*#__PURE__*/ _jsx(MetricDataTable, {
150
154
  queries: queries
@@ -161,7 +165,8 @@ export function PrometheusExplorer() {
161
165
  tab,
162
166
  queries: state
163
167
  }),
164
- queries: queries
168
+ queries: queries,
169
+ filteredQueryPlugins: FILTERED_QUERY_PLUGINS
165
170
  }),
166
171
  /*#__PURE__*/ _jsx(TimeSeriesPanel, {
167
172
  queries: queries
@@ -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 } 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;\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 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) => setData({ tab, queries: state })}\n queries={queries}\n />\n <MetricDataTable queries={queries} />\n </Stack>\n )}\n {tab === 'graph' && (\n <Stack>\n <MultiQueryEditor\n queryTypes={['TimeSeriesQuery']}\n onChange={(state) => setData({ tab, queries: state })}\n queries={queries}\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","DEFAULT_PROM","PrometheusMetricsFinder","PANEL_PREVIEW_HEIGHT","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","gap","sx","value","onChange","_","state","variant","borderBottom","borderColor","label","queryTypes"],"mappings":"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"}
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 } 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 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) => setData({ tab, queries: state })}\n queries={queries}\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) => setData({ tab, queries: state })}\n queries={queries}\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","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","gap","sx","value","onChange","_","state","variant","borderBottom","borderColor","label","queryTypes","filteredQueryPlugins"],"mappings":"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"}
@@ -7,17 +7,18 @@ interface PrometheusClientOptions {
7
7
  }
8
8
  export interface PrometheusClient extends DatasourceClient {
9
9
  options: PrometheusClientOptions;
10
- instantQuery(params: InstantQueryRequestParameters, headers?: RequestHeaders): Promise<InstantQueryResponse>;
11
- rangeQuery(params: RangeQueryRequestParameters, headers?: RequestHeaders): Promise<RangeQueryResponse>;
12
- labelNames(params: LabelNamesRequestParameters, headers?: RequestHeaders): Promise<LabelNamesResponse>;
13
- labelValues(params: LabelValuesRequestParameters, headers?: RequestHeaders): Promise<LabelValuesResponse>;
14
- metricMetadata(params: MetricMetadataRequestParameters, headers?: RequestHeaders): Promise<MetricMetadataResponse>;
15
- series(params: SeriesRequestParameters, headers?: RequestHeaders): Promise<SeriesResponse>;
16
- parseQuery(params: ParseQueryRequestParameters, headers?: RequestHeaders): Promise<ParseQueryResponse>;
10
+ instantQuery(params: InstantQueryRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<InstantQueryResponse>;
11
+ rangeQuery(params: RangeQueryRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<RangeQueryResponse>;
12
+ labelNames(params: LabelNamesRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<LabelNamesResponse>;
13
+ labelValues(params: LabelValuesRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<LabelValuesResponse>;
14
+ metricMetadata(params: MetricMetadataRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<MetricMetadataResponse>;
15
+ series(params: SeriesRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<SeriesResponse>;
16
+ parseQuery(params: ParseQueryRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<ParseQueryResponse>;
17
17
  }
18
18
  export interface QueryOptions {
19
19
  datasourceUrl: string;
20
20
  headers?: RequestHeaders;
21
+ abortSignal?: AbortSignal;
21
22
  }
22
23
  /**
23
24
  * Calls the `/-/healthy` endpoint to check if the datasource is healthy.
@@ -1 +1 @@
1
- {"version":3,"file":"prometheus-client.d.ts","sourceRoot":"","sources":["../../../src/model/prometheus-client.ts"],"names":[],"mappings":"AAaA,OAAO,EAAoB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,+BAA+B,EAC/B,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EAEf,MAAM,aAAa,CAAC;AAErB,UAAU,uBAAuB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,OAAO,EAAE,uBAAuB,CAAC;IACjC,YAAY,CAAC,MAAM,EAAE,6BAA6B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7G,UAAU,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvG,UAAU,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvG,WAAW,CAAC,MAAM,EAAE,4BAA4B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1G,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACnH,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3F,UAAU,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACxG;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,SACnC,OAAO,CAAC,OAAO,CAAC,CAUlC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,6BAA6B,EACrC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,4BAA4B,EACpC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAa9B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,+BAA+B,EACvC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAG3G;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAG7B;AAuED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAI1F"}
1
+ {"version":3,"file":"prometheus-client.d.ts","sourceRoot":"","sources":["../../../src/model/prometheus-client.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,8 @@ import { fetch, fetchJson } from '@perses-dev/core';
18
18
  const url = `${queryOptions.datasourceUrl}/-/healthy`;
19
19
  try {
20
20
  const resp = await fetch(url, {
21
- headers: queryOptions.headers
21
+ headers: queryOptions.headers,
22
+ signal: queryOptions.abortSignal
22
23
  });
23
24
  return resp.status === 200;
24
25
  } catch {
@@ -88,7 +89,7 @@ function fetchWithGet(apiURI, params, queryOptions) {
88
89
  });
89
90
  }
90
91
  function fetchWithPost(apiURI, params, queryOptions) {
91
- const { datasourceUrl, headers } = queryOptions;
92
+ const { datasourceUrl, headers, abortSignal: signal } = queryOptions;
92
93
  const url = `${datasourceUrl}${apiURI}`;
93
94
  const init = {
94
95
  method: 'POST',
@@ -96,6 +97,7 @@ function fetchWithPost(apiURI, params, queryOptions) {
96
97
  'Content-Type': 'application/x-www-form-urlencoded',
97
98
  ...headers
98
99
  },
100
+ signal,
99
101
  body: createSearchParams(params)
100
102
  };
101
103
  return fetchResults(url, init);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/model/prometheus-client.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\nimport { fetch, fetchJson, RequestHeaders } from '@perses-dev/core';\nimport { DatasourceClient } from '@perses-dev/plugin-system';\nimport {\n InstantQueryRequestParameters,\n InstantQueryResponse,\n LabelNamesRequestParameters,\n LabelNamesResponse,\n LabelValuesRequestParameters,\n LabelValuesResponse,\n MetricMetadataRequestParameters,\n MetricMetadataResponse,\n ParseQueryRequestParameters,\n ParseQueryResponse,\n RangeQueryRequestParameters,\n RangeQueryResponse,\n SeriesRequestParameters,\n SeriesResponse,\n SuccessResponse,\n} from './api-types';\n\ninterface PrometheusClientOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\nexport interface PrometheusClient extends DatasourceClient {\n options: PrometheusClientOptions;\n instantQuery(params: InstantQueryRequestParameters, headers?: RequestHeaders): Promise<InstantQueryResponse>;\n rangeQuery(params: RangeQueryRequestParameters, headers?: RequestHeaders): Promise<RangeQueryResponse>;\n labelNames(params: LabelNamesRequestParameters, headers?: RequestHeaders): Promise<LabelNamesResponse>;\n labelValues(params: LabelValuesRequestParameters, headers?: RequestHeaders): Promise<LabelValuesResponse>;\n metricMetadata(params: MetricMetadataRequestParameters, headers?: RequestHeaders): Promise<MetricMetadataResponse>;\n series(params: SeriesRequestParameters, headers?: RequestHeaders): Promise<SeriesResponse>;\n parseQuery(params: ParseQueryRequestParameters, headers?: RequestHeaders): Promise<ParseQueryResponse>;\n}\n\nexport interface QueryOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\n/**\n * Calls the `/-/healthy` endpoint to check if the datasource is healthy.\n */\nexport function healthCheck(queryOptions: QueryOptions) {\n return async (): Promise<boolean> => {\n const url = `${queryOptions.datasourceUrl}/-/healthy`;\n\n try {\n const resp = await fetch(url, { headers: queryOptions.headers });\n return resp.status === 200;\n } catch {\n return false;\n }\n };\n}\n\n/**\n * Calls the `/api/v1/query` endpoint to get metrics data.\n */\nexport function instantQuery(\n params: InstantQueryRequestParameters,\n queryOptions: QueryOptions\n): Promise<InstantQueryResponse> {\n return fetchWithPost<InstantQueryRequestParameters, InstantQueryResponse>('/api/v1/query', params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/query_range` endpoint to get metrics data.\n */\nexport function rangeQuery(\n params: RangeQueryRequestParameters,\n queryOptions: QueryOptions\n): Promise<RangeQueryResponse> {\n return fetchWithPost<RangeQueryRequestParameters, RangeQueryResponse>('/api/v1/query_range', params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/labels` endpoint to get a list of label names.\n */\nexport function labelNames(\n params: LabelNamesRequestParameters,\n queryOptions: QueryOptions\n): Promise<LabelNamesResponse> {\n return fetchWithPost<LabelNamesRequestParameters, LabelNamesResponse>('/api/v1/labels', params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/label/{labelName}/values` endpoint to get a list of values for a label.\n */\nexport function labelValues(\n params: LabelValuesRequestParameters,\n queryOptions: QueryOptions\n): Promise<LabelValuesResponse> {\n const { labelName, ...searchParams } = params;\n\n // In case label name is empty, we'll receive a 404, so we can replace it by an empty list, which is less confusing.\n // Note that an empty list is the prometheus result if the label does not exist.\n if (labelName.length === 0) {\n return new Promise((resolve) => {\n resolve({ data: [] as string[] } as SuccessResponse<string[]>);\n });\n }\n\n const apiURI = `/api/v1/label/${encodeURIComponent(labelName)}/values`;\n return fetchWithGet<typeof searchParams, LabelValuesResponse>(apiURI, searchParams, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/label/{labelName}/values` endpoint to get a list of values for a label.\n */\nexport function metricMetadata(\n params: MetricMetadataRequestParameters,\n queryOptions: QueryOptions\n): Promise<MetricMetadataResponse> {\n const apiURI = `/api/v1/metadata`;\n return fetchWithGet<MetricMetadataRequestParameters, MetricMetadataResponse>(apiURI, params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/series` endpoint to finding series by label matchers.\n */\nexport function series(params: SeriesRequestParameters, queryOptions: QueryOptions): Promise<SeriesResponse> {\n const apiURI = `/api/v1/series`;\n return fetchWithPost<SeriesRequestParameters, SeriesResponse>(apiURI, params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/parse_query` to parse the given promQL expresion into an abstract syntax tree (AST).\n */\nexport function parseQuery(\n params: ParseQueryRequestParameters,\n queryOptions: QueryOptions\n): Promise<ParseQueryResponse> {\n const apiURI = `/api/v1/parse_query`;\n return fetchWithPost<ParseQueryRequestParameters, ParseQueryResponse>(apiURI, params, queryOptions);\n}\n\nfunction fetchWithGet<T extends RequestParams<T>, TResponse>(\n apiURI: string,\n params: T,\n queryOptions: QueryOptions\n): Promise<TResponse> {\n const { datasourceUrl, headers } = queryOptions;\n\n let url = `${datasourceUrl}${apiURI}`;\n const urlParams = createSearchParams(params).toString();\n if (urlParams !== '') {\n url += `?${urlParams}`;\n }\n return fetchJson<TResponse>(url, { method: 'GET', headers });\n}\n\nfunction fetchWithPost<T extends RequestParams<T>, TResponse>(\n apiURI: string,\n params: T,\n queryOptions: QueryOptions\n): Promise<TResponse> {\n const { datasourceUrl, headers } = queryOptions;\n\n const url = `${datasourceUrl}${apiURI}`;\n const init = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...headers,\n },\n body: createSearchParams(params),\n };\n return fetchResults<TResponse>(url, init);\n}\n\n// Request parameter values we know how to serialize\ntype ParamValue = string | string[] | number | undefined;\n\n// Used to constrain the types that can be passed to createSearchParams to\n// just the ones we know how to serialize\ntype RequestParams<T> = {\n [K in keyof T]: ParamValue;\n};\n\n/**\n * Creates URLSearchParams from a request params object.\n */\nfunction createSearchParams<T extends RequestParams<T>>(params: T): URLSearchParams {\n const searchParams = new URLSearchParams();\n for (const key in params) {\n const value: ParamValue = params[key];\n if (value === undefined) continue;\n\n if (typeof value === 'string') {\n searchParams.append(key, value);\n continue;\n }\n\n if (typeof value === 'number') {\n searchParams.append(key, value.toString());\n continue;\n }\n\n for (const val of value) {\n searchParams.append(key, val);\n }\n }\n return searchParams;\n}\n\n/**\n * Fetch JSON and parse warnings for query inspector\n */\nexport async function fetchResults<T>(...args: Parameters<typeof global.fetch>): Promise<T> {\n const response = await fetch(...args);\n const json: T = await response.json();\n return { ...json, rawResponse: response };\n}\n"],"names":["fetch","fetchJson","healthCheck","queryOptions","url","datasourceUrl","resp","headers","status","instantQuery","params","fetchWithPost","rangeQuery","labelNames","labelValues","labelName","searchParams","length","Promise","resolve","data","apiURI","encodeURIComponent","fetchWithGet","metricMetadata","series","parseQuery","urlParams","createSearchParams","toString","method","init","body","fetchResults","URLSearchParams","key","value","undefined","append","val","args","response","json","rawResponse"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/model/prometheus-client.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\nimport { fetch, fetchJson, RequestHeaders } from '@perses-dev/core';\nimport { DatasourceClient } from '@perses-dev/plugin-system';\nimport {\n InstantQueryRequestParameters,\n InstantQueryResponse,\n LabelNamesRequestParameters,\n LabelNamesResponse,\n LabelValuesRequestParameters,\n LabelValuesResponse,\n MetricMetadataRequestParameters,\n MetricMetadataResponse,\n ParseQueryRequestParameters,\n ParseQueryResponse,\n RangeQueryRequestParameters,\n RangeQueryResponse,\n SeriesRequestParameters,\n SeriesResponse,\n SuccessResponse,\n} from './api-types';\n\ninterface PrometheusClientOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\nexport interface PrometheusClient extends DatasourceClient {\n options: PrometheusClientOptions;\n instantQuery(\n params: InstantQueryRequestParameters,\n headers?: RequestHeaders,\n signal?: AbortSignal\n ): Promise<InstantQueryResponse>;\n rangeQuery(\n params: RangeQueryRequestParameters,\n headers?: RequestHeaders,\n signal?: AbortSignal\n ): Promise<RangeQueryResponse>;\n labelNames(\n params: LabelNamesRequestParameters,\n headers?: RequestHeaders,\n signal?: AbortSignal\n ): Promise<LabelNamesResponse>;\n labelValues(\n params: LabelValuesRequestParameters,\n headers?: RequestHeaders,\n signal?: AbortSignal\n ): Promise<LabelValuesResponse>;\n metricMetadata(\n params: MetricMetadataRequestParameters,\n headers?: RequestHeaders,\n signal?: AbortSignal\n ): Promise<MetricMetadataResponse>;\n series(params: SeriesRequestParameters, headers?: RequestHeaders, signal?: AbortSignal): Promise<SeriesResponse>;\n parseQuery(\n params: ParseQueryRequestParameters,\n headers?: RequestHeaders,\n signal?: AbortSignal\n ): Promise<ParseQueryResponse>;\n}\n\nexport interface QueryOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n abortSignal?: AbortSignal;\n}\n\n/**\n * Calls the `/-/healthy` endpoint to check if the datasource is healthy.\n */\nexport function healthCheck(queryOptions: QueryOptions) {\n return async (): Promise<boolean> => {\n const url = `${queryOptions.datasourceUrl}/-/healthy`;\n\n try {\n const resp = await fetch(url, { headers: queryOptions.headers, signal: queryOptions.abortSignal });\n return resp.status === 200;\n } catch {\n return false;\n }\n };\n}\n\n/**\n * Calls the `/api/v1/query` endpoint to get metrics data.\n */\nexport function instantQuery(\n params: InstantQueryRequestParameters,\n queryOptions: QueryOptions\n): Promise<InstantQueryResponse> {\n return fetchWithPost<InstantQueryRequestParameters, InstantQueryResponse>('/api/v1/query', params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/query_range` endpoint to get metrics data.\n */\nexport function rangeQuery(\n params: RangeQueryRequestParameters,\n queryOptions: QueryOptions\n): Promise<RangeQueryResponse> {\n return fetchWithPost<RangeQueryRequestParameters, RangeQueryResponse>('/api/v1/query_range', params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/labels` endpoint to get a list of label names.\n */\nexport function labelNames(\n params: LabelNamesRequestParameters,\n queryOptions: QueryOptions\n): Promise<LabelNamesResponse> {\n return fetchWithPost<LabelNamesRequestParameters, LabelNamesResponse>('/api/v1/labels', params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/label/{labelName}/values` endpoint to get a list of values for a label.\n */\nexport function labelValues(\n params: LabelValuesRequestParameters,\n queryOptions: QueryOptions\n): Promise<LabelValuesResponse> {\n const { labelName, ...searchParams } = params;\n\n // In case label name is empty, we'll receive a 404, so we can replace it by an empty list, which is less confusing.\n // Note that an empty list is the prometheus result if the label does not exist.\n if (labelName.length === 0) {\n return new Promise((resolve) => {\n resolve({ data: [] as string[] } as SuccessResponse<string[]>);\n });\n }\n\n const apiURI = `/api/v1/label/${encodeURIComponent(labelName)}/values`;\n return fetchWithGet<typeof searchParams, LabelValuesResponse>(apiURI, searchParams, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/label/{labelName}/values` endpoint to get a list of values for a label.\n */\nexport function metricMetadata(\n params: MetricMetadataRequestParameters,\n queryOptions: QueryOptions\n): Promise<MetricMetadataResponse> {\n const apiURI = `/api/v1/metadata`;\n return fetchWithGet<MetricMetadataRequestParameters, MetricMetadataResponse>(apiURI, params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/series` endpoint to finding series by label matchers.\n */\nexport function series(params: SeriesRequestParameters, queryOptions: QueryOptions): Promise<SeriesResponse> {\n const apiURI = `/api/v1/series`;\n return fetchWithPost<SeriesRequestParameters, SeriesResponse>(apiURI, params, queryOptions);\n}\n\n/**\n * Calls the `/api/v1/parse_query` to parse the given promQL expresion into an abstract syntax tree (AST).\n */\nexport function parseQuery(\n params: ParseQueryRequestParameters,\n queryOptions: QueryOptions\n): Promise<ParseQueryResponse> {\n const apiURI = `/api/v1/parse_query`;\n return fetchWithPost<ParseQueryRequestParameters, ParseQueryResponse>(apiURI, params, queryOptions);\n}\n\nfunction fetchWithGet<T extends RequestParams<T>, TResponse>(\n apiURI: string,\n params: T,\n queryOptions: QueryOptions\n): Promise<TResponse> {\n const { datasourceUrl, headers } = queryOptions;\n let url = `${datasourceUrl}${apiURI}`;\n const urlParams = createSearchParams(params).toString();\n if (urlParams !== '') {\n url += `?${urlParams}`;\n }\n return fetchJson<TResponse>(url, { method: 'GET', headers });\n}\n\nfunction fetchWithPost<T extends RequestParams<T>, TResponse>(\n apiURI: string,\n params: T,\n queryOptions: QueryOptions\n): Promise<TResponse> {\n const { datasourceUrl, headers, abortSignal: signal } = queryOptions;\n const url = `${datasourceUrl}${apiURI}`;\n const init = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...headers,\n },\n signal,\n body: createSearchParams(params),\n };\n return fetchResults<TResponse>(url, init);\n}\n\n// Request parameter values we know how to serialize\ntype ParamValue = string | string[] | number | undefined;\n\n// Used to constrain the types that can be passed to createSearchParams to\n// just the ones we know how to serialize\ntype RequestParams<T> = {\n [K in keyof T]: ParamValue;\n};\n\n/**\n * Creates URLSearchParams from a request params object.\n */\nfunction createSearchParams<T extends RequestParams<T>>(params: T): URLSearchParams {\n const searchParams = new URLSearchParams();\n for (const key in params) {\n const value: ParamValue = params[key];\n if (value === undefined) continue;\n\n if (typeof value === 'string') {\n searchParams.append(key, value);\n continue;\n }\n\n if (typeof value === 'number') {\n searchParams.append(key, value.toString());\n continue;\n }\n\n for (const val of value) {\n searchParams.append(key, val);\n }\n }\n return searchParams;\n}\n\n/**\n * Fetch JSON and parse warnings for query inspector\n */\nexport async function fetchResults<T>(...args: Parameters<typeof global.fetch>): Promise<T> {\n const response = await fetch(...args);\n const json: T = await response.json();\n return { ...json, rawResponse: response };\n}\n"],"names":["fetch","fetchJson","healthCheck","queryOptions","url","datasourceUrl","resp","headers","signal","abortSignal","status","instantQuery","params","fetchWithPost","rangeQuery","labelNames","labelValues","labelName","searchParams","length","Promise","resolve","data","apiURI","encodeURIComponent","fetchWithGet","metricMetadata","series","parseQuery","urlParams","createSearchParams","toString","method","init","body","fetchResults","URLSearchParams","key","value","undefined","append","val","args","response","json","rawResponse"],"mappings":"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"}
@@ -14,9 +14,9 @@ export declare const DEFAULT_PROM: PrometheusDatasourceSelector;
14
14
  /**
15
15
  * Returns true if the provided datasourceSelectValue is the default PrometheusDatasourceSelector.
16
16
  */
17
- export declare function isDefaultPromSelector(datasourceSelectValue: DatasourceSelectValue): boolean;
17
+ export declare function isDefaultPromSelector(datasourceSelectValue: DatasourceSelectValue<PrometheusDatasourceSelector>): boolean;
18
18
  /**
19
19
  * Type guard to make sure a datasourceSelectValue is a Prometheus one.
20
20
  */
21
- export declare function isPrometheusDatasourceSelector(datasourceSelectValue: DatasourceSelectValue): datasourceSelectValue is PrometheusDatasourceSelector;
21
+ export declare function isPrometheusDatasourceSelector(datasourceSelectValue: DatasourceSelectValue<DatasourceSelector>): datasourceSelectValue is PrometheusDatasourceSelector;
22
22
  //# sourceMappingURL=prometheus-selectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prometheus-selectors.d.ts","sourceRoot":"","sources":["../../../src/model/prometheus-selectors.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,2BAA2B,CAAC;AAExF,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,IAAI,EAAE,OAAO,oBAAoB,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,4BAA6D,CAAC;AAEzF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,OAAO,CAE3F;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,qBAAqB,EAAE,qBAAqB,GAC3C,qBAAqB,IAAI,4BAA4B,CAEvD"}
1
+ {"version":3,"file":"prometheus-selectors.d.ts","sourceRoot":"","sources":["../../../src/model/prometheus-selectors.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,2BAA2B,CAAC;AAExF,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,IAAI,EAAE,OAAO,oBAAoB,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,4BAA6D,CAAC;AAEzF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,qBAAqB,EAAE,qBAAqB,CAAC,4BAA4B,CAAC,GACzE,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,qBAAqB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,GAC/D,qBAAqB,IAAI,4BAA4B,CAEvD"}