@grafana/sql 0.0.0 → 13.0.0-23483592685
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/CHANGELOG.md +3 -0
- package/README.md +10 -0
- package/dist/cjs/ResponseParser.cjs +29 -0
- package/dist/cjs/ResponseParser.cjs.map +1 -0
- package/dist/cjs/SQLVariableEditor.cjs +86 -0
- package/dist/cjs/SQLVariableEditor.cjs.map +1 -0
- package/dist/cjs/SQLVariableSupport.cjs +40 -0
- package/dist/cjs/SQLVariableSupport.cjs.map +1 -0
- package/dist/cjs/SQLVariableUtils.cjs +75 -0
- package/dist/cjs/SQLVariableUtils.cjs.map +1 -0
- package/dist/cjs/components/ConfirmModal.cjs +56 -0
- package/dist/cjs/components/ConfirmModal.cjs.map +1 -0
- package/dist/cjs/components/DatasetSelector.cjs +48 -0
- package/dist/cjs/components/DatasetSelector.cjs.map +1 -0
- package/dist/cjs/components/QueryEditor.cjs +124 -0
- package/dist/cjs/components/QueryEditor.cjs.map +1 -0
- package/dist/cjs/components/QueryEditorLazy.cjs +44 -0
- package/dist/cjs/components/QueryEditorLazy.cjs.map +1 -0
- package/dist/cjs/components/QueryHeader.cjs +294 -0
- package/dist/cjs/components/QueryHeader.cjs.map +1 -0
- package/dist/cjs/components/TableSelector.cjs +41 -0
- package/dist/cjs/components/TableSelector.cjs.map +1 -0
- package/dist/cjs/components/configuration/ConnectionLimits.cjs +162 -0
- package/dist/cjs/components/configuration/ConnectionLimits.cjs.map +1 -0
- package/dist/cjs/components/configuration/Divider.cjs +25 -0
- package/dist/cjs/components/configuration/Divider.cjs.map +1 -0
- package/dist/cjs/components/configuration/MaxLifetimeField.cjs +41 -0
- package/dist/cjs/components/configuration/MaxLifetimeField.cjs.map +1 -0
- package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs +53 -0
- package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs.map +1 -0
- package/dist/cjs/components/configuration/NumberInput.cjs +37 -0
- package/dist/cjs/components/configuration/NumberInput.cjs.map +1 -0
- package/dist/cjs/components/configuration/TLSSecretsConfig.cjs +106 -0
- package/dist/cjs/components/configuration/TLSSecretsConfig.cjs.map +1 -0
- package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs +52 -0
- package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs +40 -0
- package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs +108 -0
- package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/QueryValidator.cjs +100 -0
- package/dist/cjs/components/query-editor-raw/QueryValidator.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/RawEditor.cjs +116 -0
- package/dist/cjs/components/query-editor-raw/RawEditor.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs +273 -0
- package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/GroupByRow.cjs +69 -0
- package/dist/cjs/components/visual-query-builder/GroupByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/OrderByRow.cjs +82 -0
- package/dist/cjs/components/visual-query-builder/OrderByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/Preview.cjs +55 -0
- package/dist/cjs/components/visual-query-builder/Preview.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs +18 -0
- package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs +18 -0
- package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs +56 -0
- package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectColumn.cjs +30 -0
- package/dist/cjs/components/visual-query-builder/SelectColumn.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs +135 -0
- package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs +142 -0
- package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectRow.cjs +184 -0
- package/dist/cjs/components/visual-query-builder/SelectRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/VisualEditor.cjs +43 -0
- package/dist/cjs/components/visual-query-builder/VisualEditor.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/WhereRow.cjs +84 -0
- package/dist/cjs/components/visual-query-builder/WhereRow.cjs.map +1 -0
- package/dist/cjs/constants.cjs +77 -0
- package/dist/cjs/constants.cjs.map +1 -0
- package/dist/cjs/datasource/SqlDatasource.cjs +188 -0
- package/dist/cjs/datasource/SqlDatasource.cjs.map +1 -0
- package/dist/cjs/defaults.cjs +32 -0
- package/dist/cjs/defaults.cjs.map +1 -0
- package/dist/cjs/expressions.cjs +23 -0
- package/dist/cjs/expressions.cjs.map +1 -0
- package/dist/cjs/index.cjs +48 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/loadResources.cjs +49 -0
- package/dist/cjs/loadResources.cjs.map +1 -0
- package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/de-DE/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/de-DE/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/en-US/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/en-US/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/es-ES/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/es-ES/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/id-ID/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/id-ID/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/it-IT/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/it-IT/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/types.cjs +24 -0
- package/dist/cjs/types.cjs.map +1 -0
- package/dist/cjs/utils/formatSQL.cjs +19 -0
- package/dist/cjs/utils/formatSQL.cjs.map +1 -0
- package/dist/cjs/utils/getColumnsWithIndices.cjs +33 -0
- package/dist/cjs/utils/getColumnsWithIndices.cjs.map +1 -0
- package/dist/cjs/utils/logging.cjs +11 -0
- package/dist/cjs/utils/logging.cjs.map +1 -0
- package/dist/cjs/utils/migration.cjs +24 -0
- package/dist/cjs/utils/migration.cjs.map +1 -0
- package/dist/cjs/utils/sql.utils.cjs +75 -0
- package/dist/cjs/utils/sql.utils.cjs.map +1 -0
- package/dist/cjs/utils/testHelpers.cjs +31 -0
- package/dist/cjs/utils/testHelpers.cjs.map +1 -0
- package/dist/cjs/utils/useSqlChange.cjs +22 -0
- package/dist/cjs/utils/useSqlChange.cjs.map +1 -0
- package/dist/esm/ResponseParser.mjs +25 -0
- package/dist/esm/ResponseParser.mjs.map +1 -0
- package/dist/esm/SQLVariableEditor.mjs +82 -0
- package/dist/esm/SQLVariableEditor.mjs.map +1 -0
- package/dist/esm/SQLVariableSupport.mjs +36 -0
- package/dist/esm/SQLVariableSupport.mjs.map +1 -0
- package/dist/esm/SQLVariableUtils.mjs +68 -0
- package/dist/esm/SQLVariableUtils.mjs.map +1 -0
- package/dist/esm/components/ConfirmModal.mjs +52 -0
- package/dist/esm/components/ConfirmModal.mjs.map +1 -0
- package/dist/esm/components/DatasetSelector.mjs +44 -0
- package/dist/esm/components/DatasetSelector.mjs.map +1 -0
- package/dist/esm/components/QueryEditor.mjs +122 -0
- package/dist/esm/components/QueryEditor.mjs.map +1 -0
- package/dist/esm/components/QueryEditorLazy.mjs +38 -0
- package/dist/esm/components/QueryEditorLazy.mjs.map +1 -0
- package/dist/esm/components/QueryHeader.mjs +290 -0
- package/dist/esm/components/QueryHeader.mjs.map +1 -0
- package/dist/esm/components/TableSelector.mjs +37 -0
- package/dist/esm/components/TableSelector.mjs.map +1 -0
- package/dist/esm/components/configuration/ConnectionLimits.mjs +158 -0
- package/dist/esm/components/configuration/ConnectionLimits.mjs.map +1 -0
- package/dist/esm/components/configuration/Divider.mjs +21 -0
- package/dist/esm/components/configuration/Divider.mjs.map +1 -0
- package/dist/esm/components/configuration/MaxLifetimeField.mjs +37 -0
- package/dist/esm/components/configuration/MaxLifetimeField.mjs.map +1 -0
- package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs +49 -0
- package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs.map +1 -0
- package/dist/esm/components/configuration/NumberInput.mjs +33 -0
- package/dist/esm/components/configuration/NumberInput.mjs.map +1 -0
- package/dist/esm/components/configuration/TLSSecretsConfig.mjs +102 -0
- package/dist/esm/components/configuration/TLSSecretsConfig.mjs.map +1 -0
- package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs +48 -0
- package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs +36 -0
- package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/QueryToolbox.mjs +104 -0
- package/dist/esm/components/query-editor-raw/QueryToolbox.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/QueryValidator.mjs +96 -0
- package/dist/esm/components/query-editor-raw/QueryValidator.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/RawEditor.mjs +108 -0
- package/dist/esm/components/query-editor-raw/RawEditor.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs +266 -0
- package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/GroupByRow.mjs +65 -0
- package/dist/esm/components/visual-query-builder/GroupByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/OrderByRow.mjs +78 -0
- package/dist/esm/components/visual-query-builder/OrderByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/Preview.mjs +51 -0
- package/dist/esm/components/visual-query-builder/Preview.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs +14 -0
- package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs +14 -0
- package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs +51 -0
- package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectColumn.mjs +26 -0
- package/dist/esm/components/visual-query-builder/SelectColumn.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs +131 -0
- package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs +138 -0
- package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectRow.mjs +180 -0
- package/dist/esm/components/visual-query-builder/SelectRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/VisualEditor.mjs +39 -0
- package/dist/esm/components/visual-query-builder/VisualEditor.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/WhereRow.mjs +80 -0
- package/dist/esm/components/visual-query-builder/WhereRow.mjs.map +1 -0
- package/dist/esm/constants.mjs +71 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/datasource/SqlDatasource.mjs +184 -0
- package/dist/esm/datasource/SqlDatasource.mjs.map +1 -0
- package/dist/esm/defaults.mjs +28 -0
- package/dist/esm/defaults.mjs.map +1 -0
- package/dist/esm/expressions.mjs +18 -0
- package/dist/esm/expressions.mjs.map +1 -0
- package/dist/esm/index.mjs +22 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/loadResources.mjs +43 -0
- package/dist/esm/loadResources.mjs.map +1 -0
- package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/de-DE/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/de-DE/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/en-US/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/en-US/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/es-ES/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/es-ES/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/fr-FR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/fr-FR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/hu-HU/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/hu-HU/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/id-ID/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/id-ID/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/it-IT/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/it-IT/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/ja-JP/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/ja-JP/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/ko-KR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/ko-KR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/nl-NL/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/nl-NL/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/pl-PL/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/pl-PL/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/pt-BR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/pt-BR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/pt-PT/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/pt-PT/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/ru-RU/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/ru-RU/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/sv-SE/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/sv-SE/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/tr-TR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/tr-TR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/types.mjs +18 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/utils/formatSQL.mjs +11 -0
- package/dist/esm/utils/formatSQL.mjs.map +1 -0
- package/dist/esm/utils/getColumnsWithIndices.mjs +29 -0
- package/dist/esm/utils/getColumnsWithIndices.mjs.map +1 -0
- package/dist/esm/utils/logging.mjs +7 -0
- package/dist/esm/utils/logging.mjs.map +1 -0
- package/dist/esm/utils/migration.mjs +22 -0
- package/dist/esm/utils/migration.mjs.map +1 -0
- package/dist/esm/utils/sql.utils.mjs +66 -0
- package/dist/esm/utils/sql.utils.mjs.map +1 -0
- package/dist/esm/utils/testHelpers.mjs +27 -0
- package/dist/esm/utils/testHelpers.mjs.map +1 -0
- package/dist/esm/utils/useSqlChange.mjs +18 -0
- package/dist/esm/utils/useSqlChange.mjs.map +1 -0
- package/dist/types/ResponseParser.d.ts +5 -0
- package/dist/types/SQLVariableEditor.d.ts +5 -0
- package/dist/types/SQLVariableSupport.d.ts +11 -0
- package/dist/types/SQLVariableUtils.d.ts +6 -0
- package/dist/types/components/ConfirmModal.d.ts +8 -0
- package/dist/types/components/DatasetSelector.d.ts +11 -0
- package/dist/types/components/ErrorBoundary.d.ts +12 -0
- package/dist/types/components/QueryEditor.d.ts +8 -0
- package/dist/types/components/QueryEditorLazy.d.ts +2 -0
- package/dist/types/components/QueryHeader.d.ts +16 -0
- package/dist/types/components/SqlComponents.testHelpers.d.ts +65 -0
- package/dist/types/components/TableSelector.d.ts +10 -0
- package/dist/types/components/configuration/ConnectionLimits.d.ts +8 -0
- package/dist/types/components/configuration/Divider.d.ts +1 -0
- package/dist/types/components/configuration/MaxLifetimeField.d.ts +8 -0
- package/dist/types/components/configuration/MaxOpenConnectionsField.d.ts +8 -0
- package/dist/types/components/configuration/NumberInput.d.ts +8 -0
- package/dist/types/components/configuration/TLSSecretsConfig.d.ts +9 -0
- package/dist/types/components/configuration/useMigrateDatabaseFields.d.ts +7 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/query-editor-raw/QueryEditorRaw.d.ts +15 -0
- package/dist/types/components/query-editor-raw/QueryToolbox.d.ts +10 -0
- package/dist/types/components/query-editor-raw/QueryValidator.d.ts +9 -0
- package/dist/types/components/query-editor-raw/RawEditor.d.ts +9 -0
- package/dist/types/components/visual-query-builder/AwesomeQueryBuilder.d.ts +6 -0
- package/dist/types/components/visual-query-builder/GroupByRow.d.ts +9 -0
- package/dist/types/components/visual-query-builder/OrderByRow.d.ts +10 -0
- package/dist/types/components/visual-query-builder/Preview.d.ts +6 -0
- package/dist/types/components/visual-query-builder/SQLGroupByRow.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SQLOrderByRow.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SQLWhereRow.d.ts +12 -0
- package/dist/types/components/visual-query-builder/SelectColumn.d.ts +8 -0
- package/dist/types/components/visual-query-builder/SelectCustomFunctionParameters.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SelectFunctionParameters.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SelectRow.d.ts +10 -0
- package/dist/types/components/visual-query-builder/VisualEditor.d.ts +8 -0
- package/dist/types/components/visual-query-builder/WhereRow.d.ts +9 -0
- package/dist/types/components/visual-query-builder/index.d.ts +1 -0
- package/dist/types/constants.d.ts +12 -0
- package/dist/types/datasource/SqlDatasource.d.ts +38 -0
- package/dist/types/defaults.d.ts +3 -0
- package/dist/types/expressions.d.ts +51 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/loadResources.d.ts +2 -0
- package/dist/types/types.d.ts +152 -0
- package/dist/types/utils/formatSQL.d.ts +1 -0
- package/dist/types/utils/getColumnsWithIndices.d.ts +3 -0
- package/dist/types/utils/logging.d.ts +2 -0
- package/dist/types/utils/migration.d.ts +3 -0
- package/dist/types/utils/sql.utils.d.ts +21 -0
- package/dist/types/utils/testHelpers.d.ts +2 -0
- package/dist/types/utils/useSqlChange.d.ts +10 -0
- package/package.json +80 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaxLifetimeField.cjs","sources":["../../../../src/components/configuration/MaxLifetimeField.tsx"],"sourcesContent":["import { Trans } from '@grafana/i18n';\nimport { config } from '@grafana/runtime';\nimport { Field, Icon, Label, Stack, Tooltip } from '@grafana/ui';\n\nimport { SQLOptions } from '../../types';\n\nimport { NumberInput } from './NumberInput';\n\ninterface Props {\n labelWidth: number;\n onMaxLifetimeChanged: (number?: number) => void;\n jsonData: SQLOptions;\n}\nexport function MaxLifetimeField({ labelWidth, onMaxLifetimeChanged, jsonData }: Props) {\n return (\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.max-lifetime\">Max lifetime</Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.content-max-lifetime\">\n The maximum amount of time in seconds a connection may be reused. If set to 0, connections are\n reused forever.\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <NumberInput\n value={jsonData.connMaxLifetime}\n defaultValue={config.sqlConnectionLimits.connMaxLifetime}\n onChange={onMaxLifetimeChanged}\n width={labelWidth}\n />\n </Field>\n );\n}\n"],"names":["jsx","Field","Label","jsxs","Stack","Trans","Tooltip","Icon","NumberInput","config"],"mappings":";;;;;;;;;;;AAaO,SAAS,gBAAA,CAAiB,EAAE,UAAA,EAAY,oBAAA,EAAsB,UAAS,EAAU;AACtF,EAAA,uBACEA,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,uBACED,cAAA,CAACE,QAAA,EAAA,EACC,QAAA,kBAAAC,eAAA,CAACC,QAAA,EAAA,EAAM,KAAK,GAAA,EACV,QAAA,EAAA;AAAA,wBAAAJ,cAAA,CAAC,UACC,QAAA,kBAAAA,cAAA,CAACK,UAAA,EAAA,EAAM,OAAA,EAAQ,uDAAA,EAAwD,0BAAY,CAAA,EACrF,CAAA;AAAA,wBACAL,cAAA;AAAA,UAACM,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,iCACG,MAAA,EAAA,EACC,QAAA,kBAAAN,cAAA,CAACK,cAAM,OAAA,EAAQ,+DAAA,EAAgE,4HAG/E,CAAA,EACF,CAAA;AAAA,YAGF,QAAA,kBAAAL,cAAA,CAACO,OAAA,EAAA,EAAK,IAAA,EAAK,aAAA,EAAc,MAAK,IAAA,EAAK;AAAA;AAAA;AACrC,OAAA,EACF,CAAA,EACF,CAAA;AAAA,MAGF,QAAA,kBAAAP,cAAA;AAAA,QAACQ,uBAAA;AAAA,QAAA;AAAA,UACC,OAAO,QAAA,CAAS,eAAA;AAAA,UAChB,YAAA,EAAcC,eAAO,mBAAA,CAAoB,eAAA;AAAA,UACzC,QAAA,EAAU,oBAAA;AAAA,UACV,KAAA,EAAO;AAAA;AAAA;AACT;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var i18n = require('@grafana/i18n');
|
|
7
|
+
var runtime = require('@grafana/runtime');
|
|
8
|
+
var ui = require('@grafana/ui');
|
|
9
|
+
var NumberInput = require('./NumberInput.cjs');
|
|
10
|
+
|
|
11
|
+
"use strict";
|
|
12
|
+
function MaxOpenConnectionsField({ labelWidth, onMaxConnectionsChanged, jsonData }) {
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14
|
+
ui.Field,
|
|
15
|
+
{
|
|
16
|
+
noMargin: true,
|
|
17
|
+
label: /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 0.5, children: [
|
|
18
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.connection-limits.max-open", children: "Max open" }) }),
|
|
19
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20
|
+
ui.Tooltip,
|
|
21
|
+
{
|
|
22
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsxs(i18n.Trans, { i18nKey: "grafana-sql.components.connection-limits.content-max-open", children: [
|
|
23
|
+
"The maximum number of open connections to the database. If ",
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsx("i", { children: "Max idle connections" }),
|
|
25
|
+
" is greater than 0 and the ",
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsx("i", { children: "Max open connections" }),
|
|
27
|
+
" is less than ",
|
|
28
|
+
/* @__PURE__ */ jsxRuntime.jsx("i", { children: "Max idle connections" }),
|
|
29
|
+
", then",
|
|
30
|
+
/* @__PURE__ */ jsxRuntime.jsx("i", { children: "Max idle connections" }),
|
|
31
|
+
" will be reduced to match the ",
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx("i", { children: "Max open connections" }),
|
|
33
|
+
" limit. If set to 0, there is no limit on the number of open connections."
|
|
34
|
+
] }) }),
|
|
35
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.Icon, { name: "info-circle", size: "sm" })
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
] }) }),
|
|
39
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
40
|
+
NumberInput.NumberInput,
|
|
41
|
+
{
|
|
42
|
+
value: jsonData.maxOpenConns,
|
|
43
|
+
defaultValue: runtime.config.sqlConnectionLimits.maxOpenConns,
|
|
44
|
+
onChange: onMaxConnectionsChanged,
|
|
45
|
+
width: labelWidth
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
exports.MaxOpenConnectionsField = MaxOpenConnectionsField;
|
|
53
|
+
//# sourceMappingURL=MaxOpenConnectionsField.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaxOpenConnectionsField.cjs","sources":["../../../../src/components/configuration/MaxOpenConnectionsField.tsx"],"sourcesContent":["import { Trans } from '@grafana/i18n';\nimport { config } from '@grafana/runtime';\nimport { Field, Icon, Label, Stack, Tooltip } from '@grafana/ui';\n\nimport { SQLOptions } from '../../types';\n\nimport { NumberInput } from './NumberInput';\n\ninterface Props {\n labelWidth: number;\n onMaxConnectionsChanged: (number?: number) => void;\n jsonData: SQLOptions;\n}\n\nexport function MaxOpenConnectionsField({ labelWidth, onMaxConnectionsChanged, jsonData }: Props) {\n return (\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.max-open\">Max open</Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.content-max-open\">\n The maximum number of open connections to the database. If <i>Max idle connections</i> is greater\n than 0 and the <i>Max open connections</i> is less than <i>Max idle connections</i>, then\n <i>Max idle connections</i> will be reduced to match the <i>Max open connections</i> limit. If set\n to 0, there is no limit on the number of open connections.\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <NumberInput\n value={jsonData.maxOpenConns}\n defaultValue={config.sqlConnectionLimits.maxOpenConns}\n onChange={onMaxConnectionsChanged}\n width={labelWidth}\n />\n </Field>\n );\n}\n"],"names":["jsx","Field","Label","jsxs","Stack","Trans","Tooltip","Icon","NumberInput","config"],"mappings":";;;;;;;;;;;AAcO,SAAS,uBAAA,CAAwB,EAAE,UAAA,EAAY,uBAAA,EAAyB,UAAS,EAAU;AAChG,EAAA,uBACEA,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,uBACED,cAAA,CAACE,QAAA,EAAA,EACC,QAAA,kBAAAC,eAAA,CAACC,QAAA,EAAA,EAAM,KAAK,GAAA,EACV,QAAA,EAAA;AAAA,wBAAAJ,cAAA,CAAC,UACC,QAAA,kBAAAA,cAAA,CAACK,UAAA,EAAA,EAAM,OAAA,EAAQ,mDAAA,EAAoD,sBAAQ,CAAA,EAC7E,CAAA;AAAA,wBACAL,cAAA;AAAA,UAACM,UAAA;AAAA,UAAA;AAAA,YACC,yBACEN,cAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAG,eAAA,CAACE,UAAA,EAAA,EAAM,SAAQ,2DAAA,EAA4D,QAAA,EAAA;AAAA,cAAA,6DAAA;AAAA,8BACdL,cAAA,CAAC,OAAE,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,cAAI,6BAAA;AAAA,8BACvEA,cAAA,CAAC,OAAE,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,cAAI,gBAAA;AAAA,8BAAcA,cAAA,CAAC,OAAE,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,cAAI,QAAA;AAAA,8BACnFA,cAAA,CAAC,OAAE,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,cAAI,gCAAA;AAAA,8BAA8BA,cAAA,CAAC,OAAE,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,cAAI;AAAA,aAAA,EAEtF,CAAA,EACF,CAAA;AAAA,YAGF,QAAA,kBAAAA,cAAA,CAACO,OAAA,EAAA,EAAK,IAAA,EAAK,aAAA,EAAc,MAAK,IAAA,EAAK;AAAA;AAAA;AACrC,OAAA,EACF,CAAA,EACF,CAAA;AAAA,MAGF,QAAA,kBAAAP,cAAA;AAAA,QAACQ,uBAAA;AAAA,QAAA;AAAA,UACC,OAAO,QAAA,CAAS,YAAA;AAAA,UAChB,YAAA,EAAcC,eAAO,mBAAA,CAAoB,YAAA;AAAA,UACzC,QAAA,EAAU,uBAAA;AAAA,UACV,KAAA,EAAO;AAAA;AAAA;AACT;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var ui = require('@grafana/ui');
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
function NumberInput({ value, defaultValue, onChange, width }) {
|
|
11
|
+
const [isEmpty, setIsEmpty] = react.useState(false);
|
|
12
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13
|
+
ui.Input,
|
|
14
|
+
{
|
|
15
|
+
type: "number",
|
|
16
|
+
placeholder: String(defaultValue),
|
|
17
|
+
value: isEmpty ? "" : value,
|
|
18
|
+
onChange: (e) => {
|
|
19
|
+
var _a;
|
|
20
|
+
if (((_a = e.currentTarget.value) == null ? void 0 : _a.trim()) === "") {
|
|
21
|
+
setIsEmpty(true);
|
|
22
|
+
onChange(defaultValue);
|
|
23
|
+
} else {
|
|
24
|
+
setIsEmpty(false);
|
|
25
|
+
const newVal = Number(e.currentTarget.value);
|
|
26
|
+
if (!Number.isNaN(newVal)) {
|
|
27
|
+
onChange(newVal);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
width
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.NumberInput = NumberInput;
|
|
37
|
+
//# sourceMappingURL=NumberInput.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberInput.cjs","sources":["../../../../src/components/configuration/NumberInput.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Input } from '@grafana/ui';\n\ntype NumberInputProps = {\n value: number;\n defaultValue: number;\n onChange: (value: number) => void;\n width: number;\n};\n\nexport function NumberInput({ value, defaultValue, onChange, width }: NumberInputProps) {\n const [isEmpty, setIsEmpty] = useState(false);\n return (\n <Input\n type=\"number\"\n placeholder={String(defaultValue)}\n value={isEmpty ? '' : value}\n onChange={(e) => {\n if (e.currentTarget.value?.trim() === '') {\n setIsEmpty(true);\n onChange(defaultValue);\n } else {\n setIsEmpty(false);\n const newVal = Number(e.currentTarget.value);\n if (!Number.isNaN(newVal)) {\n onChange(newVal);\n }\n }\n }}\n width={width}\n />\n );\n}\n"],"names":["useState","jsx","Input"],"mappings":";;;;;;;;;AAWO,SAAS,YAAY,EAAE,KAAA,EAAO,YAAA,EAAc,QAAA,EAAU,OAAM,EAAqB;AACtF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAA,uBACEC,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAa,OAAO,YAAY,CAAA;AAAA,MAChC,KAAA,EAAO,UAAU,EAAA,GAAK,KAAA;AAAA,MACtB,QAAA,EAAU,CAAC,CAAA,KAAM;AAlBvB,QAAA,IAAA,EAAA;AAmBQ,QAAA,IAAA,CAAA,CAAI,EAAA,GAAA,CAAA,CAAE,aAAA,CAAc,KAAA,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,YAAW,EAAA,EAAI;AACxC,UAAA,UAAA,CAAW,IAAI,CAAA;AACf,UAAA,QAAA,CAAS,YAAY,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,UAAA,CAAW,KAAK,CAAA;AAChB,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,CAAA,CAAE,aAAA,CAAc,KAAK,CAAA;AAC3C,UAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACzB,YAAA,QAAA,CAAS,MAAM,CAAA;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var data = require('@grafana/data');
|
|
7
|
+
var i18n = require('@grafana/i18n');
|
|
8
|
+
var ui = require('@grafana/ui');
|
|
9
|
+
|
|
10
|
+
"use strict";
|
|
11
|
+
const TLSSecretsConfig = (props) => {
|
|
12
|
+
const { editorProps, showCACert, showKeyPair = true } = props;
|
|
13
|
+
const { secureJsonFields } = editorProps.options;
|
|
14
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15
|
+
showKeyPair ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
+
ui.Field,
|
|
17
|
+
{
|
|
18
|
+
noMargin: true,
|
|
19
|
+
label: /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 0.5, children: [
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.tlssecrets-config.tlsssl-client-certificate", children: "TLS/SSL Client Certificate" }) }),
|
|
21
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22
|
+
ui.Tooltip,
|
|
23
|
+
{
|
|
24
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.tlssecrets-config.content-tlsssl-client-certificate", children: "To authenticate with an TLS/SSL client certificate, provide the client certificate here." }) }),
|
|
25
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.Icon, { name: "info-circle", size: "sm" })
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
] }) }),
|
|
29
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
+
ui.SecretTextArea,
|
|
31
|
+
{
|
|
32
|
+
placeholder: "-----BEGIN CERTIFICATE-----",
|
|
33
|
+
cols: 45,
|
|
34
|
+
rows: 7,
|
|
35
|
+
isConfigured: secureJsonFields && secureJsonFields.tlsClientCert,
|
|
36
|
+
onChange: data.onUpdateDatasourceSecureJsonDataOption(editorProps, "tlsClientCert"),
|
|
37
|
+
onReset: () => {
|
|
38
|
+
data.updateDatasourcePluginResetOption(editorProps, "tlsClientCert");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
) : null,
|
|
44
|
+
showCACert ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
+
ui.Field,
|
|
46
|
+
{
|
|
47
|
+
noMargin: true,
|
|
48
|
+
label: /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 0.5, children: [
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.tlssecrets-config.tlsssl-root-certificate", children: "TLS/SSL Root Certificate" }) }),
|
|
50
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
+
ui.Tooltip,
|
|
52
|
+
{
|
|
53
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.tlssecrets-config.content-tlsssl-root-certificate", children: "If the selected TLS/SSL mode requires a server root certificate, provide it here" }) }),
|
|
54
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.Icon, { name: "info-circle", size: "sm" })
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
] }) }),
|
|
58
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
ui.SecretTextArea,
|
|
60
|
+
{
|
|
61
|
+
placeholder: "-----BEGIN CERTIFICATE-----",
|
|
62
|
+
cols: 45,
|
|
63
|
+
rows: 7,
|
|
64
|
+
isConfigured: secureJsonFields && secureJsonFields.tlsCACert,
|
|
65
|
+
onChange: data.onUpdateDatasourceSecureJsonDataOption(editorProps, "tlsCACert"),
|
|
66
|
+
onReset: () => {
|
|
67
|
+
data.updateDatasourcePluginResetOption(editorProps, "tlsCACert");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
) : null,
|
|
73
|
+
showKeyPair ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
ui.Field,
|
|
75
|
+
{
|
|
76
|
+
noMargin: true,
|
|
77
|
+
label: /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 0.5, children: [
|
|
78
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.tlssecrets-config.tlsssl-client-key", children: "TLS/SSL Client Key" }) }),
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
ui.Tooltip,
|
|
81
|
+
{
|
|
82
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.tlssecrets-config.content-tlsssl-client-key", children: "To authenticate with a client TLS/SSL certificate, provide the key here." }) }),
|
|
83
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.Icon, { name: "info-circle", size: "sm" })
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
] }) }),
|
|
87
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
+
ui.SecretTextArea,
|
|
89
|
+
{
|
|
90
|
+
placeholder: "-----BEGIN RSA PRIVATE KEY-----",
|
|
91
|
+
cols: 45,
|
|
92
|
+
rows: 7,
|
|
93
|
+
isConfigured: secureJsonFields && secureJsonFields.tlsClientKey,
|
|
94
|
+
onChange: data.onUpdateDatasourceSecureJsonDataOption(editorProps, "tlsClientKey"),
|
|
95
|
+
onReset: () => {
|
|
96
|
+
data.updateDatasourcePluginResetOption(editorProps, "tlsClientKey");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
) : null
|
|
102
|
+
] });
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
exports.TLSSecretsConfig = TLSSecretsConfig;
|
|
106
|
+
//# sourceMappingURL=TLSSecretsConfig.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TLSSecretsConfig.cjs","sources":["../../../../src/components/configuration/TLSSecretsConfig.tsx"],"sourcesContent":["import {\n DataSourceJsonData,\n DataSourcePluginOptionsEditorProps,\n KeyValue,\n onUpdateDatasourceSecureJsonDataOption,\n updateDatasourcePluginResetOption,\n} from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\nimport { Field, Icon, Label, SecretTextArea, Tooltip, Stack } from '@grafana/ui';\n\nexport interface Props<T extends DataSourceJsonData, S> {\n editorProps: DataSourcePluginOptionsEditorProps<T, S>;\n showCACert?: boolean;\n showKeyPair?: boolean;\n secureJsonFields?: KeyValue<Boolean>;\n labelWidth?: number;\n}\n\nexport const TLSSecretsConfig = <T extends DataSourceJsonData, S extends {} = {}>(props: Props<T, S>) => {\n const { editorProps, showCACert, showKeyPair = true } = props;\n const { secureJsonFields } = editorProps.options;\n return (\n <>\n {showKeyPair ? (\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.tlssecrets-config.tlsssl-client-certificate\">\n TLS/SSL Client Certificate\n </Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.tlssecrets-config.content-tlsssl-client-certificate\">\n To authenticate with an TLS/SSL client certificate, provide the client certificate here.\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <SecretTextArea\n // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n placeholder=\"-----BEGIN CERTIFICATE-----\"\n cols={45}\n rows={7}\n isConfigured={secureJsonFields && secureJsonFields.tlsClientCert}\n onChange={onUpdateDatasourceSecureJsonDataOption(editorProps, 'tlsClientCert')}\n onReset={() => {\n updateDatasourcePluginResetOption(editorProps, 'tlsClientCert');\n }}\n />\n </Field>\n ) : null}\n {showCACert ? (\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.tlssecrets-config.tlsssl-root-certificate\">\n TLS/SSL Root Certificate\n </Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.tlssecrets-config.content-tlsssl-root-certificate\">\n If the selected TLS/SSL mode requires a server root certificate, provide it here\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <SecretTextArea\n // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n placeholder=\"-----BEGIN CERTIFICATE-----\"\n cols={45}\n rows={7}\n isConfigured={secureJsonFields && secureJsonFields.tlsCACert}\n onChange={onUpdateDatasourceSecureJsonDataOption(editorProps, 'tlsCACert')}\n onReset={() => {\n updateDatasourcePluginResetOption(editorProps, 'tlsCACert');\n }}\n />\n </Field>\n ) : null}\n {showKeyPair ? (\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.tlssecrets-config.tlsssl-client-key\">TLS/SSL Client Key</Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.tlssecrets-config.content-tlsssl-client-key\">\n To authenticate with a client TLS/SSL certificate, provide the key here.\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <SecretTextArea\n // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n placeholder=\"-----BEGIN RSA PRIVATE KEY-----\"\n cols={45}\n rows={7}\n isConfigured={secureJsonFields && secureJsonFields.tlsClientKey}\n onChange={onUpdateDatasourceSecureJsonDataOption(editorProps, 'tlsClientKey')}\n onReset={() => {\n updateDatasourcePluginResetOption(editorProps, 'tlsClientKey');\n }}\n />\n </Field>\n ) : null}\n </>\n );\n};\n"],"names":["jsxs","Fragment","jsx","Field","Label","Stack","Trans","Tooltip","Icon","SecretTextArea","onUpdateDatasourceSecureJsonDataOption","updateDatasourcePluginResetOption"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var runtime = require('@grafana/runtime');
|
|
7
|
+
var logging = require('../../utils/logging.cjs');
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
function useMigrateDatabaseFields({
|
|
11
|
+
onOptionsChange,
|
|
12
|
+
options
|
|
13
|
+
}) {
|
|
14
|
+
react.useEffect(() => {
|
|
15
|
+
const jsonData = options.jsonData;
|
|
16
|
+
let newOptions = { ...options };
|
|
17
|
+
let optionsUpdated = false;
|
|
18
|
+
if (options.database) {
|
|
19
|
+
logging.sqlPluginLogger.logDebug(`Migrating from options.database with value ${options.database} for ${options.name}`);
|
|
20
|
+
newOptions.database = "";
|
|
21
|
+
newOptions.jsonData = { ...jsonData, database: options.database };
|
|
22
|
+
optionsUpdated = true;
|
|
23
|
+
}
|
|
24
|
+
if (jsonData.maxOpenConns === void 0 && jsonData.maxIdleConns === void 0 && jsonData.maxIdleConnsAuto === void 0) {
|
|
25
|
+
const { maxOpenConns, maxIdleConns } = runtime.config.sqlConnectionLimits;
|
|
26
|
+
logging.sqlPluginLogger.logDebug(
|
|
27
|
+
`Setting default max open connections to ${maxOpenConns} and setting max idle connection to ${maxIdleConns}`
|
|
28
|
+
);
|
|
29
|
+
newOptions.jsonData = {
|
|
30
|
+
...newOptions.jsonData,
|
|
31
|
+
maxOpenConns,
|
|
32
|
+
maxIdleConns,
|
|
33
|
+
maxIdleConnsAuto: true
|
|
34
|
+
};
|
|
35
|
+
optionsUpdated = true;
|
|
36
|
+
}
|
|
37
|
+
if (jsonData.connMaxLifetime === void 0) {
|
|
38
|
+
const { connMaxLifetime } = runtime.config.sqlConnectionLimits;
|
|
39
|
+
newOptions.jsonData = {
|
|
40
|
+
...newOptions.jsonData,
|
|
41
|
+
connMaxLifetime
|
|
42
|
+
};
|
|
43
|
+
optionsUpdated = true;
|
|
44
|
+
}
|
|
45
|
+
if (optionsUpdated) {
|
|
46
|
+
onOptionsChange(newOptions);
|
|
47
|
+
}
|
|
48
|
+
}, [onOptionsChange, options]);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.useMigrateDatabaseFields = useMigrateDatabaseFields;
|
|
52
|
+
//# sourceMappingURL=useMigrateDatabaseFields.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMigrateDatabaseFields.cjs","sources":["../../../../src/components/configuration/useMigrateDatabaseFields.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { config } from '@grafana/runtime';\n\nimport { SQLOptions } from '../../types';\nimport { sqlPluginLogger } from '../../utils/logging';\n\n/**\n * 1. Moves the database field from the options object to jsonData.database and empties the database field.\n * 2. If max open connections, max idle connections, and auto idle are all undefined set these to default values.\n */\nexport function useMigrateDatabaseFields<T extends SQLOptions, S = {}>({\n onOptionsChange,\n options,\n}: DataSourcePluginOptionsEditorProps<T, S>) {\n useEffect(() => {\n const jsonData = options.jsonData;\n let newOptions = { ...options };\n let optionsUpdated = false;\n\n // Migrate the database field from the column into the jsonData object\n if (options.database) {\n sqlPluginLogger.logDebug(`Migrating from options.database with value ${options.database} for ${options.name}`);\n newOptions.database = '';\n newOptions.jsonData = { ...jsonData, database: options.database };\n optionsUpdated = true;\n }\n\n // Set default values for max open connections, max idle connection,\n // and auto idle if they're all undefined\n if (\n jsonData.maxOpenConns === undefined &&\n jsonData.maxIdleConns === undefined &&\n jsonData.maxIdleConnsAuto === undefined\n ) {\n const { maxOpenConns, maxIdleConns } = config.sqlConnectionLimits;\n\n sqlPluginLogger.logDebug(\n `Setting default max open connections to ${maxOpenConns} and setting max idle connection to ${maxIdleConns}`\n );\n\n // Spread from the jsonData in new options in case\n // the database field was migrated as well\n newOptions.jsonData = {\n ...newOptions.jsonData,\n maxOpenConns: maxOpenConns,\n maxIdleConns: maxIdleConns,\n maxIdleConnsAuto: true,\n };\n\n // Make sure we issue an update if options changed\n optionsUpdated = true;\n }\n\n // If the maximum connection lifetime hasn't been\n // otherwise set fill in with the default from configuration\n if (jsonData.connMaxLifetime === undefined) {\n const { connMaxLifetime } = config.sqlConnectionLimits;\n\n // Spread new options and add our value\n newOptions.jsonData = {\n ...newOptions.jsonData,\n connMaxLifetime: connMaxLifetime,\n };\n\n // Note that we've updated the options\n optionsUpdated = true;\n }\n\n // Only issue an update if we changed options\n if (optionsUpdated) {\n onOptionsChange(newOptions);\n }\n }, [onOptionsChange, options]);\n}\n"],"names":["useEffect","sqlPluginLogger","config"],"mappings":";;;;;;;;;AAYO,SAAS,wBAAA,CAAuD;AAAA,EACrE,eAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,WAAW,OAAA,CAAQ,QAAA;AACzB,IAAA,IAAI,UAAA,GAAa,EAAE,GAAG,OAAA,EAAQ;AAC9B,IAAA,IAAI,cAAA,GAAiB,KAAA;AAGrB,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAAC,uBAAA,CAAgB,SAAS,CAAA,2CAAA,EAA8C,OAAA,CAAQ,QAAQ,CAAA,KAAA,EAAQ,OAAA,CAAQ,IAAI,CAAA,CAAE,CAAA;AAC7G,MAAA,UAAA,CAAW,QAAA,GAAW,EAAA;AACtB,MAAA,UAAA,CAAW,WAAW,EAAE,GAAG,QAAA,EAAU,QAAA,EAAU,QAAQ,QAAA,EAAS;AAChE,MAAA,cAAA,GAAiB,IAAA;AAAA,IACnB;AAIA,IAAA,IACE,QAAA,CAAS,iBAAiB,KAAA,CAAA,IAC1B,QAAA,CAAS,iBAAiB,KAAA,CAAA,IAC1B,QAAA,CAAS,qBAAqB,KAAA,CAAA,EAC9B;AACA,MAAA,MAAM,EAAE,YAAA,EAAc,YAAA,EAAa,GAAIC,cAAA,CAAO,mBAAA;AAE9C,MAAAD,uBAAA,CAAgB,QAAA;AAAA,QACd,CAAA,wCAAA,EAA2C,YAAY,CAAA,oCAAA,EAAuC,YAAY,CAAA;AAAA,OAC5G;AAIA,MAAA,UAAA,CAAW,QAAA,GAAW;AAAA,QACpB,GAAG,UAAA,CAAW,QAAA;AAAA,QACd,YAAA;AAAA,QACA,YAAA;AAAA,QACA,gBAAA,EAAkB;AAAA,OACpB;AAGA,MAAA,cAAA,GAAiB,IAAA;AAAA,IACnB;AAIA,IAAA,IAAI,QAAA,CAAS,oBAAoB,KAAA,CAAA,EAAW;AAC1C,MAAA,MAAM,EAAE,eAAA,EAAgB,GAAIC,cAAA,CAAO,mBAAA;AAGnC,MAAA,UAAA,CAAW,QAAA,GAAW;AAAA,QACpB,GAAG,UAAA,CAAW,QAAA;AAAA,QACd;AAAA,OACF;AAGA,MAAA,cAAA,GAAiB,IAAA;AAAA,IACnB;AAGA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,eAAA,CAAgB,UAAU,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAO,CAAC,CAAA;AAC/B;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var pluginUi = require('@grafana/plugin-ui');
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
function QueryEditorRaw({ children, onChange, query, width, height, editorLanguageDefinition }) {
|
|
11
|
+
const queryRef = react.useRef(query);
|
|
12
|
+
react.useEffect(() => {
|
|
13
|
+
queryRef.current = query;
|
|
14
|
+
}, [query]);
|
|
15
|
+
const onRawQueryChange = react.useCallback(
|
|
16
|
+
(rawSql, processQuery) => {
|
|
17
|
+
const newQuery = {
|
|
18
|
+
...queryRef.current,
|
|
19
|
+
rawQuery: true,
|
|
20
|
+
rawSql
|
|
21
|
+
};
|
|
22
|
+
onChange(newQuery, processQuery);
|
|
23
|
+
},
|
|
24
|
+
[onChange]
|
|
25
|
+
);
|
|
26
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
pluginUi.SQLEditor,
|
|
28
|
+
{
|
|
29
|
+
width,
|
|
30
|
+
height,
|
|
31
|
+
query: query.rawSql,
|
|
32
|
+
onChange: onRawQueryChange,
|
|
33
|
+
language: editorLanguageDefinition,
|
|
34
|
+
children
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
exports.QueryEditorRaw = QueryEditorRaw;
|
|
40
|
+
//# sourceMappingURL=QueryEditorRaw.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryEditorRaw.cjs","sources":["../../../../src/components/query-editor-raw/QueryEditorRaw.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport * as React from 'react';\n\nimport { LanguageDefinition, SQLEditor } from '@grafana/plugin-ui';\n\nimport { SQLQuery } from '../../types';\n\ntype Props = {\n query: SQLQuery;\n onChange: (value: SQLQuery, processQuery: boolean) => void;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n editorLanguageDefinition: LanguageDefinition;\n};\n\nexport function QueryEditorRaw({ children, onChange, query, width, height, editorLanguageDefinition }: Props) {\n // We need to pass query via ref to SQLEditor as onChange is executed via monacoEditor.onDidChangeModelContent callback, not onChange property\n const queryRef = useRef<SQLQuery>(query);\n useEffect(() => {\n queryRef.current = query;\n }, [query]);\n\n const onRawQueryChange = useCallback(\n (rawSql: string, processQuery: boolean) => {\n const newQuery = {\n ...queryRef.current,\n rawQuery: true,\n rawSql,\n };\n onChange(newQuery, processQuery);\n },\n [onChange]\n );\n\n return (\n <SQLEditor\n width={width}\n height={height}\n query={query.rawSql!}\n onChange={onRawQueryChange}\n language={editorLanguageDefinition}\n >\n {children}\n </SQLEditor>\n );\n}\n"],"names":["useRef","useEffect","useCallback","jsx","SQLEditor"],"mappings":";;;;;;;;;AAgBO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,QAAA,EAAU,OAAO,KAAA,EAAO,MAAA,EAAQ,0BAAyB,EAAU;AAE5G,EAAA,MAAM,QAAA,GAAWA,aAAiB,KAAK,CAAA;AACvC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,gBAAA,GAAmBC,iBAAA;AAAA,IACvB,CAAC,QAAgB,YAAA,KAA0B;AACzC,MAAA,MAAM,QAAA,GAAW;AAAA,QACf,GAAG,QAAA,CAAS,OAAA;AAAA,QACZ,QAAA,EAAU,IAAA;AAAA,QACV;AAAA,OACF;AACA,MAAA,QAAA,CAAS,UAAU,YAAY,CAAA;AAAA,IACjC,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,kBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAO,KAAA,CAAM,MAAA;AAAA,MACb,QAAA,EAAU,gBAAA;AAAA,MACV,QAAA,EAAU,wBAAA;AAAA,MAET;AAAA;AAAA,GACH;AAEJ;;;;"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var css = require('@emotion/css');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
var i18n = require('@grafana/i18n');
|
|
9
|
+
var runtime = require('@grafana/runtime');
|
|
10
|
+
var ui = require('@grafana/ui');
|
|
11
|
+
var QueryValidator = require('./QueryValidator.cjs');
|
|
12
|
+
|
|
13
|
+
"use strict";
|
|
14
|
+
function QueryToolbox({ showTools, onFormatCode, onExpand, isExpanded, ...validatorProps }) {
|
|
15
|
+
const theme = ui.useTheme2();
|
|
16
|
+
const [validationResult, setValidationResult] = react.useState();
|
|
17
|
+
const styles = react.useMemo(() => {
|
|
18
|
+
return {
|
|
19
|
+
container: css.css({
|
|
20
|
+
border: `1px solid ${theme.colors.border.medium}`,
|
|
21
|
+
borderTop: "none",
|
|
22
|
+
padding: theme.spacing(0.5, 0.5, 0.5, 0.5),
|
|
23
|
+
display: "flex",
|
|
24
|
+
flexGrow: 1,
|
|
25
|
+
justifyContent: "space-between",
|
|
26
|
+
fontSize: theme.typography.bodySmall.fontSize
|
|
27
|
+
}),
|
|
28
|
+
error: css.css({
|
|
29
|
+
color: theme.colors.error.text,
|
|
30
|
+
fontSize: theme.typography.bodySmall.fontSize,
|
|
31
|
+
fontFamily: theme.typography.fontFamilyMonospace
|
|
32
|
+
}),
|
|
33
|
+
valid: css.css({
|
|
34
|
+
color: theme.colors.success.text
|
|
35
|
+
}),
|
|
36
|
+
info: css.css({
|
|
37
|
+
color: theme.colors.text.secondary
|
|
38
|
+
}),
|
|
39
|
+
hint: css.css({
|
|
40
|
+
color: theme.colors.text.disabled,
|
|
41
|
+
whiteSpace: "nowrap",
|
|
42
|
+
cursor: "help"
|
|
43
|
+
})
|
|
44
|
+
};
|
|
45
|
+
}, [theme]);
|
|
46
|
+
let style = {};
|
|
47
|
+
if (!showTools && validationResult === void 0) {
|
|
48
|
+
style = { height: 0, padding: 0, visibility: "hidden" };
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, style, children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { children: validatorProps.onValidate && /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
QueryValidator.QueryValidator,
|
|
53
|
+
{
|
|
54
|
+
...validatorProps,
|
|
55
|
+
onValidate: (result) => {
|
|
56
|
+
setValidationResult(result);
|
|
57
|
+
validatorProps.onValidate(result);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
) }),
|
|
61
|
+
showTools && /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 1, children: [
|
|
62
|
+
onFormatCode && /* @__PURE__ */ jsxRuntime.jsx(
|
|
63
|
+
ui.IconButton,
|
|
64
|
+
{
|
|
65
|
+
onClick: () => {
|
|
66
|
+
var _a;
|
|
67
|
+
runtime.reportInteraction("grafana_sql_query_formatted", {
|
|
68
|
+
datasource: (_a = validatorProps.query.datasource) == null ? void 0 : _a.type
|
|
69
|
+
});
|
|
70
|
+
onFormatCode();
|
|
71
|
+
},
|
|
72
|
+
name: "brackets-curly",
|
|
73
|
+
size: "xs",
|
|
74
|
+
tooltip: i18n.t("grafana-sql.components.query-toolbox.tooltip-format-query", "Format query")
|
|
75
|
+
}
|
|
76
|
+
),
|
|
77
|
+
onExpand && /* @__PURE__ */ jsxRuntime.jsx(
|
|
78
|
+
ui.IconButton,
|
|
79
|
+
{
|
|
80
|
+
onClick: () => {
|
|
81
|
+
var _a;
|
|
82
|
+
runtime.reportInteraction("grafana_sql_editor_expand", {
|
|
83
|
+
datasource: (_a = validatorProps.query.datasource) == null ? void 0 : _a.type,
|
|
84
|
+
expanded: !isExpanded
|
|
85
|
+
});
|
|
86
|
+
onExpand(!isExpanded);
|
|
87
|
+
},
|
|
88
|
+
name: isExpanded ? "angle-up" : "angle-down",
|
|
89
|
+
size: "xs",
|
|
90
|
+
tooltip: isExpanded ? i18n.t("grafana-sql.components.query-toolbox.tooltip-collapse", "Collapse editor") : i18n.t("grafana-sql.components.query-toolbox.tooltip-expand", "Expand editor")
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
ui.Tooltip,
|
|
95
|
+
{
|
|
96
|
+
content: i18n.t(
|
|
97
|
+
"grafana-sql.components.query-toolbox.content-hit-ctrlcmdreturn-to-run-query",
|
|
98
|
+
"Hit CTRL/CMD+Return to run query"
|
|
99
|
+
),
|
|
100
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.Icon, { className: styles.hint, name: "keyboard" })
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
] }) })
|
|
104
|
+
] });
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
exports.QueryToolbox = QueryToolbox;
|
|
108
|
+
//# sourceMappingURL=QueryToolbox.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryToolbox.cjs","sources":["../../../../src/components/query-editor-raw/QueryToolbox.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo, useState } from 'react';\n\nimport { t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Stack, Icon, IconButton, Tooltip, useTheme2 } from '@grafana/ui';\n\nimport { QueryValidator, QueryValidatorProps } from './QueryValidator';\n\ninterface QueryToolboxProps extends Omit<QueryValidatorProps, 'onValidate'> {\n showTools?: boolean;\n isExpanded?: boolean;\n onFormatCode?: () => void;\n onExpand?: (expand: boolean) => void;\n onValidate?: (isValid: boolean) => void;\n}\n\nexport function QueryToolbox({ showTools, onFormatCode, onExpand, isExpanded, ...validatorProps }: QueryToolboxProps) {\n const theme = useTheme2();\n const [validationResult, setValidationResult] = useState<boolean>();\n\n const styles = useMemo(() => {\n return {\n container: css({\n border: `1px solid ${theme.colors.border.medium}`,\n borderTop: 'none',\n padding: theme.spacing(0.5, 0.5, 0.5, 0.5),\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'space-between',\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n error: css({\n color: theme.colors.error.text,\n fontSize: theme.typography.bodySmall.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n }),\n valid: css({\n color: theme.colors.success.text,\n }),\n info: css({\n color: theme.colors.text.secondary,\n }),\n hint: css({\n color: theme.colors.text.disabled,\n whiteSpace: 'nowrap',\n cursor: 'help',\n }),\n };\n }, [theme]);\n\n let style = {};\n\n if (!showTools && validationResult === undefined) {\n style = { height: 0, padding: 0, visibility: 'hidden' };\n }\n\n return (\n <div className={styles.container} style={style}>\n <div>\n {validatorProps.onValidate && (\n <QueryValidator\n {...validatorProps}\n onValidate={(result: boolean) => {\n setValidationResult(result);\n validatorProps.onValidate!(result);\n }}\n />\n )}\n </div>\n {showTools && (\n <div>\n <Stack gap={1}>\n {onFormatCode && (\n <IconButton\n onClick={() => {\n reportInteraction('grafana_sql_query_formatted', {\n datasource: validatorProps.query.datasource?.type,\n });\n onFormatCode();\n }}\n name=\"brackets-curly\"\n size=\"xs\"\n tooltip={t('grafana-sql.components.query-toolbox.tooltip-format-query', 'Format query')}\n />\n )}\n {onExpand && (\n <IconButton\n onClick={() => {\n reportInteraction('grafana_sql_editor_expand', {\n datasource: validatorProps.query.datasource?.type,\n expanded: !isExpanded,\n });\n\n onExpand(!isExpanded);\n }}\n name={isExpanded ? 'angle-up' : 'angle-down'}\n size=\"xs\"\n tooltip={\n isExpanded\n ? t('grafana-sql.components.query-toolbox.tooltip-collapse', 'Collapse editor')\n : t('grafana-sql.components.query-toolbox.tooltip-expand', 'Expand editor')\n }\n />\n )}\n <Tooltip\n content={t(\n 'grafana-sql.components.query-toolbox.content-hit-ctrlcmdreturn-to-run-query',\n 'Hit CTRL/CMD+Return to run query'\n )}\n >\n <Icon className={styles.hint} name=\"keyboard\" />\n </Tooltip>\n </Stack>\n </div>\n )}\n </div>\n );\n}\n"],"names":["useTheme2","useState","useMemo","css","jsxs","jsx","QueryValidator","Stack","IconButton","reportInteraction","t","Tooltip","Icon"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var css = require('@emotion/css');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
var reactUse = require('react-use');
|
|
9
|
+
var data = require('@grafana/data');
|
|
10
|
+
var i18n = require('@grafana/i18n');
|
|
11
|
+
var ui = require('@grafana/ui');
|
|
12
|
+
|
|
13
|
+
"use strict";
|
|
14
|
+
function QueryValidator({ db, query, onValidate, range }) {
|
|
15
|
+
var _a;
|
|
16
|
+
const [validationResult, setValidationResult] = react.useState();
|
|
17
|
+
const theme = ui.useTheme2();
|
|
18
|
+
const valueFormatter = react.useMemo(() => data.getValueFormat("bytes"), []);
|
|
19
|
+
const styles = react.useMemo(() => {
|
|
20
|
+
return {
|
|
21
|
+
error: css.css({
|
|
22
|
+
color: theme.colors.error.text,
|
|
23
|
+
fontSize: theme.typography.bodySmall.fontSize,
|
|
24
|
+
fontFamily: theme.typography.fontFamilyMonospace
|
|
25
|
+
}),
|
|
26
|
+
valid: css.css({
|
|
27
|
+
color: theme.colors.success.text
|
|
28
|
+
}),
|
|
29
|
+
info: css.css({
|
|
30
|
+
color: theme.colors.text.secondary
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
}, [theme]);
|
|
34
|
+
const [state, validateQuery] = reactUse.useAsyncFn(
|
|
35
|
+
async (q) => {
|
|
36
|
+
var _a2;
|
|
37
|
+
if (((_a2 = q.rawSql) == null ? void 0 : _a2.trim()) === "") {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return await db.validateQuery(q, range);
|
|
41
|
+
},
|
|
42
|
+
[db]
|
|
43
|
+
);
|
|
44
|
+
const [,] = reactUse.useDebounce(
|
|
45
|
+
async () => {
|
|
46
|
+
const result = await validateQuery(query);
|
|
47
|
+
if (result) {
|
|
48
|
+
setValidationResult(result);
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
},
|
|
52
|
+
1e3,
|
|
53
|
+
[query, validateQuery]
|
|
54
|
+
);
|
|
55
|
+
react.useEffect(() => {
|
|
56
|
+
if (validationResult == null ? void 0 : validationResult.isError) {
|
|
57
|
+
onValidate(false);
|
|
58
|
+
}
|
|
59
|
+
if (validationResult == null ? void 0 : validationResult.isValid) {
|
|
60
|
+
onValidate(true);
|
|
61
|
+
}
|
|
62
|
+
}, [validationResult, onValidate]);
|
|
63
|
+
if (!state.value && !state.loading) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const error = ((_a = state.value) == null ? void 0 : _a.error) ? processErrorMessage(state.value.error) : "";
|
|
67
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
68
|
+
state.loading && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.info, children: [
|
|
69
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Spinner, { inline: true, size: "xs" }),
|
|
70
|
+
" ",
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.query-validator.validating-query", children: "Validating query..." })
|
|
72
|
+
] }),
|
|
73
|
+
!state.loading && state.value && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
74
|
+
/* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: state.value.isValid && state.value.statistics && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.valid, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
+
i18n.Trans,
|
|
76
|
+
{
|
|
77
|
+
i18nKey: "grafana-sql.components.query-validator.query-will-process",
|
|
78
|
+
values: { bytes: data.formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed)) },
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Icon, { name: "check" }),
|
|
81
|
+
" This query will process ",
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "{{bytes}}" }),
|
|
83
|
+
" when run."
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
) }) }),
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: state.value.isError && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.error, children: error }) })
|
|
88
|
+
] })
|
|
89
|
+
] });
|
|
90
|
+
}
|
|
91
|
+
function processErrorMessage(error) {
|
|
92
|
+
const splat = error.split(":");
|
|
93
|
+
if (splat.length > 2) {
|
|
94
|
+
return splat.slice(2).join(":");
|
|
95
|
+
}
|
|
96
|
+
return error;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
exports.QueryValidator = QueryValidator;
|
|
100
|
+
//# sourceMappingURL=QueryValidator.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryValidator.cjs","sources":["../../../../src/components/query-editor-raw/QueryValidator.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useState, useMemo, useEffect } from 'react';\nimport { useAsyncFn, useDebounce } from 'react-use';\n\nimport { formattedValueToString, getValueFormat, TimeRange } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\nimport { Icon, Spinner, useTheme2 } from '@grafana/ui';\n\nimport { DB, SQLQuery, ValidationResults } from '../../types';\n\nexport interface QueryValidatorProps {\n db: DB;\n query: SQLQuery;\n range?: TimeRange;\n onValidate: (isValid: boolean) => void;\n}\n\nexport function QueryValidator({ db, query, onValidate, range }: QueryValidatorProps) {\n const [validationResult, setValidationResult] = useState<ValidationResults | null>();\n const theme = useTheme2();\n const valueFormatter = useMemo(() => getValueFormat('bytes'), []);\n\n const styles = useMemo(() => {\n return {\n error: css({\n color: theme.colors.error.text,\n fontSize: theme.typography.bodySmall.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n }),\n valid: css({\n color: theme.colors.success.text,\n }),\n info: css({\n color: theme.colors.text.secondary,\n }),\n };\n }, [theme]);\n\n const [state, validateQuery] = useAsyncFn(\n async (q: SQLQuery) => {\n if (q.rawSql?.trim() === '') {\n return null;\n }\n\n return await db.validateQuery(q, range);\n },\n [db]\n );\n\n const [,] = useDebounce(\n async () => {\n const result = await validateQuery(query);\n if (result) {\n setValidationResult(result);\n }\n\n return null;\n },\n 1000,\n [query, validateQuery]\n );\n\n useEffect(() => {\n if (validationResult?.isError) {\n onValidate(false);\n }\n if (validationResult?.isValid) {\n onValidate(true);\n }\n }, [validationResult, onValidate]);\n\n if (!state.value && !state.loading) {\n return null;\n }\n\n const error = state.value?.error ? processErrorMessage(state.value.error) : '';\n\n return (\n <>\n {state.loading && (\n <div className={styles.info}>\n <Spinner inline={true} size=\"xs\" />{' '}\n <Trans i18nKey=\"grafana-sql.components.query-validator.validating-query\">Validating query...</Trans>\n </div>\n )}\n {!state.loading && state.value && (\n <>\n <>\n {state.value.isValid && state.value.statistics && (\n <div className={styles.valid}>\n <Trans\n i18nKey=\"grafana-sql.components.query-validator.query-will-process\"\n values={{ bytes: formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed)) }}\n >\n <Icon name=\"check\" /> This query will process <strong>{'{{bytes}}'}</strong> when run.\n </Trans>\n </div>\n )}\n </>\n\n <>{state.value.isError && <div className={styles.error}>{error}</div>}</>\n </>\n )}\n </>\n );\n}\n\nfunction processErrorMessage(error: string) {\n const splat = error.split(':');\n if (splat.length > 2) {\n return splat.slice(2).join(':');\n }\n return error;\n}\n"],"names":["useState","useTheme2","useMemo","getValueFormat","css","useAsyncFn","_a","useDebounce","useEffect","jsxs","Fragment","jsx","Spinner","Trans","formattedValueToString","Icon"],"mappings":"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"}
|