@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.
Files changed (323) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/README.md +10 -0
  3. package/dist/cjs/ResponseParser.cjs +29 -0
  4. package/dist/cjs/ResponseParser.cjs.map +1 -0
  5. package/dist/cjs/SQLVariableEditor.cjs +86 -0
  6. package/dist/cjs/SQLVariableEditor.cjs.map +1 -0
  7. package/dist/cjs/SQLVariableSupport.cjs +40 -0
  8. package/dist/cjs/SQLVariableSupport.cjs.map +1 -0
  9. package/dist/cjs/SQLVariableUtils.cjs +75 -0
  10. package/dist/cjs/SQLVariableUtils.cjs.map +1 -0
  11. package/dist/cjs/components/ConfirmModal.cjs +56 -0
  12. package/dist/cjs/components/ConfirmModal.cjs.map +1 -0
  13. package/dist/cjs/components/DatasetSelector.cjs +48 -0
  14. package/dist/cjs/components/DatasetSelector.cjs.map +1 -0
  15. package/dist/cjs/components/QueryEditor.cjs +124 -0
  16. package/dist/cjs/components/QueryEditor.cjs.map +1 -0
  17. package/dist/cjs/components/QueryEditorLazy.cjs +44 -0
  18. package/dist/cjs/components/QueryEditorLazy.cjs.map +1 -0
  19. package/dist/cjs/components/QueryHeader.cjs +294 -0
  20. package/dist/cjs/components/QueryHeader.cjs.map +1 -0
  21. package/dist/cjs/components/TableSelector.cjs +41 -0
  22. package/dist/cjs/components/TableSelector.cjs.map +1 -0
  23. package/dist/cjs/components/configuration/ConnectionLimits.cjs +162 -0
  24. package/dist/cjs/components/configuration/ConnectionLimits.cjs.map +1 -0
  25. package/dist/cjs/components/configuration/Divider.cjs +25 -0
  26. package/dist/cjs/components/configuration/Divider.cjs.map +1 -0
  27. package/dist/cjs/components/configuration/MaxLifetimeField.cjs +41 -0
  28. package/dist/cjs/components/configuration/MaxLifetimeField.cjs.map +1 -0
  29. package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs +53 -0
  30. package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs.map +1 -0
  31. package/dist/cjs/components/configuration/NumberInput.cjs +37 -0
  32. package/dist/cjs/components/configuration/NumberInput.cjs.map +1 -0
  33. package/dist/cjs/components/configuration/TLSSecretsConfig.cjs +106 -0
  34. package/dist/cjs/components/configuration/TLSSecretsConfig.cjs.map +1 -0
  35. package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs +52 -0
  36. package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs.map +1 -0
  37. package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs +40 -0
  38. package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs.map +1 -0
  39. package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs +108 -0
  40. package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs.map +1 -0
  41. package/dist/cjs/components/query-editor-raw/QueryValidator.cjs +100 -0
  42. package/dist/cjs/components/query-editor-raw/QueryValidator.cjs.map +1 -0
  43. package/dist/cjs/components/query-editor-raw/RawEditor.cjs +116 -0
  44. package/dist/cjs/components/query-editor-raw/RawEditor.cjs.map +1 -0
  45. package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs +273 -0
  46. package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs.map +1 -0
  47. package/dist/cjs/components/visual-query-builder/GroupByRow.cjs +69 -0
  48. package/dist/cjs/components/visual-query-builder/GroupByRow.cjs.map +1 -0
  49. package/dist/cjs/components/visual-query-builder/OrderByRow.cjs +82 -0
  50. package/dist/cjs/components/visual-query-builder/OrderByRow.cjs.map +1 -0
  51. package/dist/cjs/components/visual-query-builder/Preview.cjs +55 -0
  52. package/dist/cjs/components/visual-query-builder/Preview.cjs.map +1 -0
  53. package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs +18 -0
  54. package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs.map +1 -0
  55. package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs +18 -0
  56. package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs.map +1 -0
  57. package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs +56 -0
  58. package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs.map +1 -0
  59. package/dist/cjs/components/visual-query-builder/SelectColumn.cjs +30 -0
  60. package/dist/cjs/components/visual-query-builder/SelectColumn.cjs.map +1 -0
  61. package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs +135 -0
  62. package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs.map +1 -0
  63. package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs +142 -0
  64. package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs.map +1 -0
  65. package/dist/cjs/components/visual-query-builder/SelectRow.cjs +184 -0
  66. package/dist/cjs/components/visual-query-builder/SelectRow.cjs.map +1 -0
  67. package/dist/cjs/components/visual-query-builder/VisualEditor.cjs +43 -0
  68. package/dist/cjs/components/visual-query-builder/VisualEditor.cjs.map +1 -0
  69. package/dist/cjs/components/visual-query-builder/WhereRow.cjs +84 -0
  70. package/dist/cjs/components/visual-query-builder/WhereRow.cjs.map +1 -0
  71. package/dist/cjs/constants.cjs +77 -0
  72. package/dist/cjs/constants.cjs.map +1 -0
  73. package/dist/cjs/datasource/SqlDatasource.cjs +188 -0
  74. package/dist/cjs/datasource/SqlDatasource.cjs.map +1 -0
  75. package/dist/cjs/defaults.cjs +32 -0
  76. package/dist/cjs/defaults.cjs.map +1 -0
  77. package/dist/cjs/expressions.cjs +23 -0
  78. package/dist/cjs/expressions.cjs.map +1 -0
  79. package/dist/cjs/index.cjs +48 -0
  80. package/dist/cjs/index.cjs.map +1 -0
  81. package/dist/cjs/loadResources.cjs +49 -0
  82. package/dist/cjs/loadResources.cjs.map +1 -0
  83. package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs +165 -0
  84. package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs.map +1 -0
  85. package/dist/cjs/locales/de-DE/grafana-sql.json.cjs +165 -0
  86. package/dist/cjs/locales/de-DE/grafana-sql.json.cjs.map +1 -0
  87. package/dist/cjs/locales/en-US/grafana-sql.json.cjs +165 -0
  88. package/dist/cjs/locales/en-US/grafana-sql.json.cjs.map +1 -0
  89. package/dist/cjs/locales/es-ES/grafana-sql.json.cjs +165 -0
  90. package/dist/cjs/locales/es-ES/grafana-sql.json.cjs.map +1 -0
  91. package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs +165 -0
  92. package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs.map +1 -0
  93. package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs +165 -0
  94. package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs.map +1 -0
  95. package/dist/cjs/locales/id-ID/grafana-sql.json.cjs +165 -0
  96. package/dist/cjs/locales/id-ID/grafana-sql.json.cjs.map +1 -0
  97. package/dist/cjs/locales/it-IT/grafana-sql.json.cjs +165 -0
  98. package/dist/cjs/locales/it-IT/grafana-sql.json.cjs.map +1 -0
  99. package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs +165 -0
  100. package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs.map +1 -0
  101. package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs +165 -0
  102. package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs.map +1 -0
  103. package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs +165 -0
  104. package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs.map +1 -0
  105. package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs +165 -0
  106. package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs.map +1 -0
  107. package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs +165 -0
  108. package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs.map +1 -0
  109. package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs +165 -0
  110. package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs.map +1 -0
  111. package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs +165 -0
  112. package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs.map +1 -0
  113. package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs +165 -0
  114. package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs.map +1 -0
  115. package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs +165 -0
  116. package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs.map +1 -0
  117. package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs +165 -0
  118. package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs.map +1 -0
  119. package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs +165 -0
  120. package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs.map +1 -0
  121. package/dist/cjs/types.cjs +24 -0
  122. package/dist/cjs/types.cjs.map +1 -0
  123. package/dist/cjs/utils/formatSQL.cjs +19 -0
  124. package/dist/cjs/utils/formatSQL.cjs.map +1 -0
  125. package/dist/cjs/utils/getColumnsWithIndices.cjs +33 -0
  126. package/dist/cjs/utils/getColumnsWithIndices.cjs.map +1 -0
  127. package/dist/cjs/utils/logging.cjs +11 -0
  128. package/dist/cjs/utils/logging.cjs.map +1 -0
  129. package/dist/cjs/utils/migration.cjs +24 -0
  130. package/dist/cjs/utils/migration.cjs.map +1 -0
  131. package/dist/cjs/utils/sql.utils.cjs +75 -0
  132. package/dist/cjs/utils/sql.utils.cjs.map +1 -0
  133. package/dist/cjs/utils/testHelpers.cjs +31 -0
  134. package/dist/cjs/utils/testHelpers.cjs.map +1 -0
  135. package/dist/cjs/utils/useSqlChange.cjs +22 -0
  136. package/dist/cjs/utils/useSqlChange.cjs.map +1 -0
  137. package/dist/esm/ResponseParser.mjs +25 -0
  138. package/dist/esm/ResponseParser.mjs.map +1 -0
  139. package/dist/esm/SQLVariableEditor.mjs +82 -0
  140. package/dist/esm/SQLVariableEditor.mjs.map +1 -0
  141. package/dist/esm/SQLVariableSupport.mjs +36 -0
  142. package/dist/esm/SQLVariableSupport.mjs.map +1 -0
  143. package/dist/esm/SQLVariableUtils.mjs +68 -0
  144. package/dist/esm/SQLVariableUtils.mjs.map +1 -0
  145. package/dist/esm/components/ConfirmModal.mjs +52 -0
  146. package/dist/esm/components/ConfirmModal.mjs.map +1 -0
  147. package/dist/esm/components/DatasetSelector.mjs +44 -0
  148. package/dist/esm/components/DatasetSelector.mjs.map +1 -0
  149. package/dist/esm/components/QueryEditor.mjs +122 -0
  150. package/dist/esm/components/QueryEditor.mjs.map +1 -0
  151. package/dist/esm/components/QueryEditorLazy.mjs +38 -0
  152. package/dist/esm/components/QueryEditorLazy.mjs.map +1 -0
  153. package/dist/esm/components/QueryHeader.mjs +290 -0
  154. package/dist/esm/components/QueryHeader.mjs.map +1 -0
  155. package/dist/esm/components/TableSelector.mjs +37 -0
  156. package/dist/esm/components/TableSelector.mjs.map +1 -0
  157. package/dist/esm/components/configuration/ConnectionLimits.mjs +158 -0
  158. package/dist/esm/components/configuration/ConnectionLimits.mjs.map +1 -0
  159. package/dist/esm/components/configuration/Divider.mjs +21 -0
  160. package/dist/esm/components/configuration/Divider.mjs.map +1 -0
  161. package/dist/esm/components/configuration/MaxLifetimeField.mjs +37 -0
  162. package/dist/esm/components/configuration/MaxLifetimeField.mjs.map +1 -0
  163. package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs +49 -0
  164. package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs.map +1 -0
  165. package/dist/esm/components/configuration/NumberInput.mjs +33 -0
  166. package/dist/esm/components/configuration/NumberInput.mjs.map +1 -0
  167. package/dist/esm/components/configuration/TLSSecretsConfig.mjs +102 -0
  168. package/dist/esm/components/configuration/TLSSecretsConfig.mjs.map +1 -0
  169. package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs +48 -0
  170. package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs.map +1 -0
  171. package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs +36 -0
  172. package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs.map +1 -0
  173. package/dist/esm/components/query-editor-raw/QueryToolbox.mjs +104 -0
  174. package/dist/esm/components/query-editor-raw/QueryToolbox.mjs.map +1 -0
  175. package/dist/esm/components/query-editor-raw/QueryValidator.mjs +96 -0
  176. package/dist/esm/components/query-editor-raw/QueryValidator.mjs.map +1 -0
  177. package/dist/esm/components/query-editor-raw/RawEditor.mjs +108 -0
  178. package/dist/esm/components/query-editor-raw/RawEditor.mjs.map +1 -0
  179. package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs +266 -0
  180. package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs.map +1 -0
  181. package/dist/esm/components/visual-query-builder/GroupByRow.mjs +65 -0
  182. package/dist/esm/components/visual-query-builder/GroupByRow.mjs.map +1 -0
  183. package/dist/esm/components/visual-query-builder/OrderByRow.mjs +78 -0
  184. package/dist/esm/components/visual-query-builder/OrderByRow.mjs.map +1 -0
  185. package/dist/esm/components/visual-query-builder/Preview.mjs +51 -0
  186. package/dist/esm/components/visual-query-builder/Preview.mjs.map +1 -0
  187. package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs +14 -0
  188. package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs.map +1 -0
  189. package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs +14 -0
  190. package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs.map +1 -0
  191. package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs +51 -0
  192. package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs.map +1 -0
  193. package/dist/esm/components/visual-query-builder/SelectColumn.mjs +26 -0
  194. package/dist/esm/components/visual-query-builder/SelectColumn.mjs.map +1 -0
  195. package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs +131 -0
  196. package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs.map +1 -0
  197. package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs +138 -0
  198. package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs.map +1 -0
  199. package/dist/esm/components/visual-query-builder/SelectRow.mjs +180 -0
  200. package/dist/esm/components/visual-query-builder/SelectRow.mjs.map +1 -0
  201. package/dist/esm/components/visual-query-builder/VisualEditor.mjs +39 -0
  202. package/dist/esm/components/visual-query-builder/VisualEditor.mjs.map +1 -0
  203. package/dist/esm/components/visual-query-builder/WhereRow.mjs +80 -0
  204. package/dist/esm/components/visual-query-builder/WhereRow.mjs.map +1 -0
  205. package/dist/esm/constants.mjs +71 -0
  206. package/dist/esm/constants.mjs.map +1 -0
  207. package/dist/esm/datasource/SqlDatasource.mjs +184 -0
  208. package/dist/esm/datasource/SqlDatasource.mjs.map +1 -0
  209. package/dist/esm/defaults.mjs +28 -0
  210. package/dist/esm/defaults.mjs.map +1 -0
  211. package/dist/esm/expressions.mjs +18 -0
  212. package/dist/esm/expressions.mjs.map +1 -0
  213. package/dist/esm/index.mjs +22 -0
  214. package/dist/esm/index.mjs.map +1 -0
  215. package/dist/esm/loadResources.mjs +43 -0
  216. package/dist/esm/loadResources.mjs.map +1 -0
  217. package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs +163 -0
  218. package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs.map +1 -0
  219. package/dist/esm/locales/de-DE/grafana-sql.json.mjs +163 -0
  220. package/dist/esm/locales/de-DE/grafana-sql.json.mjs.map +1 -0
  221. package/dist/esm/locales/en-US/grafana-sql.json.mjs +163 -0
  222. package/dist/esm/locales/en-US/grafana-sql.json.mjs.map +1 -0
  223. package/dist/esm/locales/es-ES/grafana-sql.json.mjs +163 -0
  224. package/dist/esm/locales/es-ES/grafana-sql.json.mjs.map +1 -0
  225. package/dist/esm/locales/fr-FR/grafana-sql.json.mjs +163 -0
  226. package/dist/esm/locales/fr-FR/grafana-sql.json.mjs.map +1 -0
  227. package/dist/esm/locales/hu-HU/grafana-sql.json.mjs +163 -0
  228. package/dist/esm/locales/hu-HU/grafana-sql.json.mjs.map +1 -0
  229. package/dist/esm/locales/id-ID/grafana-sql.json.mjs +163 -0
  230. package/dist/esm/locales/id-ID/grafana-sql.json.mjs.map +1 -0
  231. package/dist/esm/locales/it-IT/grafana-sql.json.mjs +163 -0
  232. package/dist/esm/locales/it-IT/grafana-sql.json.mjs.map +1 -0
  233. package/dist/esm/locales/ja-JP/grafana-sql.json.mjs +163 -0
  234. package/dist/esm/locales/ja-JP/grafana-sql.json.mjs.map +1 -0
  235. package/dist/esm/locales/ko-KR/grafana-sql.json.mjs +163 -0
  236. package/dist/esm/locales/ko-KR/grafana-sql.json.mjs.map +1 -0
  237. package/dist/esm/locales/nl-NL/grafana-sql.json.mjs +163 -0
  238. package/dist/esm/locales/nl-NL/grafana-sql.json.mjs.map +1 -0
  239. package/dist/esm/locales/pl-PL/grafana-sql.json.mjs +163 -0
  240. package/dist/esm/locales/pl-PL/grafana-sql.json.mjs.map +1 -0
  241. package/dist/esm/locales/pt-BR/grafana-sql.json.mjs +163 -0
  242. package/dist/esm/locales/pt-BR/grafana-sql.json.mjs.map +1 -0
  243. package/dist/esm/locales/pt-PT/grafana-sql.json.mjs +163 -0
  244. package/dist/esm/locales/pt-PT/grafana-sql.json.mjs.map +1 -0
  245. package/dist/esm/locales/ru-RU/grafana-sql.json.mjs +163 -0
  246. package/dist/esm/locales/ru-RU/grafana-sql.json.mjs.map +1 -0
  247. package/dist/esm/locales/sv-SE/grafana-sql.json.mjs +163 -0
  248. package/dist/esm/locales/sv-SE/grafana-sql.json.mjs.map +1 -0
  249. package/dist/esm/locales/tr-TR/grafana-sql.json.mjs +163 -0
  250. package/dist/esm/locales/tr-TR/grafana-sql.json.mjs.map +1 -0
  251. package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs +163 -0
  252. package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs.map +1 -0
  253. package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs +163 -0
  254. package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs.map +1 -0
  255. package/dist/esm/types.mjs +18 -0
  256. package/dist/esm/types.mjs.map +1 -0
  257. package/dist/esm/utils/formatSQL.mjs +11 -0
  258. package/dist/esm/utils/formatSQL.mjs.map +1 -0
  259. package/dist/esm/utils/getColumnsWithIndices.mjs +29 -0
  260. package/dist/esm/utils/getColumnsWithIndices.mjs.map +1 -0
  261. package/dist/esm/utils/logging.mjs +7 -0
  262. package/dist/esm/utils/logging.mjs.map +1 -0
  263. package/dist/esm/utils/migration.mjs +22 -0
  264. package/dist/esm/utils/migration.mjs.map +1 -0
  265. package/dist/esm/utils/sql.utils.mjs +66 -0
  266. package/dist/esm/utils/sql.utils.mjs.map +1 -0
  267. package/dist/esm/utils/testHelpers.mjs +27 -0
  268. package/dist/esm/utils/testHelpers.mjs.map +1 -0
  269. package/dist/esm/utils/useSqlChange.mjs +18 -0
  270. package/dist/esm/utils/useSqlChange.mjs.map +1 -0
  271. package/dist/types/ResponseParser.d.ts +5 -0
  272. package/dist/types/SQLVariableEditor.d.ts +5 -0
  273. package/dist/types/SQLVariableSupport.d.ts +11 -0
  274. package/dist/types/SQLVariableUtils.d.ts +6 -0
  275. package/dist/types/components/ConfirmModal.d.ts +8 -0
  276. package/dist/types/components/DatasetSelector.d.ts +11 -0
  277. package/dist/types/components/ErrorBoundary.d.ts +12 -0
  278. package/dist/types/components/QueryEditor.d.ts +8 -0
  279. package/dist/types/components/QueryEditorLazy.d.ts +2 -0
  280. package/dist/types/components/QueryHeader.d.ts +16 -0
  281. package/dist/types/components/SqlComponents.testHelpers.d.ts +65 -0
  282. package/dist/types/components/TableSelector.d.ts +10 -0
  283. package/dist/types/components/configuration/ConnectionLimits.d.ts +8 -0
  284. package/dist/types/components/configuration/Divider.d.ts +1 -0
  285. package/dist/types/components/configuration/MaxLifetimeField.d.ts +8 -0
  286. package/dist/types/components/configuration/MaxOpenConnectionsField.d.ts +8 -0
  287. package/dist/types/components/configuration/NumberInput.d.ts +8 -0
  288. package/dist/types/components/configuration/TLSSecretsConfig.d.ts +9 -0
  289. package/dist/types/components/configuration/useMigrateDatabaseFields.d.ts +7 -0
  290. package/dist/types/components/index.d.ts +1 -0
  291. package/dist/types/components/query-editor-raw/QueryEditorRaw.d.ts +15 -0
  292. package/dist/types/components/query-editor-raw/QueryToolbox.d.ts +10 -0
  293. package/dist/types/components/query-editor-raw/QueryValidator.d.ts +9 -0
  294. package/dist/types/components/query-editor-raw/RawEditor.d.ts +9 -0
  295. package/dist/types/components/visual-query-builder/AwesomeQueryBuilder.d.ts +6 -0
  296. package/dist/types/components/visual-query-builder/GroupByRow.d.ts +9 -0
  297. package/dist/types/components/visual-query-builder/OrderByRow.d.ts +10 -0
  298. package/dist/types/components/visual-query-builder/Preview.d.ts +6 -0
  299. package/dist/types/components/visual-query-builder/SQLGroupByRow.d.ts +11 -0
  300. package/dist/types/components/visual-query-builder/SQLOrderByRow.d.ts +11 -0
  301. package/dist/types/components/visual-query-builder/SQLWhereRow.d.ts +12 -0
  302. package/dist/types/components/visual-query-builder/SelectColumn.d.ts +8 -0
  303. package/dist/types/components/visual-query-builder/SelectCustomFunctionParameters.d.ts +11 -0
  304. package/dist/types/components/visual-query-builder/SelectFunctionParameters.d.ts +11 -0
  305. package/dist/types/components/visual-query-builder/SelectRow.d.ts +10 -0
  306. package/dist/types/components/visual-query-builder/VisualEditor.d.ts +8 -0
  307. package/dist/types/components/visual-query-builder/WhereRow.d.ts +9 -0
  308. package/dist/types/components/visual-query-builder/index.d.ts +1 -0
  309. package/dist/types/constants.d.ts +12 -0
  310. package/dist/types/datasource/SqlDatasource.d.ts +38 -0
  311. package/dist/types/defaults.d.ts +3 -0
  312. package/dist/types/expressions.d.ts +51 -0
  313. package/dist/types/index.d.ts +21 -0
  314. package/dist/types/loadResources.d.ts +2 -0
  315. package/dist/types/types.d.ts +152 -0
  316. package/dist/types/utils/formatSQL.d.ts +1 -0
  317. package/dist/types/utils/getColumnsWithIndices.d.ts +3 -0
  318. package/dist/types/utils/logging.d.ts +2 -0
  319. package/dist/types/utils/migration.d.ts +3 -0
  320. package/dist/types/utils/sql.utils.d.ts +21 -0
  321. package/dist/types/utils/testHelpers.d.ts +2 -0
  322. package/dist/types/utils/useSqlChange.d.ts +10 -0
  323. package/package.json +80 -4
