@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.
Files changed (65) hide show
  1. package/dist/esm/ConnectionConfig.js +208 -0
  2. package/dist/esm/ConnectionConfig.js.map +1 -0
  3. package/dist/esm/SIGV4ConnectionConfig.js +72 -0
  4. package/dist/esm/SIGV4ConnectionConfig.js.map +1 -0
  5. package/dist/esm/index.js +13 -0
  6. package/dist/esm/index.js.map +1 -0
  7. package/dist/esm/providers.js +23 -0
  8. package/dist/esm/providers.js.map +1 -0
  9. package/dist/esm/regions.js +31 -0
  10. package/dist/esm/regions.js.map +1 -0
  11. package/dist/esm/sql/ConfigEditor/ConfigSelect.js +75 -0
  12. package/dist/esm/sql/ConfigEditor/ConfigSelect.js.map +1 -0
  13. package/dist/esm/sql/ConfigEditor/InlineInput.js +30 -0
  14. package/dist/esm/sql/ConfigEditor/InlineInput.js.map +1 -0
  15. package/dist/esm/sql/QueryEditor/FillValueSelect.js +82 -0
  16. package/dist/esm/sql/QueryEditor/FillValueSelect.js.map +1 -0
  17. package/dist/esm/sql/QueryEditor/FormatSelect.js +45 -0
  18. package/dist/esm/sql/QueryEditor/FormatSelect.js.map +1 -0
  19. package/dist/esm/sql/QueryEditor/QueryCodeEditor.js +53 -0
  20. package/dist/esm/sql/QueryEditor/QueryCodeEditor.js.map +1 -0
  21. package/dist/esm/sql/ResourceSelector.js +116 -0
  22. package/dist/esm/sql/ResourceSelector.js.map +1 -0
  23. package/dist/esm/sql/types.js +4 -0
  24. package/dist/esm/sql/types.js.map +1 -0
  25. package/dist/esm/sql/utils/utils.js +62 -0
  26. package/dist/esm/sql/utils/utils.js.map +1 -0
  27. package/dist/esm/types.js +11 -0
  28. package/dist/esm/types.js.map +1 -0
  29. package/dist/index.d.ts +167 -10
  30. package/dist/index.js +780 -0
  31. package/dist/index.js.map +1 -0
  32. package/package.json +19 -29
  33. package/dist/ConnectionConfig.d.ts +0 -12
  34. package/dist/ConnectionConfig.test.d.ts +0 -1
  35. package/dist/SIGV4ConnectionConfig.d.ts +0 -3
  36. package/dist/SIGV4ConnectionConfig.test.d.ts +0 -1
  37. package/dist/index.development.js +0 -409
  38. package/dist/index.development.js.map +0 -1
  39. package/dist/index.production.js +0 -17
  40. package/dist/index.production.js.map +0 -1
  41. package/dist/providers.d.ts +0 -3
  42. package/dist/regions.d.ts +0 -1
  43. package/dist/sql/ConfigEditor/ConfigSelect.d.ts +0 -36
  44. package/dist/sql/ConfigEditor/ConfigSelect.test.d.ts +0 -1
  45. package/dist/sql/ConfigEditor/InlineInput.d.ts +0 -14
  46. package/dist/sql/ConfigEditor/InlineInput.test.d.ts +0 -1
  47. package/dist/sql/ConfigEditor/__mocks__/datasource.d.ts +0 -3
  48. package/dist/sql/ConfigEditor/index.d.ts +0 -2
  49. package/dist/sql/QueryEditor/FillValueSelect.d.ts +0 -13
  50. package/dist/sql/QueryEditor/FillValueSelect.test.d.ts +0 -1
  51. package/dist/sql/QueryEditor/FormatSelect.d.ts +0 -8
  52. package/dist/sql/QueryEditor/FormatSelect.test.d.ts +0 -1
  53. package/dist/sql/QueryEditor/QueryCodeEditor.d.ts +0 -20
  54. package/dist/sql/QueryEditor/QueryCodeEditor.test.d.ts +0 -1
  55. package/dist/sql/QueryEditor/__mocks__/query.d.ts +0 -6
  56. package/dist/sql/QueryEditor/index.d.ts +0 -3
  57. package/dist/sql/ResourceSelector.d.ts +0 -18
  58. package/dist/sql/ResourceSelector.test.d.ts +0 -1
  59. package/dist/sql/types.d.ts +0 -11
  60. package/dist/sql/utils/index.d.ts +0 -1
  61. package/dist/sql/utils/utils.d.ts +0 -9
  62. package/dist/sql/utils/utils.test.d.ts +0 -1
  63. package/dist/tests/setupTests.d.ts +0 -1
  64. package/dist/types.d.ts +0 -25
  65. 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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"}