@grafana/aws-sdk 0.4.0 → 0.4.2
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/components/ConnectionConfig.js +5 -2
- package/dist/esm/components/ConnectionConfig.js.map +1 -1
- package/dist/esm/regions.js +9 -0
- package/dist/esm/regions.js.map +1 -1
- package/dist/esm/sql/ConfigEditor/InlineInput.js.map +1 -1
- package/dist/esm/sql/QueryEditor/QueryEditorHeader.js +3 -1
- package/dist/esm/sql/QueryEditor/QueryEditorHeader.js.map +1 -1
- package/dist/index.d.ts +13 -14
- package/dist/index.js +17 -3
- package/dist/index.js.map +1 -1
- package/package.json +10 -10
|
@@ -34,7 +34,7 @@ const isAwsAuthType = (value) => {
|
|
|
34
34
|
return typeof value === "string" && awsAuthProviderOptions.some((opt) => opt.value === value);
|
|
35
35
|
};
|
|
36
36
|
const ConnectionConfig = (props) => {
|
|
37
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
37
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
38
38
|
const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);
|
|
39
39
|
const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));
|
|
40
40
|
const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;
|
|
@@ -208,7 +208,10 @@ const ConnectionConfig = (props) => {
|
|
|
208
208
|
Select,
|
|
209
209
|
{
|
|
210
210
|
inputId: "defaultRegion",
|
|
211
|
-
value: regions.find((region) => region.value === options.jsonData.defaultRegion)
|
|
211
|
+
value: (_i = regions.find((region) => region.value === options.jsonData.defaultRegion)) != null ? _i : options.jsonData.defaultRegion ? {
|
|
212
|
+
label: options.jsonData.defaultRegion,
|
|
213
|
+
value: options.jsonData.defaultRegion
|
|
214
|
+
} : void 0,
|
|
212
215
|
options: regions,
|
|
213
216
|
defaultValue: options.jsonData.defaultRegion,
|
|
214
217
|
allowCustomValue: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionConfig.js","sources":["../../../src/components/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ['cloudwatch', 'grafana-athena-datasource'];\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};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\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\n return <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label='Authentication Provider'\n inputId=\"authProvider\"\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 </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\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 id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n \n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\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 id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n \n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"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 id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n \n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\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 </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n};\n"],"names":["regions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConnectionConfig.js","sources":["../../../src/components/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ['cloudwatch', 'grafana-athena-datasource'];\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};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\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 <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n inputId=\"authProvider\"\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 </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\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 id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n\n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\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 id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n\n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"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 id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n\n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\n value={\n regions.find((region) => region.value === options.jsonData.defaultRegion) ??\n (options.jsonData.defaultRegion\n ? {\n label: options.jsonData.defaultRegion,\n value: options.jsonData.defaultRegion,\n }\n : undefined)\n }\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 </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n );\n};\n"],"names":["regions"],"mappings":"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"}
|
package/dist/esm/regions.js
CHANGED
|
@@ -5,16 +5,25 @@ const standardRegions = [
|
|
|
5
5
|
"ap-northeast-2",
|
|
6
6
|
"ap-northeast-3",
|
|
7
7
|
"ap-south-1",
|
|
8
|
+
"ap-south-2",
|
|
8
9
|
"ap-southeast-1",
|
|
9
10
|
"ap-southeast-2",
|
|
11
|
+
"ap-southeast-3",
|
|
12
|
+
"ap-southeast-4",
|
|
10
13
|
"ca-central-1",
|
|
14
|
+
"ca-west-1",
|
|
11
15
|
"cn-north-1",
|
|
12
16
|
"cn-northwest-1",
|
|
13
17
|
"eu-central-1",
|
|
18
|
+
"eu-central-2",
|
|
14
19
|
"eu-north-1",
|
|
20
|
+
"eu-south-1",
|
|
21
|
+
"eu-south-2",
|
|
15
22
|
"eu-west-1",
|
|
16
23
|
"eu-west-2",
|
|
17
24
|
"eu-west-3",
|
|
25
|
+
"il-central-1",
|
|
26
|
+
"me-central-1",
|
|
18
27
|
"me-south-1",
|
|
19
28
|
"sa-east-1",
|
|
20
29
|
"us-east-1",
|
package/dist/esm/regions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ca-central-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-north-1',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAA4B,GAAA;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-south-2',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ap-southeast-3',\n 'ap-southeast-4',\n 'ca-central-1',\n 'ca-west-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-central-2',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-south-2',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'il-central-1',\n 'me-central-1',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAA4B,GAAA;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineInput.js","sources":["../../../../src/sql/ConfigEditor/InlineInput.tsx"],"sourcesContent":["import React from 'react';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { InlineField, Input } from '@grafana/ui';\nimport {
|
|
1
|
+
{"version":3,"file":"InlineInput.js","sources":["../../../../src/sql/ConfigEditor/InlineInput.tsx"],"sourcesContent":["import React, { FormEvent } from 'react';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { InlineField, Input } from '@grafana/ui';\nimport { DEFAULT_LABEL_WIDTH } from '../../components/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"],"names":[],"mappings":";;;;AAkBO,SAAS,YAAY,KAAyB,EAAA;AAlBrD,EAAA,IAAA,EAAA,CAAA;AAmBE,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,mBAAA;AAAA,MAChC,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,UAAU,KAAM,CAAA,QAAA;AAAA,KAAA;AAAA,oBAEhB,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,eAAa,KAAM,CAAA,aAAA,CAAA;AAAA,QACnB,SAAU,EAAA,UAAA;AAAA,QACV,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,aAAa,KAAM,CAAA,WAAA;AAAA,QACnB,UAAU,KAAM,CAAA,QAAA;AAAA,OAAA;AAAA,KAClB;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -20,7 +20,9 @@ function QueryEditorHeader({
|
|
|
20
20
|
onRunQuery,
|
|
21
21
|
enableRun: enableRunButton,
|
|
22
22
|
query,
|
|
23
|
-
onCancelQuery:
|
|
23
|
+
onCancelQuery: (target) => {
|
|
24
|
+
cancel == null ? void 0 : cancel(target);
|
|
25
|
+
},
|
|
24
26
|
state: data == null ? void 0 : data.state
|
|
25
27
|
}
|
|
26
28
|
) : /* @__PURE__ */ React.createElement(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryEditorHeader.js","sources":["../../../../src/sql/QueryEditor/QueryEditorHeader.tsx"],"sourcesContent":["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 queries\n </Button>\n )}\n {extraHeaderElementRight}\n </EditorHeader>\n );\n}\n"],"names":[],"mappings":";;;;;;AAoBO,SAAS,iBAId,CAAA;AAAA,EACA,KAAA;AAAA,EACA,qBAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AACF,CAAqD,EAAA;AACnD,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,oBACE,sBACD,kBAAA,KAAA,CAAA,aAAA,CAAC,YAAS,IAAM,EAAA,CAAA,EAAG,GAClB,qBACC,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAW,EAAA,eAAA;AAAA,MACX,KAAA;AAAA,MACA,
|
|
1
|
+
{"version":3,"file":"QueryEditorHeader.js","sources":["../../../../src/sql/QueryEditor/QueryEditorHeader.tsx"],"sourcesContent":["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={(target: TQuery) => {\n cancel?.(target);\n }}\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 queries\n </Button>\n )}\n {extraHeaderElementRight}\n </EditorHeader>\n );\n}\n"],"names":[],"mappings":";;;;;;AAoBO,SAAS,iBAId,CAAA;AAAA,EACA,KAAA;AAAA,EACA,qBAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AACF,CAAqD,EAAA;AACnD,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,oBACE,sBACD,kBAAA,KAAA,CAAA,aAAA,CAAC,YAAS,IAAM,EAAA,CAAA,EAAG,GAClB,qBACC,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAW,EAAA,eAAA;AAAA,MACX,KAAA;AAAA,MACA,aAAA,EAAe,CAAC,MAAmB,KAAA;AACjC,QAAS,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA;AAAA,OACX;AAAA,MACA,OAAO,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,KAAA;AAAA,KAAA;AAAA,GAGf,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,kBAAkB,SAAY,GAAA,WAAA;AAAA,MACvC,IAAK,EAAA,IAAA;AAAA,MACL,OAAS,EAAA,UAAA;AAAA,MACT,IAAM,EAAA,CAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,KAAU,MAAA,YAAA,CAAa,UAAU,eAAkB,GAAA,KAAA,CAAA;AAAA,MAC/D,QAAU,EAAA,CAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,KAAU,MAAA,YAAA,CAAa,WAAW,CAAC,eAAA;AAAA,KAAA;AAAA,IACpD,aAAA;AAAA,KAIF,uBACH,CAAA,CAAA;AAEJ;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import React$1, { FC, DependencyList } from 'react';
|
|
2
|
+
import React$1, { FC, FormEvent, DependencyList } from 'react';
|
|
3
3
|
import { DataSourceJsonData, DataSourceSettings, DataSourcePluginOptionsEditorProps, SelectableValue, DataQuery, DataSourceApi, QueryEditorProps, ScopedVars } from '@grafana/data';
|
|
4
4
|
import { InputActionMeta, SelectCommonProps, CodeEditorSuggestionItem, CodeEditorMonacoOptions } from '@grafana/ui';
|
|
5
|
-
import { FormEvent } from 'react-dom/node_modules/@types/react';
|
|
6
5
|
|
|
7
6
|
declare enum AwsAuthType {
|
|
8
7
|
Keys = "keys",
|
|
@@ -28,7 +27,7 @@ interface AwsAuthDataSourceSecureJsonData {
|
|
|
28
27
|
secretKey?: string;
|
|
29
28
|
sessionToken?: string;
|
|
30
29
|
}
|
|
31
|
-
|
|
30
|
+
type AwsAuthDataSourceSettings = DataSourceSettings<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData>;
|
|
32
31
|
interface ConnectionConfigProps<J extends AwsAuthDataSourceJsonData = AwsAuthDataSourceJsonData, S = AwsAuthDataSourceSecureJsonData> extends DataSourcePluginOptionsEditorProps<J, S> {
|
|
33
32
|
standardRegions?: string[];
|
|
34
33
|
loadRegions?: () => Promise<string[]>;
|
|
@@ -44,7 +43,7 @@ interface ConnectionConfigProps<J extends AwsAuthDataSourceJsonData = AwsAuthDat
|
|
|
44
43
|
declare const DEFAULT_LABEL_WIDTH = 28;
|
|
45
44
|
declare const ConnectionConfig: FC<ConnectionConfigProps>;
|
|
46
45
|
|
|
47
|
-
declare function Divider(): JSX.Element;
|
|
46
|
+
declare function Divider(): React$1.JSX.Element;
|
|
48
47
|
|
|
49
48
|
interface SIGV4ConnectionConfigProps extends DataSourcePluginOptionsEditorProps<any, any> {
|
|
50
49
|
inExperimentalAuthComponent?: boolean;
|
|
@@ -85,7 +84,7 @@ interface ConfigSelectProps extends DataSourcePluginOptionsEditorProps<AwsAuthDa
|
|
|
85
84
|
isOptionDisabled?: () => boolean;
|
|
86
85
|
labelWidth?: number;
|
|
87
86
|
}
|
|
88
|
-
declare function ConfigSelect(props: ConfigSelectProps): JSX.Element;
|
|
87
|
+
declare function ConfigSelect(props: ConfigSelectProps): React$1.JSX.Element;
|
|
89
88
|
|
|
90
89
|
interface InlineInputProps extends DataSourcePluginOptionsEditorProps<{}, AwsAuthDataSourceSecureJsonData> {
|
|
91
90
|
value: string;
|
|
@@ -98,7 +97,7 @@ interface InlineInputProps extends DataSourcePluginOptionsEditorProps<{}, AwsAut
|
|
|
98
97
|
disabled?: boolean;
|
|
99
98
|
labelWidth?: number;
|
|
100
99
|
}
|
|
101
|
-
declare function InlineInput(props: InlineInputProps): JSX.Element;
|
|
100
|
+
declare function InlineInput(props: InlineInputProps): React$1.JSX.Element;
|
|
102
101
|
|
|
103
102
|
interface ResourceSelectorProps extends SelectCommonProps<string> {
|
|
104
103
|
tooltip?: string;
|
|
@@ -116,19 +115,19 @@ interface ResourceSelectorProps extends SelectCommonProps<string> {
|
|
|
116
115
|
resources?: string[];
|
|
117
116
|
onChange: (e: SelectableValue<string> | null) => void;
|
|
118
117
|
}
|
|
119
|
-
declare function ResourceSelector(props: ResourceSelectorProps): JSX.Element;
|
|
118
|
+
declare function ResourceSelector(props: ResourceSelectorProps): React$1.JSX.Element;
|
|
120
119
|
|
|
121
120
|
declare enum FillValueOptions {
|
|
122
121
|
Previous = 0,
|
|
123
122
|
Null = 1,
|
|
124
123
|
Value = 2
|
|
125
124
|
}
|
|
126
|
-
|
|
125
|
+
type FillValueSelectProps<TQuery extends DataQuery> = {
|
|
127
126
|
query: TQuery;
|
|
128
127
|
onChange: (value: TQuery) => void;
|
|
129
128
|
onRunQuery?: () => void;
|
|
130
129
|
};
|
|
131
|
-
declare function FillValueSelect<TQuery extends DataQuery & Record<string, any>>(props: FillValueSelectProps<TQuery>): JSX.Element;
|
|
130
|
+
declare function FillValueSelect<TQuery extends DataQuery & Record<string, any>>(props: FillValueSelectProps<TQuery>): React$1.JSX.Element;
|
|
132
131
|
|
|
133
132
|
interface SQLQuery extends DataQuery {
|
|
134
133
|
rawSQL: string;
|
|
@@ -139,7 +138,7 @@ interface SQLQuery extends DataQuery {
|
|
|
139
138
|
};
|
|
140
139
|
}
|
|
141
140
|
|
|
142
|
-
|
|
141
|
+
type EditorProps = {
|
|
143
142
|
width?: number | string;
|
|
144
143
|
height?: number | string;
|
|
145
144
|
readOnly?: boolean;
|
|
@@ -147,7 +146,7 @@ declare type EditorProps = {
|
|
|
147
146
|
showLineNumbers?: boolean;
|
|
148
147
|
monacoOptions?: CodeEditorMonacoOptions;
|
|
149
148
|
};
|
|
150
|
-
|
|
149
|
+
type Props$1<TQuery extends DataQuery> = {
|
|
151
150
|
query: TQuery;
|
|
152
151
|
language: string;
|
|
153
152
|
editorProps?: EditorProps;
|
|
@@ -155,7 +154,7 @@ declare type Props$1<TQuery extends DataQuery> = {
|
|
|
155
154
|
onRunQuery: () => void;
|
|
156
155
|
getSuggestions: (query: TQuery) => CodeEditorSuggestionItem[];
|
|
157
156
|
};
|
|
158
|
-
declare function QueryCodeEditor<TQuery extends DataQuery>(props: Props$1<TQuery>): JSX.Element;
|
|
157
|
+
declare function QueryCodeEditor<TQuery extends DataQuery>(props: Props$1<TQuery>): React$1.JSX.Element;
|
|
159
158
|
|
|
160
159
|
interface Props<Datasource extends DataSourceApi<TQuery, JsonData>, TQuery extends DataQuery, JsonData extends DataSourceJsonData> extends QueryEditorProps<Datasource, TQuery, JsonData> {
|
|
161
160
|
showAsyncQueryButtons?: boolean;
|
|
@@ -167,14 +166,14 @@ interface Props<Datasource extends DataSourceApi<TQuery, JsonData>, TQuery exten
|
|
|
167
166
|
}
|
|
168
167
|
declare function QueryEditorHeader<Datasource extends DataSourceApi<TQuery, JsonData>, TQuery extends DataQuery, JsonData extends DataSourceJsonData>({ query, showAsyncQueryButtons, extraHeaderElementLeft, extraHeaderElementRight, enableRunButton, onRunQuery, data, cancel, }: Props<Datasource, TQuery, JsonData>): JSX.Element;
|
|
169
168
|
|
|
170
|
-
|
|
169
|
+
type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {
|
|
171
170
|
id?: string;
|
|
172
171
|
query: TQuery;
|
|
173
172
|
options: Array<SelectableValue<FormatOptions>>;
|
|
174
173
|
onChange: (value: TQuery) => void;
|
|
175
174
|
onRunQuery?: () => void;
|
|
176
175
|
};
|
|
177
|
-
declare function FormatSelect<TQuery extends DataQuery & Record<string, any>, FormatOptions>(props: FormatSelectProps<TQuery, FormatOptions>): JSX.Element;
|
|
176
|
+
declare function FormatSelect<TQuery extends DataQuery & Record<string, any>, FormatOptions>(props: FormatSelectProps<TQuery, FormatOptions>): React$1.JSX.Element;
|
|
178
177
|
|
|
179
178
|
/**
|
|
180
179
|
* Do not execute queries that do not exist yet
|
package/dist/index.js
CHANGED
|
@@ -22,16 +22,25 @@ const standardRegions = [
|
|
|
22
22
|
"ap-northeast-2",
|
|
23
23
|
"ap-northeast-3",
|
|
24
24
|
"ap-south-1",
|
|
25
|
+
"ap-south-2",
|
|
25
26
|
"ap-southeast-1",
|
|
26
27
|
"ap-southeast-2",
|
|
28
|
+
"ap-southeast-3",
|
|
29
|
+
"ap-southeast-4",
|
|
27
30
|
"ca-central-1",
|
|
31
|
+
"ca-west-1",
|
|
28
32
|
"cn-north-1",
|
|
29
33
|
"cn-northwest-1",
|
|
30
34
|
"eu-central-1",
|
|
35
|
+
"eu-central-2",
|
|
31
36
|
"eu-north-1",
|
|
37
|
+
"eu-south-1",
|
|
38
|
+
"eu-south-2",
|
|
32
39
|
"eu-west-1",
|
|
33
40
|
"eu-west-2",
|
|
34
41
|
"eu-west-3",
|
|
42
|
+
"il-central-1",
|
|
43
|
+
"me-central-1",
|
|
35
44
|
"me-south-1",
|
|
36
45
|
"sa-east-1",
|
|
37
46
|
"us-east-1",
|
|
@@ -107,7 +116,7 @@ const isAwsAuthType = (value) => {
|
|
|
107
116
|
return typeof value === "string" && awsAuthProviderOptions.some((opt) => opt.value === value);
|
|
108
117
|
};
|
|
109
118
|
const ConnectionConfig = (props) => {
|
|
110
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
119
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
111
120
|
const [isARNInstructionsOpen, setIsARNInstructionsOpen] = React.useState(false);
|
|
112
121
|
const [regions, setRegions] = React.useState((props.standardRegions || standardRegions).map(toOption));
|
|
113
122
|
const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;
|
|
@@ -281,7 +290,10 @@ const ConnectionConfig = (props) => {
|
|
|
281
290
|
ui.Select,
|
|
282
291
|
{
|
|
283
292
|
inputId: "defaultRegion",
|
|
284
|
-
value: regions.find((region) => region.value === options.jsonData.defaultRegion)
|
|
293
|
+
value: (_i = regions.find((region) => region.value === options.jsonData.defaultRegion)) != null ? _i : options.jsonData.defaultRegion ? {
|
|
294
|
+
label: options.jsonData.defaultRegion,
|
|
295
|
+
value: options.jsonData.defaultRegion
|
|
296
|
+
} : void 0,
|
|
285
297
|
options: regions,
|
|
286
298
|
defaultValue: options.jsonData.defaultRegion,
|
|
287
299
|
allowCustomValue: true,
|
|
@@ -689,7 +701,9 @@ function QueryEditorHeader({
|
|
|
689
701
|
onRunQuery,
|
|
690
702
|
enableRun: enableRunButton,
|
|
691
703
|
query,
|
|
692
|
-
onCancelQuery:
|
|
704
|
+
onCancelQuery: (target) => {
|
|
705
|
+
cancel == null ? void 0 : cancel(target);
|
|
706
|
+
},
|
|
693
707
|
state: data$1 == null ? void 0 : data$1.state
|
|
694
708
|
}
|
|
695
709
|
) : /* @__PURE__ */ React__default["default"].createElement(
|
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/components/ConnectionConfig.styles.ts","../src/components/ConnectionConfig.tsx","../src/components/utils/version.ts","../src/components/Divider.tsx","../src/components/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 type { DataSourceJsonData, DataSourcePluginOptionsEditorProps, 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\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 inExperimentalAuthComponent?: boolean;\n externalId?: string;\n}\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 { css } from '@emotion/css';\n\nexport const assumeRoleInstructionsStyle = css({\n maxWidth: '715px',\n});\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ['cloudwatch', 'grafana-athena-datasource'];\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};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\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\n return <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label='Authentication Provider'\n inputId=\"authProvider\"\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 </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\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 id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n \n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\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 id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n \n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"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 id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n \n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\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 </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n};\n","// copied from Azure Data Explorer plugin\nimport { isNumber } from 'lodash';\n\nconst versionPattern = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-([0-9A-Za-z\\.]+))?/;\n\nexport class SemVersion {\n major: number;\n minor: number;\n patch: number;\n meta: string;\n\n constructor(version: string) {\n this.major = 0;\n this.minor = 0;\n this.patch = 0;\n this.meta = '';\n\n const match = versionPattern.exec(version);\n if (match) {\n this.major = Number(match[1]);\n this.minor = Number(match[2] || 0);\n this.patch = Number(match[3] || 0);\n this.meta = match[4];\n }\n }\n\n isGtOrEq(version: string): boolean {\n const compared = new SemVersion(version);\n\n for (let i = 0; i < this.comparable.length; ++i) {\n if (this.comparable[i] > compared.comparable[i]) {\n return true;\n }\n if (this.comparable[i] < compared.comparable[i]) {\n return false;\n }\n }\n return true;\n }\n\n isValid(): boolean {\n return isNumber(this.major);\n }\n\n get comparable() {\n return [this.major, this.minor, this.patch];\n }\n}\n\nexport function isVersionGtOrEq(a: string, b: string): boolean {\n const aSemver = new SemVersion(a);\n return aSemver.isGtOrEq(b);\n}\n","// copied from Azure Data Explorer plugin since there is not Divider component in G<10.1\nimport React from 'react';\nimport { Divider as GrafanaDivider, useTheme2 } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { isVersionGtOrEq } from './utils/version';\n\nexport function Divider() {\n const theme = useTheme2();\n if (isVersionGtOrEq(config.buildInfo.version, '10.1.0')) {\n return <GrafanaDivider />;\n }\n return (\n <div\n style={{ borderTop: `1px solid ${theme.colors.border.weak}`, margin: theme.spacing(2, 0), width: '100%' }}\n ></div>\n );\n}\n","import React from 'react';\nimport { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\nimport { ConnectionConfig } from '../components/ConnectionConfig';\n\nimport { AwsAuthDataSourceSecureJsonData, AwsAuthDataSourceJsonData, ConnectionConfigProps } from '../types';\n\nexport interface SIGV4ConnectionConfigProps extends DataSourcePluginOptionsEditorProps<any, any> {\n inExperimentalAuthComponent?: boolean;\n};\n\nexport const SIGV4ConnectionConfig: React.FC<SIGV4ConnectionConfigProps> = (\n props: SIGV4ConnectionConfigProps\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 inExperimentalAuthComponent: props.inExperimentalAuthComponent,\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 { 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 // props for old form styling\n tooltip?: string;\n hidden?: boolean;\n\n value: string | null;\n dependencies?: DependencyList;\n id: string;\n label: string;\n 'data-testid'?: string;\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 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 <Select\n {...props}\n id={props.id}\n inputId={props.id}\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\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 '../../components/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 // input id and label necessary for accessibility attributes\n id: 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 id={props.id}\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 '../../components/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 queries\n </Button>\n )}\n {extraHeaderElementRight}\n </EditorHeader>\n );\n}\n","import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n id?: string;\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 <Select\n aria-label=\"Format data frames as\"\n id={props.id ?? 'formatAs'}\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n menuShouldPortal={true}\n />\n}\n","import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { Input, Select } from '@grafana/ui';\nimport { EditorField } from '@grafana/experimental';\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 <EditorField label=\"Fill with\" tooltip=\"value to fill missing points\" htmlFor=\"fillWith\">\n <Select\n id=\"fillWith\"\n aria-label=\"Fill with\"\n data-testid=\"table-fill-with-select\"\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 menuShouldPortal={true}\n />\n </EditorField>\n {props.query.fillMode?.mode === FillValueOptions.Value && (\n <EditorField label=\"Value\" htmlFor=\"valueToFill\" width={6}>\n <Input\n id=\"valueToFill\"\n aria-label=\"Value\"\n type=\"number\"\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 </EditorField>\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<T extends SQLQuery>(\n query: T,\n scopedVars: ScopedVars,\n getTemplateSrv: () => any\n): T {\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","css","useState","config","useMemo","useEffect","__spreadProps","__spreadValues","regions","React","ConfigSection","ConfigSubSection","Field","Select","onUpdateDatasourceJsonDataOptionSelect","Input","onUpdateDatasourceJsonDataOption","ButtonGroup","ToolbarButton","onUpdateDatasourceResetOption","onUpdateDatasourceSecureJsonDataOption","Collapse","isNumber","useTheme2","GrafanaDivider","_a","_b","_c","_d","useRef","isEqual","resources","InlineField","defaults","rawSQL","query","CodeEditor","data","EditorHeader","FlexItem","RunQueryButtons","Button","LoadingState","FillValueOptions","EditorField","CodeEditorSuggestionItemKind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/regions.ts","../src/types.ts","../src/providers.ts","../src/components/ConnectionConfig.styles.ts","../src/components/ConnectionConfig.tsx","../src/components/utils/version.ts","../src/components/Divider.tsx","../src/components/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-south-2',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ap-southeast-3',\n 'ap-southeast-4',\n 'ca-central-1',\n 'ca-west-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-central-2',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-south-2',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'il-central-1',\n 'me-central-1',\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 type { DataSourceJsonData, DataSourcePluginOptionsEditorProps, 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\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 inExperimentalAuthComponent?: boolean;\n externalId?: string;\n}\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 { css } from '@emotion/css';\n\nexport const assumeRoleInstructionsStyle = css({\n maxWidth: '715px',\n});\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ['cloudwatch', 'grafana-athena-datasource'];\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};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\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 <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n inputId=\"authProvider\"\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 </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\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 id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n\n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\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 id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n\n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"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 id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n\n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\n value={\n regions.find((region) => region.value === options.jsonData.defaultRegion) ??\n (options.jsonData.defaultRegion\n ? {\n label: options.jsonData.defaultRegion,\n value: options.jsonData.defaultRegion,\n }\n : undefined)\n }\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 </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n );\n};\n","// copied from Azure Data Explorer plugin\nimport { isNumber } from 'lodash';\n\nconst versionPattern = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-([0-9A-Za-z\\.]+))?/;\n\nexport class SemVersion {\n major: number;\n minor: number;\n patch: number;\n meta: string;\n\n constructor(version: string) {\n this.major = 0;\n this.minor = 0;\n this.patch = 0;\n this.meta = '';\n\n const match = versionPattern.exec(version);\n if (match) {\n this.major = Number(match[1]);\n this.minor = Number(match[2] || 0);\n this.patch = Number(match[3] || 0);\n this.meta = match[4];\n }\n }\n\n isGtOrEq(version: string): boolean {\n const compared = new SemVersion(version);\n\n for (let i = 0; i < this.comparable.length; ++i) {\n if (this.comparable[i] > compared.comparable[i]) {\n return true;\n }\n if (this.comparable[i] < compared.comparable[i]) {\n return false;\n }\n }\n return true;\n }\n\n isValid(): boolean {\n return isNumber(this.major);\n }\n\n get comparable() {\n return [this.major, this.minor, this.patch];\n }\n}\n\nexport function isVersionGtOrEq(a: string, b: string): boolean {\n const aSemver = new SemVersion(a);\n return aSemver.isGtOrEq(b);\n}\n","// copied from Azure Data Explorer plugin since there is not Divider component in G<10.1\nimport React from 'react';\nimport { Divider as GrafanaDivider, useTheme2 } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { isVersionGtOrEq } from './utils/version';\n\nexport function Divider() {\n const theme = useTheme2();\n if (isVersionGtOrEq(config.buildInfo.version, '10.1.0')) {\n return <GrafanaDivider />;\n }\n return (\n <div\n style={{ borderTop: `1px solid ${theme.colors.border.weak}`, margin: theme.spacing(2, 0), width: '100%' }}\n ></div>\n );\n}\n","import React from 'react';\nimport { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\nimport { ConnectionConfig } from '../components/ConnectionConfig';\n\nimport { AwsAuthDataSourceSecureJsonData, AwsAuthDataSourceJsonData, ConnectionConfigProps } from '../types';\n\nexport interface SIGV4ConnectionConfigProps extends DataSourcePluginOptionsEditorProps<any, any> {\n inExperimentalAuthComponent?: boolean;\n};\n\nexport const SIGV4ConnectionConfig: React.FC<SIGV4ConnectionConfigProps> = (\n props: SIGV4ConnectionConfigProps\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 inExperimentalAuthComponent: props.inExperimentalAuthComponent,\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 { 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 // props for old form styling\n tooltip?: string;\n hidden?: boolean;\n\n value: string | null;\n dependencies?: DependencyList;\n id: string;\n label: string;\n 'data-testid'?: string;\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 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 <Select\n {...props}\n id={props.id}\n inputId={props.id}\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\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 '../../components/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 // input id and label necessary for accessibility attributes\n id: 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 id={props.id}\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, { FormEvent } from 'react';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { InlineField, Input } from '@grafana/ui';\nimport { DEFAULT_LABEL_WIDTH } from '../../components/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={(target: TQuery) => {\n cancel?.(target);\n }}\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 queries\n </Button>\n )}\n {extraHeaderElementRight}\n </EditorHeader>\n );\n}\n","import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n id?: string;\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 <Select\n aria-label=\"Format data frames as\"\n id={props.id ?? 'formatAs'}\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n menuShouldPortal={true}\n />\n}\n","import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { Input, Select } from '@grafana/ui';\nimport { EditorField } from '@grafana/experimental';\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 <EditorField label=\"Fill with\" tooltip=\"value to fill missing points\" htmlFor=\"fillWith\">\n <Select\n id=\"fillWith\"\n aria-label=\"Fill with\"\n data-testid=\"table-fill-with-select\"\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 menuShouldPortal={true}\n />\n </EditorField>\n {props.query.fillMode?.mode === FillValueOptions.Value && (\n <EditorField label=\"Value\" htmlFor=\"valueToFill\" width={6}>\n <Input\n id=\"valueToFill\"\n aria-label=\"Value\"\n type=\"number\"\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 </EditorField>\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<T extends SQLQuery>(\n query: T,\n scopedVars: ScopedVars,\n getTemplateSrv: () => any\n): T {\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","css","useState","config","useMemo","useEffect","__spreadProps","__spreadValues","regions","React","ConfigSection","ConfigSubSection","Field","Select","onUpdateDatasourceJsonDataOptionSelect","Input","onUpdateDatasourceJsonDataOption","ButtonGroup","ToolbarButton","onUpdateDatasourceResetOption","onUpdateDatasourceSecureJsonDataOption","Collapse","isNumber","useTheme2","GrafanaDivider","_a","_b","_c","_d","useRef","isEqual","resources","InlineField","defaults","rawSQL","query","CodeEditor","data","EditorHeader","FlexItem","RunQueryButtons","Button","LoadingState","FillValueOptions","EditorField","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.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Common AWS features for grafana",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"author": "Grafana Labs <team@grafana.com> (https://grafana.com)",
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@grafana/async-query-data": "0.
|
|
31
|
-
"@grafana/experimental": "1.7.
|
|
30
|
+
"@grafana/async-query-data": "0.2.0",
|
|
31
|
+
"@grafana/experimental": "1.7.12"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@grafana/data": "10.
|
|
34
|
+
"@grafana/data": "10.3.6",
|
|
35
35
|
"@grafana/eslint-config": "^6.0.1",
|
|
36
|
-
"@grafana/runtime": "10.
|
|
37
|
-
"@grafana/ui": "10.
|
|
36
|
+
"@grafana/runtime": "10.3.6",
|
|
37
|
+
"@grafana/ui": "10.3.6",
|
|
38
38
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
39
39
|
"@swc/core": "^1.3.93",
|
|
40
40
|
"@swc/jest": "^0.2.29",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"@types/jest": "27.4.1",
|
|
45
45
|
"@types/lodash": "4.14.191",
|
|
46
46
|
"@types/node": "16.18.6",
|
|
47
|
-
"@types/react": "
|
|
48
|
-
"@types/react-dom": "
|
|
47
|
+
"@types/react": "18.3.3",
|
|
48
|
+
"@types/react-dom": "18.3.0",
|
|
49
49
|
"@typescript-eslint/eslint-plugin": "^5.48.0",
|
|
50
50
|
"cspell": "6.13.3",
|
|
51
51
|
"esbuild": "^0.16.2",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
56
56
|
"jest": "27.5.1",
|
|
57
57
|
"node-notifier": "^10.0.1",
|
|
58
|
-
"react": "
|
|
59
|
-
"react-dom": "
|
|
58
|
+
"react": "18.2.0",
|
|
59
|
+
"react-dom": "18.2.0",
|
|
60
60
|
"react-select-event": "^5.5.1",
|
|
61
61
|
"rimraf": "^3.0.2",
|
|
62
62
|
"rollup": "2.79.1",
|