@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
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import React, { useState, useMemo, useEffect } from 'react';
|
|
2
|
+
import { FieldSet, InlineField, Select, Input, ButtonGroup, ToolbarButton } from '@grafana/ui';
|
|
3
|
+
import { onUpdateDatasourceJsonDataOptionSelect, onUpdateDatasourceJsonDataOption, onUpdateDatasourceResetOption, onUpdateDatasourceSecureJsonDataOption } from '@grafana/data';
|
|
4
|
+
import { standardRegions } from './regions.js';
|
|
5
|
+
import { AwsAuthType } from './types.js';
|
|
6
|
+
import { awsAuthProviderOptions } from './providers.js';
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __defProps = Object.defineProperties;
|
|
10
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
11
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
14
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __spreadValues = (a, b) => {
|
|
16
|
+
for (var prop in b || (b = {}))
|
|
17
|
+
if (__hasOwnProp.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
if (__getOwnPropSymbols)
|
|
20
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
21
|
+
if (__propIsEnum.call(b, prop))
|
|
22
|
+
__defNormalProp(a, prop, b[prop]);
|
|
23
|
+
}
|
|
24
|
+
return a;
|
|
25
|
+
};
|
|
26
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
|
+
const toOption = (value) => ({ value, label: value });
|
|
28
|
+
const ConnectionConfig = (props) => {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
30
|
+
const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));
|
|
31
|
+
const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false } = props;
|
|
32
|
+
const { labelWidth = 28, options } = props;
|
|
33
|
+
let profile = options.jsonData.profile;
|
|
34
|
+
if (profile === void 0) {
|
|
35
|
+
profile = options.database;
|
|
36
|
+
}
|
|
37
|
+
const settings = window.grafanaBootData.settings;
|
|
38
|
+
const awsAllowedAuthProviders = useMemo(
|
|
39
|
+
() => {
|
|
40
|
+
var _a2;
|
|
41
|
+
return (_a2 = settings.awsAllowedAuthProviders) != null ? _a2 : [AwsAuthType.Default, AwsAuthType.Keys, AwsAuthType.Credentials];
|
|
42
|
+
},
|
|
43
|
+
[settings.awsAllowedAuthProviders]
|
|
44
|
+
);
|
|
45
|
+
const awsAssumeRoleEnabled = (_a = settings.awsAssumeRoleEnabled) != null ? _a : true;
|
|
46
|
+
const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!currentProvider && awsAllowedAuthProviders.length) {
|
|
49
|
+
onOptionsChange(__spreadProps(__spreadValues({}, options), {
|
|
50
|
+
jsonData: __spreadProps(__spreadValues({}, options.jsonData), {
|
|
51
|
+
authType: awsAllowedAuthProviders[0]
|
|
52
|
+
})
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
}, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (!loadRegions) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
loadRegions().then((regions2) => setRegions(regions2.map(toOption)));
|
|
61
|
+
}, [loadRegions]);
|
|
62
|
+
return /* @__PURE__ */ React.createElement(FieldSet, { label: skipHeader ? "" : "Connection Details", "data-testid": "connection-config" }, /* @__PURE__ */ React.createElement(
|
|
63
|
+
InlineField,
|
|
64
|
+
{
|
|
65
|
+
label: "Authentication Provider",
|
|
66
|
+
labelWidth,
|
|
67
|
+
tooltip: "Specify which AWS credentials chain to use."
|
|
68
|
+
},
|
|
69
|
+
/* @__PURE__ */ React.createElement(
|
|
70
|
+
Select,
|
|
71
|
+
{
|
|
72
|
+
"aria-label": "Authentication Provider",
|
|
73
|
+
className: "width-30",
|
|
74
|
+
value: currentProvider,
|
|
75
|
+
options: awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value)),
|
|
76
|
+
defaultValue: options.jsonData.authType,
|
|
77
|
+
onChange: (option) => {
|
|
78
|
+
onUpdateDatasourceJsonDataOptionSelect(props, "authType")(option);
|
|
79
|
+
},
|
|
80
|
+
menuShouldPortal: true
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
), options.jsonData.authType === "credentials" && /* @__PURE__ */ React.createElement(
|
|
84
|
+
InlineField,
|
|
85
|
+
{
|
|
86
|
+
label: "Credentials Profile Name",
|
|
87
|
+
labelWidth,
|
|
88
|
+
tooltip: "Credentials profile name, as specified in ~/.aws/credentials, leave blank for default."
|
|
89
|
+
},
|
|
90
|
+
/* @__PURE__ */ React.createElement(
|
|
91
|
+
Input,
|
|
92
|
+
{
|
|
93
|
+
"aria-label": "Credentials Profile Name",
|
|
94
|
+
className: "width-30",
|
|
95
|
+
placeholder: "default",
|
|
96
|
+
value: profile,
|
|
97
|
+
onChange: onUpdateDatasourceJsonDataOption(props, "profile")
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
), options.jsonData.authType === "keys" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(InlineField, { label: "Access Key ID", labelWidth }, ((_b = props.options.secureJsonFields) == null ? void 0 : _b.accessKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React.createElement(
|
|
101
|
+
ToolbarButton,
|
|
102
|
+
{
|
|
103
|
+
icon: "edit",
|
|
104
|
+
tooltip: "Edit Access Key ID",
|
|
105
|
+
type: "button",
|
|
106
|
+
onClick: onUpdateDatasourceResetOption(props, "accessKey")
|
|
107
|
+
}
|
|
108
|
+
)) : /* @__PURE__ */ React.createElement(
|
|
109
|
+
Input,
|
|
110
|
+
{
|
|
111
|
+
"aria-label": "Access Key ID",
|
|
112
|
+
className: "width-30",
|
|
113
|
+
value: (_d = (_c = options.secureJsonData) == null ? void 0 : _c.accessKey) != null ? _d : "",
|
|
114
|
+
onChange: onUpdateDatasourceSecureJsonDataOption(props, "accessKey")
|
|
115
|
+
}
|
|
116
|
+
)), /* @__PURE__ */ React.createElement(InlineField, { label: "Secret Access Key", labelWidth }, ((_e = props.options.secureJsonFields) == null ? void 0 : _e.secretKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React.createElement(
|
|
117
|
+
ToolbarButton,
|
|
118
|
+
{
|
|
119
|
+
icon: "edit",
|
|
120
|
+
type: "button",
|
|
121
|
+
tooltip: "Edit Secret Access Key",
|
|
122
|
+
onClick: onUpdateDatasourceResetOption(props, "secretKey")
|
|
123
|
+
}
|
|
124
|
+
)) : /* @__PURE__ */ React.createElement(
|
|
125
|
+
Input,
|
|
126
|
+
{
|
|
127
|
+
"aria-label": "Secret Access Key",
|
|
128
|
+
className: "width-30",
|
|
129
|
+
value: (_g = (_f = options.secureJsonData) == null ? void 0 : _f.secretKey) != null ? _g : "",
|
|
130
|
+
onChange: onUpdateDatasourceSecureJsonDataOption(props, "secretKey")
|
|
131
|
+
}
|
|
132
|
+
))), awsAssumeRoleEnabled && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
133
|
+
InlineField,
|
|
134
|
+
{
|
|
135
|
+
label: "Assume Role ARN",
|
|
136
|
+
labelWidth,
|
|
137
|
+
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"
|
|
138
|
+
},
|
|
139
|
+
/* @__PURE__ */ React.createElement(
|
|
140
|
+
Input,
|
|
141
|
+
{
|
|
142
|
+
"aria-label": "Assume Role ARN",
|
|
143
|
+
className: "width-30",
|
|
144
|
+
placeholder: "arn:aws:iam:*",
|
|
145
|
+
value: options.jsonData.assumeRoleArn || "",
|
|
146
|
+
onChange: onUpdateDatasourceJsonDataOption(props, "assumeRoleArn")
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
), /* @__PURE__ */ React.createElement(
|
|
150
|
+
InlineField,
|
|
151
|
+
{
|
|
152
|
+
label: "External ID",
|
|
153
|
+
labelWidth,
|
|
154
|
+
tooltip: "If you are assuming a role in another account, that has been created with an external ID, specify the external ID here."
|
|
155
|
+
},
|
|
156
|
+
/* @__PURE__ */ React.createElement(
|
|
157
|
+
Input,
|
|
158
|
+
{
|
|
159
|
+
"aria-label": "External ID",
|
|
160
|
+
className: "width-30",
|
|
161
|
+
placeholder: "External ID",
|
|
162
|
+
value: options.jsonData.externalId || "",
|
|
163
|
+
onChange: onUpdateDatasourceJsonDataOption(props, "externalId")
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
)), !skipEndpoint && /* @__PURE__ */ React.createElement(
|
|
167
|
+
InlineField,
|
|
168
|
+
{
|
|
169
|
+
label: "Endpoint",
|
|
170
|
+
labelWidth,
|
|
171
|
+
tooltip: "Optionally, specify a custom endpoint for the service"
|
|
172
|
+
},
|
|
173
|
+
/* @__PURE__ */ React.createElement(
|
|
174
|
+
Input,
|
|
175
|
+
{
|
|
176
|
+
"aria-label": "Endpoint",
|
|
177
|
+
className: "width-30",
|
|
178
|
+
placeholder: (_h = props.defaultEndpoint) != null ? _h : "https://{service}.{region}.amazonaws.com",
|
|
179
|
+
value: options.jsonData.endpoint || "",
|
|
180
|
+
onChange: onUpdateDatasourceJsonDataOption(props, "endpoint")
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
), /* @__PURE__ */ React.createElement(
|
|
184
|
+
InlineField,
|
|
185
|
+
{
|
|
186
|
+
label: "Default Region",
|
|
187
|
+
labelWidth,
|
|
188
|
+
tooltip: "Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region."
|
|
189
|
+
},
|
|
190
|
+
/* @__PURE__ */ React.createElement(
|
|
191
|
+
Select,
|
|
192
|
+
{
|
|
193
|
+
"aria-label": "Default Region",
|
|
194
|
+
className: "width-30",
|
|
195
|
+
value: regions.find((region) => region.value === options.jsonData.defaultRegion),
|
|
196
|
+
options: regions,
|
|
197
|
+
defaultValue: options.jsonData.defaultRegion,
|
|
198
|
+
allowCustomValue: true,
|
|
199
|
+
onChange: onUpdateDatasourceJsonDataOptionSelect(props, "defaultRegion"),
|
|
200
|
+
formatCreateLabel: (r) => `Use region: ${r}`,
|
|
201
|
+
menuShouldPortal: true
|
|
202
|
+
}
|
|
203
|
+
)
|
|
204
|
+
), props.children);
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
export { ConnectionConfig };
|
|
208
|
+
//# sourceMappingURL=ConnectionConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionConfig.js","sources":["../../src/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, InlineField, ButtonGroup, ToolbarButton, FieldSet } from '@grafana/ui';\nimport {\n DataSourcePluginOptionsEditorProps,\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\n\nimport { standardRegions } from './regions';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData, AwsAuthType } from './types';\nimport { awsAuthProviderOptions } from './providers';\n\nconst toOption = (value: string) => ({ value, label: value });\n\nexport interface ConnectionConfigProps<\n J extends AwsAuthDataSourceJsonData = AwsAuthDataSourceJsonData,\n S = AwsAuthDataSourceSecureJsonData\n> extends DataSourcePluginOptionsEditorProps<J, S> {\n standardRegions?: string[];\n loadRegions?: () => Promise<string[]>;\n defaultEndpoint?: string;\n skipHeader?: boolean;\n skipEndpoint?: boolean;\n children?: React.ReactNode;\n labelWidth?: number;\n}\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false } = props;\n const { labelWidth = 28, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n\n const settings = (window as any).grafanaBootData.settings;\n const awsAllowedAuthProviders = useMemo(\n () => settings.awsAllowedAuthProviders ?? [AwsAuthType.Default, AwsAuthType.Keys, AwsAuthType.Credentials],\n [settings.awsAllowedAuthProviders]\n );\n const awsAssumeRoleEnabled = settings.awsAssumeRoleEnabled ?? true;\n\n const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);\n\n useEffect(() => {\n // Make sure a authType exists in the current model\n if (!currentProvider && awsAllowedAuthProviders.length) {\n onOptionsChange({\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: awsAllowedAuthProviders[0],\n },\n });\n }\n }, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);\n\n useEffect(() => {\n if (!loadRegions) {\n return;\n }\n\n loadRegions().then((regions) => setRegions(regions.map(toOption)));\n }, [loadRegions]);\n\n return (\n <FieldSet label={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <InlineField\n label=\"Authentication Provider\"\n labelWidth={labelWidth}\n tooltip=\"Specify which AWS credentials chain to use.\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n className=\"width-30\"\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </InlineField>\n {options.jsonData.authType === 'credentials' && (\n <InlineField\n label=\"Credentials Profile Name\"\n labelWidth={labelWidth}\n tooltip=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n >\n <Input\n aria-label=\"Credentials Profile Name\"\n className=\"width-30\"\n placeholder=\"default\"\n value={profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </InlineField>\n )}\n\n {options.jsonData.authType === 'keys' && (\n <>\n <InlineField label=\"Access Key ID\" labelWidth={labelWidth}>\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup className=\"width-30\">\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n aria-label=\"Access Key ID\"\n className=\"width-30\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </InlineField>\n\n <InlineField label=\"Secret Access Key\" labelWidth={labelWidth}>\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup className=\"width-30\">\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n aria-label=\"Secret Access Key\"\n className=\"width-30\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </InlineField>\n </>\n )}\n\n {awsAssumeRoleEnabled && (\n <>\n <InlineField\n label=\"Assume Role ARN\"\n labelWidth={labelWidth}\n 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\"\n >\n <Input\n aria-label=\"Assume Role ARN\"\n className=\"width-30\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </InlineField>\n <InlineField\n label=\"External ID\"\n labelWidth={labelWidth}\n tooltip=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n aria-label=\"External ID\"\n className=\"width-30\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </InlineField>\n </>\n )}\n {!skipEndpoint && (\n <InlineField\n label=\"Endpoint\"\n labelWidth={labelWidth}\n tooltip=\"Optionally, specify a custom endpoint for the service\"\n >\n <Input\n aria-label=\"Endpoint\"\n className=\"width-30\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </InlineField>\n )}\n <InlineField\n label=\"Default Region\"\n labelWidth={labelWidth}\n tooltip=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n >\n <Select\n aria-label=\"Default Region\"\n className=\"width-30\"\n value={regions.find((region) => region.value === options.jsonData.defaultRegion)}\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </InlineField>\n {props.children}\n </FieldSet>\n );\n};\n"],"names":["_a","regions"],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ConnectionConfig } from './ConnectionConfig.js';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defProps = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
const SIGV4ConnectionConfig = (props) => {
|
|
24
|
+
var _a, _b, _c, _d;
|
|
25
|
+
const { onOptionsChange, options } = props;
|
|
26
|
+
const connectionConfigProps = {
|
|
27
|
+
onOptionsChange: (awsDataSourceSettings) => {
|
|
28
|
+
var _a2, _b2, _c2, _d2;
|
|
29
|
+
const dataSourceSettings = __spreadProps(__spreadValues({}, options), {
|
|
30
|
+
jsonData: __spreadProps(__spreadValues({}, options.jsonData), {
|
|
31
|
+
sigV4AuthType: awsDataSourceSettings.jsonData.authType,
|
|
32
|
+
sigV4Profile: awsDataSourceSettings.jsonData.profile,
|
|
33
|
+
sigV4AssumeRoleArn: awsDataSourceSettings.jsonData.assumeRoleArn,
|
|
34
|
+
sigV4ExternalId: awsDataSourceSettings.jsonData.externalId,
|
|
35
|
+
sigV4Region: awsDataSourceSettings.jsonData.defaultRegion,
|
|
36
|
+
sigV4Endpoint: awsDataSourceSettings.jsonData.endpoint
|
|
37
|
+
}),
|
|
38
|
+
secureJsonFields: {
|
|
39
|
+
sigV4AccessKey: (_a2 = awsDataSourceSettings.secureJsonFields) == null ? void 0 : _a2.accessKey,
|
|
40
|
+
sigV4SecretKey: (_b2 = awsDataSourceSettings.secureJsonFields) == null ? void 0 : _b2.secretKey
|
|
41
|
+
},
|
|
42
|
+
secureJsonData: {
|
|
43
|
+
sigV4AccessKey: (_c2 = awsDataSourceSettings.secureJsonData) == null ? void 0 : _c2.accessKey,
|
|
44
|
+
sigV4SecretKey: (_d2 = awsDataSourceSettings.secureJsonData) == null ? void 0 : _d2.secretKey
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
onOptionsChange(dataSourceSettings);
|
|
48
|
+
},
|
|
49
|
+
options: __spreadProps(__spreadValues({}, options), {
|
|
50
|
+
jsonData: __spreadProps(__spreadValues({}, options.jsonData), {
|
|
51
|
+
authType: options.jsonData.sigV4AuthType,
|
|
52
|
+
profile: options.jsonData.sigV4Profile,
|
|
53
|
+
assumeRoleArn: options.jsonData.sigV4AssumeRoleArn,
|
|
54
|
+
externalId: options.jsonData.sigV4ExternalId,
|
|
55
|
+
defaultRegion: options.jsonData.sigV4Region,
|
|
56
|
+
endpoint: options.jsonData.sigV4Endpoint
|
|
57
|
+
}),
|
|
58
|
+
secureJsonFields: {
|
|
59
|
+
accessKey: (_a = options.secureJsonFields) == null ? void 0 : _a.sigV4AccessKey,
|
|
60
|
+
secretKey: (_b = options.secureJsonFields) == null ? void 0 : _b.sigV4SecretKey
|
|
61
|
+
},
|
|
62
|
+
secureJsonData: {
|
|
63
|
+
accessKey: (_c = options.secureJsonData) == null ? void 0 : _c.sigV4AccessKey,
|
|
64
|
+
secretKey: (_d = options.secureJsonData) == null ? void 0 : _d.sigV4SecretKey
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
};
|
|
68
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "gf-form" }, /* @__PURE__ */ React.createElement("h6", null, "SigV4 Auth Details")), /* @__PURE__ */ React.createElement(ConnectionConfig, __spreadProps(__spreadValues({}, connectionConfigProps), { skipHeader: true, skipEndpoint: true })));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export { SIGV4ConnectionConfig };
|
|
72
|
+
//# sourceMappingURL=SIGV4ConnectionConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SIGV4ConnectionConfig.js","sources":["../../src/SIGV4ConnectionConfig.tsx"],"sourcesContent":["import React from 'react';\nimport { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\nimport { ConnectionConfig, ConnectionConfigProps } from './ConnectionConfig';\n\nimport { AwsAuthDataSourceSecureJsonData, AwsAuthDataSourceJsonData } from './types';\n\nexport const SIGV4ConnectionConfig: React.FC<DataSourcePluginOptionsEditorProps<any, any>> = (\n props: DataSourcePluginOptionsEditorProps<any, any>\n) => {\n const { onOptionsChange, options } = props;\n\n // Map HttpSettings props to ConnectionConfigProps\n const connectionConfigProps: ConnectionConfigProps<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData> = {\n onOptionsChange: (awsDataSourceSettings) => {\n const dataSourceSettings: DataSourceSettings<any, any> = {\n ...options,\n jsonData: {\n ...options.jsonData,\n sigV4AuthType: awsDataSourceSettings.jsonData.authType,\n sigV4Profile: awsDataSourceSettings.jsonData.profile,\n sigV4AssumeRoleArn: awsDataSourceSettings.jsonData.assumeRoleArn,\n sigV4ExternalId: awsDataSourceSettings.jsonData.externalId,\n sigV4Region: awsDataSourceSettings.jsonData.defaultRegion,\n sigV4Endpoint: awsDataSourceSettings.jsonData.endpoint,\n },\n secureJsonFields: {\n sigV4AccessKey: awsDataSourceSettings.secureJsonFields?.accessKey,\n sigV4SecretKey: awsDataSourceSettings.secureJsonFields?.secretKey,\n },\n secureJsonData: {\n sigV4AccessKey: awsDataSourceSettings.secureJsonData?.accessKey,\n sigV4SecretKey: awsDataSourceSettings.secureJsonData?.secretKey,\n },\n };\n onOptionsChange(dataSourceSettings);\n },\n options: {\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: options.jsonData.sigV4AuthType,\n profile: options.jsonData.sigV4Profile,\n assumeRoleArn: options.jsonData.sigV4AssumeRoleArn,\n externalId: options.jsonData.sigV4ExternalId,\n defaultRegion: options.jsonData.sigV4Region,\n endpoint: options.jsonData.sigV4Endpoint,\n },\n secureJsonFields: {\n accessKey: options.secureJsonFields?.sigV4AccessKey,\n secretKey: options.secureJsonFields?.sigV4SecretKey,\n },\n secureJsonData: {\n accessKey: options.secureJsonData?.sigV4AccessKey,\n secretKey: options.secureJsonData?.sigV4SecretKey,\n },\n },\n };\n\n return (\n <>\n <div className=\"gf-form\">\n <h6>SigV4 Auth Details</h6>\n </div>\n <ConnectionConfig {...connectionConfigProps} skipHeader skipEndpoint></ConnectionConfig>\n </>\n );\n};\n"],"names":["_a","_b","_c","_d"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { ConnectionConfig } from './ConnectionConfig.js';
|
|
2
|
+
export { SIGV4ConnectionConfig } from './SIGV4ConnectionConfig.js';
|
|
3
|
+
export { ConfigSelect } from './sql/ConfigEditor/ConfigSelect.js';
|
|
4
|
+
export { InlineInput } from './sql/ConfigEditor/InlineInput.js';
|
|
5
|
+
export { ResourceSelector } from './sql/ResourceSelector.js';
|
|
6
|
+
export { QueryCodeEditor } from './sql/QueryEditor/QueryCodeEditor.js';
|
|
7
|
+
export { FormatSelect } from './sql/QueryEditor/FormatSelect.js';
|
|
8
|
+
export { FillValueOptions, FillValueSelect } from './sql/QueryEditor/FillValueSelect.js';
|
|
9
|
+
export { appendTemplateVariablesAsSuggestions, applySQLTemplateVariables, filterSQLQuery } from './sql/utils/utils.js';
|
|
10
|
+
export { AwsAuthType } from './types.js';
|
|
11
|
+
export { standardRegions } from './regions.js';
|
|
12
|
+
export { awsAuthProviderOptions } from './providers.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AwsAuthType } from './types.js';
|
|
2
|
+
|
|
3
|
+
const awsAuthProviderOptions = [
|
|
4
|
+
{
|
|
5
|
+
label: "Workspace IAM Role",
|
|
6
|
+
value: AwsAuthType.EC2IAMRole
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
label: "AWS SDK Default",
|
|
10
|
+
value: AwsAuthType.Default
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
label: "Access & secret key",
|
|
14
|
+
value: AwsAuthType.Keys
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
label: "Credentials file",
|
|
18
|
+
value: AwsAuthType.Credentials
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
export { awsAuthProviderOptions };
|
|
23
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sources":["../../src/providers.ts"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\nimport { AwsAuthType } from './types';\n\nexport const awsAuthProviderOptions: Array<SelectableValue<AwsAuthType>> = [\n {\n label: 'Workspace IAM Role',\n value: AwsAuthType.EC2IAMRole,\n },\n {\n label: 'AWS SDK Default',\n value: AwsAuthType.Default,\n },\n {\n label: 'Access & secret key',\n value: AwsAuthType.Keys,\n },\n {\n label: 'Credentials file',\n value: AwsAuthType.Credentials,\n },\n];\n"],"names":[],"mappings":";;AAGO,MAAM,sBAA8D,GAAA;AAAA,EACzE;AAAA,IACE,KAAO,EAAA,oBAAA;AAAA,IACP,OAAO,WAAY,CAAA,UAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,iBAAA;AAAA,IACP,OAAO,WAAY,CAAA,OAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,qBAAA;AAAA,IACP,OAAO,WAAY,CAAA,IAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,kBAAA;AAAA,IACP,OAAO,WAAY,CAAA,WAAA;AAAA,GACrB;AACF;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const standardRegions = [
|
|
2
|
+
"af-south-1",
|
|
3
|
+
"ap-east-1",
|
|
4
|
+
"ap-northeast-1",
|
|
5
|
+
"ap-northeast-2",
|
|
6
|
+
"ap-northeast-3",
|
|
7
|
+
"ap-south-1",
|
|
8
|
+
"ap-southeast-1",
|
|
9
|
+
"ap-southeast-2",
|
|
10
|
+
"ca-central-1",
|
|
11
|
+
"cn-north-1",
|
|
12
|
+
"cn-northwest-1",
|
|
13
|
+
"eu-central-1",
|
|
14
|
+
"eu-north-1",
|
|
15
|
+
"eu-west-1",
|
|
16
|
+
"eu-west-2",
|
|
17
|
+
"eu-west-3",
|
|
18
|
+
"me-south-1",
|
|
19
|
+
"sa-east-1",
|
|
20
|
+
"us-east-1",
|
|
21
|
+
"us-east-2",
|
|
22
|
+
"us-gov-east-1",
|
|
23
|
+
"us-gov-west-1",
|
|
24
|
+
"us-iso-east-1",
|
|
25
|
+
"us-isob-east-1",
|
|
26
|
+
"us-west-1",
|
|
27
|
+
"us-west-2"
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
export { standardRegions };
|
|
31
|
+
//# sourceMappingURL=regions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ca-central-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-north-1',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAA4B,GAAA;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AACF;;;;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ResourceSelector } from '../ResourceSelector.js';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
function ConfigSelect(props) {
|
|
21
|
+
var _a, _b, _c;
|
|
22
|
+
const { jsonData } = props.options;
|
|
23
|
+
const commonProps = {
|
|
24
|
+
title: jsonData.defaultRegion ? "" : "select a default region",
|
|
25
|
+
labelWidth: (_a = props.labelWidth) != null ? _a : 28,
|
|
26
|
+
className: "width-30"
|
|
27
|
+
};
|
|
28
|
+
const dependencies = [
|
|
29
|
+
props.options.jsonData.assumeRoleArn,
|
|
30
|
+
props.options.jsonData.authType,
|
|
31
|
+
props.options.jsonData.defaultRegion,
|
|
32
|
+
props.options.jsonData.endpoint,
|
|
33
|
+
props.options.jsonData.externalId,
|
|
34
|
+
props.options.jsonData.profile,
|
|
35
|
+
(_b = props.options.secureJsonData) == null ? void 0 : _b.accessKey,
|
|
36
|
+
(_c = props.options.secureJsonData) == null ? void 0 : _c.secretKey
|
|
37
|
+
].concat(props.dependencies);
|
|
38
|
+
return /* @__PURE__ */ React.createElement(
|
|
39
|
+
ResourceSelector,
|
|
40
|
+
__spreadValues({
|
|
41
|
+
label: props.label,
|
|
42
|
+
"data-testid": props["data-testid"],
|
|
43
|
+
onChange: props.onChange,
|
|
44
|
+
fetch: props.fetch,
|
|
45
|
+
value: props.value,
|
|
46
|
+
saveOptions: props.saveOptions,
|
|
47
|
+
dependencies,
|
|
48
|
+
hidden: props.hidden,
|
|
49
|
+
disabled: props.disabled || !jsonData.defaultRegion,
|
|
50
|
+
allowCustomValue: props.allowCustomValue,
|
|
51
|
+
autoFocus: props.autoFocus,
|
|
52
|
+
backspaceRemovesValue: props.backspaceRemovesValue,
|
|
53
|
+
invalid: props.invalid,
|
|
54
|
+
isClearable: props.isClearable,
|
|
55
|
+
isMulti: props.isMulti,
|
|
56
|
+
inputId: props.inputId,
|
|
57
|
+
showAllSelectedWhenOpen: props.showAllSelectedWhenOpen,
|
|
58
|
+
maxMenuHeight: props.maxMenuHeight,
|
|
59
|
+
minMenuHeight: props.minMenuHeight,
|
|
60
|
+
maxVisibleValues: props.maxVisibleValues,
|
|
61
|
+
menuPlacement: props.menuPlacement,
|
|
62
|
+
menuPosition: props.menuPosition,
|
|
63
|
+
noOptionsMessage: props.noOptionsMessage,
|
|
64
|
+
onBlur: props.onBlur,
|
|
65
|
+
onCreateOption: props.onCreateOption,
|
|
66
|
+
onInputChange: props.onInputChange,
|
|
67
|
+
placeholder: props.placeholder,
|
|
68
|
+
width: props.width,
|
|
69
|
+
isOptionDisabled: props.isOptionDisabled
|
|
70
|
+
}, commonProps)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { ConfigSelect };
|
|
75
|
+
//# sourceMappingURL=ConfigSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigSelect.js","sources":["../../../../src/sql/ConfigEditor/ConfigSelect.tsx"],"sourcesContent":["import React, { DependencyList } from 'react';\nimport { DataSourcePluginOptionsEditorProps, SelectableValue } from '@grafana/data';\nimport { InputActionMeta } from '@grafana/ui';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { ResourceSelector } from '../ResourceSelector';\n\nexport interface ConfigSelectProps\n extends DataSourcePluginOptionsEditorProps<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData> {\n value: string;\n fetch: () => Promise<Array<string | SelectableValue<string>>>;\n onChange: (e: SelectableValue<string> | null) => void;\n dependencies?: string[];\n label?: string;\n 'data-testid'?: string;\n hidden?: boolean;\n disabled?: boolean;\n allowCustomValue?: boolean;\n saveOptions: () => Promise<void>;\n autoFocus?: boolean;\n backspaceRemovesValue?: boolean;\n className?: string;\n invalid?: boolean;\n isClearable?: boolean;\n isMulti?: boolean;\n inputId?: string;\n showAllSelectedWhenOpen?: boolean;\n maxMenuHeight?: number;\n minMenuHeight?: number;\n maxVisibleValues?: number;\n menuPlacement?: 'auto' | 'bottom' | 'top';\n menuPosition?: 'fixed' | 'absolute';\n noOptionsMessage?: string;\n onBlur?: () => void;\n onCreateOption?: (value: string) => void;\n onInputChange?: (value: string, actionMeta: InputActionMeta) => void;\n placeholder?: string;\n width?: number;\n isOptionDisabled?: () => boolean;\n labelWidth?: number;\n}\n\nexport function ConfigSelect(props: ConfigSelectProps) {\n const { jsonData } = props.options;\n const commonProps = {\n title: jsonData.defaultRegion ? '' : 'select a default region',\n labelWidth: props.labelWidth ?? 28,\n className: 'width-30',\n };\n // Any change in the AWS connection details will affect selectors\n const dependencies: DependencyList = [\n props.options.jsonData.assumeRoleArn,\n props.options.jsonData.authType,\n props.options.jsonData.defaultRegion,\n props.options.jsonData.endpoint,\n props.options.jsonData.externalId,\n props.options.jsonData.profile,\n props.options.secureJsonData?.accessKey,\n props.options.secureJsonData?.secretKey,\n ].concat(props.dependencies);\n return (\n <ResourceSelector\n label={props.label}\n data-testid={props['data-testid']}\n onChange={props.onChange}\n fetch={props.fetch}\n value={props.value}\n saveOptions={props.saveOptions}\n dependencies={dependencies}\n hidden={props.hidden}\n disabled={props.disabled || !jsonData.defaultRegion}\n allowCustomValue={props.allowCustomValue}\n autoFocus={props.autoFocus}\n backspaceRemovesValue={props.backspaceRemovesValue}\n invalid={props.invalid}\n isClearable={props.isClearable}\n isMulti={props.isMulti}\n inputId={props.inputId}\n showAllSelectedWhenOpen={props.showAllSelectedWhenOpen}\n maxMenuHeight={props.maxMenuHeight}\n minMenuHeight={props.minMenuHeight}\n maxVisibleValues={props.maxVisibleValues}\n menuPlacement={props.menuPlacement}\n menuPosition={props.menuPosition}\n noOptionsMessage={props.noOptionsMessage}\n onBlur={props.onBlur}\n onCreateOption={props.onCreateOption}\n onInputChange={props.onInputChange}\n placeholder={props.placeholder}\n width={props.width}\n isOptionDisabled={props.isOptionDisabled}\n {...commonProps}\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAyCO,SAAS,aAAa,KAA0B,EAAA;AAzCvD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA0CE,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,KAAM,CAAA,OAAA,CAAA;AAC3B,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,KAAA,EAAO,QAAS,CAAA,aAAA,GAAgB,EAAK,GAAA,yBAAA;AAAA,IACrC,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,EAAA;AAAA,IAChC,SAAW,EAAA,UAAA;AAAA,GACb,CAAA;AAEA,EAAA,MAAM,YAA+B,GAAA;AAAA,IACnC,KAAA,CAAM,QAAQ,QAAS,CAAA,aAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,QAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,aAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,QAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,UAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,OAAA;AAAA,IACvB,CAAA,EAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,cAAA,KAAd,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAAA,IAC9B,CAAA,EAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,cAAA,KAAd,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAAA,GAChC,CAAE,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAC3B,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,eAAa,KAAM,CAAA,aAAA,CAAA;AAAA,MACnB,UAAU,KAAM,CAAA,QAAA;AAAA,MAChB,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,YAAA;AAAA,MACA,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,QAAU,EAAA,KAAA,CAAM,QAAY,IAAA,CAAC,QAAS,CAAA,aAAA;AAAA,MACtC,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,WAAW,KAAM,CAAA,SAAA;AAAA,MACjB,uBAAuB,KAAM,CAAA,qBAAA;AAAA,MAC7B,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,yBAAyB,KAAM,CAAA,uBAAA;AAAA,MAC/B,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,gBAAgB,KAAM,CAAA,cAAA;AAAA,MACtB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,kBAAkB,KAAM,CAAA,gBAAA;AAAA,KACpB,EAAA,WAAA,CAAA;AAAA,GACN,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { InlineField, Input } from '@grafana/ui';
|
|
3
|
+
|
|
4
|
+
function InlineInput(props) {
|
|
5
|
+
var _a;
|
|
6
|
+
return /* @__PURE__ */ React.createElement(
|
|
7
|
+
InlineField,
|
|
8
|
+
{
|
|
9
|
+
label: props.label,
|
|
10
|
+
labelWidth: (_a = props.labelWidth) != null ? _a : 28,
|
|
11
|
+
tooltip: props.tooltip,
|
|
12
|
+
hidden: props.hidden,
|
|
13
|
+
disabled: props.disabled
|
|
14
|
+
},
|
|
15
|
+
/* @__PURE__ */ React.createElement(
|
|
16
|
+
Input,
|
|
17
|
+
{
|
|
18
|
+
"data-testid": props["data-testid"],
|
|
19
|
+
className: "width-30",
|
|
20
|
+
value: props.value,
|
|
21
|
+
onChange: props.onChange,
|
|
22
|
+
placeholder: props.placeholder,
|
|
23
|
+
disabled: props.disabled
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { InlineInput };
|
|
30
|
+
//# sourceMappingURL=InlineInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineInput.js","sources":["../../../../src/sql/ConfigEditor/InlineInput.tsx"],"sourcesContent":["import React from 'react';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { InlineField, Input } from '@grafana/ui';\nimport { FormEvent } from 'react-dom/node_modules/@types/react';\n\nexport interface InlineInputProps extends DataSourcePluginOptionsEditorProps<{}, AwsAuthDataSourceSecureJsonData> {\n value: string;\n onChange: (e: FormEvent<HTMLInputElement>) => void;\n label?: string;\n tooltip?: string;\n placeholder?: string;\n 'data-testid'?: string;\n hidden?: boolean;\n disabled?: boolean;\n labelWidth?: number;\n}\n\nexport function InlineInput(props: InlineInputProps) {\n return (\n <InlineField\n label={props.label}\n labelWidth={props.labelWidth ?? 28}\n tooltip={props.tooltip}\n hidden={props.hidden}\n disabled={props.disabled}\n >\n <Input\n data-testid={props['data-testid']}\n className=\"width-30\"\n value={props.value}\n onChange={props.onChange}\n placeholder={props.placeholder}\n disabled={props.disabled}\n />\n </InlineField>\n );\n}\n"],"names":[],"mappings":";;;AAkBO,SAAS,YAAY,KAAyB,EAAA;AAlBrD,EAAA,IAAA,EAAA,CAAA;AAmBE,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,EAAA;AAAA,MAChC,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,UAAU,KAAM,CAAA,QAAA;AAAA,KAAA;AAAA,oBAEhB,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,eAAa,KAAM,CAAA,aAAA,CAAA;AAAA,QACnB,SAAU,EAAA,UAAA;AAAA,QACV,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,aAAa,KAAM,CAAA,WAAA;AAAA,QACnB,UAAU,KAAM,CAAA,QAAA;AAAA,OAAA;AAAA,KAClB;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { InlineField, Select, Input } from '@grafana/ui';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defProps = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
var FillValueOptions = /* @__PURE__ */ ((FillValueOptions2) => {
|
|
24
|
+
FillValueOptions2[FillValueOptions2["Previous"] = 0] = "Previous";
|
|
25
|
+
FillValueOptions2[FillValueOptions2["Null"] = 1] = "Null";
|
|
26
|
+
FillValueOptions2[FillValueOptions2["Value"] = 2] = "Value";
|
|
27
|
+
return FillValueOptions2;
|
|
28
|
+
})(FillValueOptions || {});
|
|
29
|
+
const SelectableFillValueOptions = [
|
|
30
|
+
{
|
|
31
|
+
label: "Previous Value",
|
|
32
|
+
value: 0 /* Previous */
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: "NULL",
|
|
36
|
+
value: 1 /* Null */
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: "Value",
|
|
40
|
+
value: 2 /* Value */
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
function FillValueSelect(props) {
|
|
44
|
+
var _a, _b, _c;
|
|
45
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(InlineField, { label: "Fill value", tooltip: "value to fill missing points" }, /* @__PURE__ */ React.createElement(
|
|
46
|
+
Select,
|
|
47
|
+
{
|
|
48
|
+
"aria-label": "Fill value",
|
|
49
|
+
options: SelectableFillValueOptions,
|
|
50
|
+
value: (_b = (_a = props.query.fillMode) == null ? void 0 : _a.mode) != null ? _b : 0 /* Previous */,
|
|
51
|
+
onChange: ({ value }) => {
|
|
52
|
+
var _a2;
|
|
53
|
+
props.onChange(__spreadProps(__spreadValues({}, props.query), {
|
|
54
|
+
fillMode: __spreadProps(__spreadValues({}, props.query.fillMode), { mode: value })
|
|
55
|
+
}));
|
|
56
|
+
(_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
|
|
57
|
+
},
|
|
58
|
+
className: "width-12",
|
|
59
|
+
menuShouldPortal: true
|
|
60
|
+
}
|
|
61
|
+
)), ((_c = props.query.fillMode) == null ? void 0 : _c.mode) === 2 /* Value */ && /* @__PURE__ */ React.createElement(InlineField, { label: "Value", labelWidth: 11 }, /* @__PURE__ */ React.createElement(
|
|
62
|
+
Input,
|
|
63
|
+
{
|
|
64
|
+
type: "number",
|
|
65
|
+
"aria-label": "Value",
|
|
66
|
+
value: props.query.fillMode.value,
|
|
67
|
+
onChange: ({ currentTarget }) => props.onChange(__spreadProps(__spreadValues({}, props.query), {
|
|
68
|
+
fillMode: {
|
|
69
|
+
mode: 2 /* Value */,
|
|
70
|
+
value: currentTarget.valueAsNumber
|
|
71
|
+
}
|
|
72
|
+
})),
|
|
73
|
+
onBlur: () => {
|
|
74
|
+
var _a2;
|
|
75
|
+
return (_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
)));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { FillValueOptions, FillValueSelect, SelectableFillValueOptions };
|
|
82
|
+
//# sourceMappingURL=FillValueSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FillValueSelect.js","sources":["../../../../src/sql/QueryEditor/FillValueSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { InlineField, Input, Select } from '@grafana/ui';\n\nexport enum FillValueOptions {\n Previous,\n Null,\n Value,\n}\n\nexport const SelectableFillValueOptions: Array<SelectableValue<FillValueOptions>> = [\n {\n label: 'Previous Value',\n value: FillValueOptions.Previous,\n },\n {\n label: 'NULL',\n value: FillValueOptions.Null,\n },\n {\n label: 'Value',\n value: FillValueOptions.Value,\n },\n];\n\nexport type FillValueSelectProps<TQuery extends DataQuery> = {\n query: TQuery;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FillValueSelect<TQuery extends DataQuery & Record<string, any>>(props: FillValueSelectProps<TQuery>) {\n return (\n <>\n <InlineField label=\"Fill value\" tooltip=\"value to fill missing points\">\n <Select\n aria-label=\"Fill value\"\n options={SelectableFillValueOptions}\n value={props.query.fillMode?.mode ?? FillValueOptions.Previous}\n onChange={({ value }) => {\n props.onChange({\n ...props.query,\n // Keep the fillMode.value in case FillValueOptions.Value mode is selected back\n fillMode: { ...props.query.fillMode, mode: value },\n });\n props.onRunQuery?.();\n }}\n className=\"width-12\"\n menuShouldPortal={true}\n />\n </InlineField>\n {props.query.fillMode?.mode === FillValueOptions.Value && (\n <InlineField label=\"Value\" labelWidth={11}>\n <Input\n type=\"number\"\n aria-label=\"Value\"\n value={props.query.fillMode.value}\n onChange={({ currentTarget }: React.FormEvent<HTMLInputElement>) =>\n props.onChange({\n ...props.query,\n fillMode: {\n mode: FillValueOptions.Value,\n value: currentTarget.valueAsNumber,\n },\n })\n }\n onBlur={() => props.onRunQuery?.()}\n />\n </InlineField>\n )}\n </>\n );\n}\n"],"names":["FillValueOptions","_a"],"mappings":"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"}
|