@grafana/aws-sdk 0.0.46 → 0.0.48
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 +15 -14
- package/dist/esm/ConnectionConfig.js.map +1 -1
- package/dist/esm/providers.js +4 -0
- package/dist/esm/providers.js.map +1 -1
- package/dist/esm/sql/utils/utils.js +1 -1
- package/dist/esm/sql/utils/utils.js.map +1 -1
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +21 -15
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState, useMemo, useEffect } from 'react';
|
|
2
2
|
import { FieldSet, InlineField, Select, Input, ButtonGroup, ToolbarButton } from '@grafana/ui';
|
|
3
3
|
import { onUpdateDatasourceJsonDataOptionSelect, onUpdateDatasourceJsonDataOption, onUpdateDatasourceResetOption, onUpdateDatasourceSecureJsonDataOption } from '@grafana/data';
|
|
4
|
+
import { config } from '@grafana/runtime';
|
|
4
5
|
import { standardRegions } from './regions.js';
|
|
5
6
|
import { AwsAuthType } from './types.js';
|
|
6
7
|
import { awsAuthProviderOptions } from './providers.js';
|
|
@@ -26,8 +27,11 @@ var __spreadValues = (a, b) => {
|
|
|
26
27
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
28
|
const DEFAULT_LABEL_WIDTH = 28;
|
|
28
29
|
const toOption = (value) => ({ value, label: value });
|
|
30
|
+
const isAwsAuthType = (value) => {
|
|
31
|
+
return typeof value === "string" && awsAuthProviderOptions.some((opt) => opt.value === value);
|
|
32
|
+
};
|
|
29
33
|
const ConnectionConfig = (props) => {
|
|
30
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
34
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
31
35
|
const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));
|
|
32
36
|
const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false } = props;
|
|
33
37
|
const { labelWidth = DEFAULT_LABEL_WIDTH, options } = props;
|
|
@@ -35,15 +39,12 @@ const ConnectionConfig = (props) => {
|
|
|
35
39
|
if (profile === void 0) {
|
|
36
40
|
profile = options.database;
|
|
37
41
|
}
|
|
38
|
-
const
|
|
42
|
+
const tempCredsFeatureEnabled = config.featureToggles.awsDatasourcesTempCredentials;
|
|
43
|
+
const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled;
|
|
39
44
|
const awsAllowedAuthProviders = useMemo(
|
|
40
|
-
() =>
|
|
41
|
-
|
|
42
|
-
return (_a2 = settings.awsAllowedAuthProviders) != null ? _a2 : [AwsAuthType.Default, AwsAuthType.Keys, AwsAuthType.Credentials];
|
|
43
|
-
},
|
|
44
|
-
[settings.awsAllowedAuthProviders]
|
|
45
|
+
() => config.awsAllowedAuthProviders.filter((provider) => provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true).filter(isAwsAuthType),
|
|
46
|
+
[tempCredsFeatureEnabled]
|
|
45
47
|
);
|
|
46
|
-
const awsAssumeRoleEnabled = (_a = settings.awsAssumeRoleEnabled) != null ? _a : true;
|
|
47
48
|
const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);
|
|
48
49
|
useEffect(() => {
|
|
49
50
|
if (!currentProvider && awsAllowedAuthProviders.length) {
|
|
@@ -98,7 +99,7 @@ const ConnectionConfig = (props) => {
|
|
|
98
99
|
onChange: onUpdateDatasourceJsonDataOption(props, "profile")
|
|
99
100
|
}
|
|
100
101
|
)
|
|
101
|
-
), options.jsonData.authType === "keys" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(InlineField, { label: "Access Key ID", labelWidth }, ((
|
|
102
|
+
), options.jsonData.authType === "keys" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(InlineField, { label: "Access Key ID", labelWidth }, ((_a = props.options.secureJsonFields) == null ? void 0 : _a.accessKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React.createElement(
|
|
102
103
|
ToolbarButton,
|
|
103
104
|
{
|
|
104
105
|
icon: "edit",
|
|
@@ -111,10 +112,10 @@ const ConnectionConfig = (props) => {
|
|
|
111
112
|
{
|
|
112
113
|
"aria-label": "Access Key ID",
|
|
113
114
|
className: "width-30",
|
|
114
|
-
value: (
|
|
115
|
+
value: (_c = (_b = options.secureJsonData) == null ? void 0 : _b.accessKey) != null ? _c : "",
|
|
115
116
|
onChange: onUpdateDatasourceSecureJsonDataOption(props, "accessKey")
|
|
116
117
|
}
|
|
117
|
-
)), /* @__PURE__ */ React.createElement(InlineField, { label: "Secret Access Key", labelWidth }, ((
|
|
118
|
+
)), /* @__PURE__ */ React.createElement(InlineField, { label: "Secret Access Key", labelWidth }, ((_d = props.options.secureJsonFields) == null ? void 0 : _d.secretKey) ? /* @__PURE__ */ React.createElement(ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React.createElement(Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React.createElement(
|
|
118
119
|
ToolbarButton,
|
|
119
120
|
{
|
|
120
121
|
icon: "edit",
|
|
@@ -127,7 +128,7 @@ const ConnectionConfig = (props) => {
|
|
|
127
128
|
{
|
|
128
129
|
"aria-label": "Secret Access Key",
|
|
129
130
|
className: "width-30",
|
|
130
|
-
value: (
|
|
131
|
+
value: (_f = (_e = options.secureJsonData) == null ? void 0 : _e.secretKey) != null ? _f : "",
|
|
131
132
|
onChange: onUpdateDatasourceSecureJsonDataOption(props, "secretKey")
|
|
132
133
|
}
|
|
133
134
|
))), awsAssumeRoleEnabled && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
@@ -147,7 +148,7 @@ const ConnectionConfig = (props) => {
|
|
|
147
148
|
onChange: onUpdateDatasourceJsonDataOption(props, "assumeRoleArn")
|
|
148
149
|
}
|
|
149
150
|
)
|
|
150
|
-
), /* @__PURE__ */ React.createElement(
|
|
151
|
+
), options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React.createElement(
|
|
151
152
|
InlineField,
|
|
152
153
|
{
|
|
153
154
|
label: "External ID",
|
|
@@ -176,7 +177,7 @@ const ConnectionConfig = (props) => {
|
|
|
176
177
|
{
|
|
177
178
|
"aria-label": "Endpoint",
|
|
178
179
|
className: "width-30",
|
|
179
|
-
placeholder: (
|
|
180
|
+
placeholder: (_g = props.defaultEndpoint) != null ? _g : "https://{service}.{region}.amazonaws.com",
|
|
180
181
|
value: options.jsonData.endpoint || "",
|
|
181
182
|
onChange: onUpdateDatasourceJsonDataOption(props, "endpoint")
|
|
182
183
|
}
|
|
@@ -1 +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\nexport const DEFAULT_LABEL_WIDTH = 28;\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 = DEFAULT_LABEL_WIDTH, 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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"}
|
|
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';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from './regions';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData, AwsAuthType } from './types';\nimport { awsAuthProviderOptions } from './providers';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst toOption = (value: string) => ({ value, label: value });\nconst isAwsAuthType = (value: any): value is AwsAuthType => {\n return typeof value === 'string' && awsAuthProviderOptions.some((opt) => opt.value === 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 = DEFAULT_LABEL_WIDTH, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled = config.featureToggles.awsDatasourcesTempCredentials;\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\n );\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 {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\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 )}\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":["regions"],"mappings":"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"}
|
package/dist/esm/providers.js
CHANGED
|
@@ -1 +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;;;;"}
|
|
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: 'Grafana Assume Role',\n value: AwsAuthType.GrafanaAssumeRole,\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,qBAAA;AAAA,IACP,OAAO,WAAY,CAAA,iBAAA;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;;;;"}
|
|
@@ -29,7 +29,7 @@ function applySQLTemplateVariables(query, scopedVars, getTemplateSrv) {
|
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
function interpolateVariable(value) {
|
|
32
|
-
if (typeof value === "string") {
|
|
32
|
+
if (typeof value === "string" || typeof value === "number") {
|
|
33
33
|
return value;
|
|
34
34
|
}
|
|
35
35
|
const quotedValues = value.map((v) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/sql/utils/utils.ts"],"sourcesContent":["import { ScopedVars, VariableModel } from '@grafana/data';\nimport { SQLQuery } from '../types';\nimport { CodeEditorSuggestionItem, CodeEditorSuggestionItemKind } from '@grafana/ui';\n\n/**\n * Do not execute queries that do not exist yet\n */\nexport function filterSQLQuery(query: SQLQuery): boolean {\n return !!query.rawSQL;\n}\n\nexport function applySQLTemplateVariables(\n query: SQLQuery,\n scopedVars: ScopedVars,\n getTemplateSrv: () => any\n): SQLQuery {\n const templateSrv = getTemplateSrv();\n return {\n ...query,\n rawSQL: templateSrv.replace(query.rawSQL, scopedVars, interpolateVariable),\n };\n}\n\nfunction interpolateVariable(value: string | string[]) {\n if (typeof value === 'string') {\n return value;\n }\n\n const quotedValues = value.map((v) => {\n return quoteLiteral(v);\n });\n return quotedValues.join(',');\n}\n\nfunction quoteLiteral(value: any) {\n return \"'\" + String(value).replace(/'/g, \"''\") + \"'\";\n}\n\nexport const appendTemplateVariablesAsSuggestions = (getTemplateSrv: () => any, sugs: CodeEditorSuggestionItem[]) => {\n const templateSrv = getTemplateSrv();\n const templateSugs: CodeEditorSuggestionItem[] = [];\n templateSrv.getVariables().forEach((variable: VariableModel) => {\n const label = '$' + variable.name;\n let val = templateSrv.replace(label);\n if (val === label) {\n val = '';\n }\n templateSugs.push({\n label,\n kind: CodeEditorSuggestionItemKind.Text,\n detail: `(Template Variable) ${val}`,\n });\n });\n\n return sugs.concat(templateSugs);\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOO,SAAS,eAAe,KAA0B,EAAA;AACvD,EAAO,OAAA,CAAC,CAAC,KAAM,CAAA,MAAA,CAAA;AACjB,CAAA;AAEgB,SAAA,yBAAA,CACd,KACA,EAAA,UAAA,EACA,cACU,EAAA;AACV,EAAA,MAAM,cAAc,cAAe,EAAA,CAAA;AACnC,EAAA,OAAO,iCACF,KADE,CAAA,EAAA;AAAA,IAEL,QAAQ,WAAY,CAAA,OAAA,CAAQ,KAAM,CAAA,MAAA,EAAQ,YAAY,mBAAmB,CAAA;AAAA,GAC3E,CAAA,CAAA;AACF,CAAA;AAEA,SAAS,oBAAoB,KAA0B,EAAA;AACrD,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/sql/utils/utils.ts"],"sourcesContent":["import { ScopedVars, VariableModel } from '@grafana/data';\nimport { SQLQuery } from '../types';\nimport { CodeEditorSuggestionItem, CodeEditorSuggestionItemKind } from '@grafana/ui';\n\n/**\n * Do not execute queries that do not exist yet\n */\nexport function filterSQLQuery(query: SQLQuery): boolean {\n return !!query.rawSQL;\n}\n\nexport function applySQLTemplateVariables(\n query: SQLQuery,\n scopedVars: ScopedVars,\n getTemplateSrv: () => any\n): SQLQuery {\n const templateSrv = getTemplateSrv();\n return {\n ...query,\n rawSQL: templateSrv.replace(query.rawSQL, scopedVars, interpolateVariable),\n };\n}\n\nfunction interpolateVariable(value: string | string[]) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n const quotedValues = value.map((v) => {\n return quoteLiteral(v);\n });\n return quotedValues.join(',');\n}\n\nfunction quoteLiteral(value: any) {\n return \"'\" + String(value).replace(/'/g, \"''\") + \"'\";\n}\n\nexport const appendTemplateVariablesAsSuggestions = (getTemplateSrv: () => any, sugs: CodeEditorSuggestionItem[]) => {\n const templateSrv = getTemplateSrv();\n const templateSugs: CodeEditorSuggestionItem[] = [];\n templateSrv.getVariables().forEach((variable: VariableModel) => {\n const label = '$' + variable.name;\n let val = templateSrv.replace(label);\n if (val === label) {\n val = '';\n }\n templateSugs.push({\n label,\n kind: CodeEditorSuggestionItemKind.Text,\n detail: `(Template Variable) ${val}`,\n });\n });\n\n return sugs.concat(templateSugs);\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOO,SAAS,eAAe,KAA0B,EAAA;AACvD,EAAO,OAAA,CAAC,CAAC,KAAM,CAAA,MAAA,CAAA;AACjB,CAAA;AAEgB,SAAA,yBAAA,CACd,KACA,EAAA,UAAA,EACA,cACU,EAAA;AACV,EAAA,MAAM,cAAc,cAAe,EAAA,CAAA;AACnC,EAAA,OAAO,iCACF,KADE,CAAA,EAAA;AAAA,IAEL,QAAQ,WAAY,CAAA,OAAA,CAAQ,KAAM,CAAA,MAAA,EAAQ,YAAY,mBAAmB,CAAA;AAAA,GAC3E,CAAA,CAAA;AACF,CAAA;AAEA,SAAS,oBAAoB,KAA0B,EAAA;AACrD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,OAAO,UAAU,QAAU,EAAA;AAC1D,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,YAAe,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAM,KAAA;AACpC,IAAA,OAAO,aAAa,CAAC,CAAA,CAAA;AAAA,GACtB,CAAA,CAAA;AACD,EAAO,OAAA,YAAA,CAAa,KAAK,GAAG,CAAA,CAAA;AAC9B,CAAA;AAEA,SAAS,aAAa,KAAY,EAAA;AAChC,EAAA,OAAO,MAAM,MAAO,CAAA,KAAK,EAAE,OAAQ,CAAA,IAAA,EAAM,IAAI,CAAI,GAAA,GAAA,CAAA;AACnD,CAAA;AAEa,MAAA,oCAAA,GAAuC,CAAC,cAAA,EAA2B,IAAqC,KAAA;AACnH,EAAA,MAAM,cAAc,cAAe,EAAA,CAAA;AACnC,EAAA,MAAM,eAA2C,EAAC,CAAA;AAClD,EAAA,WAAA,CAAY,YAAa,EAAA,CAAE,OAAQ,CAAA,CAAC,QAA4B,KAAA;AAC9D,IAAM,MAAA,KAAA,GAAQ,MAAM,QAAS,CAAA,IAAA,CAAA;AAC7B,IAAI,IAAA,GAAA,GAAM,WAAY,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACnC,IAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,MAAM,GAAA,GAAA,EAAA,CAAA;AAAA,KACR;AACA,IAAA,YAAA,CAAa,IAAK,CAAA;AAAA,MAChB,KAAA;AAAA,MACA,MAAM,4BAA6B,CAAA,IAAA;AAAA,MACnC,QAAQ,CAAuB,oBAAA,EAAA,GAAA,CAAA,CAAA;AAAA,KAChC,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAO,OAAA,IAAA,CAAK,OAAO,YAAY,CAAA,CAAA;AACjC;;;;"}
|
package/dist/esm/types.js
CHANGED
|
@@ -4,6 +4,7 @@ var AwsAuthType = /* @__PURE__ */ ((AwsAuthType2) => {
|
|
|
4
4
|
AwsAuthType2["Default"] = "default";
|
|
5
5
|
AwsAuthType2["EC2IAMRole"] = "ec2_iam_role";
|
|
6
6
|
AwsAuthType2["ARN"] = "arn";
|
|
7
|
+
AwsAuthType2["GrafanaAssumeRole"] = "grafana_assume_role";
|
|
7
8
|
return AwsAuthType2;
|
|
8
9
|
})(AwsAuthType || {});
|
|
9
10
|
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import { DataSourceJsonData, DataSourceSettings } from '@grafana/data';\n\nexport enum AwsAuthType {\n Keys = 'keys',\n Credentials = 'credentials',\n Default = 'default', // was 'arn',\n EC2IAMRole = 'ec2_iam_role',\n /**\n * @deprecated use default\n */\n ARN = 'arn',\n}\n\nexport interface AwsAuthDataSourceJsonData extends DataSourceJsonData {\n authType?: AwsAuthType;\n assumeRoleArn?: string;\n externalId?: string;\n profile?: string; // Credentials profile name, as specified in ~/.aws/credentials\n defaultRegion?: string; // region if it is not defined by your credentials file\n endpoint?: string;\n}\n\nexport interface AwsAuthDataSourceSecureJsonData {\n accessKey?: string;\n secretKey?: string;\n sessionToken?: string;\n}\n\nexport type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;\n"],"names":["AwsAuthType"],"mappings":"AAEY,IAAA,WAAA,qBAAAA,YAAL,KAAA;AACL,EAAAA,aAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,aAAA,aAAc,CAAA,GAAA,aAAA,CAAA;AACd,EAAAA,aAAA,SAAU,CAAA,GAAA,SAAA,CAAA;AACV,EAAAA,aAAA,YAAa,CAAA,GAAA,cAAA,CAAA;AAIb,EAAAA,aAAA,KAAM,CAAA,GAAA,KAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import { DataSourceJsonData, DataSourceSettings } from '@grafana/data';\n\nexport enum AwsAuthType {\n Keys = 'keys',\n Credentials = 'credentials',\n Default = 'default', // was 'arn',\n EC2IAMRole = 'ec2_iam_role',\n /**\n * @deprecated use default\n */\n ARN = 'arn',\n GrafanaAssumeRole = 'grafana_assume_role'\n}\n\nexport interface AwsAuthDataSourceJsonData extends DataSourceJsonData {\n authType?: AwsAuthType;\n assumeRoleArn?: string;\n externalId?: string;\n profile?: string; // Credentials profile name, as specified in ~/.aws/credentials\n defaultRegion?: string; // region if it is not defined by your credentials file\n endpoint?: string;\n}\n\nexport interface AwsAuthDataSourceSecureJsonData {\n accessKey?: string;\n secretKey?: string;\n sessionToken?: string;\n}\n\nexport type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;\n"],"names":["AwsAuthType"],"mappings":"AAEY,IAAA,WAAA,qBAAAA,YAAL,KAAA;AACL,EAAAA,aAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,aAAA,aAAc,CAAA,GAAA,aAAA,CAAA;AACd,EAAAA,aAAA,SAAU,CAAA,GAAA,SAAA,CAAA;AACV,EAAAA,aAAA,YAAa,CAAA,GAAA,cAAA,CAAA;AAIb,EAAAA,aAAA,KAAM,CAAA,GAAA,KAAA,CAAA;AACN,EAAAA,aAAA,mBAAoB,CAAA,GAAA,qBAAA,CAAA;AATV,EAAAA,OAAAA,YAAAA,CAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;;;;"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var ui = require('@grafana/ui');
|
|
7
7
|
var data = require('@grafana/data');
|
|
8
|
+
var runtime = require('@grafana/runtime');
|
|
8
9
|
var lodash = require('lodash');
|
|
9
10
|
var experimental = require('@grafana/experimental');
|
|
10
11
|
var asyncQueryData = require('@grafana/async-query-data');
|
|
@@ -48,6 +49,7 @@ var AwsAuthType = /* @__PURE__ */ ((AwsAuthType2) => {
|
|
|
48
49
|
AwsAuthType2["Default"] = "default";
|
|
49
50
|
AwsAuthType2["EC2IAMRole"] = "ec2_iam_role";
|
|
50
51
|
AwsAuthType2["ARN"] = "arn";
|
|
52
|
+
AwsAuthType2["GrafanaAssumeRole"] = "grafana_assume_role";
|
|
51
53
|
return AwsAuthType2;
|
|
52
54
|
})(AwsAuthType || {});
|
|
53
55
|
|
|
@@ -56,6 +58,10 @@ const awsAuthProviderOptions = [
|
|
|
56
58
|
label: "Workspace IAM Role",
|
|
57
59
|
value: AwsAuthType.EC2IAMRole
|
|
58
60
|
},
|
|
61
|
+
{
|
|
62
|
+
label: "Grafana Assume Role",
|
|
63
|
+
value: AwsAuthType.GrafanaAssumeRole
|
|
64
|
+
},
|
|
59
65
|
{
|
|
60
66
|
label: "AWS SDK Default",
|
|
61
67
|
value: AwsAuthType.Default
|
|
@@ -91,8 +97,11 @@ var __spreadValues$7 = (a, b) => {
|
|
|
91
97
|
var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
|
|
92
98
|
const DEFAULT_LABEL_WIDTH = 28;
|
|
93
99
|
const toOption = (value) => ({ value, label: value });
|
|
100
|
+
const isAwsAuthType = (value) => {
|
|
101
|
+
return typeof value === "string" && awsAuthProviderOptions.some((opt) => opt.value === value);
|
|
102
|
+
};
|
|
94
103
|
const ConnectionConfig = (props) => {
|
|
95
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
104
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
96
105
|
const [regions, setRegions] = React.useState((props.standardRegions || standardRegions).map(toOption));
|
|
97
106
|
const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false } = props;
|
|
98
107
|
const { labelWidth = DEFAULT_LABEL_WIDTH, options } = props;
|
|
@@ -100,15 +109,12 @@ const ConnectionConfig = (props) => {
|
|
|
100
109
|
if (profile === void 0) {
|
|
101
110
|
profile = options.database;
|
|
102
111
|
}
|
|
103
|
-
const
|
|
112
|
+
const tempCredsFeatureEnabled = runtime.config.featureToggles.awsDatasourcesTempCredentials;
|
|
113
|
+
const awsAssumeRoleEnabled = runtime.config.awsAssumeRoleEnabled;
|
|
104
114
|
const awsAllowedAuthProviders = React.useMemo(
|
|
105
|
-
() =>
|
|
106
|
-
|
|
107
|
-
return (_a2 = settings.awsAllowedAuthProviders) != null ? _a2 : [AwsAuthType.Default, AwsAuthType.Keys, AwsAuthType.Credentials];
|
|
108
|
-
},
|
|
109
|
-
[settings.awsAllowedAuthProviders]
|
|
115
|
+
() => runtime.config.awsAllowedAuthProviders.filter((provider) => provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true).filter(isAwsAuthType),
|
|
116
|
+
[tempCredsFeatureEnabled]
|
|
110
117
|
);
|
|
111
|
-
const awsAssumeRoleEnabled = (_a = settings.awsAssumeRoleEnabled) != null ? _a : true;
|
|
112
118
|
const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);
|
|
113
119
|
React.useEffect(() => {
|
|
114
120
|
if (!currentProvider && awsAllowedAuthProviders.length) {
|
|
@@ -163,7 +169,7 @@ const ConnectionConfig = (props) => {
|
|
|
163
169
|
onChange: data.onUpdateDatasourceJsonDataOption(props, "profile")
|
|
164
170
|
}
|
|
165
171
|
)
|
|
166
|
-
), options.jsonData.authType === "keys" && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Access Key ID", labelWidth }, ((
|
|
172
|
+
), options.jsonData.authType === "keys" && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Access Key ID", labelWidth }, ((_a = props.options.secureJsonFields) == null ? void 0 : _a.accessKey) ? /* @__PURE__ */ React__default["default"].createElement(ui.ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React__default["default"].createElement(ui.Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React__default["default"].createElement(
|
|
167
173
|
ui.ToolbarButton,
|
|
168
174
|
{
|
|
169
175
|
icon: "edit",
|
|
@@ -176,10 +182,10 @@ const ConnectionConfig = (props) => {
|
|
|
176
182
|
{
|
|
177
183
|
"aria-label": "Access Key ID",
|
|
178
184
|
className: "width-30",
|
|
179
|
-
value: (
|
|
185
|
+
value: (_c = (_b = options.secureJsonData) == null ? void 0 : _b.accessKey) != null ? _c : "",
|
|
180
186
|
onChange: data.onUpdateDatasourceSecureJsonDataOption(props, "accessKey")
|
|
181
187
|
}
|
|
182
|
-
)), /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Secret Access Key", labelWidth }, ((
|
|
188
|
+
)), /* @__PURE__ */ React__default["default"].createElement(ui.InlineField, { label: "Secret Access Key", labelWidth }, ((_d = props.options.secureJsonFields) == null ? void 0 : _d.secretKey) ? /* @__PURE__ */ React__default["default"].createElement(ui.ButtonGroup, { className: "width-30" }, /* @__PURE__ */ React__default["default"].createElement(ui.Input, { disabled: true, placeholder: "Configured" }), /* @__PURE__ */ React__default["default"].createElement(
|
|
183
189
|
ui.ToolbarButton,
|
|
184
190
|
{
|
|
185
191
|
icon: "edit",
|
|
@@ -192,7 +198,7 @@ const ConnectionConfig = (props) => {
|
|
|
192
198
|
{
|
|
193
199
|
"aria-label": "Secret Access Key",
|
|
194
200
|
className: "width-30",
|
|
195
|
-
value: (
|
|
201
|
+
value: (_f = (_e = options.secureJsonData) == null ? void 0 : _e.secretKey) != null ? _f : "",
|
|
196
202
|
onChange: data.onUpdateDatasourceSecureJsonDataOption(props, "secretKey")
|
|
197
203
|
}
|
|
198
204
|
))), awsAssumeRoleEnabled && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(
|
|
@@ -212,7 +218,7 @@ const ConnectionConfig = (props) => {
|
|
|
212
218
|
onChange: data.onUpdateDatasourceJsonDataOption(props, "assumeRoleArn")
|
|
213
219
|
}
|
|
214
220
|
)
|
|
215
|
-
), /* @__PURE__ */ React__default["default"].createElement(
|
|
221
|
+
), options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React__default["default"].createElement(
|
|
216
222
|
ui.InlineField,
|
|
217
223
|
{
|
|
218
224
|
label: "External ID",
|
|
@@ -241,7 +247,7 @@ const ConnectionConfig = (props) => {
|
|
|
241
247
|
{
|
|
242
248
|
"aria-label": "Endpoint",
|
|
243
249
|
className: "width-30",
|
|
244
|
-
placeholder: (
|
|
250
|
+
placeholder: (_g = props.defaultEndpoint) != null ? _g : "https://{service}.{region}.amazonaws.com",
|
|
245
251
|
value: options.jsonData.endpoint || "",
|
|
246
252
|
onChange: data.onUpdateDatasourceJsonDataOption(props, "endpoint")
|
|
247
253
|
}
|
|
@@ -772,7 +778,7 @@ function applySQLTemplateVariables(query, scopedVars, getTemplateSrv) {
|
|
|
772
778
|
});
|
|
773
779
|
}
|
|
774
780
|
function interpolateVariable(value) {
|
|
775
|
-
if (typeof value === "string") {
|
|
781
|
+
if (typeof value === "string" || typeof value === "number") {
|
|
776
782
|
return value;
|
|
777
783
|
}
|
|
778
784
|
const quotedValues = value.map((v) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/regions.ts","../src/types.ts","../src/providers.ts","../src/ConnectionConfig.tsx","../src/SIGV4ConnectionConfig.tsx","../src/sql/types.ts","../src/sql/ResourceSelector.tsx","../src/sql/ConfigEditor/ConfigSelect.tsx","../src/sql/ConfigEditor/InlineInput.tsx","../src/sql/QueryEditor/QueryCodeEditor.tsx","../src/sql/QueryEditor/QueryEditorHeader.tsx","../src/sql/QueryEditor/FormatSelect.tsx","../src/sql/QueryEditor/FillValueSelect.tsx","../src/sql/utils/utils.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","import { DataSourceJsonData, DataSourceSettings } from '@grafana/data';\n\nexport enum AwsAuthType {\n Keys = 'keys',\n Credentials = 'credentials',\n Default = 'default', // was 'arn',\n EC2IAMRole = 'ec2_iam_role',\n /**\n * @deprecated use default\n */\n ARN = 'arn',\n}\n\nexport interface AwsAuthDataSourceJsonData extends DataSourceJsonData {\n authType?: AwsAuthType;\n assumeRoleArn?: string;\n externalId?: string;\n profile?: string; // Credentials profile name, as specified in ~/.aws/credentials\n defaultRegion?: string; // region if it is not defined by your credentials file\n endpoint?: string;\n}\n\nexport interface AwsAuthDataSourceSecureJsonData {\n accessKey?: string;\n secretKey?: string;\n sessionToken?: string;\n}\n\nexport type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;\n","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","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\nexport const DEFAULT_LABEL_WIDTH = 28;\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 = DEFAULT_LABEL_WIDTH, 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","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","import { DataQuery } from '@grafana/data';\nimport { FillValueOptions } from './QueryEditor/FillValueSelect';\n\nexport const defaultKey = '__default';\n\nexport interface SQLQuery extends DataQuery {\n rawSQL: string;\n format?: number;\n fillMode?: { mode: FillValueOptions; value?: number };\n}\n","import { SelectableValue } from '@grafana/data';\nimport { InlineField, Select, SelectCommonProps } from '@grafana/ui';\nimport { isEqual } from 'lodash';\nimport React, { useEffect, useMemo, useState, DependencyList, useRef } from 'react';\n\nimport { defaultKey } from './types';\n\nexport interface ResourceSelectorProps extends SelectCommonProps<string> {\n value: string | null;\n dependencies?: DependencyList;\n tooltip?: string;\n label?: string;\n 'data-testid'?: string;\n hidden?: boolean;\n // Options only needed for QueryEditor\n default?: string;\n // Options only needed for the ConfigEditor\n title?: string;\n labelWidth?: number;\n saveOptions?: () => Promise<void>;\n // Either set a way of fetching resources or the resource list\n fetch?: () => Promise<Array<string | SelectableValue<string>>>;\n resources?: string[];\n onChange: (e: SelectableValue<string> | null) => void;\n}\n\nexport function ResourceSelector(props: ResourceSelectorProps) {\n const propsDependencies = props.dependencies;\n const propsOnChange = props.onChange\n \n const dependencies = useRef(props.dependencies);\n const fetched = useRef<boolean>(false);\n const resource = useRef<string | null>(props.value || props.default || null);\n\n const [resources, setResources] = useState<Array<string | SelectableValue>>(\n resource.current ? [resource.current] : []\n );\n const [isLoading, setIsLoading] = useState(false);\n\n \n const defaultOpts = useMemo(() => {\n const opts: Array<SelectableValue<string>> = [\n {\n label: `default (${props.default})`,\n value: defaultKey,\n description: `Default value set in the data source`,\n },\n ];\n if (props.value && props.value !== defaultKey) {\n opts.push({ label: props.value, value: props.value });\n }\n return opts;\n }, [props.default, props.value]);\n const [options, setOptions] = useState<Array<SelectableValue<string>>>(props.default ? defaultOpts : []);\n useEffect(() => {\n if (props.resources !== undefined) {\n setResources(props.resources);\n }\n }, [props.resources]);\n useEffect(() => {\n const newOptions: Array<SelectableValue<string>> = props.default ? defaultOpts : [];\n if (resources.length) {\n resources.forEach((r) => {\n const value = typeof r === 'string' ? r : r.value;\n if (!newOptions.find((o) => o.value === value)) {\n typeof r === 'string' ? newOptions.push({ label: r, value: r }) : newOptions.push(r);\n }\n });\n setOptions(newOptions);\n } else {\n setOptions([]);\n }\n }, [resources, defaultOpts, props.default]);\n\n useEffect(() => {\n // A change in the dependencies cause a state clean-up\n if (!isEqual(propsDependencies, dependencies.current)) {\n fetched.current = false;\n resource.current = null;\n dependencies.current = propsDependencies\n propsOnChange(null);\n }\n }, [propsDependencies, propsOnChange]);\n\n const fetch = async () => {\n if (fetched.current) {\n return;\n }\n if (props.saveOptions) {\n await props.saveOptions();\n }\n try {\n const resources = (await props.fetch?.()) || [];\n setResources(resources);\n } finally {\n fetched.current = true;\n }\n };\n\n const onChange = (e: SelectableValue<string>) => {\n propsOnChange(e);\n if (e.value) {\n resource.current = e.value;\n }\n };\n const onClick = async () => {\n setIsLoading(true);\n try {\n await fetch();\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <InlineField label={props.label} labelWidth={props.labelWidth} tooltip={props.tooltip} hidden={props.hidden}>\n <div data-testid={props['data-testid']} title={props.title}>\n <Select\n {...props}\n aria-label={props.label}\n options={options}\n onChange={onChange}\n isLoading={isLoading}\n className={props.className || 'min-width-6'}\n onOpenMenu={() => props.fetch && onClick()}\n menuShouldPortal={true}\n />\n </div>\n </InlineField>\n );\n}\n","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';\nimport { DEFAULT_LABEL_WIDTH } from '../../ConnectionConfig';\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 ?? DEFAULT_LABEL_WIDTH,\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","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';\nimport { DEFAULT_LABEL_WIDTH } from '../../ConnectionConfig';\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 ?? DEFAULT_LABEL_WIDTH}\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","import { defaults } from 'lodash';\n\nimport React, { useRef, useEffect } from 'react';\nimport { CodeEditor, CodeEditorSuggestionItem, CodeEditorMonacoOptions } from '@grafana/ui';\nimport { DataQuery } from '@grafana/data';\n\ntype EditorProps = {\n width?: number | string;\n height?: number | string;\n readOnly?: boolean;\n showMiniMap?: boolean;\n showLineNumbers?: boolean;\n monacoOptions?: CodeEditorMonacoOptions;\n};\n\ntype Props<TQuery extends DataQuery> = {\n query: TQuery;\n language: string;\n editorProps?: EditorProps;\n onChange: (value: TQuery) => void;\n onRunQuery: () => void;\n getSuggestions: (query: TQuery) => CodeEditorSuggestionItem[];\n};\n\nexport function QueryCodeEditor<TQuery extends DataQuery>(props: Props<TQuery>) {\n const { getSuggestions, query } = props;\n const { rawSQL } = defaults(props.query, { rawSQL: '' });\n const onRawSqlChange = (rawSQL: string) => {\n const query = {\n ...props.query,\n rawSQL,\n };\n props.onChange(query);\n props.onRunQuery();\n };\n\n // Use a reference for suggestions because a bug in CodeEditor getSuggestions\n // https://github.com/grafana/grafana/issues/40121\n // It was been fixed in 8.3 but keeping the workaround here to support older\n // versions.\n const suggestionsRef = useRef<CodeEditorSuggestionItem[]>([]);\n useEffect(() => {\n suggestionsRef.current = getSuggestions(query);\n }, [getSuggestions, query]);\n\n return (\n <CodeEditor\n language={props.language}\n value={rawSQL}\n onBlur={onRawSqlChange}\n showMiniMap={false}\n showLineNumbers={true}\n getSuggestions={() => suggestionsRef.current}\n height=\"240px\"\n {...props.editorProps}\n />\n );\n}\n","import React from 'react';\n\nimport { DataQuery, DataSourceApi, DataSourceJsonData, LoadingState, QueryEditorProps } from '@grafana/data';\nimport { EditorHeader, FlexItem } from '@grafana/experimental';\nimport { Button } from '@grafana/ui';\nimport { RunQueryButtons } from '@grafana/async-query-data';\n\nexport interface Props<\n Datasource extends DataSourceApi<TQuery, JsonData>,\n TQuery extends DataQuery,\n JsonData extends DataSourceJsonData\n> extends QueryEditorProps<Datasource, TQuery, JsonData> {\n showAsyncQueryButtons?: boolean;\n extraHeaderElementLeft?: JSX.Element;\n extraHeaderElementRight?: JSX.Element;\n enableRunButton: boolean;\n cancel?: (target: TQuery) => void;\n onRunQuery: () => void;\n}\n\nexport function QueryEditorHeader<\n Datasource extends DataSourceApi<TQuery, JsonData>,\n TQuery extends DataQuery,\n JsonData extends DataSourceJsonData\n>({\n query,\n showAsyncQueryButtons,\n extraHeaderElementLeft,\n extraHeaderElementRight,\n enableRunButton,\n onRunQuery,\n data,\n cancel,\n}: Props<Datasource, TQuery, JsonData>): JSX.Element {\n return (\n <EditorHeader>\n {extraHeaderElementLeft}\n <FlexItem grow={1} />\n {showAsyncQueryButtons ? (\n <RunQueryButtons\n onRunQuery={onRunQuery}\n enableRun={enableRunButton}\n query={query}\n onCancelQuery={cancel}\n state={data?.state}\n />\n ) : (\n <Button\n variant={enableRunButton ? 'primary' : 'secondary'}\n size=\"sm\"\n onClick={onRunQuery}\n icon={data?.state === LoadingState.Loading ? 'fa fa-spinner' : undefined}\n disabled={data?.state === LoadingState.Loading || !enableRunButton}\n >\n Run query\n </Button>\n )}\n {extraHeaderElementRight}\n </EditorHeader>\n );\n}\n","import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { InlineField, Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n query: TQuery;\n options: Array<SelectableValue<FormatOptions>>;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FormatSelect<TQuery extends DataQuery & Record<string, any>, FormatOptions>(\n props: FormatSelectProps<TQuery, FormatOptions>\n) {\n const onChangeFormat = (e: SelectableValue<FormatOptions>) => {\n props.onChange({\n ...props.query,\n format: e.value || 0,\n });\n props.onRunQuery?.();\n };\n return (\n <InlineField label=\"Format as\" labelWidth={11}>\n <Select\n aria-label=\"Format as\"\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n className=\"width-12\"\n menuShouldPortal={true}\n />\n </InlineField>\n );\n}\n","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","import { ScopedVars, VariableModel } from '@grafana/data';\nimport { SQLQuery } from '../types';\nimport { CodeEditorSuggestionItem, CodeEditorSuggestionItemKind } from '@grafana/ui';\n\n/**\n * Do not execute queries that do not exist yet\n */\nexport function filterSQLQuery(query: SQLQuery): boolean {\n return !!query.rawSQL;\n}\n\nexport function applySQLTemplateVariables(\n query: SQLQuery,\n scopedVars: ScopedVars,\n getTemplateSrv: () => any\n): SQLQuery {\n const templateSrv = getTemplateSrv();\n return {\n ...query,\n rawSQL: templateSrv.replace(query.rawSQL, scopedVars, interpolateVariable),\n };\n}\n\nfunction interpolateVariable(value: string | string[]) {\n if (typeof value === 'string') {\n return value;\n }\n\n const quotedValues = value.map((v) => {\n return quoteLiteral(v);\n });\n return quotedValues.join(',');\n}\n\nfunction quoteLiteral(value: any) {\n return \"'\" + String(value).replace(/'/g, \"''\") + \"'\";\n}\n\nexport const appendTemplateVariablesAsSuggestions = (getTemplateSrv: () => any, sugs: CodeEditorSuggestionItem[]) => {\n const templateSrv = getTemplateSrv();\n const templateSugs: CodeEditorSuggestionItem[] = [];\n templateSrv.getVariables().forEach((variable: VariableModel) => {\n const label = '$' + variable.name;\n let val = templateSrv.replace(label);\n if (val === label) {\n val = '';\n }\n templateSugs.push({\n label,\n kind: CodeEditorSuggestionItemKind.Text,\n detail: `(Template Variable) ${val}`,\n });\n });\n\n return sugs.concat(templateSugs);\n};\n"],"names":["AwsAuthType","useState","useMemo","_a","useEffect","__spreadProps","__spreadValues","regions","FieldSet","React","InlineField","Select","onUpdateDatasourceJsonDataOptionSelect","Input","onUpdateDatasourceJsonDataOption","ButtonGroup","ToolbarButton","onUpdateDatasourceResetOption","onUpdateDatasourceSecureJsonDataOption","_b","_c","_d","useRef","isEqual","resources","defaults","rawSQL","query","CodeEditor","data","EditorHeader","FlexItem","RunQueryButtons","Button","LoadingState","FillValueOptions","CodeEditorSuggestionItemKind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/regions.ts","../src/types.ts","../src/providers.ts","../src/ConnectionConfig.tsx","../src/SIGV4ConnectionConfig.tsx","../src/sql/types.ts","../src/sql/ResourceSelector.tsx","../src/sql/ConfigEditor/ConfigSelect.tsx","../src/sql/ConfigEditor/InlineInput.tsx","../src/sql/QueryEditor/QueryCodeEditor.tsx","../src/sql/QueryEditor/QueryEditorHeader.tsx","../src/sql/QueryEditor/FormatSelect.tsx","../src/sql/QueryEditor/FillValueSelect.tsx","../src/sql/utils/utils.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","import { DataSourceJsonData, DataSourceSettings } from '@grafana/data';\n\nexport enum AwsAuthType {\n Keys = 'keys',\n Credentials = 'credentials',\n Default = 'default', // was 'arn',\n EC2IAMRole = 'ec2_iam_role',\n /**\n * @deprecated use default\n */\n ARN = 'arn',\n GrafanaAssumeRole = 'grafana_assume_role'\n}\n\nexport interface AwsAuthDataSourceJsonData extends DataSourceJsonData {\n authType?: AwsAuthType;\n assumeRoleArn?: string;\n externalId?: string;\n profile?: string; // Credentials profile name, as specified in ~/.aws/credentials\n defaultRegion?: string; // region if it is not defined by your credentials file\n endpoint?: string;\n}\n\nexport interface AwsAuthDataSourceSecureJsonData {\n accessKey?: string;\n secretKey?: string;\n sessionToken?: string;\n}\n\nexport type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;\n","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: 'Grafana Assume Role',\n value: AwsAuthType.GrafanaAssumeRole,\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","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';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from './regions';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData, AwsAuthType } from './types';\nimport { awsAuthProviderOptions } from './providers';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst toOption = (value: string) => ({ value, label: value });\nconst isAwsAuthType = (value: any): value is AwsAuthType => {\n return typeof value === 'string' && awsAuthProviderOptions.some((opt) => opt.value === 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 = DEFAULT_LABEL_WIDTH, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled = config.featureToggles.awsDatasourcesTempCredentials;\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\n );\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 {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\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 )}\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","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","import { DataQuery } from '@grafana/data';\nimport { FillValueOptions } from './QueryEditor/FillValueSelect';\n\nexport const defaultKey = '__default';\n\nexport interface SQLQuery extends DataQuery {\n rawSQL: string;\n format?: number;\n fillMode?: { mode: FillValueOptions; value?: number };\n}\n","import { SelectableValue } from '@grafana/data';\nimport { InlineField, Select, SelectCommonProps } from '@grafana/ui';\nimport { isEqual } from 'lodash';\nimport React, { useEffect, useMemo, useState, DependencyList, useRef } from 'react';\n\nimport { defaultKey } from './types';\n\nexport interface ResourceSelectorProps extends SelectCommonProps<string> {\n value: string | null;\n dependencies?: DependencyList;\n tooltip?: string;\n label?: string;\n 'data-testid'?: string;\n hidden?: boolean;\n // Options only needed for QueryEditor\n default?: string;\n // Options only needed for the ConfigEditor\n title?: string;\n labelWidth?: number;\n saveOptions?: () => Promise<void>;\n // Either set a way of fetching resources or the resource list\n fetch?: () => Promise<Array<string | SelectableValue<string>>>;\n resources?: string[];\n onChange: (e: SelectableValue<string> | null) => void;\n}\n\nexport function ResourceSelector(props: ResourceSelectorProps) {\n const propsDependencies = props.dependencies;\n const propsOnChange = props.onChange\n \n const dependencies = useRef(props.dependencies);\n const fetched = useRef<boolean>(false);\n const resource = useRef<string | null>(props.value || props.default || null);\n\n const [resources, setResources] = useState<Array<string | SelectableValue>>(\n resource.current ? [resource.current] : []\n );\n const [isLoading, setIsLoading] = useState(false);\n\n \n const defaultOpts = useMemo(() => {\n const opts: Array<SelectableValue<string>> = [\n {\n label: `default (${props.default})`,\n value: defaultKey,\n description: `Default value set in the data source`,\n },\n ];\n if (props.value && props.value !== defaultKey) {\n opts.push({ label: props.value, value: props.value });\n }\n return opts;\n }, [props.default, props.value]);\n const [options, setOptions] = useState<Array<SelectableValue<string>>>(props.default ? defaultOpts : []);\n useEffect(() => {\n if (props.resources !== undefined) {\n setResources(props.resources);\n }\n }, [props.resources]);\n useEffect(() => {\n const newOptions: Array<SelectableValue<string>> = props.default ? defaultOpts : [];\n if (resources.length) {\n resources.forEach((r) => {\n const value = typeof r === 'string' ? r : r.value;\n if (!newOptions.find((o) => o.value === value)) {\n typeof r === 'string' ? newOptions.push({ label: r, value: r }) : newOptions.push(r);\n }\n });\n setOptions(newOptions);\n } else {\n setOptions([]);\n }\n }, [resources, defaultOpts, props.default]);\n\n useEffect(() => {\n // A change in the dependencies cause a state clean-up\n if (!isEqual(propsDependencies, dependencies.current)) {\n fetched.current = false;\n resource.current = null;\n dependencies.current = propsDependencies\n propsOnChange(null);\n }\n }, [propsDependencies, propsOnChange]);\n\n const fetch = async () => {\n if (fetched.current) {\n return;\n }\n if (props.saveOptions) {\n await props.saveOptions();\n }\n try {\n const resources = (await props.fetch?.()) || [];\n setResources(resources);\n } finally {\n fetched.current = true;\n }\n };\n\n const onChange = (e: SelectableValue<string>) => {\n propsOnChange(e);\n if (e.value) {\n resource.current = e.value;\n }\n };\n const onClick = async () => {\n setIsLoading(true);\n try {\n await fetch();\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <InlineField label={props.label} labelWidth={props.labelWidth} tooltip={props.tooltip} hidden={props.hidden}>\n <div data-testid={props['data-testid']} title={props.title}>\n <Select\n {...props}\n aria-label={props.label}\n options={options}\n onChange={onChange}\n isLoading={isLoading}\n className={props.className || 'min-width-6'}\n onOpenMenu={() => props.fetch && onClick()}\n menuShouldPortal={true}\n />\n </div>\n </InlineField>\n );\n}\n","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';\nimport { DEFAULT_LABEL_WIDTH } from '../../ConnectionConfig';\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 ?? DEFAULT_LABEL_WIDTH,\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","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';\nimport { DEFAULT_LABEL_WIDTH } from '../../ConnectionConfig';\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 ?? DEFAULT_LABEL_WIDTH}\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","import { defaults } from 'lodash';\n\nimport React, { useRef, useEffect } from 'react';\nimport { CodeEditor, CodeEditorSuggestionItem, CodeEditorMonacoOptions } from '@grafana/ui';\nimport { DataQuery } from '@grafana/data';\n\ntype EditorProps = {\n width?: number | string;\n height?: number | string;\n readOnly?: boolean;\n showMiniMap?: boolean;\n showLineNumbers?: boolean;\n monacoOptions?: CodeEditorMonacoOptions;\n};\n\ntype Props<TQuery extends DataQuery> = {\n query: TQuery;\n language: string;\n editorProps?: EditorProps;\n onChange: (value: TQuery) => void;\n onRunQuery: () => void;\n getSuggestions: (query: TQuery) => CodeEditorSuggestionItem[];\n};\n\nexport function QueryCodeEditor<TQuery extends DataQuery>(props: Props<TQuery>) {\n const { getSuggestions, query } = props;\n const { rawSQL } = defaults(props.query, { rawSQL: '' });\n const onRawSqlChange = (rawSQL: string) => {\n const query = {\n ...props.query,\n rawSQL,\n };\n props.onChange(query);\n props.onRunQuery();\n };\n\n // Use a reference for suggestions because a bug in CodeEditor getSuggestions\n // https://github.com/grafana/grafana/issues/40121\n // It was been fixed in 8.3 but keeping the workaround here to support older\n // versions.\n const suggestionsRef = useRef<CodeEditorSuggestionItem[]>([]);\n useEffect(() => {\n suggestionsRef.current = getSuggestions(query);\n }, [getSuggestions, query]);\n\n return (\n <CodeEditor\n language={props.language}\n value={rawSQL}\n onBlur={onRawSqlChange}\n showMiniMap={false}\n showLineNumbers={true}\n getSuggestions={() => suggestionsRef.current}\n height=\"240px\"\n {...props.editorProps}\n />\n );\n}\n","import React from 'react';\n\nimport { DataQuery, DataSourceApi, DataSourceJsonData, LoadingState, QueryEditorProps } from '@grafana/data';\nimport { EditorHeader, FlexItem } from '@grafana/experimental';\nimport { Button } from '@grafana/ui';\nimport { RunQueryButtons } from '@grafana/async-query-data';\n\nexport interface Props<\n Datasource extends DataSourceApi<TQuery, JsonData>,\n TQuery extends DataQuery,\n JsonData extends DataSourceJsonData\n> extends QueryEditorProps<Datasource, TQuery, JsonData> {\n showAsyncQueryButtons?: boolean;\n extraHeaderElementLeft?: JSX.Element;\n extraHeaderElementRight?: JSX.Element;\n enableRunButton: boolean;\n cancel?: (target: TQuery) => void;\n onRunQuery: () => void;\n}\n\nexport function QueryEditorHeader<\n Datasource extends DataSourceApi<TQuery, JsonData>,\n TQuery extends DataQuery,\n JsonData extends DataSourceJsonData\n>({\n query,\n showAsyncQueryButtons,\n extraHeaderElementLeft,\n extraHeaderElementRight,\n enableRunButton,\n onRunQuery,\n data,\n cancel,\n}: Props<Datasource, TQuery, JsonData>): JSX.Element {\n return (\n <EditorHeader>\n {extraHeaderElementLeft}\n <FlexItem grow={1} />\n {showAsyncQueryButtons ? (\n <RunQueryButtons\n onRunQuery={onRunQuery}\n enableRun={enableRunButton}\n query={query}\n onCancelQuery={cancel}\n state={data?.state}\n />\n ) : (\n <Button\n variant={enableRunButton ? 'primary' : 'secondary'}\n size=\"sm\"\n onClick={onRunQuery}\n icon={data?.state === LoadingState.Loading ? 'fa fa-spinner' : undefined}\n disabled={data?.state === LoadingState.Loading || !enableRunButton}\n >\n Run query\n </Button>\n )}\n {extraHeaderElementRight}\n </EditorHeader>\n );\n}\n","import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { InlineField, Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n query: TQuery;\n options: Array<SelectableValue<FormatOptions>>;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FormatSelect<TQuery extends DataQuery & Record<string, any>, FormatOptions>(\n props: FormatSelectProps<TQuery, FormatOptions>\n) {\n const onChangeFormat = (e: SelectableValue<FormatOptions>) => {\n props.onChange({\n ...props.query,\n format: e.value || 0,\n });\n props.onRunQuery?.();\n };\n return (\n <InlineField label=\"Format as\" labelWidth={11}>\n <Select\n aria-label=\"Format as\"\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n className=\"width-12\"\n menuShouldPortal={true}\n />\n </InlineField>\n );\n}\n","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","import { ScopedVars, VariableModel } from '@grafana/data';\nimport { SQLQuery } from '../types';\nimport { CodeEditorSuggestionItem, CodeEditorSuggestionItemKind } from '@grafana/ui';\n\n/**\n * Do not execute queries that do not exist yet\n */\nexport function filterSQLQuery(query: SQLQuery): boolean {\n return !!query.rawSQL;\n}\n\nexport function applySQLTemplateVariables(\n query: SQLQuery,\n scopedVars: ScopedVars,\n getTemplateSrv: () => any\n): SQLQuery {\n const templateSrv = getTemplateSrv();\n return {\n ...query,\n rawSQL: templateSrv.replace(query.rawSQL, scopedVars, interpolateVariable),\n };\n}\n\nfunction interpolateVariable(value: string | string[]) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n const quotedValues = value.map((v) => {\n return quoteLiteral(v);\n });\n return quotedValues.join(',');\n}\n\nfunction quoteLiteral(value: any) {\n return \"'\" + String(value).replace(/'/g, \"''\") + \"'\";\n}\n\nexport const appendTemplateVariablesAsSuggestions = (getTemplateSrv: () => any, sugs: CodeEditorSuggestionItem[]) => {\n const templateSrv = getTemplateSrv();\n const templateSugs: CodeEditorSuggestionItem[] = [];\n templateSrv.getVariables().forEach((variable: VariableModel) => {\n const label = '$' + variable.name;\n let val = templateSrv.replace(label);\n if (val === label) {\n val = '';\n }\n templateSugs.push({\n label,\n kind: CodeEditorSuggestionItemKind.Text,\n detail: `(Template Variable) ${val}`,\n });\n });\n\n return sugs.concat(templateSugs);\n};\n"],"names":["AwsAuthType","useState","config","useMemo","useEffect","__spreadProps","__spreadValues","regions","FieldSet","React","InlineField","Select","onUpdateDatasourceJsonDataOptionSelect","Input","onUpdateDatasourceJsonDataOption","ButtonGroup","ToolbarButton","onUpdateDatasourceResetOption","onUpdateDatasourceSecureJsonDataOption","_a","_b","_c","_d","useRef","isEqual","resources","defaults","rawSQL","query","CodeEditor","data","EditorHeader","FlexItem","RunQueryButtons","Button","LoadingState","FillValueOptions","CodeEditorSuggestionItemKind"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/aws-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.48",
|
|
4
4
|
"description": "Common AWS features for grafana",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"node-notifier": "^10.0.1",
|
|
49
49
|
"react": "17.0.2",
|
|
50
50
|
"react-dom": "17.0.2",
|
|
51
|
-
"react-select-event": "^5.
|
|
51
|
+
"react-select-event": "^5.5.1",
|
|
52
52
|
"rimraf": "^3.0.2",
|
|
53
53
|
"rollup": "2.79.1",
|
|
54
54
|
"rollup-plugin-dts": "^5.0.0",
|