@grafana/aws-sdk 0.0.39 → 0.0.41
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.
- package/dist/esm/ConnectionConfig.js +208 -0
- package/dist/esm/ConnectionConfig.js.map +1 -0
- package/dist/esm/SIGV4ConnectionConfig.js +72 -0
- package/dist/esm/SIGV4ConnectionConfig.js.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/providers.js +23 -0
- package/dist/esm/providers.js.map +1 -0
- package/dist/esm/regions.js +31 -0
- package/dist/esm/regions.js.map +1 -0
- package/dist/esm/sql/ConfigEditor/ConfigSelect.js +75 -0
- package/dist/esm/sql/ConfigEditor/ConfigSelect.js.map +1 -0
- package/dist/esm/sql/ConfigEditor/InlineInput.js +30 -0
- package/dist/esm/sql/ConfigEditor/InlineInput.js.map +1 -0
- package/dist/esm/sql/QueryEditor/FillValueSelect.js +82 -0
- package/dist/esm/sql/QueryEditor/FillValueSelect.js.map +1 -0
- package/dist/esm/sql/QueryEditor/FormatSelect.js +45 -0
- package/dist/esm/sql/QueryEditor/FormatSelect.js.map +1 -0
- package/dist/esm/sql/QueryEditor/QueryCodeEditor.js +53 -0
- package/dist/esm/sql/QueryEditor/QueryCodeEditor.js.map +1 -0
- package/dist/esm/sql/ResourceSelector.js +116 -0
- package/dist/esm/sql/ResourceSelector.js.map +1 -0
- package/dist/esm/sql/types.js +4 -0
- package/dist/esm/sql/types.js.map +1 -0
- package/dist/esm/sql/utils/utils.js +62 -0
- package/dist/esm/sql/utils/utils.js.map +1 -0
- package/dist/esm/types.js +11 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/index.d.ts +167 -10
- package/dist/index.js +780 -0
- package/dist/index.js.map +1 -0
- package/package.json +19 -29
- package/dist/ConnectionConfig.d.ts +0 -12
- package/dist/ConnectionConfig.test.d.ts +0 -1
- package/dist/SIGV4ConnectionConfig.d.ts +0 -3
- package/dist/SIGV4ConnectionConfig.test.d.ts +0 -1
- package/dist/index.development.js +0 -409
- package/dist/index.development.js.map +0 -1
- package/dist/index.production.js +0 -17
- package/dist/index.production.js.map +0 -1
- package/dist/providers.d.ts +0 -3
- package/dist/regions.d.ts +0 -1
- package/dist/sql/ConfigEditor/ConfigSelect.d.ts +0 -36
- package/dist/sql/ConfigEditor/ConfigSelect.test.d.ts +0 -1
- package/dist/sql/ConfigEditor/InlineInput.d.ts +0 -14
- package/dist/sql/ConfigEditor/InlineInput.test.d.ts +0 -1
- package/dist/sql/ConfigEditor/__mocks__/datasource.d.ts +0 -3
- package/dist/sql/ConfigEditor/index.d.ts +0 -2
- package/dist/sql/QueryEditor/FillValueSelect.d.ts +0 -13
- package/dist/sql/QueryEditor/FillValueSelect.test.d.ts +0 -1
- package/dist/sql/QueryEditor/FormatSelect.d.ts +0 -8
- package/dist/sql/QueryEditor/FormatSelect.test.d.ts +0 -1
- package/dist/sql/QueryEditor/QueryCodeEditor.d.ts +0 -20
- package/dist/sql/QueryEditor/QueryCodeEditor.test.d.ts +0 -1
- package/dist/sql/QueryEditor/__mocks__/query.d.ts +0 -6
- package/dist/sql/QueryEditor/index.d.ts +0 -3
- package/dist/sql/ResourceSelector.d.ts +0 -18
- package/dist/sql/ResourceSelector.test.d.ts +0 -1
- package/dist/sql/types.d.ts +0 -11
- package/dist/sql/utils/index.d.ts +0 -1
- package/dist/sql/utils/utils.d.ts +0 -9
- package/dist/sql/utils/utils.test.d.ts +0 -1
- package/dist/tests/setupTests.d.ts +0 -1
- package/dist/types.d.ts +0 -25
- package/index.js +0 -7
package/dist/index.js
ADDED
|
@@ -0,0 +1,780 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var ui = require('@grafana/ui');
|
|
7
|
+
var data = require('@grafana/data');
|
|
8
|
+
var lodash = require('lodash');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
|
+
|
|
14
|
+
const standardRegions = [
|
|
15
|
+
"af-south-1",
|
|
16
|
+
"ap-east-1",
|
|
17
|
+
"ap-northeast-1",
|
|
18
|
+
"ap-northeast-2",
|
|
19
|
+
"ap-northeast-3",
|
|
20
|
+
"ap-south-1",
|
|
21
|
+
"ap-southeast-1",
|
|
22
|
+
"ap-southeast-2",
|
|
23
|
+
"ca-central-1",
|
|
24
|
+
"cn-north-1",
|
|
25
|
+
"cn-northwest-1",
|
|
26
|
+
"eu-central-1",
|
|
27
|
+
"eu-north-1",
|
|
28
|
+
"eu-west-1",
|
|
29
|
+
"eu-west-2",
|
|
30
|
+
"eu-west-3",
|
|
31
|
+
"me-south-1",
|
|
32
|
+
"sa-east-1",
|
|
33
|
+
"us-east-1",
|
|
34
|
+
"us-east-2",
|
|
35
|
+
"us-gov-east-1",
|
|
36
|
+
"us-gov-west-1",
|
|
37
|
+
"us-iso-east-1",
|
|
38
|
+
"us-isob-east-1",
|
|
39
|
+
"us-west-1",
|
|
40
|
+
"us-west-2"
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
var AwsAuthType = /* @__PURE__ */ ((AwsAuthType2) => {
|
|
44
|
+
AwsAuthType2["Keys"] = "keys";
|
|
45
|
+
AwsAuthType2["Credentials"] = "credentials";
|
|
46
|
+
AwsAuthType2["Default"] = "default";
|
|
47
|
+
AwsAuthType2["EC2IAMRole"] = "ec2_iam_role";
|
|
48
|
+
AwsAuthType2["ARN"] = "arn";
|
|
49
|
+
return AwsAuthType2;
|
|
50
|
+
})(AwsAuthType || {});
|
|
51
|
+
|
|
52
|
+
const awsAuthProviderOptions = [
|
|
53
|
+
{
|
|
54
|
+
label: "Workspace IAM Role",
|
|
55
|
+
value: AwsAuthType.EC2IAMRole
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
label: "AWS SDK Default",
|
|
59
|
+
value: AwsAuthType.Default
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: "Access & secret key",
|
|
63
|
+
value: AwsAuthType.Keys
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: "Credentials file",
|
|
67
|
+
value: AwsAuthType.Credentials
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
var __defProp$7 = Object.defineProperty;
|
|
72
|
+
var __defProps$6 = Object.defineProperties;
|
|
73
|
+
var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
|
|
74
|
+
var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
|
|
75
|
+
var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
|
|
76
|
+
var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
|
|
77
|
+
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
78
|
+
var __spreadValues$7 = (a, b) => {
|
|
79
|
+
for (var prop in b || (b = {}))
|
|
80
|
+
if (__hasOwnProp$7.call(b, prop))
|
|
81
|
+
__defNormalProp$7(a, prop, b[prop]);
|
|
82
|
+
if (__getOwnPropSymbols$7)
|
|
83
|
+
for (var prop of __getOwnPropSymbols$7(b)) {
|
|
84
|
+
if (__propIsEnum$7.call(b, prop))
|
|
85
|
+
__defNormalProp$7(a, prop, b[prop]);
|
|
86
|
+
}
|
|
87
|
+
return a;
|
|
88
|
+
};
|
|
89
|
+
var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
|
|
90
|
+
const toOption = (value) => ({ value, label: value });
|
|
91
|
+
const ConnectionConfig = (props) => {
|
|
92
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
93
|
+
const [regions, setRegions] = React.useState((props.standardRegions || standardRegions).map(toOption));
|
|
94
|
+
const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false } = props;
|
|
95
|
+
const { labelWidth = 28, options } = props;
|
|
96
|
+
let profile = options.jsonData.profile;
|
|
97
|
+
if (profile === void 0) {
|
|
98
|
+
profile = options.database;
|
|
99
|
+
}
|
|
100
|
+
const settings = window.grafanaBootData.settings;
|
|
101
|
+
const awsAllowedAuthProviders = React.useMemo(
|
|
102
|
+
() => {
|
|
103
|
+
var _a2;
|
|
104
|
+
return (_a2 = settings.awsAllowedAuthProviders) != null ? _a2 : [AwsAuthType.Default, AwsAuthType.Keys, AwsAuthType.Credentials];
|
|
105
|
+
},
|
|
106
|
+
[settings.awsAllowedAuthProviders]
|
|
107
|
+
);
|
|
108
|
+
const awsAssumeRoleEnabled = (_a = settings.awsAssumeRoleEnabled) != null ? _a : true;
|
|
109
|
+
const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);
|
|
110
|
+
React.useEffect(() => {
|
|
111
|
+
if (!currentProvider && awsAllowedAuthProviders.length) {
|
|
112
|
+
onOptionsChange(__spreadProps$6(__spreadValues$7({}, options), {
|
|
113
|
+
jsonData: __spreadProps$6(__spreadValues$7({}, options.jsonData), {
|
|
114
|
+
authType: awsAllowedAuthProviders[0]
|
|
115
|
+
})
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);
|
|
119
|
+
React.useEffect(() => {
|
|
120
|
+
if (!loadRegions) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
loadRegions().then((regions2) => setRegions(regions2.map(toOption)));
|
|
124
|
+
}, [loadRegions]);
|
|
125
|
+
return /* @__PURE__ */ React__default["default"].createElement(ui.FieldSet, { label: skipHeader ? "" : "Connection Details", "data-testid": "connection-config" }, /* @__PURE__ */ React__default["default"].createElement(
|
|
126
|
+
ui.InlineField,
|
|
127
|
+
{
|
|
128
|
+
label: "Authentication Provider",
|
|
129
|
+
labelWidth,
|
|
130
|
+
tooltip: "Specify which AWS credentials chain to use."
|
|
131
|
+
},
|
|
132
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
133
|
+
ui.Select,
|
|
134
|
+
{
|
|
135
|
+
"aria-label": "Authentication Provider",
|
|
136
|
+
className: "width-30",
|
|
137
|
+
value: currentProvider,
|
|
138
|
+
options: awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value)),
|
|
139
|
+
defaultValue: options.jsonData.authType,
|
|
140
|
+
onChange: (option) => {
|
|
141
|
+
data.onUpdateDatasourceJsonDataOptionSelect(props, "authType")(option);
|
|
142
|
+
},
|
|
143
|
+
menuShouldPortal: true
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
), options.jsonData.authType === "credentials" && /* @__PURE__ */ React__default["default"].createElement(
|
|
147
|
+
ui.InlineField,
|
|
148
|
+
{
|
|
149
|
+
label: "Credentials Profile Name",
|
|
150
|
+
labelWidth,
|
|
151
|
+
tooltip: "Credentials profile name, as specified in ~/.aws/credentials, leave blank for default."
|
|
152
|
+
},
|
|
153
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
154
|
+
ui.Input,
|
|
155
|
+
{
|
|
156
|
+
"aria-label": "Credentials Profile Name",
|
|
157
|
+
className: "width-30",
|
|
158
|
+
placeholder: "default",
|
|
159
|
+
value: profile,
|
|
160
|
+
onChange: data.onUpdateDatasourceJsonDataOption(props, "profile")
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
), options.jsonData.authType === "keys" && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Access Key ID", labelWidth }, ((_b = props.options.secureJsonFields) == null ? void 0 : _b.accessKey) ? /* @__PURE__ */ React__default["default"].createElement(ui.ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React__default["default"].createElement(ui.Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React__default["default"].createElement(
|
|
164
|
+
ui.ToolbarButton,
|
|
165
|
+
{
|
|
166
|
+
icon: "edit",
|
|
167
|
+
tooltip: "Edit Access Key ID",
|
|
168
|
+
type: "button",
|
|
169
|
+
onClick: data.onUpdateDatasourceResetOption(props, "accessKey")
|
|
170
|
+
}
|
|
171
|
+
)) : /* @__PURE__ */ React__default["default"].createElement(
|
|
172
|
+
ui.Input,
|
|
173
|
+
{
|
|
174
|
+
"aria-label": "Access Key ID",
|
|
175
|
+
className: "width-30",
|
|
176
|
+
value: (_d = (_c = options.secureJsonData) == null ? void 0 : _c.accessKey) != null ? _d : "",
|
|
177
|
+
onChange: data.onUpdateDatasourceSecureJsonDataOption(props, "accessKey")
|
|
178
|
+
}
|
|
179
|
+
)), /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Secret Access Key", labelWidth }, ((_e = props.options.secureJsonFields) == null ? void 0 : _e.secretKey) ? /* @__PURE__ */ React__default["default"].createElement(ui.ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React__default["default"].createElement(ui.Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React__default["default"].createElement(
|
|
180
|
+
ui.ToolbarButton,
|
|
181
|
+
{
|
|
182
|
+
icon: "edit",
|
|
183
|
+
type: "button",
|
|
184
|
+
tooltip: "Edit Secret Access Key",
|
|
185
|
+
onClick: data.onUpdateDatasourceResetOption(props, "secretKey")
|
|
186
|
+
}
|
|
187
|
+
)) : /* @__PURE__ */ React__default["default"].createElement(
|
|
188
|
+
ui.Input,
|
|
189
|
+
{
|
|
190
|
+
"aria-label": "Secret Access Key",
|
|
191
|
+
className: "width-30",
|
|
192
|
+
value: (_g = (_f = options.secureJsonData) == null ? void 0 : _f.secretKey) != null ? _g : "",
|
|
193
|
+
onChange: data.onUpdateDatasourceSecureJsonDataOption(props, "secretKey")
|
|
194
|
+
}
|
|
195
|
+
))), awsAssumeRoleEnabled && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(
|
|
196
|
+
ui.InlineField,
|
|
197
|
+
{
|
|
198
|
+
label: "Assume Role ARN",
|
|
199
|
+
labelWidth,
|
|
200
|
+
tooltip: "Optionally, specify the ARN of a role to assume. Specifying a role here will ensure that the selected authentication provider is used to assume the specified role rather than using the credentials directly. Leave blank if you don't need to assume a role at all"
|
|
201
|
+
},
|
|
202
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
203
|
+
ui.Input,
|
|
204
|
+
{
|
|
205
|
+
"aria-label": "Assume Role ARN",
|
|
206
|
+
className: "width-30",
|
|
207
|
+
placeholder: "arn:aws:iam:*",
|
|
208
|
+
value: options.jsonData.assumeRoleArn || "",
|
|
209
|
+
onChange: data.onUpdateDatasourceJsonDataOption(props, "assumeRoleArn")
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
), /* @__PURE__ */ React__default["default"].createElement(
|
|
213
|
+
ui.InlineField,
|
|
214
|
+
{
|
|
215
|
+
label: "External ID",
|
|
216
|
+
labelWidth,
|
|
217
|
+
tooltip: "If you are assuming a role in another account, that has been created with an external ID, specify the external ID here."
|
|
218
|
+
},
|
|
219
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
220
|
+
ui.Input,
|
|
221
|
+
{
|
|
222
|
+
"aria-label": "External ID",
|
|
223
|
+
className: "width-30",
|
|
224
|
+
placeholder: "External ID",
|
|
225
|
+
value: options.jsonData.externalId || "",
|
|
226
|
+
onChange: data.onUpdateDatasourceJsonDataOption(props, "externalId")
|
|
227
|
+
}
|
|
228
|
+
)
|
|
229
|
+
)), !skipEndpoint && /* @__PURE__ */ React__default["default"].createElement(
|
|
230
|
+
ui.InlineField,
|
|
231
|
+
{
|
|
232
|
+
label: "Endpoint",
|
|
233
|
+
labelWidth,
|
|
234
|
+
tooltip: "Optionally, specify a custom endpoint for the service"
|
|
235
|
+
},
|
|
236
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
237
|
+
ui.Input,
|
|
238
|
+
{
|
|
239
|
+
"aria-label": "Endpoint",
|
|
240
|
+
className: "width-30",
|
|
241
|
+
placeholder: (_h = props.defaultEndpoint) != null ? _h : "https://{service}.{region}.amazonaws.com",
|
|
242
|
+
value: options.jsonData.endpoint || "",
|
|
243
|
+
onChange: data.onUpdateDatasourceJsonDataOption(props, "endpoint")
|
|
244
|
+
}
|
|
245
|
+
)
|
|
246
|
+
), /* @__PURE__ */ React__default["default"].createElement(
|
|
247
|
+
ui.InlineField,
|
|
248
|
+
{
|
|
249
|
+
label: "Default Region",
|
|
250
|
+
labelWidth,
|
|
251
|
+
tooltip: "Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region."
|
|
252
|
+
},
|
|
253
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
254
|
+
ui.Select,
|
|
255
|
+
{
|
|
256
|
+
"aria-label": "Default Region",
|
|
257
|
+
className: "width-30",
|
|
258
|
+
value: regions.find((region) => region.value === options.jsonData.defaultRegion),
|
|
259
|
+
options: regions,
|
|
260
|
+
defaultValue: options.jsonData.defaultRegion,
|
|
261
|
+
allowCustomValue: true,
|
|
262
|
+
onChange: data.onUpdateDatasourceJsonDataOptionSelect(props, "defaultRegion"),
|
|
263
|
+
formatCreateLabel: (r) => `Use region: ${r}`,
|
|
264
|
+
menuShouldPortal: true
|
|
265
|
+
}
|
|
266
|
+
)
|
|
267
|
+
), props.children);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
var __defProp$6 = Object.defineProperty;
|
|
271
|
+
var __defProps$5 = Object.defineProperties;
|
|
272
|
+
var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
|
|
273
|
+
var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
|
|
274
|
+
var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
|
|
275
|
+
var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
|
|
276
|
+
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
277
|
+
var __spreadValues$6 = (a, b) => {
|
|
278
|
+
for (var prop in b || (b = {}))
|
|
279
|
+
if (__hasOwnProp$6.call(b, prop))
|
|
280
|
+
__defNormalProp$6(a, prop, b[prop]);
|
|
281
|
+
if (__getOwnPropSymbols$6)
|
|
282
|
+
for (var prop of __getOwnPropSymbols$6(b)) {
|
|
283
|
+
if (__propIsEnum$6.call(b, prop))
|
|
284
|
+
__defNormalProp$6(a, prop, b[prop]);
|
|
285
|
+
}
|
|
286
|
+
return a;
|
|
287
|
+
};
|
|
288
|
+
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
289
|
+
const SIGV4ConnectionConfig = (props) => {
|
|
290
|
+
var _a, _b, _c, _d;
|
|
291
|
+
const { onOptionsChange, options } = props;
|
|
292
|
+
const connectionConfigProps = {
|
|
293
|
+
onOptionsChange: (awsDataSourceSettings) => {
|
|
294
|
+
var _a2, _b2, _c2, _d2;
|
|
295
|
+
const dataSourceSettings = __spreadProps$5(__spreadValues$6({}, options), {
|
|
296
|
+
jsonData: __spreadProps$5(__spreadValues$6({}, options.jsonData), {
|
|
297
|
+
sigV4AuthType: awsDataSourceSettings.jsonData.authType,
|
|
298
|
+
sigV4Profile: awsDataSourceSettings.jsonData.profile,
|
|
299
|
+
sigV4AssumeRoleArn: awsDataSourceSettings.jsonData.assumeRoleArn,
|
|
300
|
+
sigV4ExternalId: awsDataSourceSettings.jsonData.externalId,
|
|
301
|
+
sigV4Region: awsDataSourceSettings.jsonData.defaultRegion,
|
|
302
|
+
sigV4Endpoint: awsDataSourceSettings.jsonData.endpoint
|
|
303
|
+
}),
|
|
304
|
+
secureJsonFields: {
|
|
305
|
+
sigV4AccessKey: (_a2 = awsDataSourceSettings.secureJsonFields) == null ? void 0 : _a2.accessKey,
|
|
306
|
+
sigV4SecretKey: (_b2 = awsDataSourceSettings.secureJsonFields) == null ? void 0 : _b2.secretKey
|
|
307
|
+
},
|
|
308
|
+
secureJsonData: {
|
|
309
|
+
sigV4AccessKey: (_c2 = awsDataSourceSettings.secureJsonData) == null ? void 0 : _c2.accessKey,
|
|
310
|
+
sigV4SecretKey: (_d2 = awsDataSourceSettings.secureJsonData) == null ? void 0 : _d2.secretKey
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
onOptionsChange(dataSourceSettings);
|
|
314
|
+
},
|
|
315
|
+
options: __spreadProps$5(__spreadValues$6({}, options), {
|
|
316
|
+
jsonData: __spreadProps$5(__spreadValues$6({}, options.jsonData), {
|
|
317
|
+
authType: options.jsonData.sigV4AuthType,
|
|
318
|
+
profile: options.jsonData.sigV4Profile,
|
|
319
|
+
assumeRoleArn: options.jsonData.sigV4AssumeRoleArn,
|
|
320
|
+
externalId: options.jsonData.sigV4ExternalId,
|
|
321
|
+
defaultRegion: options.jsonData.sigV4Region,
|
|
322
|
+
endpoint: options.jsonData.sigV4Endpoint
|
|
323
|
+
}),
|
|
324
|
+
secureJsonFields: {
|
|
325
|
+
accessKey: (_a = options.secureJsonFields) == null ? void 0 : _a.sigV4AccessKey,
|
|
326
|
+
secretKey: (_b = options.secureJsonFields) == null ? void 0 : _b.sigV4SecretKey
|
|
327
|
+
},
|
|
328
|
+
secureJsonData: {
|
|
329
|
+
accessKey: (_c = options.secureJsonData) == null ? void 0 : _c.sigV4AccessKey,
|
|
330
|
+
secretKey: (_d = options.secureJsonData) == null ? void 0 : _d.sigV4SecretKey
|
|
331
|
+
}
|
|
332
|
+
})
|
|
333
|
+
};
|
|
334
|
+
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement("div", { className: "gf-form" }, /* @__PURE__ */ React__default["default"].createElement("h6", null, "SigV4 Auth Details")), /* @__PURE__ */ React__default["default"].createElement(ConnectionConfig, __spreadProps$5(__spreadValues$6({}, connectionConfigProps), { skipHeader: true, skipEndpoint: true })));
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const defaultKey = "__default";
|
|
338
|
+
|
|
339
|
+
var __defProp$5 = Object.defineProperty;
|
|
340
|
+
var __defProps$4 = Object.defineProperties;
|
|
341
|
+
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
|
|
342
|
+
var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
|
|
343
|
+
var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
|
|
344
|
+
var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
|
|
345
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
346
|
+
var __spreadValues$5 = (a, b) => {
|
|
347
|
+
for (var prop in b || (b = {}))
|
|
348
|
+
if (__hasOwnProp$5.call(b, prop))
|
|
349
|
+
__defNormalProp$5(a, prop, b[prop]);
|
|
350
|
+
if (__getOwnPropSymbols$5)
|
|
351
|
+
for (var prop of __getOwnPropSymbols$5(b)) {
|
|
352
|
+
if (__propIsEnum$5.call(b, prop))
|
|
353
|
+
__defNormalProp$5(a, prop, b[prop]);
|
|
354
|
+
}
|
|
355
|
+
return a;
|
|
356
|
+
};
|
|
357
|
+
var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
|
|
358
|
+
function ResourceSelector(props) {
|
|
359
|
+
const [resource, setResource] = React.useState(props.value || props.default || null);
|
|
360
|
+
const [resources, setResources] = React.useState(resource ? [resource] : []);
|
|
361
|
+
const [dependencies, setDependencies] = React.useState(props.dependencies);
|
|
362
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
363
|
+
const [fetched, setFetched] = React.useState(false);
|
|
364
|
+
const defaultOpts = React.useMemo(() => {
|
|
365
|
+
const opts = [
|
|
366
|
+
{
|
|
367
|
+
label: `default (${props.default})`,
|
|
368
|
+
value: defaultKey,
|
|
369
|
+
description: `Default value set in the data source`
|
|
370
|
+
}
|
|
371
|
+
];
|
|
372
|
+
if (props.value && props.value !== defaultKey) {
|
|
373
|
+
opts.push({ label: props.value, value: props.value });
|
|
374
|
+
}
|
|
375
|
+
return opts;
|
|
376
|
+
}, [props.default, props.value]);
|
|
377
|
+
const [options, setOptions] = React.useState(props.default ? defaultOpts : []);
|
|
378
|
+
React.useEffect(() => {
|
|
379
|
+
if (props.resources !== void 0) {
|
|
380
|
+
setResources(props.resources);
|
|
381
|
+
}
|
|
382
|
+
}, [props.resources]);
|
|
383
|
+
React.useEffect(() => {
|
|
384
|
+
const newOptions = props.default ? defaultOpts : [];
|
|
385
|
+
if (resources.length) {
|
|
386
|
+
resources.forEach((r) => {
|
|
387
|
+
const value = typeof r === "string" ? r : r.value;
|
|
388
|
+
if (!newOptions.find((o) => o.value === value)) {
|
|
389
|
+
typeof r === "string" ? newOptions.push({ label: r, value: r }) : newOptions.push(r);
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
setOptions(newOptions);
|
|
393
|
+
} else {
|
|
394
|
+
setOptions([]);
|
|
395
|
+
}
|
|
396
|
+
}, [resources, defaultOpts, props.default]);
|
|
397
|
+
React.useEffect(() => {
|
|
398
|
+
if (!lodash.isEqual(props.dependencies, dependencies)) {
|
|
399
|
+
setFetched(false);
|
|
400
|
+
setResource(null);
|
|
401
|
+
props.onChange(null);
|
|
402
|
+
setDependencies(props.dependencies);
|
|
403
|
+
}
|
|
404
|
+
}, [props, dependencies]);
|
|
405
|
+
const fetch = async () => {
|
|
406
|
+
var _a;
|
|
407
|
+
if (fetched) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
if (props.saveOptions) {
|
|
411
|
+
await props.saveOptions();
|
|
412
|
+
}
|
|
413
|
+
try {
|
|
414
|
+
const resources2 = await ((_a = props.fetch) == null ? void 0 : _a.call(props)) || [];
|
|
415
|
+
setResources(resources2);
|
|
416
|
+
} finally {
|
|
417
|
+
setFetched(true);
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
const onChange = (e) => {
|
|
421
|
+
props.onChange(e);
|
|
422
|
+
if (e.value) {
|
|
423
|
+
setResource(e.value);
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
const onClick = async () => {
|
|
427
|
+
setIsLoading(true);
|
|
428
|
+
try {
|
|
429
|
+
await fetch();
|
|
430
|
+
} finally {
|
|
431
|
+
setIsLoading(false);
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
return /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: props.label, labelWidth: props.labelWidth, tooltip: props.tooltip, hidden: props.hidden }, /* @__PURE__ */ React__default["default"].createElement("div", { "data-testid": props["data-testid"], title: props.title }, /* @__PURE__ */ React__default["default"].createElement(
|
|
435
|
+
ui.Select,
|
|
436
|
+
__spreadProps$4(__spreadValues$5({}, props), {
|
|
437
|
+
"aria-label": props.label,
|
|
438
|
+
options,
|
|
439
|
+
onChange,
|
|
440
|
+
isLoading,
|
|
441
|
+
className: props.className || "min-width-6",
|
|
442
|
+
onOpenMenu: () => props.fetch && onClick(),
|
|
443
|
+
menuShouldPortal: true
|
|
444
|
+
})
|
|
445
|
+
)));
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
var __defProp$4 = Object.defineProperty;
|
|
449
|
+
var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
|
|
450
|
+
var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
|
|
451
|
+
var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
|
|
452
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
453
|
+
var __spreadValues$4 = (a, b) => {
|
|
454
|
+
for (var prop in b || (b = {}))
|
|
455
|
+
if (__hasOwnProp$4.call(b, prop))
|
|
456
|
+
__defNormalProp$4(a, prop, b[prop]);
|
|
457
|
+
if (__getOwnPropSymbols$4)
|
|
458
|
+
for (var prop of __getOwnPropSymbols$4(b)) {
|
|
459
|
+
if (__propIsEnum$4.call(b, prop))
|
|
460
|
+
__defNormalProp$4(a, prop, b[prop]);
|
|
461
|
+
}
|
|
462
|
+
return a;
|
|
463
|
+
};
|
|
464
|
+
function ConfigSelect(props) {
|
|
465
|
+
var _a, _b, _c;
|
|
466
|
+
const { jsonData } = props.options;
|
|
467
|
+
const commonProps = {
|
|
468
|
+
title: jsonData.defaultRegion ? "" : "select a default region",
|
|
469
|
+
labelWidth: (_a = props.labelWidth) != null ? _a : 28,
|
|
470
|
+
className: "width-30"
|
|
471
|
+
};
|
|
472
|
+
const dependencies = [
|
|
473
|
+
props.options.jsonData.assumeRoleArn,
|
|
474
|
+
props.options.jsonData.authType,
|
|
475
|
+
props.options.jsonData.defaultRegion,
|
|
476
|
+
props.options.jsonData.endpoint,
|
|
477
|
+
props.options.jsonData.externalId,
|
|
478
|
+
props.options.jsonData.profile,
|
|
479
|
+
(_b = props.options.secureJsonData) == null ? void 0 : _b.accessKey,
|
|
480
|
+
(_c = props.options.secureJsonData) == null ? void 0 : _c.secretKey
|
|
481
|
+
].concat(props.dependencies);
|
|
482
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
483
|
+
ResourceSelector,
|
|
484
|
+
__spreadValues$4({
|
|
485
|
+
label: props.label,
|
|
486
|
+
"data-testid": props["data-testid"],
|
|
487
|
+
onChange: props.onChange,
|
|
488
|
+
fetch: props.fetch,
|
|
489
|
+
value: props.value,
|
|
490
|
+
saveOptions: props.saveOptions,
|
|
491
|
+
dependencies,
|
|
492
|
+
hidden: props.hidden,
|
|
493
|
+
disabled: props.disabled || !jsonData.defaultRegion,
|
|
494
|
+
allowCustomValue: props.allowCustomValue,
|
|
495
|
+
autoFocus: props.autoFocus,
|
|
496
|
+
backspaceRemovesValue: props.backspaceRemovesValue,
|
|
497
|
+
invalid: props.invalid,
|
|
498
|
+
isClearable: props.isClearable,
|
|
499
|
+
isMulti: props.isMulti,
|
|
500
|
+
inputId: props.inputId,
|
|
501
|
+
showAllSelectedWhenOpen: props.showAllSelectedWhenOpen,
|
|
502
|
+
maxMenuHeight: props.maxMenuHeight,
|
|
503
|
+
minMenuHeight: props.minMenuHeight,
|
|
504
|
+
maxVisibleValues: props.maxVisibleValues,
|
|
505
|
+
menuPlacement: props.menuPlacement,
|
|
506
|
+
menuPosition: props.menuPosition,
|
|
507
|
+
noOptionsMessage: props.noOptionsMessage,
|
|
508
|
+
onBlur: props.onBlur,
|
|
509
|
+
onCreateOption: props.onCreateOption,
|
|
510
|
+
onInputChange: props.onInputChange,
|
|
511
|
+
placeholder: props.placeholder,
|
|
512
|
+
width: props.width,
|
|
513
|
+
isOptionDisabled: props.isOptionDisabled
|
|
514
|
+
}, commonProps)
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
function InlineInput(props) {
|
|
519
|
+
var _a;
|
|
520
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
521
|
+
ui.InlineField,
|
|
522
|
+
{
|
|
523
|
+
label: props.label,
|
|
524
|
+
labelWidth: (_a = props.labelWidth) != null ? _a : 28,
|
|
525
|
+
tooltip: props.tooltip,
|
|
526
|
+
hidden: props.hidden,
|
|
527
|
+
disabled: props.disabled
|
|
528
|
+
},
|
|
529
|
+
/* @__PURE__ */ React__default["default"].createElement(
|
|
530
|
+
ui.Input,
|
|
531
|
+
{
|
|
532
|
+
"data-testid": props["data-testid"],
|
|
533
|
+
className: "width-30",
|
|
534
|
+
value: props.value,
|
|
535
|
+
onChange: props.onChange,
|
|
536
|
+
placeholder: props.placeholder,
|
|
537
|
+
disabled: props.disabled
|
|
538
|
+
}
|
|
539
|
+
)
|
|
540
|
+
);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
var __defProp$3 = Object.defineProperty;
|
|
544
|
+
var __defProps$3 = Object.defineProperties;
|
|
545
|
+
var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
|
|
546
|
+
var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
|
|
547
|
+
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
548
|
+
var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
|
|
549
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
550
|
+
var __spreadValues$3 = (a, b) => {
|
|
551
|
+
for (var prop in b || (b = {}))
|
|
552
|
+
if (__hasOwnProp$3.call(b, prop))
|
|
553
|
+
__defNormalProp$3(a, prop, b[prop]);
|
|
554
|
+
if (__getOwnPropSymbols$3)
|
|
555
|
+
for (var prop of __getOwnPropSymbols$3(b)) {
|
|
556
|
+
if (__propIsEnum$3.call(b, prop))
|
|
557
|
+
__defNormalProp$3(a, prop, b[prop]);
|
|
558
|
+
}
|
|
559
|
+
return a;
|
|
560
|
+
};
|
|
561
|
+
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
562
|
+
function QueryCodeEditor(props) {
|
|
563
|
+
const { getSuggestions, query } = props;
|
|
564
|
+
const { rawSQL } = lodash.defaults(props.query, { rawSQL: "" });
|
|
565
|
+
const onRawSqlChange = (rawSQL2) => {
|
|
566
|
+
const query2 = __spreadProps$3(__spreadValues$3({}, props.query), {
|
|
567
|
+
rawSQL: rawSQL2
|
|
568
|
+
});
|
|
569
|
+
props.onChange(query2);
|
|
570
|
+
props.onRunQuery();
|
|
571
|
+
};
|
|
572
|
+
const suggestionsRef = React.useRef([]);
|
|
573
|
+
React.useEffect(() => {
|
|
574
|
+
suggestionsRef.current = getSuggestions(query);
|
|
575
|
+
}, [getSuggestions, query]);
|
|
576
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
577
|
+
ui.CodeEditor,
|
|
578
|
+
__spreadValues$3({
|
|
579
|
+
language: props.language,
|
|
580
|
+
value: rawSQL,
|
|
581
|
+
onBlur: onRawSqlChange,
|
|
582
|
+
showMiniMap: false,
|
|
583
|
+
showLineNumbers: true,
|
|
584
|
+
getSuggestions: () => suggestionsRef.current,
|
|
585
|
+
height: "240px"
|
|
586
|
+
}, props.editorProps)
|
|
587
|
+
);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
var __defProp$2 = Object.defineProperty;
|
|
591
|
+
var __defProps$2 = Object.defineProperties;
|
|
592
|
+
var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
|
|
593
|
+
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
|
|
594
|
+
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
595
|
+
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
|
|
596
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
597
|
+
var __spreadValues$2 = (a, b) => {
|
|
598
|
+
for (var prop in b || (b = {}))
|
|
599
|
+
if (__hasOwnProp$2.call(b, prop))
|
|
600
|
+
__defNormalProp$2(a, prop, b[prop]);
|
|
601
|
+
if (__getOwnPropSymbols$2)
|
|
602
|
+
for (var prop of __getOwnPropSymbols$2(b)) {
|
|
603
|
+
if (__propIsEnum$2.call(b, prop))
|
|
604
|
+
__defNormalProp$2(a, prop, b[prop]);
|
|
605
|
+
}
|
|
606
|
+
return a;
|
|
607
|
+
};
|
|
608
|
+
var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
609
|
+
function FormatSelect(props) {
|
|
610
|
+
const onChangeFormat = (e) => {
|
|
611
|
+
var _a;
|
|
612
|
+
props.onChange(__spreadProps$2(__spreadValues$2({}, props.query), {
|
|
613
|
+
format: e.value || 0
|
|
614
|
+
}));
|
|
615
|
+
(_a = props.onRunQuery) == null ? void 0 : _a.call(props);
|
|
616
|
+
};
|
|
617
|
+
return /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Format as", labelWidth: 11 }, /* @__PURE__ */ React__default["default"].createElement(
|
|
618
|
+
ui.Select,
|
|
619
|
+
{
|
|
620
|
+
"aria-label": "Format as",
|
|
621
|
+
options: props.options,
|
|
622
|
+
value: props.query.format,
|
|
623
|
+
onChange: onChangeFormat,
|
|
624
|
+
className: "width-12",
|
|
625
|
+
menuShouldPortal: true
|
|
626
|
+
}
|
|
627
|
+
));
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
var __defProp$1 = Object.defineProperty;
|
|
631
|
+
var __defProps$1 = Object.defineProperties;
|
|
632
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
633
|
+
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
634
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
635
|
+
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
636
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
637
|
+
var __spreadValues$1 = (a, b) => {
|
|
638
|
+
for (var prop in b || (b = {}))
|
|
639
|
+
if (__hasOwnProp$1.call(b, prop))
|
|
640
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
641
|
+
if (__getOwnPropSymbols$1)
|
|
642
|
+
for (var prop of __getOwnPropSymbols$1(b)) {
|
|
643
|
+
if (__propIsEnum$1.call(b, prop))
|
|
644
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
645
|
+
}
|
|
646
|
+
return a;
|
|
647
|
+
};
|
|
648
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
649
|
+
var FillValueOptions = /* @__PURE__ */ ((FillValueOptions2) => {
|
|
650
|
+
FillValueOptions2[FillValueOptions2["Previous"] = 0] = "Previous";
|
|
651
|
+
FillValueOptions2[FillValueOptions2["Null"] = 1] = "Null";
|
|
652
|
+
FillValueOptions2[FillValueOptions2["Value"] = 2] = "Value";
|
|
653
|
+
return FillValueOptions2;
|
|
654
|
+
})(FillValueOptions || {});
|
|
655
|
+
const SelectableFillValueOptions = [
|
|
656
|
+
{
|
|
657
|
+
label: "Previous Value",
|
|
658
|
+
value: 0 /* Previous */
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
label: "NULL",
|
|
662
|
+
value: 1 /* Null */
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
label: "Value",
|
|
666
|
+
value: 2 /* Value */
|
|
667
|
+
}
|
|
668
|
+
];
|
|
669
|
+
function FillValueSelect(props) {
|
|
670
|
+
var _a, _b, _c;
|
|
671
|
+
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Fill value", tooltip: "value to fill missing points" }, /* @__PURE__ */ React__default["default"].createElement(
|
|
672
|
+
ui.Select,
|
|
673
|
+
{
|
|
674
|
+
"aria-label": "Fill value",
|
|
675
|
+
options: SelectableFillValueOptions,
|
|
676
|
+
value: (_b = (_a = props.query.fillMode) == null ? void 0 : _a.mode) != null ? _b : 0 /* Previous */,
|
|
677
|
+
onChange: ({ value }) => {
|
|
678
|
+
var _a2;
|
|
679
|
+
props.onChange(__spreadProps$1(__spreadValues$1({}, props.query), {
|
|
680
|
+
fillMode: __spreadProps$1(__spreadValues$1({}, props.query.fillMode), { mode: value })
|
|
681
|
+
}));
|
|
682
|
+
(_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
|
|
683
|
+
},
|
|
684
|
+
className: "width-12",
|
|
685
|
+
menuShouldPortal: true
|
|
686
|
+
}
|
|
687
|
+
)), ((_c = props.query.fillMode) == null ? void 0 : _c.mode) === 2 /* Value */ && /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Value", labelWidth: 11 }, /* @__PURE__ */ React__default["default"].createElement(
|
|
688
|
+
ui.Input,
|
|
689
|
+
{
|
|
690
|
+
type: "number",
|
|
691
|
+
"aria-label": "Value",
|
|
692
|
+
value: props.query.fillMode.value,
|
|
693
|
+
onChange: ({ currentTarget }) => props.onChange(__spreadProps$1(__spreadValues$1({}, props.query), {
|
|
694
|
+
fillMode: {
|
|
695
|
+
mode: 2 /* Value */,
|
|
696
|
+
value: currentTarget.valueAsNumber
|
|
697
|
+
}
|
|
698
|
+
})),
|
|
699
|
+
onBlur: () => {
|
|
700
|
+
var _a2;
|
|
701
|
+
return (_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
)));
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
var __defProp = Object.defineProperty;
|
|
708
|
+
var __defProps = Object.defineProperties;
|
|
709
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
710
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
711
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
712
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
713
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
714
|
+
var __spreadValues = (a, b) => {
|
|
715
|
+
for (var prop in b || (b = {}))
|
|
716
|
+
if (__hasOwnProp.call(b, prop))
|
|
717
|
+
__defNormalProp(a, prop, b[prop]);
|
|
718
|
+
if (__getOwnPropSymbols)
|
|
719
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
720
|
+
if (__propIsEnum.call(b, prop))
|
|
721
|
+
__defNormalProp(a, prop, b[prop]);
|
|
722
|
+
}
|
|
723
|
+
return a;
|
|
724
|
+
};
|
|
725
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
726
|
+
function filterSQLQuery(query) {
|
|
727
|
+
return !!query.rawSQL;
|
|
728
|
+
}
|
|
729
|
+
function applySQLTemplateVariables(query, scopedVars, getTemplateSrv) {
|
|
730
|
+
const templateSrv = getTemplateSrv();
|
|
731
|
+
return __spreadProps(__spreadValues({}, query), {
|
|
732
|
+
rawSQL: templateSrv.replace(query.rawSQL, scopedVars, interpolateVariable)
|
|
733
|
+
});
|
|
734
|
+
}
|
|
735
|
+
function interpolateVariable(value) {
|
|
736
|
+
if (typeof value === "string") {
|
|
737
|
+
return value;
|
|
738
|
+
}
|
|
739
|
+
const quotedValues = value.map((v) => {
|
|
740
|
+
return quoteLiteral(v);
|
|
741
|
+
});
|
|
742
|
+
return quotedValues.join(",");
|
|
743
|
+
}
|
|
744
|
+
function quoteLiteral(value) {
|
|
745
|
+
return "'" + String(value).replace(/'/g, "''") + "'";
|
|
746
|
+
}
|
|
747
|
+
const appendTemplateVariablesAsSuggestions = (getTemplateSrv, sugs) => {
|
|
748
|
+
const templateSrv = getTemplateSrv();
|
|
749
|
+
const templateSugs = [];
|
|
750
|
+
templateSrv.getVariables().forEach((variable) => {
|
|
751
|
+
const label = "$" + variable.name;
|
|
752
|
+
let val = templateSrv.replace(label);
|
|
753
|
+
if (val === label) {
|
|
754
|
+
val = "";
|
|
755
|
+
}
|
|
756
|
+
templateSugs.push({
|
|
757
|
+
label,
|
|
758
|
+
kind: ui.CodeEditorSuggestionItemKind.Text,
|
|
759
|
+
detail: `(Template Variable) ${val}`
|
|
760
|
+
});
|
|
761
|
+
});
|
|
762
|
+
return sugs.concat(templateSugs);
|
|
763
|
+
};
|
|
764
|
+
|
|
765
|
+
exports.AwsAuthType = AwsAuthType;
|
|
766
|
+
exports.ConfigSelect = ConfigSelect;
|
|
767
|
+
exports.ConnectionConfig = ConnectionConfig;
|
|
768
|
+
exports.FillValueOptions = FillValueOptions;
|
|
769
|
+
exports.FillValueSelect = FillValueSelect;
|
|
770
|
+
exports.FormatSelect = FormatSelect;
|
|
771
|
+
exports.InlineInput = InlineInput;
|
|
772
|
+
exports.QueryCodeEditor = QueryCodeEditor;
|
|
773
|
+
exports.ResourceSelector = ResourceSelector;
|
|
774
|
+
exports.SIGV4ConnectionConfig = SIGV4ConnectionConfig;
|
|
775
|
+
exports.appendTemplateVariablesAsSuggestions = appendTemplateVariablesAsSuggestions;
|
|
776
|
+
exports.applySQLTemplateVariables = applySQLTemplateVariables;
|
|
777
|
+
exports.awsAuthProviderOptions = awsAuthProviderOptions;
|
|
778
|
+
exports.filterSQLQuery = filterSQLQuery;
|
|
779
|
+
exports.standardRegions = standardRegions;
|
|
780
|
+
//# sourceMappingURL=index.js.map
|