@@ -0,0 +1,184 @@
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 lodash = require('lodash');
8
+ var react = require('react');
9
+ var data = require('@grafana/data');
10
+ var e2eSelectors = require('@grafana/e2e-selectors');
11
+ var i18n = require('@grafana/i18n');
12
+ var pluginUi = require('@grafana/plugin-ui');
13
+ var ui = require('@grafana/ui');
14
+ var expressions = require('../../expressions.cjs');
15
+ var types = require('../../types.cjs');
16
+ var sql_utils = require('../../utils/sql.utils.cjs');
17
+ var useSqlChange = require('../../utils/useSqlChange.cjs');
18
+ var SelectFunctionParameters = require('./SelectFunctionParameters.cjs');
19
+
20
+ "use strict";
21
+ function SelectRow({ query, onQueryChange, db, columns }) {
22
+ var _a, _b;
23
+ const styles = ui.useStyles2(getStyles);
24
+ const { onSqlChange } = useSqlChange.useSqlChange({ query, onQueryChange, db });
25
+ const timeSeriesAliasOpts = [];
26
+ if (query.format === types.QueryFormat.Timeseries) {
27
+ timeSeriesAliasOpts.push({ label: i18n.t("grafana-sql.components.select-row.label.time", "time"), value: "time" });
28
+ timeSeriesAliasOpts.push({ label: i18n.t("grafana-sql.components.select-row.label.value", "value"), value: "value" });
29
+ }
30
+ const onAggregationChange = react.useCallback(
31
+ (item, index) => (aggregation) => {
32
+ var _a2, _b2, _c, _d;
33
+ const newItem = {
34
+ ...item,
35
+ name: aggregation == null ? void 0 : aggregation.value,
36
+ parameters: [
37
+ { type: expressions.QueryEditorExpressionType.FunctionParameter, name: ((_b2 = (_a2 = item.parameters) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.name) || "" }
38
+ ]
39
+ };
40
+ const newSql = {
41
+ ...query.sql,
42
+ columns: (_d = (_c = query.sql) == null ? void 0 : _c.columns) == null ? void 0 : _d.map((c, i) => i === index ? newItem : c)
43
+ };
44
+ onSqlChange(newSql);
45
+ },
46
+ [onSqlChange, query.sql]
47
+ );
48
+ const onAliasChange = react.useCallback(
49
+ (item, index) => (alias) => {
50
+ var _a2, _b2, _c;
51
+ let newItem = { ...item };
52
+ if (alias !== null) {
53
+ newItem = { ...item, alias: `"${(_a2 = alias == null ? void 0 : alias.value) == null ? void 0 : _a2.trim()}"` };
54
+ } else {
55
+ delete newItem.alias;
56
+ }
57
+ const newSql = {
58
+ ...query.sql,
59
+ columns: (_c = (_b2 = query.sql) == null ? void 0 : _b2.columns) == null ? void 0 : _c.map((c, i) => i === index ? newItem : c)
60
+ };
61
+ onSqlChange(newSql);
62
+ },
63
+ [onSqlChange, query.sql]
64
+ );
65
+ const removeColumn = react.useCallback(
66
+ (index) => () => {
67
+ var _a2;
68
+ const clone = [...((_a2 = query.sql) == null ? void 0 : _a2.columns) || []];
69
+ clone.splice(index, 1);
70
+ const newSql = {
71
+ ...query.sql,
72
+ columns: clone
73
+ };
74
+ onSqlChange(newSql);
75
+ },
76
+ [onSqlChange, query.sql]
77
+ );
78
+ const addColumn = react.useCallback(() => {
79
+ var _a2;
80
+ const newSql = { ...query.sql, columns: [...((_a2 = query.sql) == null ? void 0 : _a2.columns) || [], sql_utils.createFunctionField()] };
81
+ onSqlChange(newSql);
82
+ }, [onSqlChange, query.sql]);
83
+ const aggregateOptions = () => {
84
+ const options = [
85
+ {
86
+ label: i18n.t("grafana-sql.components.select-row.aggregate-options.options.label.aggregations", "Aggregations"),
87
+ options: []
88
+ },
89
+ { label: i18n.t("grafana-sql.components.select-row.aggregate-options.options.label.macros", "Macros"), options: [] }
90
+ ];
91
+ for (const func of db.functions()) {
92
+ if (func.name.startsWith("$__")) {
93
+ options[1].options.push({ label: func.name, value: func.name });
94
+ } else {
95
+ options[0].options.push({ label: func.name, value: func.name });
96
+ }
97
+ }
98
+ return options;
99
+ };
100
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 2, wrap: "wrap", direction: "column", children: [
101
+ (_b = (_a = query.sql) == null ? void 0 : _a.columns) == null ? void 0 : _b.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 2, alignItems: "end", children: [
102
+ /* @__PURE__ */ jsxRuntime.jsx(
103
+ pluginUi.EditorField,
104
+ {
105
+ label: i18n.t("grafana-sql.components.select-row.label-data-operations", "Data operations"),
106
+ optional: true,
107
+ width: 25,
108
+ children: /* @__PURE__ */ jsxRuntime.jsx(
109
+ ui.Select,
110
+ {
111
+ value: item.name ? data.toOption(item.name) : null,
112
+ inputId: `select-aggregation-${index}-${lodash.uniqueId()}`,
113
+ "data-testid": e2eSelectors.selectors.components.SQLQueryEditor.selectAggregation,
114
+ isClearable: true,
115
+ menuShouldPortal: true,
116
+ allowCustomValue: true,
117
+ options: aggregateOptions(),
118
+ onChange: onAggregationChange(item, index)
119
+ }
120
+ )
121
+ }
122
+ ),
123
+ /* @__PURE__ */ jsxRuntime.jsx(
124
+ SelectFunctionParameters.SelectFunctionParameters,
125
+ {
126
+ currentColumnIndex: index,
127
+ columns,
128
+ onSqlChange,
129
+ query,
130
+ db
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.select-row.label-alias", "Alias"), optional: true, width: 15, children: /* @__PURE__ */ jsxRuntime.jsx(
134
+ ui.Select,
135
+ {
136
+ value: item.alias ? data.toOption(item.alias) : null,
137
+ inputId: `select-alias-${index}-${lodash.uniqueId()}`,
138
+ "data-testid": e2eSelectors.selectors.components.SQLQueryEditor.selectAlias,
139
+ options: timeSeriesAliasOpts,
140
+ onChange: onAliasChange(item, index),
141
+ isClearable: true,
142
+ menuShouldPortal: true,
143
+ allowCustomValue: true
144
+ }
145
+ ) }),
146
+ /* @__PURE__ */ jsxRuntime.jsx(
147
+ ui.Button,
148
+ {
149
+ "aria-label": i18n.t("grafana-sql.components.select-row.title-remove-column", "Remove column"),
150
+ type: "button",
151
+ icon: "trash-alt",
152
+ variant: "secondary",
153
+ size: "md",
154
+ onClick: removeColumn(index)
155
+ }
156
+ )
157
+ ] }) }, index)),
158
+ /* @__PURE__ */ jsxRuntime.jsx(
159
+ ui.Button,
160
+ {
161
+ type: "button",
162
+ onClick: addColumn,
163
+ variant: "secondary",
164
+ "aria-label": i18n.t("grafana-sql.components.select-row.title-add-column", "Add column"),
165
+ size: "md",
166
+ icon: "plus",
167
+ className: styles.addButton
168
+ }
169
+ )
170
+ ] });
171
+ }
172
+ const getStyles = () => {
173
+ return {
174
+ addButton: css.css({ alignSelf: "flex-start" }),
175
+ label: css.css({
176
+ padding: 0,
177
+ margin: 0,
178
+ width: "unset"
179
+ })
180
+ };
181
+ };
182
+
183
+ exports.SelectRow = SelectRow;
184
+ //# sourceMappingURL=SelectRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectRow.cjs","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":["useStyles2","useSqlChange","QueryFormat","t","useCallback","_a","_b","QueryEditorExpressionType","createFunctionField","Stack","jsx","jsxs","EditorField","Select","toOption","uniqueId","selectors","SelectFunctionParameters","Button","css"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var reactUse = require('react-use');
7
+ var i18n = require('@grafana/i18n');
8
+ var pluginUi = require('@grafana/plugin-ui');
9
+ var QueryToolbox = require('../query-editor-raw/QueryToolbox.cjs');
10
+ var Preview = require('./Preview.cjs');
11
+ var SQLGroupByRow = require('./SQLGroupByRow.cjs');
12
+ var SQLOrderByRow = require('./SQLOrderByRow.cjs');
13
+ var SQLWhereRow = require('./SQLWhereRow.cjs');
14
+ var SelectRow = require('./SelectRow.cjs');
15
+
16
+ "use strict";
17
+ const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }) => {
18
+ var _a;
19
+ const state = reactUse.useAsync(async () => {
20
+ const fields = await db.fields(query);
21
+ return fields;
22
+ }, [db, query.dataset, query.table]);
23
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
24
+ /* @__PURE__ */ jsxRuntime.jsxs(pluginUi.EditorRows, { children: [
25
+ /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(SelectRow.SelectRow, { columns: state.value || [], query, onQueryChange: onChange, db }) }),
26
+ queryRowFilter.filter && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(
27
+ pluginUi.EditorField,
28
+ {
29
+ label: i18n.t("grafana-sql.components.visual-editor.label-filter-by-column-value", "Filter by column value"),
30
+ optional: true,
31
+ children: /* @__PURE__ */ jsxRuntime.jsx(SQLWhereRow.SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db })
32
+ }
33
+ ) }),
34
+ queryRowFilter.group && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.visual-editor.label-group-by-column", "Group by column"), children: /* @__PURE__ */ jsxRuntime.jsx(SQLGroupByRow.SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }) }) }),
35
+ queryRowFilter.order && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(SQLOrderByRow.SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db }) }),
36
+ queryRowFilter.preview && query.rawSql && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(Preview.Preview, { rawSql: query.rawSql, datasourceType: (_a = query.datasource) == null ? void 0 : _a.type }) })
37
+ ] }),
38
+ /* @__PURE__ */ jsxRuntime.jsx(QueryToolbox.QueryToolbox, { db, query, onValidate, range })
39
+ ] });
40
+ };
41
+
42
+ exports.VisualEditor = VisualEditor;
43
+ //# sourceMappingURL=VisualEditor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisualEditor.cjs","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":["useAsync","jsxs","Fragment","EditorRows","jsx","EditorRow","SelectRow","EditorField","t","SQLWhereRow","SQLGroupByRow","SQLOrderByRow","Preview","QueryToolbox"],"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,GAAQA,kBAAS,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,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAACE,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,mBAAA,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,oBACdF,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,QAACG,oBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAOC,MAAA,CAAE,mEAAA,EAAqE,wBAAwB,CAAA;AAAA,UACtG,QAAA,EAAQ,IAAA;AAAA,UAER,QAAA,kBAAAJ,cAAA,CAACK,uBAAA,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,yBACdL,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACE,oBAAA,EAAA,EAAY,KAAA,EAAOC,MAAA,CAAE,4DAAA,EAA8D,iBAAiB,CAAA,EACnG,yCAACE,2BAAA,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,oBACdN,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACM,2BAAA,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/BP,cAAA,CAACC,sBACC,QAAA,kBAAAD,cAAA,CAACQ,eAAA,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,oBACAR,cAAA,CAACS,yBAAA,EAAA,EAAa,EAAA,EAAQ,KAAA,EAAc,YAAwB,KAAA,EAAc;AAAA,GAAA,EAC5E,CAAA;AAEJ;;;;"}
@@ -0,0 +1,84 @@
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 ui = require('@react-awesome-query-builder/ui');
8
+ var react = require('react');
9
+ var AwesomeQueryBuilder = require('./AwesomeQueryBuilder.cjs');
10
+
11
+ "use strict";
12
+ function WhereRow({ sql, config, onSqlChange }) {
13
+ const [tree, setTree] = react.useState();
14
+ const configWithDefaults = react.useMemo(() => ({ ...AwesomeQueryBuilder.raqbConfig, ...config }), [config]);
15
+ react.useEffect(() => {
16
+ var _a;
17
+ if (!tree) {
18
+ const initTree = ui.Utils.checkTree(ui.Utils.loadTree((_a = sql.whereJsonTree) != null ? _a : AwesomeQueryBuilder.emptyInitTree), configWithDefaults);
19
+ setTree(initTree);
20
+ }
21
+ }, [configWithDefaults, sql.whereJsonTree, tree]);
22
+ react.useEffect(() => {
23
+ if (!sql.whereJsonTree) {
24
+ setTree(ui.Utils.checkTree(ui.Utils.loadTree(AwesomeQueryBuilder.emptyInitTree), configWithDefaults));
25
+ }
26
+ }, [configWithDefaults, sql.whereJsonTree]);
27
+ const onTreeChange = react.useCallback(
28
+ (changedTree, config2) => {
29
+ setTree(changedTree);
30
+ const newSql = {
31
+ ...sql,
32
+ whereJsonTree: ui.Utils.getTree(changedTree),
33
+ whereString: ui.Utils.sqlFormat(changedTree, config2)
34
+ };
35
+ onSqlChange(newSql);
36
+ },
37
+ [onSqlChange, sql]
38
+ );
39
+ if (!tree) {
40
+ return null;
41
+ }
42
+ return /* @__PURE__ */ jsxRuntime.jsx(
43
+ ui.Query,
44
+ {
45
+ ...configWithDefaults,
46
+ value: tree,
47
+ onChange: onTreeChange,
48
+ renderBuilder: (props) => /* @__PURE__ */ jsxRuntime.jsx(ui.Builder, { ...props })
49
+ }
50
+ );
51
+ }
52
+ function flex(direction) {
53
+ return `
54
+ display: flex;
55
+ gap: 8px;
56
+ flex-direction: ${direction};`;
57
+ }
58
+ css.injectGlobal`
59
+ .group--header {
60
+ ${flex("row")}
61
+ }
62
+
63
+ .group-or-rule {
64
+ ${flex("column")}
65
+ .rule {
66
+ flex-direction: row;
67
+ }
68
+ }
69
+
70
+ .rule--body {
71
+ ${flex("row")}
72
+ }
73
+
74
+ .group--children {
75
+ ${flex("column")}
76
+ }
77
+
78
+ .group--conjunctions:empty {
79
+ display: none;
80
+ }
81
+ `;
82
+
83
+ exports.WhereRow = WhereRow;
84
+ //# sourceMappingURL=WhereRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhereRow.cjs","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":["useState","useMemo","raqbConfig","useEffect","Utils","emptyInitTree","useCallback","config","jsx","Query","Builder","injectGlobal"],"mappings":";;;;;;;;;;;AAcO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,cAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqBC,aAAA,CAAQ,OAAO,EAAE,GAAGC,8BAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAAC,eAAA,CAAU,MAAM;AAlBlB,IAAA,IAAA,EAAA;AAoBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAWC,QAAA,CAAM,SAAA,CAAUA,QAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqBC,iCAAa,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,EAAAF,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQC,SAAM,SAAA,CAAUA,QAAA,CAAM,SAASC,iCAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAeC,iBAAA;AAAA,IACnB,CAAC,aAA4BC,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAeH,QAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAaA,QAAA,CAAM,SAAA,CAAU,WAAA,EAAaG,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,uBACEC,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAUD,cAAA,CAACE,UAAA,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;AAGAC,gBAAA;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,77 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ "use strict";
6
+ const COMMON_FNS = [
7
+ { name: "AVG" },
8
+ { name: "COUNT" },
9
+ { name: "MAX" },
10
+ { name: "MIN" },
11
+ { name: "SUM" }
12
+ ];
13
+ const intervalParam = {
14
+ name: "Interval",
15
+ required: true,
16
+ options: () => {
17
+ return Promise.resolve([{ label: "$__interval", value: "$__interval" }]);
18
+ }
19
+ };
20
+ const fillParam = {
21
+ name: "Fill",
22
+ required: false,
23
+ options: () => Promise.resolve([
24
+ { label: "0", value: "0" },
25
+ { label: "NULL", value: "NULL" },
26
+ { label: "previous", value: "previous" }
27
+ ])
28
+ };
29
+ const MACRO_FUNCTIONS = (columnParam) => [
30
+ {
31
+ name: "$__timeGroup",
32
+ description: "Time grouping function",
33
+ parameters: [columnParam, intervalParam, fillParam]
34
+ },
35
+ {
36
+ name: "$__timeGroupAlias",
37
+ description: "Time grouping function with time as alias",
38
+ parameters: [columnParam, intervalParam, fillParam]
39
+ },
40
+ {
41
+ name: "$__time",
42
+ description: "An expression to rename the column to time",
43
+ parameters: [columnParam]
44
+ },
45
+ {
46
+ name: "$__timeEpoch",
47
+ parameters: [columnParam]
48
+ },
49
+ {
50
+ name: "$__unixEpochGroup",
51
+ parameters: [columnParam, intervalParam, fillParam]
52
+ },
53
+ {
54
+ name: "$__unixEpochGroupAlias",
55
+ parameters: [columnParam, intervalParam, fillParam]
56
+ }
57
+ ];
58
+ const MACRO_NAMES = [
59
+ "$__time",
60
+ "$__timeEpoch",
61
+ "$__timeFilter",
62
+ "$__timeFrom",
63
+ "$__timeTo",
64
+ "$__timeGroup",
65
+ "$__timeGroupAlias",
66
+ "$__unixEpochFilter",
67
+ "$__unixEpochNanoFilter",
68
+ "$__unixEpochNanoFrom",
69
+ "$__unixEpochNanoTo",
70
+ "$__unixEpochGroup",
71
+ "$__unixEpochGroupAlias"
72
+ ];
73
+
74
+ exports.COMMON_FNS = COMMON_FNS;
75
+ exports.MACRO_FUNCTIONS = MACRO_FUNCTIONS;
76
+ exports.MACRO_NAMES = MACRO_NAMES;
77
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","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,188 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var rxjs = require('rxjs');
6
+ var operators = require('rxjs/operators');
7
+ var data = require('@grafana/data');
8
+ var pluginUi = require('@grafana/plugin-ui');
9
+ var runtime = require('@grafana/runtime');
10
+ var ResponseParser = require('../ResponseParser.cjs');
11
+ var QueryEditorLazy = require('../components/QueryEditorLazy.cjs');
12
+ var constants = require('../constants.cjs');
13
+ var types = require('../types.cjs');
14
+ var migration = require('../utils/migration.cjs');
15
+
16
+ "use strict";
17
+ class SqlDatasource extends runtime.DataSourceWithBackend {
18
+ constructor(instanceSettings, templateSrv = runtime.getTemplateSrv()) {
19
+ var _a;
20
+ super(instanceSettings);
21
+ this.templateSrv = templateSrv;
22
+ this.dialect = "other";
23
+ this.interpolateVariable = (value, variable) => {
24
+ if (typeof value === "string") {
25
+ if (variable.multi || variable.includeAll) {
26
+ return this.getQueryModel().quoteLiteral(value);
27
+ } else {
28
+ return String(value).replace(/'/g, "''");
29
+ }
30
+ }
31
+ if (typeof value === "number") {
32
+ return value;
33
+ }
34
+ if (Array.isArray(value)) {
35
+ const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));
36
+ return quotedValues.join(",");
37
+ }
38
+ return value;
39
+ };
40
+ this.name = instanceSettings.name;
41
+ this.responseParser = new ResponseParser.ResponseParser();
42
+ this.uid = instanceSettings.uid;
43
+ const settingsData = instanceSettings.jsonData || {};
44
+ this.interval = settingsData.timeInterval || "1m";
45
+ this.db = this.getDB();
46
+ this.preconfiguredDatabase = (_a = settingsData.database) != null ? _a : "";
47
+ this.annotations = {
48
+ prepareAnnotation: migration,
49
+ QueryEditor: QueryEditorLazy.SqlQueryEditorLazy
50
+ };
51
+ }
52
+ getResponseParser() {
53
+ return this.responseParser;
54
+ }
55
+ interpolateVariablesInQueries(queries, scopedVars) {
56
+ let expandedQueries = queries;
57
+ if (queries && queries.length > 0) {
58
+ expandedQueries = queries.map((query) => {
59
+ const expandedQuery = {
60
+ ...query,
61
+ datasource: this.getRef(),
62
+ rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),
63
+ rawQuery: true
64
+ };
65
+ return expandedQuery;
66
+ });
67
+ }
68
+ return expandedQueries;
69
+ }
70
+ filterQuery(query) {
71
+ return !query.hide;
72
+ }
73
+ applyTemplateVariables(target, scopedVars) {
74
+ return {
75
+ refId: target.refId,
76
+ datasource: this.getRef(),
77
+ rawSql: this.templateSrv.replace(target.rawSql, scopedVars, this.interpolateVariable),
78
+ format: target.format
79
+ };
80
+ }
81
+ query(request) {
82
+ const databaseIssue = this.checkForDatabaseIssue(request);
83
+ if (!!databaseIssue) {
84
+ const error = new Error(databaseIssue);
85
+ return rxjs.throwError(() => error);
86
+ }
87
+ request.targets.forEach((target) => {
88
+ var _a;
89
+ if (request.app === data.CoreApp.Dashboard || request.app === data.CoreApp.PanelViewer) {
90
+ return;
91
+ }
92
+ runtime.reportInteraction("grafana_sql_query_executed", {
93
+ datasource: (_a = target.datasource) == null ? void 0 : _a.type,
94
+ editorMode: target.editorMode,
95
+ format: target.format,
96
+ app: request.app
97
+ });
98
+ });
99
+ return super.query(request);
100
+ }
101
+ checkForDatabaseIssue(request) {
102
+ if (this.type === "grafana-postgresql-datasource" && !this.preconfiguredDatabase) {
103
+ return `You do not currently have a default database configured for this data source. Postgres requires a default
104
+ database with which to connect. Please configure one through the Data Sources Configuration page, or if you
105
+ are using a provisioning file, update that configuration file with a default database.`;
106
+ }
107
+ if (request.app !== data.CoreApp.Explore) {
108
+ if (!!this.preconfiguredDatabase) {
109
+ for (const target of request.targets) {
110
+ if (target.editorMode === pluginUi.EditorMode.Builder && target.dataset && target.dataset !== this.preconfiguredDatabase) {
111
+ return `The configuration for this panel's data source has been modified. The previous database used in this panel's
112
+ saved query is no longer available. Please update the query to use the new database option.
113
+ Previous query parameters will be preserved until the query is updated.`;
114
+ }
115
+ }
116
+ }
117
+ }
118
+ return;
119
+ }
120
+ async metricFindQuery(query, options) {
121
+ const range = options == null ? void 0 : options.range;
122
+ if (range == null) {
123
+ return [];
124
+ }
125
+ let refId = "tempvar";
126
+ if (options && options.variable && options.variable.name) {
127
+ refId = options.variable.name;
128
+ }
129
+ const scopedVars = {
130
+ ...options == null ? void 0 : options.scopedVars,
131
+ ...data.getSearchFilterScopedVar({ query, wildcardChar: "%", options })
132
+ };
133
+ const rawSql = this.templateSrv.replace(query, scopedVars, this.interpolateVariable);
134
+ const interpolatedQuery = {
135
+ refId,
136
+ datasource: this.getRef(),
137
+ rawSql,
138
+ format: types.QueryFormat.Table
139
+ };
140
+ let response;
141
+ try {
142
+ response = await this.runMetaQuery(interpolatedQuery, range);
143
+ } catch (error) {
144
+ console.error(error);
145
+ throw new Error("error when executing the sql query");
146
+ }
147
+ return this.getResponseParser().transformMetricFindResponse(response);
148
+ }
149
+ // NOTE: this always runs with the `@grafana/data/getDefaultTimeRange` time range
150
+ async runSql(query, options) {
151
+ const range = data.getDefaultTimeRange();
152
+ const frame = await this.runMetaQuery({ rawSql: query, format: types.QueryFormat.Table, refId: options == null ? void 0 : options.refId }, range);
153
+ return new data.DataFrameView(frame);
154
+ }
155
+ runMetaQuery(request, range) {
156
+ const refId = request.refId || "meta";
157
+ const queries = [{ ...request, datasource: request.datasource || this.getRef(), refId }];
158
+ return rxjs.lastValueFrom(
159
+ runtime.getBackendSrv().fetch({
160
+ url: "/api/ds/query",
161
+ method: "POST",
162
+ headers: this.getRequestHeaders(),
163
+ data: {
164
+ from: range.from.valueOf().toString(),
165
+ to: range.to.valueOf().toString(),
166
+ queries
167
+ },
168
+ requestId: refId
169
+ }).pipe(
170
+ operators.map((res) => {
171
+ var _a;
172
+ const rsp = runtime.toDataQueryResponse(res, queries);
173
+ return (_a = rsp.data[0]) != null ? _a : { fields: [] };
174
+ })
175
+ )
176
+ );
177
+ }
178
+ targetContainsTemplate(target) {
179
+ let queryWithoutMacros = target.rawSql;
180
+ constants.MACRO_NAMES.forEach((value) => {
181
+ queryWithoutMacros = (queryWithoutMacros == null ? void 0 : queryWithoutMacros.replace(value, "")) || "";
182
+ });
183
+ return this.templateSrv.containsTemplate(queryWithoutMacros);
184
+ }
185
+ }
186
+
187
+ exports.SqlDatasource = SqlDatasource;
188
+ //# sourceMappingURL=SqlDatasource.cjs.map