@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":"SelectRow.mjs","sources":["../../../../src/components/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { Button, Select, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType, QueryEditorFunctionExpression } from '../../expressions';\nimport { DB, QueryFormat, SQLExpression, SQLQuery } from '../../types';\nimport { createFunctionField } from '../../utils/sql.utils';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { SelectFunctionParameters } from './SelectFunctionParameters';\n\ninterface SelectRowProps {\n query: SQLQuery;\n onQueryChange: (sql: SQLQuery) => void;\n db: DB;\n columns: Array<SelectableValue<string>>;\n}\n\nexport function SelectRow({ query, onQueryChange, db, columns }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n const timeSeriesAliasOpts: Array<SelectableValue<string>> = [];\n\n // Add necessary alias options for time series format\n // when that format has been selected\n if (query.format === QueryFormat.Timeseries) {\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.time', 'time'), value: 'time' });\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.value', 'value'), value: 'value' });\n }\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n parameters: [\n { type: QueryEditorExpressionType.FunctionParameter as const, name: item.parameters?.[0]?.name || '' },\n ],\n };\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const onAliasChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (alias: SelectableValue<string>) => {\n let newItem = { ...item };\n\n if (alias !== null) {\n newItem = { ...item, alias: `\"${alias?.value?.trim()}\"` };\n } else {\n delete newItem.alias;\n }\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...(query.sql?.columns || [])];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...query.sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...query.sql, columns: [...(query.sql?.columns || []), createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, query.sql]);\n\n const aggregateOptions = () => {\n const options: Array<SelectableValue<string>> = [\n {\n label: t('grafana-sql.components.select-row.aggregate-options.options.label.aggregations', 'Aggregations'),\n options: [],\n },\n { label: t('grafana-sql.components.select-row.aggregate-options.options.label.macros', 'Macros'), options: [] },\n ];\n for (const func of db.functions()) {\n // Create groups for macros\n if (func.name.startsWith('$__')) {\n options[1].options.push({ label: func.name, value: func.name });\n } else {\n options[0].options.push({ label: func.name, value: func.name });\n }\n }\n return options;\n };\n\n return (\n <Stack gap={2} wrap=\"wrap\" direction=\"column\">\n {query.sql?.columns?.map((item, index) => (\n <div key={index}>\n <Stack gap={2} alignItems=\"end\">\n <EditorField\n label={t('grafana-sql.components.select-row.label-data-operations', 'Data operations')}\n optional\n width={25}\n >\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAggregation}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={aggregateOptions()}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n\n <SelectFunctionParameters\n currentColumnIndex={index}\n columns={columns}\n onSqlChange={onSqlChange}\n query={query}\n db={db}\n />\n\n <EditorField label={t('grafana-sql.components.select-row.label-alias', 'Alias')} optional width={15}>\n <Select\n value={item.alias ? toOption(item.alias) : null}\n inputId={`select-alias-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAlias}\n options={timeSeriesAliasOpts}\n onChange={onAliasChange(item, index)}\n isClearable\n menuShouldPortal\n allowCustomValue\n />\n </EditorField>\n <Button\n aria-label={t('grafana-sql.components.select-row.title-remove-column', 'Remove column')}\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </Stack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n aria-label={t('grafana-sql.components.select-row.title-add-column', 'Add column')}\n size=\"md\"\n icon=\"plus\"\n className={styles.addButton}\n />\n </Stack>\n );\n}\n\nconst getStyles = () => {\n return {\n addButton: css({ alignSelf: 'flex-start' }),\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["_a","_b"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useAsync } from 'react-use';
|
|
3
|
+
import { t } from '@grafana/i18n';
|
|
4
|
+
import { EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';
|
|
5
|
+
import { QueryToolbox } from '../query-editor-raw/QueryToolbox.mjs';
|
|
6
|
+
import { Preview } from './Preview.mjs';
|
|
7
|
+
import { SQLGroupByRow } from './SQLGroupByRow.mjs';
|
|
8
|
+
import { SQLOrderByRow } from './SQLOrderByRow.mjs';
|
|
9
|
+
import { SQLWhereRow } from './SQLWhereRow.mjs';
|
|
10
|
+
import { SelectRow } from './SelectRow.mjs';
|
|
11
|
+
|
|
12
|
+
"use strict";
|
|
13
|
+
const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }) => {
|
|
14
|
+
var _a;
|
|
15
|
+
const state = useAsync(async () => {
|
|
16
|
+
const fields = await db.fields(query);
|
|
17
|
+
return fields;
|
|
18
|
+
}, [db, query.dataset, query.table]);
|
|
19
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
20
|
+
/* @__PURE__ */ jsxs(EditorRows, { children: [
|
|
21
|
+
/* @__PURE__ */ jsx(EditorRow, { children: /* @__PURE__ */ jsx(SelectRow, { columns: state.value || [], query, onQueryChange: onChange, db }) }),
|
|
22
|
+
queryRowFilter.filter && /* @__PURE__ */ jsx(EditorRow, { children: /* @__PURE__ */ jsx(
|
|
23
|
+
EditorField,
|
|
24
|
+
{
|
|
25
|
+
label: t("grafana-sql.components.visual-editor.label-filter-by-column-value", "Filter by column value"),
|
|
26
|
+
optional: true,
|
|
27
|
+
children: /* @__PURE__ */ jsx(SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db })
|
|
28
|
+
}
|
|
29
|
+
) }),
|
|
30
|
+
queryRowFilter.group && /* @__PURE__ */ jsx(EditorRow, { children: /* @__PURE__ */ jsx(EditorField, { label: t("grafana-sql.components.visual-editor.label-group-by-column", "Group by column"), children: /* @__PURE__ */ jsx(SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }) }) }),
|
|
31
|
+
queryRowFilter.order && /* @__PURE__ */ jsx(EditorRow, { children: /* @__PURE__ */ jsx(SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db }) }),
|
|
32
|
+
queryRowFilter.preview && query.rawSql && /* @__PURE__ */ jsx(EditorRow, { children: /* @__PURE__ */ jsx(Preview, { rawSql: query.rawSql, datasourceType: (_a = query.datasource) == null ? void 0 : _a.type }) })
|
|
33
|
+
] }),
|
|
34
|
+
/* @__PURE__ */ jsx(QueryToolbox, { db, query, onValidate, range })
|
|
35
|
+
] });
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { VisualEditor };
|
|
39
|
+
//# sourceMappingURL=VisualEditor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisualEditor.mjs","sources":["../../../../src/components/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { t } from '@grafana/i18n';\nimport { EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';\n\nimport { DB, QueryEditorProps, QueryRowFilter } from '../../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\n\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { SelectRow } from './SelectRow';\n\ninterface VisualEditorProps extends QueryEditorProps {\n db: DB;\n queryRowFilter: QueryRowFilter;\n onValidate: (isValid: boolean) => void;\n}\n\nexport const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }: VisualEditorProps) => {\n const state = useAsync(async () => {\n const fields = await db.fields(query);\n return fields;\n }, [db, query.dataset, query.table]);\n\n return (\n <>\n <EditorRows>\n <EditorRow>\n <SelectRow columns={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField\n label={t('grafana-sql.components.visual-editor.label-filter-by-column-value', 'Filter by column value')}\n optional\n >\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label={t('grafana-sql.components.visual-editor.label-group-by-column', 'Group by column')}>\n <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.order && (\n <EditorRow>\n <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n )}\n {queryRowFilter.preview && query.rawSql && (\n <EditorRow>\n <Preview rawSql={query.rawSql} datasourceType={query.datasource?.type} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAoBO,MAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,IAAI,cAAA,EAAgB,QAAA,EAAU,UAAA,EAAY,KAAA,EAAM,KAAyB;AApB/G,EAAA,IAAA,EAAA;AAqBE,EAAA,MAAM,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,OAAO,MAAA;AAAA,EACT,GAAG,CAAC,EAAA,EAAI,MAAM,OAAA,EAAS,KAAA,CAAM,KAAK,CAAC,CAAA;AAEnC,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAS,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EACxF,CAAA;AAAA,MACC,cAAA,CAAe,MAAA,oBACd,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,CAAA,CAAE,mEAAA,EAAqE,wBAAwB,CAAA;AAAA,UACtG,QAAA,EAAQ,IAAA;AAAA,UAER,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ;AAAA;AAAA,OACzF,EACF,CAAA;AAAA,MAED,cAAA,CAAe,yBACd,GAAA,CAAC,SAAA,EAAA,EACC,8BAAC,WAAA,EAAA,EAAY,KAAA,EAAO,CAAA,CAAE,4DAAA,EAA8D,iBAAiB,CAAA,EACnG,8BAAC,aAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,OAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EAC3F,CAAA,EACF,CAAA;AAAA,MAED,cAAA,CAAe,KAAA,oBACd,GAAA,CAAC,SAAA,EAAA,EACC,8BAAC,aAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,IAAQ,CAAA,EAC3F,CAAA;AAAA,MAED,eAAe,OAAA,IAAW,KAAA,CAAM,MAAA,oBAC/B,GAAA,CAAC,aACC,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,KAAA,CAAM,QAAQ,cAAA,EAAA,CAAgB,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,MAAM,CAAA,EACzE;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACA,GAAA,CAAC,YAAA,EAAA,EAAa,EAAA,EAAQ,KAAA,EAAc,YAAwB,KAAA,EAAc;AAAA,GAAA,EAC5E,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { injectGlobal } from '@emotion/css';
|
|
3
|
+
import { Utils, Query, Builder } from '@react-awesome-query-builder/ui';
|
|
4
|
+
import { useState, useMemo, useEffect, useCallback } from 'react';
|
|
5
|
+
import { raqbConfig, emptyInitTree } from './AwesomeQueryBuilder.mjs';
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
function WhereRow({ sql, config, onSqlChange }) {
|
|
9
|
+
const [tree, setTree] = useState();
|
|
10
|
+
const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
var _a;
|
|
13
|
+
if (!tree) {
|
|
14
|
+
const initTree = Utils.checkTree(Utils.loadTree((_a = sql.whereJsonTree) != null ? _a : emptyInitTree), configWithDefaults);
|
|
15
|
+
setTree(initTree);
|
|
16
|
+
}
|
|
17
|
+
}, [configWithDefaults, sql.whereJsonTree, tree]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!sql.whereJsonTree) {
|
|
20
|
+
setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));
|
|
21
|
+
}
|
|
22
|
+
}, [configWithDefaults, sql.whereJsonTree]);
|
|
23
|
+
const onTreeChange = useCallback(
|
|
24
|
+
(changedTree, config2) => {
|
|
25
|
+
setTree(changedTree);
|
|
26
|
+
const newSql = {
|
|
27
|
+
...sql,
|
|
28
|
+
whereJsonTree: Utils.getTree(changedTree),
|
|
29
|
+
whereString: Utils.sqlFormat(changedTree, config2)
|
|
30
|
+
};
|
|
31
|
+
onSqlChange(newSql);
|
|
32
|
+
},
|
|
33
|
+
[onSqlChange, sql]
|
|
34
|
+
);
|
|
35
|
+
if (!tree) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return /* @__PURE__ */ jsx(
|
|
39
|
+
Query,
|
|
40
|
+
{
|
|
41
|
+
...configWithDefaults,
|
|
42
|
+
value: tree,
|
|
43
|
+
onChange: onTreeChange,
|
|
44
|
+
renderBuilder: (props) => /* @__PURE__ */ jsx(Builder, { ...props })
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
function flex(direction) {
|
|
49
|
+
return `
|
|
50
|
+
display: flex;
|
|
51
|
+
gap: 8px;
|
|
52
|
+
flex-direction: ${direction};`;
|
|
53
|
+
}
|
|
54
|
+
injectGlobal`
|
|
55
|
+
.group--header {
|
|
56
|
+
${flex("row")}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.group-or-rule {
|
|
60
|
+
${flex("column")}
|
|
61
|
+
.rule {
|
|
62
|
+
flex-direction: row;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.rule--body {
|
|
67
|
+
${flex("row")}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.group--children {
|
|
71
|
+
${flex("column")}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.group--conjunctions:empty {
|
|
75
|
+
display: none;
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
|
|
79
|
+
export { WhereRow };
|
|
80
|
+
//# sourceMappingURL=WhereRow.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhereRow.mjs","sources":["../../../../src/components/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport { Builder, Config, ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { SQLExpression } from '../../types';\n\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n const [tree, setTree] = useState<ImmutableTree>();\n const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n useEffect(() => {\n // Set the initial tree\n if (!tree) {\n const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n setTree(initTree);\n }\n }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n useEffect(() => {\n if (!sql.whereJsonTree) {\n setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n }\n }, [configWithDefaults, sql.whereJsonTree]);\n\n const onTreeChange = useCallback(\n (changedTree: ImmutableTree, config: Config) => {\n setTree(changedTree);\n const newSql = {\n ...sql,\n whereJsonTree: Utils.getTree(changedTree),\n whereString: Utils.sqlFormat(changedTree, config),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n if (!tree) {\n return null;\n }\n\n return (\n <Query\n {...configWithDefaults}\n value={tree}\n onChange={onTreeChange}\n renderBuilder={(props) => <Builder {...props} />}\n />\n );\n}\n\nfunction flex(direction: string) {\n return `\n display: flex;\n gap: 8px;\n flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n .group--header {\n ${flex('row')}\n }\n\n .group-or-rule {\n ${flex('column')}\n .rule {\n flex-direction: row;\n }\n }\n\n .rule--body {\n ${flex('row')}\n }\n\n .group--children {\n ${flex('column')}\n }\n\n .group--conjunctions:empty {\n display: none;\n }\n`;\n"],"names":["config"],"mappings":";;;;;;;AAcO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqB,OAAA,CAAQ,OAAO,EAAE,GAAG,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAA,SAAA,CAAU,MAAM;AAlBlB,IAAA,IAAA,EAAA;AAoBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqB,aAAa,CAAA,EAAG,kBAAkB,CAAA;AACvG,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAA,EAAe,IAAI,CAAC,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,KAAA,CAAM,SAAS,aAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,aAA4BA,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAa,KAAA,CAAM,SAAA,CAAU,WAAA,EAAaA,OAAM;AAAA,OAClD;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAU,GAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO;AAAA;AAAA,GAChD;AAEJ;AAEA,SAAS,KAAK,SAAA,EAAmB;AAC/B,EAAA,OAAO;AAAA;AAAA;AAAA,oBAAA,EAGa,SAAS,CAAA,CAAA,CAAA;AAC/B;AAGA,YAAA;AAAA;AAAA,IAAA,EAEM,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAAA,EAOd,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const COMMON_FNS = [
|
|
3
|
+
{ name: "AVG" },
|
|
4
|
+
{ name: "COUNT" },
|
|
5
|
+
{ name: "MAX" },
|
|
6
|
+
{ name: "MIN" },
|
|
7
|
+
{ name: "SUM" }
|
|
8
|
+
];
|
|
9
|
+
const intervalParam = {
|
|
10
|
+
name: "Interval",
|
|
11
|
+
required: true,
|
|
12
|
+
options: () => {
|
|
13
|
+
return Promise.resolve([{ label: "$__interval", value: "$__interval" }]);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const fillParam = {
|
|
17
|
+
name: "Fill",
|
|
18
|
+
required: false,
|
|
19
|
+
options: () => Promise.resolve([
|
|
20
|
+
{ label: "0", value: "0" },
|
|
21
|
+
{ label: "NULL", value: "NULL" },
|
|
22
|
+
{ label: "previous", value: "previous" }
|
|
23
|
+
])
|
|
24
|
+
};
|
|
25
|
+
const MACRO_FUNCTIONS = (columnParam) => [
|
|
26
|
+
{
|
|
27
|
+
name: "$__timeGroup",
|
|
28
|
+
description: "Time grouping function",
|
|
29
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "$__timeGroupAlias",
|
|
33
|
+
description: "Time grouping function with time as alias",
|
|
34
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "$__time",
|
|
38
|
+
description: "An expression to rename the column to time",
|
|
39
|
+
parameters: [columnParam]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "$__timeEpoch",
|
|
43
|
+
parameters: [columnParam]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "$__unixEpochGroup",
|
|
47
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "$__unixEpochGroupAlias",
|
|
51
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
const MACRO_NAMES = [
|
|
55
|
+
"$__time",
|
|
56
|
+
"$__timeEpoch",
|
|
57
|
+
"$__timeFilter",
|
|
58
|
+
"$__timeFrom",
|
|
59
|
+
"$__timeTo",
|
|
60
|
+
"$__timeGroup",
|
|
61
|
+
"$__timeGroupAlias",
|
|
62
|
+
"$__unixEpochFilter",
|
|
63
|
+
"$__unixEpochNanoFilter",
|
|
64
|
+
"$__unixEpochNanoFrom",
|
|
65
|
+
"$__unixEpochNanoTo",
|
|
66
|
+
"$__unixEpochGroup",
|
|
67
|
+
"$__unixEpochGroupAlias"
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
export { COMMON_FNS, MACRO_FUNCTIONS, MACRO_NAMES };
|
|
71
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../src/constants.ts"],"sourcesContent":["import { Func, FuncParameter } from './types';\n\nexport const COMMON_FNS: Func[] = [\n { name: 'AVG' },\n { name: 'COUNT' },\n { name: 'MAX' },\n { name: 'MIN' },\n { name: 'SUM' },\n];\n\nconst intervalParam: FuncParameter = {\n name: 'Interval',\n required: true,\n options: () => {\n return Promise.resolve([{ label: '$__interval', value: '$__interval' }]);\n },\n};\nconst fillParam: FuncParameter = {\n name: 'Fill',\n required: false,\n options: () =>\n Promise.resolve([\n { label: '0', value: '0' },\n { label: 'NULL', value: 'NULL' },\n { label: 'previous', value: 'previous' },\n ]),\n};\n\nexport const MACRO_FUNCTIONS = (columnParam: FuncParameter) => [\n {\n name: '$__timeGroup',\n description: 'Time grouping function',\n parameters: [columnParam, intervalParam, fillParam],\n },\n {\n name: '$__timeGroupAlias',\n description: 'Time grouping function with time as alias',\n parameters: [columnParam, intervalParam, fillParam],\n },\n {\n name: '$__time',\n description: 'An expression to rename the column to time',\n parameters: [columnParam],\n },\n {\n name: '$__timeEpoch',\n parameters: [columnParam],\n },\n {\n name: '$__unixEpochGroup',\n parameters: [columnParam, intervalParam, fillParam],\n },\n {\n name: '$__unixEpochGroupAlias',\n parameters: [columnParam, intervalParam, fillParam],\n },\n];\n\nexport const MACRO_NAMES = [\n '$__time',\n '$__timeEpoch',\n '$__timeFilter',\n '$__timeFrom',\n '$__timeTo',\n '$__timeGroup',\n '$__timeGroupAlias',\n '$__unixEpochFilter',\n '$__unixEpochNanoFilter',\n '$__unixEpochNanoFrom',\n '$__unixEpochNanoTo',\n '$__unixEpochGroup',\n '$__unixEpochGroupAlias',\n];\n"],"names":[],"mappings":";AAEO,MAAM,UAAA,GAAqB;AAAA,EAChC,EAAE,MAAM,KAAA,EAAM;AAAA,EACd,EAAE,MAAM,OAAA,EAAQ;AAAA,EAChB,EAAE,MAAM,KAAA,EAAM;AAAA,EACd,EAAE,MAAM,KAAA,EAAM;AAAA,EACd,EAAE,MAAM,KAAA;AACV;AAEA,MAAM,aAAA,GAA+B;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EACN,QAAA,EAAU,IAAA;AAAA,EACV,SAAS,MAAM;AACb,IAAA,OAAO,OAAA,CAAQ,QAAQ,CAAC,EAAE,OAAO,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,CAAC,CAAA;AAAA,EACzE;AACF,CAAA;AACA,MAAM,SAAA,GAA2B;AAAA,EAC/B,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,KAAA;AAAA,EACV,OAAA,EAAS,MACP,OAAA,CAAQ,OAAA,CAAQ;AAAA,IACd,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,GAAA,EAAI;AAAA,IACzB,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,IAC/B,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA;AAAW,GACxC;AACL,CAAA;AAEO,MAAM,eAAA,GAAkB,CAAC,WAAA,KAA+B;AAAA,EAC7D;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,WAAA,EAAa,wBAAA;AAAA,IACb,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA,GACpD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,WAAA,EAAa,2CAAA;AAAA,IACb,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA,GACpD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAY,CAAC,WAAW;AAAA,GAC1B;AAAA,EACA;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,UAAA,EAAY,CAAC,WAAW;AAAA,GAC1B;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA,GACpD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,wBAAA;AAAA,IACN,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA;AAEtD;AAEO,MAAM,WAAA,GAAc;AAAA,EACzB,SAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF;;;;"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { throwError, lastValueFrom } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { CoreApp, getSearchFilterScopedVar, getDefaultTimeRange, DataFrameView } from '@grafana/data';
|
|
4
|
+
import { EditorMode } from '@grafana/plugin-ui';
|
|
5
|
+
import { DataSourceWithBackend, getTemplateSrv, reportInteraction, getBackendSrv, toDataQueryResponse } from '@grafana/runtime';
|
|
6
|
+
import { ResponseParser } from '../ResponseParser.mjs';
|
|
7
|
+
import { SqlQueryEditorLazy } from '../components/QueryEditorLazy.mjs';
|
|
8
|
+
import { MACRO_NAMES } from '../constants.mjs';
|
|
9
|
+
import { QueryFormat } from '../types.mjs';
|
|
10
|
+
import migrateAnnotation from '../utils/migration.mjs';
|
|
11
|
+
|
|
12
|
+
"use strict";
|
|
13
|
+
class SqlDatasource extends DataSourceWithBackend {
|
|
14
|
+
constructor(instanceSettings, templateSrv = getTemplateSrv()) {
|
|
15
|
+
var _a;
|
|
16
|
+
super(instanceSettings);
|
|
17
|
+
this.templateSrv = templateSrv;
|
|
18
|
+
this.dialect = "other";
|
|
19
|
+
this.interpolateVariable = (value, variable) => {
|
|
20
|
+
if (typeof value === "string") {
|
|
21
|
+
if (variable.multi || variable.includeAll) {
|
|
22
|
+
return this.getQueryModel().quoteLiteral(value);
|
|
23
|
+
} else {
|
|
24
|
+
return String(value).replace(/'/g, "''");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (typeof value === "number") {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));
|
|
32
|
+
return quotedValues.join(",");
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
};
|
|
36
|
+
this.name = instanceSettings.name;
|
|
37
|
+
this.responseParser = new ResponseParser();
|
|
38
|
+
this.uid = instanceSettings.uid;
|
|
39
|
+
const settingsData = instanceSettings.jsonData || {};
|
|
40
|
+
this.interval = settingsData.timeInterval || "1m";
|
|
41
|
+
this.db = this.getDB();
|
|
42
|
+
this.preconfiguredDatabase = (_a = settingsData.database) != null ? _a : "";
|
|
43
|
+
this.annotations = {
|
|
44
|
+
prepareAnnotation: migrateAnnotation,
|
|
45
|
+
QueryEditor: SqlQueryEditorLazy
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
getResponseParser() {
|
|
49
|
+
return this.responseParser;
|
|
50
|
+
}
|
|
51
|
+
interpolateVariablesInQueries(queries, scopedVars) {
|
|
52
|
+
let expandedQueries = queries;
|
|
53
|
+
if (queries && queries.length > 0) {
|
|
54
|
+
expandedQueries = queries.map((query) => {
|
|
55
|
+
const expandedQuery = {
|
|
56
|
+
...query,
|
|
57
|
+
datasource: this.getRef(),
|
|
58
|
+
rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),
|
|
59
|
+
rawQuery: true
|
|
60
|
+
};
|
|
61
|
+
return expandedQuery;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return expandedQueries;
|
|
65
|
+
}
|
|
66
|
+
filterQuery(query) {
|
|
67
|
+
return !query.hide;
|
|
68
|
+
}
|
|
69
|
+
applyTemplateVariables(target, scopedVars) {
|
|
70
|
+
return {
|
|
71
|
+
refId: target.refId,
|
|
72
|
+
datasource: this.getRef(),
|
|
73
|
+
rawSql: this.templateSrv.replace(target.rawSql, scopedVars, this.interpolateVariable),
|
|
74
|
+
format: target.format
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
query(request) {
|
|
78
|
+
const databaseIssue = this.checkForDatabaseIssue(request);
|
|
79
|
+
if (!!databaseIssue) {
|
|
80
|
+
const error = new Error(databaseIssue);
|
|
81
|
+
return throwError(() => error);
|
|
82
|
+
}
|
|
83
|
+
request.targets.forEach((target) => {
|
|
84
|
+
var _a;
|
|
85
|
+
if (request.app === CoreApp.Dashboard || request.app === CoreApp.PanelViewer) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
reportInteraction("grafana_sql_query_executed", {
|
|
89
|
+
datasource: (_a = target.datasource) == null ? void 0 : _a.type,
|
|
90
|
+
editorMode: target.editorMode,
|
|
91
|
+
format: target.format,
|
|
92
|
+
app: request.app
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
return super.query(request);
|
|
96
|
+
}
|
|
97
|
+
checkForDatabaseIssue(request) {
|
|
98
|
+
if (this.type === "grafana-postgresql-datasource" && !this.preconfiguredDatabase) {
|
|
99
|
+
return `You do not currently have a default database configured for this data source. Postgres requires a default
|
|
100
|
+
database with which to connect. Please configure one through the Data Sources Configuration page, or if you
|
|
101
|
+
are using a provisioning file, update that configuration file with a default database.`;
|
|
102
|
+
}
|
|
103
|
+
if (request.app !== CoreApp.Explore) {
|
|
104
|
+
if (!!this.preconfiguredDatabase) {
|
|
105
|
+
for (const target of request.targets) {
|
|
106
|
+
if (target.editorMode === EditorMode.Builder && target.dataset && target.dataset !== this.preconfiguredDatabase) {
|
|
107
|
+
return `The configuration for this panel's data source has been modified. The previous database used in this panel's
|
|
108
|
+
saved query is no longer available. Please update the query to use the new database option.
|
|
109
|
+
Previous query parameters will be preserved until the query is updated.`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
async metricFindQuery(query, options) {
|
|
117
|
+
const range = options == null ? void 0 : options.range;
|
|
118
|
+
if (range == null) {
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
let refId = "tempvar";
|
|
122
|
+
if (options && options.variable && options.variable.name) {
|
|
123
|
+
refId = options.variable.name;
|
|
124
|
+
}
|
|
125
|
+
const scopedVars = {
|
|
126
|
+
...options == null ? void 0 : options.scopedVars,
|
|
127
|
+
...getSearchFilterScopedVar({ query, wildcardChar: "%", options })
|
|
128
|
+
};
|
|
129
|
+
const rawSql = this.templateSrv.replace(query, scopedVars, this.interpolateVariable);
|
|
130
|
+
const interpolatedQuery = {
|
|
131
|
+
refId,
|
|
132
|
+
datasource: this.getRef(),
|
|
133
|
+
rawSql,
|
|
134
|
+
format: QueryFormat.Table
|
|
135
|
+
};
|
|
136
|
+
let response;
|
|
137
|
+
try {
|
|
138
|
+
response = await this.runMetaQuery(interpolatedQuery, range);
|
|
139
|
+
} catch (error) {
|
|
140
|
+
console.error(error);
|
|
141
|
+
throw new Error("error when executing the sql query");
|
|
142
|
+
}
|
|
143
|
+
return this.getResponseParser().transformMetricFindResponse(response);
|
|
144
|
+
}
|
|
145
|
+
// NOTE: this always runs with the `@grafana/data/getDefaultTimeRange` time range
|
|
146
|
+
async runSql(query, options) {
|
|
147
|
+
const range = getDefaultTimeRange();
|
|
148
|
+
const frame = await this.runMetaQuery({ rawSql: query, format: QueryFormat.Table, refId: options == null ? void 0 : options.refId }, range);
|
|
149
|
+
return new DataFrameView(frame);
|
|
150
|
+
}
|
|
151
|
+
runMetaQuery(request, range) {
|
|
152
|
+
const refId = request.refId || "meta";
|
|
153
|
+
const queries = [{ ...request, datasource: request.datasource || this.getRef(), refId }];
|
|
154
|
+
return lastValueFrom(
|
|
155
|
+
getBackendSrv().fetch({
|
|
156
|
+
url: "/api/ds/query",
|
|
157
|
+
method: "POST",
|
|
158
|
+
headers: this.getRequestHeaders(),
|
|
159
|
+
data: {
|
|
160
|
+
from: range.from.valueOf().toString(),
|
|
161
|
+
to: range.to.valueOf().toString(),
|
|
162
|
+
queries
|
|
163
|
+
},
|
|
164
|
+
requestId: refId
|
|
165
|
+
}).pipe(
|
|
166
|
+
map((res) => {
|
|
167
|
+
var _a;
|
|
168
|
+
const rsp = toDataQueryResponse(res, queries);
|
|
169
|
+
return (_a = rsp.data[0]) != null ? _a : { fields: [] };
|
|
170
|
+
})
|
|
171
|
+
)
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
targetContainsTemplate(target) {
|
|
175
|
+
let queryWithoutMacros = target.rawSql;
|
|
176
|
+
MACRO_NAMES.forEach((value) => {
|
|
177
|
+
queryWithoutMacros = (queryWithoutMacros == null ? void 0 : queryWithoutMacros.replace(value, "")) || "";
|
|
178
|
+
});
|
|
179
|
+
return this.templateSrv.containsTemplate(queryWithoutMacros);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export { SqlDatasource };
|
|
184
|
+
//# sourceMappingURL=SqlDatasource.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlDatasource.mjs","sources":["../../../src/datasource/SqlDatasource.ts"],"sourcesContent":["import { lastValueFrom, Observable, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport {\n getDefaultTimeRange,\n DataFrame,\n DataFrameView,\n DataQuery,\n DataQueryRequest,\n DataQueryResponse,\n DataSourceInstanceSettings,\n MetricFindValue,\n ScopedVars,\n CoreApp,\n getSearchFilterScopedVar,\n LegacyMetricFindQueryOptions,\n VariableWithMultiSupport,\n TimeRange,\n} from '@grafana/data';\nimport { EditorMode } from '@grafana/plugin-ui';\nimport {\n BackendDataSourceResponse,\n DataSourceWithBackend,\n FetchResponse,\n getBackendSrv,\n getTemplateSrv,\n toDataQueryResponse,\n TemplateSrv,\n reportInteraction,\n} from '@grafana/runtime';\n\nimport { ResponseParser } from '../ResponseParser';\nimport { SqlQueryEditorLazy } from '../components/QueryEditorLazy';\nimport { MACRO_NAMES } from '../constants';\nimport { DB, SQLQuery, SQLOptions, SqlQueryModel, QueryFormat, SQLDialect } from '../types';\nimport migrateAnnotation from '../utils/migration';\n\nexport abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLOptions> {\n uid: string;\n responseParser: ResponseParser;\n name: string;\n interval: string;\n db: DB;\n preconfiguredDatabase: string;\n dialect: SQLDialect = 'other';\n\n constructor(\n instanceSettings: DataSourceInstanceSettings<SQLOptions>,\n protected readonly templateSrv: TemplateSrv = getTemplateSrv()\n ) {\n super(instanceSettings);\n this.name = instanceSettings.name;\n this.responseParser = new ResponseParser();\n this.uid = instanceSettings.uid;\n const settingsData = instanceSettings.jsonData || {};\n this.interval = settingsData.timeInterval || '1m';\n this.db = this.getDB();\n /*\n The `settingsData.database` will be defined if a default database has been defined in either\n 1) the ConfigurationEditor.tsx, OR 2) the provisioning config file, either under `jsondata.database`, or simply `database`.\n */\n this.preconfiguredDatabase = settingsData.database ?? '';\n this.annotations = {\n prepareAnnotation: migrateAnnotation,\n QueryEditor: SqlQueryEditorLazy,\n };\n }\n\n abstract getDB(): DB;\n\n abstract getQueryModel(target?: SQLQuery, templateSrv?: TemplateSrv, scopedVars?: ScopedVars): SqlQueryModel;\n\n getResponseParser() {\n return this.responseParser;\n }\n\n interpolateVariable = (value: string | string[] | number, variable: VariableWithMultiSupport) => {\n if (typeof value === 'string') {\n if (variable.multi || variable.includeAll) {\n return this.getQueryModel().quoteLiteral(value);\n } else {\n return String(value).replace(/'/g, \"''\");\n }\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (Array.isArray(value)) {\n const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));\n return quotedValues.join(',');\n }\n\n return value;\n };\n\n interpolateVariablesInQueries(queries: SQLQuery[], scopedVars: ScopedVars): SQLQuery[] {\n let expandedQueries = queries;\n if (queries && queries.length > 0) {\n expandedQueries = queries.map((query) => {\n const expandedQuery = {\n ...query,\n datasource: this.getRef(),\n rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),\n rawQuery: true,\n };\n return expandedQuery;\n });\n }\n return expandedQueries;\n }\n\n filterQuery(query: SQLQuery): boolean {\n return !query.hide;\n }\n\n applyTemplateVariables(target: SQLQuery, scopedVars: ScopedVars) {\n return {\n refId: target.refId,\n datasource: this.getRef(),\n rawSql: this.templateSrv.replace(target.rawSql, scopedVars, this.interpolateVariable),\n format: target.format,\n };\n }\n\n query(request: DataQueryRequest<SQLQuery>): Observable<DataQueryResponse> {\n // This logic reenables the previous SQL behavior regarding what databases are available for the user to query.\n const databaseIssue = this.checkForDatabaseIssue(request);\n\n if (!!databaseIssue) {\n const error = new Error(databaseIssue);\n return throwError(() => error);\n }\n\n request.targets.forEach((target) => {\n if (request.app === CoreApp.Dashboard || request.app === CoreApp.PanelViewer) {\n return;\n }\n\n reportInteraction('grafana_sql_query_executed', {\n datasource: target.datasource?.type,\n editorMode: target.editorMode,\n format: target.format,\n app: request.app,\n });\n });\n\n return super.query(request);\n }\n\n private checkForDatabaseIssue(request: DataQueryRequest<SQLQuery>) {\n // If the datasource is Postgres and there is no default database configured - either never configured or removed - return a database issue.\n if (this.type === 'grafana-postgresql-datasource' && !this.preconfiguredDatabase) {\n return `You do not currently have a default database configured for this data source. Postgres requires a default\n database with which to connect. Please configure one through the Data Sources Configuration page, or if you\n are using a provisioning file, update that configuration file with a default database.`;\n }\n\n // No need to check for database change/update issues if the datasource is being used in Explore.\n if (request.app !== CoreApp.Explore) {\n /*\n If a preconfigured datasource database has been added/updated - and the user has built ANY number of queries using a\n database OTHER than the preconfigured one, return a database issue - since those databases are no longer available.\n The user will need to update their queries to use the preconfigured database.\n */\n if (!!this.preconfiguredDatabase) {\n for (const target of request.targets) {\n // Test for database configuration change only if query was made in `builder` mode.\n if (\n target.editorMode === EditorMode.Builder &&\n target.dataset &&\n target.dataset !== this.preconfiguredDatabase\n ) {\n return `The configuration for this panel's data source has been modified. The previous database used in this panel's\n saved query is no longer available. Please update the query to use the new database option.\n Previous query parameters will be preserved until the query is updated.`;\n }\n }\n }\n }\n\n return;\n }\n\n async metricFindQuery(query: string, options?: LegacyMetricFindQueryOptions): Promise<MetricFindValue[]> {\n const range = options?.range;\n if (range == null) {\n // i cannot create a scenario where this happens, we handle it just to be sure.\n return [];\n }\n\n let refId = 'tempvar';\n if (options && options.variable && options.variable.name) {\n refId = options.variable.name;\n }\n\n const scopedVars = {\n ...options?.scopedVars,\n ...getSearchFilterScopedVar({ query, wildcardChar: '%', options }),\n };\n\n const rawSql = this.templateSrv.replace(query, scopedVars, this.interpolateVariable);\n\n const interpolatedQuery: SQLQuery = {\n refId: refId,\n datasource: this.getRef(),\n rawSql,\n format: QueryFormat.Table,\n };\n\n // NOTE: we can remove this try-catch when https://github.com/grafana/grafana/issues/82250\n // is fixed.\n let response;\n try {\n response = await this.runMetaQuery(interpolatedQuery, range);\n } catch (error) {\n console.error(error);\n throw new Error('error when executing the sql query');\n }\n return this.getResponseParser().transformMetricFindResponse(response);\n }\n\n // NOTE: this always runs with the `@grafana/data/getDefaultTimeRange` time range\n async runSql<T extends object>(query: string, options?: RunSQLOptions) {\n const range = getDefaultTimeRange();\n const frame = await this.runMetaQuery({ rawSql: query, format: QueryFormat.Table, refId: options?.refId }, range);\n return new DataFrameView<T>(frame);\n }\n\n private runMetaQuery(request: Partial<SQLQuery>, range: TimeRange): Promise<DataFrame> {\n const refId = request.refId || 'meta';\n const queries: DataQuery[] = [{ ...request, datasource: request.datasource || this.getRef(), refId }];\n\n return lastValueFrom(\n getBackendSrv()\n .fetch<BackendDataSourceResponse>({\n url: '/api/ds/query',\n method: 'POST',\n headers: this.getRequestHeaders(),\n data: {\n from: range.from.valueOf().toString(),\n to: range.to.valueOf().toString(),\n queries,\n },\n requestId: refId,\n })\n .pipe(\n map((res: FetchResponse<BackendDataSourceResponse>) => {\n const rsp = toDataQueryResponse(res, queries);\n return rsp.data[0] ?? { fields: [] };\n })\n )\n );\n }\n\n targetContainsTemplate(target: SQLQuery) {\n let queryWithoutMacros = target.rawSql;\n MACRO_NAMES.forEach((value) => {\n queryWithoutMacros = queryWithoutMacros?.replace(value, '') || '';\n });\n return this.templateSrv.containsTemplate(queryWithoutMacros);\n }\n}\n\ninterface RunSQLOptions extends LegacyMetricFindQueryOptions {\n refId?: string;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { EditorMode } from '@grafana/plugin-ui';
|
|
2
|
+
import { QueryFormat } from './types.mjs';
|
|
3
|
+
import { setGroupByField, createFunctionField } from './utils/sql.utils.mjs';
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
function applyQueryDefaults(q) {
|
|
7
|
+
var _a;
|
|
8
|
+
let editorMode = (q == null ? void 0 : q.editorMode) || EditorMode.Builder;
|
|
9
|
+
if ((q == null ? void 0 : q.editorMode) === void 0 && (q == null ? void 0 : q.rawSql) !== void 0) {
|
|
10
|
+
editorMode = EditorMode.Code;
|
|
11
|
+
}
|
|
12
|
+
const result = {
|
|
13
|
+
...q,
|
|
14
|
+
refId: (q == null ? void 0 : q.refId) || "A",
|
|
15
|
+
format: (q == null ? void 0 : q.format) !== void 0 ? q.format : QueryFormat.Table,
|
|
16
|
+
rawSql: (q == null ? void 0 : q.rawSql) || "",
|
|
17
|
+
editorMode,
|
|
18
|
+
sql: (_a = q == null ? void 0 : q.sql) != null ? _a : {
|
|
19
|
+
columns: [createFunctionField()],
|
|
20
|
+
groupBy: [setGroupByField()],
|
|
21
|
+
limit: 50
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { applyQueryDefaults };
|
|
28
|
+
//# sourceMappingURL=defaults.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.mjs","sources":["../../src/defaults.ts"],"sourcesContent":["import { EditorMode } from '@grafana/plugin-ui';\n\nimport { QueryFormat, SQLQuery } from './types';\nimport { createFunctionField, setGroupByField } from './utils/sql.utils';\n\nexport function applyQueryDefaults(q?: SQLQuery): SQLQuery {\n let editorMode = q?.editorMode || EditorMode.Builder;\n\n // Switching to code editor if the query was created before visual query builder was introduced.\n if (q?.editorMode === undefined && q?.rawSql !== undefined) {\n editorMode = EditorMode.Code;\n }\n\n const result: SQLQuery = {\n ...q,\n refId: q?.refId || 'A',\n format: q?.format !== undefined ? q.format : QueryFormat.Table,\n rawSql: q?.rawSql || '',\n editorMode,\n sql: q?.sql ?? {\n columns: [createFunctionField()],\n groupBy: [setGroupByField()],\n limit: 50,\n },\n };\n\n return result;\n}\n\nexport type QueryWithDefaults = ReturnType<typeof applyQueryDefaults>;\n"],"names":[],"mappings":";;;;;AAKO,SAAS,mBAAmB,CAAA,EAAwB;AAL3D,EAAA,IAAA,EAAA;AAME,EAAA,IAAI,UAAA,GAAA,CAAa,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,UAAA,KAAc,UAAA,CAAW,OAAA;AAG7C,EAAA,IAAA,CAAI,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,UAAA,MAAe,KAAA,CAAA,IAAA,CAAa,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,YAAW,KAAA,CAAA,EAAW;AAC1D,IAAA,UAAA,GAAa,UAAA,CAAW,IAAA;AAAA,EAC1B;AAEA,EAAA,MAAM,MAAA,GAAmB;AAAA,IACvB,GAAG,CAAA;AAAA,IACH,KAAA,EAAA,CAAO,uBAAG,KAAA,KAAS,GAAA;AAAA,IACnB,SAAQ,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,MAAA,MAAW,KAAA,CAAA,GAAY,CAAA,CAAE,SAAS,WAAA,CAAY,KAAA;AAAA,IACzD,MAAA,EAAA,CAAQ,uBAAG,MAAA,KAAU,EAAA;AAAA,IACrB,UAAA;AAAA,IACA,GAAA,EAAA,CAAK,EAAA,GAAA,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,GAAA,KAAH,IAAA,GAAA,EAAA,GAAU;AAAA,MACb,OAAA,EAAS,CAAC,mBAAA,EAAqB,CAAA;AAAA,MAC/B,OAAA,EAAS,CAAC,eAAA,EAAiB,CAAA;AAAA,MAC3B,KAAA,EAAO;AAAA;AACT,GACF;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var QueryEditorPropertyType = /* @__PURE__ */ ((QueryEditorPropertyType2) => {
|
|
3
|
+
QueryEditorPropertyType2["String"] = "string";
|
|
4
|
+
return QueryEditorPropertyType2;
|
|
5
|
+
})(QueryEditorPropertyType || {});
|
|
6
|
+
var QueryEditorExpressionType = /* @__PURE__ */ ((QueryEditorExpressionType2) => {
|
|
7
|
+
QueryEditorExpressionType2["Property"] = "property";
|
|
8
|
+
QueryEditorExpressionType2["Operator"] = "operator";
|
|
9
|
+
QueryEditorExpressionType2["Or"] = "or";
|
|
10
|
+
QueryEditorExpressionType2["And"] = "and";
|
|
11
|
+
QueryEditorExpressionType2["GroupBy"] = "groupBy";
|
|
12
|
+
QueryEditorExpressionType2["Function"] = "function";
|
|
13
|
+
QueryEditorExpressionType2["FunctionParameter"] = "functionParameter";
|
|
14
|
+
return QueryEditorExpressionType2;
|
|
15
|
+
})(QueryEditorExpressionType || {});
|
|
16
|
+
|
|
17
|
+
export { QueryEditorExpressionType, QueryEditorPropertyType };
|
|
18
|
+
//# sourceMappingURL=expressions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.mjs","sources":["../../src/expressions.ts"],"sourcesContent":["export enum QueryEditorPropertyType {\n String = 'string',\n}\n\nexport interface QueryEditorProperty {\n type: QueryEditorPropertyType;\n name?: string;\n}\n\nexport type QueryEditorOperatorType = string | boolean | number;\ntype QueryEditorOperatorValueType = QueryEditorOperatorType | QueryEditorOperatorType[];\n\nexport interface QueryEditorOperator<T extends QueryEditorOperatorValueType> {\n name?: string;\n value?: T;\n}\n\nexport interface QueryEditorOperatorExpression {\n type: QueryEditorExpressionType.Operator;\n property: QueryEditorProperty;\n operator: QueryEditorOperator<QueryEditorOperatorValueType>;\n}\n\nexport interface QueryEditorArrayExpression {\n type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or;\n expressions: QueryEditorExpression[] | QueryEditorArrayExpression[];\n}\n\nexport interface QueryEditorPropertyExpression {\n type: QueryEditorExpressionType.Property;\n property: QueryEditorProperty;\n}\n\nexport enum QueryEditorExpressionType {\n Property = 'property',\n Operator = 'operator',\n Or = 'or',\n And = 'and',\n GroupBy = 'groupBy',\n Function = 'function',\n FunctionParameter = 'functionParameter',\n}\n\nexport type QueryEditorExpression =\n | QueryEditorArrayExpression\n | QueryEditorPropertyExpression\n | QueryEditorGroupByExpression\n | QueryEditorFunctionExpression\n | QueryEditorFunctionParameterExpression\n | QueryEditorOperatorExpression;\n\nexport interface QueryEditorGroupByExpression {\n type: QueryEditorExpressionType.GroupBy;\n property: QueryEditorProperty;\n}\n\nexport interface QueryEditorFunctionExpression {\n type: QueryEditorExpressionType.Function;\n name?: string;\n alias?: string;\n parameters?: QueryEditorFunctionParameterExpression[];\n}\n\nexport interface QueryEditorFunctionParameterExpression {\n type: QueryEditorExpressionType.FunctionParameter;\n name?: string;\n}\n"],"names":["QueryEditorPropertyType","QueryEditorExpressionType"],"mappings":";AAAO,IAAK,uBAAA,qBAAAA,wBAAAA,KAAL;AACL,EAAAA,yBAAA,QAAA,CAAA,GAAS,QAAA;AADC,EAAA,OAAAA,wBAAAA;AAAA,CAAA,EAAA,uBAAA,IAAA,EAAA;AAiCL,IAAK,yBAAA,qBAAAC,0BAAAA,KAAL;AACL,EAAAA,2BAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,2BAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,2BAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,2BAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,2BAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,2BAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,2BAAA,mBAAA,CAAA,GAAoB,mBAAA;AAPV,EAAA,OAAAA,0BAAAA;AAAA,CAAA,EAAA,yBAAA,IAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { QueryFormat } from './types.mjs';
|
|
2
|
+
export { COMMON_FNS, MACRO_FUNCTIONS } from './constants.mjs';
|
|
3
|
+
export { SqlDatasource } from './datasource/SqlDatasource.mjs';
|
|
4
|
+
export { formatSQL } from './utils/formatSQL.mjs';
|
|
5
|
+
export { ConnectionLimits } from './components/configuration/ConnectionLimits.mjs';
|
|
6
|
+
export { MaxLifetimeField } from './components/configuration/MaxLifetimeField.mjs';
|
|
7
|
+
export { MaxOpenConnectionsField } from './components/configuration/MaxOpenConnectionsField.mjs';
|
|
8
|
+
export { NumberInput } from './components/configuration/NumberInput.mjs';
|
|
9
|
+
export { Divider } from './components/configuration/Divider.mjs';
|
|
10
|
+
export { TLSSecretsConfig } from './components/configuration/TLSSecretsConfig.mjs';
|
|
11
|
+
export { useMigrateDatabaseFields } from './components/configuration/useMigrateDatabaseFields.mjs';
|
|
12
|
+
export { Preview } from './components/visual-query-builder/Preview.mjs';
|
|
13
|
+
export { SqlQueryEditorLazy } from './components/QueryEditorLazy.mjs';
|
|
14
|
+
export { SQLVariableSupport } from './SQLVariableSupport.mjs';
|
|
15
|
+
export { createSelectClause, haveColumns } from './utils/sql.utils.mjs';
|
|
16
|
+
export { applyQueryDefaults } from './defaults.mjs';
|
|
17
|
+
export { makeVariable } from './utils/testHelpers.mjs';
|
|
18
|
+
export { QueryEditorExpressionType } from './expressions.mjs';
|
|
19
|
+
export { loadResources } from './loadResources.mjs';
|
|
20
|
+
|
|
21
|
+
"use strict";
|
|
22
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LANGUAGES } from '@grafana/i18n';
|
|
2
|
+
|
|
3
|
+
function __variableDynamicImportRuntime0__(path) {
|
|
4
|
+
switch (path) {
|
|
5
|
+
case './locales/cs-CZ/grafana-sql.json': return import('./locales/cs-CZ/grafana-sql.json.mjs');
|
|
6
|
+
case './locales/de-DE/grafana-sql.json': return import('./locales/de-DE/grafana-sql.json.mjs');
|
|
7
|
+
case './locales/en-US/grafana-sql.json': return import('./locales/en-US/grafana-sql.json.mjs');
|
|
8
|
+
case './locales/es-ES/grafana-sql.json': return import('./locales/es-ES/grafana-sql.json.mjs');
|
|
9
|
+
case './locales/fr-FR/grafana-sql.json': return import('./locales/fr-FR/grafana-sql.json.mjs');
|
|
10
|
+
case './locales/hu-HU/grafana-sql.json': return import('./locales/hu-HU/grafana-sql.json.mjs');
|
|
11
|
+
case './locales/id-ID/grafana-sql.json': return import('./locales/id-ID/grafana-sql.json.mjs');
|
|
12
|
+
case './locales/it-IT/grafana-sql.json': return import('./locales/it-IT/grafana-sql.json.mjs');
|
|
13
|
+
case './locales/ja-JP/grafana-sql.json': return import('./locales/ja-JP/grafana-sql.json.mjs');
|
|
14
|
+
case './locales/ko-KR/grafana-sql.json': return import('./locales/ko-KR/grafana-sql.json.mjs');
|
|
15
|
+
case './locales/nl-NL/grafana-sql.json': return import('./locales/nl-NL/grafana-sql.json.mjs');
|
|
16
|
+
case './locales/pl-PL/grafana-sql.json': return import('./locales/pl-PL/grafana-sql.json.mjs');
|
|
17
|
+
case './locales/pt-BR/grafana-sql.json': return import('./locales/pt-BR/grafana-sql.json.mjs');
|
|
18
|
+
case './locales/pt-PT/grafana-sql.json': return import('./locales/pt-PT/grafana-sql.json.mjs');
|
|
19
|
+
case './locales/ru-RU/grafana-sql.json': return import('./locales/ru-RU/grafana-sql.json.mjs');
|
|
20
|
+
case './locales/sv-SE/grafana-sql.json': return import('./locales/sv-SE/grafana-sql.json.mjs');
|
|
21
|
+
case './locales/tr-TR/grafana-sql.json': return import('./locales/tr-TR/grafana-sql.json.mjs');
|
|
22
|
+
case './locales/zh-Hans/grafana-sql.json': return import('./locales/zh-Hans/grafana-sql.json.mjs');
|
|
23
|
+
case './locales/zh-Hant/grafana-sql.json': return import('./locales/zh-Hant/grafana-sql.json.mjs');
|
|
24
|
+
default: return new Promise(function(resolve, reject) {
|
|
25
|
+
(typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(
|
|
26
|
+
reject.bind(null, new Error("Unknown variable dynamic import: " + path))
|
|
27
|
+
);
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
"use strict";
|
|
33
|
+
const resources = LANGUAGES.reduce((acc, lang) => {
|
|
34
|
+
acc[lang.code] = async () => await __variableDynamicImportRuntime0__(`./locales/${lang.code}/grafana-sql.json`);
|
|
35
|
+
return acc;
|
|
36
|
+
}, {});
|
|
37
|
+
const loadResources = async (resolvedLanguage) => {
|
|
38
|
+
const translation = await resources[resolvedLanguage]();
|
|
39
|
+
return translation.default;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export { loadResources };
|
|
43
|
+
//# sourceMappingURL=loadResources.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadResources.mjs","sources":["../../src/loadResources.ts"],"sourcesContent":["import { LANGUAGES, ResourceLoader, Resources } from '@grafana/i18n';\n\nconst resources = LANGUAGES.reduce<Record<string, () => Promise<{ default: Resources }>>>((acc, lang) => {\n acc[lang.code] = async () => await import(`./locales/${lang.code}/grafana-sql.json`);\n return acc;\n}, {});\n\nexport const loadResources: ResourceLoader = async (resolvedLanguage: string) => {\n const translation = await resources[resolvedLanguage]();\n return translation.default;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,SAAA,GAAY,SAAA,CAAU,MAAA,CAA8D,CAAC,KAAK,IAAA,KAAS;AACvG,EAAA,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,GAAI,YAAY,MAAM,iCAAA,CAAO,CAAA,UAAA,EAAa,KAAK,IAAI,CAAA,iBAAA,CAAA,CAAA;AAChE,EAAA,OAAO,GAAA;AACT,CAAA,EAAG,EAAE,CAAA;AAEE,MAAM,aAAA,GAAgC,OAAO,gBAAA,KAA6B;AAC/E,EAAA,MAAM,WAAA,GAAc,MAAM,SAAA,CAAU,gBAAgB,CAAA,EAAE;AACtD,EAAA,OAAO,WAAA,CAAY,OAAA;AACrB;;;;"}
|