@grafana/plugin-ui 0.7.2 → 0.9.0
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 +3 -34
- package/dist/components/AsyncButtonCascader/AsyncButtonCascader.js +4 -5
- package/dist/components/AsyncButtonCascader/AsyncButtonCascader.js.map +1 -1
- package/dist/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +28 -0
- package/dist/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -0
- package/dist/components/ConfigEditor/AdvancedSettings/index.js +6 -0
- package/dist/components/ConfigEditor/AdvancedSettings/index.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/Auth.js +24 -0
- package/dist/components/ConfigEditor/Auth/Auth.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +109 -0
- package/dist/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/auth-method/BasicAuth.js +23 -0
- package/dist/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +41 -0
- package/dist/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +76 -0
- package/dist/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/index.js +10 -0
- package/dist/components/ConfigEditor/Auth/index.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/styles.js +19 -0
- package/dist/components/ConfigEditor/Auth/styles.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +18 -0
- package/dist/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +11 -0
- package/dist/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/tls/TLSClientAuth.js +22 -0
- package/dist/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/tls/TLSSettings.js +25 -0
- package/dist/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +35 -0
- package/dist/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/types.js +11 -0
- package/dist/components/ConfigEditor/Auth/types.js.map +1 -0
- package/dist/components/ConfigEditor/Auth/utils.js +112 -0
- package/dist/components/ConfigEditor/Auth/utils.js.map +1 -0
- package/dist/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +32 -0
- package/dist/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -0
- package/dist/components/ConfigEditor/ConfigSection/ConfigSection.js +12 -0
- package/dist/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -0
- package/dist/components/ConfigEditor/ConfigSection/ConfigSubSection.js +12 -0
- package/dist/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -0
- package/dist/components/ConfigEditor/ConfigSection/GenericConfigSection.js +40 -0
- package/dist/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -0
- package/dist/components/ConfigEditor/ConfigSection/index.js +10 -0
- package/dist/components/ConfigEditor/ConfigSection/index.js.map +1 -0
- package/dist/components/ConfigEditor/Connection/ConnectionSettings.js +25 -0
- package/dist/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -0
- package/dist/components/ConfigEditor/Connection/index.js +6 -0
- package/dist/components/ConfigEditor/Connection/index.js.map +1 -0
- package/dist/components/ConfigEditor/DataSourceDescription.js +39 -0
- package/dist/components/ConfigEditor/DataSourceDescription.js.map +1 -0
- package/dist/components/ConfigEditor/SecureSocksProxyToggle.js +8 -13
- package/dist/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
- package/dist/components/ConfigEditor/index.js +15 -3
- package/dist/components/ConfigEditor/index.js.map +1 -1
- package/dist/components/ConfigEditor/types.js +3 -0
- package/dist/components/ConfigEditor/types.js.map +1 -0
- package/dist/components/CustomHeadersSettings/CustomHeadersSettings.js +12 -17
- package/dist/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
- package/dist/components/DataLinks/DataLink.js +3 -3
- package/dist/components/DataLinks/DataLink.js.map +1 -1
- package/dist/components/DataLinks/DataLinks.js +6 -9
- package/dist/components/DataLinks/DataLinks.js.map +1 -1
- package/dist/components/DataLinks/index.js.map +1 -1
- package/dist/components/DataSourcePicker/DataSourcePicker.js +4 -6
- package/dist/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +5 -3
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/styles.js +8 -10
- package/dist/components/DatePicker/styles.js.map +1 -1
- package/dist/components/DatePickerWithInput/DatePickerWithInput.js +1 -1
- package/dist/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
- package/dist/components/DebounceInput/DebounceInput.js +3 -1
- package/dist/components/DebounceInput/DebounceInput.js.map +1 -1
- package/dist/components/Plugins/PluginSignatureBadge.js.map +1 -1
- package/dist/components/QueryEditor/AccessoryButton.js +3 -4
- package/dist/components/QueryEditor/AccessoryButton.js.map +1 -1
- package/dist/components/QueryEditor/DatasetSelector.js.map +1 -1
- package/dist/components/QueryEditor/EditorField.js +7 -9
- package/dist/components/QueryEditor/EditorField.js.map +1 -1
- package/dist/components/QueryEditor/EditorFieldGroup.js +2 -2
- package/dist/components/QueryEditor/EditorFieldGroup.js.map +1 -1
- package/dist/components/QueryEditor/EditorHeader.js +3 -4
- package/dist/components/QueryEditor/EditorHeader.js.map +1 -1
- package/dist/components/QueryEditor/EditorList.js +5 -6
- package/dist/components/QueryEditor/EditorList.js.map +1 -1
- package/dist/components/QueryEditor/EditorRow.js +3 -3
- package/dist/components/QueryEditor/EditorRow.js.map +1 -1
- package/dist/components/QueryEditor/EditorRows.js +2 -2
- package/dist/components/QueryEditor/EditorRows.js.map +1 -1
- package/dist/components/QueryEditor/EditorStack.js +13 -0
- package/dist/components/QueryEditor/EditorStack.js.map +1 -0
- package/dist/components/QueryEditor/EditorSwitch.js.map +1 -1
- package/dist/components/QueryEditor/FlexItem.js.map +1 -1
- package/dist/components/QueryEditor/InlineSelect.js +5 -8
- package/dist/components/QueryEditor/InlineSelect.js.map +1 -1
- package/dist/components/QueryEditor/InputGroup.js +29 -9
- package/dist/components/QueryEditor/InputGroup.js.map +1 -1
- package/dist/components/QueryEditor/QueryHeader.js +1 -4
- package/dist/components/QueryEditor/QueryHeader.js.map +1 -1
- package/dist/components/QueryEditor/RunQueryButton.js +3 -5
- package/dist/components/QueryEditor/RunQueryButton.js.map +1 -1
- package/dist/components/QueryEditor/TableSelector.js.map +1 -1
- package/dist/components/QueryEditor/index.js +3 -3
- package/dist/components/QueryEditor/index.js.map +1 -1
- package/dist/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +2 -2
- package/dist/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
- package/dist/components/QueryEditor/types.js +2 -2
- package/dist/components/QueryEditor/types.js.map +1 -1
- package/dist/components/QueryEditor/utils/sql.utils.js.map +1 -1
- package/dist/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +1 -1
- package/dist/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
- package/dist/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
- package/dist/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
- package/dist/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
- package/dist/components/QueryEditor/visual-query-builder/EditorRows.js +2 -2
- package/dist/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
- package/dist/components/QueryEditor/visual-query-builder/SelectRow.js +3 -3
- package/dist/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
- package/dist/components/QueryEditor/visual-query-builder/VisualEditor.js +1 -1
- package/dist/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
- package/dist/components/QueryEditorRow/QueryEditorRow.js +3 -4
- package/dist/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
- package/dist/components/SQLEditor/components/SQLEditor.js +330 -0
- package/dist/components/SQLEditor/components/SQLEditor.js.map +1 -0
- package/dist/components/SQLEditor/index.js +25 -0
- package/dist/components/SQLEditor/index.js.map +1 -0
- package/dist/components/SQLEditor/mocks/Monaco.js +23 -0
- package/dist/components/SQLEditor/mocks/Monaco.js.map +1 -0
- package/dist/components/SQLEditor/mocks/TextModel.js +22 -0
- package/dist/components/SQLEditor/mocks/TextModel.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/multiLineFullQuery.js +216 -0
- package/dist/components/SQLEditor/mocks/queries/multiLineFullQuery.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js +231 -0
- package/dist/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js +271 -0
- package/dist/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js +8 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineFullQuery.js +196 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineFullQuery.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js +211 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js +251 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineTwoQueries.js +386 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineTwoQueries.js.map +1 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js +416 -0
- package/dist/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js.map +1 -0
- package/dist/components/SQLEditor/mocks/testData.js +22 -0
- package/dist/components/SQLEditor/mocks/testData.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/definition.js +13 -0
- package/dist/components/SQLEditor/standardSql/definition.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/getStandardSuggestions.js +26 -0
- package/dist/components/SQLEditor/standardSql/getStandardSuggestions.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/getStatementPosition.js +24 -0
- package/dist/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/language.js +875 -0
- package/dist/components/SQLEditor/standardSql/language.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/macros.js +166 -0
- package/dist/components/SQLEditor/standardSql/macros.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js +30 -0
- package/dist/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/standardSuggestionsRegistry.js +378 -0
- package/dist/components/SQLEditor/standardSql/standardSuggestionsRegistry.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +234 -0
- package/dist/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/suggestionsKindRegistry.js +153 -0
- package/dist/components/SQLEditor/standardSql/suggestionsKindRegistry.js.map +1 -0
- package/dist/components/SQLEditor/standardSql/types.js +3 -0
- package/dist/components/SQLEditor/standardSql/types.js.map +1 -0
- package/dist/components/SQLEditor/test-utils/index.js +11 -0
- package/dist/components/SQLEditor/test-utils/index.js.map +1 -0
- package/dist/components/SQLEditor/test-utils/statementPosition.js +40 -0
- package/dist/components/SQLEditor/test-utils/statementPosition.js.map +1 -0
- package/dist/components/SQLEditor/test-utils/types.js +3 -0
- package/dist/components/SQLEditor/test-utils/types.js.map +1 -0
- package/dist/components/SQLEditor/types.js +139 -0
- package/dist/components/SQLEditor/types.js.map +1 -0
- package/dist/components/SQLEditor/utils/LinkedToken.js +147 -0
- package/dist/components/SQLEditor/utils/LinkedToken.js.map +1 -0
- package/dist/components/SQLEditor/utils/commands.js +8 -0
- package/dist/components/SQLEditor/utils/commands.js.map +1 -0
- package/dist/components/SQLEditor/utils/debugger.js +14 -0
- package/dist/components/SQLEditor/utils/debugger.js.map +1 -0
- package/dist/components/SQLEditor/utils/getSuggestionKind.js +18 -0
- package/dist/components/SQLEditor/utils/getSuggestionKind.js.map +1 -0
- package/dist/components/SQLEditor/utils/linkedTokenBuilder.js +46 -0
- package/dist/components/SQLEditor/utils/linkedTokenBuilder.js.map +1 -0
- package/dist/components/SQLEditor/utils/toCompletionItem.js +10 -0
- package/dist/components/SQLEditor/utils/toCompletionItem.js.map +1 -0
- package/dist/components/SQLEditor/utils/tokenUtils.js +72 -0
- package/dist/components/SQLEditor/utils/tokenUtils.js.map +1 -0
- package/dist/components/SQLEditor/utils/types.js +3 -0
- package/dist/components/SQLEditor/utils/types.js.map +1 -0
- package/dist/components/Segment/Segment.js +2 -1
- package/dist/components/Segment/Segment.js.map +1 -1
- package/dist/components/VisualQueryBuilder/QueryModellerBase.js +35 -0
- package/dist/components/VisualQueryBuilder/QueryModellerBase.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/LabelFilterItem.js +125 -0
- package/dist/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/LabelFilters.js +37 -0
- package/dist/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationEditor.js +41 -0
- package/dist/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationEditorBody.js +173 -0
- package/dist/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationExplainedBox.js +64 -0
- package/dist/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationHeader.js +67 -0
- package/dist/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationInfoButton.js +71 -0
- package/dist/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationList.js +129 -0
- package/dist/components/VisualQueryBuilder/components/OperationList.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationListExplained.js +22 -0
- package/dist/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationParamEditor.js +71 -0
- package/dist/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/OperationsEditorRow.js +24 -0
- package/dist/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/QueryBuilderHints.js +54 -0
- package/dist/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +17 -0
- package/dist/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +32 -0
- package/dist/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/QueryOptionGroup.js +81 -0
- package/dist/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -0
- package/dist/components/VisualQueryBuilder/components/RawQuery.js +25 -0
- package/dist/components/VisualQueryBuilder/components/RawQuery.js.map +1 -0
- package/dist/components/VisualQueryBuilder/index.js +29 -0
- package/dist/components/VisualQueryBuilder/index.js.map +1 -0
- package/dist/components/VisualQueryBuilder/types.js +10 -0
- package/dist/components/VisualQueryBuilder/types.js.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/datasource/SqlDatasource.js.map +1 -1
- package/dist/hooks/useDebounce.js +2 -0
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/index.js +1 -7
- package/dist/index.js.map +1 -1
- package/dist/src/components/AsyncButtonCascader/AsyncButtonCascader.d.ts +5 -2
- package/dist/src/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.d.ts +8 -0
- package/dist/src/components/ConfigEditor/AdvancedSettings/index.d.ts +1 -0
- package/dist/src/components/ConfigEditor/Auth/Auth.d.ts +18 -0
- package/dist/src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.d.ts +14 -0
- package/dist/src/components/ConfigEditor/Auth/auth-method/BasicAuth.d.ts +17 -0
- package/dist/src/components/ConfigEditor/Auth/custom-headers/CustomHeader.d.ts +10 -0
- package/dist/src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.d.ts +8 -0
- package/dist/src/components/ConfigEditor/Auth/index.d.ts +4 -0
- package/dist/src/components/ConfigEditor/Auth/styles.d.ts +4 -0
- package/dist/src/components/ConfigEditor/Auth/tls/SelfSignedCertificate.d.ts +13 -0
- package/dist/src/components/ConfigEditor/Auth/tls/SkipTLSVerification.d.ts +7 -0
- package/dist/src/components/ConfigEditor/Auth/tls/TLSClientAuth.d.ts +20 -0
- package/dist/src/components/ConfigEditor/Auth/tls/TLSSettings.d.ts +11 -0
- package/dist/src/components/ConfigEditor/Auth/tls/TLSSettingsSection.d.ts +9 -0
- package/dist/src/components/ConfigEditor/Auth/types.d.ts +28 -0
- package/dist/src/components/ConfigEditor/Auth/utils.d.ts +12 -0
- package/dist/src/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.d.ts +8 -0
- package/dist/src/components/ConfigEditor/ConfigSection/ConfigSection.d.ts +5 -0
- package/dist/src/components/ConfigEditor/ConfigSection/ConfigSubSection.d.ts +5 -0
- package/dist/src/components/ConfigEditor/ConfigSection/GenericConfigSection.d.ts +10 -0
- package/dist/src/components/ConfigEditor/ConfigSection/index.d.ts +3 -0
- package/dist/src/components/ConfigEditor/Connection/ConnectionSettings.d.ts +13 -0
- package/dist/src/components/ConfigEditor/Connection/index.d.ts +1 -0
- package/dist/src/components/ConfigEditor/DataSourceDescription.d.ts +9 -0
- package/dist/src/components/ConfigEditor/SecureSocksProxyToggle.d.ts +4 -4
- package/dist/src/components/ConfigEditor/index.d.ts +7 -2
- package/dist/src/components/ConfigEditor/types.d.ts +3 -0
- package/dist/src/components/CustomHeadersSettings/CustomHeadersSettings.d.ts +2 -2
- package/dist/src/components/DataLinks/DataLink.d.ts +1 -1
- package/dist/src/components/Plugins/PluginSignatureBadge.d.ts +5 -2
- package/dist/src/components/QueryEditor/AccessoryButton.d.ts +2 -2
- package/dist/src/components/QueryEditor/DatasetSelector.d.ts +2 -2
- package/dist/src/components/QueryEditor/EditorField.d.ts +2 -1
- package/dist/src/components/QueryEditor/EditorFieldGroup.d.ts +2 -1
- package/dist/src/components/QueryEditor/EditorHeader.d.ts +2 -1
- package/dist/src/components/QueryEditor/EditorList.d.ts +1 -1
- package/dist/src/components/QueryEditor/EditorRow.d.ts +2 -1
- package/dist/src/components/QueryEditor/EditorRows.d.ts +2 -1
- package/dist/src/components/QueryEditor/EditorStack.d.ts +13 -0
- package/dist/src/components/QueryEditor/EditorSwitch.d.ts +2 -2
- package/dist/src/components/QueryEditor/FlexItem.d.ts +2 -2
- package/dist/src/components/QueryEditor/InputGroup.d.ts +7 -2
- package/dist/src/components/QueryEditor/RunQueryButton.d.ts +3 -3
- package/dist/src/components/QueryEditor/TableSelector.d.ts +2 -2
- package/dist/src/components/QueryEditor/index.d.ts +1 -1
- package/dist/src/components/QueryEditor/query-editor-raw/QueryEditorRaw.d.ts +1 -1
- package/dist/src/components/QueryEditor/types.d.ts +9 -14
- package/dist/src/components/QueryEditor/visual-query-builder/EditorField.d.ts +1 -1
- package/dist/src/components/QueryEditor/visual-query-builder/EditorRow.d.ts +2 -1
- package/dist/src/components/QueryEditor/visual-query-builder/EditorRows.d.ts +2 -1
- package/dist/src/components/QueryEditor/visual-query-builder/VisualEditor.d.ts +3 -4
- package/dist/src/components/SQLEditor/components/SQLEditor.d.ts +29 -0
- package/dist/src/components/SQLEditor/index.d.ts +7 -0
- package/dist/src/components/SQLEditor/mocks/Monaco.d.ts +3 -0
- package/dist/src/components/SQLEditor/mocks/TextModel.d.ts +7 -0
- package/dist/src/components/SQLEditor/mocks/queries/multiLineFullQuery.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/multiLineMultipleColumns.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/singleLineEmptyQuery.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/singleLineFullQuery.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/singleLineMultipleColumns.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/singleLineTwoQueries.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.d.ts +2 -0
- package/dist/src/components/SQLEditor/mocks/testData.d.ts +9 -0
- package/dist/src/components/SQLEditor/standardSql/definition.d.ts +3 -0
- package/dist/src/components/SQLEditor/standardSql/getStandardSuggestions.d.ts +6 -0
- package/dist/src/components/SQLEditor/standardSql/getStatementPosition.d.ts +5 -0
- package/dist/src/components/SQLEditor/standardSql/language.d.ts +23 -0
- package/dist/src/components/SQLEditor/standardSql/macros.d.ts +2 -0
- package/dist/src/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.d.ts +4 -0
- package/dist/src/components/SQLEditor/standardSql/standardSuggestionsRegistry.d.ts +7 -0
- package/dist/src/components/SQLEditor/standardSql/statementPositionResolversRegistry.d.ts +2 -0
- package/dist/src/components/SQLEditor/standardSql/suggestionsKindRegistry.d.ts +7 -0
- package/dist/src/components/SQLEditor/standardSql/types.d.ts +33 -0
- package/dist/src/components/SQLEditor/test-utils/index.d.ts +7 -0
- package/dist/src/components/SQLEditor/test-utils/statementPosition.d.ts +3 -0
- package/dist/src/components/SQLEditor/test-utils/types.d.ts +12 -0
- package/dist/src/components/SQLEditor/types.d.ts +249 -0
- package/dist/src/components/SQLEditor/utils/LinkedToken.d.ts +29 -0
- package/dist/src/components/SQLEditor/utils/commands.d.ts +4 -0
- package/dist/src/components/SQLEditor/utils/debugger.d.ts +5 -0
- package/dist/src/components/SQLEditor/utils/getSuggestionKind.d.ts +7 -0
- package/dist/src/components/SQLEditor/utils/linkedTokenBuilder.d.ts +4 -0
- package/dist/src/components/SQLEditor/utils/toCompletionItem.d.ts +2 -0
- package/dist/src/components/SQLEditor/utils/tokenUtils.d.ts +14 -0
- package/dist/src/components/SQLEditor/utils/types.d.ts +11 -0
- package/dist/src/components/VisualQueryBuilder/QueryModellerBase.d.ts +18 -0
- package/dist/src/components/VisualQueryBuilder/components/LabelFilterItem.d.ts +18 -0
- package/dist/src/components/VisualQueryBuilder/components/LabelFilters.d.ts +14 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationEditor.d.ts +19 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationEditorBody.d.ts +22 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationExplainedBox.d.ts +7 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationHeader.d.ts +14 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationInfoButton.d.ts +9 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationList.d.ts +15 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationListExplained.d.ts +17 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationParamEditor.d.ts +4 -0
- package/dist/src/components/VisualQueryBuilder/components/OperationsEditorRow.d.ts +2 -0
- package/dist/src/components/VisualQueryBuilder/components/QueryBuilderHints.d.ts +20 -0
- package/dist/src/components/VisualQueryBuilder/components/QueryEditorModeToggle.d.ts +8 -0
- package/dist/src/components/VisualQueryBuilder/components/QueryHeaderSwitch.d.ts +7 -0
- package/dist/src/components/VisualQueryBuilder/components/QueryOptionGroup.d.ts +9 -0
- package/dist/src/components/VisualQueryBuilder/components/RawQuery.d.ts +12 -0
- package/dist/src/components/VisualQueryBuilder/index.d.ts +13 -0
- package/dist/src/components/VisualQueryBuilder/types.d.ts +89 -0
- package/dist/src/components/index.d.ts +5 -3
- package/dist/src/datasource/SqlDatasource.d.ts +3 -6
- package/dist/src/index.d.ts +0 -4
- package/dist/src/utils/changeset/functions.d.ts +1 -1
- package/dist/test/mocks/Datasource.js +1 -1
- package/dist/test/mocks/Datasource.js.map +1 -1
- package/dist/test/mocks/Plugin.js +2 -11
- package/dist/test/mocks/Plugin.js.map +1 -1
- package/dist/test/mocks/QueryEditorProps.js +0 -1
- package/dist/test/mocks/QueryEditorProps.js.map +1 -1
- package/dist/test/mocks/utils.js.map +1 -1
- package/dist/utils/changeset/functions.js +1 -1
- package/dist/utils/changeset/functions.js.map +1 -1
- package/dist/utils/changeset/index.js +20 -20
- package/dist/utils/changeset/index.js.map +1 -1
- package/package.json +41 -14
- package/CHANGELOG.md +0 -25
- package/dist/8x/fixtures/index.js +0 -7
- package/dist/8x/fixtures/index.js.map +0 -1
- package/dist/8x/fixtures/select.js +0 -43
- package/dist/8x/fixtures/select.js.map +0 -1
- package/dist/8x/index.js +0 -5
- package/dist/8x/index.js.map +0 -1
- package/dist/components/ConfigEditor/InlineLabel.js +0 -24
- package/dist/components/ConfigEditor/InlineLabel.js.map +0 -1
- package/dist/components/QueryEditor/ErrorBoundary.js +0 -23
- package/dist/components/QueryEditor/ErrorBoundary.js.map +0 -1
- package/dist/components/QueryEditor/Stack.js +0 -27
- package/dist/components/QueryEditor/Stack.js.map +0 -1
- package/dist/components/QueryEditor/visual-query-builder/Stack.js +0 -27
- package/dist/components/QueryEditor/visual-query-builder/Stack.js.map +0 -1
- package/dist/src/8x/fixtures/index.d.ts +0 -1
- package/dist/src/8x/fixtures/select.d.ts +0 -11
- package/dist/src/8x/index.d.ts +0 -1
- package/dist/src/components/ConfigEditor/InlineLabel.d.ts +0 -7
- package/dist/src/components/QueryEditor/ErrorBoundary.d.ts +0 -14
- package/dist/src/components/QueryEditor/Stack.d.ts +0 -9
- package/dist/src/components/QueryEditor/visual-query-builder/Stack.d.ts +0 -9
- package/dist/src/test/mocks/TestDatasource.d.ts +0 -6
- package/dist/src/test/mocks/style.d.ts +0 -1
- package/dist/src/test/setupTests.d.ts +0 -1
- package/dist/src/unreleasedComponents/SecretInput.d.ts +0 -15
- package/dist/src/unreleasedComponents/SecretTextarea.d.ts +0 -19
- package/dist/src/unreleasedComponents/index.d.ts +0 -2
- package/dist/src/utils/compatFeatures.d.ts +0 -9
- package/dist/src/utils/compatibility.d.ts +0 -13
- package/dist/src/utils/index.d.ts +0 -3
- package/dist/src/utils/testDatasource.d.ts +0 -19
- package/dist/test/mocks/TestDatasource.js +0 -24
- package/dist/test/mocks/TestDatasource.js.map +0 -1
- package/dist/test/mocks/style.js +0 -5
- package/dist/test/mocks/style.js.map +0 -1
- package/dist/test/setupTests.js +0 -17
- package/dist/test/setupTests.js.map +0 -1
- package/dist/unreleasedComponents/SecretInput.js +0 -21
- package/dist/unreleasedComponents/SecretInput.js.map +0 -1
- package/dist/unreleasedComponents/SecretTextarea.js +0 -36
- package/dist/unreleasedComponents/SecretTextarea.js.map +0 -1
- package/dist/unreleasedComponents/index.js +0 -9
- package/dist/unreleasedComponents/index.js.map +0 -1
- package/dist/utils/compatFeatures.js +0 -20
- package/dist/utils/compatFeatures.js.map +0 -1
- package/dist/utils/compatibility.js +0 -31
- package/dist/utils/compatibility.js.map +0 -1
- package/dist/utils/index.js +0 -8
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/testDatasource.js +0 -30
- package/dist/utils/testDatasource.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,41 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
React components for Grafana plugins
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Grafana compatibility
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
To handle this, we've introduced the `compatibility.ts` file which contains a list of features and the versions they support for better maintainability.
|
|
10
|
-
|
|
11
|
-
### Considerations
|
|
12
|
-
|
|
13
|
-
The way we are currently checking whether a feature is supported is by using the Grafana's [BuildInfo](https://grafana.com/docs/grafana/latest/packages_api/data/buildinfo/#version-property).
|
|
14
|
-
|
|
15
|
-
However, there are cases when this version [may be masked](https://grafana.com/docs/grafana/latest/packages_api/data/buildinfo/#hideversion-property) from plugins.
|
|
16
|
-
|
|
17
|
-
Only anonymous users (with read-only access) will be able to have their versions hidden, so this should be taken into consideration when deciding whether we should be adding a new feature to our compatibility list.
|
|
18
|
-
|
|
19
|
-
## Unreleased Components
|
|
20
|
-
|
|
21
|
-
Sometimes we may want improvements/updates of `@grafana/ui` components but we don't want to update the minimum required versions of Grafana in our plugins and continue supporting older versions.
|
|
22
|
-
|
|
23
|
-
To work around this, we can import and export the version of the component we want from `@grafana/ui` in this project. Plugins can then use the component exported from here rather than `@grafana/ui`.
|
|
24
|
-
|
|
25
|
-
If updates to a component in `@grafana/ui` are available in `master` but not a Grafana release yet, we can copy the components directly into `unreleasedComponents` to be used in plugins.
|
|
26
|
-
|
|
27
|
-
Alternatively, we could use the `@grafana/ui: canary` version instead. However, there are the following tradeoffs:
|
|
28
|
-
|
|
29
|
-
- Multiple `canary` versions will be released in-between `@grafana/ui` releases
|
|
30
|
-
|
|
31
|
-
- This means in-between these release cycles where the component changes aren't available in a package version, the `yarn.lock` file will need to be updated for every change we make in this project
|
|
32
|
-
|
|
33
|
-
- `canary` versions include `@grafana/ui: master` branch
|
|
34
|
-
- This means component changes in the `master` branch which aren't scheduled for the next major release will be included in the `canary` package.
|
|
35
|
-
- For example, we have changes in `<ComponentA />` that won't be released until `v7.5.x` and `<ComponentB />` has changes which are intended to be released for `v7.6`. Using `canary` of `@grafana/ui` will expose the `<ComponentB />` major updates too, which we do not want.
|
|
36
|
-
|
|
37
|
-
Once a `@grafana/ui` package is then released and available with the component updates, we can remove the component from this folder and export the imported version from the new `@grafana/ui` package instead.
|
|
38
|
-
|
|
39
|
-
This means any component in `unreleasedComponents` should not be modified - they should stay in sync with what is in `@grafana/ui` (besides changes in imports or stories) and removed from this project as soon as we can replace it with an actual package version.
|
|
7
|
+
Plugin-ui@0.9.0 is compatible with Grafana versions 10.4.0 and higher. If the `grafanaDependency` field in your plugin.json file is set to an earlier version, you should amend it to `>=10.4.0`
|
|
8
|
+
When you do that, consider also incrementing your plugin's major version to make sure users on Grafana < 10.4.0 do not accidentally install an incompatible plugin version.
|
|
40
9
|
|
|
41
10
|
## Storybook
|
|
42
11
|
|
|
@@ -7,8 +7,7 @@ const ui_1 = require("@grafana/ui");
|
|
|
7
7
|
const css_1 = require("@emotion/css");
|
|
8
8
|
// @ts-ignore
|
|
9
9
|
const rc_cascader_1 = tslib_1.__importDefault(require("rc-cascader"));
|
|
10
|
-
const
|
|
11
|
-
const getStyles = ((theme) => {
|
|
10
|
+
const getStyles = (theme) => {
|
|
12
11
|
return {
|
|
13
12
|
popup: (0, css_1.css) `
|
|
14
13
|
label: popup;
|
|
@@ -18,10 +17,10 @@ const getStyles = ((theme) => {
|
|
|
18
17
|
margin: 1px 0 0 4px;
|
|
19
18
|
`,
|
|
20
19
|
};
|
|
21
|
-
}
|
|
22
|
-
const AsyncButtonCascader = props => {
|
|
20
|
+
};
|
|
21
|
+
const AsyncButtonCascader = (props) => {
|
|
23
22
|
const { onChange, className, loadData } = props, rest = tslib_1.__rest(props, ["onChange", "className", "loadData"]);
|
|
24
|
-
const theme = (0,
|
|
23
|
+
const theme = (0, ui_1.useTheme2)();
|
|
25
24
|
const styles = getStyles(theme);
|
|
26
25
|
return (react_1.default.createElement(rc_cascader_1.default, Object.assign({ onChange: onChange, loadData: loadData, changeOnSelect: true, popupClassName: styles.popup }, rest, { expandIcon: null }),
|
|
27
26
|
react_1.default.createElement("button", { className: (0, css_1.cx)('gf-form-label', className), disabled: props.disabled },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncButtonCascader.js","sourceRoot":"","sources":["../../../src/components/AsyncButtonCascader/AsyncButtonCascader.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"AsyncButtonCascader.js","sourceRoot":"","sources":["../../../src/components/AsyncButtonCascader/AsyncButtonCascader.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,oCAA8C;AAE9C,sCAAuC;AAEvC,aAAa;AACb,sEAAyD;AAczD,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;IACzC,OAAO;QACL,KAAK,EAAE,IAAA,SAAG,EAAA;;iBAEG,KAAK,CAAC,MAAM,CAAC,QAAQ;KACjC;QACD,IAAI,EAAE,IAAA,SAAG,EAAA;;KAER;KACF,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAc,KAAK,EAAd,IAAI,kBAAK,KAAK,EAAlD,qCAA0C,CAAQ,CAAC;IACzD,MAAM,KAAK,GAAG,IAAA,cAAS,GAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEhC,OAAO,CACL,8BAAC,qBAAU,kBACT,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,IAAI,EACpB,cAAc,EAAE,MAAM,CAAC,KAAK,IACxB,IAAI,IACR,UAAU,EAAE,IAAI;QAEhB,0CAAQ,SAAS,EAAE,IAAA,QAAE,EAAC,eAAe,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxE,KAAK,CAAC,QAAQ;;YAAE,8BAAC,SAAI,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,GAAI,CAC5D,CACE,CACd,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B;AAEF,2BAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdvancedHttpSettings = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const ConfigSection_1 = require("../ConfigSection");
|
|
9
|
+
const AdvancedHttpSettings = ({ config, onChange, className, }) => {
|
|
10
|
+
const onCookiesChange = (cookies) => {
|
|
11
|
+
onChange(Object.assign(Object.assign({}, config), { jsonData: Object.assign(Object.assign({}, config.jsonData), { keepCookies: cookies }) }));
|
|
12
|
+
};
|
|
13
|
+
const onTimeoutChange = (event) => {
|
|
14
|
+
onChange(Object.assign(Object.assign({}, config), { jsonData: Object.assign(Object.assign({}, config.jsonData), { timeout: parseInt(event.currentTarget.value, 10) }) }));
|
|
15
|
+
};
|
|
16
|
+
const styles = {
|
|
17
|
+
container: (0, css_1.css)({
|
|
18
|
+
maxWidth: 578,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
return (react_1.default.createElement(ConfigSection_1.ConfigSubSection, { title: "Advanced HTTP settings", className: (0, css_1.cx)(styles.container, className) },
|
|
22
|
+
react_1.default.createElement(ui_1.InlineField, { htmlFor: "advanced-http-cookies", label: "Allowed cookies", labelWidth: 24, tooltip: "Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.", disabled: config.readOnly, grow: true },
|
|
23
|
+
react_1.default.createElement(ui_1.TagsInput, { id: "advanced-http-cookies", placeholder: "New cookie (hit enter to add)", tags: config.jsonData.keepCookies, onChange: onCookiesChange })),
|
|
24
|
+
react_1.default.createElement(ui_1.InlineField, { htmlFor: "advanced-http-timeout", label: "Timeout", labelWidth: 24, tooltip: "HTTP request timeout in seconds", disabled: config.readOnly, grow: true },
|
|
25
|
+
react_1.default.createElement(ui_1.Input, { id: "advanced-http-timeout", type: "number", min: 0, placeholder: "Timeout in seconds", "aria-label": "Timeout in seconds", value: config.jsonData.timeout, onChange: onTimeoutChange }))));
|
|
26
|
+
};
|
|
27
|
+
exports.AdvancedHttpSettings = AdvancedHttpSettings;
|
|
28
|
+
//# sourceMappingURL=AdvancedHttpSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedHttpSettings.js","sourceRoot":"","sources":["../../../../src/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,sCAAuC;AACvC,oCAA4D;AAC5D,oDAAoD;AAS7C,MAAM,oBAAoB,GAAgE,CAAC,EAChG,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,CAAC,OAAiB,EAAE,EAAE;QAC5C,QAAQ,iCACH,MAAM,KACT,QAAQ,kCACH,MAAM,CAAC,QAAQ,KAClB,WAAW,EAAE,OAAO,OAEtB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAwC,EAAE,EAAE;QACnE,QAAQ,iCACH,MAAM,KACT,QAAQ,kCACH,MAAM,CAAC,QAAQ,KAClB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,OAElD,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,IAAA,SAAG,EAAC;YACb,QAAQ,EAAE,GAAG;SACd,CAAC;KACH,CAAC;IAEF,OAAO,CACL,8BAAC,gCAAgB,IAAC,KAAK,EAAC,wBAAwB,EAAC,SAAS,EAAE,IAAA,QAAE,EAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;QACzF,8BAAC,gBAAW,IACV,OAAO,EAAC,uBAAuB,EAC/B,KAAK,EAAC,iBAAiB,EACvB,UAAU,EAAE,EAAE,EACd,OAAO,EAAC,0HAA0H,EAClI,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI;YAEJ,8BAAC,cAAS,IACR,EAAE,EAAC,uBAAuB,EAC1B,WAAW,EAAC,+BAA+B,EAC3C,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EACjC,QAAQ,EAAE,eAAe,GACzB,CACU;QAEd,8BAAC,gBAAW,IACV,OAAO,EAAC,uBAAuB,EAC/B,KAAK,EAAC,SAAS,EACf,UAAU,EAAE,EAAE,EACd,OAAO,EAAC,iCAAiC,EACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI;YAEJ,8BAAC,UAAK,IACJ,EAAE,EAAC,uBAAuB,EAC1B,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,CAAC,EACN,WAAW,EAAC,oBAAoB,gBACrB,oBAAoB,EAC/B,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAC9B,QAAQ,EAAE,eAAe,GACzB,CACU,CACG,CACpB,CAAC;AACJ,CAAC,CAAC;AArEW,QAAA,oBAAoB,wBAqE/B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdvancedHttpSettings = void 0;
|
|
4
|
+
var AdvancedHttpSettings_1 = require("./AdvancedHttpSettings");
|
|
5
|
+
Object.defineProperty(exports, "AdvancedHttpSettings", { enumerable: true, get: function () { return AdvancedHttpSettings_1.AdvancedHttpSettings; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ConfigEditor/AdvancedSettings/index.ts"],"names":[],"mappings":";;;AAAA,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Auth = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const AuthMethodSettings_1 = require("./auth-method/AuthMethodSettings");
|
|
8
|
+
const TLSSettings_1 = require("./tls/TLSSettings");
|
|
9
|
+
const CustomHeaders_1 = require("./custom-headers/CustomHeaders");
|
|
10
|
+
const ConfigSection_1 = require("../ConfigSection");
|
|
11
|
+
const Auth = ({ selectedMethod, mostCommonMethod, visibleMethods, defaultOptionsOverrides, customMethods, onAuthMethodSelect, basicAuth, TLS, customHeaders, readOnly = false, }) => {
|
|
12
|
+
const styles = {
|
|
13
|
+
container: (0, css_1.css)({
|
|
14
|
+
maxWidth: 578,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
return (react_1.default.createElement("div", { className: styles.container },
|
|
18
|
+
react_1.default.createElement(ConfigSection_1.ConfigSection, { title: "Authentication" },
|
|
19
|
+
react_1.default.createElement(AuthMethodSettings_1.AuthMethodSettings, { selectedMethod: selectedMethod, mostCommonMethod: mostCommonMethod, customMethods: customMethods, visibleMethods: visibleMethods, defaultOptionsOverrides: defaultOptionsOverrides, onAuthMethodSelect: onAuthMethodSelect, basicAuth: basicAuth, readOnly: readOnly }),
|
|
20
|
+
TLS && react_1.default.createElement(TLSSettings_1.TLSSettings, Object.assign({}, TLS, { readOnly: readOnly })),
|
|
21
|
+
customHeaders && react_1.default.createElement(CustomHeaders_1.CustomHeaders, Object.assign({}, customHeaders, { readOnly: readOnly })))));
|
|
22
|
+
};
|
|
23
|
+
exports.Auth = Auth;
|
|
24
|
+
//# sourceMappingURL=Auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../../../src/components/ConfigEditor/Auth/Auth.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,sCAAmC;AAEnC,yEAAsE;AACtE,mDAA2E;AAE3E,kEAA4F;AAC5F,oDAAiD;AAe1C,MAAM,IAAI,GAAG,CAAC,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,GAAG,EACH,aAAa,EACb,QAAQ,GAAG,KAAK,GACV,EAAE,EAAE;IACV,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,IAAA,SAAG,EAAC;YACb,QAAQ,EAAE,GAAG;SACd,CAAC;KACH,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAE,MAAM,CAAC,SAAS;QAC9B,8BAAC,6BAAa,IAAC,KAAK,EAAC,gBAAgB;YACnC,8BAAC,uCAAkB,IACjB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,uBAAuB,EAChD,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB;YACD,GAAG,IAAI,8BAAC,yBAAW,oBAAK,GAAG,IAAE,QAAQ,EAAE,QAAQ,IAAI;YACnD,aAAa,IAAI,8BAAC,6BAAa,oBAAK,aAAa,IAAE,QAAQ,EAAE,QAAQ,IAAI,CAC5D,CACZ,CACP,CAAC;AACJ,CAAC,CAAC;AApCW,QAAA,IAAI,QAoCf"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthMethodSettings = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const BasicAuth_1 = require("./BasicAuth");
|
|
9
|
+
const ConfigSection_1 = require("../../ConfigSection");
|
|
10
|
+
const types_1 = require("../types");
|
|
11
|
+
const defaultOptions = {
|
|
12
|
+
[types_1.AuthMethod.BasicAuth]: {
|
|
13
|
+
label: 'Basic authentication',
|
|
14
|
+
value: types_1.AuthMethod.BasicAuth,
|
|
15
|
+
description: 'Authenticate with your data source username and password',
|
|
16
|
+
},
|
|
17
|
+
[types_1.AuthMethod.CrossSiteCredentials]: {
|
|
18
|
+
label: 'Enable cross-site access control requests',
|
|
19
|
+
value: types_1.AuthMethod.CrossSiteCredentials,
|
|
20
|
+
description: 'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',
|
|
21
|
+
},
|
|
22
|
+
[types_1.AuthMethod.OAuthForward]: {
|
|
23
|
+
label: 'Forward OAuth Identity',
|
|
24
|
+
value: types_1.AuthMethod.OAuthForward,
|
|
25
|
+
description: 'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',
|
|
26
|
+
},
|
|
27
|
+
[types_1.AuthMethod.NoAuth]: {
|
|
28
|
+
label: 'No Authentication',
|
|
29
|
+
value: types_1.AuthMethod.NoAuth,
|
|
30
|
+
description: 'Data source is available without authentication',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
const AuthMethodSettings = ({ selectedMethod, mostCommonMethod, visibleMethods: visibleMethodsFromProps, defaultOptionsOverrides, customMethods, onAuthMethodSelect, basicAuth, readOnly, }) => {
|
|
34
|
+
var _a, _b, _c, _d;
|
|
35
|
+
const [authMethodChanged, setAuthMethodChanged] = (0, react_1.useState)(false);
|
|
36
|
+
const { colors, spacing } = (0, ui_1.useTheme2)();
|
|
37
|
+
const visibleMethods = (0, react_1.useMemo)(() => {
|
|
38
|
+
var _a;
|
|
39
|
+
return visibleMethodsFromProps !== null && visibleMethodsFromProps !== void 0 ? visibleMethodsFromProps : [
|
|
40
|
+
types_1.AuthMethod.BasicAuth,
|
|
41
|
+
types_1.AuthMethod.OAuthForward,
|
|
42
|
+
types_1.AuthMethod.NoAuth,
|
|
43
|
+
...((_a = customMethods === null || customMethods === void 0 ? void 0 : customMethods.map((m) => m.id)) !== null && _a !== void 0 ? _a : []),
|
|
44
|
+
];
|
|
45
|
+
}, [customMethods, visibleMethodsFromProps]);
|
|
46
|
+
const hasSelect = visibleMethods.length > 1;
|
|
47
|
+
const preparedOptions = (0, react_1.useMemo)(() => {
|
|
48
|
+
var _a;
|
|
49
|
+
const customOptions = (_a = customMethods === null || customMethods === void 0 ? void 0 : customMethods.reduce((acc, method) => {
|
|
50
|
+
acc[method.id] = {
|
|
51
|
+
label: method.label,
|
|
52
|
+
value: method.id,
|
|
53
|
+
description: method.description,
|
|
54
|
+
};
|
|
55
|
+
return acc;
|
|
56
|
+
}, {})) !== null && _a !== void 0 ? _a : {};
|
|
57
|
+
const preparedDefaultOptions = {};
|
|
58
|
+
let k;
|
|
59
|
+
for (k in defaultOptions) {
|
|
60
|
+
preparedDefaultOptions[k] = Object.assign(Object.assign({}, defaultOptions[k]), defaultOptionsOverrides === null || defaultOptionsOverrides === void 0 ? void 0 : defaultOptionsOverrides[k]);
|
|
61
|
+
}
|
|
62
|
+
const allOptions = Object.assign(Object.assign({}, customOptions), preparedDefaultOptions);
|
|
63
|
+
return visibleMethods
|
|
64
|
+
.filter((method) => Boolean(allOptions[method]))
|
|
65
|
+
.map((method) => {
|
|
66
|
+
const option = allOptions[method];
|
|
67
|
+
if (method === mostCommonMethod && hasSelect) {
|
|
68
|
+
return Object.assign(Object.assign({}, option), { label: `${option.label} (most common)` });
|
|
69
|
+
}
|
|
70
|
+
return option;
|
|
71
|
+
});
|
|
72
|
+
}, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);
|
|
73
|
+
let selected = selectedMethod;
|
|
74
|
+
if (!hasSelect) {
|
|
75
|
+
selected = visibleMethods[0];
|
|
76
|
+
}
|
|
77
|
+
else if (selectedMethod === types_1.AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {
|
|
78
|
+
selected = mostCommonMethod;
|
|
79
|
+
}
|
|
80
|
+
let AuthFieldsComponent = null;
|
|
81
|
+
if (selected === types_1.AuthMethod.BasicAuth && basicAuth) {
|
|
82
|
+
AuthFieldsComponent = react_1.default.createElement(BasicAuth_1.BasicAuth, Object.assign({}, basicAuth, { readOnly: readOnly }));
|
|
83
|
+
}
|
|
84
|
+
else if (selected.startsWith('custom-')) {
|
|
85
|
+
AuthFieldsComponent = (_b = (_a = customMethods === null || customMethods === void 0 ? void 0 : customMethods.find((m) => m.id === selected)) === null || _a === void 0 ? void 0 : _a.component) !== null && _b !== void 0 ? _b : null;
|
|
86
|
+
}
|
|
87
|
+
const title = hasSelect ? 'Authentication methods' : ((_c = preparedOptions[0].label) !== null && _c !== void 0 ? _c : '');
|
|
88
|
+
const description = hasSelect
|
|
89
|
+
? 'Choose an authentication method to access the data source'
|
|
90
|
+
: ((_d = preparedOptions[0].description) !== null && _d !== void 0 ? _d : '');
|
|
91
|
+
const styles = {
|
|
92
|
+
authMethods: (0, css_1.css)(Object.assign({ marginTop: spacing(2.5) }, (hasSelect && {
|
|
93
|
+
padding: spacing(2),
|
|
94
|
+
border: `1px solid ${colors.border.weak}`,
|
|
95
|
+
}))),
|
|
96
|
+
selectedMethodFields: (0, css_1.css)({
|
|
97
|
+
marginTop: spacing(1.5),
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
return (react_1.default.createElement(ConfigSection_1.ConfigSubSection, { title: title, description: description },
|
|
101
|
+
react_1.default.createElement("div", { className: styles.authMethods },
|
|
102
|
+
hasSelect && (react_1.default.createElement(ui_1.Select, { options: preparedOptions, value: selected, onChange: (option) => {
|
|
103
|
+
setAuthMethodChanged(true);
|
|
104
|
+
onAuthMethodSelect(option.value);
|
|
105
|
+
}, disabled: readOnly })),
|
|
106
|
+
AuthFieldsComponent && react_1.default.createElement("div", { className: styles.selectedMethodFields }, AuthFieldsComponent))));
|
|
107
|
+
};
|
|
108
|
+
exports.AuthMethodSettings = AuthMethodSettings;
|
|
109
|
+
//# sourceMappingURL=AuthMethodSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthMethodSettings.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BasicAuth = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const styles_1 = require("../styles");
|
|
9
|
+
const BasicAuth = ({ user, passwordConfigured, userLabel = 'User', userTooltip = 'The username of the data source account', userPlaceholder = 'User', passwordLabel = 'Password', passwordTooltip = 'The password of the data source account', passwordPlaceholder = 'Password', onUserChange, onPasswordChange, onPasswordReset, readOnly, }) => {
|
|
10
|
+
const commonStyles = (0, styles_1.useCommonStyles)();
|
|
11
|
+
const styles = {
|
|
12
|
+
lastInlineField: (0, css_1.css)({
|
|
13
|
+
marginBottom: 0,
|
|
14
|
+
}),
|
|
15
|
+
};
|
|
16
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
17
|
+
react_1.default.createElement(ui_1.InlineField, { className: commonStyles.inlineFieldNoMarginRight, label: userLabel, labelWidth: 24, tooltip: userTooltip, required: true, htmlFor: "basic-auth-user-input", interactive: true, grow: true, disabled: readOnly },
|
|
18
|
+
react_1.default.createElement(ui_1.Input, { id: "basic-auth-user-input", placeholder: userPlaceholder, value: user, onChange: (e) => onUserChange(e.currentTarget.value), required: true })),
|
|
19
|
+
react_1.default.createElement(ui_1.InlineField, { className: (0, css_1.cx)(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret, styles.lastInlineField), label: passwordLabel, labelWidth: 24, tooltip: passwordTooltip, required: true, htmlFor: "basic-auth-password-input", interactive: true, grow: true, disabled: readOnly },
|
|
20
|
+
react_1.default.createElement(ui_1.SecretInput, { id: "basic-auth-password-input", isConfigured: passwordConfigured, onReset: readOnly ? () => { } : onPasswordReset, placeholder: passwordPlaceholder, onChange: (e) => onPasswordChange(e.currentTarget.value), required: true }))));
|
|
21
|
+
};
|
|
22
|
+
exports.BasicAuth = BasicAuth;
|
|
23
|
+
//# sourceMappingURL=BasicAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasicAuth.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/auth-method/BasicAuth.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,sCAAuC;AACvC,oCAA8E;AAC9E,sCAA4C;AAiBrC,MAAM,SAAS,GAAG,CAAC,EACxB,IAAI,EACJ,kBAAkB,EAClB,SAAS,GAAG,MAAM,EAClB,WAAW,GAAG,yCAAyC,EACvD,eAAe,GAAG,MAAM,EACxB,aAAa,GAAG,UAAU,EAC1B,eAAe,GAAG,yCAAyC,EAC3D,mBAAmB,GAAG,UAAU,EAChC,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACF,EAAE,EAAE;IACV,MAAM,YAAY,GAAG,IAAA,wBAAe,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG;QACb,eAAe,EAAE,IAAA,SAAG,EAAC;YACnB,YAAY,EAAE,CAAC;SAChB,CAAC;KACH,CAAC;IACF,OAAO,CACL;QACE,8BAAC,gBAAW,IACV,SAAS,EAAE,YAAY,CAAC,wBAAwB,EAChD,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,WAAW,EACpB,QAAQ,QACR,OAAO,EAAC,uBAAuB,EAC/B,WAAW,QACX,IAAI,QACJ,QAAQ,EAAE,QAAQ;YAElB,8BAAC,UAAK,IACJ,EAAE,EAAC,uBAAuB,EAC1B,WAAW,EAAE,eAAe,EAC5B,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EACpD,QAAQ,SACR,CACU;QACd,8BAAC,gBAAW,IACV,SAAS,EAAE,IAAA,QAAE,EACX,YAAY,CAAC,wBAAwB,EACrC,YAAY,CAAC,qBAAqB,EAClC,MAAM,CAAC,eAAe,CACvB,EACD,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,eAAe,EACxB,QAAQ,QACR,OAAO,EAAC,2BAA2B,EACnC,WAAW,QACX,IAAI,QACJ,QAAQ,EAAE,QAAQ;YAElB,8BAAC,gBAAW,IACV,EAAE,EAAC,2BAA2B,EAC9B,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAC9C,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EACxD,QAAQ,SACR,CACU,CACb,CACJ,CAAC;AACJ,CAAC,CAAC;AAnEW,QAAA,SAAS,aAmEpB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomHeader = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const styles_1 = require("../styles");
|
|
9
|
+
const CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }) => {
|
|
10
|
+
const { spacing } = (0, ui_1.useTheme2)();
|
|
11
|
+
const commonStyles = (0, styles_1.useCommonStyles)();
|
|
12
|
+
const styles = {
|
|
13
|
+
container: (0, css_1.css)({
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
}),
|
|
16
|
+
input: (0, css_1.css)({
|
|
17
|
+
minWidth: '100%',
|
|
18
|
+
}),
|
|
19
|
+
headerNameField: (0, css_1.css)({
|
|
20
|
+
width: '40%',
|
|
21
|
+
marginRight: 0,
|
|
22
|
+
paddingRight: spacing(1),
|
|
23
|
+
}),
|
|
24
|
+
headerValueField: (0, css_1.css)({
|
|
25
|
+
width: '45%',
|
|
26
|
+
marginRight: 0,
|
|
27
|
+
}),
|
|
28
|
+
removeHeaderBtn: (0, css_1.css)({
|
|
29
|
+
margin: `0 0 3px 10px`,
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
33
|
+
react_1.default.createElement(ui_1.InlineFieldRow, { className: styles.container },
|
|
34
|
+
react_1.default.createElement(ui_1.InlineField, { label: "Header", labelWidth: 9, grow: true, className: styles.headerNameField, htmlFor: `custom-header-${header.id}-name-input`, disabled: readOnly },
|
|
35
|
+
react_1.default.createElement(ui_1.Input, { id: `custom-header-${header.id}-name-input`, placeholder: "X-Custom-Header", value: header.name, width: 12, onChange: (e) => onChange(Object.assign(Object.assign({}, header), { name: e.currentTarget.value })), onBlur: onBlur, className: styles.input })),
|
|
36
|
+
react_1.default.createElement(ui_1.InlineField, { label: "Value", labelWidth: 9, grow: true, className: (0, css_1.cx)(commonStyles.inlineFieldWithSecret, styles.headerValueField), htmlFor: `custom-header-${header.id}-value-input`, disabled: readOnly },
|
|
37
|
+
react_1.default.createElement(ui_1.SecretInput, { id: `custom-header-${header.id}-value-input`, isConfigured: header.configured, placeholder: "Header value", value: header.value, width: 12, onChange: (e) => onChange(Object.assign(Object.assign({}, header), { value: e.currentTarget.value })), onReset: readOnly ? () => { } : () => onChange(Object.assign(Object.assign({}, header), { configured: false, value: '' })), onBlur: onBlur, className: styles.input })),
|
|
38
|
+
react_1.default.createElement(ui_1.IconButton, { name: "trash-alt", tooltip: "Remove header", tooltipPlacement: "top", className: styles.removeHeaderBtn, onClick: onDelete, type: "button", disabled: readOnly }))));
|
|
39
|
+
};
|
|
40
|
+
exports.CustomHeader = CustomHeader;
|
|
41
|
+
//# sourceMappingURL=CustomHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomHeader.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomHeaders = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const CustomHeader_1 = require("./CustomHeader");
|
|
9
|
+
const ConfigSection_1 = require("../../ConfigSection");
|
|
10
|
+
const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }) => {
|
|
11
|
+
const { spacing } = (0, ui_1.useTheme2)();
|
|
12
|
+
const [headers, setHeaders] = (0, react_1.useState)(headersFromProps.map((header) => (Object.assign(Object.assign({}, header), { id: uniqueId(), value: '' }))));
|
|
13
|
+
(0, react_1.useEffect)(() => {
|
|
14
|
+
setHeaders((headers) => {
|
|
15
|
+
let changed = false;
|
|
16
|
+
const newHeaders = headers.map((header) => {
|
|
17
|
+
var _a;
|
|
18
|
+
const configured = (_a = headersFromProps.find((h) => h.name === header.name)) === null || _a === void 0 ? void 0 : _a.configured;
|
|
19
|
+
if (typeof configured !== 'undefined' && header.configured !== configured) {
|
|
20
|
+
changed = true;
|
|
21
|
+
return Object.assign(Object.assign({}, header), { configured });
|
|
22
|
+
}
|
|
23
|
+
return header;
|
|
24
|
+
});
|
|
25
|
+
if (changed) {
|
|
26
|
+
return newHeaders;
|
|
27
|
+
}
|
|
28
|
+
return headers;
|
|
29
|
+
});
|
|
30
|
+
}, [headersFromProps]);
|
|
31
|
+
const onHeaderAdd = () => {
|
|
32
|
+
setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);
|
|
33
|
+
};
|
|
34
|
+
const onHeaderChange = (id, header) => {
|
|
35
|
+
setHeaders(headers.map((h) => (h.id === id ? Object.assign({}, header) : h)));
|
|
36
|
+
};
|
|
37
|
+
const onHeaderDelete = (id) => {
|
|
38
|
+
const index = headers.findIndex((h) => h.id === id);
|
|
39
|
+
if (index === -1) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const newHeaders = [...headers];
|
|
43
|
+
newHeaders.splice(index, 1);
|
|
44
|
+
setHeaders(newHeaders);
|
|
45
|
+
onChange(newHeaders.map(({ name, value, configured }) => ({
|
|
46
|
+
name,
|
|
47
|
+
value,
|
|
48
|
+
configured,
|
|
49
|
+
})));
|
|
50
|
+
};
|
|
51
|
+
const onBlur = () => {
|
|
52
|
+
onChange(headers.map(({ name, value, configured }) => ({
|
|
53
|
+
name,
|
|
54
|
+
value,
|
|
55
|
+
configured,
|
|
56
|
+
})));
|
|
57
|
+
};
|
|
58
|
+
const styles = {
|
|
59
|
+
container: (0, css_1.css)({
|
|
60
|
+
marginTop: spacing(3),
|
|
61
|
+
}),
|
|
62
|
+
addHeaderButton: (0, css_1.css)({
|
|
63
|
+
marginTop: spacing(1.5),
|
|
64
|
+
}),
|
|
65
|
+
};
|
|
66
|
+
return (react_1.default.createElement("div", { className: styles.container },
|
|
67
|
+
react_1.default.createElement(ConfigSection_1.ConfigSubSection, { title: "HTTP headers", description: "Pass along additional context and metadata about the request/response", isCollapsible: true, isInitiallyOpen: headers.length > 0 },
|
|
68
|
+
react_1.default.createElement("div", null, headers.map((header) => (react_1.default.createElement(CustomHeader_1.CustomHeader, { key: header.id, header: header, onChange: (header) => onHeaderChange(header.id, header), onDelete: () => onHeaderDelete(header.id), onBlur: onBlur, readOnly: readOnly })))),
|
|
69
|
+
react_1.default.createElement("div", { className: styles.addHeaderButton },
|
|
70
|
+
react_1.default.createElement(ui_1.Button, { icon: "plus", variant: "secondary", fill: "outline", onClick: onHeaderAdd, disabled: readOnly }, headers.length === 0 ? 'Add header' : 'Add another header')))));
|
|
71
|
+
};
|
|
72
|
+
exports.CustomHeaders = CustomHeaders;
|
|
73
|
+
function uniqueId() {
|
|
74
|
+
return Math.random().toString(16).slice(2);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=CustomHeaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomHeaders.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertLegacyAuthProps = exports.AuthMethod = exports.Auth = void 0;
|
|
4
|
+
var Auth_1 = require("./Auth");
|
|
5
|
+
Object.defineProperty(exports, "Auth", { enumerable: true, get: function () { return Auth_1.Auth; } });
|
|
6
|
+
var types_1 = require("./types");
|
|
7
|
+
Object.defineProperty(exports, "AuthMethod", { enumerable: true, get: function () { return types_1.AuthMethod; } });
|
|
8
|
+
var utils_1 = require("./utils");
|
|
9
|
+
Object.defineProperty(exports, "convertLegacyAuthProps", { enumerable: true, get: function () { return utils_1.convertLegacyAuthProps; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ConfigEditor/Auth/index.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,iCAAqC;AAA5B,mGAAA,UAAU,OAAA;AACnB,iCAAiD;AAAxC,+GAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCommonStyles = void 0;
|
|
4
|
+
const css_1 = require("@emotion/css");
|
|
5
|
+
const useCommonStyles = () => {
|
|
6
|
+
return {
|
|
7
|
+
inlineFieldNoMarginRight: (0, css_1.css)({
|
|
8
|
+
marginRight: 0,
|
|
9
|
+
}),
|
|
10
|
+
// This is dirty hack to make configured secret input grow
|
|
11
|
+
inlineFieldWithSecret: (0, css_1.css)({
|
|
12
|
+
'[class$="layoutChildrenWrapper"]:first-child': {
|
|
13
|
+
flexGrow: 1,
|
|
14
|
+
},
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
exports.useCommonStyles = useCommonStyles;
|
|
19
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/components/ConfigEditor/Auth/styles.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AAE5B,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,OAAO;QACL,wBAAwB,EAAE,IAAA,SAAG,EAAC;YAC5B,WAAW,EAAE,CAAC;SACf,CAAC;QACF,0DAA0D;QAC1D,qBAAqB,EAAE,IAAA,SAAG,EAAC;YACzB,8CAA8C,EAAE;gBAC9C,QAAQ,EAAE,CAAC;aACZ;SACF,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SelfSignedCertificate = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const TLSSettingsSection_1 = require("./TLSSettingsSection");
|
|
9
|
+
const styles_1 = require("../styles");
|
|
10
|
+
const SelfSignedCertificate = ({ enabled, certificateConfigured, onToggle, onCertificateChange, onCertificateReset, tooltips, readOnly, }) => {
|
|
11
|
+
var _a;
|
|
12
|
+
const commonStyles = (0, styles_1.useCommonStyles)();
|
|
13
|
+
return (react_1.default.createElement(TLSSettingsSection_1.TLSSettingsSection, { enabled: enabled, label: "Add self-signed certificate", tooltipText: "Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures", onToggle: (newEnabled) => onToggle(newEnabled), readOnly: readOnly },
|
|
14
|
+
react_1.default.createElement(ui_1.InlineField, { label: "CA Certificate", labelWidth: 24, tooltip: (_a = tooltips === null || tooltips === void 0 ? void 0 : tooltips.certificateLabel) !== null && _a !== void 0 ? _a : 'Your self-signed certificate', required: true, htmlFor: "self-signed-certificate-input", interactive: true, grow: true, className: (0, css_1.cx)(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret), disabled: readOnly },
|
|
15
|
+
react_1.default.createElement(ui_1.SecretTextArea, { id: "self-signed-certificate-input", isConfigured: certificateConfigured, onChange: (e) => onCertificateChange(e.currentTarget.value), onReset: readOnly ? () => { } : onCertificateReset, placeholder: "Begins with --- BEGIN CERTIFICATE ---", rows: 6, required: true }))));
|
|
16
|
+
};
|
|
17
|
+
exports.SelfSignedCertificate = SelfSignedCertificate;
|
|
18
|
+
//# sourceMappingURL=SelfSignedCertificate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelfSignedCertificate.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/tls/SelfSignedCertificate.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,sCAAkC;AAClC,oCAA0D;AAC1D,6DAA0D;AAC1D,sCAA4C;AAcrC,MAAM,qBAAqB,GAAG,CAAC,EACpC,OAAO,EACP,qBAAqB,EACrB,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,GACF,EAAE,EAAE;;IACV,MAAM,YAAY,GAAG,IAAA,wBAAe,GAAE,CAAC;IAEvC,OAAO,CACL,8BAAC,uCAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,6BAA6B,EACnC,WAAW,EAAC,6IAA6I,EACzJ,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC9C,QAAQ,EAAE,QAAQ;QAElB,8BAAC,gBAAW,IACV,KAAK,EAAC,gBAAgB,EACtB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,mCAAI,8BAA8B,EACrE,QAAQ,QACR,OAAO,EAAC,+BAA+B,EACvC,WAAW,QACX,IAAI,QACJ,SAAS,EAAE,IAAA,QAAE,EAAC,YAAY,CAAC,wBAAwB,EAAE,YAAY,CAAC,qBAAqB,CAAC,EACxF,QAAQ,EAAE,QAAQ;YAElB,8BAAC,mBAAc,IACb,EAAE,EAAC,+BAA+B,EAClC,YAAY,EAAE,qBAAqB,EACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAC3D,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EACjD,WAAW,EAAC,uCAAuC,EACnD,IAAI,EAAE,CAAC,EACP,QAAQ,SACR,CACU,CACK,CACtB,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,qBAAqB,yBA0ChC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkipTLSVerification = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const TLSSettingsSection_1 = require("./TLSSettingsSection");
|
|
7
|
+
const SkipTLSVerification = ({ enabled, onToggle, readOnly }) => {
|
|
8
|
+
return (react_1.default.createElement(TLSSettingsSection_1.TLSSettingsSection, { enabled: enabled, label: "Skip TLS certificate validation", tooltipText: "Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing", onToggle: (newEnabled) => onToggle(newEnabled), readOnly: readOnly }));
|
|
9
|
+
};
|
|
10
|
+
exports.SkipTLSVerification = SkipTLSVerification;
|
|
11
|
+
//# sourceMappingURL=SkipTLSVerification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkipTLSVerification.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/tls/SkipTLSVerification.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,6DAA0D;AAQnD,MAAM,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC5E,OAAO,CACL,8BAAC,uCAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,iCAAiC,EACvC,WAAW,EAAC,mGAAmG,EAC/G,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC9C,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,mBAAmB,uBAU9B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TLSClientAuth = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const TLSSettingsSection_1 = require("./TLSSettingsSection");
|
|
9
|
+
const styles_1 = require("../styles");
|
|
10
|
+
const TLSClientAuth = ({ enabled, serverName, clientCertificateConfigured, clientKeyConfigured, onToggle, onServerNameChange, onClientCertificateChange, onClientKeyChange, onClientCertificateReset, onClientKeyReset, tooltips, readOnly, }) => {
|
|
11
|
+
var _a, _b, _c;
|
|
12
|
+
const commonStyles = (0, styles_1.useCommonStyles)();
|
|
13
|
+
return (react_1.default.createElement(TLSSettingsSection_1.TLSSettingsSection, { enabled: enabled, label: "TLS Client Authentication", tooltipText: "Validate using TLS client authentication, in which the server authenticates the client", onToggle: (newEnabled) => onToggle(newEnabled), readOnly: readOnly },
|
|
14
|
+
react_1.default.createElement(ui_1.InlineField, { label: "ServerName", labelWidth: 24, tooltip: (_a = tooltips === null || tooltips === void 0 ? void 0 : tooltips.serverNameLabel) !== null && _a !== void 0 ? _a : 'A Servername is used to verify the hostname on the returned certificate', required: true, htmlFor: "client-auth-servername-input", interactive: true, grow: true, className: commonStyles.inlineFieldNoMarginRight, disabled: readOnly },
|
|
15
|
+
react_1.default.createElement(ui_1.Input, { id: "client-auth-servername-input", placeholder: "domain.example.com", value: serverName, onChange: (e) => onServerNameChange(e.currentTarget.value), required: true })),
|
|
16
|
+
react_1.default.createElement(ui_1.InlineField, { label: "Client Certificate", labelWidth: 24, tooltip: (_b = tooltips === null || tooltips === void 0 ? void 0 : tooltips.certificateLabel) !== null && _b !== void 0 ? _b : 'The client certificate can be generated from a Certificate Authority or be self-signed', required: true, htmlFor: "client-auth-client-certificate-input", interactive: true, grow: true, className: (0, css_1.cx)(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret), disabled: readOnly },
|
|
17
|
+
react_1.default.createElement(ui_1.SecretTextArea, { id: "client-auth-client-certificate-input", isConfigured: clientCertificateConfigured, onChange: (e) => onClientCertificateChange(e.currentTarget.value), onReset: readOnly ? () => { } : onClientCertificateReset, placeholder: "Begins with --- BEGIN CERTIFICATE ---", rows: 6, required: true })),
|
|
18
|
+
react_1.default.createElement(ui_1.InlineField, { label: "Client Key", labelWidth: 24, tooltip: (_c = tooltips === null || tooltips === void 0 ? void 0 : tooltips.keyLabel) !== null && _c !== void 0 ? _c : 'The client key can be generated from a Certificate Authority or be self-signed', required: true, htmlFor: "client-auth-client-key-input", interactive: true, grow: true, className: (0, css_1.cx)(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret), disabled: readOnly },
|
|
19
|
+
react_1.default.createElement(ui_1.SecretTextArea, { id: "client-auth-client-key-input", isConfigured: clientKeyConfigured, onChange: (e) => onClientKeyChange(e.currentTarget.value), onReset: readOnly ? () => { } : onClientKeyReset, placeholder: `Begins with --- RSA PRIVATE KEY CERTIFICATE ---`, rows: 6, required: true }))));
|
|
20
|
+
};
|
|
21
|
+
exports.TLSClientAuth = TLSClientAuth;
|
|
22
|
+
//# sourceMappingURL=TLSClientAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TLSClientAuth.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/tls/TLSClientAuth.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TLSSettings = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const css_1 = require("@emotion/css");
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const SelfSignedCertificate_1 = require("./SelfSignedCertificate");
|
|
9
|
+
const TLSClientAuth_1 = require("./TLSClientAuth");
|
|
10
|
+
const SkipTLSVerification_1 = require("./SkipTLSVerification");
|
|
11
|
+
const ConfigSection_1 = require("../../ConfigSection");
|
|
12
|
+
const TLSSettings = ({ selfSignedCertificate, TLSClientAuth, skipTLSVerification, readOnly }) => {
|
|
13
|
+
const { spacing } = (0, ui_1.useTheme2)();
|
|
14
|
+
const styles = {
|
|
15
|
+
container: (0, css_1.css)({
|
|
16
|
+
marginTop: spacing(3),
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
return (react_1.default.createElement(ConfigSection_1.ConfigSubSection, { className: styles.container, title: "TLS settings", description: "Additional security measures that can be applied on top of authentication" },
|
|
20
|
+
react_1.default.createElement(SelfSignedCertificate_1.SelfSignedCertificate, Object.assign({}, selfSignedCertificate, { readOnly: readOnly })),
|
|
21
|
+
react_1.default.createElement(TLSClientAuth_1.TLSClientAuth, Object.assign({}, TLSClientAuth, { readOnly: readOnly })),
|
|
22
|
+
react_1.default.createElement(SkipTLSVerification_1.SkipTLSVerification, Object.assign({}, skipTLSVerification, { readOnly: readOnly }))));
|
|
23
|
+
};
|
|
24
|
+
exports.TLSSettings = TLSSettings;
|
|
25
|
+
//# sourceMappingURL=TLSSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TLSSettings.js","sourceRoot":"","sources":["../../../../../src/components/ConfigEditor/Auth/tls/TLSSettings.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,sCAAmC;AACnC,oCAAwC;AACxC,mEAAqG;AACrG,mDAAuG;AACvG,+DAA+F;AAC/F,uDAAuD;AAShD,MAAM,WAAW,GAAG,CAAC,EAAE,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC5G,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,cAAS,GAAE,CAAC;IAEhC,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,IAAA,SAAG,EAAC;YACb,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;SACtB,CAAC;KACH,CAAC;IAEF,OAAO,CACL,8BAAC,gCAAgB,IACf,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,2EAA2E;QAEvF,8BAAC,6CAAqB,oBAAK,qBAAqB,IAAE,QAAQ,EAAE,QAAQ,IAAI;QACxE,8BAAC,6BAAsB,oBAAK,aAAa,IAAE,QAAQ,EAAE,QAAQ,IAAI;QACjE,8BAAC,yCAAmB,oBAAK,mBAAmB,IAAE,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACpB,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,WAAW,eAoBtB"}
|