@grafana/aws-sdk 0.3.0 → 0.3.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/README.md +13 -3
- package/dist/esm/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js +1 -1
- package/dist/esm/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js.map +1 -1
- package/dist/esm/node_modules/@emotion/css/dist/emotion-css.esm.js +1 -1
- package/dist/esm/node_modules/@emotion/css/dist/emotion-css.esm.js.map +1 -1
- package/dist/esm/node_modules/@emotion/{cache → css/node_modules/@emotion/cache}/dist/emotion-cache.esm.js +3 -3
- package/dist/esm/node_modules/@emotion/css/node_modules/@emotion/cache/dist/emotion-cache.esm.js.map +1 -0
- package/dist/esm/node_modules/@emotion/css/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +1 -0
- package/dist/esm/node_modules/@emotion/css/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js.map +1 -0
- package/dist/esm/node_modules/{stylis → @emotion/css/node_modules/stylis}/src/Enum.js +2 -1
- package/dist/esm/node_modules/@emotion/css/node_modules/stylis/src/Enum.js.map +1 -0
- package/dist/esm/node_modules/@emotion/css/node_modules/stylis/src/Middleware.js.map +1 -0
- package/dist/esm/node_modules/{stylis → @emotion/css/node_modules/stylis}/src/Parser.js +3 -3
- package/dist/esm/node_modules/@emotion/css/node_modules/stylis/src/Parser.js.map +1 -0
- package/dist/esm/node_modules/{stylis → @emotion/css/node_modules/stylis}/src/Serializer.js +2 -1
- package/dist/esm/node_modules/@emotion/css/node_modules/stylis/src/Serializer.js.map +1 -0
- package/dist/esm/node_modules/@emotion/css/node_modules/stylis/src/Tokenizer.js.map +1 -0
- package/dist/esm/node_modules/@emotion/css/node_modules/stylis/src/Utility.js.map +1 -0
- package/dist/esm/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js +2 -2
- package/dist/esm/node_modules/@emotion/serialize/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +1 -0
- package/dist/esm/node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js +10 -0
- package/dist/esm/node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +1 -0
- package/dist/esm/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js +1 -0
- package/dist/esm/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js.map +1 -1
- package/dist/esm/src/components/ConnectionConfig.js +8 -14
- package/dist/esm/src/components/ConnectionConfig.js.map +1 -1
- package/dist/esm/src/components/Divider.js +6 -1
- package/dist/esm/src/components/Divider.js.map +1 -1
- package/dist/esm/src/components/NewConnectionConfig.js +3 -4
- package/dist/esm/src/components/NewConnectionConfig.js.map +1 -1
- package/dist/esm/src/components/utils/version.js +43 -0
- package/dist/esm/src/components/utils/version.js.map +1 -0
- package/dist/esm/src/sql/QueryEditor/FormatSelect.js +1 -1
- package/dist/esm/src/sql/QueryEditor/FormatSelect.js.map +1 -1
- package/dist/esm/src/sql/QueryEditor/QueryEditorHeader.js +1 -1
- package/dist/esm/src/sql/QueryEditor/QueryEditorHeader.js.map +1 -1
- package/dist/index.js +69 -24
- package/dist/index.js.map +1 -1
- package/package.json +16 -7
- package/dist/esm/node_modules/@emotion/cache/dist/emotion-cache.esm.js.map +0 -1
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
- package/dist/esm/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +0 -1
- package/dist/esm/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js.map +0 -1
- package/dist/esm/node_modules/stylis/src/Enum.js.map +0 -1
- package/dist/esm/node_modules/stylis/src/Middleware.js.map +0 -1
- package/dist/esm/node_modules/stylis/src/Parser.js.map +0 -1
- package/dist/esm/node_modules/stylis/src/Serializer.js.map +0 -1
- package/dist/esm/node_modules/stylis/src/Tokenizer.js.map +0 -1
- package/dist/esm/node_modules/stylis/src/Utility.js.map +0 -1
- /package/dist/esm/node_modules/@emotion/{memoize → css/node_modules/@emotion/memoize}/dist/emotion-memoize.esm.js +0 -0
- /package/dist/esm/node_modules/@emotion/{weak-memoize → css/node_modules/@emotion/weak-memoize}/dist/emotion-weak-memoize.esm.js +0 -0
- /package/dist/esm/node_modules/{stylis → @emotion/css/node_modules/stylis}/src/Middleware.js +0 -0
- /package/dist/esm/node_modules/{stylis → @emotion/css/node_modules/stylis}/src/Tokenizer.js +0 -0
- /package/dist/esm/node_modules/{stylis → @emotion/css/node_modules/stylis}/src/Utility.js +0 -0
- /package/dist/esm/node_modules/@emotion/{hash → serialize/node_modules/@emotion/hash}/dist/emotion-hash.esm.js +0 -0
|
@@ -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, InlineField, ButtonGroup, ToolbarButton, FieldSet, Collapse, useStyles2 } from '@grafana/ui';\nimport {\n DataSourcePluginOptionsEditorProps,\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData, AwsAuthType } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { css } from '@emotion/css';\nimport { NewConnectionConfig } from './NewConnectionConfig';\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};\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 newFormStylingEnabled?: boolean;\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 } = props;\n const { labelWidth = DEFAULT_LABEL_WIDTH, options, inExperimentalAuthComponent } = 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 const inputWidth = inExperimentalAuthComponent ? 'width-20' : 'width-30';\n const styles = useStyles2(getStyles);\n\n return (\n <>\n {props.newFormStylingEnabled ? (\n <NewConnectionConfig\n currentProvider={currentProvider}\n awsAllowedAuthProviders={awsAllowedAuthProviders}\n isARNInstructionsOpen={isARNInstructionsOpen}\n setIsARNInstructionsOpen={setIsARNInstructionsOpen}\n awsAssumeRoleEnabled={awsAssumeRoleEnabled}\n regions={regions}\n assumeRoleInstructionsStyle={styles.assumeRoleInstructions}\n {...props}\n />\n ) : (\n <FieldSet label={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <InlineField\n label=\"Authentication Provider\"\n labelWidth={labelWidth}\n tooltip=\"Specify which AWS credentials chain to use.\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n className={inputWidth}\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </InlineField>\n {options.jsonData.authType === 'credentials' && (\n <InlineField\n label=\"Credentials Profile Name\"\n labelWidth={labelWidth}\n tooltip=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n >\n <Input\n aria-label=\"Credentials Profile Name\"\n className={inputWidth}\n placeholder=\"default\"\n value={profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </InlineField>\n )}\n\n {options.jsonData.authType === 'keys' && (\n <>\n <InlineField label=\"Access Key ID\" labelWidth={labelWidth}>\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup className={inputWidth}>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n aria-label=\"Access Key ID\"\n className={inputWidth}\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </InlineField>\n\n <InlineField label=\"Secret Access Key\" labelWidth={labelWidth}>\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup className={inputWidth}>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n aria-label=\"Secret Access Key\"\n className={inputWidth}\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </InlineField>\n </>\n )}\n\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={styles.assumeRoleInstructions}>\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\n {awsAssumeRoleEnabled && (\n <>\n <InlineField\n label=\"Assume Role ARN\"\n labelWidth={labelWidth}\n tooltip=\"Optionally, specify the ARN of a role to assume. Specifying a role here will ensure that the selected authentication provider is used to assume the specified role rather than using the credentials directly. Leave blank if you don't need to assume a role at all\"\n >\n <Input\n aria-label=\"Assume Role ARN\"\n className={inputWidth}\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </InlineField>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <InlineField\n label=\"External ID\"\n labelWidth={labelWidth}\n tooltip=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n aria-label=\"External ID\"\n className={inputWidth}\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </InlineField>\n )}\n </>\n )}\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <InlineField\n label=\"Endpoint\"\n labelWidth={labelWidth}\n tooltip=\"Optionally, specify a custom endpoint for the service\"\n >\n <Input\n aria-label=\"Endpoint\"\n className={inputWidth}\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </InlineField>\n )}\n <InlineField\n label=\"Default Region\"\n labelWidth={labelWidth}\n tooltip=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n >\n <Select\n aria-label=\"Default Region\"\n className={inputWidth}\n value={regions.find((region) => region.value === options.jsonData.defaultRegion)}\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </InlineField>\n {props.children}\n </FieldSet>\n )}\n </>\n );\n};\n\nfunction getStyles() {\n return {\n assumeRoleInstructions: css({\n maxWidth: '715px',\n }),\n };\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, InlineField, ButtonGroup, ToolbarButton, FieldSet, Collapse } from '@grafana/ui';\nimport {\n DataSourcePluginOptionsEditorProps,\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData, AwsAuthType } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { css } from '@emotion/css';\nimport { NewConnectionConfig } from './NewConnectionConfig';\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};\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 newFormStylingEnabled?: boolean;\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 } = props;\n const { labelWidth = DEFAULT_LABEL_WIDTH, options, inExperimentalAuthComponent } = 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 const inputWidth = inExperimentalAuthComponent ? 'width-20' : 'width-30';\n\n return (\n <>\n {props.newFormStylingEnabled ? (\n <NewConnectionConfig\n currentProvider={currentProvider}\n awsAllowedAuthProviders={awsAllowedAuthProviders}\n isARNInstructionsOpen={isARNInstructionsOpen}\n setIsARNInstructionsOpen={setIsARNInstructionsOpen}\n awsAssumeRoleEnabled={awsAssumeRoleEnabled}\n regions={regions}\n {...props}\n />\n ) : (\n <FieldSet label={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <InlineField\n label=\"Authentication Provider\"\n labelWidth={labelWidth}\n tooltip=\"Specify which AWS credentials chain to use.\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n className={inputWidth}\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </InlineField>\n {options.jsonData.authType === 'credentials' && (\n <InlineField\n label=\"Credentials Profile Name\"\n labelWidth={labelWidth}\n tooltip=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n >\n <Input\n aria-label=\"Credentials Profile Name\"\n className={inputWidth}\n placeholder=\"default\"\n value={profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </InlineField>\n )}\n\n {options.jsonData.authType === 'keys' && (\n <>\n <InlineField label=\"Access Key ID\" labelWidth={labelWidth}>\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup className={inputWidth}>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n aria-label=\"Access Key ID\"\n className={inputWidth}\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </InlineField>\n\n <InlineField label=\"Secret Access Key\" labelWidth={labelWidth}>\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup className={inputWidth}>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n aria-label=\"Secret Access Key\"\n className={inputWidth}\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </InlineField>\n </>\n )}\n\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,\n and select <code>AWS account</code> as the Trusted entity,\n and select <code>Another AWS account</code> as the account.\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\n {awsAssumeRoleEnabled && (\n <>\n <InlineField\n label=\"Assume Role ARN\"\n labelWidth={labelWidth}\n tooltip=\"Optionally, specify the ARN of a role to assume. Specifying a role here will ensure that the selected authentication provider is used to assume the specified role rather than using the credentials directly. Leave blank if you don't need to assume a role at all\"\n >\n <Input\n aria-label=\"Assume Role ARN\"\n className={inputWidth}\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </InlineField>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <InlineField\n label=\"External ID\"\n labelWidth={labelWidth}\n tooltip=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n aria-label=\"External ID\"\n className={inputWidth}\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </InlineField>\n )}\n </>\n )}\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <InlineField\n label=\"Endpoint\"\n labelWidth={labelWidth}\n tooltip=\"Optionally, specify a custom endpoint for the service\"\n >\n <Input\n aria-label=\"Endpoint\"\n className={inputWidth}\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </InlineField>\n )}\n <InlineField\n label=\"Default Region\"\n labelWidth={labelWidth}\n tooltip=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n >\n <Select\n aria-label=\"Default Region\"\n className={inputWidth}\n value={regions.find((region) => region.value === options.jsonData.defaultRegion)}\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </InlineField>\n {props.children}\n </FieldSet>\n )}\n </>\n );\n};\n\nexport const assumeRoleInstructionsStyle = css({\n maxWidth: '715px',\n})\n\n"],"names":["regions"],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { useTheme2 } from '@grafana/ui';
|
|
2
|
+
import { useTheme2, Divider as Divider$1 } from '@grafana/ui';
|
|
3
|
+
import { config } from '@grafana/runtime';
|
|
4
|
+
import { isVersionGtOrEq } from './utils/version.js';
|
|
3
5
|
|
|
4
6
|
function Divider() {
|
|
5
7
|
const theme = useTheme2();
|
|
8
|
+
if (isVersionGtOrEq(config.buildInfo.version, "10.1.0")) {
|
|
9
|
+
return /* @__PURE__ */ React.createElement(Divider$1, null);
|
|
10
|
+
}
|
|
6
11
|
return /* @__PURE__ */ React.createElement(
|
|
7
12
|
"div",
|
|
8
13
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.js","sources":["../../../../src/components/Divider.tsx"],"sourcesContent":["// copied from Azure Data Explorer plugin since there is not Divider component in G<10.1\nimport React from 'react';\nimport { useTheme2 } from '@grafana/ui';\n\nexport function Divider() {\n const theme = useTheme2();\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"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Divider.js","sources":["../../../../src/components/Divider.tsx"],"sourcesContent":["// 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"],"names":["GrafanaDivider"],"mappings":";;;;;AAMO,SAAS,OAAU,GAAA;AACxB,EAAA,MAAM,QAAQ,SAAU,EAAA,CAAA;AACxB,EAAA,IAAI,eAAgB,CAAA,MAAA,CAAO,SAAU,CAAA,OAAA,EAAS,QAAQ,CAAG,EAAA;AACvD,IAAA,2CAAQA,SAAe,EAAA,IAAA,CAAA,CAAA;AAAA,GACzB;AACA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,EAAE,SAAW,EAAA,CAAA,UAAA,EAAa,MAAM,MAAO,CAAA,MAAA,CAAO,IAAQ,CAAA,CAAA,EAAA,MAAA,EAAQ,MAAM,OAAQ,CAAA,CAAA,EAAG,CAAC,CAAA,EAAG,OAAO,MAAO,EAAA;AAAA,KAAA;AAAA,GACzG,CAAA;AAEL;;;;"}
|
|
@@ -4,6 +4,7 @@ import { onUpdateDatasourceJsonDataOptionSelect, onUpdateDatasourceJsonDataOptio
|
|
|
4
4
|
import { AwsAuthType } from '../types.js';
|
|
5
5
|
import { awsAuthProviderOptions } from '../providers.js';
|
|
6
6
|
import { ConfigSection, ConfigSubSection } from '@grafana/experimental';
|
|
7
|
+
import { assumeRoleInstructionsStyle } from './ConnectionConfig.js';
|
|
7
8
|
|
|
8
9
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
10
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
@@ -28,8 +29,7 @@ const NewConnectionConfig = (_a) => {
|
|
|
28
29
|
currentProvider,
|
|
29
30
|
awsAllowedAuthProviders,
|
|
30
31
|
skipHeader,
|
|
31
|
-
regions
|
|
32
|
-
assumeRoleInstructionsStyle
|
|
32
|
+
regions
|
|
33
33
|
} = _b, props = __objRest(_b, [
|
|
34
34
|
"isARNInstructionsOpen",
|
|
35
35
|
"setIsARNInstructionsOpen",
|
|
@@ -37,8 +37,7 @@ const NewConnectionConfig = (_a) => {
|
|
|
37
37
|
"currentProvider",
|
|
38
38
|
"awsAllowedAuthProviders",
|
|
39
39
|
"skipHeader",
|
|
40
|
-
"regions"
|
|
41
|
-
"assumeRoleInstructionsStyle"
|
|
40
|
+
"regions"
|
|
42
41
|
]);
|
|
43
42
|
var _a2, _b2, _c, _d, _e, _f, _g;
|
|
44
43
|
const options = props.options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewConnectionConfig.js","sources":["../../../../src/components/NewConnectionConfig.tsx"],"sourcesContent":["import React from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n SelectableValue,\n} from '@grafana/data';\nimport { AwsAuthType } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\nimport { ConnectionConfigProps } from './ConnectionConfig';\n\ninterface NewConnectionConfigProps extends ConnectionConfigProps {\n currentProvider?: SelectableValue<AwsAuthType> | undefined;\n awsAllowedAuthProviders: string[];\n isARNInstructionsOpen: boolean;\n setIsARNInstructionsOpen: (isOpen: boolean) => void;\n awsAssumeRoleEnabled: boolean;\n regions: SelectableValue[];\n assumeRoleInstructionsStyle: string;\n}\n\nexport const NewConnectionConfig = ({\n isARNInstructionsOpen,\n setIsARNInstructionsOpen,\n awsAssumeRoleEnabled,\n currentProvider,\n awsAllowedAuthProviders,\n skipHeader,\n regions,\n assumeRoleInstructionsStyle,\n ...props\n}: NewConnectionConfigProps) => {\n const options = props.options;\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 id=\"authProvider\"\n aria-label=\"Authentication Provider\"\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 {!props.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 id=\"defaultRegion\"\n aria-label=\"Default Region\"\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};\n"],"names":["_a","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NewConnectionConfig.js","sources":["../../../../src/components/NewConnectionConfig.tsx"],"sourcesContent":["import React from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n SelectableValue,\n} from '@grafana/data';\nimport { AwsAuthType } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\nimport { ConnectionConfigProps, assumeRoleInstructionsStyle } from './ConnectionConfig';\n\ninterface NewConnectionConfigProps extends ConnectionConfigProps {\n currentProvider?: SelectableValue<AwsAuthType> | undefined;\n awsAllowedAuthProviders: string[];\n isARNInstructionsOpen: boolean;\n setIsARNInstructionsOpen: (isOpen: boolean) => void;\n awsAssumeRoleEnabled: boolean;\n regions: SelectableValue[];\n}\n\nexport const NewConnectionConfig = ({\n isARNInstructionsOpen,\n setIsARNInstructionsOpen,\n awsAssumeRoleEnabled,\n currentProvider,\n awsAllowedAuthProviders,\n skipHeader,\n regions,\n ...props\n}: NewConnectionConfigProps) => {\n const options = props.options;\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 id=\"authProvider\"\n aria-label=\"Authentication Provider\"\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 {!props.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 id=\"defaultRegion\"\n aria-label=\"Default Region\"\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};\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBa,MAAA,mBAAA,GAAsB,CAAC,EASJ,KAAA;AATI,EAClC,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,qBAAA;AAAA,IACA,wBAAA;AAAA,IACA,oBAAA;AAAA,IACA,eAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,GA9BF,GAuBoC,EAQ/B,EAAA,KAAA,GAAA,SAAA,CAR+B,EAQ/B,EAAA;AAAA,IAPH,uBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sBAAA;AAAA,IACA,iBAAA;AAAA,IACA,yBAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,GAAA,CAAA,CAAA;AA9BF,EAAA,IAAAA,KAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAiCE,EAAA,MAAM,UAAU,KAAM,CAAA,OAAA,CAAA;AACtB,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,aAAY,EAAA,mBAAA,EAAA,sCACd,aAAc,EAAA,EAAA,KAAA,EAAO,UAAa,GAAA,EAAA,GAAK,sBAAsB,aAAY,EAAA,mBAAA,EAAA,kBACvE,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,OAAM,gBACtB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,yBAAA;AAAA,MACN,WAAY,EAAA,6CAAA;AAAA,MACZ,OAAQ,EAAA,cAAA;AAAA,KAAA;AAAA,oBAER,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,cAAA;AAAA,QACH,YAAW,EAAA,yBAAA;AAAA,QACX,KAAO,EAAA,eAAA;AAAA,QACP,OAAA,EAAS,uBAAuB,MAAO,CAAA,CAAC,QAAQ,uBAAwB,CAAA,QAAA,CAAS,GAAI,CAAA,KAAM,CAAC,CAAA;AAAA,QAC5F,YAAA,EAAc,QAAQ,QAAS,CAAA,QAAA;AAAA,QAC/B,QAAA,EAAU,CAAC,MAAW,KAAA;AACpB,UAAuC,sCAAA,CAAA,KAAA,EAAO,UAAU,CAAA,CAAE,MAAM,CAAA,CAAA;AAAA,SAClE;AAAA,QACA,gBAAkB,EAAA,IAAA;AAAA,OAAA;AAAA,KACpB;AAAA,GAED,EAAA,OAAA,CAAQ,QAAS,CAAA,QAAA,KAAa,aAC7B,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,0BAAA;AAAA,MACN,WAAY,EAAA,wFAAA;AAAA,MACZ,OAAQ,EAAA,wBAAA;AAAA,KAAA;AAAA,oBAER,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,wBAAA;AAAA,QACH,WAAY,EAAA,SAAA;AAAA,QACZ,KAAA,EAAO,QAAQ,QAAS,CAAA,OAAA;AAAA,QACxB,QAAA,EAAU,gCAAiC,CAAA,KAAA,EAAO,SAAS,CAAA;AAAA,OAAA;AAAA,KAC7D;AAAA,GAGH,EAAA,OAAA,CAAQ,QAAS,CAAA,QAAA,KAAa,MAC7B,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,KAAM,EAAA,eAAA,EAAgB,OAAQ,EAAA,aAAA,EAAA,EAAA,CAAA,CAClCD,GAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,gBAAA,KAAd,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAgC,SAC/B,oBAAA,KAAA,CAAA,aAAA,CAAC,WACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAM,EAAA,EAAA,QAAA,EAAQ,IAAC,EAAA,WAAA,EAAY,YAAa,EAAA,EAAA,EAAG,eAAc,CAC1D,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,MAAA;AAAA,MACL,OAAQ,EAAA,oBAAA;AAAA,MACR,IAAK,EAAA,QAAA;AAAA,MACL,OAAA,EAAS,6BAA8B,CAAA,KAAA,EAAc,WAAW,CAAA;AAAA,KAAA;AAAA,GAEpE,CAEA,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,aAAA;AAAA,MACH,KAAA,EAAA,CAAO,MAAAC,GAAA,GAAA,OAAA,CAAQ,mBAAR,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAwB,cAAxB,IAAqC,GAAA,EAAA,GAAA,EAAA;AAAA,MAC5C,QAAA,EAAU,sCAAuC,CAAA,KAAA,EAAO,WAAW,CAAA;AAAA,KAAA;AAAA,GAGzE,mBAEC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,OAAM,mBAAoB,EAAA,OAAA,EAAQ,iBACtC,EAAM,GAAA,KAAA,CAAA,OAAA,CAAQ,qBAAd,IAAgC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,wCAC9B,WACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAM,QAAQ,EAAA,IAAA,EAAC,WAAY,EAAA,YAAA,EAAa,CACzC,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,WAAA;AAAA,MACH,IAAK,EAAA,MAAA;AAAA,MACL,IAAK,EAAA,QAAA;AAAA,MACL,OAAQ,EAAA,wBAAA;AAAA,MACR,OAAA,EAAS,6BAA8B,CAAA,KAAA,EAAc,WAAW,CAAA;AAAA,KAAA;AAAA,GAEpE,CAEA,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,WAAA;AAAA,MACH,KAAO,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,cAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,cAAxB,IAAqC,GAAA,EAAA,GAAA,EAAA;AAAA,MAC5C,QAAA,EAAU,sCAAuC,CAAA,KAAA,EAAO,WAAW,CAAA;AAAA,KAAA;AAAA,GAGzE,CACF,CAEJ,CAEA,kBAAA,KAAA,CAAA,aAAA,CAAC,oBAAiB,KAAM,EAAA,aAAA,EAAA,EACrB,OAAQ,CAAA,QAAA,CAAS,aAAa,WAAY,CAAA,iBAAA,oBACxC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAW,2BACd,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,kDAAA;AAAA,MACP,WAAa,EAAA,IAAA;AAAA,MACb,MAAQ,EAAA,qBAAA;AAAA,MACR,QAAU,EAAA,MAAM,wBAAyB,CAAA,CAAC,qBAAqB,CAAA;AAAA,KAAA;AAAA,oBAE9D,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,0DACuD,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,qBAAmB,CAAO,EAAA,SAAA,EAAQ,GAChG,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,gBAAc,CAAO,EAAA,GAC7B,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,yFAED,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,gBAAc,GAAO,iBAAe,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,qBAAmB,CAAO,EAAA,OAC5E,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,qCACmC,EAAA,GAAA,kBACnC,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAM,MAAM,UAAc,IAAA,sCAAuC,CAAO,EAAA,YAAA,EAAW,GACpF,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,MAAI,CAAO,EAAA,GACnB,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,0IAEsC,GACvC,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,qEAAA;AAAA,QACL,MAAO,EAAA,QAAA;AAAA,QACP,GAAI,EAAA,YAAA;AAAA,OAAA;AAAA,MACL,gCAAA;AAAA,KAEG,EAAA,GAEN,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,qDACkD,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,aAAW,CAAO,EAAA,GAC7E,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,qEACkE,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,IAAA,EAAA,iBAAe,CAAQ,EAAA,GAAA,EAAI,cAEtG,CACF,CACF,CAAA;AAAA,GAEJ,CAED,EAAA,oBAAA,oBAEG,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,eAAA;AAAA,MACR,KAAM,EAAA,iBAAA;AAAA,MACN,WAAY,EAAA,qMAAA;AAAA,KAAA;AAAA,oBAIZ,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,eAAA;AAAA,QACH,WAAY,EAAA,eAAA;AAAA,QACZ,KAAA,EAAO,OAAQ,CAAA,QAAA,CAAS,aAAiB,IAAA,EAAA;AAAA,QACzC,QAAA,EAAU,gCAAiC,CAAA,KAAA,EAAO,eAAe,CAAA;AAAA,OAAA;AAAA,KACnE;AAAA,GAED,EAAA,OAAA,CAAQ,QAAS,CAAA,QAAA,KAAa,YAAY,iBACzC,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,YAAA;AAAA,MACR,KAAM,EAAA,aAAA;AAAA,MACN,WAAY,EAAA,yHAAA;AAAA,KAAA;AAAA,oBAEZ,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,YAAA;AAAA,QACH,WAAY,EAAA,aAAA;AAAA,QACZ,KAAA,EAAO,OAAQ,CAAA,QAAA,CAAS,UAAc,IAAA,EAAA;AAAA,QACtC,QAAA,EAAU,gCAAiC,CAAA,KAAA,EAAO,YAAY,CAAA;AAAA,OAAA;AAAA,KAChE;AAAA,GAGN,CAEJ,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,oBAAiB,KAAM,EAAA,qBAAA,EAAA,EACrB,CAAC,KAAA,CAAM,YAAgB,IAAA,OAAA,CAAQ,QAAS,CAAA,QAAA,KAAa,YAAY,iBAChE,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,UAAA;AAAA,MACN,WAAY,EAAA,uDAAA;AAAA,MACZ,OAAQ,EAAA,UAAA;AAAA,KAAA;AAAA,oBAER,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,UAAA;AAAA,QACH,WAAA,EAAA,CAAa,EAAM,GAAA,KAAA,CAAA,eAAA,KAAN,IAAyB,GAAA,EAAA,GAAA,0CAAA;AAAA,QACtC,KAAA,EAAO,OAAQ,CAAA,QAAA,CAAS,QAAY,IAAA,EAAA;AAAA,QACpC,QAAA,EAAU,gCAAiC,CAAA,KAAA,EAAO,UAAU,CAAA;AAAA,OAAA;AAAA,KAC9D;AAAA,GAIJ,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,gBAAA;AAAA,MACN,WAAY,EAAA,mFAAA;AAAA,MACZ,OAAQ,EAAA,eAAA;AAAA,KAAA;AAAA,oBAER,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,eAAA;AAAA,QACH,YAAW,EAAA,gBAAA;AAAA,QACX,KAAA,EAAO,QAAQ,IAAK,CAAA,CAAC,WAAW,MAAO,CAAA,KAAA,KAAU,OAAQ,CAAA,QAAA,CAAS,aAAa,CAAA;AAAA,QAC/E,OAAS,EAAA,OAAA;AAAA,QACT,YAAA,EAAc,QAAQ,QAAS,CAAA,aAAA;AAAA,QAC/B,gBAAkB,EAAA,IAAA;AAAA,QAClB,QAAA,EAAU,sCAAuC,CAAA,KAAA,EAAO,eAAe,CAAA;AAAA,QACvE,iBAAA,EAAmB,CAAC,CAAA,KAAM,CAAe,YAAA,EAAA,CAAA,CAAA,CAAA;AAAA,QACzC,gBAAkB,EAAA,IAAA;AAAA,OAAA;AAAA,KACpB;AAAA,GAEJ,CAAA,EACC,KAAM,CAAA,QACT,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { isNumber } from 'lodash';
|
|
2
|
+
|
|
3
|
+
const versionPattern = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z\.]+))?/;
|
|
4
|
+
class SemVersion {
|
|
5
|
+
constructor(version) {
|
|
6
|
+
this.major = 0;
|
|
7
|
+
this.minor = 0;
|
|
8
|
+
this.patch = 0;
|
|
9
|
+
this.meta = "";
|
|
10
|
+
const match = versionPattern.exec(version);
|
|
11
|
+
if (match) {
|
|
12
|
+
this.major = Number(match[1]);
|
|
13
|
+
this.minor = Number(match[2] || 0);
|
|
14
|
+
this.patch = Number(match[3] || 0);
|
|
15
|
+
this.meta = match[4];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
isGtOrEq(version) {
|
|
19
|
+
const compared = new SemVersion(version);
|
|
20
|
+
for (let i = 0; i < this.comparable.length; ++i) {
|
|
21
|
+
if (this.comparable[i] > compared.comparable[i]) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (this.comparable[i] < compared.comparable[i]) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
isValid() {
|
|
31
|
+
return isNumber(this.major);
|
|
32
|
+
}
|
|
33
|
+
get comparable() {
|
|
34
|
+
return [this.major, this.minor, this.patch];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isVersionGtOrEq(a, b) {
|
|
38
|
+
const aSemver = new SemVersion(a);
|
|
39
|
+
return aSemver.isGtOrEq(b);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { SemVersion, isVersionGtOrEq };
|
|
43
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../../../../../src/components/utils/version.ts"],"sourcesContent":["// 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"],"names":[],"mappings":";;AAGA,MAAM,cAAiB,GAAA,sDAAA,CAAA;AAEhB,MAAM,UAAW,CAAA;AAAA,EAMtB,YAAY,OAAiB,EAAA;AAC3B,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AACb,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AACb,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,EAAA,CAAA;AAEZ,IAAM,MAAA,KAAA,GAAQ,cAAe,CAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AACzC,IAAA,IAAI,KAAO,EAAA;AACT,MAAK,IAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,CAAM,CAAE,CAAA,CAAA,CAAA;AAC5B,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAA,CAAA,IAAM,CAAC,CAAA,CAAA;AACjC,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAA,CAAA,IAAM,CAAC,CAAA,CAAA;AACjC,MAAA,IAAA,CAAK,OAAO,KAAM,CAAA,CAAA,CAAA,CAAA;AAAA,KACpB;AAAA,GACF;AAAA,EAEA,SAAS,OAA0B,EAAA;AACjC,IAAM,MAAA,QAAA,GAAW,IAAI,UAAA,CAAW,OAAO,CAAA,CAAA;AAEvC,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAK,UAAW,CAAA,MAAA,EAAQ,EAAE,CAAG,EAAA;AAC/C,MAAA,IAAI,IAAK,CAAA,UAAA,CAAW,CAAK,CAAA,GAAA,QAAA,CAAS,WAAW,CAAI,CAAA,EAAA;AAC/C,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,IAAK,CAAA,UAAA,CAAW,CAAK,CAAA,GAAA,QAAA,CAAS,WAAW,CAAI,CAAA,EAAA;AAC/C,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAmB,GAAA;AACjB,IAAO,OAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAAA,GAC5B;AAAA,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,CAAC,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,KAAK,KAAK,CAAA,CAAA;AAAA,GAC5C;AACF,CAAA;AAEgB,SAAA,eAAA,CAAgB,GAAW,CAAoB,EAAA;AAC7D,EAAM,MAAA,OAAA,GAAU,IAAI,UAAA,CAAW,CAAC,CAAA,CAAA;AAChC,EAAO,OAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAA;AAC3B;;;;"}
|
|
@@ -32,7 +32,7 @@ function FormatSelect(props) {
|
|
|
32
32
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, props.newFormStylingEnabled ? /* @__PURE__ */ React.createElement(
|
|
33
33
|
Select,
|
|
34
34
|
{
|
|
35
|
-
"aria-label": "Format
|
|
35
|
+
"aria-label": "Format data frames as",
|
|
36
36
|
id: (_a = props.id) != null ? _a : "formatAs",
|
|
37
37
|
options: props.options,
|
|
38
38
|
value: props.query.format,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormatSelect.js","sources":["../../../../../src/sql/QueryEditor/FormatSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { InlineField, Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n newFormStylingEnabled?: boolean;\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 (\n <>\n {props.newFormStylingEnabled ? (\n <Select\n aria-label=\"Format
|
|
1
|
+
{"version":3,"file":"FormatSelect.js","sources":["../../../../../src/sql/QueryEditor/FormatSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { InlineField, Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n newFormStylingEnabled?: boolean;\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 (\n <>\n {props.newFormStylingEnabled ? (\n <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 <InlineField label=\"Format as\" labelWidth={11}>\n <Select\n aria-label=\"Format as\"\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n className=\"width-12\"\n menuShouldPortal={true}\n />\n </InlineField>\n )}\n </>\n );\n}\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaO,SAAS,aACd,KACA,EAAA;AAfF,EAAA,IAAA,EAAA,CAAA;AAgBE,EAAM,MAAA,cAAA,GAAiB,CAAC,CAAsC,KAAA;AAhBhE,IAAAA,IAAAA,GAAAA,CAAAA;AAiBI,IAAM,KAAA,CAAA,QAAA,CAAS,aACV,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,KADI,CAAA,EAAA;AAAA,MAEb,MAAA,EAAQ,EAAE,KAAS,IAAA,CAAA;AAAA,KACpB,CAAA,CAAA,CAAA;AACD,IAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,UAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACF,CAAA;AACA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,MAAM,qBACL,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,uBAAA;AAAA,MACX,EAAA,EAAA,CAAI,EAAM,GAAA,KAAA,CAAA,EAAA,KAAN,IAAY,GAAA,EAAA,GAAA,UAAA;AAAA,MAChB,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,KAAA,EAAO,MAAM,KAAM,CAAA,MAAA;AAAA,MACnB,QAAU,EAAA,cAAA;AAAA,MACV,gBAAkB,EAAA,IAAA;AAAA,KAAA;AAAA,sBAGnB,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,KAAM,EAAA,WAAA,EAAY,YAAY,EACzC,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,WAAA;AAAA,MACX,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,KAAA,EAAO,MAAM,KAAM,CAAA,MAAA;AAAA,MACnB,QAAU,EAAA,cAAA;AAAA,MACV,SAAU,EAAA,UAAA;AAAA,MACV,gBAAkB,EAAA,IAAA;AAAA,KAAA;AAAA,GAEtB,CAEJ,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -32,7 +32,7 @@ function QueryEditorHeader({
|
|
|
32
32
|
icon: (data == null ? void 0 : data.state) === LoadingState.Loading ? "fa fa-spinner" : void 0,
|
|
33
33
|
disabled: (data == null ? void 0 : data.state) === LoadingState.Loading || !enableRunButton
|
|
34
34
|
},
|
|
35
|
-
"Run
|
|
35
|
+
"Run queries"
|
|
36
36
|
), extraHeaderElementRight);
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -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
|
|
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,aAAe,EAAA,MAAA;AAAA,MACf,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.js
CHANGED
|
@@ -238,6 +238,7 @@ var RULESET = 'rule';
|
|
|
238
238
|
var DECLARATION = 'decl';
|
|
239
239
|
var IMPORT = '@import';
|
|
240
240
|
var KEYFRAMES = '@keyframes';
|
|
241
|
+
var LAYER = '@layer';
|
|
241
242
|
|
|
242
243
|
/**
|
|
243
244
|
* @param {number}
|
|
@@ -652,7 +653,7 @@ function parse (value, root, parent, rule, rules, rulesets, pseudo, points, decl
|
|
|
652
653
|
// \0 }
|
|
653
654
|
case 0: case 125: scanning = 0;
|
|
654
655
|
// ;
|
|
655
|
-
case 59 + offset:
|
|
656
|
+
case 59 + offset: if (ampersand == -1) characters = replace(characters, /\f/g, '');
|
|
656
657
|
if (property > 0 && (strlen(characters) - length))
|
|
657
658
|
append(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations);
|
|
658
659
|
break
|
|
@@ -667,8 +668,8 @@ function parse (value, root, parent, rule, rules, rulesets, pseudo, points, decl
|
|
|
667
668
|
parse(characters, root, reference, reference, props, rulesets, length, points, children);
|
|
668
669
|
else
|
|
669
670
|
switch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {
|
|
670
|
-
// d m s
|
|
671
|
-
case 100: case 109: case 115:
|
|
671
|
+
// d l m s
|
|
672
|
+
case 100: case 108: case 109: case 115:
|
|
672
673
|
parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children);
|
|
673
674
|
break
|
|
674
675
|
default:
|
|
@@ -787,6 +788,7 @@ function serialize (children, callback) {
|
|
|
787
788
|
*/
|
|
788
789
|
function stringify (element, index, children, callback) {
|
|
789
790
|
switch (element.type) {
|
|
791
|
+
case LAYER: if (element.children.length) break
|
|
790
792
|
case IMPORT: case DECLARATION: return element.return = element.return || element.value
|
|
791
793
|
case COMMENT: return ''
|
|
792
794
|
case KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'
|
|
@@ -840,7 +842,7 @@ var weakMemoize = function weakMemoize(func) {
|
|
|
840
842
|
};
|
|
841
843
|
};
|
|
842
844
|
|
|
843
|
-
function memoize(fn) {
|
|
845
|
+
function memoize$1(fn) {
|
|
844
846
|
var cache = Object.create(null);
|
|
845
847
|
return function (arg) {
|
|
846
848
|
if (cache[arg] === undefined) cache[arg] = fn(arg);
|
|
@@ -984,7 +986,7 @@ var createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {
|
|
|
984
986
|
var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);
|
|
985
987
|
|
|
986
988
|
if (unsafePseudoClasses) {
|
|
987
|
-
var isNested = element.parent
|
|
989
|
+
var isNested = !!element.parent; // in nested rules comments become children of the "auto-inserted" rule and that's always the `element.parent`
|
|
988
990
|
//
|
|
989
991
|
// considering this input:
|
|
990
992
|
// .a {
|
|
@@ -1000,7 +1002,7 @@ var createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {
|
|
|
1000
1002
|
// .b {}
|
|
1001
1003
|
// }
|
|
1002
1004
|
|
|
1003
|
-
var commentContainer = isNested ?
|
|
1005
|
+
var commentContainer = isNested ? element.parent.children : // global rule at the root level
|
|
1004
1006
|
children;
|
|
1005
1007
|
|
|
1006
1008
|
for (var i = commentContainer.length - 1; i >= 0; i--) {
|
|
@@ -1295,7 +1297,7 @@ var prefixer = function prefixer(element, index, children, callback) {
|
|
|
1295
1297
|
|
|
1296
1298
|
var isBrowser$1 = typeof document !== 'undefined';
|
|
1297
1299
|
var getServerStylisCache = isBrowser$1 ? undefined : weakMemoize(function () {
|
|
1298
|
-
return memoize(function () {
|
|
1300
|
+
return memoize$1(function () {
|
|
1299
1301
|
var cache = {};
|
|
1300
1302
|
return function (name) {
|
|
1301
1303
|
return cache[name];
|
|
@@ -1546,6 +1548,7 @@ function murmur2(str) {
|
|
|
1546
1548
|
|
|
1547
1549
|
var unitlessKeys = {
|
|
1548
1550
|
animationIterationCount: 1,
|
|
1551
|
+
aspectRatio: 1,
|
|
1549
1552
|
borderImageOutset: 1,
|
|
1550
1553
|
borderImageSlice: 1,
|
|
1551
1554
|
borderImageWidth: 1,
|
|
@@ -1593,6 +1596,14 @@ var unitlessKeys = {
|
|
|
1593
1596
|
strokeWidth: 1
|
|
1594
1597
|
};
|
|
1595
1598
|
|
|
1599
|
+
function memoize(fn) {
|
|
1600
|
+
var cache = Object.create(null);
|
|
1601
|
+
return function (arg) {
|
|
1602
|
+
if (cache[arg] === undefined) cache[arg] = fn(arg);
|
|
1603
|
+
return cache[arg];
|
|
1604
|
+
};
|
|
1605
|
+
}
|
|
1606
|
+
|
|
1596
1607
|
var ILLEGAL_ESCAPE_SEQUENCE_ERROR = "You have illegal escape sequence in your template literal, most likely inside content's property value.\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \"content: '\\00d7';\" should become \"content: '\\\\00d7';\".\nYou can read more about this here:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences";
|
|
1597
1608
|
var UNDEFINED_AS_OBJECT_KEY_ERROR = "You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).";
|
|
1598
1609
|
var hyphenateRegex = /[A-Z]|^ms/g;
|
|
@@ -2123,8 +2134,7 @@ const NewConnectionConfig = (_a) => {
|
|
|
2123
2134
|
currentProvider,
|
|
2124
2135
|
awsAllowedAuthProviders,
|
|
2125
2136
|
skipHeader,
|
|
2126
|
-
regions
|
|
2127
|
-
assumeRoleInstructionsStyle
|
|
2137
|
+
regions
|
|
2128
2138
|
} = _b, props = __objRest(_b, [
|
|
2129
2139
|
"isARNInstructionsOpen",
|
|
2130
2140
|
"setIsARNInstructionsOpen",
|
|
@@ -2132,8 +2142,7 @@ const NewConnectionConfig = (_a) => {
|
|
|
2132
2142
|
"currentProvider",
|
|
2133
2143
|
"awsAllowedAuthProviders",
|
|
2134
2144
|
"skipHeader",
|
|
2135
|
-
"regions"
|
|
2136
|
-
"assumeRoleInstructionsStyle"
|
|
2145
|
+
"regions"
|
|
2137
2146
|
]);
|
|
2138
2147
|
var _a2, _b2, _c, _d, _e, _f, _g;
|
|
2139
2148
|
const options = props.options;
|
|
@@ -2352,7 +2361,6 @@ const ConnectionConfig = (props) => {
|
|
|
2352
2361
|
loadRegions().then((regions2) => setRegions(regions2.map(toOption)));
|
|
2353
2362
|
}, [loadRegions]);
|
|
2354
2363
|
const inputWidth = inExperimentalAuthComponent ? "width-20" : "width-30";
|
|
2355
|
-
const styles = ui.useStyles2(getStyles);
|
|
2356
2364
|
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, props.newFormStylingEnabled ? /* @__PURE__ */ React__default["default"].createElement(
|
|
2357
2365
|
NewConnectionConfig,
|
|
2358
2366
|
__spreadValues$7({
|
|
@@ -2361,8 +2369,7 @@ const ConnectionConfig = (props) => {
|
|
|
2361
2369
|
isARNInstructionsOpen,
|
|
2362
2370
|
setIsARNInstructionsOpen,
|
|
2363
2371
|
awsAssumeRoleEnabled,
|
|
2364
|
-
regions
|
|
2365
|
-
assumeRoleInstructionsStyle: styles.assumeRoleInstructions
|
|
2372
|
+
regions
|
|
2366
2373
|
}, props)
|
|
2367
2374
|
) : /* @__PURE__ */ React__default["default"].createElement(ui.FieldSet, { label: skipHeader ? "" : "Connection Details", "data-testid": "connection-config" }, /* @__PURE__ */ React__default["default"].createElement(
|
|
2368
2375
|
ui.InlineField,
|
|
@@ -2434,7 +2441,7 @@ const ConnectionConfig = (props) => {
|
|
|
2434
2441
|
value: (_g = (_f = options.secureJsonData) == null ? void 0 : _f.secretKey) != null ? _g : "",
|
|
2435
2442
|
onChange: data.onUpdateDatasourceSecureJsonDataOption(props, "secretKey")
|
|
2436
2443
|
}
|
|
2437
|
-
))), options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React__default["default"].createElement("div", { className:
|
|
2444
|
+
))), options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && /* @__PURE__ */ React__default["default"].createElement("div", { className: assumeRoleInstructionsStyle }, /* @__PURE__ */ React__default["default"].createElement(
|
|
2438
2445
|
ui.Collapse,
|
|
2439
2446
|
{
|
|
2440
2447
|
label: "How to create an IAM role for grafana to assume:",
|
|
@@ -2442,7 +2449,7 @@ const ConnectionConfig = (props) => {
|
|
|
2442
2449
|
isOpen: isARNInstructionsOpen,
|
|
2443
2450
|
onToggle: () => setIsARNInstructionsOpen(!isARNInstructionsOpen)
|
|
2444
2451
|
},
|
|
2445
|
-
/* @__PURE__ */ React__default["default"].createElement("ol", null, /* @__PURE__ */ React__default["default"].createElement("li", null, /* @__PURE__ */ React__default["default"].createElement("p", null, "1. Create a new IAM role in the AWS console, and select ", /* @__PURE__ */ React__default["default"].createElement("code", null, "
|
|
2452
|
+
/* @__PURE__ */ React__default["default"].createElement("ol", null, /* @__PURE__ */ React__default["default"].createElement("li", null, /* @__PURE__ */ React__default["default"].createElement("p", null, "1. Create a new IAM role in the AWS console, and select ", /* @__PURE__ */ React__default["default"].createElement("code", null, "AWS account"), " as the Trusted entity, and select ", /* @__PURE__ */ React__default["default"].createElement("code", null, "Another AWS account"), " as the account.")), /* @__PURE__ */ React__default["default"].createElement("li", null, /* @__PURE__ */ React__default["default"].createElement("p", null, "2. Enter the account ID of the Grafana account that has permission to assume this role:", /* @__PURE__ */ React__default["default"].createElement("code", null, " 008923505280 "), " and check the ", /* @__PURE__ */ React__default["default"].createElement("code", null, "Require external ID"), " box.")), /* @__PURE__ */ React__default["default"].createElement("li", null, /* @__PURE__ */ React__default["default"].createElement("p", null, "3. Enter the following external ID:", " ", /* @__PURE__ */ React__default["default"].createElement("code", null, props.externalId || "External Id is currently unavailable"), " and click", " ", /* @__PURE__ */ React__default["default"].createElement("code", null, "Next"), ".")), /* @__PURE__ */ React__default["default"].createElement("li", null, /* @__PURE__ */ React__default["default"].createElement("p", null, "4. Add any required permissions you would like Grafana to be able to access on your behalf. For more details on our permissions please", " ", /* @__PURE__ */ React__default["default"].createElement(
|
|
2446
2453
|
"a",
|
|
2447
2454
|
{
|
|
2448
2455
|
href: "https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/",
|
|
@@ -2525,16 +2532,54 @@ const ConnectionConfig = (props) => {
|
|
|
2525
2532
|
)
|
|
2526
2533
|
), props.children));
|
|
2527
2534
|
};
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2535
|
+
const assumeRoleInstructionsStyle = css({
|
|
2536
|
+
maxWidth: "715px"
|
|
2537
|
+
});
|
|
2538
|
+
|
|
2539
|
+
const versionPattern = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z\.]+))?/;
|
|
2540
|
+
class SemVersion {
|
|
2541
|
+
constructor(version) {
|
|
2542
|
+
this.major = 0;
|
|
2543
|
+
this.minor = 0;
|
|
2544
|
+
this.patch = 0;
|
|
2545
|
+
this.meta = "";
|
|
2546
|
+
const match = versionPattern.exec(version);
|
|
2547
|
+
if (match) {
|
|
2548
|
+
this.major = Number(match[1]);
|
|
2549
|
+
this.minor = Number(match[2] || 0);
|
|
2550
|
+
this.patch = Number(match[3] || 0);
|
|
2551
|
+
this.meta = match[4];
|
|
2552
|
+
}
|
|
2553
|
+
}
|
|
2554
|
+
isGtOrEq(version) {
|
|
2555
|
+
const compared = new SemVersion(version);
|
|
2556
|
+
for (let i = 0; i < this.comparable.length; ++i) {
|
|
2557
|
+
if (this.comparable[i] > compared.comparable[i]) {
|
|
2558
|
+
return true;
|
|
2559
|
+
}
|
|
2560
|
+
if (this.comparable[i] < compared.comparable[i]) {
|
|
2561
|
+
return false;
|
|
2562
|
+
}
|
|
2563
|
+
}
|
|
2564
|
+
return true;
|
|
2565
|
+
}
|
|
2566
|
+
isValid() {
|
|
2567
|
+
return lodash.isNumber(this.major);
|
|
2568
|
+
}
|
|
2569
|
+
get comparable() {
|
|
2570
|
+
return [this.major, this.minor, this.patch];
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
function isVersionGtOrEq(a, b) {
|
|
2574
|
+
const aSemver = new SemVersion(a);
|
|
2575
|
+
return aSemver.isGtOrEq(b);
|
|
2534
2576
|
}
|
|
2535
2577
|
|
|
2536
2578
|
function Divider() {
|
|
2537
2579
|
const theme = ui.useTheme2();
|
|
2580
|
+
if (isVersionGtOrEq(runtime.config.buildInfo.version, "10.1.0")) {
|
|
2581
|
+
return /* @__PURE__ */ React__default["default"].createElement(ui.Divider, null);
|
|
2582
|
+
}
|
|
2538
2583
|
return /* @__PURE__ */ React__default["default"].createElement(
|
|
2539
2584
|
"div",
|
|
2540
2585
|
{
|
|
@@ -2921,7 +2966,7 @@ function QueryEditorHeader({
|
|
|
2921
2966
|
icon: (data$1 == null ? void 0 : data$1.state) === data.LoadingState.Loading ? "fa fa-spinner" : void 0,
|
|
2922
2967
|
disabled: (data$1 == null ? void 0 : data$1.state) === data.LoadingState.Loading || !enableRunButton
|
|
2923
2968
|
},
|
|
2924
|
-
"Run
|
|
2969
|
+
"Run queries"
|
|
2925
2970
|
), extraHeaderElementRight);
|
|
2926
2971
|
}
|
|
2927
2972
|
|
|
@@ -2956,7 +3001,7 @@ function FormatSelect(props) {
|
|
|
2956
3001
|
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, props.newFormStylingEnabled ? /* @__PURE__ */ React__default["default"].createElement(
|
|
2957
3002
|
ui.Select,
|
|
2958
3003
|
{
|
|
2959
|
-
"aria-label": "Format
|
|
3004
|
+
"aria-label": "Format data frames as",
|
|
2960
3005
|
id: (_a = props.id) != null ? _a : "formatAs",
|
|
2961
3006
|
options: props.options,
|
|
2962
3007
|
value: props.query.format,
|